/* Powermieter Landingpage — content data + small building-block components */

/* ---- 6-step process (the rail) ---- */
const LP_STEPS = [
  { n: 1, label: 'Informieren',       icon: 'info' },
  { n: 2, label: 'Interesse',         icon: 'spark' },
  { n: 3, label: 'Registrierung',     icon: 'user' },
  { n: 4, label: 'Vertrag prüfen',    icon: 'doc' },
  { n: 5, label: 'Aktivierung',       icon: 'checkBold' },
  { n: 6, label: 'Portal nutzen',     icon: 'chart' },
];

const LP_HOW = [
  { t: 'Solarstrom entsteht auf dem Dach', d: 'Die Photovoltaik-Anlage auf Ihrem Gebäude erzeugt Strom direkt vor Ort — sauber und lokal.' },
  { t: 'Strom wird im Gebäude genutzt', d: 'Der Strom wird zuerst im Haus verbraucht: in den Wohnungen, für Allgemeinstrom oder die Wärmepumpe.' },
  { t: 'Reststrom ergänzt automatisch', d: 'Reicht der lokale Strom nicht aus, wird nahtlos Strom aus dem Netz ergänzt — ohne dass Sie etwas merken.' },
  { t: 'Powermieter rechnet transparent ab', d: 'Ihr Verbrauch wird digital erfasst und monatlich nachvollziehbar abgerechnet.' },
];

const LP_BENEFITS = [
  { ic: 'wallet',  t: 'Günstiger Stromtarif', d: 'Sie profitieren von einem attraktiven Stromangebot für Ihr Gebäude — meist günstiger als die Grundversorgung.', tag: 'Sparen' },
  { ic: 'sun2',    t: 'Lokaler Solarstrom',   d: 'Ein Teil Ihres Stroms kommt direkt vom Dach Ihres Hauses. Kurze Wege, echte regionale Energie.' },
  { ic: 'home',    t: 'Keine Umbauten',       d: 'In Ihrer Wohnung müssen Sie nichts ändern. Die Technik sitzt im Gebäude am Zählerplatz.' },
  { ic: 'shield',  t: 'Sichere Versorgung',   d: 'Ihre Stromversorgung bleibt jederzeit zuverlässig — unterbrechungsfrei, rund um die Uhr.' },
  { ic: 'receipt', t: 'Transparente Abrechnung', d: 'Sie sehen jederzeit klar, was Sie verbrauchen und was berechnet wird — vollständig digital.' },
  { ic: 'building',t: 'Gut für das Gebäude',  d: 'Je mehr Bewohner teilnehmen, desto besser kann der lokal erzeugte Strom genutzt werden.' },
];

const LP_PAULA_BULLETS = [
  'Erklärt Ihren Stromtarif verständlich — ohne Fachsprache.',
  'Hilft bei Fragen rund um Registrierung und Vertrag.',
  'Erinnert freundlich an noch fehlende Angaben.',
  'Erklärt später Ihre Rechnungen und Ihren Verbrauch.',
  'Gibt persönliche Tipps zum Stromsparen.',
];

const LP_TIMELINE = [
  { ic: 'spark',     t: 'Interesse anmelden',    d: 'Sie tragen Ihre Kontaktdaten ein — unverbindlich und in wenigen Minuten.' },
  { ic: 'user',      t: 'Daten vervollständigen', d: 'Wir benötigen Angaben zu Ihrer Wohnung und zum Stromzähler.' },
  { ic: 'doc',       t: 'Vertrag prüfen',        d: 'Sie sehen Tarif, Preisblatt und Vertragsunterlagen transparent — vor dem Abschluss.' },
  { ic: 'signature', t: 'Digital bestätigen',    d: 'Erst mit Ihrer digitalen Bestätigung wird der Vertrag verbindlich.' },
  { ic: 'meter',     t: 'Aktivierung vorbereiten', d: 'Wir prüfen die Zählerdaten und stimmen den Lieferbeginn ab.' },
  { ic: 'chart',     t: 'Portal nutzen',         d: 'Nach der Aktivierung sehen Sie Verbrauch, Abrechnung und Stromanteile digital.' },
];

const LP_APP = {
  mieter: {
    kpis: [ { v: '76', u: '%', l: 'Eigenverbrauchsanteil' }, { v: '−18', u: '%', l: 'Stromkosten vs. Vormonat' }, { v: '12,6', u: 'kg', l: 'CO₂ gespart / Monat' } ],
    title: 'Für Mieter', icon: 'home',
    points: ['Aktuellen Verbrauch live sehen', 'PV-Anteil und Autarkie verstehen', 'Rechnungen jederzeit einsehen', 'Persönliche Spartipps erhalten', 'Eigene Kosten besser einschätzen'],
  },
  vermieter: {
    kpis: [ { v: '58', u: '%', l: 'Autarkiegrad Gebäude' }, { v: '18,6', u: 'kW', l: 'PV-Erzeugung aktuell' }, { v: '+21', u: '%', l: 'Ersparnis vs. Vorjahr' } ],
    title: 'Für Vermieter & Hausverwaltung', icon: 'building',
    points: ['Gebäudeverbrauch im Überblick', 'PV-Erzeugung analysieren', 'Teilnahmequote verfolgen', 'Verbrauchsgruppen verstehen', 'Energiekonzept transparent kommunizieren'],
  },
};

