/* 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 {children};
}
/* 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 {disp};
}
/* 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 });