{
  "version": 3,
  "sources": ["/cdn/shop/t/123/assets/bgg26.js?b=538901467"],
  "sourcesContent": ["/* Barna Girona Gravel Ride 2026 landing (sections/barna-girona-2026.liquid): countdown, reveal, T-shirt toggle,\n   arrival planner, click-to-load Strava route map and the sticky sign-up bar. */\n(() => {\n  const root = document.querySelector('[data-bgg]');\n  if (!root) return;\n  let t = {};\n  try { t = JSON.parse(root.querySelector('[data-bgg-i18n]').textContent); } catch (e) {}\n  const start = new Date(root.dataset.start);\n  const kmOf = (r) => parseFloat(root.dataset[r === 'short' ? 'kmShort' : 'kmLong']) || 156;\n  const routeHooks = [];\n\n  // App mode (Velodrom app WebView sets window.VELODROM_APP and adds ?app=1): no store chrome,\n  // booking buttons open the native ticket picker, external links leave the WebView.\n  const APP = !!(window.VELODROM_APP || /[?&]app=1\\b/.test(location.search));\n  const toApp = (msg) => { try { if (window.ReactNativeWebView) { window.ReactNativeWebView.postMessage(JSON.stringify(msg)); return true; } } catch (e) {} return false; };\n  if (APP) {\n    document.documentElement.classList.add('velodrom-app');\n    root.classList.add('bgg--app');\n    root.addEventListener('click', (ev) => {\n      const b = ev.target.closest && ev.target.closest('[data-book]');\n      if (b && toApp({ type: 'book' })) ev.preventDefault();\n      const x = ev.target.closest && ev.target.closest('[data-ext]');\n      if (x && toApp({ type: 'open', url: x.href })) ev.preventDefault();\n    });\n  }\n\n  // Hero film loop: portrait file on phones, landscape otherwise; no autoplay for reduced motion / data saver; pauses off-screen\n  const vid = root.querySelector('[data-hero-video]');\n  if (vid) {\n    const calm = matchMedia('(prefers-reduced-motion: reduce)').matches || (navigator.connection && navigator.connection.saveData);\n    if (!calm) {\n      vid.src = matchMedia('(max-width: 749px)').matches ? vid.dataset.srcTall : vid.dataset.srcWide;\n      vid.muted = true;\n      const play = () => { const p = vid.play(); if (p && p.catch) p.catch(() => {}); };\n      if ('IntersectionObserver' in window) {\n        new IntersectionObserver(([e]) => { if (e.isIntersecting) play(); else vid.pause(); }, { threshold: 0.15 }).observe(vid);\n      } else play();\n    }\n  }\n\n  // Previous-edition film: YouTube (no-cookie) only after a click\n  root.querySelectorAll('[data-yt]').forEach((box) => {\n    const btn = box.querySelector('button');\n    if (!btn) return;\n    btn.addEventListener('click', () => {\n      const id = box.dataset.yt.replace(/[^\\w-]/g, '');\n      if (APP && toApp({ type: 'open', url: 'https://www.youtube.com/watch?v=' + id })) return;\n      box.innerHTML = '<iframe src=\"https://www.youtube-nocookie.com/embed/' + id + '?autoplay=1&rel=0&modestbranding=1&playsinline=1\" title=\"Barna Girona\" allow=\"autoplay; encrypted-media; picture-in-picture; fullscreen\" allowfullscreen></iframe>';\n    });\n  });\n\n  // Countdown\n  const count = root.querySelector('[data-count]');\n  if (count) {\n    const pad = (n) => String(n).padStart(2, '0');\n    const el = (k) => count.querySelector('[data-' + k + ']');\n    const tick = () => {\n      let s = Math.max(0, Math.floor((start - Date.now()) / 1000));\n      if (s === 0) { count.hidden = true; return; }\n      el('d').textContent = Math.floor(s / 86400); s %= 86400;\n      el('h').textContent = pad(Math.floor(s / 3600)); s %= 3600;\n      el('m').textContent = pad(Math.floor(s / 60));\n      el('s').textContent = pad(s % 60);\n    };\n    tick();\n    setInterval(tick, 1000);\n  }\n\n  // Reveal on scroll\n  const rev = root.querySelectorAll('.bgg__reveal');\n  if ('IntersectionObserver' in window) {\n    const io = new IntersectionObserver((es) => es.forEach((e) => {\n      if (e.isIntersecting) { e.target.classList.add('is-in'); io.unobserve(e.target); }\n    }), { rootMargin: '0px 0px -8% 0px' });\n    rev.forEach((n) => io.observe(n));\n  } else rev.forEach((n) => n.classList.add('is-in'));\n\n  // T-shirt back/front\n  root.querySelectorAll('[data-tee]').forEach((box) => {\n    const imgs = box.querySelectorAll('img');\n    const btns = box.querySelectorAll('[data-tee-btn]');\n    btns.forEach((b) => b.addEventListener('click', () => {\n      const i = +b.dataset.teeBtn;\n      imgs.forEach((im, j) => im.classList.toggle('is-on', i === j));\n      btns.forEach((x) => { x.classList.toggle('is-on', x === b); x.setAttribute('aria-pressed', x === b); });\n    }));\n  });\n\n  // Arrival planner\n  const plan = root.querySelector('[data-plan]');\n  if (plan) {\n    const inp = (k) => plan.querySelector('[data-in=\"' + k + '\"]');\n    const out = (k) => root.querySelector('[data-out=\"' + k + '\"]');\n    let bad = 1;\n    const fmt = (d) => d.toLocaleTimeString(t.lang === 'en' ? 'en-GB' : (t.lang || 'es'), { hour: '2-digit', minute: '2-digit', timeZone: 'Europe/Madrid' });\n    const calc = () => {\n      const v = +inp('speed').value;\n      const stops = +inp('stops').value;\n      const rideMin = (kmOf(root.dataset.route) / v) * 60;\n      const total = rideMin + stops + bad * 15;\n      const eta = new Date(start.getTime() + total * 60000);\n      out('speed').textContent = v;\n      out('stops').textContent = stops;\n      out('bad').textContent = bad;\n      out('eta').textContent = fmt(eta);\n      out('ride').textContent = Math.floor(rideMin / 60) + ' h ' + String(Math.round(rideMin % 60)).padStart(2, '0') + ' min ' + (t.riding || '');\n      const hm = eta.getUTCHours() + 1 + eta.getUTCMinutes() / 60; // CET in November\n      out('verdict').textContent = hm < 15.5 ? t.verdict_early : hm <= 17 ? t.verdict_mid : t.verdict_late;\n    };\n    plan.querySelectorAll('input').forEach((i) => i.addEventListener('input', calc));\n    plan.querySelectorAll('[data-bad]').forEach((b) => b.addEventListener('click', () => {\n      bad = Math.min(9, Math.max(0, bad + +b.dataset.bad));\n      calc();\n    }));\n    routeHooks.push(calc);\n    calc();\n  }\n\n  // Route map (own Leaflet + elevation profile). Both routes drawn, the selected one highlighted; loads when near the viewport.\n  const box = root.querySelector('[data-routes]');\n  if (box) {\n    let urls = {};\n    try { urls = JSON.parse(box.dataset.routes); } catch (e) {}\n    const mapEl = box.querySelector('[data-map]');\n    const svg = box.querySelector('[data-profile]');\n    const rk = box.querySelector('[data-rk]'), re = box.querySelector('[data-re]');\n    const nf = new Intl.NumberFormat(t.lang === 'en' ? 'en-GB' : (t.lang || 'es'), { maximumFractionDigits: 1 });\n    const nf0 = new Intl.NumberFormat(t.lang === 'en' ? 'en-GB' : (t.lang || 'es'), { maximumFractionDigits: 0 });\n    const data = {}, lines = {};\n    let map = null, me = null, started = false;\n    const COL = { on: '#6cf2e9', off: '#f7a5ea' };\n    const idxAt = (pts, km) => { let lo = 0, hi = pts.length - 1; while (lo < hi) { const m = (lo + hi) >> 1; if (pts[m][3] < km) lo = m + 1; else hi = m; } return lo; };\n    const dot = (cls, txt) => L.divIcon({ className: '', html: '<div class=\"bgg-pin ' + cls + '\">' + txt + '</div>', iconSize: [34, 34], iconAnchor: [17, 17] });\n    const style = () => {\n      const r = root.dataset.route;\n      Object.keys(lines).forEach((k) => {\n        lines[k].setStyle(k === r ? { color: COL.on, weight: 4.5, opacity: 1, dashArray: null } : { color: COL.off, weight: 3, opacity: .55, dashArray: '6 7' });\n        if (k === r) lines[k].bringToFront();\n      });\n    };\n    const total = () => {\n      const d = data[root.dataset.route];\n      if (!d) return;\n      const vis = (i) => { const el = root.querySelectorAll('.bgg__stats dd')[i]; const sp = el && el.querySelector('[data-r=\"' + root.dataset.route + '\"]'); return sp ? sp.textContent : ''; };\n      rk.textContent = vis(0) || nf.format(d.km) + ' km';\n      re.textContent = vis(1) || '+' + nf0.format(d.ele_gain) + ' m';\n    };\n    const profile = () => {\n      const d = data[root.dataset.route];\n      if (!d || !svg) return;\n      const pts = d.pts, W = 1000, H = 160, maxKm = pts[pts.length - 1][3];\n      let lo = Infinity, hi = -Infinity;\n      Object.values(data).forEach((x) => x.pts.forEach((p) => { if (p[2] < lo) lo = p[2]; if (p[2] > hi) hi = p[2]; }));\n      lo = Math.max(0, lo - 20); hi += 40;\n      const X = (km) => (km / maxKm) * W, Y = (e) => H - ((e - lo) / (hi - lo)) * (H - 8);\n      let path = '';\n      const step = Math.max(1, Math.floor(pts.length / 700));\n      for (let i = 0; i < pts.length; i += step) path += (path ? 'L' : 'M') + X(pts[i][3]).toFixed(1) + ' ' + Y(pts[i][2]).toFixed(1);\n      path += 'L' + W + ' ' + Y(pts[pts.length - 1][2]).toFixed(1);\n      svg.setAttribute('viewBox', '0 0 ' + W + ' ' + H);\n      svg.setAttribute('preserveAspectRatio', 'none');\n      svg.innerHTML = '<path d=\"' + path + 'L' + W + ' ' + H + 'L0 ' + H + 'Z\" fill=\"rgba(108,242,233,.14)\"/><path d=\"' + path + '\" fill=\"none\" stroke=\"#6cf2e9\" stroke-width=\"2\" vector-effect=\"non-scaling-stroke\"/>' +\n        '<line data-cur x1=\"0\" x2=\"0\" y1=\"0\" y2=\"' + H + '\" stroke=\"#f7a5ea\" stroke-width=\"1.5\" vector-effect=\"non-scaling-stroke\" opacity=\"0\"/>';\n      const cur = svg.querySelector('[data-cur]');\n      const at = (cx) => {\n        const r = svg.getBoundingClientRect(), f = Math.min(1, Math.max(0, (cx - r.left) / r.width)), p = pts[idxAt(pts, f * maxKm)];\n        cur.setAttribute('x1', X(p[3])); cur.setAttribute('x2', X(p[3])); cur.setAttribute('opacity', 1);\n        rk.textContent = 'km ' + nf.format(p[3]); re.textContent = nf0.format(p[2]) + ' m';\n        if (me) { me.setLatLng([p[0], p[1]]); me.setOpacity(1); }\n      };\n      svg.onpointermove = svg.onpointerdown = (e) => at(e.clientX);\n      svg.onpointerleave = () => { cur.setAttribute('opacity', 0); if (me) me.setOpacity(0); total(); };\n      total();\n    };\n    const draw = () => {\n      if (!window.L || !mapEl) return;\n      map = L.map(mapEl, { scrollWheelZoom: false, zoomControl: true, attributionControl: true, tap: false });\n      L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', { maxZoom: 18,\n        attribution: '&copy; <a href=\"https://www.openstreetmap.org/copyright\">OpenStreetMap</a>' }).addTo(map);\n      let bounds = null;\n      ['short', 'long'].forEach((k) => {\n        if (!data[k]) return;\n        const ll = data[k].pts.map((p) => [p[0], p[1]]);\n        lines[k] = L.polyline(ll, { interactive: false }).addTo(map);\n        bounds = bounds ? bounds.extend(lines[k].getBounds()) : lines[k].getBounds();\n      });\n      const any = data.long || data.short;\n      const a = any.pts[0], z = any.pts[any.pts.length - 1];\n      L.marker([a[0], a[1]], { icon: dot('bgg-pin--start', 'BCN'), title: 'Barcelona \u00B7 07:30' }).addTo(map);\n      L.marker([z[0], z[1]], { icon: dot('bgg-pin--end', 'HC'), title: 'Hors Cat\u00E9gorie \u00B7 Girona' }).addTo(map);\n      me = L.marker([a[0], a[1]], { icon: L.divIcon({ className: '', html: '<div class=\"bgg-pin bgg-pin--me\"></div>', iconSize: [16, 16], iconAnchor: [8, 8] }), interactive: false, opacity: 0 }).addTo(map);\n      if (bounds) map.fitBounds(bounds, { padding: [24, 24] });\n      style();\n    };\n    const load = () => {\n      if (started) return;\n      started = true;\n      Promise.all(['long', 'short'].map((k) => urls[k] ? fetch(urls[k]).then((r) => r.json()).then((d) => { data[k] = d; }).catch(() => {}) : null))\n        .then(() => {\n          const go = () => { draw(); profile(); };\n          if (window.L) go(); else window.addEventListener('load', go, { once: true });\n        });\n    };\n    if ('IntersectionObserver' in window) {\n      const io = new IntersectionObserver((es) => { if (es.some((e) => e.isIntersecting)) { io.disconnect(); load(); } }, { rootMargin: '400px 0px' });\n      io.observe(box);\n    } else load();\n    routeHooks.push(() => { if (map) style(); profile(); });\n  }\n\n  // Long / short route toggle: every [data-route-btn] drives root[data-route]\n  const routeBtns = root.querySelectorAll('[data-route-btn]');\n  routeBtns.forEach((b) => b.addEventListener('click', () => {\n    const r = b.dataset.routeBtn;\n    if (root.dataset.route === r) return;\n    root.dataset.route = r;\n    routeBtns.forEach((x) => x.setAttribute('aria-pressed', String(x.dataset.routeBtn === r)));\n    routeHooks.forEach((fn) => fn());\n  }));\n\n  // Sticky bar: after the hero, hidden while the sign-up block is on screen\n  const sticky = root.querySelector('[data-sticky]');\n  const hero = root.querySelector('.bgg__hero');\n  const buy = root.querySelector('#inscripcion');\n  if (sticky && hero && buy && 'IntersectionObserver' in window) {\n    let pastHero = false, onBuy = false;\n    const set = () => sticky.classList.toggle('is-on', pastHero && !onBuy);\n    new IntersectionObserver(([e]) => { pastHero = !e.isIntersecting && e.boundingClientRect.top < 0; set(); }).observe(hero);\n    new IntersectionObserver(([e]) => { onBuy = e.isIntersecting; set(); }).observe(buy);\n  }\n})();\n"],
  "mappings": "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",
  "names": ["box"]
}
