const {useState,useEffect,useRef} = React;
const P='assets/photos/';
const W='https://lavie-wirdschoener.de/wp-content/uploads/2026/06/';
const TREAT=[['Gesichtsbehandlungen','behandlung.html?b=gesichtsbehandlungen'],['Mikrodermabrasion','behandlung.html?b=microdermabrasion'],['Microneedling','behandlung.html?b=microneedling'],['Wimpern & Brauen','behandlung.html?b=wimpern-brauen'],['Fußpflege & Maniküre','behandlung.html?b=fusspflege']];

/* Sperrt das Scrollen der Seite, solange ein Vollbild-Overlay offen ist.
   position:fixed statt nur overflow:hidden, weil iOS Safari sonst weiterscrollt.
   Zaehler, damit sich mehrere gleichzeitig offene Overlays nicht gegenseitig entsperren. */
let mgLockCount=0, mgLockY=0;
function useScrollLock(aktiv){
  useEffect(()=>{
    if(!aktiv) return;
    const b=document.body;
    if(mgLockCount===0){
      mgLockY=window.scrollY;
      b.dataset.mgPrevPosition=b.style.position; b.dataset.mgPrevTop=b.style.top;
      b.dataset.mgPrevWidth=b.style.width; b.dataset.mgPrevOverflow=b.style.overflowY;
      b.style.position='fixed'; b.style.top=(-mgLockY)+'px';
      b.style.width='100%'; b.style.overflowY='scroll';
    }
    mgLockCount++;
    return()=>{
      mgLockCount--;
      if(mgLockCount===0){
        b.style.position=b.dataset.mgPrevPosition||'';
        b.style.top=b.dataset.mgPrevTop||'';
        b.style.width=b.dataset.mgPrevWidth||'';
        b.style.overflowY=b.dataset.mgPrevOverflow||'';
        window.scrollTo(0,mgLockY);
      }
    };
  },[aktiv]);
}

function MgLogo({light,voll,hoehe}){
  const h = hoehe || (voll ? 104 : 52);
  return <a href="index.html" aria-label="La Vie – Kosmetikstudio Wildeshausen"
    style={{textDecoration:'none',lineHeight:0,display:'block'}}>
    <img src={P+(voll?'logo-voll.png':'logo-kompakt.png')} alt="La Vie Kosmetikstudio – wird schöner"
      style={{height:h,width:'auto',display:'block',
        /* auf dem dunklen Hero-Bild: Logo aufhellen, damit es lesbar bleibt */
        filter: light ? 'brightness(0) invert(1) opacity(.92)' : 'none'}}/>
  </a>;
}

