/* global React */
const { useState: useStateS, useEffect: useEffectS, useRef: useRefS, useMemo } = React;

/* =========================================================
   Marquee
   ========================================================= */
function Marquee({ items }) {
  const doubled = [...items, ...items];
  return (
    <div className="marquee" aria-hidden="true">
      <div className="marquee-track">
        {doubled.map((s, i) => (
          <span key={i}>{s}</span>
        ))}
      </div>
    </div>
  );
}

/* =========================================================
   Reveal wrapper — IntersectionObserver based
   ========================================================= */
function Reveal({ children, delay = 0, as: As = "div", className = "", ...props }) {
  const ref = useRefS(null);
  const [seen, setSeen] = useStateS(false);
  useEffectS(() => {
    if (!ref.current) return;
    const io = new IntersectionObserver(
      (entries) => {
        entries.forEach((e) => {
          if (e.isIntersecting) {
            setSeen(true);
            io.unobserve(e.target);
          }
        });
      },
      { threshold: 0.15 }
    );
    io.observe(ref.current);
    return () => io.disconnect();
  }, []);
  return (
    <As
      ref={ref}
      className={`reveal ${seen ? "is-in" : ""} ${className}`}
      style={{ transitionDelay: `${delay}ms` }}
      {...props}
    >
      {children}
    </As>
  );
}

/* =========================================================
   Step icon — different mini animated SVGs per step
   ========================================================= */
function StepIcon({ kind }) {
  if (kind === "scan") {
    return (
      <svg viewBox="0 0 200 120" width="100%" height="100%">
        <defs>
          <linearGradient id="scanG" x1="0" x2="0" y1="0" y2="1">
            <stop offset="0" stopColor="var(--accent)" stopOpacity="0.6" />
            <stop offset="1" stopColor="var(--accent)" stopOpacity="0" />
          </linearGradient>
        </defs>
        <rect x="20" y="14" width="160" height="92" rx="6" fill="none" stroke="var(--line)" />
        <rect x="20" y="14" width="160" height="14" fill="var(--line-soft)" />
        <circle cx="28" cy="21" r="2" fill="var(--muted)" />
        <circle cx="36" cy="21" r="2" fill="var(--muted)" />
        <circle cx="44" cy="21" r="2" fill="var(--muted)" />
        <rect x="30" y="38" width="60" height="6" fill="var(--text-dim)" opacity="0.6" />
        <rect x="30" y="50" width="100" height="3" fill="var(--muted)" opacity="0.5" />
        <rect x="30" y="58" width="80" height="3" fill="var(--muted)" opacity="0.5" />
        <rect x="30" y="72" width="40" height="20" fill="var(--accent)" opacity="0.3" />
        <rect x="80" y="72" width="40" height="20" fill="var(--muted)" opacity="0.2" />
        <rect x="130" y="72" width="35" height="20" fill="var(--muted)" opacity="0.2" />
        <rect x="20" y="14" width="160" height="2" fill="url(#scanG)">
          <animate attributeName="y" from="14" to="100" dur="2s" repeatCount="indefinite" />
        </rect>
      </svg>
    );
  }
  if (kind === "draft") {
    return (
      <svg viewBox="0 0 200 120" width="100%" height="100%">
        <g>
          <rect x="14" y="20" width="50" height="80" rx="4" fill="none" stroke="var(--line)" />
          <rect x="20" y="28" width="38" height="4" fill="var(--text-dim)" opacity="0.4" />
          <rect x="20" y="38" width="38" height="14" fill="var(--accent)" opacity="0.4" />
          <rect x="20" y="56" width="28" height="3" fill="var(--muted)" opacity="0.5" />

          <rect x="75" y="20" width="50" height="80" rx="4" fill="none" stroke="var(--accent)" />
          <rect x="81" y="28" width="38" height="4" fill="var(--accent)" />
          <rect x="81" y="38" width="38" height="20" fill="var(--accent)" opacity="0.7" />
          <rect x="81" y="62" width="28" height="3" fill="var(--text)" opacity="0.6" />
          <rect x="81" y="68" width="38" height="3" fill="var(--text)" opacity="0.4" />

          <rect x="136" y="20" width="50" height="80" rx="4" fill="none" stroke="var(--line)" />
          <rect x="142" y="28" width="38" height="4" fill="var(--text-dim)" opacity="0.4" />
          <rect x="142" y="38" width="18" height="14" fill="var(--muted)" opacity="0.3" />
          <rect x="164" y="38" width="16" height="14" fill="var(--muted)" opacity="0.3" />
          <rect x="142" y="56" width="38" height="3" fill="var(--muted)" opacity="0.5" />

          <circle cx="100" cy="100" r="3" fill="var(--accent)">
            <animate attributeName="cx" values="39;100;161;100;39" dur="4s" repeatCount="indefinite" />
          </circle>
        </g>
      </svg>
    );
  }
  if (kind === "polish") {
    return (
      <svg viewBox="0 0 200 120" width="100%" height="100%">
        <rect x="30" y="20" width="140" height="80" rx="6" fill="none" stroke="var(--line)" />
        <rect x="42" y="32" width="80" height="6" fill="var(--text-dim)" opacity="0.5" />
        <rect x="42" y="44" width="116" height="3" fill="var(--muted)" opacity="0.5" />
        <rect x="42" y="52" width="100" height="3" fill="var(--muted)" opacity="0.5" />
        <rect x="42" y="68" width="40" height="20" fill="var(--accent)" opacity="0.7" />
        <g>
          <circle cx="155" cy="78" r="14" fill="none" stroke="var(--accent)" strokeWidth="1.5">
            <animate attributeName="r" values="10;16;10" dur="2s" repeatCount="indefinite" />
            <animate attributeName="opacity" values="1;0;1" dur="2s" repeatCount="indefinite" />
          </circle>
          <circle cx="155" cy="78" r="4" fill="var(--accent)" />
        </g>
      </svg>
    );
  }
  if (kind === "launch") {
    return (
      <svg viewBox="0 0 200 120" width="100%" height="100%">
        <defs>
          <linearGradient id="trail" x1="0" x2="1" y1="0" y2="0">
            <stop offset="0" stopColor="var(--accent)" stopOpacity="0" />
            <stop offset="1" stopColor="var(--accent)" stopOpacity="0.9" />
          </linearGradient>
        </defs>
        <line x1="0" y1="60" x2="200" y2="60" stroke="var(--line-soft)" strokeDasharray="2 4" />
        <g>
          <path d="M0 60 L160 60" stroke="url(#trail)" strokeWidth="2">
            <animate attributeName="stroke-opacity" values="0;1;0" dur="2s" repeatCount="indefinite" />
          </path>
          <g>
            <polygon points="160,52 180,60 160,68 165,60" fill="var(--accent)">
              <animateTransform attributeName="transform" type="translate" values="-30,0;10,0;-30,0" dur="2s" repeatCount="indefinite" />
            </polygon>
          </g>
          <text x="20" y="100" fontFamily="Geist Mono, monospace" fontSize="9" fill="var(--muted)" letterSpacing="2">DEPLOY · LIVE · 200 OK</text>
        </g>
      </svg>
    );
  }
  return null;
}

