const { useState, useEffect, useRef } = React; const TWEAK_DEFAULTS = JSON.parse( document.getElementById('tweak-defaults').textContent .replace(/\/\*EDITMODE-(BEGIN|END)\*\//g, '') ); // ---------- ICONS ---------- const Icon = { arrow: (p) => ( ), check: (p) => ( ), plus: (p) => ( ), bracket: (p) => ( ), }; // ---------- CORNER MARKERS ---------- const Corners = ({ color = 'var(--line-3)', size = 10, inset = 0 }) => ( <> {[ { top: inset, left: inset, borderTop: `1px solid ${color}`, borderLeft: `1px solid ${color}` }, { top: inset, right: inset, borderTop: `1px solid ${color}`, borderRight: `1px solid ${color}` }, { bottom: inset, left: inset, borderBottom: `1px solid ${color}`, borderLeft: `1px solid ${color}` }, { bottom: inset, right: inset, borderBottom: `1px solid ${color}`, borderRight: `1px solid ${color}` }, ].map((s, i) => ( ))} ); // ---------- LOGO ---------- const Logo = ({ small }) => (
QuantumImmo
); // ---------- NAV ---------- const Nav = () => ( ); // ---------- TERMINAL BLOCK ---------- const TerminalBlock = () => { const [step, setStep] = useState(0); useEffect(() => { const id = setInterval(() => setStep((s) => (s + 1) % 5), 1600); return () => clearInterval(id); }, []); const lines = [ { c: 'var(--ink-3)', t: '$ quantumimmo init --tenant=perkonig' }, { c: 'var(--accent-2)', t: '› Importing 142 properties from JustImmo...' }, { c: 'var(--ink-2)', t: '› Generating white-label site → perkonig.at' }, { c: 'var(--ink-2)', t: '› Wiring lead-capture + search agents...' }, { c: 'var(--accent)', t: '✓ Live in 4m 18s. Tool-stack: 1.' }, ]; return (
~ / quantumimmo / setup
v0.9.4-beta
{lines.map((l, i) => (
{l.t} {i === step && }
))}
{[ { k: 'sites', v: '1', c: 'var(--accent)' }, { k: 'projects', v: '3', c: 'var(--accent-2)' }, { k: 'leads/24h', v: '47', c: '#3DD68C' }, ].map((m, i) => (
{m.k}
{m.v}
))}
); }; // ---------- HERO FORM ---------- const HeroForm = ({ compact }) => { const [email, setEmail] = useState(''); const [submitted, setSubmitted] = useState(false); return submitted ? (
Du bist auf der Liste. Wir melden uns, sobald wir live sind.
) : (
{ e.preventDefault(); if (email.includes('@')) setSubmitted(true); }} style={{ display: 'flex', gap: 6, padding: 6, background: 'rgba(255,255,255,0.04)', border: '1px solid var(--line-2)', borderRadius: 12, maxWidth: compact ? '100%' : 460, boxShadow: 'inset 0 1px 0 rgba(255,255,255,0.04), 0 8px 24px -12px rgba(74,158,255,0.25)' }}> setEmail(e.target.value)} placeholder="dein@maklerbuero.at" style={{ flex: 1, border: 0, outline: 0, background: 'transparent', padding: '10px 4px', fontSize: 15, color: 'var(--ink)', fontFamily: 'JetBrains Mono, monospace' }} />
); }; // ---------- SCREENSHOT FRAME ---------- const ScreenshotPlaceholder = ({ label, ratio = '4 / 3', accent = 'var(--accent-2)' }) => (
app.quantumimmo.at/dashboard
LIVE
{label}
); // ---------- HERO ---------- const Hero = ({ layout }) => { const isSplit = layout === 'split'; return (
{isSplit ? (
EARLY ACCESS · FRÜHJAHR 2026

Eine Plattform.
Statt vier verschiedener Tools.

Maklersoftware, Website, Bauprojekt-Vermarktung und Lead-Capture in einem System. Für Einzelmakler und kleine Büros, die genug haben vom Tool-Stack-Chaos.

Keine Kreditkarte DSGVO-konform · AT Kein Lock-in
) : (
EARLY ACCESS · FRÜHJAHR 2026

Eine Plattform.
Statt vier verschiedener Tools.

Maklersoftware, Website, Bauprojekt-Vermarktung und Lead-Capture in einem System. Für Einzelmakler und kleine Büros, die genug haben vom Tool-Stack-Chaos.

)}
); }; // ---------- PILOT BAR ---------- const PilotBar = () => { const TOTAL = 12; const TAKEN = 4; const slots = Array.from({ length: TOTAL }); return (
// pilotpartner-programm · 2026
Wir suchen {TOTAL - TAKEN} Pilot-Maklerbüros in Österreich.

