{"version":3,"file":"Carousel.AJBXrtQf.mjs","names":["useState","useCallback","useRef"],"sources":["https:/framerusercontent.com/modules/tYZ1XlDTAONBCG3Y3xWk/4LdoWiEMxYLxpMxFUW2w/Carousel.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{forwardRef,useCallback,useEffect,useRef,useState}from\"react\";import{RenderTarget}from\"framer\";const buses={};function getBus(key){if(!buses[key])buses[key]={state:{seq:0},subs:new Set};return buses[key];}function useBus(key){const bus=getBus(key);const[,force]=useState(0);useEffect(()=>{const fn=()=>force(n=>n+1);bus.subs.add(fn);return()=>{bus.subs.delete(fn);};},[key]);const push=useCallback(dir=>{bus.state={seq:bus.state.seq+dir};bus.subs.forEach(f=>f());},[key]);return[bus.state,push];}const STYLE_ID=\"oxy-carousel-style\";/** target autoplay cadence per carousel, in ms (0 = no autoplay) */const AUTOPLAY={anw:3e3,tes:1e4,gal:5e3,faq:0,mtg:6e3,eqp:0,thm:0,par:0};/** carousels that loop infinitely */const LOOP={anw:true,tes:true,gal:true,mtg:true,eqp:true,thm:true,par:true};/**\n * Coverflow: the centre slide is shown at full size and the others are scaled\n * DOWN visually. `maxW` is a ceiling, not a fixed size — the real width is\n * derived from the track so the card can never overflow a narrow viewport.\n */const COVERFLOW={gal:{maxW:638,ratio:399/638,scale:.78,minPeek:44}};/** carousels whose active slide is centred in the track */const CENTER={gal:true};/**\n * Tracks that hold MORE THAN ONE CMS collection list.\n *\n * Anwendungsgebiete has 5 cards and ~4 visible at 1440, giving 790px of scroll\n * range against a 444px step — less than the 2 steps the recycler needs, so it\n * could not loop at all. Rendering the collection twice fixes that with real,\n * Framer-rendered, React-owned nodes (no clones). The lists are collapsed to\n * `display: contents` so their cards become the track's own flex items.\n */const MULTILIST={anw:true};function injectStyle(){if(typeof document===\"undefined\")return;if(document.getElementById(STYLE_ID))return;const s=document.createElement(\"style\");s.id=STYLE_ID;s.textContent=// Mandatory snap keeps a fast flick from parking between cards. A NON-looping\n// track uses `proximity` instead: with `mandatory` + `snap-align: start`\n// there is no snap point at maxScroll, so the tail of the last slide is\n// literally unreachable (measured: 80px of card 3 on the video FAQ).\n\".oxy-carousel-track{scrollbar-width:none;-ms-overflow-style:none;scroll-behavior:auto;\"+\"scroll-snap-type:x mandatory;cursor:grab;user-select:none;-webkit-user-select:none;}\"+\".oxy-carousel-track:not([data-oxy-loop]){scroll-snap-type:x proximity;}\"+\".oxy-carousel-track:active{cursor:grabbing;}\"+// Native HTML5 image dragging fires `dragstart`, which cancels the pointer\n// stream and used to leave the track permanently in a phantom-drag state.\n\".oxy-carousel-track img{-webkit-user-drag:none;user-drag:none;pointer-events:none;}\"+\".oxy-carousel-track[data-oxy-multi] > *{display:contents !important;}\"+\".oxy-carousel-track::-webkit-scrollbar{display:none;width:0;height:0;}\";document.head.appendChild(s);}/** Real laid-out slides, descending past display:contents / zero-width wrappers. */function slidesOf(el){const out=[];const visit=node=>{for(const child of Array.from(node.children)){const r=child.getBoundingClientRect();const cs=getComputedStyle(child);if(r.width>1&&cs.display!==\"contents\")out.push(child);else visit(child);}};visit(el);return out;}/**\n * Distance between two adjacent slides.\n *\n * Returns 0 — never a fallback guess — when it cannot measure: a cached\n * `clientWidth` fallback is sticky and poisons every later calculation.\n */function stepOf(el){const slides=slidesOf(el);if(slides.length>=2){// sort by painted position: with `order` rotation the DOM order is not\n// the visual order, so differencing slides[0]/slides[1] gives nonsense\nconst lefts=slides.map(s=>s.getBoundingClientRect().left).sort((a,b)=>a-b);const deltas=[];for(let i=1;i<lefts.length;i++){const d=lefts[i]-lefts[i-1];if(d>1)deltas.push(d);}if(deltas.length){deltas.sort((a,b)=>a-b);return deltas[Math.floor(deltas.length/2)];}}if(slides.length===1){const cs=getComputedStyle(el);const gap=parseFloat(cs.columnGap||cs.gap||\"0\")||0;const w=slides[0].getBoundingClientRect().width;return w>1?w+gap:0;}return 0;}/** instant scroll that defeats any inherited `scroll-behavior: smooth` */function jumpTo(el,left){const prev=el.style.scrollBehavior;el.style.scrollBehavior=\"auto\";el.scrollLeft=left;void el.scrollLeft;el.style.scrollBehavior=prev;}function trackImpl(key,Component){return /*#__PURE__*/forwardRef((props,ref)=>{const node=useRef(null);const[state]=useBus(key);/**\n         * Lazily initialised from the bus. `buses` is module scope and `seq`\n         * survives a client-side page navigation, so a zero-initialised counter\n         * made a remount replay every click the user had made before leaving.\n         */const applied=useRef(null);const ctrl=useRef(null);const restartAutoplay=useRef(null);useEffect(injectStyle,[]);/**\n         * Coverflow sizing + centring.\n         *\n         * The inactive slides are scaled with a TRANSFORM, never by animating\n         * `width`. Animating width collapsed the pitch from 662 to 522, let the\n         * step be measured mid-transition, and forced a flex reflow every frame.\n         */useEffect(()=>{const el=node.current;const cf=COVERFLOW[key];if(!el||!cf)return;let raf=0;const geom=()=>{const cw=el.clientWidth||el.getBoundingClientRect().width;const active=Math.max(160,Math.min(cf.maxW,cw-2*cf.minPeek));return{active,height:Math.round(active*cf.ratio),pad:Math.max(0,(cw-active)/2)};};const apply=()=>{const slides=slidesOf(el);if(!slides.length)return;const{active,height,pad}=geom();el.style.paddingLeft=pad+\"px\";el.style.paddingRight=pad+\"px\";el.style.scrollPaddingLeft=pad+\"px\";el.style.alignItems=\"center\";// constant track height so the arrows underneath never shift\nel.style.height=height+\"px\";el.style.minHeight=height+\"px\";const mid=el.getBoundingClientRect().left+el.clientWidth/2;let best=0;let bestD=Infinity;slides.forEach((sl,i)=>{const r=sl.getBoundingClientRect();const d=Math.abs(r.left+r.width/2-mid);if(d<bestD){bestD=d;best=i;}});slides.forEach((sl,i)=>{sl.style.flex=\"0 0 auto\";sl.style.alignSelf=\"center\";// layout size is CONSTANT; only the visual scale changes\nsl.style.width=active+\"px\";sl.style.height=height+\"px\";sl.style.transformOrigin=\"center center\";sl.style.transition=\"transform .6s cubic-bezier(.4,0,.2,1)\";sl.style.transform=i===best?\"scale(1)\":`scale(${cf.scale})`;});};const onScroll=()=>{cancelAnimationFrame(raf);raf=requestAnimationFrame(apply);};apply();el.addEventListener(\"scroll\",onScroll,{passive:true});const ro=new ResizeObserver(apply);ro.observe(el);const t=setTimeout(apply,300);return()=>{el.removeEventListener(\"scroll\",onScroll);cancelAnimationFrame(raf);ro.disconnect();clearTimeout(t);};},[]);/**\n         * Infinite loop WITHOUT cloning, plus the step scheduler.\n         *\n         * Cloning (old Swiper's `loop:true`) detaches the copy from React, so\n         * every handler and CMS binding inside it dies. Current Swiper instead\n         * `prepend`/`append`s the real nodes — which survives node identity but\n         * reorders the DOM behind React's reconciler. We do neither: the DOM is\n         * untouched and slides are recycled purely with CSS `order`.\n         */useEffect(()=>{const el=node.current;if(!el)return;const looping=!!LOOP[key];if(looping)el.setAttribute(\"data-oxy-loop\",\"\");const itemOf=slide=>{let n=slide;while(n.parentElement&&n.parentElement!==el){const ps=getComputedStyle(n.parentElement);if(ps.display===\"contents\")break;n=n.parentElement;}return n;};let rot=0;let items=[];let pos=el.scrollLeft;let target=el.scrollLeft;let raf=0;let running=false;let selfWrite=false;let idle=0;let userRaf=0;let stepCache=0;const measureStep=()=>{const m=stepOf(el);if(m>1)stepCache=Math.round(m);return stepCache;};const getStep=()=>stepCache||measureStep();const collect=()=>{items=slidesOf(el).map(itemOf);return items.length;};const applyOrder=()=>{const n=items.length;if(!n)return;items.forEach((it,i)=>{it.style.order=String((i-rot+n*2)%n);it.style.scrollSnapAlign=\"start\";});};const rotate=dir=>{const n=items.length;if(!n)return;rot=(rot+dir+n)%n;applyOrder();};const write=v=>{selfWrite=true;jumpTo(el,v);selfWrite=false;};/**\n             * How many slides to park off-screen on each side.\n             *\n             * One was not enough: a momentum fling consumed the single step of\n             * backward runway in ~100ms and then sat pinned at scrollLeft 0 for\n             * up to 650ms, silently eating swipe travel.\n             */const parkK=()=>{const step=getStep();if(!step||items.length<3)return 1;const visible=Math.max(1,Math.ceil(el.clientWidth/step));const room=Math.floor((items.length-visible)/2);// never park more than the scroll range can actually hold\nconst range=Math.floor((el.scrollWidth-el.clientWidth)/step)-1;return Math.max(1,Math.min(Math.max(2,visible),room,Math.max(1,range)));};/**\n             * A track can only recycle if it has more than (k+1) steps of scroll\n             * range: the threshold has to be reachable. Anwendungsgebiete has 5\n             * cards and ~4 visible at 1440, so its range is 790px against a\n             * 444px step - the recycler's 887px threshold sits past maxScroll and\n             * the drag dead-ended there. When that happens, behave like a bounded\n             * carousel instead of getting stuck.\n             */const canLoop=()=>{if(!looping||items.length<3)return false;const step=getStep();if(!step)return false;return el.scrollWidth-el.clientWidth>=2*step-2;};const recycle=()=>{if(!canLoop())return;const step=getStep();if(!step)return;const k=parkK();let guard=0;while(pos>=(k+1)*step-1&&guard++<60){rotate(1);pos-=step;target-=step;}while(pos<k*step-1&&guard++<60){rotate(-1);pos+=step;target+=step;}};const clampTarget=()=>{if(canLoop())return;const max=Math.max(0,el.scrollWidth-el.clientWidth);target=Math.max(0,Math.min(target,max));};let last=0;const tick=now=>{// never ease off a zero timestamp: `now - 0` clamps to the 64ms\n// ceiling and jumped 51% of the step in the very first frame\nif(!last){last=now;raf=requestAnimationFrame(tick);return;}const dt=Math.min(64,now-last);last=now;const d=target-pos;if(Math.abs(d)<.6){pos=target;recycle();write(pos);settle();return;}pos+=d*(1-Math.exp(-dt/90));recycle();write(pos);raf=requestAnimationFrame(tick);};const settle=()=>{running=false;el.style.scrollSnapType=\"\";};const start=()=>{if(running)return;running=true;el.style.scrollSnapType=\"none\";last=0;raf=requestAnimationFrame(tick);};const stopAnimation=()=>{cancelAnimationFrame(raf);if(running)settle();pos=el.scrollLeft;target=pos;};const syncFromDom=()=>{pos=el.scrollLeft;target=pos;};const requestSteps=n=>{if(!n)return;const step=getStep();if(!step)return;window.clearTimeout(idle);if(!running){pos=el.scrollLeft;target=Math.round(pos/step)*step;}target=Math.round(target+n*step);if(!canLoop()){const max=Math.max(0,el.scrollWidth-el.clientWidth);if(target>max+1){pos=0;write(0);target=0;}else if(target<-1){pos=max;write(max);target=max;}}clampTarget();start();};ctrl.current={requestSteps,stopAnimation,syncFromDom};const prime=()=>{if(!collect())return;if(!looping||items.length<3){applyOrder();return;}const step=measureStep();if(!step)return;applyOrder();const k=parkK();if(Math.abs(el.scrollLeft-k*step)>1){rot=0;for(let i=0;i<k;i++)rotate(-1);pos=k*step;target=pos;write(pos);}};prime();/**\n             * Recycle DURING a user-driven scroll.\n             *\n             * `recycle()` used to be reachable only from the rAF tick (not running\n             * during momentum) and from the idle settle (whose timer every momentum\n             * scroll event reset). A fling therefore hit a hard wall.\n             */const userFrame=()=>{if(running){userRaf=0;return;}pos=el.scrollLeft;recycle();if(Math.abs(el.scrollLeft-pos)>.5)write(pos);userRaf=requestAnimationFrame(userFrame);};const onScroll=()=>{if(selfWrite||running)return;if(!userRaf)userRaf=requestAnimationFrame(userFrame);window.clearTimeout(idle);idle=window.setTimeout(()=>{cancelAnimationFrame(userRaf);userRaf=0;if(running)return;const step=measureStep();if(!step)return;pos=el.scrollLeft;target=pos;clampTarget();// clamp BEFORE rounding: rounding first put the target beyond\n// maxScroll and made the tail of the last slide unreachable\ntarget=Math.round(target/step)*step;clampTarget();if(Math.abs(target-pos)>1)start();else{recycle();write(pos);}restartAutoplay.current?.();},130);};el.addEventListener(\"scroll\",onScroll,{passive:true});let lastCount=items.length;const mo=new MutationObserver(()=>{const n=collect();if(!n)return;if(n!==lastCount){rot=0;lastCount=n;measureStep();}applyOrder();});mo.observe(el,{childList:true,subtree:true});const t1=setTimeout(prime,300);const t2=setTimeout(prime,900);const ro=new ResizeObserver(()=>{if(!running){measureStep();prime();}});ro.observe(el);return()=>{cancelAnimationFrame(raf);cancelAnimationFrame(userRaf);ro.disconnect();el.removeEventListener(\"scroll\",onScroll);window.clearTimeout(idle);mo.disconnect();clearTimeout(t1);clearTimeout(t2);ctrl.current=null;items.forEach(it=>{it.style.order=\"\";});el.removeAttribute(\"data-oxy-loop\");};},[]);/** mouse click-and-drag panning */useEffect(()=>{const el=node.current;if(!el)return;let down=false;let dragging=false;let x0=0;let left0=0;// Native HTML5 drag fires `dragstart` and then POINTERCANCEL - `pointerup`\n// never arrives, so `down`/`dragging` stayed true forever and the track\n// panned on a bare hover. Suppressing dragstart keeps the pointer stream.\nconst onDragStart=e=>e.preventDefault();const onDown=e=>{if(e.pointerType!==\"mouse\"||e.button!==0)return;// a drag beginning mid-step used to be overwritten by the animator\nctrl.current?.stopAnimation();down=true;dragging=false;x0=e.clientX;left0=el.scrollLeft;};const onMove=e=>{if(!down)return;const dx=e.clientX-x0;if(!dragging&&Math.abs(dx)<6)return;if(!dragging){dragging=true;el.style.scrollSnapType=\"none\";el.setPointerCapture?.(e.pointerId);}el.scrollLeft=left0-dx;e.preventDefault();};const onUp=e=>{if(!down)return;down=false;if(dragging){el.style.scrollSnapType=\"\";try{el.releasePointerCapture?.(e.pointerId);}catch{}const kill=ev=>{ev.stopPropagation();ev.preventDefault();};el.addEventListener(\"click\",kill,{capture:true,once:true});window.setTimeout(()=>el.removeEventListener(\"click\",kill,true),0);ctrl.current?.syncFromDom();el.dispatchEvent(new Event(\"scroll\"));}dragging=false;};el.addEventListener(\"dragstart\",onDragStart);el.addEventListener(\"pointerdown\",onDown);window.addEventListener(\"pointermove\",onMove,{passive:false});window.addEventListener(\"pointerup\",onUp);// both of these fire INSTEAD of pointerup in the cancelled cases\nwindow.addEventListener(\"pointercancel\",onUp);window.addEventListener(\"lostpointercapture\",onUp);return()=>{el.removeEventListener(\"dragstart\",onDragStart);el.removeEventListener(\"pointerdown\",onDown);window.removeEventListener(\"pointermove\",onMove);window.removeEventListener(\"pointerup\",onUp);window.removeEventListener(\"pointercancel\",onUp);window.removeEventListener(\"lostpointercapture\",onUp);};},[]);/** autoplay as a restartable countdown, not a fixed-cadence interval */useEffect(()=>{const el=node.current;const ms=AUTOPLAY[key]||0;if(!el||!ms)return;if(typeof window===\"undefined\")return;if(window.matchMedia?.(\"(prefers-reduced-motion: reduce)\").matches)return;let paused=false;let timer=0;const schedule=()=>{window.clearTimeout(timer);timer=window.setTimeout(fire,ms);};function fire(){if(paused||document.hidden){schedule();return;}ctrl.current?.requestSteps(1);schedule();}const stop=()=>{paused=true;window.clearTimeout(timer);};const go=()=>{paused=false;schedule();};el.addEventListener(\"mouseenter\",stop);el.addEventListener(\"mouseleave\",go);el.addEventListener(\"touchstart\",stop,{passive:true});el.addEventListener(\"touchend\",go,{passive:true});el.addEventListener(\"focusin\",stop);el.addEventListener(\"focusout\",go);const onVis=()=>{if(document.hidden)window.clearTimeout(timer);else schedule();};document.addEventListener(\"visibilitychange\",onVis);restartAutoplay.current=()=>{if(!paused)schedule();};schedule();return()=>{window.clearTimeout(timer);el.removeEventListener(\"mouseenter\",stop);el.removeEventListener(\"mouseleave\",go);el.removeEventListener(\"touchstart\",stop);el.removeEventListener(\"touchend\",go);el.removeEventListener(\"focusin\",stop);el.removeEventListener(\"focusout\",go);document.removeEventListener(\"visibilitychange\",onVis);restartAutoplay.current=null;};},[]);/** drain every queued step, even if React batched the clicks together */useEffect(()=>{if(applied.current===null){applied.current=state.seq;return;}const d=state.seq-applied.current;if(!d)return;applied.current=state.seq;ctrl.current?.requestSteps(d);restartAutoplay.current?.();},[state.seq]);const setRef=n=>{node.current=n;if(typeof ref===\"function\")ref(n);else if(ref)ref.current=n;};const cls=[\"oxy-carousel-track\",props.className].filter(Boolean).join(\" \");return /*#__PURE__*/_jsx(Component,{...props,ref:setRef,className:cls,\"data-oxy-multi\":MULTILIST[key]?\"\":undefined});});}function navImpl(key,dir,Component){return props=>{const[,push]=useBus(key);const fire=e=>{props.onClick?.(e);push(dir);};return /*#__PURE__*/_jsx(Component,{...props,role:\"button\",tabIndex:0,\"aria-label\":dir<0?\"Vorheriger Slide\":\"N\\xe4chster Slide\",style:{...props.style,cursor:\"pointer\"},onClick:fire,onKeyDown:e=>{if(e.key===\"Enter\"||e.key===\" \"){e.preventDefault();fire(e);}}});};}/* Anwendungsgebiete */export function anwTrack(Component){return trackImpl(\"anw\",Component);}export function anwPrev(Component){return navImpl(\"anw\",-1,Component);}export function anwNext(Component){return navImpl(\"anw\",1,Component);}/* Kundenstimmen */export function tesTrack(Component){return trackImpl(\"tes\",Component);}export function tesPrev(Component){return navImpl(\"tes\",-1,Component);}export function tesNext(Component){return navImpl(\"tes\",1,Component);}/* FAQ Videos */export function faqTrack(Component){return trackImpl(\"faq\",Component);}export function faqPrev(Component){return navImpl(\"faq\",-1,Component);}export function faqNext(Component){return navImpl(\"faq\",1,Component);}/* Partner-Rezensionen (Ueber uns)\n *\n * Each slide is a 2×2 page holding four reviews, so one bus step already is\n * one page turn — hence dir = ±1. With only two pages the recycler cannot\n * run (it needs three slides and two steps of runway); requestSteps' bounded\n * branch then wraps from the last page back to the first, which is the same\n * endless behaviour from the visitor's side. */const PAR_PAGE=1;export function parTrack(Component){return trackImpl(\"par\",Component);}export function parPrev(Component){return navImpl(\"par\",-PAR_PAGE,Component);}export function parNext(Component){return navImpl(\"par\",PAR_PAGE,Component);}/* Impressionen-Galerie */export function galTrack(Component){return trackImpl(\"gal\",Component);}export function galPrev(Component){return navImpl(\"gal\",-1,Component);}export function galNext(Component){return navImpl(\"gal\",1,Component);}/* ---- Footer link-group accordion ---- */const ACC_STYLE_ID=\"oxy-acc-style\";function injectAccStyle(){if(typeof document===\"undefined\")return;if(document.getElementById(ACC_STYLE_ID))return;const s=document.createElement(\"style\");s.id=ACC_STYLE_ID;s.textContent=\".oxy-acc{cursor:pointer;}\"+'.oxy-acc[data-open=\"false\"] > *:last-child{display:none;}'+\".oxy-acc svg{transition:transform .2s cubic-bezier(0.44,0,0.56,1);}\"+'.oxy-acc[data-open=\"true\"] svg{transform:rotate(180deg);}';document.head.appendChild(s);}export function footerGroup(Component){return props=>{const[open,setOpen]=useState(false);useEffect(injectAccStyle,[]);const cls=[\"oxy-acc\",props.className].filter(Boolean).join(\" \");return /*#__PURE__*/_jsx(Component,{...props,className:cls,\"data-open\":open?\"true\":\"false\",onClick:e=>{const tag=e.target?.closest?.(\"a\");if(tag)return;props.onClick?.(e);setOpen(o=>!o);}});};}/* ---- Testimonial \"Weiterlesen\" expander ---- */const Q_STYLE_ID=\"oxy-quote-style\";function injectQuoteStyle(){if(typeof document===\"undefined\")return;if(document.getElementById(Q_STYLE_ID))return;const s=document.createElement(\"style\");s.id=Q_STYLE_ID;s.textContent=\".oxy-quote [data-oxy-long]{display:none !important;}\"+'.oxy-quote[data-open=\"true\"] [data-oxy-long]{display:block !important;}'+'.oxy-quote[data-open=\"true\"] [data-oxy-short]{display:none !important;}';document.head.appendChild(s);}/**\n * Apply to the testimonial card. Marks the 2nd text child as the short quote and\n * the 3rd as the full quote, then toggles them when \"Weiterlesen\" is clicked.\n */export function quoteToggle(Component){return props=>{const[open,setOpen]=useState(false);const ref=useRef(null);useEffect(injectQuoteStyle,[]);useEffect(()=>{const el=ref.current;if(!el)return;const texts=el.querySelectorAll(\"[data-framer-component-type='RichTextContainer']\");// short = index 1, long = index 2, trigger = index 3\ntexts[1]?.setAttribute(\"data-oxy-short\",\"\");texts[2]?.setAttribute(\"data-oxy-long\",\"\");});return /*#__PURE__*/_jsx(Component,{...props,ref:n=>{ref.current=n;const r=props.ref;if(typeof r===\"function\")r(n);},className:[\"oxy-quote\",props.className].filter(Boolean).join(\" \"),\"data-open\":open?\"true\":\"false\",onClick:e=>{const txt=e.target?.textContent||\"\";if(/Weiterlesen|Weniger/.test(txt)){props.onClick?.(e);setOpen(o=>!o);}},style:{...props.style,cursor:\"default\"}});};}/* Meetingraum image gallery */export function mtgTrack(Component){return trackImpl(\"mtg\",Component);}export function mtgPrev(Component){return navImpl(\"mtg\",-1,Component);}export function mtgNext(Component){return navImpl(\"mtg\",1,Component);}/* Equipment / feature card rows */export function eqpTrack(Component){return trackImpl(\"eqp\",Component);}export function eqpPrev(Component){return navImpl(\"eqp\",-1,Component);}export function eqpNext(Component){return navImpl(\"eqp\",1,Component);}/* Themen scroller on the Anwendungsgebiete detail pages */export function thmTrack(Component){return trackImpl(\"thm\",Component);}export function thmPrev(Component){return navImpl(\"thm\",-1,Component);}export function thmNext(Component){return navImpl(\"thm\",1,Component);}/**\n * Nav polish: the target marks no current page and never underlines nav links.\n * Framer's link-style preset adds both, and preset nodes are not reachable\n * through the plugin API, so neutralise them with scoped CSS instead.\n */const NAV_STYLE_ID=\"oxy-nav-style\";function injectNavStyle(){if(typeof document===\"undefined\")return;if(document.getElementById(NAV_STYLE_ID))return;const el=document.createElement(\"style\");el.id=NAV_STYLE_ID;el.textContent=`\n[data-oxy-nav] a,\n[data-oxy-nav] a:hover,\n[data-oxy-nav] a *,\n[data-oxy-nav] a:hover * { text-decoration: none !important; }\n[data-oxy-nav] a[data-framer-page-link-current],\n[data-oxy-nav] a[data-framer-page-link-current] * {\n    color: var(--token-9940a073-e448-4d16-a709-83691efe1b39) !important;\n}\n[data-oxy-nav] a[data-framer-page-link-current]:hover,\n[data-oxy-nav] a[data-framer-page-link-current]:hover * {\n    color: var(--token-b695e474-4a68-4bc7-9c18-b3850022d2a7) !important;\n}\n`;document.head.appendChild(el);}export function navPolish(Component){return props=>{useEffect(injectNavStyle,[]);return /*#__PURE__*/_jsx(Component,{...props,\"data-oxy-nav\":\"\"});};}/**\n * Anwendungsgebiete cards: the target reveals a copy panel with the short\n * description and a \"Mehr erfahren\" affordance over the image on hover.\n */const FLIP_STYLE_ID=\"oxy-flipcard-style\";function injectFlipStyle(){if(typeof document===\"undefined\")return;if(document.getElementById(FLIP_STYLE_ID))return;const el=document.createElement(\"style\");el.id=FLIP_STYLE_ID;/**\n     * A genuine CSS flip-box, matching the target's\n     * `matrix3d(-1,0,0,0, 0,1,0,0, 0,0,-1,0, ...)` (= rotateY(180deg)) with\n     * `transition: transform .33s`.\n     *\n     * The HOVER TARGET MUST NOT BE THE ROTATING ELEMENT. Under perspective a\n     * rotating card foreshortens, so a pointer near its edge falls outside the\n     * element mid-flip, :hover drops, it rotates back, the pointer is inside\n     * again — an endless stuttering loop. The outer card therefore stays\n     * untransformed at a constant 414x360 and only the inner wrapper rotates.\n     */el.textContent=`\n[data-oxy-flipcard] {\n    perspective: 1400px;\n    transform: none;\n}\n[data-oxy-flipcard] [data-oxy-flipinner] {\n    transform-style: preserve-3d;\n    transform: rotateY(0deg);\n    transition: transform .33s cubic-bezier(.4,0,.2,1);\n    will-change: transform;\n}\n[data-oxy-flipcard]:hover [data-oxy-flipinner],\n[data-oxy-flipcard]:focus-within [data-oxy-flipinner] {\n    transform: rotateY(180deg);\n}\n[data-oxy-flipinner] > * {\n    backface-visibility: hidden;\n    -webkit-backface-visibility: hidden;\n}\n[data-oxy-flipinner] > [data-oxy-back] {\n    transform: rotateY(180deg);\n}\n@media (prefers-reduced-motion: reduce) {\n    [data-oxy-flipcard] [data-oxy-flipinner] { transition: none; }\n}\n@media (hover: none) {\n    /* no hover on touch: show the front permanently rather than never flipping */\n    [data-oxy-flipcard] [data-oxy-flipinner] { transform: none; }\n    [data-oxy-flipinner] > [data-oxy-back] { display: none; }\n}\n`;document.head.appendChild(el);}export function flipCard(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const node=useRef(null);useEffect(injectFlipStyle,[]);useEffect(()=>{const el=node.current;if(!el)return;const mark=()=>{// the inner wrapper holds both faces; it is what rotates\nconst inner=Array.from(el.children).find(k=>k.children.length>=2)||el.firstElementChild;if(!inner)return;inner.setAttribute(\"data-oxy-flipinner\",\"\");const faces=Array.from(inner.children);faces.forEach(f=>f.removeAttribute(\"data-oxy-back\"));const back=faces.find(f=>/Mehr erfahren/i.test(f.textContent||\"\"));if(back)back.setAttribute(\"data-oxy-back\",\"\");};mark();const mo=new MutationObserver(mark);mo.observe(el,{childList:true,subtree:true});const t=setTimeout(mark,400);return()=>{mo.disconnect();clearTimeout(t);};},[]);const setRef=n=>{node.current=n;if(typeof ref===\"function\")ref(n);else if(ref)ref.current=n;};return /*#__PURE__*/_jsx(Component,{...props,ref:setRef,\"data-oxy-flipcard\":\"\"});});}/**\n * FAQ list: the target opens the first question by default and keeps exactly\n * one question open. The FAQ item is a shared component whose variants must\n * not be touched, so drive it from the outside by replaying clicks.\n */function faqItems(el){const collect=root=>{const out=[];const visit=node=>{for(const child of Array.from(node.children)){const r=child.getBoundingClientRect();const cs=getComputedStyle(child);if(r.height>20&&cs.display!==\"contents\"&&(child.textContent||\"\").trim())out.push(child);else visit(child);}};visit(root);return out;};// peel off single-child wrappers (collection list, breakpoint variants)\n// until we reach the level that holds the repeated question rows\nlet cur=el;for(let d=0;d<6;d++){const found=collect(cur);if(found.length>=3)return found;if(found.length===1){cur=found[0];continue;}return found;}return[];}/** Framer's tap handlers listen on pointer events, so a bare .click() is ignored */function tap(el){const r=el.getBoundingClientRect();const clientX=r.left+Math.min(40,r.width/2);const clientY=r.top+Math.min(20,r.height/2);const base={bubbles:true,cancelable:true,composed:true,clientX,clientY,pointerId:1,pointerType:\"mouse\",isPrimary:true,button:0};el.dispatchEvent(new PointerEvent(\"pointerdown\",{...base,buttons:1}));el.dispatchEvent(new PointerEvent(\"pointerup\",{...base,buttons:0}));el.dispatchEvent(new MouseEvent(\"click\",{...base,buttons:0}));}/** the tappable header inside a FAQ item (the node Framer put the toggle on) */function toggleOf(item){const all=[item,...Array.from(item.querySelectorAll(\"*\"))];return all.find(n=>getComputedStyle(n).cursor===\"pointer\")||item;}/** an open item is clearly taller than the shortest (collapsed) item */function openState(items){const hs=items.map(i=>i.getBoundingClientRect().height);const min=Math.min(...hs);return hs.map(h=>h>min+30);}export function faqGroup(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const node=useRef(null);const busy=useRef(false);useEffect(()=>{const el=node.current;if(!el)return;const onClick=e=>{if(busy.current)return;const items=faqItems(el);const hit=items.find(it=>it.contains(e.target));if(!hit)return;busy.current=true;// let the clicked item toggle first, then collapse the others\nwindow.setTimeout(()=>{const now=faqItems(el);const open=openState(now);now.forEach((it,i)=>{if(it===hit||it.contains(hit)||hit.contains(it))return;if(open[i])tap(toggleOf(it));});window.setTimeout(()=>{busy.current=false;},150);},60);};el.addEventListener(\"click\",onClick);// open the first question once the list has rendered\nlet done=false;const openFirst=()=>{if(done)return;const items=faqItems(el);if(items.length<2)return;done=true;if(!openState(items)[0]){busy.current=true;tap(toggleOf(items[0]));window.setTimeout(()=>{busy.current=false;},250);}};const t1=setTimeout(openFirst,350);const t2=setTimeout(openFirst,900);return()=>{el.removeEventListener(\"click\",onClick);clearTimeout(t1);clearTimeout(t2);};},[]);const setRef=n=>{node.current=n;if(typeof ref===\"function\")ref(n);else if(ref)ref.current=n;};return /*#__PURE__*/_jsx(Component,{...props,ref:setRef});});}/**\n * Topic tabs: a pill row followed by one panel per pill. The first child is the\n * pill row, every later child is a panel. Only the active panel stays in flow.\n */const TABS_STYLE_ID=\"oxy-tabs-style\";function injectTabsStyle(){if(typeof document===\"undefined\")return;if(document.getElementById(TABS_STYLE_ID))return;const el=document.createElement(\"style\");el.id=TABS_STYLE_ID;el.textContent=`\n[data-oxy-tabs] [data-oxy-panel]:not([data-active]) { display: none !important; }\n[data-oxy-tab] { cursor: pointer; }\n[data-oxy-tab][data-active] {\n    background: var(--token-b695e474-4a68-4bc7-9c18-b3850022d2a7) !important;\n    border-color: var(--token-b695e474-4a68-4bc7-9c18-b3850022d2a7) !important;\n}\n[data-oxy-tab][data-active] .framer-text,\n[data-oxy-tab][data-active] p,\n[data-oxy-tab][data-active] span {\n    color: var(--token-e105fbe8-f9a2-4560-861c-de713f83f3cc) !important;\n}\n`;document.head.appendChild(el);}function realChildren(el){const out=[];const visit=n=>{for(const c of Array.from(n.children)){const cs=getComputedStyle(c);if(cs.display===\"contents\"||c.getBoundingClientRect().width<2&&!c.hasAttribute(\"data-oxy-panel\"))visit(c);else out.push(c);}};visit(el);return out;}export function topicTabs(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const node=useRef(null);useEffect(injectTabsStyle,[]);useEffect(()=>{const el=node.current;if(!el)return;let cleanup=[];const wire=()=>{cleanup.forEach(f=>f());cleanup=[];const kids=realChildren(el);if(kids.length<2)return;el.setAttribute(\"data-oxy-tabs\",\"\");const pillRow=kids[0];const panels=kids.slice(1);const pills=realChildren(pillRow);if(!pills.length||!panels.length)return;panels.forEach(pn=>pn.setAttribute(\"data-oxy-panel\",\"\"));const select=i=>{pills.forEach((pl,n)=>n===i?pl.setAttribute(\"data-active\",\"\"):pl.removeAttribute(\"data-active\"));panels.forEach((pn,n)=>n===i?pn.setAttribute(\"data-active\",\"\"):pn.removeAttribute(\"data-active\"));};pills.forEach((pl,i)=>{pl.setAttribute(\"data-oxy-tab\",\"\");pl.setAttribute(\"role\",\"button\");pl.setAttribute(\"tabindex\",\"0\");const onClick=e=>{e.preventDefault();select(i);};const onKey=e=>{if(e.key===\"Enter\"||e.key===\" \"){e.preventDefault();select(i);}};pl.addEventListener(\"click\",onClick);pl.addEventListener(\"keydown\",onKey);cleanup.push(()=>{pl.removeEventListener(\"click\",onClick);pl.removeEventListener(\"keydown\",onKey);});});select(0);};wire();const t1=setTimeout(wire,400);const t2=setTimeout(wire,1e3);return()=>{cleanup.forEach(f=>f());clearTimeout(t1);clearTimeout(t2);};},[]);const setRef=n=>{node.current=n;if(typeof ref===\"function\")ref(n);else if(ref)ref.current=n;};return /*#__PURE__*/_jsx(Component,{...props,ref:setRef});});}/**\n * Pill button hover fix.\n *\n * The shared Pill Button's hover variants chop the pill to\n * `border-radius: 100px 0 0 100px` and give the adjacent Circle\n * `0 100px 100px 0`, so the two merge into one continuous pill. That is correct\n * ONLY while the circle is visible. Every Oxyroom CTA sets\n * `circleVisible = false` to match the target, which left the pill visibly\n * chopped flat on its right edge as soon as you hovered it.\n *\n * The variants are shared with the template pages, so they must not be edited.\n * This marks buttons that have no visible circle and restores the full radius,\n * plus the target's actual hover behaviour: a ~5% scale-up\n * (measured 137x55 -> 144x58, `transition: .3s`, radius unchanged at 30px).\n */const PILL_STYLE_ID=\"oxy-pill-style\";function injectPillStyle(){if(typeof document===\"undefined\")return;if(document.getElementById(PILL_STYLE_ID))return;const el=document.createElement(\"style\");el.id=PILL_STYLE_ID;el.textContent=`\n[data-oxy-pill] { transition: transform .3s ease; transform-origin: center; }\n[data-oxy-pill]:hover { transform: scale(1.05); }\n[data-oxy-pill][data-oxy-nocircle] [data-oxy-pillshape] {\n    border-radius: 100px !important;\n}\n/* Target pill scale: 59 / 51 / 49px tall at >=1025 / <=1024 / <=550 — one\n   notch larger than before (2026-08-28), matching the Pill/Outline components\n   whose canvas padding is now 20/30. The shared component's size enum cannot\n   express this, so it is driven here. Heights are padY*2 + the 19px\n   line-height. */\n[data-oxy-pill] [data-oxy-pillshape] {\n    padding: 20px 30px !important;\n    min-height: 0 !important;\n}\n[data-oxy-pill] { min-height: 0 !important; }\n@media (max-width: 1024px) {\n    [data-oxy-pill] [data-oxy-pillshape] { padding: 16px 20px !important; }\n}\n@media (max-width: 550px) {\n    [data-oxy-pill] [data-oxy-pillshape] { padding: 15px 25px !important; }\n}\n@media (prefers-reduced-motion: reduce) {\n    [data-oxy-pill] { transition: none; }\n    [data-oxy-pill]:hover { transform: none; }\n}\n`;document.head.appendChild(el);}/**\n * Header buttons.\n *\n * The two buttons in the Header 10 nav bar must be the SAME height, and the\n * smaller of the two was the 51px outline button. The shared pill size (20/30,\n * = 59px) is one notch too tall here and eats width the six nav items need, so\n * the header pair is driven to 16/25 (= 51px) instead. One step more specific\n * than the generic pill rule so injection order cannot decide the winner.\n */const NAVPILL_STYLE_ID=\"oxy-navpill-style\";function injectNavPillStyle(){if(typeof document===\"undefined\")return;if(document.getElementById(NAVPILL_STYLE_ID))return;const el=document.createElement(\"style\");el.id=NAVPILL_STYLE_ID;el.textContent=`\n[data-oxy-pill][data-oxy-navpill] [data-oxy-pillshape] {\n    padding: 16px 25px !important;\n}\n\n/* The nav sits in a 1fr slot and centres its items, so on a wide screen the\n   items stay tight while the gaps left and right grow — it looks cramped in\n   the browser but fine on the 1200px canvas. The 15px base is what still fits\n   at 1200; wider viewports get room to breathe. */\n@media (min-width: 1400px) {\n    [data-framer-name=\"Navigation\"] { gap: 24px !important; }\n}\n@media (min-width: 1700px) {\n    [data-framer-name=\"Navigation\"] { gap: 32px !important; }\n}\n\n/* Mega menus: always centred under the bar, never under their own trigger.\n   Framer writes a per-trigger \\`left\\` onto the portal wrapper, which drifts as\n   soon as the nav spacing or the viewport changes — and the panels are almost\n   as wide as the bar anyway, so a shared centre is the only stable place.\n   The bar itself is centred (max 1300), so the viewport centre is its centre. */\n@media (min-width: 810px) {\n    [data-framer-portal-id]:has([data-framer-name=\"Mega Panel\"]) {\n        left: 50% !important;\n        right: auto !important;\n        transform: translateX(-50%) !important;\n    }\n}\n`;document.head.appendChild(el);}let pillObserver=null;/** Mark every pill button in the document. The Pill Button component does not\n *  forward a ref, so the override cannot reach its own DOM node — the marker\n *  attribute arrives via props and we find the elements from the document. */function markPills(){if(typeof document===\"undefined\")return;const roots=Array.from(document.querySelectorAll(\"[data-oxy-pill]\"));for(const el of roots){const kids=Array.from(el.querySelectorAll(\"*\"));// the pill is the outermost rounded shape - it may be filled (accent\n// buttons) or only bordered (outline buttons), so match on radius\nconst shapes=kids.filter(k=>{const cs=getComputedStyle(k);const bg=cs.backgroundColor;const filled=!!bg&&bg!==\"rgba(0, 0, 0, 0)\"&&bg!==\"transparent\";const bordered=parseFloat(cs.borderTopWidth)>0;return(filled||bordered)&&parseFloat(cs.borderTopLeftRadius)>=12;});if(!shapes.length)continue;const boxes=shapes.map(k=>({k,r:k.getBoundingClientRect()}));const widest=boxes.reduce((a,b)=>b.r.width>a.r.width?b:a,boxes[0]);kids.forEach(k=>k.removeAttribute(\"data-oxy-pillshape\"));widest.k.setAttribute(\"data-oxy-pillshape\",\"\");// a circle is roughly square and clearly narrower than the pill itself\nconst hasCircle=boxes.some(o=>o.k!==widest.k&&o.r.width>8&&Math.abs(o.r.width-o.r.height)<6);if(hasCircle)el.removeAttribute(\"data-oxy-nocircle\");else el.setAttribute(\"data-oxy-nocircle\",\"\");}}function startPillObserver(){if(typeof document===\"undefined\"||pillObserver)return;let queued=0;pillObserver=new MutationObserver(()=>{window.clearTimeout(queued);queued=window.setTimeout(markPills,60);});pillObserver.observe(document.body,{childList:true,subtree:true});}export function pillFix(Component){return props=>{useEffect(()=>{injectPillStyle();markPills();startPillObserver();const t1=setTimeout(markPills,300);const t2=setTimeout(markPills,1e3);return()=>{clearTimeout(t1);clearTimeout(t2);};},[]);return /*#__PURE__*/_jsx(Component,{...props,\"data-oxy-pill\":\"\"});};}/** Same as `pillFix`, plus the header-only size rule. Apply to the two\n *  buttons that sit in the Header 10 nav bar. */export function navPill(Component){const Wrapped=pillFix(Component);return props=>{useEffect(injectNavPillStyle,[]);return /*#__PURE__*/_jsx(Wrapped,{...props,\"data-oxy-navpill\":\"\"});};}/**\n * The chat greeting bubble.\n *\n * Three things cannot be expressed on the canvas:\n *\n * 1. Framer allows exactly ONE trigger per fixed overlay, and that trigger is\n *    the launcher. A click on the bubble is therefore forwarded to it.\n * 2. Framer's own appear animation never started for this layer (it stayed at\n *    the enter state, `opacity: .001`), so the fade-in is done here. The canvas\n *    effect is kept on purpose: it renders the hidden start state into the HTML,\n *    which avoids a flash before this runs.\n * 3. \"Dismissed\" has to survive a remount. Framer re-renders the rail when the\n *    panel closes, which wiped the old inline `opacity: 0` and brought the\n *    greeting back — and left the cross wired to detached nodes, so it only\n *    ever worked once. The state now lives as an attribute on <html> with a\n *    stylesheet behind it, and every listener is delegated on the document.\n */const GREETING_SELECTOR='[data-framer-name=\"Begruessung\"]';const GREETING_CROSS_SELECTOR='[data-framer-name=\"Blase schliessen\"]';const CHAT_LAUNCHER_SELECTOR='[data-framer-name=\"Chat Button\"]';const CHAT_PANEL_SELECTOR='[data-framer-name=\"Chat Panel\"]';/** Set on <html> once the greeting is done for this page view. */const GREETING_FLAG=\"data-oxy-chat-greeted\";/** Set on <html> while the chat panel is open — turns the launcher into a ×. */const CHAT_OPEN_FLAG=\"data-oxy-chat-open\";/** Set while the mobile nav menu covers the screen. */const NAV_OPEN_FLAG=\"data-oxy-nav-open\";/** The header component renders this variant name while its menu is open. */const MOBILE_MENU_SELECTOR='[data-framer-name=\"Mobil\"]';const GREETING_STYLE_ID=\"oxy-chat-greeting-style\";const EASE=\"cubic-bezier(.2,.8,.2,1)\";/** The delegation is registered once and deliberately never torn down. */let greetingWired=false;function injectGreetingStyle(){if(typeof document===\"undefined\")return;if(document.getElementById(GREETING_STYLE_ID))return;const el=document.createElement(\"style\");el.id=GREETING_STYLE_ID;el.textContent=`\nhtml[${GREETING_FLAG}] ${GREETING_SELECTOR} { display: none !important; }\n\n/* Launcher doubles as the close button: while the panel is open it turns dark\n   and swaps the chat bubble for a \\xd7. Framer's SHOW_OVERLAY is a toggle, so the\n   same tap that opened the panel closes it again — no second trigger needed\n   (a fixed overlay accepts exactly one). */\n/* Both icons sit stacked in the same spot; only their opacity differs, so the\n   launcher never briefly shows two symbols before this stylesheet lands.\n   Centred here rather than by pixel pins: the launcher is 58px on desktop and\n   54px on phones, so a fixed inset would be off by 2px on one of them. */\n[data-framer-name=\"Chat Icon\"],\n[data-framer-name=\"Chat Icon X\"] {\n    left: 50% !important;\n    top: 50% !important;\n    right: auto !important;\n    bottom: auto !important;\n    transform: translate(-50%, -50%) !important;\n    transition: opacity .15s ${EASE};\n}\nhtml[${CHAT_OPEN_FLAG}] [data-framer-name=\"Chat Icon\"] { opacity: 0 !important; }\nhtml[${CHAT_OPEN_FLAG}] [data-framer-name=\"Chat Icon X\"] { opacity: 1 !important; }\nhtml[${CHAT_OPEN_FLAG}] ${CHAT_LAUNCHER_SELECTOR} {\n    background-color: var(--token-e7ed87ab-346e-4e30-a43a-d8dbaeab14b4, #000) !important;\n    transition: background-color .2s ${EASE};\n}\n${CHAT_LAUNCHER_SELECTOR} { transition: background-color .2s ${EASE}; }\n\n/* The site header is fixed at z-index 20 and would sit on top of the panel —\n   most visibly on phones, where the panel is full screen. It steps aside for\n   as long as the chat is open. */\n/* Only on phones: there the panel is full screen and the fixed header would\n   sit inside it. On desktop the panel floats next to the header, so the header\n   stays put. */\n@media (max-width: 809px) {\n    html[${CHAT_OPEN_FLAG}] [data-framer-name=\"Website Header\"] {\n        opacity: 0 !important;\n        visibility: hidden !important;\n        pointer-events: none !important;\n        transition: opacity .2s ${EASE};\n    }\n}\n[data-framer-name=\"Website Header\"] { transition: opacity .2s ${EASE}; }\n\n/* On desktop the launcher itself is the close button, so the panel head does\n   not need a second \\xd7. On phones it stays: there the panel is full screen and\n   covers the launcher. */\n@media (min-width: 810px) {\n    ${CHAT_PANEL_SELECTOR} [data-framer-name=\"Schliessen\"] { display: none !important; }\n}\n\n/* The mobile nav menu is full screen; the chat launcher must not float on top\n   of it. */\nhtml[${NAV_OPEN_FLAG}] [data-framer-name=\"Chat Rail\"] { display: none !important; }\n`;document.head.appendChild(el);}function greetingDismissed(){return document.documentElement.hasAttribute(GREETING_FLAG);}/** Closing the bubble — or opening the panel — hides it for good: from then on\n *  only the gold launcher remains, including after the panel is closed again. */function dismissGreeting(){document.documentElement.setAttribute(GREETING_FLAG,\"\");}function revealGreeting(){if(greetingDismissed())return;const bubble=document.querySelector(GREETING_SELECTOR);if(!bubble)return;if(bubble.style.opacity===\"1\")return;bubble.style.transition=`opacity .45s ${EASE}, transform .45s ${EASE}`;bubble.style.opacity=\"1\";bubble.style.transform=\"none\";}function openChat(){const launcher=document.querySelector(CHAT_LAUNCHER_SELECTOR);if(!launcher)return;const rect=launcher.getBoundingClientRect();const base={bubbles:true,cancelable:true,clientX:rect.x+rect.width/2,clientY:rect.y+rect.height/2,pointerId:1,isPrimary:true,button:0};launcher.dispatchEvent(new PointerEvent(\"pointerdown\",{...base,buttons:1}));launcher.dispatchEvent(new PointerEvent(\"pointerup\",{...base,buttons:0}));launcher.dispatchEvent(new MouseEvent(\"click\",base));}export function chatGreetingClose(Component){return props=>{useEffect(()=>{if(RenderTarget.current()===RenderTarget.canvas)return;injectGreetingStyle();const revealTimer=window.setTimeout(revealGreeting,1200);if(greetingWired)return()=>window.clearTimeout(revealTimer);greetingWired=true;/* Capture phase: the cross sits INSIDE the bubble, so it has to win\n               before the bubble's own \"open the chat\" handler runs. */const onClick=event=>{const target=event.target;if(!target?.closest)return;if(target.closest(GREETING_CROSS_SELECTOR)){event.preventDefault();event.stopPropagation();dismissGreeting();return;}if(target.closest(GREETING_SELECTOR))openChat();};document.addEventListener(\"click\",onClick,true);const observer=new MutationObserver(()=>{const open=!!document.querySelector(CHAT_PANEL_SELECTOR);document.documentElement.toggleAttribute(CHAT_OPEN_FLAG,open);document.documentElement.toggleAttribute(NAV_OPEN_FLAG,!!document.querySelector(MOBILE_MENU_SELECTOR));if(open){dismissGreeting();return;}revealGreeting();});observer.observe(document.body,{childList:true,subtree:true});return()=>window.clearTimeout(revealTimer);},[]);return /*#__PURE__*/_jsx(Component,{...props});};}/**\n * \"Ergebnis\" check list.\n *\n * The target renders each result as a white pill row with a gold check circle\n * on the left. The content is a CMS rich-text <ul>, so the markup is fixed and\n * only CSS can shape it — styled here rather than in the DSL.\n */const CHECK_STYLE_ID=\"oxy-checklist-style\";function injectCheckStyle(){if(typeof document===\"undefined\")return;if(document.getElementById(CHECK_STYLE_ID))return;const el=document.createElement(\"style\");el.id=CHECK_STYLE_ID;el.textContent=`\n/* Reset Framers eigene Listen-Optik. Framer setzt den Bullet als\n   ul.framer-text > li.framer-text::before { content: \"•\" } — hoehere\n   Spezifitaet als ein einfacher [attr]-Selektor. Deshalb hier bewusst\n   ul.framer-text > li.framer-text und zusaetzlich !important auf den\n   beiden Properties, auf die Framer zugreift. */\n[data-oxy-checklist] ul,\n[data-oxy-checklist] ul.framer-text {\n    list-style: none;\n    margin: 0;\n    padding: 0;\n    display: flex;\n    flex-direction: column;\n    gap: 14px;\n}\n[data-oxy-checklist] ul > li,\n[data-oxy-checklist] ul.framer-text > li.framer-text {\n    position: relative;\n    list-style: none;\n    display: flex;\n    align-items: center;\n    min-height: 61px;\n    padding: 7px 14px 7px 63px;\n    background: var(--token-47e99abd-ff52-46f4-bf25-005a362322d4);\n    border: 1px solid rgba(196, 196, 196, 0.5);\n    border-radius: 100px;\n    box-shadow: none;\n}\n[data-oxy-checklist] ul > li::marker,\n[data-oxy-checklist] ul.framer-text > li.framer-text::marker {\n    content: \"\";\n}\n[data-oxy-checklist] ul > li::before,\n[data-oxy-checklist] ul.framer-text > li.framer-text::before {\n    content: \"\" !important;\n    position: absolute;\n    left: 7px !important;\n    inset-inline-start: 7px !important;\n    top: 50%;\n    margin-top: -22.5px;\n    width: 45px;\n    height: 45px;\n    padding: 0;\n    display: block;\n    background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 21 22'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M0.34375 11C0.34375 5.39062 4.89062 0.84375 10.5 0.84375C16.1094 0.84375 20.6562 5.39062 20.6562 11C20.6562 16.6094 16.1094 21.1562 10.5 21.1562C4.89062 21.1562 0.34375 16.6094 0.34375 11ZM14.2604 9.11042C14.3229 9.02714 14.3681 8.9322 14.3934 8.8312C14.4187 8.73019 14.4235 8.62515 14.4077 8.52224C14.3918 8.41934 14.3555 8.32065 14.3009 8.23198C14.2463 8.1433 14.1746 8.06643 14.0899 8.00589C14.0051 7.94534 13.9092 7.90234 13.8076 7.8794C13.706 7.85647 13.6009 7.85408 13.4984 7.87236C13.3959 7.89064 13.2981 7.92922 13.2107 7.98584C13.1233 8.04247 13.0481 8.11599 12.9896 8.20208L9.61875 12.9208L7.92708 11.2292C7.77898 11.0912 7.5831 11.016 7.38071 11.0196C7.17831 11.0232 6.9852 11.1052 6.84206 11.2483C6.69892 11.3914 6.61693 11.5846 6.61336 11.787C6.60979 11.9894 6.68492 12.1852 6.82292 12.3333L9.16667 14.6771C9.24686 14.7572 9.34354 14.8189 9.44999 14.858C9.55643 14.897 9.6701 14.9124 9.78309 14.9031C9.89608 14.8937 10.0057 14.8599 10.1043 14.804C10.2029 14.7481 10.2882 14.6714 10.3542 14.5792L14.2604 9.11042Z' fill='%23CA9618'/%3E%3C/svg%3E\");\n    background-size: 45px 45px;\n    background-repeat: no-repeat;\n}\n`;document.head.appendChild(el);}export function checkList(Component){return props=>{useEffect(injectCheckStyle,[]);return /*#__PURE__*/_jsx(Component,{...props,\"data-oxy-checklist\":\"\"});};}\nexport const __FramerMetadata__ = {\"exports\":{\"chatGreetingClose\":{\"type\":\"reactHoc\",\"name\":\"chatGreetingClose\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"faqPrev\":{\"type\":\"reactHoc\",\"name\":\"faqPrev\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"eqpPrev\":{\"type\":\"reactHoc\",\"name\":\"eqpPrev\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"thmNext\":{\"type\":\"reactHoc\",\"name\":\"thmNext\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"navPolish\":{\"type\":\"reactHoc\",\"name\":\"navPolish\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"tesTrack\":{\"type\":\"reactHoc\",\"name\":\"tesTrack\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"mtgPrev\":{\"type\":\"reactHoc\",\"name\":\"mtgPrev\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"flipCard\":{\"type\":\"reactHoc\",\"name\":\"flipCard\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"faqGroup\":{\"type\":\"reactHoc\",\"name\":\"faqGroup\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"checkList\":{\"type\":\"reactHoc\",\"name\":\"checkList\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"eqpNext\":{\"type\":\"reactHoc\",\"name\":\"eqpNext\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"parPrev\":{\"type\":\"reactHoc\",\"name\":\"parPrev\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"anwNext\":{\"type\":\"reactHoc\",\"name\":\"anwNext\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"anwPrev\":{\"type\":\"reactHoc\",\"name\":\"anwPrev\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"tesPrev\":{\"type\":\"reactHoc\",\"name\":\"tesPrev\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"mtgNext\":{\"type\":\"reactHoc\",\"name\":\"mtgNext\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"pillFix\":{\"type\":\"reactHoc\",\"name\":\"pillFix\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"tesNext\":{\"type\":\"reactHoc\",\"name\":\"tesNext\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"eqpTrack\":{\"type\":\"reactHoc\",\"name\":\"eqpTrack\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"faqNext\":{\"type\":\"reactHoc\",\"name\":\"faqNext\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"galPrev\":{\"type\":\"reactHoc\",\"name\":\"galPrev\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"faqTrack\":{\"type\":\"reactHoc\",\"name\":\"faqTrack\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"anwTrack\":{\"type\":\"reactHoc\",\"name\":\"anwTrack\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"footerGroup\":{\"type\":\"reactHoc\",\"name\":\"footerGroup\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"topicTabs\":{\"type\":\"reactHoc\",\"name\":\"topicTabs\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"galTrack\":{\"type\":\"reactHoc\",\"name\":\"galTrack\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"parNext\":{\"type\":\"reactHoc\",\"name\":\"parNext\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"thmTrack\":{\"type\":\"reactHoc\",\"name\":\"thmTrack\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"thmPrev\":{\"type\":\"reactHoc\",\"name\":\"thmPrev\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"galNext\":{\"type\":\"reactHoc\",\"name\":\"galNext\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"quoteToggle\":{\"type\":\"reactHoc\",\"name\":\"quoteToggle\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"parTrack\":{\"type\":\"reactHoc\",\"name\":\"parTrack\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"mtgTrack\":{\"type\":\"reactHoc\",\"name\":\"mtgTrack\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"navPill\":{\"type\":\"reactHoc\",\"name\":\"navPill\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Carousel.map"],"mappings":"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"}