/* =========================================================
   Process section
   ========================================================= */
function Process({ t }) {
  const kinds = ["scan", "draft", "polish", "launch"];
  return (
    <section className="section" id="process">
      <div className="wrap">
        <Reveal className="section-head">
          <div>
            <div className="eyebrow">{t.process.eyebrow}</div>
          </div>
          <div>
            <h2>
              {t.process.title} <span className="italic">{t.process.titleItalic}</span> {t.process.titleEnd}
            </h2>
            <p style={{ marginTop: 28 }}>{t.process.sub}</p>
          </div>
        </Reveal>
        <Reveal className="process-list">
          {t.process.steps.map((s, i) => (
            <div className="step" key={i}>
              <div className="step-num">{s.n}</div>
              <h3>{s.h}</h3>
              <p>{s.p}</p>
              <div className="step-icon">
                <StepIcon kind={kinds[i]} />
              </div>
            </div>
          ))}
        </Reveal>
      </div>
    </section>
  );
}

/* =========================================================
   Services
   ========================================================= */
function Services({ t }) {
  return (
    <section className="section" id="services" style={{ paddingTop: 40 }}>
      <div className="wrap">
        <Reveal className="section-head">
          <div>
            <div className="eyebrow">{t.services.eyebrow}</div>
          </div>
          <div>
            <h2>
              {t.services.title} <span className="italic">{t.services.titleItalic}</span> {t.services.titleEnd}
            </h2>
            <p style={{ marginTop: 28 }}>{t.services.sub}</p>
          </div>
        </Reveal>
        <Reveal className="svc">
          {t.services.cards.map((c, i) => (
            <div className="svc-card" key={i}>
              <span className="price">{c.tag}</span>
              <h3>{c.h}</h3>
              <ul>
                {c.items.map((it, j) => (
                  <li key={j}>{it}</li>
                ))}
              </ul>
            </div>
          ))}
        </Reveal>
      </div>
    </section>
  );
}