Du bekommst persönliches Onboarding, Einfluss auf die Roadmap und Pilot-Konditionen für 24 Monate. Wir zeigen dich (mit deinem Einverständnis) als Referenz.

{slots.map((_, i) => { const filled = i < TAKEN; return ( {filled && } ); })}
{TAKEN} / {TOTAL} Slots vergeben
); }; // ---------- PROBLEM ---------- const ProblemSection = () => { const pains = [ { tag: 'PAIN_01', title: 'Vier Tools, vier Wahrheiten', blurb: 'JustImmo. Wordpress. Mailchimp. Excel. Jedes Property dreimal pflegen, Reportings sind Excel-Voodoo, und am Ende stimmt nirgends was.', stat: '4–6 Tools', statLabel: 'parallel im Einsatz' }, { tag: 'PAIN_02', title: 'Bauträger sagen ab', blurb: 'Standard-Maklersoftware kann keine Bauprojekt-Microsites. Wer Neubau-Mandate will, braucht eine Agentur — oder verliert das Geschäft.', stat: '3–8 k€', statLabel: 'pro Microsite extern' }, { tag: 'PAIN_03', title: 'Leads versickern', blurb: 'Anfragen kommen per Mail. Keiner trackt sie. Follow-ups gehen unter. Die guten gehen zur Konkurrenz, die schneller war.', stat: '30–50 %', statLabel: 'Leads verloren' }, { tag: 'PAIN_04', title: 'Generic-Look statt Marke', blurb: 'Standard-Templates, eingebettete iFrames, fremde Designs. Dein Maklerbüro sieht aus wie hundert andere — und wird austauschbar.', stat: '0', statLabel: 'eigene Markenwirkung' }, ]; return (
/ das problem

Was Standard-Tools
nicht für dich tun.

Status quo in den meisten Maklerbüros. Wenn du dich in zwei oder mehr Punkten wiedererkennst, lies weiter.

{pains.map((p, i) => (
{p.tag}
{p.stat} {p.statLabel}

{p.title}

{p.blurb}

))}
); }; // ---------- FEATURES ---------- const FeatureRow = ({ num, title, blurb, points, screenshotLabel, reverse, accent, codeSnippet }) => (
{num.split(' ')[0]}
{num.split(' ').slice(2).join(' ')}

{title}

{blurb}

    {points.map((p, i) => (
  • 0{i + 1} {p}
  • ))}
{codeSnippet && (
$ {codeSnippet.cmd} {codeSnippet.args}
)}
); const Features = () => (
/ modules

Vier Module, ein Login,
null Workarounds.

Statt Maklersoftware, Website-Baukasten, Lead-Tool und Excel parallel zu pflegen, machst du alles an einem Ort. Die Daten liegen bei dir.

); // ---------- COMPARISON ---------- const Comparison = () => { const rows = [ { label: 'Anzahl Tools', stack: '4–6', qi: '1' }, { label: 'Monatliche Kosten', stack: '200–400 €', qi: 'ab 79 €' }, { label: 'Datenpflege', stack: 'parallel in jedem Tool', qi: 'einmal, auto-synced' }, { label: 'Bauprojekt-Microsites', stack: 'externe Agentur · 3–8 k€', qi: 'inklusive, unbegrenzt' }, { label: 'Lead-Tracking', stack: 'Excel + Mail-Postfach', qi: 'integriert mit Status & Notizen' }, { label: 'White-Label', stack: 'bedingt, oft Iframe', qi: 'komplett, eigene Domain' }, { label: 'Datenexport', stack: 'meist Vendor-Lock-in', qi: 'OpenImmo · jederzeit' }, { label: 'Hosting', stack: 'EU/USA gemischt', qi: 'Österreich · DSGVO' }, ]; return (
/ vergleich

