{
  "version": 3,
  "sources": ["/cdn/shop/t/21/assets/mhsys-ueberuns.js?x=12177"],
  "sourcesContent": ["/*\n * \u00DCber uns (Inhaber 26.09.2026) - Verhalten der Bausteine sections/mhsys-uu-*; nur auf der Vorlage\n * page.ueber-uns geladen (layout/theme.liquid).\n *\n * - Zeitreise: zun\u00E4chst nur die ersten Wegmarken (der Rest steht im HTML, CSS blendet ihn mit .js aus),\n *   Knopf \"Alle \u2026 zeigen\"; die Jahresleiste klebt unter dem Kopf (--mhsys-uu-kopf = H\u00F6he des klebenden\n *   Kopfs), markiert das Jahr im Bild (aria-current) und zeigt den Fortschritt \u00FCber den Weg.\n *   Ein Sprung auf ein Jahr, das noch verborgen ist, \u00F6ffnet vorher alle; wer bis zum Knopf scrollt, bekommt\n *   die \u00FCbrigen von selbst.\n * - Zahlenband: Zahlen mit data-mhsys-uu-zaehlen z\u00E4hlen beim Hereinscrollen einmal hoch; Screenreader\n *   h\u00F6ren nur den Endwert.\n * - Das Auftauchen der Karten ist reines CSS (Scroll-Animation, assets/mhsys-ueberuns.css) - kein Zustand\n *   hier, der eine Karte unsichtbar lassen k\u00F6nnte.\n * Bei \"Bewegung reduzieren\" kein Hochz\u00E4hlen, Spr\u00FCnge ohne Gleiten, Leuchtfeuer und M\u00F6wen stehen.\n */\n(function () {\n  'use strict';\n\n  const ruhig = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n\n  /* ---------- H\u00F6he des klebenden Kopfs f\u00FCr die Jahresleiste */\n  function kopfHoehe() {\n    const kopf = document.querySelector('.mhsys-kopf--klassisch');\n    let h = 0;\n    if (kopf && getComputedStyle(kopf).position === 'sticky') h = Math.round(kopf.getBoundingClientRect().height);\n    document.documentElement.style.setProperty('--mhsys-uu-kopf', h + 'px');\n    return h;\n  }\n\n  /* ---------- Zeitreise */\n  function reise(wurzel) {\n    const knopf = wurzel.querySelector('[data-mhsys-uu-alle]');\n    const leiste = wurzel.querySelector('[data-mhsys-uu-leiste]');\n    const pfad = wurzel.querySelector('[data-mhsys-uu-pfad]');\n    const kurz = wurzel.hasAttribute('data-mhsys-uu-kurz');\n\n    function alleZeigen() {\n      if (wurzel.classList.contains('is-alle')) return;\n      wurzel.classList.add('is-alle');\n      if (knopf) knopf.hidden = true;\n    }\n\n    if (kurz && knopf) {\n      knopf.hidden = false;\n      knopf.addEventListener('click', () => {\n        const erste = wurzel.querySelector('[data-mhsys-uu-spaeter]');\n        alleZeigen();\n        /* Fokus auf die erste neue Wegmarke, damit Tastatur und Screenreader dort weiterlesen */\n        const ziel = erste && (erste.querySelector('.mhsys-uu-marke__titel') || erste);\n        if (ziel) {\n          ziel.setAttribute('tabindex', '-1');\n          ziel.focus({ preventScroll: true });\n          ziel.scrollIntoView({ block: 'center', behavior: ruhig ? 'auto' : 'smooth' });\n        }\n      });\n      /* Wer bis zum Knopf scrollt, bekommt die \u00FCbrigen Wegmarken von selbst (Inhaber 26.09.2026: \"ab 2013 h\u00E4ngt es,\n         bis ich auf 2014 klicke\" - die Geschichte h\u00F6rte nach den ersten acht Wegmarken, also 2013, einfach auf,\n         obwohl die Jahresleiste schon bis 2025 reichte). Der Knopf bleibt f\u00FCr ohne IntersectionObserver. */\n      if ('IntersectionObserver' in window) {\n        const beobachter = new IntersectionObserver((eintraege) => {\n          if (!eintraege.some((e) => e.isIntersecting)) return;\n          beobachter.disconnect();\n          alleZeigen();\n        }, { rootMargin: '0px 0px 600px 0px' });\n        beobachter.observe(knopf);\n      }\n    }\n\n    if (!leiste) return;\n    const links = Array.from(leiste.querySelectorAll('[data-mhsys-uu-jahrlink]'));\n    const liste = leiste.querySelector('.mhsys-uu-reise__jahre');\n\n    function markieren(jahr) {\n      links.forEach((a) => {\n        const an = a.dataset.mhsysUuJahrlink === jahr;\n        if (an) a.setAttribute('aria-current', 'true');\n        else a.removeAttribute('aria-current');\n        /* das aktive Jahr in der Leiste ins Bild schieben - nur waagrecht, die Seite bleibt stehen */\n        if (an && liste) {\n          const l = a.offsetLeft - (liste.clientWidth - a.offsetWidth) / 2;\n          liste.scrollTo({ left: Math.max(0, l), behavior: ruhig ? 'auto' : 'smooth' });\n        }\n      });\n    }\n\n    links.forEach((a) => {\n      a.addEventListener('click', (e) => {\n        const ziel = document.getElementById('mhsys-uu-jahr-' + a.dataset.mhsysUuJahrlink);\n        if (!ziel) return;\n        e.preventDefault();\n        if (ziel.hasAttribute('data-mhsys-uu-spaeter')) alleZeigen();\n        ziel.scrollIntoView({ block: 'start', behavior: ruhig ? 'auto' : 'smooth' });\n        markieren(a.dataset.mhsysUuJahrlink);\n        if (history.replaceState) history.replaceState(null, '', '#' + ziel.id);\n      });\n    });\n\n    /* Aktives Jahr: das letzte Jahr, dessen Trenner \u00FCber der Mitte des Fensters liegt */\n    const trenner = Array.from(wurzel.querySelectorAll('[data-mhsys-uu-jahr]'));\n    let geplant = false;\n    function lage() {\n      geplant = false;\n      const mitte = window.innerHeight * 0.45;\n      let aktiv = null;\n      trenner.forEach((t) => {\n        if (t.offsetParent !== null && t.getBoundingClientRect().top < mitte) aktiv = t.dataset.mhsysUuJahr;\n      });\n      if (!aktiv && trenner[0]) aktiv = trenner[0].dataset.mhsysUuJahr;\n      if (aktiv !== leiste.dataset.aktiv) {\n        leiste.dataset.aktiv = aktiv;\n        markieren(aktiv);\n      }\n      if (pfad) {\n        const r = pfad.getBoundingClientRect();\n        const weg = r.height - window.innerHeight * 0.5;\n        const anteil = weg > 0 ? Math.min(1, Math.max(0, (mitte - r.top) / weg)) : 0;\n        leiste.style.setProperty('--mhsys-uu-fortschritt', anteil.toFixed(3));\n      }\n    }\n    window.addEventListener('scroll', () => {\n      if (!geplant) {\n        geplant = true;\n        requestAnimationFrame(lage);\n      }\n    }, { passive: true });\n    lage();\n\n    /* Aufruf mit #mhsys-uu-jahr-2016 von au\u00DFen: vorher alle zeigen */\n    const hash = decodeURIComponent(location.hash.slice(1));\n    if (hash.indexOf('mhsys-uu-jahr-') === 0) {\n      const ziel = document.getElementById(hash);\n      if (ziel && ziel.hasAttribute('data-mhsys-uu-spaeter')) {\n        alleZeigen();\n        requestAnimationFrame(() => ziel.scrollIntoView({ block: 'start' }));\n      }\n    }\n  }\n\n  /* ---------- Hochz\u00E4hlen */\n  function zaehlen(el) {\n    const ende = el.textContent.trim();\n    const t = ende.match(/^([\\d.]+)(.*)$/);\n    if (!t) return;\n    const ziel = parseInt(t[1].replace(/\\./g, ''), 10);\n    if (!ziel) return;\n    const rest = t[2];\n    el.textContent = '';\n    const sicht = document.createElement('span');\n    sicht.setAttribute('aria-hidden', 'true');\n    const text = document.createElement('span');\n    text.className = 'visually-hidden';\n    text.textContent = ende;\n    el.append(sicht, text);\n    const dauer = 1400;\n    let start = null;\n    function schritt(zeit) {\n      if (start === null) start = zeit;\n      const p = Math.min(1, (zeit - start) / dauer);\n      const wert = Math.round(ziel * (1 - Math.pow(1 - p, 3)));\n      sicht.textContent = wert.toLocaleString('de-DE') + rest;\n      if (p < 1) requestAnimationFrame(schritt);\n      else sicht.textContent = ende;\n    }\n    requestAnimationFrame(schritt);\n  }\n\n  /* ---------- Hochz\u00E4hlen beim Hereinscrollen */\n  function beobachten(elemente) {\n    if (ruhig || !('IntersectionObserver' in window) || !elemente.length) return;\n    const beobachter = new IntersectionObserver((eintraege) => {\n      eintraege.forEach((e) => {\n        if (!e.isIntersecting) return;\n        beobachter.unobserve(e.target);\n        zaehlen(e.target);\n      });\n    }, { rootMargin: '0px 0px -8% 0px' });\n    elemente.forEach((el) => beobachter.observe(el));\n  }\n\n  /* ---------- Nacht im Einstieg (Inhaber 26.09.2026): Schalter; ohne eigene Wahl folgt die Szene der Uhr, die erste\n     Klasse setzt schon das Skript in sections/mhsys-uu-held.liquid. Seit 06.10.2026 dieselbe Uhr wie Gustl und Leni\n     (22 bis 6 Uhr deutscher Zeit, window.mhsysBerlin); die beiden folgen nur der Uhr, nicht dem Schalter. */\n  function nachtIstJetzt() {\n    const h = window.mhsysBerlin ? window.mhsysBerlin().stunde : new Date().getHours();\n    return h >= 22 || h < 6;\n  }\n  function nacht() {\n    const held = document.querySelector('[data-mhsys-uu-held]');\n    const knopf = held && held.querySelector('[data-mhsys-uu-nacht]');\n    if (!held || !knopf) return;\n    const gustl = held.hasAttribute('data-mhsys-uu-gustl');\n    function setzen(an) {\n      held.classList.toggle('is-nacht', an);\n      document.documentElement.classList.toggle('mhsys-uu-nacht', an);\n      knopf.setAttribute('aria-pressed', String(an));\n    }\n    setzen(held.classList.contains('is-nacht'));\n    knopf.addEventListener('click', () => {\n      const an = !held.classList.contains('is-nacht');\n      setzen(an);\n      try {\n        sessionStorage.setItem('mhsysUuNacht', an ? '1' : '0');\n      } catch (err) {}\n    });\n    setInterval(() => {\n      if (gustl) document.documentElement.classList.toggle('mhsys-gustl-nacht', nachtIstJetzt());\n      let wahl = null;\n      try {\n        wahl = sessionStorage.getItem('mhsysUuNacht');\n      } catch (err) {}\n      if (wahl === null) setzen(nachtIstJetzt());\n    }, 60000);\n  }\n\n  function starten() {\n    /* Leuchtfeuer und M\u00F6wen im Einstieg sind SVG-Animationen (sections/mhsys-uu-held.liquid) - CSS kann sie\n       nicht anhalten; bei \"Bewegung reduzieren\" stehen sie still (das Leuchtfeuer startet erst nach 1 s) */\n    if (ruhig) {\n      document.querySelectorAll('.mhsys-uu-held svg').forEach((svg) => {\n        if (svg.pauseAnimations) svg.pauseAnimations();\n      });\n    }\n    nacht();\n    kopfHoehe();\n    window.addEventListener('resize', kopfHoehe, { passive: true });\n    document.querySelectorAll('[data-mhsys-uu-reise]').forEach(reise);\n    beobachten(document.querySelectorAll('[data-mhsys-uu-zaehlen]'));\n  }\n\n  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', starten);\n  else starten();\n})();\n"],
  "mappings": "CAeC,UAAY,CACX,aAEA,MAAM,MAAQ,OAAO,WAAW,kCAAkC,EAAE,QAGpE,SAAS,WAAY,CACnB,MAAM,KAAO,SAAS,cAAc,wBAAwB,EAC5D,IAAI,EAAI,EACR,OAAI,MAAQ,iBAAiB,IAAI,EAAE,WAAa,WAAU,EAAI,KAAK,MAAM,KAAK,sBAAsB,EAAE,MAAM,GAC5G,SAAS,gBAAgB,MAAM,YAAY,kBAAmB,EAAI,IAAI,EAC/D,CACT,CAGA,SAAS,MAAM,OAAQ,CACrB,MAAM,MAAQ,OAAO,cAAc,sBAAsB,EACnD,OAAS,OAAO,cAAc,wBAAwB,EACtD,KAAO,OAAO,cAAc,sBAAsB,EAClD,KAAO,OAAO,aAAa,oBAAoB,EAErD,SAAS,YAAa,CAChB,OAAO,UAAU,SAAS,SAAS,IACvC,OAAO,UAAU,IAAI,SAAS,EAC1B,QAAO,MAAM,OAAS,IAC5B,CAEA,GAAI,MAAQ,QACV,MAAM,OAAS,GACf,MAAM,iBAAiB,QAAS,IAAM,CACpC,MAAM,MAAQ,OAAO,cAAc,yBAAyB,EAC5D,WAAW,EAEX,MAAM,KAAO,QAAU,MAAM,cAAc,wBAAwB,GAAK,OACpE,OACF,KAAK,aAAa,WAAY,IAAI,EAClC,KAAK,MAAM,CAAE,cAAe,EAAK,CAAC,EAClC,KAAK,eAAe,CAAE,MAAO,SAAU,SAAU,MAAQ,OAAS,QAAS,CAAC,EAEhF,CAAC,EAIG,yBAA0B,QAAQ,CACpC,MAAM,WAAa,IAAI,qBAAsB,WAAc,CACpD,UAAU,KAAM,GAAM,EAAE,cAAc,IAC3C,WAAW,WAAW,EACtB,WAAW,EACb,EAAG,CAAE,WAAY,mBAAoB,CAAC,EACtC,WAAW,QAAQ,KAAK,CAC1B,CAGF,GAAI,CAAC,OAAQ,OACb,MAAM,MAAQ,MAAM,KAAK,OAAO,iBAAiB,0BAA0B,CAAC,EACtE,MAAQ,OAAO,cAAc,wBAAwB,EAE3D,SAAS,UAAU,KAAM,CACvB,MAAM,QAAS,GAAM,CACnB,MAAM,GAAK,EAAE,QAAQ,kBAAoB,KAIzC,GAHI,GAAI,EAAE,aAAa,eAAgB,MAAM,EACxC,EAAE,gBAAgB,cAAc,EAEjC,IAAM,MAAO,CACf,MAAM,EAAI,EAAE,YAAc,MAAM,YAAc,EAAE,aAAe,EAC/D,MAAM,SAAS,CAAE,KAAM,KAAK,IAAI,EAAG,CAAC,EAAG,SAAU,MAAQ,OAAS,QAAS,CAAC,CAC9E,CACF,CAAC,CACH,CAEA,MAAM,QAAS,GAAM,CACnB,EAAE,iBAAiB,QAAU,GAAM,CACjC,MAAM,KAAO,SAAS,eAAe,iBAAmB,EAAE,QAAQ,eAAe,EAC5E,OACL,EAAE,eAAe,EACb,KAAK,aAAa,uBAAuB,GAAG,WAAW,EAC3D,KAAK,eAAe,CAAE,MAAO,QAAS,SAAU,MAAQ,OAAS,QAAS,CAAC,EAC3E,UAAU,EAAE,QAAQ,eAAe,EAC/B,QAAQ,cAAc,QAAQ,aAAa,KAAM,GAAI,IAAM,KAAK,EAAE,EACxE,CAAC,CACH,CAAC,EAGD,MAAM,QAAU,MAAM,KAAK,OAAO,iBAAiB,sBAAsB,CAAC,EAC1E,IAAI,QAAU,GACd,SAAS,MAAO,CACd,QAAU,GACV,MAAM,MAAQ,OAAO,YAAc,IACnC,IAAI,MAAQ,KASZ,GARA,QAAQ,QAAS,GAAM,CACjB,EAAE,eAAiB,MAAQ,EAAE,sBAAsB,EAAE,IAAM,QAAO,MAAQ,EAAE,QAAQ,YAC1F,CAAC,EACG,CAAC,OAAS,QAAQ,CAAC,IAAG,MAAQ,QAAQ,CAAC,EAAE,QAAQ,aACjD,QAAU,OAAO,QAAQ,QAC3B,OAAO,QAAQ,MAAQ,MACvB,UAAU,KAAK,GAEb,KAAM,CACR,MAAM,EAAI,KAAK,sBAAsB,EAC/B,IAAM,EAAE,OAAS,OAAO,YAAc,GACtC,OAAS,IAAM,EAAI,KAAK,IAAI,EAAG,KAAK,IAAI,GAAI,MAAQ,EAAE,KAAO,GAAG,CAAC,EAAI,EAC3E,OAAO,MAAM,YAAY,yBAA0B,OAAO,QAAQ,CAAC,CAAC,CACtE,CACF,CACA,OAAO,iBAAiB,SAAU,IAAM,CACjC,UACH,QAAU,GACV,sBAAsB,IAAI,EAE9B,EAAG,CAAE,QAAS,EAAK,CAAC,EACpB,KAAK,EAGL,MAAM,KAAO,mBAAmB,SAAS,KAAK,MAAM,CAAC,CAAC,EACtD,GAAI,KAAK,QAAQ,gBAAgB,IAAM,EAAG,CACxC,MAAM,KAAO,SAAS,eAAe,IAAI,EACrC,MAAQ,KAAK,aAAa,uBAAuB,IACnD,WAAW,EACX,sBAAsB,IAAM,KAAK,eAAe,CAAE,MAAO,OAAQ,CAAC,CAAC,EAEvE,CACF,CAGA,SAAS,QAAQ,GAAI,CACnB,MAAM,KAAO,GAAG,YAAY,KAAK,EAC3B,EAAI,KAAK,MAAM,gBAAgB,EACrC,GAAI,CAAC,EAAG,OACR,MAAM,KAAO,SAAS,EAAE,CAAC,EAAE,QAAQ,MAAO,EAAE,EAAG,EAAE,EACjD,GAAI,CAAC,KAAM,OACX,MAAM,KAAO,EAAE,CAAC,EAChB,GAAG,YAAc,GACjB,MAAM,MAAQ,SAAS,cAAc,MAAM,EAC3C,MAAM,aAAa,cAAe,MAAM,EACxC,MAAM,KAAO,SAAS,cAAc,MAAM,EAC1C,KAAK,UAAY,kBACjB,KAAK,YAAc,KACnB,GAAG,OAAO,MAAO,IAAI,EACrB,MAAM,MAAQ,KACd,IAAI,MAAQ,KACZ,SAAS,QAAQ,KAAM,CACjB,QAAU,OAAM,MAAQ,MAC5B,MAAM,EAAI,KAAK,IAAI,GAAI,KAAO,OAAS,KAAK,EACtC,KAAO,KAAK,MAAM,MAAQ,EAAI,KAAK,IAAI,EAAI,EAAG,CAAC,EAAE,EACvD,MAAM,YAAc,KAAK,eAAe,OAAO,EAAI,KAC/C,EAAI,EAAG,sBAAsB,OAAO,EACnC,MAAM,YAAc,IAC3B,CACA,sBAAsB,OAAO,CAC/B,CAGA,SAAS,WAAW,SAAU,CAC5B,GAAI,OAAS,EAAE,yBAA0B,SAAW,CAAC,SAAS,OAAQ,OACtE,MAAM,WAAa,IAAI,qBAAsB,WAAc,CACzD,UAAU,QAAS,GAAM,CAClB,EAAE,iBACP,WAAW,UAAU,EAAE,MAAM,EAC7B,QAAQ,EAAE,MAAM,EAClB,CAAC,CACH,EAAG,CAAE,WAAY,iBAAkB,CAAC,EACpC,SAAS,QAAS,IAAO,WAAW,QAAQ,EAAE,CAAC,CACjD,CAKA,SAAS,eAAgB,CACvB,MAAM,EAAI,OAAO,YAAc,OAAO,YAAY,EAAE,OAAS,IAAI,KAAK,EAAE,SAAS,EACjF,OAAO,GAAK,IAAM,EAAI,CACxB,CACA,SAAS,OAAQ,CACf,MAAM,KAAO,SAAS,cAAc,sBAAsB,EACpD,MAAQ,MAAQ,KAAK,cAAc,uBAAuB,EAChE,GAAI,CAAC,MAAQ,CAAC,MAAO,OACrB,MAAM,MAAQ,KAAK,aAAa,qBAAqB,EACrD,SAAS,OAAO,GAAI,CAClB,KAAK,UAAU,OAAO,WAAY,EAAE,EACpC,SAAS,gBAAgB,UAAU,OAAO,iBAAkB,EAAE,EAC9D,MAAM,aAAa,eAAgB,OAAO,EAAE,CAAC,CAC/C,CACA,OAAO,KAAK,UAAU,SAAS,UAAU,CAAC,EAC1C,MAAM,iBAAiB,QAAS,IAAM,CACpC,MAAM,GAAK,CAAC,KAAK,UAAU,SAAS,UAAU,EAC9C,OAAO,EAAE,EACT,GAAI,CACF,eAAe,QAAQ,eAAgB,GAAK,IAAM,GAAG,CACvD,MAAc,CAAC,CACjB,CAAC,EACD,YAAY,IAAM,CACZ,OAAO,SAAS,gBAAgB,UAAU,OAAO,oBAAqB,cAAc,CAAC,EACzF,IAAI,KAAO,KACX,GAAI,CACF,KAAO,eAAe,QAAQ,cAAc,CAC9C,MAAc,CAAC,CACX,OAAS,MAAM,OAAO,cAAc,CAAC,CAC3C,EAAG,GAAK,CACV,CAEA,SAAS,SAAU,CAGb,OACF,SAAS,iBAAiB,oBAAoB,EAAE,QAAS,KAAQ,CAC3D,IAAI,iBAAiB,IAAI,gBAAgB,CAC/C,CAAC,EAEH,MAAM,EACN,UAAU,EACV,OAAO,iBAAiB,SAAU,UAAW,CAAE,QAAS,EAAK,CAAC,EAC9D,SAAS,iBAAiB,uBAAuB,EAAE,QAAQ,KAAK,EAChE,WAAW,SAAS,iBAAiB,yBAAyB,CAAC,CACjE,CAEI,SAAS,aAAe,UAAW,SAAS,iBAAiB,mBAAoB,OAAO,EACvF,QAAQ,CACf,GAAG",
  "names": []
}