/* =========================================================
   Before / After demo — pure SVG mockups
   ========================================================= */
function BeforeMockup() {
  return (
    <svg viewBox="0 0 1280 720" preserveAspectRatio="xMidYMid slice" width="100%" height="100%">
      <rect width="1280" height="720" fill="#dcdcc9" />
      {/* top banner */}
      <rect x="0" y="0" width="1280" height="60" fill="#7a3b00" />
      <text x="40" y="40" fontFamily="Times New Roman" fontSize="28" fill="#fffae5" fontWeight="bold">
        ★ INSTALLATEUR MUSTERMANN ★
      </text>
      <rect x="900" y="14" width="340" height="32" fill="#ffe14a" stroke="#7a3b00" strokeWidth="2" />
      <text x="920" y="36" fontFamily="Comic Sans MS, Comic Sans" fontSize="14" fill="#7a3b00">
        Anrufen! 09561 / 1234567
      </text>
      {/* nav */}
      <rect x="0" y="60" width="1280" height="32" fill="#003366" />
      {["HOME","ÜBER UNS","LEISTUNGEN","REFERENZEN","KONTAKT","IMPRESSUM"].map((n, i) => (
        <text key={n} x={30 + i * 150} y="82" fontFamily="Arial" fontSize="14" fill="#ffe14a" fontWeight="bold">
          {n}
        </text>
      ))}
      {/* hero blob */}
      <rect x="40" y="120" width="500" height="280" fill="#9aaeb8" stroke="#003366" strokeWidth="3" />
      <text x="290" y="270" fontFamily="Times New Roman" fontSize="36" textAnchor="middle" fill="#003366" fontWeight="bold">
        Willkommen!
      </text>
      <text x="290" y="310" fontFamily="Times New Roman" fontSize="16" textAnchor="middle" fill="#003366">
        auf unserer neuen Internetseite
      </text>
      {/* welcome text */}
      <rect x="580" y="120" width="660" height="280" fill="#fffae5" stroke="#003366" />
      <text x="600" y="160" fontFamily="Times New Roman" fontSize="14" fill="#222">
        <tspan x="600" dy="0">Sehr geehrte Damen und Herren,</tspan>
        <tspan x="600" dy="22">herzlich willkommen auf unserer Homepage. Wir sind</tspan>
        <tspan x="600" dy="22">Ihr zuverlässiger Partner für Heizung, Sanitär und Klima</tspan>
        <tspan x="600" dy="22">in Coburg und Umgebung seit 1987.</tspan>
        <tspan x="600" dy="22">─────────────────────────────</tspan>
        <tspan x="600" dy="22" fontWeight="bold" fill="#a00">NEU! Wir haben jetzt auch FACEBOOK!</tspan>
        <tspan x="600" dy="22" fill="#0000ee" textDecoration="underline">www.facebook.com/installateur-mustermann</tspan>
        <tspan x="600" dy="32" fontSize="11" fill="#666">Letzte Aktualisierung: 14.08.2012</tspan>
      </text>
      {/* counter */}
      <rect x="40" y="430" width="220" height="80" fill="#000" />
      <text x="150" y="455" fontFamily="Courier" fontSize="11" fill="#0f0" textAnchor="middle">BESUCHERZÄHLER</text>
      <text x="150" y="490" fontFamily="Courier" fontSize="28" fill="#0f0" textAnchor="middle">0 0 4 7 2 1</text>
      {/* gallery thumbs */}
      <rect x="280" y="430" width="960" height="180" fill="#e8e3c4" stroke="#003366" />
      {Array.from({ length: 5 }).map((_, i) => (
        <g key={i}>
          <rect x={300 + i * 185} y="450" width="170" height="120" fill="#9aaeb8" stroke="#003366" />
          <text x={385 + i * 185} y="515" fontFamily="Arial" fontSize="11" textAnchor="middle" fill="#003366">
            badezimmer_{i + 1}.jpg
          </text>
        </g>
      ))}
      {/* footer */}
      <rect x="0" y="680" width="1280" height="40" fill="#003366" />
      <text x="640" y="705" textAnchor="middle" fontFamily="Times New Roman" fontSize="12" fill="#ffe14a">
        © 2012 Installateur Mustermann · Best viewed with Internet Explorer 6 · 1024×768
      </text>
    </svg>
  );
}