const LP_FAQ = [
  { q: 'Muss ich teilnehmen?', a: 'Nein. Die Teilnahme ist vollständig freiwillig. Wenn Sie sich nicht anmelden, ändert sich für Sie nichts — Ihre bisherige Stromversorgung bleibt bestehen.' },
  { q: 'Habe ich immer Strom?', a: 'Ja. Wenn gerade nicht genug Solarstrom verfügbar ist, wird automatisch Strom aus dem Netz ergänzt — unterbrechungsfrei und ohne Ihr Zutun.' },
  { q: 'Muss in meiner Wohnung etwas umgebaut werden?', a: 'In der Regel nicht. Die Technik befindet sich im Gebäude bzw. am Zählerplatz. In Ihrer Wohnung ändert sich nichts.' },
  { q: 'Wird mein Vertrag sofort verbindlich?', a: 'Nein. Erst wenn Sie die Vertragsunterlagen geprüft und digital bestätigt haben, wird der Vertrag verbindlich.' },
  { q: 'Was brauche ich für die Registrierung?', a: 'Ihre Kontaktdaten, Angaben zur Wohnung und möglichst Ihre Zählernummer oder ein Foto des Stromzählers.' },
  { q: 'Wer erstellt die Abrechnung?', a: 'Die Abrechnung erfolgt vollständig digital über Powermieter / PowerHouse360 — nachvollziehbar und monatlich.' },
  { q: 'Was sehe ich später im Portal?', a: 'Ihren Verbrauch, Abrechnungen, den PV-Anteil, die Kostenentwicklung und hilfreiche Tipps zum Energiesparen.' },
];

const LP_CHAT_QA = [
  { q: 'Muss ich teilnehmen?', a: 'Nein 🙂 Die Teilnahme ist völlig freiwillig. Wenn Sie nicht möchten, bleibt Ihre bisherige Stromversorgung einfach bestehen.' },
  { q: 'Wo finde ich meine Zählernummer?', a: 'Sie steht direkt auf Ihrem Stromzähler, meist als „Zählernummer" oder als Barcode. Alternativ genügt für den Start ein Foto — den Rest übernehme ich.' },
  { q: 'Was passiert bei schlechtem Wetter?', a: 'Kein Problem: Erzeugt das Dach gerade zu wenig, wird automatisch Reststrom aus dem Netz ergänzt. Sie haben jederzeit Strom.' },
  { q: 'Wann beginnt mein Vertrag?', a: 'Erst wenn Sie alle Unterlagen geprüft und digital bestätigt haben. Vorher entsteht keinerlei Verpflichtung.' },
];

/* ------------------------------------------------------------------ */
/* Reveal-on-scroll wrapper                                            */
const { useState: useLS, useEffect: useLE, useRef: useLR } = React;

function Reveal({ children, delay, tag = 'div', className = '', style, id }) {
  const ref = useLR(null);
  const [seen, setSeen] = useLS(false);
  useLE(() => {
    const el = ref.current; if (!el) return;
    if (!('IntersectionObserver' in window)) { setSeen(true); return; }
    const io = new IntersectionObserver(([e]) => { if (e.isIntersecting) { setSeen(true); io.disconnect(); } }, { threshold: 0.12, rootMargin: '0px 0px -8% 0px' });
    io.observe(el); return () => io.disconnect();
  }, []);
  const Tag = tag;
  return <Tag ref={ref} id={id} className={'lp-reveal ' + className} data-in={seen ? 'true' : 'false'} data-delay={delay} style={style}>{children}</Tag>;
}

/* Count-up number (triggers when scrolled into view) */
function CountUp({ value, decimals = 0, prefix = '', suffix = '', dur = 1400 }) {
  const ref = useLR(null);
  const [disp, setDisp] = useLS(prefix + (0).toFixed(decimals) + suffix);
  const done = useLR(false);
  useLE(() => {
    const el = ref.current; if (!el) return;
    const neg = value < 0; const target = Math.abs(value);
    const run = () => {
      if (done.current) return; done.current = true;
      const t0 = performance.now();
      const tick = (t) => {
        const p = Math.min(1, (t - t0) / dur);
        const e = 1 - Math.pow(1 - p, 3);
        const cur = target * e;
        setDisp(prefix + (neg ? '−' : '') + cur.toLocaleString('de-DE', { minimumFractionDigits: decimals, maximumFractionDigits: decimals }) + suffix);
        if (p < 1) requestAnimationFrame(tick);
      };
      requestAnimationFrame(tick);
    };
    if (!('IntersectionObserver' in window)) { run(); return; }
    const io = new IntersectionObserver(([en]) => { if (en.isIntersecting) run(); }, { threshold: 0.5 });
    io.observe(el); return () => io.disconnect();
  }, [value]);
  return <span ref={ref}>{disp}</span>;
}

/* Resolves an asset URL: blob URL from the offline bundle if present, else the path. */
function lpAsset(id, path) { return (window.__resources && window.__resources[id]) || path; }

Object.assign(window, { LP_STEPS, LP_HOW, LP_BENEFITS, LP_PAULA_BULLETS, LP_TIMELINE, LP_APP, LP_FAQ, LP_CHAT_QA, Reveal, CountUp, lpAsset });