function MgNav(){
  const [open,setOpen]=useState(false);
  const [menu,setMenu]=useState(false);
  useScrollLock(menu);
  const [solid,setSolid]=useState(false);
  useEffect(()=>{const f=()=>setSolid(window.scrollY>10);f();window.addEventListener('scroll',f,{passive:true});return()=>window.removeEventListener('scroll',f)},[]);
  useEffect(()=>{document.body.style.overflow=menu?'hidden':'';return()=>{document.body.style.overflow=''}},[menu]);
  const item={fontSize:14.5,letterSpacing:'.01em',textDecoration:'none',color:'inherit',cursor:'pointer'};
  return <header style={{position:'sticky',top:0,zIndex:60,background:'#fff',borderBottom:'1px solid '+(solid?'var(--line)':'transparent'),transition:'border-color .4s var(--ease)'}}>
    <div className="mg-wrap" style={{display:'flex',alignItems:'center',justifyContent:'space-between',height:84,gap:24}}>
      <MgLogo/>
      <nav className="mg-hide-m" style={{display:'flex',gap:34,alignItems:'center'}}>
        <a href="ueber-uns.html" style={item}>Das Studio</a>
        <span onMouseEnter={()=>setOpen(true)} onMouseLeave={()=>setOpen(false)} style={{...item,position:'relative',display:'inline-flex',alignItems:'center',gap:7}}>
          Behandlungen<span style={{fontSize:10,transform:open?'rotate(180deg)':'none',transition:'transform .3s var(--ease)'}}>▾</span>
          <span style={{position:'absolute',top:'100%',left:-24,paddingTop:26,opacity:open?1:0,pointerEvents:open?'auto':'none',transform:open?'translateY(0)':'translateY(-6px)',transition:'opacity .3s var(--ease),transform .3s var(--ease)'}}>
            <span style={{display:'flex',flexDirection:'column',minWidth:280,background:'#fff',border:'1px solid var(--line)',padding:'10px 0'}}>
              {TREAT.map(([l,h])=><a key={l} href={h} style={{fontSize:14,padding:'11px 26px',textDecoration:'none',color:'var(--ink)',whiteSpace:'nowrap'}} onMouseEnter={e=>e.currentTarget.style.background='var(--paper-2)'} onMouseLeave={e=>e.currentTarget.style.background='transparent'}>{l}</a>)}
              <a href="index.html#behandlungen" style={{fontSize:12,letterSpacing:'.12em',textTransform:'uppercase',padding:'14px 26px 6px',textDecoration:'none',color:'var(--ink-mute)'}}>Alle Behandlungen & Preise</a>
            </span>
          </span>
        </span>
        <a href="ueber-uns.html#team" style={item}>Team</a>
        <a href="kontakt.html" style={item}>Kontakt</a>
      </nav>
      <div style={{display:'flex',alignItems:'center',gap:14}}>
        <a href="buchen.html" className="mg-btn mg-btn-nav" style={{height:44}}>Termin buchen</a>
        <button className="mg-burger" onClick={()=>setMenu(true)} aria-label="Menü öffnen" style={{display:'none',flexDirection:'column',gap:5,background:'none',border:'none',cursor:'pointer',padding:6}}>
          <span style={{width:22,height:1,background:'var(--ink)',display:'block'}}></span>
          <span style={{width:22,height:1,background:'var(--ink)',display:'block'}}></span>
          <span style={{width:22,height:1,background:'var(--ink)',display:'block'}}></span>
        </button>
      </div>
    </div>
    {menu&&<div style={{position:'fixed',inset:0,zIndex:99,background:'#fff',display:'flex',flexDirection:'column',animation:'mg-fade .3s var(--ease) both'}}>
      <div className="mg-wrap" style={{display:'flex',alignItems:'center',justifyContent:'space-between',minHeight:84,flexShrink:0,
        paddingTop:'calc(18px + env(safe-area-inset-top,0px))',paddingBottom:18}}>
        <MgLogo voll hoehe={60}/>
        <button onClick={()=>setMenu(false)} aria-label="Schließen" style={{background:'none',border:'none',cursor:'pointer',fontSize:26,lineHeight:1,color:'var(--ink)'}}>×</button>
      </div>
      <div className="mg-wrap" style={{flex:1,overflowY:'auto',paddingBottom:40}}>
        {[['Das Studio','ueber-uns.html'],['Team','ueber-uns.html#team'],['Kontakt','kontakt.html']].map(([l,h])=><a key={l} href={h} style={{display:'block',fontSize:26,fontWeight:300,padding:'18px 0',borderBottom:'1px solid var(--line)',textDecoration:'none',color:'var(--ink)'}}>{l}</a>)}
        <div className="mg-eyebrow" style={{marginTop:28}}>Behandlungen</div>
        <div style={{display:'flex',flexDirection:'column',marginTop:8}}>
          {TREAT.map(([l,h])=><a key={l} href={h} style={{fontSize:16.5,padding:'13px 0',borderBottom:'1px solid var(--line)',textDecoration:'none',color:'var(--ink-soft)'}}>{l}</a>)}
        </div>
        <a href="buchen.html" className="mg-btn" style={{width:'100%',marginTop:30}}>Termin buchen</a>
        <div style={{display:'flex',gap:20,marginTop:24,fontSize:13.5,color:'var(--ink-mute)',flexWrap:'wrap'}}>
          <a href="tel:+4944317209569" style={{color:'inherit',textDecoration:'none'}}>04431 720 95 69</a>
          <a href="https://wa.me/491742163633" style={{color:'inherit',textDecoration:'none'}}>WhatsApp</a>
        </div>
      </div>
    </div>}
  </header>;
}

/* Newsletter-Einwilligung. Gleicher Nachweis wie im Buchungsfunnel: Wortlaut,
   Zeitpunkt und Kanal werden mitgeschrieben (Art. 7 Abs. 1 DSGVO). Die
   IP-Adresse muss der Endpunkt beim Empfang selbst ergänzen – clientseitig
   ist sie nicht verlässlich zu ermitteln. Solange kein Backend gesetzt ist
   (window.LAVIE_API), wartet der Datensatz lokal in der Warteschlange. */