function AfterMockup() {
  // Visual vocabulary deliberately different from the Mijeraki homepage:
  // warm cream + ink + terracotta, serif headline, grounded craftsman feel.
  // No newspaper gimmicks — just a clean, believable handwerk site.
  const cream = "#f1e7d3";
  const ink = "#1d1812";
  const inkSoft = "#5b5042";
  const brick = "#b8492a";
  const sand = "#dccbab";
  const sandDark = "#c4ad84";

  return (
    <svg viewBox="0 0 1280 720" preserveAspectRatio="xMidYMid slice" width="100%" height="100%">
      <rect width="1280" height="720" fill={cream} />

      {/* ───── top bar ───── */}
      <text x="48" y="50" fontFamily="Georgia, serif" fontSize="26" fill={ink} fontWeight="700">
        Mustermann
      </text>
      <text x="48" y="68" fontFamily="Georgia, serif" fontSize="10" fill={inkSoft} letterSpacing="2.5">
        HEIZUNG · SANITÄR · SEIT 1987
      </text>

      {/* nav */}
      {["Leistungen", "Werkstatt", "Über uns", "Kontakt"].map((n, i) => (
        <text
          key={n}
          x={760 + i * 90}
          y="58"
          fontFamily="Georgia, serif"
          fontSize="13"
          fill={ink}
          letterSpacing="1"
        >
          {n}
        </text>
      ))}

      {/* big phone tag right */}
      <text x="1232" y="48" textAnchor="end" fontFamily="Georgia, serif" fontSize="10" fill={inkSoft} letterSpacing="2.5">
        24H NOTDIENST
      </text>
      <text x="1232" y="74" textAnchor="end" fontFamily="Georgia, serif" fontSize="22" fill={brick} fontWeight="700">
        09561 / 12 34 56 7
      </text>

      <line x1="48" y1="100" x2="1232" y2="100" stroke={ink} strokeWidth="1" />

      {/* ───── hero left ───── */}
      <text x="48" y="200" fontFamily="Georgia, serif" fontSize="86" fill={ink} fontWeight="700" letterSpacing="-2">
        Heizung,
      </text>
      <text x="48" y="290" fontFamily="Georgia, serif" fontSize="86" fill={ink} fontWeight="700" fontStyle="italic" letterSpacing="-2">
        Bäder,
      </text>
      <text x="48" y="380" fontFamily="Georgia, serif" fontSize="86" fill={brick} fontWeight="700" letterSpacing="-2">
        Notdienst.
      </text>

      <line x1="48" y1="406" x2="120" y2="406" stroke={ink} strokeWidth="2" />
      <text x="48" y="436" fontFamily="Georgia, serif" fontSize="15" fill={inkSoft}>
        <tspan x="48" dy="0">Familienbetrieb in dritter Generation.</tspan>
        <tspan x="48" dy="22">Festpreis. Werkstatt am Anger in Coburg.</tspan>
      </text>

      {/* CTA */}
      <rect x="48" y="488" width="240" height="48" fill={ink} />
      <text x="168" y="518" textAnchor="middle" fontFamily="Georgia, serif" fontSize="14" fill={cream} letterSpacing="2">
        TERMIN VEREINBAREN  →
      </text>
      <text x="304" y="518" fontFamily="Georgia, serif" fontSize="14" fill={ink} fontStyle="italic">
        oder ruf einfach an.
      </text>

      {/* ───── hero right: photo plate ───── */}
      <rect x="680" y="120" width="552" height="392" fill={sand} />
      {/* striped placeholder texture */}
      <defs>
        <pattern id="stripe" patternUnits="userSpaceOnUse" width="14" height="14" patternTransform="rotate(45)">
          <line x1="0" y1="0" x2="0" y2="14" stroke={sandDark} strokeWidth="6" />
        </pattern>
      </defs>
      <rect x="700" y="140" width="512" height="332" fill="url(#stripe)" />
      <rect x="700" y="140" width="512" height="332" fill="none" stroke={ink} strokeWidth="0.5" opacity="0.4" />
      <text x="956" y="318" textAnchor="middle" fontFamily="Georgia, serif" fontSize="11" fill={ink} letterSpacing="3" opacity="0.7">
        WERKSTATTFOTO · COBURG, 2025
      </text>

      {/* photo caption */}
      <text x="680" y="498" fontFamily="Georgia, serif" fontSize="11" fill={inkSoft} letterSpacing="2">
        DREI MEISTER · ZWEI GESELLEN · EIN AZUBI
      </text>

      {/* ───── service tiles ───── */}
      <line x1="48" y1="572" x2="1232" y2="572" stroke={ink} strokeWidth="0.5" />
      {[
        { n: "01", h: "Heizung", p: "Wartung, Sanierung, Wärmepumpe." },
        { n: "02", h: "Bad & Sanitär", p: "Vom Aufmaß bis zur Übergabe." },
        { n: "03", h: "Notdienst", p: "24 Stunden, im Umkreis 30 km." },
      ].map((s, i) => (
        <g key={s.n}>
          <text x={48 + i * 400} y="608" fontFamily="Georgia, serif" fontSize="11" fill={brick} fontStyle="italic" letterSpacing="2">
            {s.n}
          </text>
          <text x={88 + i * 400} y="608" fontFamily="Georgia, serif" fontSize="22" fill={ink} fontWeight="700">
            {s.h}
          </text>
          <text x={48 + i * 400} y="636" fontFamily="Georgia, serif" fontSize="13" fill={inkSoft}>
            {s.p}
          </text>
        </g>
      ))}

      {/* ───── bottom band ───── */}
      <line x1="48" y1="672" x2="1232" y2="672" stroke={ink} strokeWidth="0.5" />
      <text x="48" y="700" fontFamily="Georgia, serif" fontSize="13" fill={ink}>
        <tspan fill={brick}>★★★★★</tspan>
        <tspan dx="10">4,9 bei 142 Google-Bewertungen</tspan>
      </text>
      <text x="1232" y="700" textAnchor="end" fontFamily="Georgia, serif" fontSize="13" fill={inkSoft} fontStyle="italic">
        post@mustermann-coburg.de
      </text>
    </svg>
  );
}