Standard-Stack
vs. eine Plattform.

Was du heute mit drei bis sechs Tools machst — und was passiert, wenn alles in einer Plattform lebt.

// kriterium
Standard-Stack
QuantumImmo
{rows.map((r, i) => (
{r.label}
× {r.stack}
{r.qi}
))}

// Kostenvergleich basiert auf typischen AT-Maklerbüro-Setups (5–15 Mitarbeiter).

Selbst rechnen lassen
); }; // ---------- TIMELINE ---------- const Timeline = () => { const steps = [ { day: 'TAG 0', title: '30-min Demo', blurb: 'Wir zeigen dir das System mit deinen echten Daten — du siehst sofort, ob es passt.', accent: 'var(--accent)' }, { day: 'TAG 1', title: 'Setup-Workshop', blurb: 'Domain, Logo, Farben, Team. Du wählst, wir konfigurieren — gemeinsam in einem Call.', accent: 'var(--accent-2)' }, { day: 'TAG 3', title: 'Datenmigration', blurb: 'JustImmo, OpenImmo oder Excel — wir migrieren. Du checkst und gibst frei.', accent: 'var(--accent)' }, { day: 'TAG 7', title: 'Live', blurb: 'Öffentliche Maklerseite und Admin-Backend produktiv. Du arbeitest, wir bleiben dran.', accent: 'var(--accent-2)' }, ]; return (
/ onboarding

Von Demo bis live
in sieben Tagen.

Kein Wochen-Workshop. Kein "melden Sie sich in Q3". Vier klare Schritte, persönlich begleitet.

{steps.map((s, i) => (
0{i + 1}
{s.day}

{s.title}

{s.blurb}

))}
); }; // ---------- PRICING ---------- const PricingCard = ({ name, price, period, blurb, features, featured, cta }) => (
{featured && ( <>
▸ EMPFOHLEN
)}
// {name}

{blurb}

{price} {period && {period}}
{cta}
    {features.map((f, i) => (
  • {f}
  • ))}
); const Pricing = () => (
/ pricing

Transparent.
Monatlich kündbar.

Während der Early-Access-Phase: 50 % Rabatt für die ersten zwölf Monate.

); // ---------- FAQ ---------- const FAQItem = ({ q, a, idx }) => { const [open, setOpen] = useState(idx === 0); return (