const NL_VERSION='2026-08-16.1';
const NL_TEXT='Ich willige ein, den Newsletter von La Vie mit Angeboten, Aktionen und Pflegetipps per E-Mail zu erhalten. Der Widerruf ist jederzeit über den Abmeldelink möglich.';
function nlSenden(email,quelle){
  const ts=new Date().toISOString();
  const rec={version:NL_VERSION,ts,quelle,url:location.href,person:{email:email||''},
    eintraege:[{zweck:'werbung_email',erteilt:true,text:NL_TEXT,ts}],
    bestaetigung:{email:'ausstehend'}};
  const key='lavie-consent-queue';
  const q=JSON.parse(localStorage.getItem(key)||'[]');q.push(rec);localStorage.setItem(key,JSON.stringify(q));
  const api=window.LAVIE_API;
  if(!api){console.info('[La Vie] Kein Backend gesetzt – Newsletter-Einwilligung wartet lokal.');return Promise.resolve(null)}
  fetch(api+'/consent',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify(rec)})
    .then(r=>{if(!r.ok)throw new Error('HTTP '+r.status);
      const rest=JSON.parse(localStorage.getItem(key)||'[]').filter(x=>x.ts!==rec.ts);
      localStorage.setItem(key,JSON.stringify(rest));})
    .catch(e=>console.warn('[La Vie] Newsletter-Einwilligung wartet lokal:',e.message));
  /* Double-Opt-in anstoßen: legt die Kundin an und stellt die Bestätigungs-
     Mail in die Warteschlange. Die Antwort ({ok, schon_dabei, fehler})
     bekommt der Aufrufer, um den passenden Text zu zeigen. */
  return fetch(api+'/newsletter',{method:'POST',headers:{'Content-Type':'application/json'},
    body:JSON.stringify({aktion:'anmelden',email})})
    .then(r=>r.json())
    .catch(()=>null);
}
const mailOk=v=>/.+@.+\..+/.test(v||'');

/* lavie-consent-flush: Wartende Einwilligungen/Buchungen nachreichen, sobald
   ein Backend erreichbar ist. Jeder Datensatz wird erst nach bestaetigtem
   Empfang (HTTP 2xx) aus der Warteschlange entfernt — der Endpunkt ist
   idempotent, doppeltes Senden ist unschaedlich. */
(function(){
  const api=window.LAVIE_API;if(!api)return;
  const key='lavie-consent-queue';
  let q=[];try{q=JSON.parse(localStorage.getItem(key)||'[]')}catch(e){return}
  q.forEach(rec=>{
    fetch(api+'/consent',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify(rec)})
      .then(r=>{if(!r.ok)throw new Error('HTTP '+r.status);
        const rest=JSON.parse(localStorage.getItem(key)||'[]').filter(x=>x.ts!==rec.ts);
        localStorage.setItem(key,JSON.stringify(rest));})
      .catch(()=>{/* bleibt in der Warteschlange, naechster Seitenaufruf versucht es erneut */});
  });
})();

/* Footer-Spalte: auf dem Desktop eine normale Liste, auf dem Handy aufklappbar. */
function FootCol({titel,items}){
  const [open,setOpen]=useState(false);
  return <div className="mg-foot-col" data-open={open?'1':'0'}>
    <button type="button" className="mg-foot-head" aria-expanded={open} onClick={()=>setOpen(!open)}>
      <span>{titel}</span><span className="mg-foot-sign" aria-hidden="true"></span>
    </button>
    <div className="mg-foot-body"><div className="mg-foot-inner">
      {items.map(([l,h,fn])=><a key={l} href={h||'#'} onClick={fn} style={{fontSize:14,color:'var(--ink-soft)',textDecoration:'none'}}>{l}</a>)}
    </div></div>
  </div>;
}

