{
  "version": 3,
  "sources": ["/cdn/shop/t/12/assets/fs-lp-gk.js"],
  "sourcesContent": ["/* FS | Trade Landing Pages \u2014 GESKE for Business (fs-lp-gk-*) shared behaviour. r2 (16 Sep 2026: margin is taken on ex-VAT sales)\n   Anchor nav, sticky talk bar, shortlist (rail, tray), portfolio explorer with\n   quick view and compare, SmartAppGuided stepper, retail opportunity\n   calculator, and the three conversions (enquiry form, call request, trade\n   pack) which all POST to the hgi-business enquiry endpoint. */\n(function () {\n  'use strict';\n  if (window.__fsLpGkInit) return;\n  window.__fsLpGkInit = true;\n\n  var doc = document;\n  var reduce = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n  var desktopMq = window.matchMedia('(min-width: 900px)');\n\n  /* ---------- Utilities ---------- */\n  function $(sel, root) { return (root || doc).querySelector(sel); }\n  function $$(sel, root) { return Array.prototype.slice.call((root || doc).querySelectorAll(sel)); }\n  function esc(s) { return String(s == null ? '' : s).replace(/[&<>\"']/g, function (c) { return { '&': '&amp;', '<': '&lt;', '>': '&gt;', '\"': '&quot;', \"'\": '&#39;' }[c]; }); }\n  function gbp(n, dp) { var v = Number(n) || 0; dp = dp == null ? 0 : dp; return '\u00A3' + v.toLocaleString('en-GB', { minimumFractionDigits: dp, maximumFractionDigits: dp }); }\n  function plural(n, one, many) { return n + ' ' + (n === 1 ? one : many); }\n  function readJson(el) { if (!el) return null; try { return JSON.parse(el.textContent); } catch (e) { return null; } }\n  function track(event, payload) { window.dataLayer = window.dataLayer || []; window.dataLayer.push(Object.assign({ event: event, ts: Date.now() }, payload || {})); }\n  function getUtm(name) { try { return new URLSearchParams(window.location.search).get(name) || ''; } catch (e) { return ''; } }\n\n  var ICON = {\n    close: '<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" aria-hidden=\"true\"><path d=\"M4 4l10 10M14 4L4 14\"/></svg>',\n    tick: '<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M3 8.5l3.2 3L13 4.5\"/></svg>',\n    plus: '<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" aria-hidden=\"true\"><path d=\"M8 3v10M3 8h10\"/></svg>',\n    smartapp: '<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\"><rect width=\"16\" height=\"16\" rx=\"4\" fill=\"#141921\"/><path d=\"M8 3L4 6V10L8 13L12 10V6L8 3Z\" stroke=\"#fff\" stroke-width=\"1.2\"/><circle cx=\"8\" cy=\"8\" r=\"2\" fill=\"#fff\"/></svg>'\n  };\n  function smartBadge(tone) { return '<span class=\"gsk-smartapp' + (tone === 'floating' ? ' gsk-smartapp--floating' : '') + '\" title=\"SmartAppGuided. Works with the GESKE App\">' + ICON.smartapp + '<span>SmartAppGuided</span></span>'; }\n\n  /* Screen-reader announcements */\n  var liveEl = null;\n  function announce(msg) {\n    if (!liveEl) { liveEl = doc.createElement('div'); liveEl.className = 'gfb-sr'; liveEl.setAttribute('aria-live', 'polite'); liveEl.setAttribute('role', 'status'); doc.body.appendChild(liveEl); }\n    liveEl.textContent = ''; setTimeout(function () { liveEl.textContent = msg; }, 50);\n  }\n\n  /* Scrolling with the pinned nav offset */\n  function navOffset() { var n = $('.gfb-nav'); return (n ? n.offsetHeight : 0) + 8; }\n  function scrollToId(id, behaviour) {\n    var el = doc.getElementById(id); if (!el) return;\n    var top = el.getBoundingClientRect().top + window.pageYOffset - navOffset();\n    window.scrollTo({ top: Math.max(0, top), behavior: behaviour || (reduce ? 'auto' : 'smooth') });\n  }\n  doc.addEventListener('click', function (e) {\n    var a = e.target.closest('a[href^=\"#\"]'); if (!a || !a.closest('.gfb')) return;\n    var id = a.getAttribute('href').slice(1); if (!id || !doc.getElementById(id)) return;\n    e.preventDefault(); scrollToId(id);\n    if (history.replaceState) history.replaceState(null, '', '#' + id);\n  });\n  if (location.hash) { var hid = location.hash.slice(1); setTimeout(function () { scrollToId(hid, 'auto'); }, 350); }\n\n  /* Fade-up reveal */\n  var reveals = $$('.gfb-reveal');\n  if (reveals.length && 'IntersectionObserver' in window && !reduce) {\n    var ro = new IntersectionObserver(function (es) { es.forEach(function (en) { if (en.isIntersecting) { en.target.classList.add('is-in'); ro.unobserve(en.target); } }); }, { rootMargin: '0px 0px -10% 0px' });\n    reveals.forEach(function (el) { ro.observe(el); });\n  } else { reveals.forEach(function (el) { el.classList.add('is-in'); }); }\n\n  /* ---------- Data + store ---------- */\n  var DATA = readJson($('[data-gfb-data]')) || { devices: [], techs: [], goals: [], treatments: [], sgIcons: {}, urls: {} };\n  var byId = {}; DATA.devices.forEach(function (d) { byId[d.id] = d; });\n  var techById = {}; (DATA.techs || []).forEach(function (t) { techById[t.id] = t; });\n  function tech(id) { return techById[id] || { id: id, label: id, full: id, icon: '' }; }\n  function device(id) { return byId[id]; }\n\n  var SKEY = 'gfb-session';\n  var state = { shortlist: [], compare: [], calcSaved: null, mode: 'goal', goals: [], treatment: null, quickView: null, openDrawer: null, heroOut: false };\n  try { var saved = JSON.parse(sessionStorage.getItem(SKEY) || '{}'); state.shortlist = (saved.shortlist || []).filter(device); state.calcSaved = saved.calcSaved || null; } catch (e) {}\n  function persist() { try { sessionStorage.setItem(SKEY, JSON.stringify({ shortlist: state.shortlist, calcSaved: state.calcSaved })); } catch (e) {} }\n  var listeners = [];\n  function onChange(fn) { listeners.push(fn); }\n  function emit(what) { listeners.forEach(function (fn) { fn(what); }); }\n\n  function toggleShortlist(id) {\n    var on = state.shortlist.indexOf(id) !== -1;\n    if (on) state.shortlist = state.shortlist.filter(function (x) { return x !== id; });\n    else { state.shortlist = state.shortlist.concat(id); track('device_shortlisted', { device: id }); }\n    persist(); emit('shortlist'); announce(on ? 'Removed from shortlist' : 'Added to shortlist');\n  }\n  function toggleCompare(id) {\n    var on = state.compare.indexOf(id) !== -1;\n    if (on) state.compare = state.compare.filter(function (x) { return x !== id; });\n    else if (state.compare.length < 3) state.compare = state.compare.concat(id);\n    else return;\n    emit('compare');\n  }\n\n  /* ---------- Drawers ---------- */\n  var drawers = {};\n  $$('[data-gfb-drawer]').forEach(function (el) { drawers[el.getAttribute('data-gfb-drawer')] = el; });\n  var prevOverflow = '';\n  function openDrawer(name) {\n    var el = drawers[name]; if (!el) return;\n    Object.keys(drawers).forEach(function (k) { if (k !== name) closeDrawer(k, true); });\n    el.classList.add('is-open'); el.setAttribute('aria-hidden', 'false');\n    prevOverflow = doc.body.style.overflow; doc.body.style.overflow = 'hidden';\n    state.openDrawer = name; emit('drawer');\n    setTimeout(function () { var f = $('.gfb-drawer__panel button, .gfb-drawer__panel [href], .gfb-drawer__panel input, .gfb-drawer__panel select, .gfb-drawer__panel textarea', el); if (f) f.focus(); }, 80);\n  }\n  function closeDrawer(name, silent) {\n    var el = drawers[name]; if (!el || !el.classList.contains('is-open')) return;\n    el.classList.remove('is-open'); el.setAttribute('aria-hidden', 'true');\n    if (!silent) { doc.body.style.overflow = prevOverflow; state.openDrawer = null; emit('drawer'); }\n  }\n  Object.keys(drawers).forEach(function (name) {\n    var el = drawers[name];\n    $$('[data-gfb-close]', el).forEach(function (b) { b.addEventListener('click', function () { closeDrawer(name); }); });\n  });\n  doc.addEventListener('keydown', function (e) { if (e.key === 'Escape' && state.openDrawer) closeDrawer(state.openDrawer); });\n  $$('[data-gfb-open-tray]').forEach(function (b) { b.addEventListener('click', function () { openDrawer('tray'); }); });\n  $$('[data-gfb-open-call]').forEach(function (b) { b.addEventListener('click', function (e) { e.preventDefault(); openDrawer('call'); }); });\n\n  /* ---------- Anchor nav ---------- */\n  var navLinks = $$('.gfb-nav__link');\n  if (navLinks.length) {\n    var raf = 0;\n    var syncNav = function () {\n      raf = 0;\n      var off = navOffset() + 40, cur = navLinks[0].getAttribute('href').slice(1);\n      navLinks.forEach(function (a) { var id = a.getAttribute('href').slice(1), el = doc.getElementById(id); if (el && el.getBoundingClientRect().top <= off) cur = id; });\n      navLinks.forEach(function (a) { var on = a.getAttribute('href').slice(1) === cur; a.classList.toggle('is-active', on); if (on) a.setAttribute('aria-current', 'location'); else a.removeAttribute('aria-current'); });\n    };\n    window.addEventListener('scroll', function () { if (!raf) raf = requestAnimationFrame(syncNav); }, { passive: true });\n    syncNav();\n  }\n\n  /* ---------- Sticky talk bar + shortlist rail/tray ---------- */\n  var sticky = $('[data-gfb-sticky]');\n  var hero = $('[data-gfb=\"hero\"]');\n  function syncSticky() {\n    if (!sticky) return;\n    sticky.classList.toggle('is-desktop-hidden', desktopMq.matches && !state.heroOut);\n    sticky.classList.toggle('is-hidden', !!state.openDrawer || sticky.dataset.done === '1');\n  }\n  if (hero && 'IntersectionObserver' in window) {\n    new IntersectionObserver(function (es) { state.heroOut = !es[0].isIntersecting; syncSticky(); }, { threshold: 0.05 }).observe(hero);\n  } else { state.heroOut = true; }\n  desktopMq.addEventListener ? desktopMq.addEventListener('change', syncSticky) : desktopMq.addListener(syncSticky);\n  onChange(function (w) { if (w === 'drawer') syncSticky(); });\n  syncSticky();\n\n  function renderShortlist() {\n    var items = state.shortlist.map(device).filter(Boolean), n = items.length;\n    $$('[data-gfb-count-badge]').forEach(function (el) { el.textContent = n; el.classList.toggle('is-zero', !n); });\n    $$('[data-gfb-open-tray]').forEach(function (b) { b.setAttribute('aria-label', 'Open shortlist, ' + plural(n, 'device', 'devices')); });\n    var thumbs = $('[data-gfb-rail-thumbs]');\n    if (thumbs) thumbs.innerHTML = items.slice(0, 3).map(function (d) { return '<span class=\"gfb-rail__thumb\">' + (d.img ? '<img src=\"' + esc(d.img) + '\" alt=\"\" loading=\"lazy\">' : 'No image') + '</span>'; }).join('');\n    var body = $('[data-gfb-tray-body]'), foot = $('[data-gfb-tray-foot]');\n    if (body) {\n      if (!n) body.innerHTML = '<div class=\"gfb-empty\"><p>Your shortlist is empty. Pick a client goal to start.</p><button type=\"button\" class=\"gsk-pill gsk-pill--outline gsk-pill--md\" data-gfb-go=\"explorer\">Go to the portfolio explorer</button></div>';\n      else body.innerHTML = items.map(function (d) { return '<div class=\"gfb-shortitem\"><span class=\"gfb-shortitem__img\">' + (d.img ? '<img src=\"' + esc(d.img) + '\" alt=\"\" loading=\"lazy\">' : 'Image to supply') + '</span><div><p class=\"gfb-shortitem__name\">' + esc(d.name) + '</p><p class=\"gfb-shortitem__meta\">' + esc(d.session + ' min session. ' + d.areas.join(', ') + '. RRP ' + gbp(d.price, 2)) + '</p></div><button type=\"button\" class=\"gfb-iconbtn\" aria-label=\"Remove ' + esc(d.name) + ' from shortlist\" data-gfb-unshortlist=\"' + esc(d.id) + '\">' + ICON.close + '</button></div>'; }).join('');\n    }\n    if (foot) {\n      if (!n) { foot.hidden = true; }\n      else { var avg = items.reduce(function (a, d) { return a + (Number(d.price) || 0); }, 0) / n; foot.hidden = false; foot.innerHTML = '<p class=\"gfb-small\">Average device value ' + gbp(avg, 2) + '. Your shortlist feeds the calculator and is attached to your enquiry.</p><button type=\"button\" class=\"gsk-pill gsk-pill--dark gsk-pill--md gsk-pill--full\" data-gfb-go=\"talk\">Talk to us about these</button>'; }\n    }\n  }\n  doc.addEventListener('click', function (e) {\n    var un = e.target.closest('[data-gfb-unshortlist]'); if (un) { toggleShortlist(un.getAttribute('data-gfb-unshortlist')); return; }\n    var go = e.target.closest('[data-gfb-go]'); if (go) { var t = go.getAttribute('data-gfb-go'); if (state.openDrawer) closeDrawer(state.openDrawer); scrollToId(t); return; }\n  });\n  onChange(function (w) { if (w === 'shortlist') renderShortlist(); });\n  renderShortlist();\n\n  /* ---------- Portfolio explorer ---------- */\n  var explorer = $('[data-gfb=\"portfolio\"]');\n  if (explorer && DATA.devices.length) {\n    var listEl = $('[data-gfb-list]', explorer), listNav = $('[data-gfb-listnav]', explorer), countEl = $('[data-gfb-count]', explorer), clearBtn = $('[data-gfb-clear]', explorer), cmpCount = $('[data-gfb-cmp-count]', explorer), cmpOpen = $('[data-gfb-open-compare]', explorer), hint = $('[data-gfb-treatment-hint]', explorer);\n    var showAll = false, total = DATA.devices.length;\n    function filtered() {\n      if (state.mode === 'goal') { var list = DATA.devices; if (state.goals.length) list = list.filter(function (d) { return state.goals.every(function (g) { return d.goals.indexOf(g) !== -1; }); }); return list.map(function (d) { return { d: d, moment: null }; }); }\n      var tr = DATA.treatments.filter(function (t) { return t.id === state.treatment; })[0];\n      if (!tr) return DATA.devices.map(function (d) { return { d: d, moment: null }; });\n      return tr.picks.map(function (p) { return { d: device(p[0]), moment: p[1] }; }).filter(function (x) { return x.d; });\n    }\n    function techIcons(d) { return '<span class=\"gfb-dev__techs\" aria-label=\"Technologies: ' + esc(d.techs.map(function (t) { return tech(t).label; }).join(', ')) + '\">' + d.techs.map(function (t) { var T = tech(t); return '<span class=\"gfb-dev__tech\" title=\"' + esc(T.full) + '\">' + (T.icon ? '<img src=\"' + esc(T.icon) + '\" alt=\"' + esc(T.full) + '\" loading=\"lazy\">' : ICON.smartapp) + '</span>'; }).join('') + '</span>'; }\n    function card(x) {\n      var d = x.d, cmp = state.compare.indexOf(d.id) !== -1, sl = state.shortlist.indexOf(d.id) !== -1, full = !cmp && state.compare.length >= 3;\n      return '<article class=\"gfb-dev' + (cmp ? ' is-compared' : '') + '\" aria-label=\"' + esc(d.name) + '\">' +\n        '<button type=\"button\" class=\"gfb-dev__media\" data-gfb-qv=\"' + esc(d.id) + '\" aria-label=\"Quick view: ' + esc(d.name) + '\"><span class=\"gfb-dev__badge\">' + smartBadge('floating') + '</span>' +\n        (d.img ? '<img class=\"gfb-dev__img\" src=\"' + esc(d.img) + '\" alt=\"' + esc(d.name) + ' in Gray\" loading=\"lazy\">' : '<div class=\"gfb-dev__ph\"><div class=\"gfb-ph\" role=\"img\" aria-label=\"Image to supply\"><div><span class=\"gfb-ph__k\">Image to supply</span>' + esc(d.name) + '</div></div></div>') + '</button>' +\n        (x.moment ? '<p class=\"gfb-dev__moment\">' + esc(x.moment) + '</p>' : '') +\n        '<div class=\"gfb-dev__body\"><button type=\"button\" class=\"gfb-dev__title\" data-gfb-qv=\"' + esc(d.id) + '\">' + esc(d.name) + '</button><div class=\"gfb-dev__meta\"><span>' + esc(d.session) + ' min session</span><span>' + esc(d.areas.join(', ')) + '</span></div></div>' +\n        '<div class=\"gfb-dev__foot\"><button type=\"button\" class=\"gfb-cmp' + (cmp ? ' is-on' : '') + '\" aria-pressed=\"' + cmp + '\"' + (full ? ' disabled title=\"Compare holds three devices. Remove one to add another.\"' : '') + ' data-gfb-cmp=\"' + esc(d.id) + '\">' + (cmp ? ICON.tick : ICON.plus) + 'Compare</button>' +\n        '<button type=\"button\" class=\"gfb-iconbtn' + (sl ? ' gfb-iconbtn--dark' : '') + '\" aria-pressed=\"' + sl + '\" aria-label=\"' + (sl ? 'Remove ' : 'Add ') + esc(d.name) + (sl ? ' from shortlist' : ' to shortlist') + '\" data-gfb-sl=\"' + esc(d.id) + '\">' + (sl ? ICON.tick : ICON.plus) + '</button></div></article>';\n    }\n    var firstRender = true;\n    function renderList() {\n      var list = filtered(), anyFilter = state.goals.length || state.treatment;\n      if (countEl) countEl.textContent = 'Showing ' + list.length + ' of ' + total + ' devices';\n      if (clearBtn) clearBtn.hidden = !anyFilter;\n      if (hint) hint.hidden = !(state.mode === 'treatment' && !state.treatment);\n      if (cmpCount) { cmpCount.hidden = !state.compare.length; cmpCount.textContent = state.compare.length + ' of 3 selected to compare'; }\n      if (cmpOpen) { cmpOpen.hidden = state.compare.length < 2; cmpOpen.textContent = 'Compare ' + state.compare.length + ' devices'; }\n      if (!list.length) {\n        var names = state.goals.map(function (g) { var G = DATA.goals.filter(function (x) { return x.id === g; })[0]; return G ? G.label.toLowerCase() : g; }).join(' and ');\n        listEl.innerHTML = '<div class=\"gfb-empty gfb-card gfb-card--cream\"><p>No single device supports ' + esc(names) + ' together. Remove a goal, or clear the filters to see the whole range.</p><button type=\"button\" class=\"gsk-pill gsk-pill--outline gsk-pill--md\" data-gfb-clear-2>Clear filters</button></div>';\n        listNav.hidden = true;\n      } else {\n        listEl.innerHTML = showAll ? '<div class=\"gfb-grid\">' + list.map(card).join('') + '</div>' : '<div class=\"gfb-scroller gfb-hscroll\" role=\"region\" aria-label=\"Devices, scroll sideways for more\" tabindex=\"0\">' + list.map(card).join('') + '</div>';\n        listNav.hidden = false;\n        var nudges = $('[data-gfb-nudges]', listNav); if (nudges) nudges.hidden = showAll || list.length <= 3;\n        var all = $('[data-gfb-showall]', listNav); if (all) all.textContent = showAll ? 'Show fewer' : 'View all ' + plural(list.length, 'device', 'devices');\n      }\n      if (!firstRender) announce('Showing ' + list.length + ' of ' + total + ' devices');\n      firstRender = false;\n    }\n    $$('[data-gfb-mode]', explorer).forEach(function (b) { b.addEventListener('click', function () {\n      state.mode = b.getAttribute('data-gfb-mode');\n      $$('[data-gfb-mode]', explorer).forEach(function (x) { var on = x === b; x.classList.toggle('is-on', on); x.setAttribute('aria-selected', on); });\n      $$('[data-gfb-filters]', explorer).forEach(function (f) { f.hidden = f.getAttribute('data-gfb-filters') !== state.mode; });\n      track('explorer_mode_switched', { mode: state.mode }); renderList();\n    }); });\n    $$('[data-gfb-goal]', explorer).forEach(function (c) { c.addEventListener('click', function () {\n      var g = c.getAttribute('data-gfb-goal'), on = state.goals.indexOf(g) !== -1;\n      state.goals = on ? state.goals.filter(function (x) { return x !== g; }) : state.goals.concat(g);\n      c.classList.toggle('is-on', !on); c.setAttribute('aria-pressed', !on); track('filter_applied', { type: 'goal', value: g }); renderList();\n    }); });\n    $$('[data-gfb-treatment]', explorer).forEach(function (c) { c.addEventListener('click', function () {\n      var t = c.getAttribute('data-gfb-treatment'); state.treatment = state.treatment === t ? null : t;\n      $$('[data-gfb-treatment]', explorer).forEach(function (x) { var on = x.getAttribute('data-gfb-treatment') === state.treatment; x.classList.toggle('is-on', on); x.setAttribute('aria-pressed', on); });\n      track('filter_applied', { type: 'treatment', value: t }); renderList();\n    }); });\n    function clearFilters() { state.goals = []; state.treatment = null; $$('[data-gfb-goal],[data-gfb-treatment]', explorer).forEach(function (x) { x.classList.remove('is-on'); x.setAttribute('aria-pressed', 'false'); }); renderList(); announce('Filters cleared. Showing ' + total + ' of ' + total + ' devices'); }\n    if (clearBtn) clearBtn.addEventListener('click', clearFilters);\n    explorer.addEventListener('click', function (e) {\n      if (e.target.closest('[data-gfb-clear-2]')) { clearFilters(); return; }\n      var qv = e.target.closest('[data-gfb-qv]'); if (qv) { openQuickView(qv.getAttribute('data-gfb-qv')); return; }\n      var cmp = e.target.closest('[data-gfb-cmp]'); if (cmp) { toggleCompare(cmp.getAttribute('data-gfb-cmp')); return; }\n      var sl = e.target.closest('[data-gfb-sl]'); if (sl) { toggleShortlist(sl.getAttribute('data-gfb-sl')); return; }\n      var sa = e.target.closest('[data-gfb-showall]'); if (sa) { showAll = !showAll; renderList(); return; }\n      var nd = e.target.closest('[data-gfb-nudge]'); if (nd) { var sc = $('.gfb-scroller', listEl); if (sc) sc.scrollBy({ left: Number(nd.getAttribute('data-gfb-nudge')) * sc.clientWidth * 0.9, behavior: reduce ? 'auto' : 'smooth' }); return; }\n    });\n    if (cmpOpen) cmpOpen.addEventListener('click', function () { openCompare(); });\n    onChange(function (w) { if (w === 'shortlist' || w === 'compare') { renderList(); if (state.quickView) renderQuickView(); if (state.openDrawer === 'compare') renderCompare(); } });\n\n    /* Quick view */\n    var qvBody = $('[data-gfb-qv-body]'), qvFoot = $('[data-gfb-qv-foot]');\n    function openQuickView(id) { state.quickView = id; renderQuickView(); openDrawer('quickview'); track('device_quick_view_opened', { device: id }); }\n    function renderQuickView() {\n      var d = device(state.quickView); if (!d || !qvBody) return;\n      var sl = state.shortlist.indexOf(d.id) !== -1, cmp = state.compare.indexOf(d.id) !== -1;\n      qvBody.innerHTML = '<div class=\"gfb-qv__media\">' + (d.imgLg || d.img ? '<img src=\"' + esc(d.imgLg || d.img) + '\" alt=\"' + esc(d.name) + ' in Gray\">' : '<div class=\"gfb-ph\" role=\"img\" aria-label=\"Image to supply\"><div><span class=\"gfb-ph__k\">Image to supply</span>' + esc(d.name) + '</div></div>') + '</div>' +\n        '<div class=\"gfb-row\" style=\"margin-bottom:10px\">' + smartBadge() + '<span class=\"gfb-small\">' + esc(d.session + ' min session. ' + d.areas.join(', ') + '. Gray finish.') + '</span></div>' +\n        '<p class=\"gfb-qv__name\">' + esc(d.name) + '</p>' +\n        '<div class=\"gfb-row\" style=\"margin-bottom:20px\">' + techIcons(d) + '<span class=\"gfb-small\">' + esc(d.techs.map(function (t) { return tech(t).label; }).join(', ')) + '</span></div>' +\n        '<ul class=\"gfb-qv__tech\"><li><b>Technology</b><span>' + esc(d.qv[0]) + '</span></li><li><b>Mechanism</b><span>' + esc(d.qv[1]) + '</span></li><li><b>Visible outcome</b><span>' + esc(d.qv[2]) + '</span></li></ul>' +\n        (d.sg.length ? '<span class=\"gfb-k\">Supported Skin Goals</span><div class=\"gfb-sg\">' + d.sg.map(function (g) { var ic = DATA.sgIcons[g]; return '<span class=\"gfb-sg__item\"><span class=\"i\">' + (ic ? '<img src=\"' + esc(ic) + '\" alt=\"\" loading=\"lazy\">' : '') + '</span>' + esc(g) + '</span>'; }).join('') + '</div>' : '') +\n        '<div class=\"gfb-row\"><button type=\"button\" class=\"gfb-cmp' + (cmp ? ' is-on' : '') + '\" aria-pressed=\"' + cmp + '\"' + (!cmp && state.compare.length >= 3 ? ' disabled' : '') + ' data-gfb-cmp=\"' + esc(d.id) + '\">' + (cmp ? ICON.tick : ICON.plus) + (cmp ? 'In comparison' : 'Add to compare') + '</button></div>';\n      if (qvFoot) qvFoot.innerHTML = '<button type=\"button\" class=\"gsk-pill gsk-pill--dark gsk-pill--md gsk-pill--full\" data-gfb-sl=\"' + esc(d.id) + '\">' + (sl ? 'Remove from my shortlist' : 'Add to my shortlist') + '</button>' + (DATA.urls.geske ? '<a class=\"gsk-pill gsk-pill--outline gsk-pill--md gsk-pill--full\" href=\"' + esc(DATA.urls.geske) + '\" target=\"_blank\" rel=\"noopener\">See on geske.co.uk</a>' : '');\n    }\n    var qvDrawer = drawers.quickview;\n    if (qvDrawer) qvDrawer.addEventListener('click', function (e) {\n      var cmp = e.target.closest('[data-gfb-cmp]'); if (cmp) { toggleCompare(cmp.getAttribute('data-gfb-cmp')); return; }\n      var sl = e.target.closest('[data-gfb-sl]'); if (sl) { toggleShortlist(sl.getAttribute('data-gfb-sl')); return; }\n    });\n\n    /* Compare */\n    var cmpBody = $('[data-gfb-cmp-body]'), cmpFoot = $('[data-gfb-cmp-foot]');\n    function openCompare() { renderCompare(); openDrawer('compare'); track('compare_opened', { devices: state.compare }); }\n    function renderCompare() {\n      if (!cmpBody) return;\n      var items = state.compare.map(device).filter(Boolean);\n      if (items.length < 2) { cmpBody.innerHTML = '<div class=\"gfb-empty\"><p>Choose two or three devices with the Compare toggle to see them side by side.</p></div>'; if (cmpFoot) cmpFoot.hidden = true; return; }\n      var rows = [\n        ['Technologies', function (d) { return techIcons(d) + '<span class=\"gfb-compare__techlist\">' + esc(d.techs.map(function (t) { return tech(t).label; }).join(', ')) + '</span>'; }],\n        ['Session time', function (d) { return '<strong>' + esc(d.session) + ' min</strong>'; }],\n        ['Area', function (d) { return esc(d.areas.join(', ')); }],\n        ['Skin Goals', function (d) { return esc(d.sg.join(', ')); }],\n        ['App guidance', function () { return '<strong>SmartAppGuided\u2122</strong>: AI-Powered Skin Scan, personalised 7-Day Routine, video-guided sessions, progress tracking.'; }]\n      ];\n      cmpBody.innerHTML = '<div class=\"gfb-compare\"><table><thead><tr><th scope=\"col\"><span class=\"gfb-sr\">Attribute</span></th>' + items.map(function (d) { return '<td><div class=\"gfb-compare__dev\"><span class=\"gfb-compare__img\">' + (d.img ? '<img src=\"' + esc(d.img) + '\" alt=\"\">' : '') + '</span><span class=\"gfb-compare__name\">' + esc(d.name) + '</span><button type=\"button\" class=\"gfb-textlink gfb-textlink--sm\" data-gfb-cmp=\"' + esc(d.id) + '\">Remove</button></div></td>'; }).join('') + '</tr></thead><tbody>' +\n        rows.map(function (r) { return '<tr><th scope=\"row\">' + r[0] + '</th>' + items.map(function (d) { return '<td>' + r[1](d) + '</td>'; }).join('') + '</tr>'; }).join('') + '</tbody></table></div>';\n      if (cmpFoot) { cmpFoot.hidden = false; cmpFoot.innerHTML = '<div class=\"gfb-row gfb-row--between\"><button type=\"button\" class=\"gsk-pill gsk-pill--outline gsk-pill--md\" data-gfb-shortlist-all>Shortlist all ' + items.length + '</button><button type=\"button\" class=\"gsk-pill gsk-pill--dark gsk-pill--md\" data-gfb-go=\"talk\">Talk to us about these</button></div>'; }\n    }\n    var cmpDrawer = drawers.compare;\n    if (cmpDrawer) cmpDrawer.addEventListener('click', function (e) {\n      var rm = e.target.closest('[data-gfb-cmp]'); if (rm) { toggleCompare(rm.getAttribute('data-gfb-cmp')); return; }\n      if (e.target.closest('[data-gfb-shortlist-all]')) { var added = false; state.compare.forEach(function (id) { if (state.shortlist.indexOf(id) === -1) { state.shortlist = state.shortlist.concat(id); track('device_shortlisted', { device: id }); added = true; } }); if (added) { persist(); emit('shortlist'); } announce('Added compared devices to shortlist'); }\n    });\n    renderList();\n  }\n\n  /* ---------- App walkthrough ---------- */\n  var app = $('[data-gfb=\"app\"]');\n  if (app) {\n    var steps = readJson($('[data-gfb-steps]', app)) || [], STEP_MS = 6000, idx = 0, hover = false, playing = !reduce, inView = false, timer = 0;\n    var stepEls = $$('.gfb-step', app), titleEl = $('[data-gfb-step-title]', app), capEl = $('[data-gfb-step-caption]', app), statusEl = $('[data-gfb-status]', app), toggle = $('[data-gfb-toggle]', app), panel = $('[data-gfb-step-panel]', app);\n    function paused() { return hover || !playing || !inView || reduce; }\n    function renderStep(how) {\n      var st = steps[idx] || {};\n      stepEls.forEach(function (li, i) { li.classList.toggle('is-on', i === idx); li.classList.toggle('is-paused', paused()); var b = $('button', li); if (b) b.setAttribute('aria-selected', i === idx); var bar = $('.gfb-step__bar', li); if (bar && i === idx) { var nb = bar.cloneNode(true); bar.parentNode.replaceChild(nb, bar); } });\n      if (titleEl) titleEl.textContent = st.title || '';\n      if (capEl) capEl.textContent = st.caption || '';\n      if (panel) panel.setAttribute('aria-labelledby', 'gfb-tab-' + idx);\n      $$('[data-gfb-step-img]', app).forEach(function (im) { im.classList.toggle('is-on', Number(im.getAttribute('data-gfb-step-img')) === idx); });\n      $$('[data-gfb-step-ph]', app).forEach(function (ph) { ph.classList.toggle('is-on', Number(ph.getAttribute('data-gfb-step-ph')) === idx); });\n      $$('[data-gfb-step-label]', app).forEach(function (l) { l.hidden = Number(l.getAttribute('data-gfb-step-label')) !== idx; });\n      if (statusEl) statusEl.textContent = 'Step ' + (idx + 1) + ' of ' + steps.length + (reduce ? '. Auto-advance off (reduced motion).' : paused() ? '. Paused.' : '');\n      if (toggle) { toggle.setAttribute('aria-label', playing ? 'Pause auto-advance' : 'Play auto-advance'); toggle.setAttribute('aria-pressed', !playing); $$('[data-gfb-ic]', toggle).forEach(function (ic) { ic.hidden = ic.getAttribute('data-gfb-ic') !== (playing ? 'pause' : 'play'); }); }\n      track('app_step_viewed', { step: st.id, how: how || 'tap' });\n      schedule();\n    }\n    function schedule() { clearTimeout(timer); if (paused()) return; timer = setTimeout(function () { idx = (idx + 1) % steps.length; renderStep('auto'); }, STEP_MS); }\n    function setStep(i, how) { idx = (i + steps.length) % steps.length; renderStep(how); }\n    stepEls.forEach(function (li, i) { var b = $('button', li); if (b) b.addEventListener('click', function () { setStep(i); }); });\n    var prev = $('[data-gfb-prev]', app), next = $('[data-gfb-next]', app);\n    if (prev) prev.addEventListener('click', function () { setStep(idx - 1); });\n    if (next) next.addEventListener('click', function () { setStep(idx + 1); });\n    if (toggle) toggle.addEventListener('click', function () { playing = !playing; renderStep(); });\n    var appBox = $('.gfb-app', app) || app;\n    ['mouseenter', 'touchstart', 'focusin'].forEach(function (ev) { appBox.addEventListener(ev, function () { hover = true; renderStep(); }, { passive: true }); });\n    ['mouseleave', 'focusout'].forEach(function (ev) { appBox.addEventListener(ev, function () { hover = false; renderStep(); }); });\n    if ('IntersectionObserver' in window) new IntersectionObserver(function (es) { inView = es[0].isIntersecting; if (inView) renderStep(); else clearTimeout(timer); }, { threshold: 0.35 }).observe(appBox);\n    else inView = true;\n    if (steps.length) renderStep();\n  }\n\n  /* ---------- Calculator ---------- */\n  var calc = $('[data-gfb=\"calc\"]');\n  var calcApi = null;\n  if (calc) {\n    var WEEKS = 4.33;\n    var defaults = readJson($('[data-gfb-calc-defaults]', calc)) || { clients: 40, rec: 40, buy: 50, value: 79, margin: 40, tp: 55, vat: 20 };\n    /* Trade margin is a share of the ex-VAT retail price (HGI terms, 16 Sep 2026: 40%, so a \u00A375 device costs the clinic \u00A337.50 + VAT). Revenue is taken at the till price, so strip VAT before applying it. */\n    var VAT = (defaults.vat == null ? 20 : Number(defaults.vat)) / 100;\n    var v = {}, touched = {};\n    function slAvg() { var items = state.shortlist.map(device).filter(Boolean); if (!items.length) return null; return Math.round(items.reduce(function (a, d) { return a + (Number(d.price) || 0); }, 0) / items.length); }\n    function resetValues() { v = Object.assign({}, defaults); var a = slAvg(); if (a) v.value = a; touched = {}; }\n    resetValues();\n    var fields = $$('[data-gfb-calc]', calc);\n    function syncField(f) {\n      var k = f.getAttribute('data-gfb-calc'), range = $('input[type=\"range\"]', f), num = $('input[type=\"number\"]', f), val = v[k];\n      var min = Number(range.min), max = Number(range.max), pct = val == null ? 0 : Math.max(0, Math.min(100, ((val - min) / (max - min)) * 100));\n      range.value = val == null ? min : val; range.style.setProperty('--pct', pct + '%'); range.classList.toggle('is-unset', val == null);\n      range.setAttribute('aria-valuetext', val == null ? 'Not set' : (range.getAttribute('data-pre') || '') + val + (range.getAttribute('data-unit') || ''));\n      if (doc.activeElement !== num) num.value = val == null ? '' : val;\n    }\n    function outputs() {\n      var c = v.clients || 0, units = c * ((v.rec || 0) / 100) * ((v.buy || 0) / 100) * WEEKS, rev = units * (v.value || 0), trRev = c * WEEKS * (v.tp || 0);\n      var exVat = rev / (1 + VAT);\n      return { units: units, rev: rev, annual: rev * 12, exVat: exVat, margin: v.margin == null ? null : exVat * (v.margin / 100), trRev: trRev, treatments: v.tp ? rev / v.tp : null, share: trRev ? (rev / trRev) * 100 : null };\n    }\n    function snapshot(o) { return JSON.stringify({ v: v, rev: Math.round(o.rev), annual: Math.round(o.annual), margin: o.margin == null ? null : Math.round(o.margin), tr: o.treatments == null ? null : Math.round(o.treatments) }); }\n    var saveBtn = $('[data-gfb-save]', calc), savedMsg = $('[data-gfb-saved-msg]', calc);\n    function render() {\n      fields.forEach(syncField);\n      var o = outputs(), zero = !v.clients, maxBar = Math.max(o.trRev, o.rev, 1);\n      var set = function (sel, html) { var el = $(sel, calc); if (el) el.innerHTML = html; };\n      set('[data-gfb-out=\"rev\"]', esc(gbp(o.rev)));\n      set('[data-gfb-out=\"rev-sub\"]', zero ? 'Add the clients you see in a typical week and the model comes to life.' : 'About ' + (Math.round(o.units * 10) / 10) + ' devices a month from ' + Math.round(v.clients * ((v.rec || 0) / 100)) + ' recommendations a week.');\n      set('[data-gfb-out=\"annual\"]', esc(gbp(o.annual)));\n      var mEl = $('[data-gfb-out=\"margin\"]', calc); if (mEl) { mEl.textContent = o.margin == null ? 'Set your margin to see this' : gbp(o.margin); mEl.classList.toggle('is-muted', o.margin == null); }\n      var mSub = $('[data-gfb-out=\"margin-sub\"]', calc); if (mSub) mSub.textContent = (o.margin == null || zero) ? '' : v.margin + '% of ' + gbp(o.exVat) + ' ex-VAT sales';\n      var tEl = $('[data-gfb-out=\"treat\"]', calc); if (tEl) { if (zero) { tEl.className = 'gfb-out__v is-muted'; tEl.textContent = 'Waiting for your weekly client count'; } else if (!v.tp) { tEl.className = 'gfb-out__v is-muted'; tEl.textContent = 'Add an average treatment price to compare'; } else { tEl.className = 'gfb-out__s gfb-out__s--lg'; var n = Math.round(o.treatments); tEl.innerHTML = 'To earn the same <strong class=\"gfb-strong\">' + esc(gbp(o.rev)) + '</strong> in treatments you would need <strong class=\"gfb-strong\">' + n + ' additional ' + (n === 1 ? 'treatment' : 'treatments') + '</strong> a month at ' + esc(gbp(v.tp)) + ' each.'; } }\n      set('[data-gfb-out=\"tr-val\"]', v.tp ? esc(gbp(o.trRev)) : 'Not set');\n      var shareTxt = (o.share != null && !zero) ? ' <span>(' + (o.share >= 100 ? Math.round(o.share) : o.share.toFixed(o.share < 10 ? 1 : 0)) + '% on top)</span>' : '';\n      set('[data-gfb-out=\"gk-val\"]', esc(gbp(o.rev)) + shareTxt);\n      var b1 = $('[data-gfb-bar=\"tr\"]', calc); if (b1) b1.style.width = (o.trRev / maxBar) * 100 + '%';\n      var b2 = $('[data-gfb-bar=\"gk\"]', calc); if (b2) b2.style.width = (o.rev / maxBar) * 100 + '%';\n      var vh = $('[data-gfb-value-hint]', calc); if (vh) { var a = slAvg(); vh.textContent = a ? 'Pre-filled from your ' + plural(state.shortlist.length, 'shortlisted device', 'shortlisted devices') + ' (RRP)' : 'Mid-range RRP across the portfolio. Shortlist devices above to pre-fill this.'; }\n      var sub = $('[data-gfb-calc-sub]', calc); if (sub) sub.textContent = 'Every figure is editable.' + (slAvg() ? ' Average device value comes from your shortlist.' : '');\n      var snap = snapshot(o), isSaved = state.calcSaved && state.calcSaved.snapshot === snap;\n      if (saveBtn) { saveBtn.disabled = !!isSaved; saveBtn.textContent = isSaved ? 'Saved to my enquiry' : state.calcSaved ? 'Update my enquiry' : 'Save this to my enquiry'; }\n      if (savedMsg) savedMsg.hidden = !isSaved;\n    }\n    fields.forEach(function (f) {\n      var k = f.getAttribute('data-gfb-calc'), range = $('input[type=\"range\"]', f), num = $('input[type=\"number\"]', f);\n      range.addEventListener('input', function () { touched[k] = true; v[k] = Number(range.value); track('calculator_input_changed', { input: k, value: v[k] }); render(); });\n      num.addEventListener('input', function () { touched[k] = true; var raw = num.value; if (raw === '') { v[k] = null; } else { var n = Number(raw); if (isNaN(n)) return; v[k] = Math.max(Number(range.min), Math.min(Number(range.max), n)); } track('calculator_input_changed', { input: k, value: v[k] }); render(); });\n      num.addEventListener('blur', function () { render(); });\n    });\n    if (saveBtn) saveBtn.addEventListener('click', function () {\n      var o = outputs();\n      state.calcSaved = { snapshot: snapshot(o), inputs: Object.assign({}, v), outputs: { monthly_revenue: Math.round(o.rev), annual_revenue: Math.round(o.annual), monthly_margin: o.margin == null ? null : Math.round(o.margin), treatment_equivalent: o.treatments == null ? null : Math.round(o.treatments) } };\n      persist(); emit('calc'); track('calculator_saved_to_enquiry', { monthly_revenue: Math.round(o.rev) }); announce('Calculator figures saved to your enquiry'); render();\n    });\n    var resetBtn = $('[data-gfb-reset]', calc); if (resetBtn) resetBtn.addEventListener('click', function () { resetValues(); render(); announce('Calculator reset'); });\n    onChange(function (w) { if (w === 'shortlist') { if (!touched.value) { var a = slAvg(); if (a) v.value = a; } render(); } });\n    render();\n    calcApi = true;\n  }\n\n  /* ---------- Conversions: enquiry form, call request, trade pack ---------- */\n  var enq = $('[data-gfb=\"enquire\"]');\n  if (enq) {\n    var cfg = { url: enq.getAttribute('data-submit-url') || '/apps/hgi-business/enquiry/submit', product: enq.getAttribute('data-product') || 'GESKE for Business', brand: enq.getAttribute('data-brand') || 'geske', source: enq.getAttribute('data-source') || 'geske-trade-lp' };\n    var EMAIL_RE = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]{2,}$/, TEL_RE = /^(\\+44\\s?|0)(\\d\\s?){9,10}$/;\n    function cleanTel(t) { return String(t || '').replace(/[\\s()-]/g, ''); }\n    function splitName(full) { full = String(full || '').trim(); var at = full.indexOf(' '); return { first: at === -1 ? full : full.slice(0, at), last: at === -1 ? '-' : (full.slice(at + 1).trim() || '-') }; }\n    function shortlistNames() { return state.shortlist.map(device).filter(Boolean).map(function (d) { return d.name; }); }\n    function calcSummary() {\n      var s = state.calcSaved; if (!s) return null; var i = s.inputs, o = s.outputs;\n      return {\n        inputs: 'Clients per week ' + (i.clients == null ? '-' : i.clients) + '; recommend to ' + (i.rec == null ? '-' : i.rec + '%') + '; buy ' + (i.buy == null ? '-' : i.buy + '%') + '; average device ' + (i.value == null ? '-' : gbp(i.value)) + '; margin ' + (i.margin == null ? 'not set' : i.margin + '%') + '; treatment price ' + (i.tp == null ? '-' : gbp(i.tp)),\n        outputs: 'Monthly retail revenue ' + gbp(o.monthly_revenue) + '; annual ' + gbp(o.annual_revenue) + '; monthly margin ' + (o.monthly_margin == null ? 'not set' : gbp(o.monthly_margin) + ' (' + (i.margin == null ? '-' : i.margin + '%') + ' of ex-VAT sales)') + '; treatment equivalent ' + (o.treatment_equivalent == null ? '-' : o.treatment_equivalent + ' treatments a month')\n      };\n    }\n    function payload(requestType, p, hp) {\n      var name = splitName(p.name), sl = shortlistNames(), cs = calcSummary();\n      var fd = { requestType: requestType, businessName: p.business || '', businessType: p.bt || '', product: cfg.product, brandsOfInterest: cfg.brand, source: cfg.source, sourceSite: window.location.hostname };\n      if (sl.length) { fd.shortlistedDevices = sl.join('; '); fd.shortlistedDeviceIds = state.shortlist.join(','); }\n      if (cs) { fd.calculatorInputs = cs.inputs; fd.calculatorOutputs = cs.outputs; }\n      if (p.date) fd.preferredDate = p.date;\n      if (p.slot) fd.preferredTime = p.slot;\n      return {\n        formType: 'device_enquiry', firstName: name.first, lastName: name.last, email: String(p.email || '').trim(), phone: String(p.tel || '').trim(), message: p.message || '',\n        privacyConsent: true, marketingOptIn: false, website: hp || '', formData: fd,\n        sourcePageUrl: window.location.href, referrer: doc.referrer || '', userAgent: navigator.userAgent,\n        utmSource: getUtm('utm_source'), utmMedium: getUtm('utm_medium'), utmCampaign: getUtm('utm_campaign'), utmContent: getUtm('utm_content')\n      };\n    }\n    function send(body) {\n      return fetch(cfg.url, { method: 'POST', headers: { 'Content-Type': 'application/json', Accept: 'application/json' }, credentials: 'same-origin', body: JSON.stringify(body) })\n        .then(function (r) { return r.json().catch(function () { return {}; }).then(function (j) { if (!r.ok || j.error) throw new Error(j.error || 'Something went wrong. Please try again.'); return j; }); });\n    }\n    /* Field validation helpers: wrapper .gsk-field carries data-gfb-field=<key>; error span [data-gfb-err]; ok span [data-gfb-ok]. */\n    function setFieldState(wrap, error, ok) {\n      var ctl = $('input, select, textarea', wrap), err = $('[data-gfb-err]', wrap), okEl = $('[data-gfb-ok]', wrap);\n      if (ctl) { ctl.classList.toggle('gsk-input--error', !!error); ctl.classList.toggle('is-error', !!error); if (error) ctl.setAttribute('aria-invalid', 'true'); else ctl.removeAttribute('aria-invalid'); }\n      if (err) { err.textContent = error || ''; err.hidden = !error; }\n      if (okEl) okEl.hidden = !(ok && !error);\n      wrap.classList.toggle('is-invalid', !!error);\n    }\n    function bindForm(form, rules, onSubmit) {\n      var touchedF = {}, submitted = false;\n      function values() { var o = {}; $$('[data-gfb-field]', form).forEach(function (w) { var k = w.getAttribute('data-gfb-field'), ctl = $('input:not([type=\"radio\"]), select, textarea', w); if (ctl) o[k] = ctl.value; else { var r = $('input[type=\"radio\"]:checked', w); o[k] = r ? r.value : ''; } }); return o; }\n      function errorsFor(vals) { var e = {}; Object.keys(rules).forEach(function (k) { var m = rules[k](vals[k], vals); if (m) e[k] = m; }); return e; }\n      function paint() { var vals = values(), errs = errorsFor(vals); $$('[data-gfb-field]', form).forEach(function (w) { var k = w.getAttribute('data-gfb-field'); var show = (touchedF[k] || submitted) && errs[k]; setFieldState(w, show ? errs[k] : '', touchedF[k] && rules[k] && !errs[k]); }); return errs; }\n      form.addEventListener('focusout', function (e) { var w = e.target.closest('[data-gfb-field]'); if (w) { touchedF[w.getAttribute('data-gfb-field')] = true; paint(); } });\n      form.addEventListener('input', function (e) { var w = e.target.closest('[data-gfb-field]'); if (w && (touchedF[w.getAttribute('data-gfb-field')] || submitted)) paint(); });\n      form.addEventListener('change', function (e) { var w = e.target.closest('[data-gfb-field]'); if (w) { touchedF[w.getAttribute('data-gfb-field')] = true; paint(); } });\n      form.addEventListener('submit', function (e) {\n        e.preventDefault(); submitted = true;\n        var errs = paint(), first = Object.keys(rules).filter(function (k) { return errs[k]; })[0];\n        if (first) { announce('Please check the highlighted fields.'); var w = $('[data-gfb-field=\"' + first + '\"]', form), ctl = w && $('input, select, textarea', w); if (ctl) ctl.focus(); return; }\n        onSubmit(values());\n      });\n      return { reset: function () { touchedF = {}; submitted = false; form.reset(); $$('[data-gfb-field]', form).forEach(function (w) { setFieldState(w, '', false); }); } };\n    }\n    var reqName = function (v) { return v && v.trim() ? '' : 'Please add your name so we know who to reply to.'; };\n    var reqEmail = function (v) { v = String(v || '').trim(); return !v ? 'Please add an email address we can reply to.' : !EMAIL_RE.test(v) ? 'That email address doesn\u2019t look right. Please check it.' : ''; };\n    var reqTel = function (msg) { return function (v) { return !String(v || '').trim() ? msg : !TEL_RE.test(cleanTel(v)) ? 'Please check the telephone number. UK numbers with or without spaces are fine.' : ''; }; };\n\n    /* Context chips shared by the form and the success state */\n    function contextChips() {\n      var c = [], n = state.shortlist.length;\n      if (n) c.push(plural(n, 'shortlisted device', 'shortlisted devices'));\n      if (state.calcSaved) c.push('Calculator: ' + gbp(state.calcSaved.outputs.monthly_revenue) + ' a month');\n      return c;\n    }\n    function renderContext() { $$('[data-gfb-context]', enq).forEach(function (el) { var c = contextChips(); var wrap = el.closest('[data-gfb-context-wrap]') || el; wrap.hidden = !c.length; el.innerHTML = c.map(function (x) { return '<span class=\"gfb-context__chip\">' + ICON.tick + esc(x) + '</span>'; }).join(''); }); }\n    onChange(function (w) { if (w === 'shortlist' || w === 'calc') renderContext(); });\n    renderContext();\n\n    /* Enquiry form */\n    var eForm = $('[data-gfb-form=\"enquiry\"]', enq), eSuccess = $('[data-gfb-success=\"enquiry\"]', enq), eErr = $('[data-gfb-form-error]', eForm || enq), eBtn = eForm && $('[type=\"submit\"]', eForm);\n    var started = false, lastEnquiry = null, eCtl = null;\n    if (eForm) {\n      eForm.addEventListener('input', function () { if (!started) { started = true; track('enquiry_form_started'); } }, { once: false });\n      var noteToggle = $('[data-gfb-note-toggle]', eForm), noteWrap = $('[data-gfb-field=\"note\"]', eForm);\n      if (noteToggle && noteWrap) noteToggle.addEventListener('click', function () { noteWrap.hidden = false; noteToggle.hidden = true; var ta = $('textarea', noteWrap); if (ta) ta.focus(); });\n      eCtl = bindForm(eForm, {\n        name: reqName,\n        business: function (v) { return v && v.trim() ? '' : 'Please add your business name.'; },\n        email: reqEmail,\n        tel: reqTel('Please add a telephone number so the team can call you back.'),\n        bt: function (v) { return v ? '' : 'Please choose the option closest to your business.'; }\n      }, function (vals) {\n        if (eErr) eErr.classList.remove('is-visible');\n        eForm.classList.add('is-busy'); if (eBtn) { eBtn.disabled = true; eBtn.textContent = 'Sending your enquiry'; }\n        var btSel = $('[data-gfb-field=\"bt\"] select', eForm), btLabel = btSel && btSel.selectedIndex > 0 ? btSel.options[btSel.selectedIndex].text : vals.bt;\n        var hp = $('input[name=\"website\"]', eForm);\n        send(payload('enquiry', { name: vals.name, business: vals.business, email: vals.email, tel: vals.tel, bt: btLabel, message: vals.note || '' }, hp ? hp.value : ''))\n          .then(function () {\n            lastEnquiry = { name: vals.name, business: vals.business, email: vals.email, tel: vals.tel, bt: btLabel };\n            track('enquiry_form_submitted', { business_type: btLabel, shortlisted_devices: state.shortlist.join(','), calculator_saved: !!state.calcSaved });\n            eForm.hidden = true;\n            if (eSuccess) { var sn = $('[data-gfb-success-name]', eSuccess); if (sn) sn.textContent = 'Thank you, ' + (splitName(vals.name).first || 'and welcome') + '. A member of the HGI GESKE trade team will reply within one working day' + (vals.business ? ' about ' + vals.business : '') + '.'; eSuccess.hidden = false; eSuccess.focus(); }\n            renderContext(); announce('Enquiry sent. The trade team will reply within one working day.');\n            if (sticky) { sticky.dataset.done = '1'; syncSticky(); }\n          })\n          .catch(function (err) { if (eErr) { eErr.textContent = err && err.message ? err.message : 'Something went wrong. Please try again.'; eErr.classList.add('is-visible'); } })\n          .then(function () { eForm.classList.remove('is-busy'); if (eBtn) { eBtn.disabled = false; eBtn.textContent = eBtn.getAttribute('data-label') || 'Send enquiry'; } });\n      });\n      $$('[data-gfb-enquiry-reset]', enq).forEach(function (b) { b.addEventListener('click', function () { if (eSuccess) eSuccess.hidden = true; eForm.hidden = false; eCtl.reset(); if (noteWrap) { noteWrap.hidden = true; } if (noteToggle) noteToggle.hidden = false; started = false; if (sticky) { sticky.dataset.done = ''; syncSticky(); } var f = $('input', eForm); if (f) f.focus(); }); });\n    }\n    $$('[data-gfb-focus-form]', enq).forEach(function (b) { b.addEventListener('click', function (e) { e.preventDefault(); scrollToId('enquiry-form'); setTimeout(function () { var f = eForm && $('input', eForm); if (f && !eForm.hidden) f.focus({ preventScroll: true }); }, 500); }); });\n\n    /* Call request drawer */\n    var cForm = $('[data-gfb-form=\"call\"]'), cSuccess = $('[data-gfb-success=\"call\"]'), cFoot = $('[data-gfb-call-foot]'), cErr = cForm && $('[data-gfb-form-error]', cForm), cBtn = $('[data-gfb-call-submit]');\n    if (cForm) {\n      var dateIn = $('input[type=\"date\"]', cForm), today = new Date(), minDate = today.toISOString().slice(0, 10); if (dateIn) dateIn.min = minDate;\n      var cCtl = bindForm(cForm, {\n        first: function (v) { return v && v.trim() ? '' : 'Please add your first name.'; },\n        last: function (v) { return v && v.trim() ? '' : 'Please add your last name.'; },\n        email: reqEmail,\n        tel: reqTel('Please add a telephone number so the team can call you.'),\n        date: function (v) { if (!v) return 'Please choose a date that suits you.'; if (v < minDate) return 'Please choose a date from today onwards.'; var day = new Date(v + 'T12:00:00').getDay(); if (day === 0 || day === 6) return 'The trade team call on weekdays. Please choose a Monday to Friday.'; return ''; },\n        slot: function (v) { return v ? '' : 'Please choose a time of day.'; }\n      }, function (vals) {\n        if (cErr) cErr.classList.remove('is-visible');\n        cForm.classList.add('is-busy'); if (cBtn) { cBtn.disabled = true; cBtn.textContent = 'Sending your request'; }\n        var slotLabel = { morning: 'Morning (9am to 12pm)', midday: 'Midday (12pm to 2pm)', afternoon: 'Afternoon (2pm to 5pm)' }[vals.slot] || vals.slot;\n        var nice = new Date(vals.date + 'T12:00:00').toLocaleDateString('en-GB', { weekday: 'long', day: 'numeric', month: 'long' });\n        var base = lastEnquiry || {};\n        send(payload('call_request', { name: vals.first + ' ' + vals.last, business: base.business || '', email: vals.email, tel: vals.tel, bt: base.bt || '', message: 'Call requested for ' + nice + ', ' + slotLabel.toLowerCase() + '.', date: vals.date, slot: slotLabel }, ''))\n          .then(function () {\n            track('call_booked', { date: vals.date, slot: vals.slot });\n            cForm.hidden = true; if (cFoot) cFoot.hidden = true;\n            if (cSuccess) { var t = $('[data-gfb-call-text]', cSuccess); if (t) t.textContent = 'Thank you, ' + vals.first + '. A member of the trade team will call ' + vals.tel + ' on ' + nice + ', in the ' + slotLabel.split(' (')[0].toLowerCase() + '. We confirm the exact time by text and email within one working day.'; cSuccess.hidden = false; }\n            announce('Call requested. The trade team will confirm by text and email.');\n          })\n          .catch(function (err) { if (cErr) { cErr.textContent = err && err.message ? err.message : 'Something went wrong. Please try again.'; cErr.classList.add('is-visible'); } })\n          .then(function () { cForm.classList.remove('is-busy'); if (cBtn) { cBtn.disabled = false; cBtn.textContent = cBtn.getAttribute('data-label') || 'Request my call'; } });\n      });\n      if (cBtn) cBtn.addEventListener('click', function () { if (cForm.requestSubmit) cForm.requestSubmit(); else cForm.dispatchEvent(new Event('submit', { cancelable: true })); });\n      $$('.gfb-slot input', cForm).forEach(function (r) { r.addEventListener('change', function () { $$('.gfb-slot', cForm).forEach(function (l) { l.classList.toggle('is-on', $('input', l).checked); }); }); });\n      $$('[data-gfb-call-reset]').forEach(function (b) { b.addEventListener('click', function () { if (cSuccess) cSuccess.hidden = true; cForm.hidden = false; if (cFoot) cFoot.hidden = false; cCtl.reset(); $$('.gfb-slot', cForm).forEach(function (l) { l.classList.remove('is-on'); }); }); });\n      /* Pre-fill from a sent enquiry when the drawer opens */\n      onChange(function (w) { if (w === 'drawer' && state.openDrawer === 'call' && lastEnquiry && !cForm.hidden) { var n = splitName(lastEnquiry.name); var f = function (k) { var w2 = $('[data-gfb-field=\"' + k + '\"] input', cForm); return w2; }; if (f('first') && !f('first').value) f('first').value = n.first; if (f('last') && !f('last').value && n.last !== '-') f('last').value = n.last; if (f('email') && !f('email').value) f('email').value = lastEnquiry.email; if (f('tel') && !f('tel').value) f('tel').value = lastEnquiry.tel; } });\n    }\n\n    /* Trade pack */\n    var pForm = $('[data-gfb-form=\"pack\"]', enq), pSuccess = $('[data-gfb-success=\"pack\"]', enq), pErr = pForm && $('[data-gfb-form-error]', pForm), pBtn = pForm && $('[type=\"submit\"]', pForm);\n    if (pForm) {\n      var pCtl = bindForm(pForm, { name: reqName, email: function (v) { v = String(v || '').trim(); return !v ? 'Please add an email address so we can send the pack.' : !EMAIL_RE.test(v) ? 'That email address doesn\u2019t look right. Please check it.' : ''; } }, function (vals) { sendPack(vals.name, vals.email, 'card'); });\n      function sendPack(name, email, source) {\n        if (pErr) pErr.classList.remove('is-visible');\n        pForm.classList.add('is-busy'); if (pBtn) { pBtn.disabled = true; pBtn.textContent = 'Sending'; }\n        var base = lastEnquiry || {};\n        send(payload('trade_pack', { name: name, business: base.business || '', email: email, tel: base.tel || '', bt: base.bt || '', message: 'Trade pack requested.' }, ''))\n          .then(function () {\n            track('trade_pack_requested', { source: source });\n            pForm.hidden = true;\n            if (pSuccess) { var t = $('[data-gfb-pack-text]', pSuccess); if (t) t.textContent = 'It\u2019s on its way. Check your inbox at ' + email + ' for the GESKE trade pack: the portfolio, the app, the credentials and how to get started.'; pSuccess.hidden = false; }\n            announce('The trade pack is on its way');\n          })\n          .catch(function (err) { if (pErr) { pErr.textContent = err && err.message ? err.message : 'Something went wrong. Please try again.'; pErr.classList.add('is-visible'); } })\n          .then(function () { pForm.classList.remove('is-busy'); if (pBtn) { pBtn.disabled = false; pBtn.textContent = pBtn.getAttribute('data-label') || 'Send me the pack'; } });\n      }\n      $$('[data-gfb-pack-reset]', enq).forEach(function (b) { b.addEventListener('click', function () { if (pSuccess) pSuccess.hidden = true; pForm.hidden = false; pCtl.reset(); }); });\n      /* \"Download the trade pack\" from the enquiry success state reuses the enquiry details */\n      $$('[data-gfb-pack-from-success]', enq).forEach(function (b) { b.addEventListener('click', function () { if (!lastEnquiry) { scrollToId('trade-pack'); return; } var pf = $('[data-gfb-field=\"name\"] input', pForm), pe = $('[data-gfb-field=\"email\"] input', pForm); if (pf) pf.value = lastEnquiry.name; if (pe) pe.value = lastEnquiry.email; sendPack(lastEnquiry.name, lastEnquiry.email, 'success_state'); scrollToId('trade-pack'); }); });\n    }\n  }\n\n  /* ---------- FAQ ---------- */\n  $$('.gsk-faq').forEach(function (faq) {\n    var items = $$('.gsk-faq__item', faq);\n    items.forEach(function (it) {\n      var q = $('.gsk-faq__question', it); if (!q) return;\n      q.addEventListener('click', function () {\n        var open = it.classList.contains('is-open');\n        items.forEach(function (o) { o.classList.remove('is-open'); var b = $('.gsk-faq__question', o); if (b) b.setAttribute('aria-expanded', 'false'); });\n        if (!open) { it.classList.add('is-open'); q.setAttribute('aria-expanded', 'true'); track('faq_opened', { question: ($('.gsk-faq__question-text', q) || q).textContent.trim() }); }\n      });\n    });\n  });\n})();\n"],
  "mappings": "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",
  "names": ["v"]
}