function BeforeAfter({ t }) {
  const [pos, setPos] = useStateS(50);
  const wrapRef = useRefS(null);
  const dragging = useRefS(false);

  const updateFromEvent = (e) => {
    if (!wrapRef.current) return;
    const r = wrapRef.current.getBoundingClientRect();
    const cx = (e.touches ? e.touches[0].clientX : e.clientX) - r.left;
    setPos(Math.max(0, Math.min(100, (cx / r.width) * 100)));
  };
  useEffectS(() => {
    const move = (e) => dragging.current && updateFromEvent(e);
    const up = () => (dragging.current = false);
    window.addEventListener("mousemove", move);
    window.addEventListener("touchmove", move);
    window.addEventListener("mouseup", up);
    window.addEventListener("touchend", up);
    return () => {
      window.removeEventListener("mousemove", move);
      window.removeEventListener("touchmove", move);
      window.removeEventListener("mouseup", up);
      window.removeEventListener("touchend", up);
    };
  }, []);

  return (
    <section className="section" id="work" style={{ paddingTop: 40 }}>
      <div className="wrap">
        <Reveal className="section-head">
          <div>
            <div className="eyebrow">{t.ba.eyebrow}</div>
          </div>
          <div>
            <h2>
              {t.ba.title} <span className="italic">{t.ba.titleItalic}</span>
            </h2>
            <p style={{ marginTop: 28 }}>{t.ba.sub}</p>
          </div>
        </Reveal>
        <Reveal>
          <div className="ba-tags">
            <span className="before-tag">{t.ba.beforeTag}</span>
            <span className="after-tag">{t.ba.afterTag}</span>
          </div>
          <div
            className="ba"
            ref={wrapRef}
            onMouseDown={(e) => {
              dragging.current = true;
              updateFromEvent(e);
            }}
            onTouchStart={(e) => {
              dragging.current = true;
              updateFromEvent(e);
            }}
          >
            <div className="pane before">
              <BeforeMockup />
            </div>
            <div className="pane after" style={{ clipPath: `inset(0 0 0 ${pos}%)` }}>
              <AfterMockup />
            </div>
            <div className="handle" style={{ left: `${pos}%` }}></div>
          </div>
        </Reveal>
      </div>
    </section>
  );
}