function MgFooter(){
  const [ok,setOk]=useState('');
  const [ds,setDs]=useState(false);
  const [mail,setMail]=useState('');
  const [err,setErr]=useState('');
  const anmelden=()=>{
    if(!mailOk(mail)){setErr('Bitte gib eine gültige E-Mail-Adresse an.');return}
    if(!ds){setErr('Bitte bestätige die Einwilligung – ohne sie dürfen wir dir nichts schicken.');return}
    setErr('');
    nlSenden(mail,'footer').then(d=>{
      if(d&&d.ok&&d.schon_dabei)setOk('Du bist schon angemeldet – alles gut. Dir entgeht nichts.');
      else if(d&&d.ok)setOk('Fast geschafft – bitte bestätige den Link in deinem Postfach. Erst danach schicken wir dir etwas.');
      else if(d&&d.fehler==='ungueltig')setErr('Bitte gib eine gültige E-Mail-Adresse an.');
      else setErr('Das hat gerade nicht geklappt – bitte versuch es gleich noch einmal.');
    });
  };
  const cookieLink=e=>{e.preventDefault();window.dispatchEvent(new Event('lavie-cookie-open'))};
  return <footer style={{borderTop:'1px solid var(--line)',paddingTop:'clamp(48px,6vw,86px)'}}>
    <div className="mg-wrap mg-foot-grid" style={{display:'grid',gridTemplateColumns:'1.3fr 1fr 1fr 1fr',gap:'clamp(28px,4vw,64px)'}}>
      <div>
        <h3 className="mg-h3" style={{fontSize:22,fontWeight:300,lineHeight:1.3,maxWidth:320}}>Abonniere unseren Newsletter und erhalte 10 % Rabatt.</h3>
        <p className="mg-p" style={{fontSize:14,margin:'12px 0 18px',maxWidth:330}}>Neuigkeiten, exklusive Angebote und Pflegetipps aus unserem Studio.</p>
        {ok?<div style={{fontSize:14.5}}>{ok}</div>:<>
        <div style={{display:'flex',maxWidth:360,border:'1px solid var(--line)',background:'var(--paper-2)'}}>
          <input type="email" value={mail} onChange={e=>setMail(e.target.value)} onKeyDown={e=>e.key==='Enter'&&anmelden()} placeholder="E-Mail" aria-label="E-Mail-Adresse für den Newsletter" style={{flex:1,minWidth:0,background:'transparent',border:'none',outline:'none',padding:'14px 18px',fontFamily:'Jost,sans-serif',fontSize:14,color:'var(--ink)'}}/>
          <button onClick={anmelden} aria-label="Newsletter abonnieren" style={{border:'none',background:'transparent',cursor:'pointer',padding:'0 18px',fontSize:16}}>›</button>
        </div>
        <label style={{display:'flex',gap:9,alignItems:'flex-start',fontSize:12,color:'var(--ink-mute)',marginTop:12,maxWidth:340,cursor:'pointer',lineHeight:1.6}}>
          <input type="checkbox" checked={ds} onChange={e=>setDs(e.target.checked)} style={{accentColor:'var(--ink)',marginTop:2}}/>
          <span>{NL_TEXT} Hinweise zur Verarbeitung in der <a href="datenschutz.html" style={{color:'var(--ink-soft)'}}>Datenschutzerklärung</a>.</span>
        </label>
        {err&&<div style={{fontSize:12,color:'#a33',marginTop:8}}>{err}</div>}</>}
      </div>
      <FootCol titel="La Vie" items={[['Das Studio','ueber-uns.html'],['Team','ueber-uns.html#team'],['Behandlungen','index.html#behandlungen'],['Preise','index.html#preise'],['Gutscheine','kontakt.html']]}/>
      <FootCol titel="Service" items={[['Kontakt','kontakt.html'],['Termin buchen','buchen.html'],['Anfahrt','kontakt.html'],['Häufige Fragen','index.html#faq'],['WhatsApp','https://wa.me/491742163633']]}/>
      <FootCol titel="Informationen" items={[['Impressum','impressum.html'],['Datenschutz','datenschutz.html'],['Storno & AGB','agb.html'],['Widerruf','widerruf.html'],['Cookie-Einstellungen','#',cookieLink],['Instagram','https://instagram.com/laviewirdschoener']]}/>
    </div>
    <div className="mg-wrap" style={{display:'flex',justifyContent:'space-between',flexWrap:'wrap',gap:12,borderTop:'1px solid var(--line)',marginTop:'clamp(40px,5vw,72px)',padding:'22px 0 28px',fontSize:12.5,color:'var(--ink-mute)'}}>
      <span>© 2026 La Vie – Kosmetikstudio Wildeshausen</span>
      <span>Burgstraße 7 · 27793 Wildeshausen · 04431 720 95 69</span>
    </div>
  </footer>;
}

