{"id":7,"date":"2026-05-31T01:06:02","date_gmt":"2026-05-31T01:06:02","guid":{"rendered":"https:\/\/eclipselightshow.com.au\/?page_id=7"},"modified":"2026-05-31T01:34:30","modified_gmt":"2026-05-31T01:34:30","slug":"home","status":"publish","type":"page","link":"https:\/\/eclipselightshow.com.au\/","title":{"rendered":"Home"},"content":{"rendered":"\n<style>\n  <style>\n  \/* =========================================\n     ASTRA THEME OVERRIDES (FIX DOUBLE SCROLLBARS)\n     ========================================= *\/\n  html, body {\n    background-color: var(--deep) !important;\n    overflow-y: visible !important; \/* Forces the browser to use only ONE main scrollbar *\/\n    height: auto !important;\n  }\n  \n  \/* Force Astra's containers to be completely flat and transparent *\/\n  #page, #content, .site-content, .ast-container, .entry-content, .ast-article-inner, .ast-article-single {\n    background-color: transparent !important;\n    background: transparent !important;\n    padding: 0 !important;\n    margin: 0 !important;\n    max-width: 100% !important;\n    border: none !important;\n    box-shadow: none !important;\n    overflow: visible !important; \/* Prevents Astra from generating the small scrollbar *\/\n    height: auto !important;\n  }\n\n  \/* \u2500\u2500 UTILITIES \u2500\u2500 *\/\n  .hidden { display: none !important; }\n\n  \/* \u2500\u2500 BRAND COLOURS \u2014 NEW PALETTE \u2500\u2500 *\/\n  :root {\n    --lv-cyan:    #B6229C;   \n    --lv-blue:    #5C0C50;   \n    --lv-purple:  #370750;   \n    --lv-magenta: #B6229C;\n    --lv-black:   #000000;\n    --lv-white:   #FFFFFF;\n\n    --show-pink:    #B6229C;\n    --show-violet:  #5C0C50;\n    --show-peach:   #B6229C;\n    --show-lavender:#5C0C50;\n\n    --accent:     var(--lv-cyan);\n    --accent2:    var(--lv-magenta);\n    --accent3:    var(--show-violet);\n    --accent4:    var(--show-pink);\n    --deep:       #210332;   \n    --night:      #370750;   \n    --off-white:  #ece6f7;\n    --text-muted: #9a90b8;\n    --icon:       #B6229C;\n  }\n\n  *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }\n  html { font-size: 112.5%; }\n\n  \/* \u2500\u2500 MASTER WRAPPER \u2500\u2500 *\/\n  .eclipse-wrapper {\n    background: var(--deep);\n    color: var(--lv-white) !important;\n    font-family: 'Montserrat', sans-serif;\n    \n    \/* FIX: Changed hidden to clip, and forced Y to visible *\/\n    overflow-x: clip; \n    overflow-y: visible !important; \n    \n    cursor: none;\n    position: relative;\n    width: 100%;\n    min-height: 100vh;\n    display: block;\n  }\n  \n  \/* Reset paragraph and heading colors inside wrapper so Astra doesn't turn them dark *\/\n  .eclipse-wrapper h1, .eclipse-wrapper h2, .eclipse-wrapper h3, .eclipse-wrapper p, .eclipse-wrapper div {\n      color: inherit;\n  }\n\n  \/* \u2500\u2500 LASER CURSOR \u2500\u2500 *\/\n  .eclipse-wrapper * { cursor: none !important; }\n\n  #lc-wrap {\n    position: fixed;\n    top: 0; left: 0;\n    pointer-events: none;\n    z-index: 9999;\n    will-change: transform;\n  }\n\n  #lc-dot {\n    position: fixed;\n    width: 8px; height: 8px;\n    border-radius: 50%;\n    background: #fff;\n    pointer-events: none;\n    z-index: 10001;\n    margin-left: -4px;\n    margin-top: -4px;\n    box-shadow: 0 0 6px 2px #B6229C, 0 0 16px 6px #B6229C;\n    animation: lcDotPulse 1s ease-in-out infinite;\n  }\n  @keyframes lcDotPulse {\n    0%,100% { transform: scale(1);   opacity: 1; }\n    50%      { transform: scale(1.6); opacity: .75; }\n  }\n\n  #lc-canvas {\n    position: fixed;\n    inset: 0;\n    pointer-events: none;\n    z-index: 9998;\n  }\n\n  @media (max-width: 800px) {\n    .eclipse-wrapper * { cursor: auto !important; }\n    #lc-dot, #lc-canvas { display: none; }\n  }\n\n  \/* \u2500\u2500 STARS \u2500\u2500 *\/\n  #stars-canvas { position: fixed; inset: 0; pointer-events: none; z-index: 0; }\n\n  \/* \u2500\u2500 WORDMARK LOGO \u2500\u2500 *\/\n  .wordmark {\n    display: inline-flex; flex-direction: column;\n    align-items: flex-start; line-height: 1; text-decoration: none;\n  }\n  .wordmark .wm-main {\n    font-family: 'Caudex', serif; font-weight: 700;\n    letter-spacing: .16em; text-transform: uppercase;\n    background: linear-gradient(135deg, var(--lv-cyan) 0%, var(--lv-magenta) 55%, var(--show-pink) 100%);\n    -webkit-background-clip: text; background-clip: text;\n    -webkit-text-fill-color: transparent; color: transparent;\n  }\n  .wordmark .wm-sub {\n    font-family: 'Montserrat', sans-serif; font-weight: 600;\n    text-transform: uppercase; color: var(--lv-cyan); opacity: .85;\n  }\n  .nav-wordmark .wm-main { font-size: 1.35rem; }\n  .nav-wordmark .wm-sub  { font-size: .54rem; letter-spacing: .4em; margin-top: 4px; }\n  .hero-wordmark {\n    align-items: center; margin-bottom: 14px;\n    opacity: 0; animation: fadeUp .9s .4s ease forwards;\n    filter: drop-shadow(0 0 22px rgba(182,34,156,.4)) drop-shadow(0 0 60px rgba(92,12,80,.25));\n  }\n  .hero-wordmark .wm-main { font-size: clamp(3rem, 9vw, 6.5rem); letter-spacing: .12em; }\n  .hero-wordmark .wm-sub  { font-size: clamp(.7rem, 1.8vw, 1.1rem); letter-spacing: .55em; margin-top: 10px; }\n  .footer-wordmark .wm-main { font-size: 1.5rem; }\n  .footer-wordmark .wm-sub  { font-size: .56rem; letter-spacing: .4em; margin-top: 4px; }\n\n  \/* \u2500\u2500 NAV \u2500\u2500 *\/\n  nav {\n    position: absolute; top: 0; left: 0; right: 0; z-index: 100;\n    padding: 18px 52px;\n    display: flex; align-items: center; justify-content: space-between;\n    background: linear-gradient(to bottom, rgba(33,3,50,.96) 0%, transparent 100%);\n  }\n  .nav-series {\n    font-family: 'Montserrat', sans-serif;\n    font-size: .58rem; font-weight: 600; letter-spacing: .22em;\n    text-transform: uppercase; color: var(--lv-cyan); opacity: .8;\n    margin-top: 6px;\n  }\n  .nav-links { display: flex; gap: 34px; align-items: center; }\n  .nav-links a {\n    font-size: .78rem; font-weight: 600; letter-spacing: .16em;\n    text-transform: uppercase; color: var(--off-white); text-decoration: none;\n    opacity: .65; transition: opacity .2s, color .2s;\n  }\n  .nav-links a:hover { opacity: 1; color: var(--lv-cyan); }\n  .nav-cta {\n    opacity: 1 !important; color: var(--lv-white) !important;\n    background: var(--lv-cyan) !important;\n    padding: 10px 26px !important; font-weight: 700 !important;\n    transition: box-shadow .25s, transform .2s !important;\n  }\n  .nav-cta:hover {\n    box-shadow: 0 0 28px rgba(182,34,156,.6) !important;\n    transform: translateY(-1px) !important;\n  }\n\n  \/* \u2500\u2500 HERO \u2500\u2500 *\/\n  #hero {\n    position: relative; min-height: 100vh;\n    display: flex; flex-direction: column;\n    align-items: center; justify-content: center;\n    text-align: center; padding: 130px 24px 90px;\n    overflow: hidden; z-index: 1;\n  }\n  .hero-video-bg {\n    position: absolute; inset: 0;\n    width: 100%; height: 100%;\n    object-fit: cover; z-index: -2;\n  }\n  .hero-bg {\n    position: absolute; inset: 0;\n    background:\n      radial-gradient(ellipse 90% 65% at 50% 25%, rgba(55,7,80,.45) 0%, transparent 70%),\n      radial-gradient(ellipse 55% 45% at 15% 85%, rgba(92,12,80,.35) 0%, transparent 55%),\n      radial-gradient(ellipse 50% 40% at 85% 75%, rgba(182,34,156,.25) 0%, transparent 50%),\n      linear-gradient(180deg, rgba(0,0,0,0.5) 0%, rgba(33,3,50,0.65) 45%, rgba(55,7,80,0.85) 100%);\n    z-index: -1;\n  }\n\n  \/* Laser beams *\/\n  .beam {\n    position: absolute; bottom: 0;\n    transform-origin: bottom center;\n    opacity: 0; pointer-events: none; z-index: 0;\n    animation: beamPulse var(--dur, 4s) ease-in-out infinite;\n    animation-delay: var(--del, 0s);\n  }\n  .beam::after {\n    content: ''; position: absolute; bottom: 0; left: 50%;\n    transform: translateX(-50%);\n    width: 2px; height: 60vh;\n    background: linear-gradient(to top, var(--bc, rgba(182,34,156,.8)), transparent);\n    filter: blur(.8px);\n  }\n  @keyframes beamPulse {\n    0%,100% { opacity: 0; transform: rotate(var(--angle)) scaleY(.2); }\n    50%      { opacity: 1; transform: rotate(var(--angle)) scaleY(1); }\n  }\n\n  .in-bloom-badge {\n    display: inline-flex; align-items: center; gap: 8px;\n    border: 1px solid rgba(182,34,156,.3);\n    padding: 6px 20px; margin-bottom: 28px;\n    opacity: 0; animation: fadeUp .7s .2s ease forwards;\n  }\n  .badge-dot { width: 5px; height: 5px; background: var(--lv-cyan); border-radius: 50%; }\n  .badge-text {\n    font-size: .62rem; font-weight: 700; letter-spacing: .28em;\n    text-transform: uppercase; color: var(--lv-cyan);\n  }\n\n  .hero-subtitle {\n    font-family: 'Montserrat', sans-serif;\n    font-size: clamp(.82rem, 1.4vw, 1rem);\n    font-weight: 300; letter-spacing: .18em; text-transform: uppercase;\n    color: var(--off-white); opacity: 0;\n    animation: fadeUp .8s .65s ease forwards;\n    margin-bottom: 18px;\n  }\n  .hero-meta {\n    display: flex; gap: 36px; justify-content: center; flex-wrap: wrap;\n    margin-bottom: 48px; opacity: 0; animation: fadeUp .8s 1.1s ease forwards;\n  }\n  .meta-item { display: flex; flex-direction: column; align-items: center; gap: 5px; }\n  .meta-label {\n    font-size: .6rem; font-weight: 700; letter-spacing: .2em;\n    text-transform: uppercase; color: var(--lv-cyan); opacity: .85;\n  }\n  .meta-value { font-family: 'Caudex', serif; font-size: 1.1rem; color: var(--lv-white); }\n  .meta-div { width: 1px; height: 42px; background: rgba(255,255,255,.1); align-self: center; }\n\n  .hero-btns {\n    display: flex; gap: 16px; flex-wrap: wrap; justify-content: center;\n    opacity: 0; animation: fadeUp .8s 1.3s ease forwards;\n  }\n\n  .btn-primary {\n    display: inline-flex; align-items: center; gap: 8px;\n    background: var(--lv-cyan); color: var(--lv-white);\n    font-family: 'Montserrat', sans-serif;\n    font-size: .8rem; font-weight: 700; letter-spacing: .18em;\n    text-transform: uppercase; text-decoration: none;\n    padding: 16px 40px; border: none; cursor: none;\n    transition: box-shadow .3s, transform .2s;\n    position: relative; overflow: hidden;\n  }\n  .btn-primary::after {\n    content: ''; position: absolute; inset: 0;\n    background: rgba(255,255,255,.18);\n    transform: translateX(-110%); transition: transform .3s ease;\n  }\n  .btn-primary:hover::after { transform: translateX(0); }\n  .btn-primary:hover {\n    box-shadow: 0 0 50px rgba(182,34,156,.7), 0 0 100px rgba(92,12,80,.25);\n    transform: translateY(-2px);\n  }\n\n  .btn-ghost {\n    display: inline-flex; align-items: center; gap: 8px;\n    background: transparent; color: var(--off-white);\n    font-family: 'Montserrat', sans-serif;\n    font-size: .8rem; font-weight: 600; letter-spacing: .18em;\n    text-transform: uppercase; text-decoration: none;\n    padding: 15px 34px; border: 1px solid rgba(255,255,255,.2);\n    cursor: none; transition: border-color .3s, color .3s, box-shadow .3s;\n  }\n  .btn-ghost:hover {\n    border-color: rgba(92,12,80,.7); color: var(--lv-white);\n    box-shadow: 0 0 22px rgba(92,12,80,.25);\n  }\n\n  .scroll-hint {\n    position: absolute; bottom: 32px; left: 50%;\n    transform: translateX(-50%);\n    display: flex; flex-direction: column; align-items: center; gap: 8px;\n    opacity: 0; animation: fadeUp .7s 1.8s ease forwards;\n  }\n  .scroll-hint span {\n    font-size: .58rem; letter-spacing: .25em;\n    text-transform: uppercase; color: rgba(255,255,255,.3);\n  }\n  .scroll-line {\n    width: 1px; height: 46px;\n    background: linear-gradient(to bottom, var(--lv-cyan), transparent);\n    animation: scrollDrop 2s 2s ease infinite;\n  }\n  @keyframes scrollDrop {\n    0%,100% { transform: scaleY(0); transform-origin: top; }\n    50% { transform: scaleY(1); }\n  }\n\n  \/* \u2500\u2500 EXPERIENCE SLIDER FULL-WIDTH \u2500\u2500 *\/\n  #experience {\n    position: relative; z-index: 2;\n    padding: 0 0;\n    width: 100%;\n    height: 100vh;\n  }\n  .ex-slider-container {\n    position: relative;\n    width: 100%;\n    height: 100vh;\n    min-height: 550px;\n    background: #000;\n    overflow: hidden;\n  }\n  .ex-slide {\n    position: absolute;\n    inset: 0;\n    opacity: 0;\n    transition: opacity 0.6s ease;\n    pointer-events: none;\n  }\n  .ex-slide.active {\n    opacity: 1;\n    pointer-events: auto;\n  }\n  .ex-slide video {\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n    opacity: 0.8; \n  }\n  .ex-overlay-box {\n    position: absolute;\n    bottom: 50px; left: 50%;\n    transform: translateX(-50%);\n    background: rgba(15, 5, 30, 0.7);\n    border: 1px solid var(--lv-cyan);\n    box-shadow: 0 0 20px rgba(182,34,156,0.6), inset 0 0 10px rgba(182,34,156,0.3);\n    border-radius: 0px;\n    padding: 28px 40px;\n    text-align: center;\n    width: 90%;\n    max-width: 650px;\n    backdrop-filter: blur(8px);\n  }\n  .ex-overlay-box h3 {\n    font-family: 'Caudex', serif;\n    font-size: 1.8rem;\n    color: var(--lv-white);\n    margin-bottom: 12px;\n    letter-spacing: .08em;\n    text-shadow: 0 0 10px rgba(255,255,255,0.3);\n  }\n  .ex-overlay-box p {\n    font-size: .95rem;\n    line-height: 1.7;\n    color: var(--off-white);\n    opacity: 0.9;\n  }\n  .ex-pagination {\n    position: absolute;\n    top: 35px; left: 50%;\n    transform: translateX(-50%);\n    display: flex; gap: 16px;\n    z-index: 10;\n  }\n  .ex-dot {\n    width: 32px; height: 32px;\n    border-radius: 50%;\n    border: 1px solid var(--lv-cyan);\n    color: var(--lv-cyan);\n    display: flex; align-items: center; justify-content: center;\n    font-size: 0.8rem; font-weight: 700;\n    cursor: none; \n    transition: all 0.3s;\n    background: rgba(15, 5, 30, 0.4);\n    backdrop-filter: blur(4px);\n  }\n  .ex-dot:hover {\n    box-shadow: 0 0 12px rgba(182,34,156,0.6);\n  }\n  .ex-dot.active {\n    background: var(--lv-cyan);\n    color: var(--lv-white);\n    box-shadow: 0 0 20px rgba(182,34,156,0.8);\n  }\n  .ex-nav-btn {\n    position: absolute;\n    top: 50%; transform: translateY(-50%);\n    width: 50px; height: 50px;\n    display: flex; align-items: center; justify-content: center;\n    color: var(--lv-cyan);\n    cursor: none;\n    z-index: 10;\n    transition: transform 0.2s, color 0.2s, filter 0.2s;\n    filter: drop-shadow(0 0 5px rgba(15, 2, 25, 0.8));\n  }\n  .ex-nav-btn:hover {\n    color: var(--lv-magenta);\n    transform: translateY(-50%) scale(1.15);\n    filter: drop-shadow(0 0 10px rgba(182,34,156,0.5));\n  }\n  .ex-nav-btn svg {\n    width: 40px; height: 40px; fill: currentColor;\n  }\n  .ex-nav-prev { left: 40px; }\n  .ex-nav-next { right: 40px; }\n\n  \/* \u2500\u2500 SECTION TAGS \u2500\u2500 *\/\n  .section-tag {\n    font-size: .6rem; font-weight: 700; letter-spacing: .3em;\n    text-transform: uppercase; margin-bottom: 18px;\n  }\n  .tag-cyan { color: var(--lv-cyan); }\n  .tag-magenta { color: var(--lv-magenta); }\n  .tag-violet { color: var(--show-violet); }\n  .tag-pink { color: var(--show-pink); }\n  .tag-blue { color: var(--lv-blue); }\n\n  \/* \u2500\u2500 HIGHLIGHTS (UPDATED FOR SLIDER) \u2500\u2500 *\/\n  .highlights {\n    position: relative; z-index: 2;\n    padding: 80px 52px;\n    background: linear-gradient(180deg, transparent, rgba(55,7,80,.07), transparent);\n  }\n  .highlights h2 {\n    font-family: 'Caudex', serif;\n    font-size: clamp(1.9rem, 3.2vw, 2.9rem);\n    text-align: center; margin-bottom: 56px;\n  }\n  .highlights h2 span { color: var(--lv-cyan); }\n\n  .highlights-viewport {\n    overflow: hidden;\n    max-width: 1180px;\n    margin: 0 auto;\n    padding: 10px 0; \n  }\n\n  .grid-cards {\n    display: flex;\n    flex-wrap: nowrap;\n    gap: 16px;\n    width: max-content;\n    will-change: transform;\n  }\n\n  .card {\n    position: relative; padding: 42px 34px;\n    background: rgba(255,255,255,.02);\n    border: 1px solid rgba(255,255,255,.06);\n    overflow: hidden; transition: background .3s, border-color .3s, transform .3s;\n    cursor: none;\n    flex: 0 0 320px; \n  }\n  .card::before {\n    content: ''; position: absolute; inset: 0;\n    background: radial-gradient(ellipse 80% 80% at var(--mx,50%) var(--my,50%), rgba(182,34,156,.09) 0%, transparent 70%);\n    opacity: 0; transition: opacity .4s; pointer-events: none;\n  }\n  .card:hover::before { opacity: 1; }\n  .card:hover {\n    background: rgba(255,255,255,.04);\n    border-color: rgba(182,34,156,.25); transform: translateY(-5px);\n  }\n  .card-icon {\n    width: 46px; height: 46px; display: block; margin-bottom: 18px;\n    color: var(--icon); fill: none; stroke: currentColor;\n    stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round;\n    filter: drop-shadow(0 0 8px rgba(92,12,80,.45));\n  }\n  .card h3 { font-family: 'Caudex', serif; font-size: 1.15rem; margin-bottom: 10px; }\n  .card p { font-size: .9rem; line-height: 1.85; color: var(--off-white); opacity: .68; }\n\n  \/* \u2500\u2500 QUOTE \u2500\u2500 *\/\n  .quote-section {\n    position: relative; z-index: 2;\n    padding: 110px 52px; text-align: center; overflow: hidden;\n  }\n  .quote-section::before {\n    content: ''; position: absolute; inset: 0;\n    background: radial-gradient(ellipse 100% 80% at 50% 50%, rgba(55,7,80,.14) 0%, transparent 70%);\n    pointer-events: none;\n  }\n  .quote-section blockquote {\n    font-family: 'Caudex', serif;\n    font-size: clamp(1.2rem, 1.5vw, 2rem);\n    font-style: italic; line-height: 1.55;\n    max-width: 820px; margin: 0 auto 28px;\n    color: var(--off-white); position: relative;\n  }\n  .quote-section blockquote::before,\n  .quote-section blockquote::after {\n    font-family: 'Caudex', serif; font-size: 6rem; line-height: 0;\n    position: absolute; color: var(--show-pink); opacity: .5;\n  }\n  .quote-section blockquote::before { content: '\\201C'; top: 32px; left: -28px; }\n  .quote-section blockquote::after  { content: '\\201D'; bottom: 0; right: -28px; }\n  .quote-byline {\n    font-size: .64rem; letter-spacing: .22em; text-transform: uppercase;\n    color: var(--show-pink); opacity: 1;\n  }\n\n  \/* \u2500\u2500 DATES (timeline base kept for compatibility) \u2500\u2500 *\/\n  .timeline { display: grid; grid-template-columns: 1fr 72px 1fr; margin-bottom: 52px; }\n\n  \/* \u2500\u2500 TICKETS \u2500\u2500 *\/\n  .tickets-section {\n    position: relative; z-index: 2; padding: 100px 52px; text-align: center;\n    background: linear-gradient(135deg, transparent, rgba(55,7,80,.08), transparent);\n  }\n  .tickets-section h2 { font-family: 'Caudex', serif; font-size: clamp(1.9rem, 3.2vw, 3rem); margin-bottom: 12px; }\n  .tickets-section .lead { font-size: .9rem; color: var(--off-white); opacity: .62; margin-bottom: 56px; }\n\n  .tickets-grid {\n    display: grid; grid-template-columns: repeat(auto-fit, minmax(210px,1fr));\n    gap: 2px; max-width: 880px; margin: 0 auto 18px;\n  }\n  .ticket-card {\n    position: relative; padding: 42px 26px;\n    background: rgba(255,255,255,.025); border: 1px solid rgba(255,255,255,.08);\n    transition: transform .3s, border-color .3s;\n  }\n  .ticket-card.featured { border-color: rgba(182,34,156,.4); background: rgba(182,34,156,.05); }\n  .ticket-card:hover { transform: translateY(-7px); }\n  .ticket-badge {\n    position: absolute; top: -13px; left: 50%; transform: translateX(-50%);\n    background: var(--lv-cyan); color: var(--lv-white);\n    font-size: .58rem; font-weight: 700; letter-spacing: .2em;\n    text-transform: uppercase; padding: 4px 13px;\n  }\n  .ticket-type { font-size: .62rem; font-weight: 700; letter-spacing: .2em; text-transform: uppercase; color: var(--lv-cyan); margin-bottom: 12px; opacity: .85; }\n  .ticket-price { font-family: 'Caudex', serif; font-size: 1.9rem; line-height: 1; color: var(--lv-white); margin-bottom: 4px; }\n  .ticket-price sup { font-size: 1.1rem; vertical-align: super; }\n  .ticket-period { font-size: .62rem; letter-spacing: .15em; text-transform: uppercase; color: var(--lv-magenta); margin-bottom: 8px; }\n  .ticket-offpeak { font-size: .8rem; color: var(--off-white); opacity: .55; margin-bottom: 22px; padding-bottom: 22px; border-bottom: 1px solid rgba(255,255,255,.07); }\n  .ticket-features { list-style: none; text-align: left; font-size: .82rem; line-height: 2; color: var(--off-white); opacity: .72; }\n  .ticket-features li::before { content: '\\2192  '; color: var(--lv-cyan); opacity: .7; }\n  .free-note { font-size: .78rem; color: var(--off-white); opacity: .5; margin-top: 18px; }\n  .pricing-note { font-size: .74rem; color: var(--off-white); opacity: .42; margin-top: 24px; font-style: italic; }\n\n  \/* \u2500\u2500 SESSIONS \u2500\u2500 *\/\n  .sessions-section {\n    position: relative; z-index: 2;\n    padding: 100px 52px; max-width: 980px; margin: 0 auto;\n  }\n  .sessions-section h2 { font-family: 'Caudex', serif; font-size: clamp(1.9rem, 3.2vw, 3rem); margin-bottom: 12px; text-align: center; }\n  .sessions-section .lead { font-size: .9rem; color: var(--off-white); opacity: .62; text-align: center; margin-bottom: 56px; }\n\n  .sessions-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 2px; }\n  .session-block {\n    padding: 42px 34px; background: rgba(255,255,255,.02);\n    border: 1px solid rgba(255,255,255,.06);\n  }\n  .session-block h3 { font-family: 'Caudex', serif; font-size: 1.25rem; margin-bottom: 5px; color: var(--lv-cyan); }\n  .period-dates { font-size: .7rem; letter-spacing: .1em; color: var(--off-white); opacity: .55; margin-bottom: 26px; text-transform: uppercase; }\n  .time-row {\n    display: flex; justify-content: space-between; align-items: center;\n    padding: 9px 0; border-bottom: 1px solid rgba(255,255,255,.05);\n    font-size: .84rem;\n  }\n  .time-row:last-child { border-bottom: none; }\n  .time-label { color: var(--off-white); opacity: .7; }\n  .time-val { font-family: 'Caudex', serif; font-size: .98rem; }\n  .time-val.hi { color: var(--lv-cyan); }\n\n  .low-sensory {\n    margin-top: 44px; padding: 30px 34px;\n    background: rgba(92,12,80,.07); border: 1px solid rgba(92,12,80,.25);\n    border-left: 3px solid var(--lv-blue);\n    display: flex; gap: 18px; align-items: flex-start;\n  }\n  .ls-icon {\n    width: 34px; height: 34px; flex-shrink: 0;\n    color: var(--icon); fill: none; stroke: currentColor;\n    stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round;\n    filter: drop-shadow(0 0 8px rgba(92,12,80,.4));\n  }\n  .low-sensory h4 { font-family: 'Caudex', serif; font-size: 1.02rem; color: var(--lv-blue); margin-bottom: 6px; }\n  .low-sensory p { font-size: .84rem; line-height: 1.85; color: var(--off-white); opacity: .72; }\n\n  \/* \u2500\u2500 VENUE \u2500\u2500 *\/\n  .venue-section {\n    position: relative; z-index: 2; padding: 80px 52px;\n    display: grid; grid-template-columns: 1fr 1fr; gap: 80px;\n    align-items: center; max-width: 1100px; margin: 0 auto;\n  }\n  .venue-section h2 { font-family: 'Caudex', serif; font-size: clamp(1.8rem, 3vw, 2.7rem); margin-bottom: 14px; }\n  .venue-section p { font-size: .96rem; line-height: 1.92; color: var(--off-white); opacity: .72; margin-bottom: 26px; }\n  .venue-facts { display: flex; flex-direction: column; gap: 12px; }\n  .venue-facts .venue-fact { display: flex; gap: 10px; align-items: center; font-size: .84rem; color: var(--off-white); opacity: .72; }\n  .ic-sm {\n    width: 18px; height: 18px; flex-shrink: 0;\n    color: var(--icon); fill: none; stroke: currentColor;\n    stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round;\n  }\n  .venue-map {\n    position: relative; height: 330px;\n    background: rgba(92,12,80,.05); border: 1px solid rgba(92,12,80,.16);\n    display: flex; align-items: center; justify-content: center; overflow: hidden;\n  }\n  .venue-map::before {\n    content: ''; position: absolute; inset: 0;\n    background: radial-gradient(ellipse 70% 70% at 50% 50%, rgba(92,12,80,.12) 0%, transparent 70%);\n  }\n  .map-rings {\n    position: absolute; width: 120px; height: 120px;\n    border-radius: 50%; border: 1px solid rgba(92,12,80,.22);\n    animation: ringExpand 3s ease-out infinite;\n  }\n  .map-rings:nth-child(2) { animation-delay: 1s; }\n  .map-rings:nth-child(3) { animation-delay: 2s; }\n  @keyframes ringExpand {\n    0% { transform: scale(.5); opacity: .8; }\n    100% { transform: scale(2.2); opacity: 0; }\n  }\n  .map-pin {\n    position: absolute; width: 46px; height: 46px; z-index: 2;\n    color: var(--icon); fill: none; stroke: currentColor;\n    stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round;\n    filter: drop-shadow(0 0 10px rgba(92,12,80,.5));\n    animation: pinBounce 2s ease-in-out infinite;\n  }\n  @keyframes pinBounce { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-8px); } }\n  .map-label { position: relative; margin-top: 90px; text-align: center; font-size: .86rem; opacity: .5; }\n\n  \/* \u2500\u2500 CTA \u2500\u2500 *\/\n  .cta-band {\n    position: relative; z-index: 2; padding: 120px 52px; text-align: center; overflow: hidden;\n  }\n  .cta-band::before {\n    content: ''; position: absolute; inset: 0;\n    background: radial-gradient(ellipse 80% 100% at 50% 50%, rgba(92,12,80,.1) 0%, transparent 70%);\n    pointer-events: none;\n  }\n  .cta-band h2 {\n    font-family: 'Caudex', serif;\n    font-size: clamp(2.4rem, 6vw, 5.5rem);\n    line-height: 1; margin-bottom: 18px;\n  }\n  .cta-band h2 em { font-style: italic; color: var(--lv-cyan); }\n  .cta-band p { font-size: .96rem; color: var(--off-white); opacity: .62; margin-bottom: 44px; letter-spacing: .06em; }\n  .limited-tag {\n    display: inline-block; border: 1px solid rgba(182,34,156,.45);\n    color: var(--lv-magenta); font-size: .6rem; font-weight: 700;\n    letter-spacing: .2em; text-transform: uppercase; padding: 5px 16px;\n    margin-bottom: 32px; animation: tagPulse 2s ease-in-out infinite;\n  }\n  @keyframes tagPulse {\n    0%,100% { box-shadow: 0 0 0 rgba(182,34,156,0); }\n    50% { box-shadow: 0 0 18px rgba(182,34,156,.35); }\n  }\n\n  \/* \u2500\u2500 FOOTER \u2500\u2500 *\/\n  footer {\n    position: relative; z-index: 2;\n    padding: 60px 52px 40px; border-top: 1px solid rgba(255,255,255,.05);\n    display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 40px;\n  }\n  .footer-brand-sub { font-size: .64rem; letter-spacing: .14em; text-transform: uppercase; color: var(--lv-cyan); opacity: .65; margin: 14px 0 8px; }\n  .footer-series { font-size: .62rem; letter-spacing: .15em; text-transform: uppercase; color: var(--off-white); opacity: .38; margin-bottom: 20px; }\n  .footer-social { display: flex; gap: 12px; }\n  .footer-social a {\n    width: 34px; height: 34px; display: flex; align-items: center; justify-content: center;\n    border: 1px solid rgba(255,255,255,.1); color: var(--off-white); font-size: .8rem;\n    text-decoration: none; transition: border-color .2s, color .2s;\n  }\n  .footer-social a:hover { border-color: var(--lv-cyan); color: var(--lv-cyan); }\n  footer h4 { font-size: .6rem; font-weight: 700; letter-spacing: .2em; text-transform: uppercase; color: var(--off-white); opacity: .4; margin-bottom: 14px; }\n  footer ul { list-style: none; }\n  footer ul li { font-size: .82rem; color: var(--off-white); opacity: .6; line-height: 2.1; }\n  .footer-copy {\n    grid-column: 1 \/ -1; font-size: .64rem; color: var(--off-white); opacity: .28;\n    text-align: center; padding-top: 26px; border-top: 1px solid rgba(255,255,255,.04);\n    letter-spacing: .1em;\n  }\n\n  \/* \u2500\u2500 ANIMATIONS \u2500\u2500 *\/\n  @keyframes fadeUp {\n    from { opacity: 0; transform: translateY(26px); }\n    to   { opacity: 1; transform: translateY(0); }\n  }\n\n  \/* \u2500\u2500 PARTICLES \u2500\u2500 *\/\n  .particle {\n    position: fixed; border-radius: 50%; pointer-events: none;\n    z-index: 1; animation: pdrift linear infinite; opacity: 0;\n  }\n  @keyframes pdrift {\n    0%   { transform: translateY(100vh) scale(0); opacity: 0; }\n    10%  { opacity: .65; }\n    90%  { opacity: .35; }\n    100% { transform: translateY(-10vh) scale(1.6); opacity: 0; }\n  }\n\n  \/* \u2500\u2500 STICKY PROGRESS BAR \u2500\u2500 *\/\n  #progress-bar {\n    position: fixed; top: 0; left: 0; right: 0; z-index: 200;\n    height: 3px; background: rgba(0,0,0,.4);\n    pointer-events: none;\n  }\n  #progress-fill {\n    height: 100%; width: 0%;\n    background: linear-gradient(90deg, var(--lv-cyan), var(--lv-magenta));\n    transition: width .1s linear;\n  }\n\n  \/* \u2500\u2500 STICKY BOOK NOW BAND \u2500\u2500 *\/\n  #sticky-cta {\n    position: fixed; bottom: 0; left: 0; right: 0; z-index: 150;\n    background: linear-gradient(to top, rgba(33,3,50,.98) 0%, rgba(33,3,50,.85) 100%);\n    padding: 14px 24px;\n    display: flex; align-items: center; justify-content: space-between;\n    border-top: 1px solid rgba(182,34,156,.18);\n    transform: translateY(100%); transition: transform .4s ease;\n    backdrop-filter: blur(12px);\n  }\n  #sticky-cta.visible { transform: translateY(0); }\n  .sticky-event-name { font-size: .74rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--off-white); opacity: .7; }\n  .sticky-price { font-family: 'Caudex', serif; font-size: 1.05rem; color: var(--lv-white); }\n  .sticky-price span { font-size: .6rem; letter-spacing: .12em; color: var(--lv-cyan); text-transform: uppercase; display: block; }\n\n  \/* \u2500\u2500 VIDEO HERO \u2500\u2500 *\/\n  #video-section {\n    position: relative; z-index: 2;\n    margin: 0; overflow: hidden;\n  }\n  .video-container {\n    position: relative; width: 100%;\n    background: #000; overflow: hidden;\n    min-height: 56.25vw;\n    max-height: 85vh;\n  }\n  .video-container video,\n  .video-container iframe {\n    position: absolute; inset: 0; width: 100%; height: 100%;\n    object-fit: cover; border: none;\n  }\n  .video-frame {\n    position: absolute; inset: 0; width: 100%; height: 100%;\n    object-fit: cover; z-index: 0;\n  }\n  .video-overlay {\n    position: absolute; inset: 0;\n    background: linear-gradient(to bottom, rgba(33,3,50,.35) 0%, rgba(33,3,50,.85) 100%);\n    z-index: 1;\n  }\n  .video-cta {\n    position: absolute; inset: 0; z-index: 2;\n    display: flex; flex-direction: column;\n    align-items: center; justify-content: center; gap: 16px;\n  }\n  .video-play-btn {\n    width: 80px; height: 80px; border-radius: 50%;\n    background: rgba(182,34,156,.14);\n    border: 2px solid rgba(182,34,156,.45);\n    display: flex; align-items: center; justify-content: center;\n    cursor: pointer; transition: all .3s;\n  }\n  .video-play-btn:hover { background: rgba(182,34,156,.28); transform: scale(1.08); }\n  .video-play-btn svg { width: 28px; height: 28px; fill: var(--lv-cyan); margin-left: 4px; }\n  .video-cta-label { font-size: .72rem; font-weight: 700; letter-spacing: .22em; text-transform: uppercase; color: rgba(182,34,156,.85); }\n  .video-cta-sub { font-size: .68rem; color: rgba(255,255,255,.5); letter-spacing: .12em; }\n\n  \/* \u2500\u2500 PHOTO GALLERY \u2500\u2500 *\/\n  #gallery {\n    position: relative; z-index: 2;\n    padding: 80px 52px;\n  }\n  .gallery-head { text-align: center; margin-bottom: 48px; }\n  .gallery-head h2 { font-family: 'Caudex', serif; font-size: clamp(1.9rem,3.2vw,2.9rem); }\n  .gallery-head h2 span { color: var(--lv-magenta); }\n  .gallery-grid {\n    display: grid;\n    grid-template-columns: 2fr 1fr 1fr;\n    grid-template-rows: 260px 260px;\n    gap: 4px; max-width: 1180px; margin: 0 auto;\n  }\n  .gallery-slot {\n    position: relative; overflow: hidden;\n    background: rgba(255,255,255,.03);\n    border: 1px solid rgba(182,34,156,.12);\n    display: flex; align-items: center; justify-content: center;\n    cursor: pointer; transition: border-color .3s;\n  }\n  .gallery-slot:hover { border-color: rgba(182,34,156,.4); }\n  .gallery-slot.large { grid-row: 1 \/ 3; }\n  .gallery-slot img {\n    position: absolute; inset: 0; width: 100%; height: 100%;\n    object-fit: cover; transition: transform .5s ease;\n  }\n  .gallery-slot:hover img { transform: scale(1.06); }\n  .gallery-caption {\n    margin-top: 22px; text-align: center;\n    font-size: .72rem; color: rgba(255,255,255,.35); letter-spacing: .1em;\n  }\n\n  \/* \u2500\u2500 JOURNEY STEPS \u2500\u2500 *\/\n  #journey {\n    position: relative; z-index: 2;\n    padding: 80px 52px;\n    background: linear-gradient(180deg, transparent, rgba(92,12,80,.05), transparent);\n  }\n  .journey-head { text-align: center; margin-bottom: 56px; }\n  .journey-head h2 { font-family: 'Caudex', serif; font-size: clamp(1.9rem,3.2vw,2.9rem); }\n  .journey-head h2 span { color: var(--lv-cyan); }\n  .journey-steps {\n    display: grid; grid-template-columns: repeat(4,1fr);\n    gap: 0; max-width: 1100px; margin: 0 auto; position: relative;\n  }\n  .journey-steps::before {\n    content: ''; position: absolute; top: 28px; left: 12.5%; right: 12.5%;\n    height: 1px; background: linear-gradient(90deg, var(--lv-cyan), var(--lv-magenta), var(--show-violet), var(--show-pink));\n    opacity: .4;\n  }\n  .journey-step { display: flex; flex-direction: column; align-items: center; text-align: center; padding: 0 18px; }\n  .step-num {\n    width: 56px; height: 56px; border-radius: 50%;\n    border: 1px solid rgba(182,34,156,.35);\n    background: rgba(182,34,156,.07);\n    display: flex; align-items: center; justify-content: center;\n    font-family: 'Caudex', serif; font-size: 1.25rem; color: var(--lv-cyan);\n    position: relative; z-index: 1; margin-bottom: 22px;\n    box-shadow: 0 0 28px rgba(182,34,156,.12);\n  }\n  .step-title { font-size: .84rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; margin-bottom: 10px; }\n  .step-desc { font-size: .84rem; line-height: 1.85; color: var(--off-white); opacity: .64; }\n\n  \/* \u2500\u2500 FAQ SECTION \u2500\u2500 *\/\n  #faq {\n    position: relative; z-index: 2;\n    padding: 80px 52px; max-width: 820px; margin: 0 auto;\n  }\n  .faq-head { text-align: center; margin-bottom: 52px; }\n  .faq-head h2 { font-family: 'Caudex', serif; font-size: clamp(1.9rem,3.2vw,2.9rem); }\n  .faq-head h2 span { color: var(--show-pink); }\n  .faq-item {\n    border-bottom: 1px solid rgba(255,255,255,.07);\n    overflow: hidden;\n  }\n  .faq-q {\n    display: flex; justify-content: space-between; align-items: center;\n    padding: 22px 0; cursor: pointer;\n    font-size: .96rem; font-weight: 600; letter-spacing: .04em;\n    transition: color .2s;\n  }\n  .faq-q:hover { color: var(--lv-cyan); }\n  .faq-q .faq-icon {\n    width: 22px; height: 22px; flex-shrink: 0;\n    border: 1px solid rgba(182,34,156,.35); border-radius: 50%;\n    display: flex; align-items: center; justify-content: center;\n    font-size: .9rem; color: var(--lv-cyan); transition: transform .3s, background .3s;\n    margin-left: 20px;\n  }\n  .faq-item.open .faq-icon { transform: rotate(45deg); background: rgba(182,34,156,.12); }\n  .faq-a {\n    max-height: 0; overflow: hidden;\n    font-size: .92rem; line-height: 1.9; color: var(--off-white); opacity: .72;\n    transition: max-height .4s ease, padding .3s ease;\n  }\n  .faq-item.open .faq-a { max-height: 2000px; padding-bottom: 22px; }\n\n  \/* \u2500\u2500 RESPONSIVE \u2500\u2500 *\/\n  @media (max-width: 800px) {\n    nav { padding: 14px 18px; }\n    .nav-links { display: none; }\n    .venue-section { grid-template-columns: 1fr; gap: 44px; padding: 60px 18px; }\n    .sessions-grid { grid-template-columns: 1fr; }\n    footer { grid-template-columns: 1fr; }\n    .hero-meta { gap: 18px; }\n    .meta-div { display: none; }\n    .eclipse-wrapper { cursor: auto; }\n    .highlights, .tickets-section, .sessions-section,\n    .quote-section, .cta-band { padding: 60px 18px; }\n    .gallery-grid { grid-template-columns: 1fr 1fr; grid-template-rows: auto; }\n    .gallery-slot { min-height: 200px; }\n    .gallery-slot.large { grid-row: auto; }\n    .journey-steps { grid-template-columns: 1fr 1fr; gap: 40px; }\n    .journey-steps::before { display: none; }\n    #gallery, #journey, #faq { padding: 60px 18px; }\n    #sticky-cta { padding: 12px 18px; }\n    \n    \/* Responsive Slider adjustments *\/\n    .ex-slider-container { height: 100vh; min-height: 450px; }\n    .ex-overlay-box { bottom: 20px; padding: 20px 24px; }\n    .ex-overlay-box h3 { font-size: 1.3rem; }\n    .ex-nav-btn { display: none; } \/* Better UX for touch devices usually *\/\n\n    .card { flex: 0 0 280px; }\n  }\n\n  \/* Respect reduced-motion: keep all content visible & still *\/\n  @media (prefers-reduced-motion: reduce) {\n    *, *::before, *::after { animation-duration: .001ms !important; animation-iteration-count: 1 !important; }\n  }\n\n  \/* \u2500\u2500 VIDEO MODAL \u2500\u2500 *\/\n  #video-modal {\n    position: fixed; inset: 0; z-index: 99999;\n    background: rgba(15, 2, 25, 0.9);\n    display: flex; align-items: center; justify-content: center;\n    opacity: 0; pointer-events: none; transition: opacity 0.3s ease;\n  }\n  #video-modal.active { opacity: 1; pointer-events: auto; }\n  .video-modal-content {\n    position: relative; width: 80%; max-width: 1000px;\n    aspect-ratio: 16\/9; background: #000;\n    border: 1px solid rgba(182,34,156,.4);\n    box-shadow: 0 0 40px rgba(92,12,80,.6);\n  }\n  .video-modal-content video { width: 100%; height: 100%; outline: none; }\n  .modal-close {\n    position: absolute; top: -35px; right: 0;\n    color: var(--lv-cyan); font-size: 1rem; font-weight: 600;\n    letter-spacing: .1em; text-transform: uppercase;\n    cursor: pointer; transition: color 0.2s;\n  }\n  .modal-close:hover { color: var(--show-pink); }\n  @media (max-width: 800px) {\n      .btn-floating {\n          padding: 12px 5px !important;\n          font-size: 12px !important;\n          width: 160px !important;\n          display: flex !important;\n          justify-content: center !important;\n      }\n  }\n<\/style>\n\n<div class=\"eclipse-wrapper\">\n\n<div id=\"progress-bar\"><div id=\"progress-fill\"><\/div><\/div>\n\n<div id=\"lc-dot\"><\/div>\n<canvas id=\"lc-canvas\"><\/canvas>\n\n<canvas id=\"stars-canvas\"><\/canvas>\n\n<div id=\"sticky-cta\">\n  <div>\n    <div class=\"sticky-event-name\"><img decoding=\"async\" src=\"https:\/\/ldedraft.com.au\/eclipse\/assets\/img\/EclipseinBloom.png\" width=\"150px\" height=\"auto\" alt=\"eclipse inbloom\"><\/div>\n    <div class=\"sticky-price\">From <sup>$<\/sup>13.50 <span class=\"hidden\">27 Jun \u2013 26 Jul 2026<\/span><\/div>\n  <\/div><a href=\"https:\/\/fareharbor.com\/embeds\/book\/eclipseinbloom\/items\/446326\/?full-items=yes\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"btn-primary btn-floating\" style=\"padding:12px 28px;font-size:.72rem;\">\u2726 Book Now<\/a>\n<\/div>\n\n<nav>\n  <div class=\"nav-brand\">\n    <a class=\"wordmark nav-wordmark\" href=\"#hero\" aria-label=\"Eclipse In Bloom \u2014 home\">\n      <img decoding=\"async\" src=\"assets\/img\/EclipseinBloom.png\" width=\"200px\" height=\"auto\" alt=\"Eclipse InBloom\">\n    <\/a>\n    <div class=\"nav-series\">Luna Light Journey<\/div>\n  <\/div>\n  <div class=\"nav-links\">\n    <a href=\"#experience\">Experience<\/a>\n    <a href=\"#gallery\">Gallery<\/a>\n    <a href=\"#sessions\" class=\"hidden\">Sessions<\/a>\n    <a href=\"#tickets\">Tickets<\/a>\n    <a href=\"#faq\">FAQ<\/a>\n    <a href=\"#venue\">Location<\/a>\n    <a href=\"https:\/\/fareharbor.com\/embeds\/book\/eclipseinbloom\/items\/446326\/?full-items=yes\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"nav-cta\">\u2726 Book Now<\/a>\n  <\/div>\n<\/nav>\n\n<section id=\"hero\">\n  <video class=\"hero-video-bg\" id=\"heroVideo\" autoplay loop muted playsinline repeat>\n    <source data-src=\"assets\/video\/video2.mp4\" type=\"video\/mp4\">\n  <\/video>\n  <div class=\"hero-bg\"><\/div>\n\n  <div class=\"beam\" style=\"left:8%; --angle:-20deg; --del:0s; --dur:4.2s; --bc:rgba(182,34,156,.8);\"><\/div>\n  <div class=\"beam\" style=\"left:20%; --angle:-9deg; --del:1.3s; --dur:3.8s; --bc:rgba(92,12,80,.8);\"><\/div>\n  <div class=\"beam\" style=\"left:33%; --angle:-2deg; --del:.5s; --dur:4.8s; --bc:rgba(182,34,156,.7);\"><\/div>\n  <div class=\"beam\" style=\"left:50%; --angle:0deg; --del:2.1s; --dur:3.5s; --bc:rgba(182,34,156,.9);\"><\/div>\n  <div class=\"beam\" style=\"left:63%; --angle:3deg; --del:.9s; --dur:4.4s; --bc:rgba(182,34,156,.75);\"><\/div>\n  <div class=\"beam\" style=\"left:78%; --angle:11deg; --del:1.7s; --dur:4.1s; --bc:rgba(92,12,80,.8);\"><\/div>\n  <div class=\"beam\" style=\"left:91%; --angle:22deg; --del:.3s; --dur:3.9s; --bc:rgba(92,12,80,.75);\"><\/div>\n\n  <div class=\"in-bloom-badge\">\n    <div class=\"badge-dot\"><\/div>\n    <span class=\"badge-text\">Part of the Luna Light Journey Series<\/span>\n    <div class=\"badge-dot\"><\/div>\n  <\/div>\n\n  <div class=\"wordmark hero-wordmark\">\n    <img decoding=\"async\" src=\"assets\/img\/EclipseinBloom.png\" width=\"400px\" height=\"auto\" alt=\"Eclipse InBloom\" style=\"    width: clamp(200px, 50vw, 700px) !important;\">\n  <\/div>\n\n  <p class=\"hero-subtitle\">Immersive Illuminated Night Walk \u00b7 Geelong Botanic Gardens<\/p>\n\n  <div class=\"hero-meta\">\n    <div class=\"meta-item hidden\">\n      <span class=\"meta-label\">Opening Night<\/span>\n      <span class=\"meta-value\">27 June 2026<\/span>\n    <\/div>\n    <div class=\"meta-div hidden\"><\/div>\n    <div class=\"meta-item\">\n      <span class=\"meta-label\">Location<\/span>\n      <span class=\"meta-value\">Geelong, VIC<\/span>\n    <\/div>\n  <\/div>\n\n  <div class=\"hero-btns\">\n    <a href=\"https:\/\/fareharbor.com\/embeds\/book\/eclipseinbloom\/items\/446326\/?full-items=yes\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"btn-primary\">\u2726 Get Tickets<\/a>\n    <a href=\"#experience\" class=\"btn-ghost\">Discover the Journey<\/a>\n  <\/div>\n\n  <div class=\"scroll-hint\">\n    <span>Scroll<\/span>\n    <div class=\"scroll-line\"><\/div>\n  <\/div>\n<\/section>\n\n<section id=\"video-section\" style=\"display:none;\">\n  <div class=\"video-container\">\n    <img class=\"video-frame\" src=\"assets\/img\/6.jpg\" alt=\"Preview of the Eclipse In Bloom illuminated night walk\" width=\"1600\" height=\"900\" loading=\"lazy\" decoding=\"async\">\n    <div class=\"video-overlay\"><\/div>\n    <div class=\"video-cta\">\n      <div class=\"video-play-btn\" role=\"button\" aria-label=\"Play showcase video\">\n        <svg viewBox=\"0 0 24 24\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\"><path d=\"M8 5v14l11-7z\"\/><\/svg>\n      <\/div>\n      <div class=\"video-cta-label\">Watch the Experience<\/div>\n      <div class=\"video-cta-sub\">A glimpse of the illuminated night walk<\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<section id=\"experience\">\n  <div class=\"ex-slider-container\">\n    \n    <div class=\"ex-pagination\">\n      <div class=\"ex-dot active\" data-index=\"0\">1<\/div>\n      <div class=\"ex-dot\" data-index=\"1\">2<\/div>\n      <div class=\"ex-dot\" data-index=\"2\">3<\/div>\n      <div class=\"ex-dot\" data-index=\"3\">4<\/div>\n    <\/div>\n\n    <div class=\"ex-slides\">\n      \n      <div class=\"ex-slide active\">\n        <video muted loop playsinline><source data-src=\"assets\/video\/video1.MP4\" type=\"video\/mp4\"><\/video>\n        <div class=\"ex-overlay-box\">\n          <h3>MAGICAL CREATURES<\/h3>\n          <p>Come face-to-face with magical creations such as giant glowing blooms, immersive flora and vibrant nocturnal life.<\/p>\n        <\/div>\n      <\/div>\n      \n      <div class=\"ex-slide\">\n        <video muted loop playsinline><source data-src=\"assets\/video\/video2.mp4\" type=\"video\/mp4\"><\/video>\n        <div class=\"ex-overlay-box\">\n          <h3>A GARDEN ALIVE<\/h3>\n          <p>Experience Geelong Botanic Gardens like never before as it transforms into a spectacular illuminated night walk.<\/p>\n        <\/div>\n      <\/div>\n      \n      <div class=\"ex-slide\">\n        <video muted loop playsinline><source data-src=\"assets\/video\/video1.MP4\" type=\"video\/mp4\"><\/video>\n        <div class=\"ex-overlay-box\">\n          <h3>WANDER BENEATH CANOPIES<\/h3>\n          <p>Discover immersive light installations and explore a world of colour, sound and atmosphere inspired by nature.<\/p>\n        <\/div>\n      <\/div>\n      \n      <div class=\"ex-slide\">\n        <video muted loop playsinline><source data-src=\"assets\/video\/video2.mp4\" type=\"video\/mp4\"><\/video>\n        <div class=\"ex-overlay-box\">\n          <h3>NIGHT TIME WONDERS<\/h3>\n          <p>Created for all ages, this enchanting after-dark experience celebrates the beauty of the gardens in a whole new light.<\/p>\n        <\/div>\n      <\/div>\n\n    <\/div>\n\n    <div class=\"ex-nav-btn ex-nav-prev\" role=\"button\" aria-label=\"Previous Slide\">\n      <svg viewBox=\"0 0 24 24\"><path d=\"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z\"\/><\/svg>\n    <\/div>\n    <div class=\"ex-nav-btn ex-nav-next\" role=\"button\" aria-label=\"Next Slide\">\n      <svg viewBox=\"0 0 24 24\"><path d=\"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\"\/><\/svg>\n    <\/div>\n\n  <\/div>\n<\/section>\n\n<section class=\"tickets-section\" id=\"tickets\">\n  <div class=\"section-tag tag-cyan\">Ticket Pricing<\/div>\n  <h2>Book your <em style=\"font-style:italic;color:var(--lv-cyan)\">night<\/em><\/h2>\n  <p class=\"lead\">Peak: Thu\u2013Sat \u00b7 Off-Peak: Mon\u2013Wed & Sun \u00b7 Infants 2 & under FREE<\/p>\n  <div class=\"tickets-grid\">\n    <div class=\"ticket-card\">\n      <div class=\"ticket-type\">Child<\/div>\n      <div class=\"ticket-price\">From <sup>$<\/sup>11.50<\/div>\n      <div class=\"ticket-period\">OFF PEAK PRICE<\/div>\n      <div class=\"ticket-offpeak\">Peak Price (Thu\u2013Sat) <strong>$13.50<\/strong><\/div>\n      <ul class=\"ticket-features\">\n        <li>Ages 3 to 17 Years<\/li>\n        \n      <\/ul>\n    <\/div>\n    <div class=\"ticket-card featured\">\n      <div class=\"ticket-badge\">Most Popular<\/div>\n      <div class=\"ticket-type\">Adult<\/div>\n      <div class=\"ticket-price\">From <sup>$<\/sup>16.50<\/div>\n      <div class=\"ticket-period\">OFF PEAK PRICE<\/div>\n      <div class=\"ticket-offpeak\">Peak Price (Thu\u2013Sat) <strong>$19.50<\/strong><\/div>\n      <ul class=\"ticket-features\">\n        <li>18+ Years<\/li>\n      <\/ul>\n    <\/div>\n    <div class=\"ticket-card\">\n      <div class=\"ticket-type\">Family<\/div>\n      <div class=\"ticket-price\">From <sup>$<\/sup>46.50<\/div>\n      <div class=\"ticket-period\">OFF PEAK PRICE<\/div>\n      <div class=\"ticket-offpeak\">Peak Price (Thu\u2013Sat) <strong>$55<\/strong><\/div>\n      <ul class=\"ticket-features\">\n        <li style=\"display: flex; gap: 5px;\"> 2 Adults 2 Kids\nor 1 Adult & 3 Kids <\/li>\n      <\/ul>\n    <\/div>\n  <\/div>\n  <div class=\"free-note\">\u2726 Infants 2 years and under \u2014 FREE \u00b7 Children 3+ require a Child ticket<\/div>\n  <div class=\"pricing-note\">Peak pricing applies Thursday, Friday & Saturday. Off-peak applies Monday\u2013Wednesday & Sunday (on open days).<\/div>\n  <div class=\"ticket-cta\" style=\"margin-top:44px;\">\n    <a href=\"https:\/\/fareharbor.com\/embeds\/book\/eclipseinbloom\/items\/446326\/?full-items=yes\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"btn-primary\" style=\"padding:18px 52px;font-size:.82rem;\">\u2726 Buy Tickets Now<\/a>\n  <\/div>\n<\/section>\n\n<section id=\"gallery\">\n  <div class=\"gallery-head\">\n    <div class=\"section-tag tag-magenta\" style=\"display:inline-block;margin-bottom:16px;\">Gallery<\/div>\n    <h2>See the <span>magic<\/span><\/h2>\n  <\/div>\n  <div class=\"gallery-grid\">\n    <div class=\"gallery-slot large\"><img src=\"assets\/img\/5.jpg\" alt=\"Feature light installation glowing in the gardens\" loading=\"lazy\" decoding=\"async\"><\/div>\n    <div class=\"gallery-slot\"><img src=\"assets\/img\/1.jpg\" alt=\"Illuminated garden path at night\" loading=\"lazy\" decoding=\"async\"><\/div>\n    <div class=\"gallery-slot\"><img src=\"assets\/img\/2.jpg\" alt=\"Glowing botanical art\" loading=\"lazy\" decoding=\"async\"><\/div>\n    <div class=\"gallery-slot\"><img src=\"assets\/img\/3.jpg\" alt=\"Colourful immersive light display\" loading=\"lazy\" decoding=\"async\"><\/div>\n    <div class=\"gallery-slot\"><img src=\"assets\/img\/4.jpg\" alt=\"Night walk through the illuminated gardens\" loading=\"lazy\" decoding=\"async\"><\/div>\n  <\/div>\n  <p class=\"gallery-caption\"><\/p>\n<\/section>\n\n<section id=\"journey\" style=\"display: none;\">\n  <div class=\"journey-head\">\n    <div class=\"section-tag tag-cyan\" style=\"display:inline-block;margin-bottom:16px;\">Your Evening<\/div>\n    <h2>What to <span>expect<\/span><\/h2>\n  <\/div>\n  <div class=\"journey-steps\">\n    <div class=\"journey-step\">\n      <div class=\"step-num\">01<\/div>\n      <div class=\"step-title\">Arrive at Dusk<\/div>\n      <div class=\"step-desc\">Enter the gardens as the sky transitions from deep blue to velvet black.<span class=\"hidden\"> Sessions begin from 5:30pm.<\/span><\/div>\n    <\/div>\n    <div class=\"journey-step\">\n      <div class=\"step-num\">02<\/div>\n      <div class=\"step-title\">Follow the Trail<\/div>\n      <div class=\"step-desc\">A self-guided illuminated path winds through the historic botanic gardens at your own pace.<\/div>\n    <\/div>\n    <div class=\"journey-step\">\n      <div class=\"step-num\">03<\/div>\n      <div class=\"step-title\">Discover & Wonder<\/div>\n      <div class=\"step-desc\">Giant glowing blooms, immersive soundscapes and stunning light art await at every turn.<\/div>\n    <\/div>\n    <div class=\"journey-step\">\n      <div class=\"step-num\">04<\/div>\n      <div class=\"step-title\">Create Memories<\/div>\n      <div class=\"step-desc\">Every step is a photo opportunity. A night you and your family will talk about for years.<\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<section class=\"highlights\" id=\"highlights\">\n  <h2>What <span>to<\/span> expect<\/h2>\n  \n  <div class=\"highlights-viewport\">\n    <div class=\"grid-cards\" id=\"highlights-track\">\n      <div class=\"card\">\n        <svg class=\"card-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n          <circle cx=\"12\" cy=\"6\" r=\"2.3\"\/><circle cx=\"12\" cy=\"18\" r=\"2.3\"\/>\n          <circle cx=\"6.8\" cy=\"9\" r=\"2.3\"\/><circle cx=\"17.2\" cy=\"9\" r=\"2.3\"\/>\n          <circle cx=\"6.8\" cy=\"15\" r=\"2.3\"\/><circle cx=\"17.2\" cy=\"15\" r=\"2.3\"\/>\n          <circle cx=\"12\" cy=\"12\" r=\"2.5\"\/>\n        <\/svg>\n        <h3>Giant Glowing Blooms<\/h3><p>Experience massive illuminated flowers and immersive installations in an iconic Geelong setting.<\/p>\n      <\/div>\n      <div class=\"card\">\n        <svg class=\"card-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n          <path d=\"M9 17V5l11-2v12\"\/><circle cx=\"6\" cy=\"17\" r=\"3\"\/><circle cx=\"17\" cy=\"15\" r=\"3\"\/>\n        <\/svg>\n        <h3>Colour, Sound & Atmosphere<\/h3><p>Escape into a magical, nature-inspired dreamscape filled with vibrant sights and sounds.<\/p>\n      <\/div>\n      <div class=\"card\">\n        <svg class=\"card-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n          <path d=\"M3 8.5A1.5 1.5 0 0 1 4.5 7H7l1.5-2h7L17 7h2.5A1.5 1.5 0 0 1 21 8.5V18a1.5 1.5 0 0 1-1.5 1.5h-15A1.5 1.5 0 0 1 3 18z\"\/>\n          <circle cx=\"12\" cy=\"12.5\" r=\"3.3\"\/>\n        <\/svg>\n        <h3>Unforgettable Photo Moments<\/h3><p>Capture stunning, picture-perfect scenes at every step along the trail.<\/p>\n      <\/div>\n      <div class=\"card\">\n        <svg class=\"card-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n          <circle cx=\"12\" cy=\"4.5\" r=\"2\"\/>\n          <path d=\"M12 7v6m0 0-3 6m3-6 3 6M8.5 10.5 12 9l3.5 1.5\"\/>\n        <\/svg>\n        <h3>Self-Guided Journey<\/h3><p>Wander through the beautifully illuminated gardens entirely at your own pace.<\/p>\n      <\/div>\n      <div class=\"card\">\n        <svg class=\"card-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n          <circle cx=\"8\" cy=\"8\" r=\"2.4\"\/><circle cx=\"16\" cy=\"8\" r=\"2.4\"\/>\n          <path d=\"M3.5 19a4.5 4.5 0 0 1 9 0M11.5 19a4.5 4.5 0 0 1 9 0\"\/>\n        <\/svg>\n        <h3>Perfect for Everyone<\/h3><p>A unique, all-ages outdoor adventure for families, friends, and couples.<\/p>\n      <\/div>\n      <div class=\"card\">\n        <svg class=\"card-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n          <path d=\"M6 3h12M6 21h12M7.5 3v3.2c0 1 .5 1.6 1.4 2.3L12 11l3.1-2.5c.9-.7 1.4-1.3 1.4-2.3V3M7.5 21v-3.2c0-1 .5-1.6 1.4-2.3L12 13l3.1 2.5c.9.7 1.4 1.3 1.4 2.3V21\"\/>\n        <\/svg>\n        <h3>Limited Season Only<\/h3><p>Don't miss this must-see event\u2014make memories before it's gone!<\/p>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<section class=\"quote-section\">\n  <blockquote>In Bloom tells the story of a garden coming alive after sunset \u2014 a hidden nocturnal world where native flora, pollinators and natural ecosystems glow with colour, movement and life. Inspired by the beauty and biodiversity of Geelong Botanic Gardens, guests journey through immersive environments influenced by blooming landscapes, native wildflowers, shifting seasons and creatures such as the iconic Blue Banded Bee.<br><br>As the experience unfolds, visitors encounter moments of discovery, transformation and wonder \u2014 from delicate glowing habitats to spectacular large-scale installations \u2014 celebrating the connection between nature, light and imagination in a way that feels both magical and uniquely Australian.<\/blockquote>\n  <div class=\"quote-byline\">\u2726 Eclipse \u00b7 Luna Light Journey Series \u00b7 Geelong Botanic Gardens \u2726<\/div>\n<\/section>\n\n<section class=\"sessions-section hidden\" id=\"sessions\">\n  <div class=\"section-tag tag-blue\" style=\"text-align:center;\">Session Times<\/div>\n  <h2>Plan your <em style=\"font-style:italic;color:var(--lv-blue)\">evening<\/em><\/h2>\n  <p class=\"lead\">Sessions begin at dusk \u2014 as the sky transitions to deep blue, the garden comes alive.<\/p>\n  <div class=\"sessions-grid\">\n    <div class=\"session-block\">\n      <h3>Period 1<\/h3>\n      <div class=\"period-dates\">Sat 27 Jun \u2013 Sun 12 Jul \u00b7 Mon\u2013Sun<\/div>\n      <div class=\"time-row\"><span class=\"time-label\">Low Sensory Session<\/span><span class=\"time-val hi\">5:30pm<\/span><\/div>\n      <div class=\"time-row\"><span class=\"time-label\">First General Session<\/span><span class=\"time-val\">5:45pm<\/span><\/div>\n      <div class=\"time-row\"><span class=\"time-label\">Sessions Every<\/span><span class=\"time-val\">15 mins<\/span><\/div>\n      <div class=\"time-row\"><span class=\"time-label\">Last Session (Mon\u2013Thu & Sun)<\/span><span class=\"time-val\">9:00pm<\/span><\/div>\n      <div class=\"time-row\"><span class=\"time-label\">Last Session (Fri & Sat)<\/span><span class=\"time-val hi\">10:00pm<\/span><\/div>\n    <\/div>\n    <div class=\"session-block\">\n      <h3>Period 2<\/h3>\n      <div class=\"period-dates\">Mon 13 Jul \u2013 Sun 26 Jul \u00b7 Wed\u2013Sun Only<\/div>\n      <div class=\"time-row\"><span class=\"time-label\">Low Sensory Session<\/span><span class=\"time-val hi\">5:45pm<\/span><\/div>\n      <div class=\"time-row\"><span class=\"time-label\">First General Session<\/span><span class=\"time-val\">6:00pm<\/span><\/div>\n      <div class=\"time-row\"><span class=\"time-label\">Sessions Every<\/span><span class=\"time-val\">15 mins<\/span><\/div>\n      <div class=\"time-row\"><span class=\"time-label\">Last Session (Wed\u2013Thu & Sun)<\/span><span class=\"time-val\">9:00pm<\/span><\/div>\n      <div class=\"time-row\"><span class=\"time-label\">Last Session (Fri & Sat)<\/span><span class=\"time-val hi\">10:00pm<\/span><\/div>\n    <\/div>\n  <\/div>\n  <div class=\"low-sensory\">\n    <svg class=\"ls-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n      <path d=\"M12 20.3l-1.45-1.32C5.4 14.36 2 11.28 2 7.5 2 4.42 4.42 2 7.5 2c1.74 0 3.41.81 4.5 2.09C13.09 2.81 14.76 2 16.5 2 19.58 2 22 4.42 22 7.5c0 3.78-3.4 6.86-8.55 11.54L12 20.3z\"\/>\n    <\/svg>\n    <div>\n      <h4>Low Sensory Sessions Available<\/h4>\n      <p>Reduced capacity of 150 guests per session in a calmer environment \u2014 timed to coincide with the deep blue sky transition before full dark. Ideal for guests who benefit from a quieter, more relaxed experience.<\/p>\n    <\/div>\n  <\/div>\n<\/section>\n\n<section class=\"venue-section\" id=\"venue\">\n  <div>\n    <div class=\"section-tag tag-pink\">The Venue<\/div>\n    <h2>Geelong Botanic<br>Gardens<\/h2>\n    <p>One of Geelong's most iconic and historic locations \u2014 transformed after dark into a spectacle of light, colour and wonder. The lush grounds become the canvas for In Bloom's world-class light art installations.<\/p>\n    <div class=\"venue-facts\">\n      <div class=\"venue-fact\">\n        <svg class=\"ic-sm\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M12 21s7-6.4 7-12a7 7 0 1 0-14 0c0 5.6 7 12 7 12z\"\/><circle cx=\"12\" cy=\"9\" r=\"2.4\"\/><\/svg>\n        <span>Geelong Botanic Gardens, Geelong VIC<\/span>\n      <\/div>\n      <div class=\"venue-fact\">\n        <svg class=\"ic-sm\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"4.5\" r=\"2\"\/><path d=\"M12 7v6m0 0-3 6m3-6 3 6M8.5 10.5 12 9l3.5 1.5\"\/><\/svg>\n        <span>Self-guided walk \u2014 wander at your own pace<\/span>\n      <\/div>\n      <div class=\"venue-fact\">\n        <svg class=\"ic-sm\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"3.6\" r=\"1.6\"\/><path d=\"M5 8c2.2 1 4.5 1.4 7 1.4S16.8 9 19 8M12 9.4V14m0 0-2.6 6M12 14l2.6 6\"\/><\/svg>\n        <span>Wheelchair accessible \u2014 pram friendly. Ground may be uneven in places<\/span>\n      <\/div>\n      <div class=\"venue-fact\">\n        <svg class=\"ic-sm\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M5 19c0-8 6-14 14-14 0 8-6 14-14 14z\"\/><path d=\"M5 19C9 15 13 11 17 7\"\/><\/svg>\n        <span>Outdoors \u00b7 Dress warmly for a Geelong winter evening<\/span>\n      <\/div>\n    <\/div>\n  <\/div>\n  <div class=\"venue-map\">\n    <div class=\"map-rings\"><\/div><div class=\"map-rings\"><\/div><div class=\"map-rings\"><\/div>\n    <iframe src=\"https:\/\/www.google.com\/maps\/embed?pb=!1m18!1m12!1m3!1d3137.613324806614!2d144.373746576139!3d-38.14918327189354!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x6ad417ac79d3a62f%3A0x3615327b8025ded4!2sGeelong%20Botanic%20Gardens!5e0!3m2!1sen!2sin!4v1779828251015!5m2!1sen!2sin\" width=\"600\" height=\"450\" style=\"border:0;\" allowfullscreen=\"\" loading=\"lazy\" referrerpolicy=\"no-referrer-when-downgrade\"><\/iframe>\n  <\/div>\n<\/section>\n\n<section id=\"faq\">\n  <div class=\"faq-head\">\n    <div class=\"section-tag tag-violet\" style=\"display:inline-block;margin-bottom:16px;\">Questions<\/div>\n    <h2>Everything you <span>need to know<\/span><\/h2>\n  <\/div>\n\n  <div class=\"faq-item\">\n    <div class=\"faq-q\">What can I expect from the show? <span class=\"faq-icon\">+<\/span><\/div>\n    <div class=\"faq-a\">\n      <p style=\"margin-bottom: 12px;\">See Geelong Botanic Gardens transformed into a spectacular world of light after dark. Bloom tells the story of a garden coming alive after sunset \u2014 a hidden nocturnal world where native flora, pollinators and natural ecosystems glow with colour, movement and life. Inspired by the beauty and biodiversity of Geelong Botanic Gardens, guests journey through immersive environments influenced by blooming landscapes, native wildflowers, shifting seasons and creatures such as the iconic Blue Banded Bee. As the experience unfolds, visitors encounter moments of discovery, transformation and wonder \u2014 from delicate glowing habitats to spectacular large-scale installations \u2014 celebrating the connection between nature, light and imagination in a way that feels both magical and uniquely Australian.<\/p>\n      <p style=\"margin-bottom: 8px;\"><strong>You can expect to:<\/strong><\/p>\n      <ul style=\"list-style-type: disc; padding-left: 20px; margin-bottom: 12px;\">\n        <li>Experience giant glowing blooms, immersive installations and breathtaking feature moments<\/li>\n        <li>Discover unforgettable photo opportunities throughout the entire trail<\/li>\n        <li>Wander at your own pace through a self-guided illuminated journey<\/li>\n        <li>Feel immersed in a dreamlike world inspired by nature in full bloom<\/li>\n        <li>Make memories together in one of Geelong's most iconic locations<\/li>\n      <\/ul>\n      <p>Bloom is a must-see limited season event \u2014 perfect for families, friends, couples and groups.<\/p>\n    <\/div>\n  <\/div>\n\n  <div class=\"faq-item\">\n    <div class=\"faq-q\">Where is the event located? <span class=\"faq-icon\">+<\/span><\/div>\n    <div class=\"faq-a\">The experience takes place at Geelong Botanic Gardens, Geelong, Victoria.<\/div>\n  <\/div>\n\n  <div class=\"faq-item\">\n    <div class=\"faq-q\">Does the event take place in an indoor or outdoor venue? <span class=\"faq-icon\">+<\/span><\/div>\n    <div class=\"faq-a\">Bloom is an outdoor experience set within Geelong Botanic Gardens. Please dress for the weather and wear comfortable, enclosed footwear suitable for uneven terrain.<\/div>\n  <\/div>\n\n  <div class=\"faq-item\">\n    <div class=\"faq-q\">How long does the event last? <span class=\"faq-icon\">+<\/span><\/div>\n    <div class=\"faq-a\">Bloom lasts for about 45 minutes to 1 hour.<\/div>\n  <\/div>\n\n  <div class=\"faq-item\">\n    <div class=\"faq-q\">Will food and beverage be available on site for purchase? <span class=\"faq-icon\">+<\/span><\/div>\n    <div class=\"faq-a\">There will be a selection of food truck options available at the show. The food truck precinct is open to all Eclipse: In Bloom visitors only.<\/div>\n  <\/div>\n\n  <div class=\"faq-item\">\n    <div class=\"faq-q\">Is there parking available? <span class=\"faq-icon\">+<\/span><\/div>\n    <div class=\"faq-a\">\n      <p style=\"margin-bottom: 10px;\">Please allow extra time to park and arrive 10 minutes before your session. Options include:<\/p>\n      <ul style=\"list-style: none; display: flex; flex-direction: column; gap: 8px;\">\n        <li>\ud83d\ude97 <strong>Carpool<\/strong> where possible to reduce congestion.<\/li>\n        <li>\ud83d\udc63 <strong>Walk<\/strong> if you live nearby.<\/li>\n        <li>\ud83c\udd7f\ufe0f <strong>General parking<\/strong> \u2014 limited spaces are available at the venue. Volunteers are on hand to assist. Please be patient and kind.<\/li>\n        <li>\ud83d\udc8b <strong>Kiss & Drop<\/strong> \u2014 ideal for passengers with limited mobility, families, and prams. After dropping off, turn around and exit the same way; street parking is available nearby.<\/li>\n        <li>\u267f <strong>Accessible parking<\/strong> \u2014 limited spaces available for vehicles displaying a valid accessible parking permit, subject to availability.<\/li>\n        <li>\ud83c\udd7f\ufe0f <strong>On-street parking<\/strong> is available in surrounding streets. Please be mindful of residents \u2014 do not park over driveways and take your rubbish with you.<\/li>\n      <\/ul>\n    <\/div>\n  <\/div>\n\n  <h3 style=\"font-family: 'Caudex', serif; color: var(--lv-cyan); margin: 44px 0 16px; font-size: 1.35rem; text-align: left; letter-spacing: 0.04em; text-transform: uppercase; border-bottom: 1px solid rgba(182,34,156,.2); padding-bottom: 6px;\">About tickets<\/h3>\n\n  <div class=\"faq-item\">\n    <div class=\"faq-q\">Where can I get tickets? <span class=\"faq-icon\">+<\/span><\/div>\n    <div class=\"faq-a\">\n      <ul style=\"list-style-type: disc; padding-left: 20px;\">\n        <li>On our website<\/li>\n      <\/ul>\n    <\/div>\n  <\/div>\n\n  <div class=\"faq-item\">\n    <div class=\"faq-q\">Can I purchase a ticket at the event? <span class=\"faq-icon\">+<\/span><\/div>\n    <div class=\"faq-a\">Yes, you may purchase tickets at the door. However, tickets may be sold out by the time you arrive at the event, so we highly recommend you book your tickets in advance in order to guarantee your spot. You can purchase tickets on our website.<\/div>\n  <\/div>\n\n  <div class=\"faq-item\">\n    <div class=\"faq-q\">I can't find my ticket. What should I do? <span class=\"faq-icon\">+<\/span><\/div>\n    <div class=\"faq-a\">It can be easy to mistype your contact details when purchasing tickets. If you did not receive an email to your chosen address upon purchasing tickets, please check your spam folder. If you still have not received it, please email us at info@eclipselightshow.com.au with your full name, correct email address and best contact number.<\/div>\n  <\/div>\n\n  <div class=\"faq-item\">\n    <div class=\"faq-q\">Can I change the date of my ticket? Are refunds allowed? <span class=\"faq-icon\">+<\/span><\/div>\n    <div class=\"faq-a\">Subject to availability, changes of date and\/or time are permitted up to 24 hours before the start time of your event. If you would like to make the change, please contact us and include the ticket ID associated with your purchase. Refunds are not allowed, except as required under Australian Consumer Law. For more information, you can consult our T&Cs.<\/div>\n  <\/div>\n\n  <div class=\"faq-item\">\n    <div class=\"faq-q\">Can I make a Group Booking? <span class=\"faq-icon\">+<\/span><\/div>\n    <div class=\"faq-a\">If you would like to book for a group, please contact us to provide your preferred attendance date and the size of your group.<\/div>\n  <\/div>\n\n  <h3 style=\"font-family: 'Caudex', serif; color: var(--lv-cyan); margin: 44px 0 16px; font-size: 1.35rem; text-align: left; letter-spacing: 0.04em; text-transform: uppercase; border-bottom: 1px solid rgba(182,34,156,.2); padding-bottom: 6px;\">About access to the event<\/h3>\n\n  <div class=\"faq-item\">\n    <div class=\"faq-q\">Do I need to arrive at the start of my scheduled session? <span class=\"faq-icon\">+<\/span><\/div>\n    <div class=\"faq-a\">Please arrive 10 minutes before your session to ease waiting times and give yourself enough time to reach the entrance.<\/div>\n  <\/div>\n\n  <div class=\"faq-item\">\n    <div class=\"faq-q\">Can I bring animals? Are service dogs allowed? <span class=\"faq-icon\">+<\/span><\/div>\n    <div class=\"faq-a\">Domestic pets, including dogs, are not permitted. Only trained assistance animals are allowed along the trail.<\/div>\n  <\/div>\n\n  <div class=\"faq-item\">\n    <div class=\"faq-q\">Is the venue accessible? <span class=\"faq-icon\">+<\/span><\/div>\n    <div class=\"faq-a\">Bloom follows established walking paths and is wheelchair accessible. We have done our best to make the trails as accessible as possible, however please be aware the ground may be uneven or wet in places. The Kiss & Drop and accessible parking options are recommended for those who need them.<\/div>\n  <\/div>\n\n  <div class=\"faq-item\">\n    <div class=\"faq-q\">Do you offer carer tickets? <span class=\"faq-icon\">+<\/span><\/div>\n    <div class=\"faq-a\">Guests who need assistance during this experience can apply for one complimentary pass for their personal assistant or support worker. Present your companion card at the entrance, and the carer will be admitted for free.<\/div>\n  <\/div>\n\n\n  <div class=\"faq-item\">\n    <div class=\"faq-q\">Will there be strobe lights? <span class=\"faq-icon\">+<\/span><\/div>\n    <div class=\"faq-a\">Yes, specific installations contain flashing lights. If you or anyone in your group has an epileptic condition, please consult your doctor before attending.<\/div>\n  <\/div>\n\n  <div class=\"faq-item\">\n    <div class=\"faq-q\">Will restrooms be available on site? <span class=\"faq-icon\">+<\/span><\/div>\n    <div class=\"faq-a\">Yes, restrooms are available at the venue. Please ask a staff member for directions.<\/div>\n  <\/div>\n\n  <div class=\"faq-item\">\n    <div class=\"faq-q\">Is there a Lost & Found? <span class=\"faq-icon\">+<\/span><\/div>\n    <div class=\"faq-a\">We recommend asking the staff at the venue if they have found your belongings or email info@eclipselightshow.com.au.<\/div>\n  <\/div>\n\n  <div class=\"faq-item\">\n    <div class=\"faq-q\">Can I take photos or record the event? <span class=\"faq-icon\">+<\/span><\/div>\n    <div class=\"faq-a\">Absolutely! We also run a photo competition on our Instagram page. For best results, turn off your flash. Check out images tagged @laservisionmegamedia ##eclipseinbloom and #LunaLightJourneys for creative inspiration.<\/div>\n  <\/div>\n\n  <div class=\"faq-item\">\n    <div class=\"faq-q\">Are lockers available at the venue? <span class=\"faq-icon\">+<\/span><\/div>\n    <div class=\"faq-a\">No, lockers are not available at the venue.<\/div>\n  <\/div>\n\n  <div class=\"faq-item\">\n    <div class=\"faq-q\">Can I bring a pram inside the venue? <span class=\"faq-icon\">+<\/span><\/div>\n    <div class=\"faq-a\">Yes, bring the whole family. We've also updated the path around the park to make it easier for families with prams to access all of the exhibits.<\/div>\n  <\/div>\n\n  <div class=\"faq-item\">\n    <div class=\"faq-q\">Is there an age requirement? <span class=\"faq-icon\">+<\/span><\/div>\n    <div class=\"faq-a\">Bloom is a family-friendly event suitable for all ages. Infants aged 2 and under are free. Children aged 3 and older require a valid 'Child' ticket.<\/div>\n  <\/div>\n<\/section>\n\n<section class=\"cta-band\">\n  <div class=\"limited-tag hidden\">Limited Season \u00b7 June\u2013July 2026<\/div>\n  <h2>Step into the<br><em>light<\/em><\/h2>\n  <p>An enchanting after-dark experience celebrating the beauty of the gardens in a whole new light.<br>Don't miss this limited season event.<\/p>\n  <div class=\"cta-btn-wrap\" style=\"display: flex; flex-direction: column; align-items: center;\">\n    <a href=\"https:\/\/www.eclipselightshow.com.au\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"btn-primary\" style=\"padding:20px;font-size:.86rem; width: 350px; display: block;\">\u2726 Secure Your Tickets<\/a>\n    <br><br>\n    <div style=\"display: flex; align-items: end; gap: 20px;\">\n      <i>Supported by a City of Greater Geelong Community Grant. <\/i><img decoding=\"async\" src=\"assets\/img\/cogg.png\" width=\"200px\" height=\"auto\" alt=\"City of Greater Geelong\">\n    <\/div>\n    <div style=\"display: flex; align-items: center; gap: 20px; margin-top: 40px; flex-direction: column;\">\n      Produced by <img decoding=\"async\" src=\"assets\/img\/LaserVision.png\" width=\"200px\" height=\"auto\" alt=\"City of Greater Geelong\">\n    <\/div>\n  <\/div>\n  \n<\/section>\n\n<footer>\n  <div>\n    <div class=\"wordmark footer-wordmark\">\n      <img decoding=\"async\" src=\"assets\/img\/EclipseinBloom_v02 White.png\" width=\"150px\" height=\"auto\" alt=\"Eclipse inBloom\" >\n    <\/div>\n    \n    <div class=\"footer-social\" style=\"margin-top: 20px;\">\n      <a href=\"https:\/\/www.instagram.com\/laservisionmegamedia\" target=\"_blank\" rel=\"noopener noreferrer\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"bi bi-instagram\" viewBox=\"0 0 16 16\">\n  <path d=\"M8 0C5.829 0 5.556.01 4.703.048 3.85.088 3.269.222 2.76.42a3.9 3.9 0 0 0-1.417.923A3.9 3.9 0 0 0 .42 2.76C.222 3.268.087 3.85.048 4.7.01 5.555 0 5.827 0 8.001c0 2.172.01 2.444.048 3.297.04.852.174 1.433.372 1.942.205.526.478.972.923 1.417.444.445.89.719 1.416.923.51.198 1.09.333 1.942.372C5.555 15.99 5.827 16 8 16s2.444-.01 3.298-.048c.851-.04 1.434-.174 1.943-.372a3.9 3.9 0 0 0 1.416-.923c.445-.445.718-.891.923-1.417.197-.509.332-1.09.372-1.942C15.99 10.445 16 10.173 16 8s-.01-2.445-.048-3.299c-.04-.851-.175-1.433-.372-1.941a3.9 3.9 0 0 0-.923-1.417A3.9 3.9 0 0 0 13.24.42c-.51-.198-1.092-.333-1.943-.372C10.443.01 10.172 0 7.998 0zm-.717 1.442h.718c2.136 0 2.389.007 3.232.046.78.035 1.204.166 1.486.275.373.145.64.319.92.599s.453.546.598.92c.11.281.24.705.275 1.485.039.843.047 1.096.047 3.231s-.008 2.389-.047 3.232c-.035.78-.166 1.203-.275 1.485a2.5 2.5 0 0 1-.599.919c-.28.28-.546.453-.92.598-.28.11-.704.24-1.485.276-.843.038-1.096.047-3.232.047s-2.39-.009-3.233-.047c-.78-.036-1.203-.166-1.485-.276a2.5 2.5 0 0 1-.92-.598 2.5 2.5 0 0 1-.6-.92c-.109-.281-.24-.705-.275-1.485-.038-.843-.046-1.096-.046-3.233s.008-2.388.046-3.231c.036-.78.166-1.204.276-1.486.145-.373.319-.64.599-.92s.546-.453.92-.598c.282-.11.705-.24 1.485-.276.738-.034 1.024-.044 2.515-.045zm4.988 1.328a.96.96 0 1 0 0 1.92.96.96 0 0 0 0-1.92m-4.27 1.122a4.109 4.109 0 1 0 0 8.217 4.109 4.109 0 0 0 0-8.217m0 1.441a2.667 2.667 0 1 1 0 5.334 2.667 2.667 0 0 1 0-5.334\"\/>\n<\/svg><\/a>\n      <a href=\"https:\/\/www.facebook.com\/laservisionmegamedia\" target=\"_blank\" rel=\"noopener noreferrer\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"bi bi-facebook\" viewBox=\"0 0 16 16\">\n  <path d=\"M16 8.049c0-4.446-3.582-8.05-8-8.05C3.58 0-.002 3.603-.002 8.05c0 4.017 2.926 7.347 6.75 7.951v-5.625h-2.03V8.05H6.75V6.275c0-2.017 1.195-3.131 3.022-3.131.876 0 1.791.157 1.791.157v1.98h-1.009c-.993 0-1.303.621-1.303 1.258v1.51h2.218l-.354 2.326H9.25V16c3.824-.604 6.75-3.934 6.75-7.951\"\/>\n<\/svg><\/a>\n      <a href=\"https:\/\/www.eclipselightshow.com.au\" target=\"_blank\" rel=\"noopener noreferrer\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"bi bi-globe\" viewBox=\"0 0 16 16\">\n  <path d=\"M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8m7.5-6.923c-.67.204-1.335.82-1.887 1.855A8 8 0 0 0 5.145 4H7.5zM4.09 4a9.3 9.3 0 0 1 .64-1.539 7 7 0 0 1 .597-.933A7.03 7.03 0 0 0 2.255 4zm-.582 3.5c.03-.877.138-1.718.312-2.5H1.674a7 7 0 0 0-.656 2.5zM4.847 5a12.5 12.5 0 0 0-.338 2.5H7.5V5zM8.5 5v2.5h2.99a12.5 12.5 0 0 0-.337-2.5zM4.51 8.5a12.5 12.5 0 0 0 .337 2.5H7.5V8.5zm3.99 0V11h2.653c.187-.765.306-1.608.338-2.5zM5.145 12q.208.58.468 1.068c.552 1.035 1.218 1.65 1.887 1.855V12zm.182 2.472a7 7 0 0 1-.597-.933A9.3 9.3 0 0 1 4.09 12H2.255a7 7 0 0 0 3.072 2.472M3.82 11a13.7 13.7 0 0 1-.312-2.5h-2.49c.062.89.291 1.733.656 2.5zm6.853 3.472A7 7 0 0 0 13.745 12H11.91a9.3 9.3 0 0 1-.64 1.539 7 7 0 0 1-.597.933M8.5 12v2.923c.67-.204 1.335-.82 1.887-1.855q.26-.487.468-1.068zm3.68-1h2.146c.365-.767.594-1.61.656-2.5h-2.49a13.7 13.7 0 0 1-.312 2.5m2.802-3.5a7 7 0 0 0-.656-2.5H12.18c.174.782.282 1.623.312 2.5zM11.27 2.461c.247.464.462.98.64 1.539h1.835a7 7 0 0 0-3.072-2.472c.218.284.418.598.597.933M10.855 4a8 8 0 0 0-.468-1.068C9.835 1.897 9.17 1.282 8.5 1.077V4z\"\/>\n<\/svg><\/a>\n    <\/div>\n  <\/div>\n  <div>\n    <h4>Event Info<\/h4>\n    <ul>\n      <li>Geelong Botanic Gardens, VIC<\/li>\n      <li class=\"hidden\">27 June \u2013 26 July 2026<\/li>\n      <li class=\"hidden\">Sessions from 5:30pm nightly<\/li>\n      <li>Infants 2 & under FREE<\/li>\n      <li>All ages welcome<\/li>\n    <\/ul>\n  <\/div>\n  <div>\n    <h4>Quick Links<\/h4>\n    <ul>\n      <li>eclipselightshow.com.au<\/li>\n      <li>FAQs & Accessibility<\/li>\n      <li>@laservisionmegamedia<\/li>\n      <li>Luna Light Journey Series<\/li>\n    <\/ul>\n  <\/div>\n  <div class=\"footer-copy\">\n    \u00a9 2026 Laservision MegaMedia \u00b7 Eclipse \u2013 In Bloom \u00b7 Luna Light Journey \u00b7 Geelong Botanic Gardens\n  <\/div>\n<\/footer>\n\n<div id=\"video-modal\">\n  <div class=\"video-modal-content\">\n    <div class=\"modal-close\" id=\"close-modal\">\u2715 Close<\/div>\n    <video id=\"modal-video\" controls>\n      <source src=\"assets\/video\/video1.MP4\" type=\"video\/mp4\">\n    <\/video>\n  <\/div>\n<\/div>\n\n<\/div>\n<script>\n\/\/ \u2500\u2500 LAZY LOAD HERO BACKGROUND VIDEO \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\ndocument.addEventListener(\"DOMContentLoaded\", function() {\n  var heroVideo = document.getElementById(\"heroVideo\");\n  if (heroVideo) {\n    var source = heroVideo.querySelector(\"source\");\n    if (source && source.dataset.src) {\n      source.src = source.dataset.src;\n      heroVideo.load();\n    }\n  }\n});\n\n\/\/ \u2500\u2500 LASER CURSOR \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n(function(){\n  var dot  = document.getElementById('lc-dot');\n  var canvas = document.getElementById('lc-canvas');\n  var ctx    = canvas.getContext('2d');\n\n  if (!CanvasRenderingContext2D.prototype.roundRect) {\n    CanvasRenderingContext2D.prototype.roundRect = function(x,y,w,h,r){\n      this.moveTo(x+r,y);\n      this.arcTo(x+w,y,   x+w,y+h, r);\n      this.arcTo(x+w,y+h, x,  y+h, r);\n      this.arcTo(x,  y+h, x,  y,   r);\n      this.arcTo(x,  y,   x+w,y,   r);\n      this.closePath();\n      return this;\n    };\n  }\n\n  \/\/ Brand palette as [r,g,b] \u2014 updated purple\/berry\/magenta tones\n  var COLS = [\n    [182,34,156],\n    [92,12,80],\n    [55,7,80],\n    [182,34,156],\n    [92,12,80],\n    [55,7,80]\n  ];\n\n  var W, H;\n  function resize(){\n    W = canvas.width  = window.innerWidth;\n    H = canvas.height = window.innerHeight;\n  }\n  resize();\n  window.addEventListener('resize', resize);\n\n  function getColRGBA(phase, alpha) {\n    var len = COLS.length;\n    var i0  = Math.floor(phase) % len;\n    var i1  = (i0 + 1) % len;\n    var tt  = phase - Math.floor(phase);\n    var c0  = COLS[i0], c1 = COLS[i1];\n    var r   = (c0[0] + (c1[0]-c0[0])*tt) | 0;\n    var g   = (c0[1] + (c1[1]-c0[1])*tt) | 0;\n    var b   = (c0[2] + (c1[2]-c0[2])*tt) | 0;\n    return 'rgba(' + r + ',' + g + ',' + b + ',' + alpha + ')';\n  }\n\n  var mx = W\/2, my = H\/2;\n  var prevX = mx, prevY = my;\n  var angle = 0;\n  var smoothAngle = 0;\n  var colPhase = 0;\n  var trail = [];\n  var TRAIL_MS = 500;\n  var moving = false;\n  var moveTimer = 0;\n  var isHover = false;\n\n  document.addEventListener('mousemove', function(e) {\n    prevX = mx; prevY = my;\n    mx = e.clientX; my = e.clientY;\n    var dx = mx - prevX, dy = my - prevY;\n    if (dx*dx + dy*dy > 4) {\n      angle = Math.atan2(dx, -dy);\n    }\n    trail.push({x: mx, y: my, t: performance.now()});\n    moving = true;\n    clearTimeout(moveTimer);\n    moveTimer = setTimeout(function(){ moving = false; }, 150);\n  });\n\n  function setupHover() {\n    document.querySelectorAll('a, button, [role=\"button\"], .ex-dot, .ex-nav-btn').forEach(function(el) {\n      el.addEventListener('mouseenter', function(){ isHover = true; });\n      el.addEventListener('mouseleave', function(){ isHover = false; });\n    });\n  }\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', setupHover);\n  } else {\n    setupHover();\n  }\n\n  function lerpAngle(a, b, t) {\n    var d = b - a;\n    while (d >  Math.PI) { d -= Math.PI*2; }\n    while (d < -Math.PI) { d += Math.PI*2; }\n    return a + d * t;\n  }\n\n  function drawPointer(cx, cy, ang) {\n    ctx.save();\n    ctx.translate(cx, cy);\n    ctx.rotate(ang);\n\n    var beamLen = isHover ? 60 : 44;\n    var bg = ctx.createLinearGradient(0, 0, 0, -beamLen);\n    bg.addColorStop(0,   getColRGBA(colPhase, 0.9));\n    bg.addColorStop(0.5, getColRGBA(colPhase, 0.35));\n    bg.addColorStop(1,   getColRGBA(colPhase, 0));\n    ctx.beginPath();\n    ctx.moveTo(-1.2, 0);\n    ctx.lineTo( 1.2, 0);\n    ctx.lineTo( 0.5, -beamLen);\n    ctx.lineTo(-0.5, -beamLen);\n    ctx.closePath();\n    ctx.fillStyle = bg;\n    ctx.fill();\n\n    var gg = ctx.createLinearGradient(0, 0, 0, -beamLen);\n    gg.addColorStop(0, getColRGBA(colPhase, 0.28));\n    gg.addColorStop(1, getColRGBA(colPhase, 0));\n    ctx.beginPath();\n    ctx.moveTo(-5, 2);\n    ctx.lineTo( 5, 2);\n    ctx.lineTo( 2.5, -beamLen);\n    ctx.lineTo(-2.5, -beamLen);\n    ctx.closePath();\n    ctx.fillStyle = gg;\n    ctx.fill();\n\n    ctx.beginPath();\n    ctx.roundRect(-5, 2, 10, 26, 2);\n    var barrelG = ctx.createLinearGradient(-5, 0, 5, 0);\n    barrelG.addColorStop(0,   '#0c0c20');\n    barrelG.addColorStop(0.45,'#1d1d36');\n    barrelG.addColorStop(1,   '#090916');\n    ctx.fillStyle = barrelG;\n    ctx.fill();\n    ctx.strokeStyle = getColRGBA(colPhase, 0.22);\n    ctx.lineWidth = 0.6;\n    ctx.stroke();\n\n    var ridges = [8, 12, 16, 20];\n    for (var ri = 0; ri < ridges.length; ri++) {\n      ctx.beginPath();\n      ctx.rect(-3.5, ridges[ri], 7, 1.4);\n      ctx.fillStyle = 'rgba(255,255,255,0.07)';\n      ctx.fill();\n    }\n\n    ctx.beginPath();\n    ctx.roundRect(5, 9, 4, 7, 1);\n    ctx.fillStyle = getColRGBA(colPhase, 0.75);\n    ctx.fill();\n\n    var eg = ctx.createRadialGradient(0, 2, 0, 0, 2, 5.5);\n    eg.addColorStop(0, getColRGBA(colPhase, 0.7));\n    eg.addColorStop(1, getColRGBA(colPhase, 0.05));\n    ctx.beginPath();\n    ctx.arc(0, 2, 5.5, 0, Math.PI*2);\n    ctx.fillStyle = eg;\n    ctx.fill();\n\n    var haloR = isHover ? 10 : 7;\n    var hg = ctx.createRadialGradient(0, 0, 0, 0, 0, haloR);\n    hg.addColorStop(0, getColRGBA(colPhase, 0.55));\n    hg.addColorStop(1, getColRGBA(colPhase, 0));\n    ctx.beginPath();\n    ctx.arc(0, 0, haloR, 0, Math.PI*2);\n    ctx.fillStyle = hg;\n    ctx.fill();\n\n    ctx.restore();\n  }\n\n  function drawTrail(now) {\n    var live = [];\n    for (var i = 0; i < trail.length; i++) {\n      if (now - trail[i].t < TRAIL_MS) { live.push(trail[i]); }\n    }\n    trail = live;\n    if (live.length < 2) { return; }\n\n    for (var j = 1; j < live.length; j++) {\n      var p0 = live[j-1], p1 = live[j];\n      var age  = (now - p1.t) \/ TRAIL_MS;\n      var prog = 1 - age;\n      var alpha = prog * prog * 0.6;\n      var w      = prog * (isHover ? 4.5 : 3);\n\n      ctx.beginPath();\n      ctx.moveTo(p0.x, p0.y);\n      ctx.lineTo(p1.x, p1.y);\n      ctx.lineWidth   = w;\n      ctx.lineCap     = 'round';\n      ctx.strokeStyle = getColRGBA(colPhase, alpha);\n      ctx.shadowColor = getColRGBA(colPhase, 1);\n      ctx.shadowBlur  = isHover ? 16 : 9;\n      ctx.stroke();\n\n      ctx.lineWidth   = w * 3;\n      ctx.strokeStyle = getColRGBA(colPhase, alpha * 0.15);\n      ctx.shadowBlur  = 0;\n      ctx.stroke();\n    }\n    ctx.shadowBlur = 0;\n  }\n\n  var last = 0;\n  function frame(now) {\n    requestAnimationFrame(frame);\n    var dt = Math.min(now - last, 50);\n    last = now;\n\n    colPhase += dt * 0.0008;\n    if (colPhase >= COLS.length) { colPhase -= COLS.length; }\n\n    smoothAngle = lerpAngle(smoothAngle, angle, 0.14);\n\n    ctx.clearRect(0, 0, W, H);\n\n    drawTrail(now);\n    drawPointer(mx, my, smoothAngle);\n\n    dot.style.left      = mx + 'px';\n    dot.style.top       = my + 'px';\n    dot.style.boxShadow =\n      '0 0 5px 2px '  + getColRGBA(colPhase, 1) + ',' +\n      '0 0 16px 6px '  + getColRGBA(colPhase, 0.65) + ',' +\n      '0 0 32px 12px ' + getColRGBA(colPhase, 0.25);\n\n    if (!moving) {\n      var pulse = 0.5 + 0.5 * Math.sin(now * 0.005);\n      ctx.beginPath();\n      ctx.arc(mx, my, 10 + pulse * 7, 0, Math.PI*2);\n      ctx.fillStyle = getColRGBA(colPhase, pulse * 0.13);\n      ctx.fill();\n    }\n  }\n  requestAnimationFrame(frame);\n\n})();\n\n\/\/ STARS\n(function(){\n  var c=document.getElementById('stars-canvas'), ctx=c.getContext('2d');\n  var W,H,stars=[];\n  function resize(){ W=c.width=window.innerWidth; H=c.height=window.innerHeight; }\n  function make(){\n    stars=[];\n    for(var i=0;i<180;i++) stars.push({x:Math.random()*W,y:Math.random()*H,r:Math.random()*1.4+.3,a:Math.random(),s:Math.random()*.4+.1,ph:Math.random()*Math.PI*2});\n  }\n  function draw(t){\n    ctx.clearRect(0,0,W,H);\n    stars.forEach(function(s){\n      var tw=.35+.65*Math.sin(t*.001*s.s+s.ph);\n      ctx.beginPath(); ctx.arc(s.x,s.y,s.r,0,Math.PI*2);\n      ctx.fillStyle='rgba(255,255,255,'+(s.a*tw)+')'; ctx.fill();\n    });\n    requestAnimationFrame(draw);\n  }\n  resize(); make(); requestAnimationFrame(draw);\n  window.addEventListener('resize',function(){ resize(); make(); });\n})();\n\n\/\/ CARD GLOW\ndocument.querySelectorAll('.card').forEach(function(c){\n  c.addEventListener('mousemove',function(e){\n    var r=c.getBoundingClientRect();\n    c.style.setProperty('--mx',((e.clientX-r.left)\/r.width*100).toFixed(1)+'%');\n    c.style.setProperty('--my',((e.clientY-r.top)\/r.height*100).toFixed(1)+'%');\n  });\n});\n\n\/\/ PARTICLES \n(function(){\n  var cols=['#B6229C','#5C0C50','#370750','#B6229C','#5C0C50'];\n  function spawn(){\n    var p=document.createElement('div');\n    p.className='particle';\n    p.style.left=Math.random()*100+'vw';\n    p.style.background=cols[Math.floor(Math.random()*cols.length)];\n    var d=9+Math.random()*13;\n    p.style.animationDuration=d+'s';\n    p.style.animationDelay=Math.random()*4+'s';\n    var sz=1.5+Math.random()*2.5;\n    p.style.width=p.style.height=sz+'px';\n    document.body.appendChild(p);\n    setTimeout(function(){ p.remove(); },(d+4)*1000);\n  }\n  setInterval(spawn,700);\n  for(var i=0;i<10;i++) setTimeout(spawn,i*250);\n})();\n\n\/\/ SMOOTH SCROLL\ndocument.querySelectorAll('a[href^=\"#\"]').forEach(function(a){\n  a.addEventListener('click',function(e){\n    var t=document.querySelector(a.getAttribute('href'));\n    if(t){ e.preventDefault(); t.scrollIntoView({behavior:'smooth'}); }\n  });\n});\n\n\/\/ PROGRESS BAR\n(function(){\n  var fill=document.getElementById('progress-fill');\n  if(!fill) return;\n  window.addEventListener('scroll',function(){\n    var h=document.documentElement;\n    var pct=h.scrollTop\/(h.scrollHeight-h.clientHeight)*100;\n    fill.style.width=Math.min(100,pct).toFixed(2)+'%';\n  },{passive:true});\n})();\n\n\/\/ STICKY CTA\n(function(){\n  var el=document.getElementById('sticky-cta');\n  if(!el) return;\n  window.addEventListener('scroll',function(){\n    if(window.scrollY>600){ el.classList.add('visible'); }\n    else { el.classList.remove('visible'); }\n  },{passive:true});\n})();\n\n\/\/ FAQ ACCORDION\ndocument.querySelectorAll('.faq-item').forEach(function(item){\n  var q=item.querySelector('.faq-q');\n  if(!q) return;\n  q.addEventListener('click',function(){\n    var isOpen=item.classList.contains('open');\n    document.querySelectorAll('.faq-item.open').forEach(function(o){ o.classList.remove('open'); });\n    if(!isOpen) item.classList.add('open');\n  });\n});\n\n\/\/ \u2500\u2500 GSAP SCROLL ANIMATIONS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\/\/ Smooth, slow, per-element reveals that REPLAY each time an element\n\/\/ re-enters the viewport. Gracefully degrades if GSAP fails to load.\n(function(){\n  function initAnimations(){\n    if (!window.gsap || !window.ScrollTrigger) return;          \/\/ CDN blocked -> content stays visible\n    if (window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches) return;\n\n    gsap.registerPlugin(ScrollTrigger);\n    gsap.config({ nullTargetWarn: false });\n\n    \/\/ [selector, staggerWithinGroup]\n    var groups = [\n      ['.section-tag', false],\n      ['.video-cta', false],\n      ['.highlights h2', false],\n      ['.tickets-section h2', false],\n      ['.tickets-section .lead', false],\n      ['.ticket-card', true],\n      ['.free-note', false],\n      ['.pricing-note', false],\n      ['.ticket-cta', false],\n      ['.gallery-head', false],\n      ['.gallery-slot', true],\n      ['.gallery-caption', false],\n      ['.journey-head', false],\n      ['.journey-step', true],\n      ['.quote-section blockquote', false],\n      ['.quote-byline', false],\n      ['.sessions-section h2', false],\n      ['.sessions-section .lead', false],\n      ['.session-block', true],\n      ['.low-sensory', false],\n      ['.venue-section h2', false],\n      ['.venue-section p', false],\n      ['.venue-facts', false],\n      ['.venue-map', false],\n      ['.faq-head', false],\n      ['.faq-item', true],\n      ['.cta-band .limited-tag', false],\n      ['.cta-band h2', false],\n      ['.cta-band p', false],\n      ['.cta-btn-wrap', false],\n      ['footer > div', true]\n    ];\n\n    groups.forEach(function(g){\n      var sel = g[0], stagger = g[1];\n      gsap.utils.toArray(sel).forEach(function(el, i){\n        gsap.from(el, {\n          opacity: 0,\n          y: 60,\n          duration: 1.5,\n          ease: 'power3.out',\n          delay: stagger ? (i % 6) * 0.12 : 0,\n          scrollTrigger: {\n            trigger: el,\n            start: 'top 88%',\n            \/\/ play on enter (both directions), reset on leave (both directions) -> replays every time\n            toggleActions: 'play reset play reset'\n          }\n        });\n      });\n    });\n\n    \/\/ Recalculate after lazy images load so triggers line up\n    window.addEventListener('load', function(){ ScrollTrigger.refresh(); });\n  }\n\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', initAnimations);\n  } else {\n    initAnimations();\n  }\n})();\n\n\/\/ \u2500\u2500 VIDEO MODAL LOGIC \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\ndocument.addEventListener(\"DOMContentLoaded\", function() {\n  var playBtn = document.querySelector('.video-play-btn');\n  var modal = document.getElementById('video-modal');\n  var closeBtn = document.getElementById('close-modal');\n  var videoEl = document.getElementById('modal-video');\n\n  if (playBtn && modal && closeBtn && videoEl) {\n    playBtn.addEventListener('click', function() {\n      modal.classList.add('active');\n      videoEl.play();\n    });\n\n    function closeModal() {\n      modal.classList.remove('active');\n      videoEl.pause();\n      videoEl.currentTime = 0;\n    }\n\n    closeBtn.addEventListener('click', closeModal);\n    modal.addEventListener('click', function(e) {\n      if (e.target === modal) {\n        closeModal();\n      }\n    });\n  }\n});\n\n\/\/ \u2500\u2500 EXPERIENCE SLIDER FULL-WIDTH LOGIC \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\ndocument.addEventListener(\"DOMContentLoaded\", function() {\n  var sliderContainer = document.querySelector('.ex-slider-container');\n  if (!sliderContainer) return;\n\n  var slides = sliderContainer.querySelectorAll('.ex-slide');\n  var dots = sliderContainer.querySelectorAll('.ex-dot');\n  var prevBtn = sliderContainer.querySelector('.ex-nav-prev');\n  var nextBtn = sliderContainer.querySelector('.ex-nav-next');\n  var currentIndex = 0;\n\n  function updateSlider(index) {\n    slides.forEach(function(slide, i) {\n      var vid = slide.querySelector('video');\n      if (i === index) {\n        slide.classList.add('active');\n        if (dots[i]) dots[i].classList.add('active');\n        if (vid) {\n          var source = vid.querySelector('source');\n          if (source && source.dataset.src && !source.src) {\n            source.src = source.dataset.src;\n            vid.load();\n          }\n          var playPromise = vid.play();\n          if (playPromise !== undefined) {\n            playPromise.catch(function(e) { console.log(\"Autoplay prevented\", e); });\n          }\n        }\n      } else {\n        slide.classList.remove('active');\n        if (dots[i]) dots[i].classList.remove('active');\n        if (vid) {\n          vid.pause();\n        }\n      }\n    });\n  }\n\n  if (prevBtn && nextBtn) {\n    prevBtn.addEventListener('click', function() {\n      currentIndex = (currentIndex > 0) ? currentIndex - 1 : slides.length - 1;\n      updateSlider(currentIndex);\n    });\n\n    nextBtn.addEventListener('click', function() {\n      currentIndex = (currentIndex < slides.length - 1) ? currentIndex + 1 : 0;\n      updateSlider(currentIndex);\n    });\n  }\n\n  dots.forEach(function(dot) {\n    dot.addEventListener('click', function() {\n      var index = parseInt(this.getAttribute('data-index'));\n      if (!isNaN(index)) {\n        currentIndex = index;\n        updateSlider(currentIndex);\n      }\n    });\n  });\n\n  \/\/ Initialize the first slide\n  updateSlider(currentIndex);\n});\n\n\/\/ \u2500\u2500 HIGHLIGHTS AUTOPLAY SLIDER \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\ndocument.addEventListener(\"DOMContentLoaded\", function() {\n  const track = document.getElementById('highlights-track');\n  if (!track) return;\n\n  let isTransitioning = false;\n  let sliderInterval;\n\n  function moveSlider() {\n    if (isTransitioning) return;\n    isTransitioning = true;\n\n    const firstCard = track.children[0];\n    \n    \/\/ Calculate how far to move: width of the card + the flex gap\n    const cardWidth = firstCard.offsetWidth;\n    const gap = parseFloat(window.getComputedStyle(track).gap) || 0;\n    const moveDistance = cardWidth + gap;\n\n    \/\/ Slide it over\n    track.style.transition = 'transform 0.6s ease-in-out';\n    track.style.transform = `translateX(-${moveDistance}px)`;\n\n    \/\/ Wait for the CSS transition to finish, then pop the first element to the back\n    setTimeout(() => {\n      track.style.transition = 'none';\n      track.appendChild(firstCard);\n      track.style.transform = 'translateX(0)';\n      isTransitioning = false;\n    }, 600); \/\/ This matches the 0.6s transition duration\n  }\n\n  \/\/ Start the 4000ms loop\n  sliderInterval = setInterval(moveSlider, 4000);\n\n  \/\/ Optional but recommended: Pause the slider if the user hovers over a card to read it\n  track.addEventListener('mouseenter', () => clearInterval(sliderInterval));\n  track.addEventListener('mouseleave', () => {\n    sliderInterval = setInterval(moveSlider, 4000);\n  });\n});\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>From $13.50 27 Jun \u2013 26 Jul 2026 \u2726 Book Now Luna Light Journey Experience Gallery Sessions Tickets FAQ Location [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-7","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/eclipselightshow.com.au\/wp-json\/wp\/v2\/pages\/7","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/eclipselightshow.com.au\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/eclipselightshow.com.au\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/eclipselightshow.com.au\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/eclipselightshow.com.au\/wp-json\/wp\/v2\/comments?post=7"}],"version-history":[{"count":6,"href":"https:\/\/eclipselightshow.com.au\/wp-json\/wp\/v2\/pages\/7\/revisions"}],"predecessor-version":[{"id":48,"href":"https:\/\/eclipselightshow.com.au\/wp-json\/wp\/v2\/pages\/7\/revisions\/48"}],"wp:attachment":[{"href":"https:\/\/eclipselightshow.com.au\/wp-json\/wp\/v2\/media?parent=7"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}