/* =========================================================
   About
   ========================================================= */
function About({ t }) {
  return (
    <section className="section" id="about" style={{ paddingTop: 40 }}>
      <div className="wrap">
        <Reveal className="about">
          <div className="about-portrait">
            <div className="pl">
              <strong>{t.about.portraitTitle}</strong>
              {t.about.portraitMeta}
            </div>
          </div>
          <div>
            <div className="eyebrow">{t.about.eyebrow}</div>
            <h2 style={{ marginTop: 16 }}>
              {t.about.title} <span className="italic">{t.about.titleItalic}</span>
            </h2>
            {t.about.body.map((p, i) => (
              <p className="body" key={i}>
                {p}
              </p>
            ))}
            <div className="signature">— Michael</div>
          </div>
        </Reveal>
      </div>
    </section>
  );
}

/* =========================================================
   FAQ
   ========================================================= */
function FAQ({ t }) {
  const [open, setOpen] = useStateS(0);
  return (
    <section className="section" id="faq" style={{ paddingTop: 40 }}>
      <div className="wrap">
        <Reveal className="section-head">
          <div>
            <div className="eyebrow">{t.faq.eyebrow}</div>
          </div>
          <div>
            <h2>
              {t.faq.title} <span className="italic">{t.faq.titleItalic}</span>
            </h2>
          </div>
        </Reveal>
        <Reveal className="faq">
          {t.faq.items.map((item, i) => (
            <div className="faq-item" key={i} data-open={open === i}>
              <button className="faq-trigger" onClick={() => setOpen(open === i ? -1 : i)}>
                <span>{item.q}</span>
                <span className="ico">+</span>
              </button>
              <div className="faq-body">
                <div>
                  <p>{item.a}</p>
                </div>
              </div>
            </div>
          ))}
        </Reveal>
      </div>
    </section>
  );
}

/* =========================================================
   CTA + Footer
   ========================================================= */
function CTA({ t }) {
  return (
    <section className="cta" id="contact">
      <div className="cta-bg"></div>
      <Reveal>
        <div className="eyebrow no-dash" style={{ justifyContent: "center", display: "inline-flex" }}>
          {t.cta.status}
        </div>
        <h2 style={{ marginTop: 32 }}>
          {t.cta.title} <span className="italic">{t.cta.titleItalic}</span> {t.cta.titleEnd}
        </h2>
        <p style={{ color: "var(--text-dim)", maxWidth: 640, margin: "0 auto 28px", fontSize: 18, lineHeight: 1.55 }}>
          {t.cta.sub}
        </p>
        <a href={`mailto:${t.cta.email}`} className="cta-email">
          <span className="glyph"></span>
          {t.cta.email}
          <span style={{ color: "var(--accent)" }}>→</span>
        </a>
      </Reveal>
    </section>
  );
}

function Footer({ t, lang, setLang }) {
  return (
    <footer className="footer">
      <div className="footer-inner">
        <div>
          <div style={{ display: "flex", alignItems: "center", gap: 12, marginBottom: 18 }}>
            <img src="assets/logo.png" alt="" style={{ width: 32, height: 32, objectFit: "contain" }} />
            <strong style={{ fontFamily: "var(--font-display)", fontSize: 18 }}>Mijeraki Digital</strong>
          </div>
          <p style={{ color: "var(--text-dim)", maxWidth: 360, lineHeight: 1.6 }}>{t.footer.tagline}</p>
        </div>
        <div>
          <h4>{t.nav.contact}</h4>
          <ul>
            <li><a href="mailto:kontakt@mijeraki.de">kontakt@mijeraki.de</a></li>
            <li>Coburg, Bayern</li>
            <li>Deutschland</li>
          </ul>
        </div>
        <div>
          <h4>Site</h4>
          <ul>
            <li><a href="#process">{t.nav.process}</a></li>
            <li><a href="#services">{t.nav.services}</a></li>
            <li><a href="#about">{t.nav.about}</a></li>
            <li><a href="impressum.html">{t.nav.imprint}</a></li>
          </ul>
        </div>
      </div>
      <div className="footer-bottom">
        <span>{t.footer.legal}</span>
        <span>{t.footer.version}</span>
      </div>
    </footer>
  );
}

Object.assign(window, { Marquee, Reveal, Process, Services, BeforeAfter, About, FAQ, CTA, Footer });