function MgPopup(){
  const [show,setShow]=useState(false);
  useScrollLock(show);
  const [done,setDone]=useState('');
  const [ds,setDs]=useState(false);
  const [mail,setMail]=useState('');
  const [err,setErr]=useState('');
  const sichern=()=>{
    if(!mailOk(mail)){setErr('Bitte gib eine gültige E-Mail-Adresse an.');return}
    if(!ds){setErr('Bitte bestätige die Einwilligung – ohne sie dürfen wir dir nichts schicken.');return}
    setErr('');
    nlSenden(mail,'popup').then(d=>{
      if(d&&d.ok&&d.schon_dabei)setDone('Du bist schon angemeldet – alles gut. Dir entgeht nichts.');
      else if(d&&d.ok)setDone('Bitte bestätige deine E-Mail-Adresse – dein Gutschein ist unterwegs.');
      else if(d&&d.fehler==='ungueltig')setErr('Bitte gib eine gültige E-Mail-Adresse an.');
      else setErr('Das hat gerade nicht geklappt – bitte versuch es gleich noch einmal.');
    });
  };
  useEffect(()=>{
    if(localStorage.getItem('lavie-nl-seen'))return;
    const t=setTimeout(()=>setShow(true),20000);
    return()=>clearTimeout(t);
  },[]);
  const close=()=>{setShow(false);localStorage.setItem('lavie-nl-seen','1')};
  if(!show)return null;
  return <div onClick={close} style={{position:'fixed',inset:0,zIndex:100,background:'rgba(20,18,17,.5)',display:'flex',alignItems:'center',justifyContent:'center',padding:20,animation:'mg-fade .5s var(--ease) both'}}>
    <div onClick={e=>e.stopPropagation()} className="mg-modal" style={{position:'relative',maxWidth:820,width:'100%',background:'#fff',maxHeight:'92vh',overflow:'hidden'}}>
      <img className="mg-hide-m" loading="lazy" src={P+'studio-5375.jpg'} alt="" style={{width:'100%',height:'100%',objectFit:'cover',minHeight:380}}/>
      <div style={{padding:'clamp(34px,4vw,54px) clamp(28px,3.4vw,46px)',display:'flex',flexDirection:'column',justifyContent:'center'}}>
        <button onClick={close} aria-label="Schließen" style={{position:'absolute',top:14,right:16,border:'none',background:'none',cursor:'pointer',fontSize:22,lineHeight:1,color:'var(--ink-mute)'}}>×</button>
        {done?<>
          <h3 className="mg-h2" style={{fontSize:26}}>{done.indexOf('schon')>-1?'Schon dabei.':'Fast geschafft.'}</h3>
          <p className="mg-p" style={{marginTop:14}}>{done}</p>
          <div style={{marginTop:26}}><button className="mg-btn" onClick={close}>Schließen</button></div>
        </>:<>
          <div className="mg-eyebrow">Nur für Neukunden</div>
          <h3 className="mg-h2" style={{fontSize:'clamp(24px,2.4vw,32px)',margin:'16px 0 0'}}>10 % auf deine erste Behandlung.</h3>
          <p className="mg-p" style={{margin:'16px 0 0',fontSize:15}}>Melde dich für unseren Newsletter an und erhalte deinen persönlichen Gutschein – dazu Pflegetipps und exklusive Angebote aus dem Studio.</p>
          <div style={{display:'flex',border:'1px solid var(--line)',background:'var(--paper-2)',marginTop:24}}>
            <input type="email" value={mail} onChange={e=>setMail(e.target.value)} onKeyDown={e=>e.key==='Enter'&&sichern()} placeholder="E-Mail" aria-label="E-Mail-Adresse für den Newsletter" style={{flex:1,minWidth:0,background:'transparent',border:'none',outline:'none',padding:'15px 18px',fontFamily:'Jost,sans-serif',fontSize:14.5,color:'var(--ink)'}}/>
          </div>
          <label style={{display:'flex',gap:9,alignItems:'flex-start',fontSize:12,color:'var(--ink-mute)',marginTop:14,cursor:'pointer',lineHeight:1.6}}>
            <input type="checkbox" checked={ds} onChange={e=>setDs(e.target.checked)} style={{accentColor:'var(--ink)',marginTop:2}}/>
            <span>{NL_TEXT} Hinweise zur Verarbeitung in der <a href="datenschutz.html" style={{color:'var(--ink-soft)'}}>Datenschutzerklärung</a>.</span>
          </label>
          {err&&<div style={{fontSize:12,color:'#a33',marginTop:10}}>{err}</div>}
          <div style={{marginTop:20,display:'flex',gap:16,alignItems:'center',flexWrap:'wrap'}}>
            <button className="mg-btn" onClick={sichern}>Gutschein sichern</button>
            <a onClick={close} style={{fontSize:13,color:'var(--ink-mute)',cursor:'pointer'}}>Nein danke</a>
          </div>
        </>}
      </div>
    </div>
  </div>;
}