{a}

); }; const FAQ = () => { const faqs = [ { q: 'Wie funktioniert die Migration von JustImmo?', a: 'Wir lesen deinen JustImmo-Bestand per OpenImmo-Export ein, mappen die Felder auf unser Datenmodell und übertragen alles inklusive Bildern, Dokumenten und Status. Du siehst eine Vorschau und gibst frei, bevor irgendetwas öffentlich wird. Typische Dauer: 1–2 Tage je nach Bestandsgröße.' }, { q: 'Was passiert mit meinen Daten, wenn ich kündige?', a: 'Du kannst jederzeit einen kompletten OpenImmo-Export ziehen — Properties, Medien, Leads. Kein Lock-in, keine Übergabefrist, keine Extra-Kosten. Das ist im Vertrag fixiert.' }, { q: 'Wo werden die Daten gehostet?', a: 'Server in Österreich (Wien) und Deutschland (Frankfurt). DSGVO-konform, Auftragsverarbeitungsvertrag standardmäßig dabei. Keine US-Cloud, keine Datentransfers außerhalb der EU.' }, { q: 'Kann ich meine bestehende Domain weiternutzen?', a: 'Ja. Du verbindest deine Domain (perkonig.at, makler-mueller.at, ...) per DNS-Eintrag mit deiner QuantumImmo-Maklerseite. SSL-Zertifikat richten wir automatisch ein. Subdomains für Bauprojekte sind genauso möglich.' }, { q: 'Was ist mit willhaben, ImmoNet und Co.?', a: 'Wir exportieren deine Properties im OpenImmo-Format — das verstehen alle relevanten Portale (willhaben, ImmoScout24 AT, ImmoNet, ImmoWelt, ...). Du pflegst einmal in QuantumImmo, der Export läuft automatisch.' }, { q: 'Wir sind drei Standorte — kann das QuantumImmo abbilden?', a: 'Ja, im Individuell-Tarif. Mehrere Maklermarken und Standorte in einem Account, jeweils mit eigener Website, eigenem Branding und eigenem Property-Bestand. Cross-Standort-Reporting im zentralen Dashboard.' }, { q: 'Was kostet die Bauprojekt-Microsite extra?', a: 'Nichts. Im Premium-Tarif sind unbegrenzte Bauprojekt-Microsites enthalten — inklusive Unit-Tabelle, POI-Karte, Downloads und eigenem Branding pro Projekt.' }, { q: 'Wann genau geht ihr live?', a: 'Frühjahr 2026. Pilotpartner starten ab Februar 2026 mit Vorab-Zugang. Wer auf der Early-Access-Liste steht, bekommt vor allen anderen ein Onboarding-Slot und 50 % Rabatt für die ersten 12 Monate.' }, ]; return (
/ faq

Was du wissen
willst, bevor du
vormerkst.

Steht deine Frage nicht dabei? Schreib uns — Antwort innerhalb von einem Werktag.

hello@quantumimmo.at
{faqs.map((f, i) => )}
); }; // ---------- FINAL CTA ---------- const CTAForm = () => { const [email, setEmail] = useState(''); const [submitted, setSubmitted] = useState(false); return submitted ? (
Du bist auf der Liste.
) : (
{ e.preventDefault(); if (email.includes('@')) setSubmitted(true); }} style={{ display: 'flex', gap: 6, padding: 6, background: 'rgba(255,255,255,0.04)', border: '1px solid var(--line-2)', borderRadius: 12, maxWidth: 460, boxShadow: 'inset 0 1px 0 rgba(255,255,255,0.05), 0 8px 24px -12px var(--accent-glow)' }}> setEmail(e.target.value)} placeholder="dein@maklerbuero.at" style={{ flex: 1, border: 0, outline: 0, background: 'transparent', padding: '10px 4px', fontSize: 15, color: 'var(--ink)', fontFamily: 'JetBrains Mono, monospace' }} />
); }; const FinalCTA = ({ layout }) => { const isSplit = layout === 'split'; return (
{isSplit ? (
/ final boot

Schluss mit dem
Tool-Stack-Chaos.

Trag dich ein. Zum Launch bist du dabei — mit 50 % Rabatt für die ersten zwölf Monate.

) : (
/ final boot

Schluss mit dem
Tool-Stack-Chaos.

Trag dich ein. Zum Launch bist du dabei — mit 50 % Rabatt für die ersten zwölf Monate.

)}
); }; // ---------- FOOTER ---------- const FooterCol = ({ title, links }) => (
// {title}
); const Footer = () => (

Ein Produkt von QuantumTech. Maklersoftware, neu gedacht.

ALL SYSTEMS · OPERATIONAL
© 2026 QuantumTech · v0.9.4-beta Made in Austria · 🇦🇹
); // ---------- TWEAKS ---------- const Tweaks = ({ tweaks, setTweak }) => ( setTweak('layout', v)} options={[{ value: 'split', label: 'Split' },{ value: 'centered', label: 'Zentriert' }]} /> setTweak('intensity', v)} options={[{ value: 'low', label: 'Low' },{ value: 'med', label: 'Med' },{ value: 'high', label: 'High' }]} /> ); const useIntensity = (level) => { useEffect(() => { const root = document.documentElement; if (level === 'low') { root.style.setProperty('--accent-glow', 'rgba(255,122,51,0.20)'); root.style.setProperty('--accent-2-glow', 'rgba(74,158,255,0.20)'); } else if (level === 'med') { root.style.setProperty('--accent-glow', 'rgba(255,122,51,0.35)'); root.style.setProperty('--accent-2-glow', 'rgba(74,158,255,0.35)'); } else { root.style.setProperty('--accent-glow', 'rgba(255,122,51,0.5)'); root.style.setProperty('--accent-2-glow', 'rgba(74,158,255,0.5)'); } }, [level]); }; // ---------- APP ---------- const App = () => { const [tweaks, setTweak] = useTweaks(TWEAK_DEFAULTS); useIntensity(tweaks.intensity); return ( <>