function MgCookie(){
  const [show,setShow]=useState(false);
  const [detail,setDetail]=useState(false);
  const [stat,setStat]=useState(false);
  const [mark,setMark]=useState(false);
  useEffect(()=>{
    if(!localStorage.getItem('lavie-consent-v2'))setShow(true);
    const open=()=>{setShow(true);setDetail(true)};
    window.addEventListener('lavie-cookie-open',open);
    return()=>window.removeEventListener('lavie-cookie-open',open);
  },[]);
  const save=(s,m)=>{localStorage.setItem('lavie-consent-v2',JSON.stringify({notwendig:true,statistik:s,marketing:m,ts:Date.now()}));setShow(false)};
  if(!show)return null;
  const Row=({on,set,label,desc,locked})=><label style={{display:'flex',gap:10,alignItems:'flex-start',padding:'10px 0',cursor:locked?'default':'pointer',borderTop:'1px solid var(--line)'}}>
    <input type="checkbox" checked={locked||on} disabled={locked} onChange={e=>set&&set(e.target.checked)} style={{accentColor:'var(--ink)',marginTop:3}}/>
    <span style={{fontSize:13,lineHeight:1.6,color:'var(--ink-soft)'}}><span style={{color:'var(--ink)'}}>{label}</span>{locked&&' (immer aktiv)'} – {desc}</span>
  </label>;
  return <div className="mg-cookie" style={{position:'fixed',left:0,right:0,bottom:0,zIndex:90,background:'#fff',borderTop:'1px solid var(--line)',animation:'mg-up .6s var(--ease) both'}}>
    <div className="mg-wrap" style={{padding:'22px 0 24px'}}>
      <div style={{display:'flex',gap:'clamp(20px,4vw,60px)',alignItems:'flex-start',flexWrap:'wrap'}}>
        <div style={{flex:'1 1 380px',minWidth:0}}>
          <div className="mg-eyebrow">Cookie-Einstellungen</div>
          <p className="mg-p" style={{fontSize:14,marginTop:10,maxWidth:620}}>Wir verwenden Cookies, damit die Terminbuchung funktioniert und wir unsere Website verbessern können. Du entscheidest, was wir verwenden dürfen. Mehr in unserer <a href="datenschutz.html" style={{color:'var(--ink)'}}>Datenschutzrichtlinie</a>.</p>
          <div style={{display:'grid',gridTemplateRows:detail?'1fr':'0fr',transition:'grid-template-rows .45s var(--ease)'}}><div style={{overflow:'hidden'}}>
            <div style={{maxWidth:620,marginTop:14}}>
              <Row locked label="Notwendig" desc="Grundfunktionen und Terminbuchung."/>
              <Row on={stat} set={setStat} label="Statistik" desc="Anonyme Auswertung der Seitennutzung."/>
              <Row on={mark} set={setMark} label="Marketing" desc="Passende Angebote und Erinnerungen."/>
            </div>
          </div></div>
          <a onClick={()=>setDetail(!detail)} className="mg-link" style={{display:'inline-block',marginTop:16,cursor:'pointer',fontSize:12}}>{detail?'Weniger anzeigen':'Einstellungen anpassen'}</a>
        </div>
        <div style={{display:'flex',gap:12,flexWrap:'wrap',alignItems:'center'}}>
          <button className="mg-btn mg-btn--ghost" onClick={()=>detail?save(stat,mark):save(false,false)}>{detail?'Auswahl speichern':'Nur notwendige'}</button>
          <button className="mg-btn" onClick={()=>save(true,true)}>Alle akzeptieren</button>
        </div>
      </div>
    </div>
  </div>;
}

function useRv(){
  useEffect(()=>{
    const io=new IntersectionObserver(es=>es.forEach(e=>{if(e.isIntersecting){e.target.classList.add('in');io.unobserve(e.target)}}),{threshold:.12});
    document.querySelectorAll('.rv').forEach(el=>io.observe(el));
    return()=>io.disconnect();
  },[]);
}

Object.assign(window,{useScrollLock,MgNav,MgFooter,MgLogo,MgPopup,MgCookie,useRv,nlSenden,NL_TEXT,MG_P:P,MG_W:W,MG_TREAT:TREAT});
