/* global React */ const { useState, useContext, createContext, useEffect } = React; // ============================================================ // i18n // ============================================================ const STRINGS = { de: { htmlLang: 'de', nav: { features: 'Funktionen', security: 'Sicherheit', pricing: 'Preise', faq: 'FAQ', cta: 'Auf die Warteliste' }, hero: { badge: 'Bald verfügbar — iOS & Android', titleA: 'Behördenpost', titleB: 'im Griff.', body: 'Fotografieren Sie einen Brief vom Finanzamt, Jobcenter oder der Bußgeldstelle — FristRadar erkennt die Frist, plant die Schritte und erstellt die DIN 5008 Antwort.', cta: 'Auf die Warteliste', ghost: 'So funktioniert’s', soon: 'Bald verfügbar', tooltip: 'Bald im App Store & Play Store — jetzt vormerken lassen.', }, mini: { brand: 'FristRadar', scan: 'Brief scannen', latest: 'Letzte Briefe', letters: [ { from: 'Finanzamt Berlin‑Mitte', subj: 'Einkommensteuererklärung 2024', risk: 'high', days: '15', deadline: '19.03.2026' }, { from: 'Bußgeldstelle Köln', subj: 'Anhörung – Geschwindigkeit', risk: 'mid', days: '22', deadline: '26.03.2026' }, { from: 'Jobcenter München', subj: 'Weiterbewilligungsantrag', risk: 'low', days: '37', deadline: '10.04.2026' }, ], heroLetterFrom: 'FINANZAMT BERLIN‑MITTE', heroLetterDeadline: 'Frist: 19.03.2026', daysWord: 'Tage', risks: { high: 'Hohes Risiko', mid: 'Mittleres', low: 'Geringes' }, }, waitlist: { badge: 'Early Bird', title: 'Werde Early Bird.', bodyA: 'Trag dich in die Warteliste ein und erhalte ', bodyB: '3–6 Monate FristRadar Premium kostenlos', bodyC: ', sobald die App live ist.', placeholder: 'ihre@email.de', cta: 'Vormerken', ctaSending: 'Wird gesendet…', reassure: 'Kein Spam. Wir melden uns nur einmal — wenn die App startet.', successTitle: 'Sie sind dabei.', successBody: 'Wir haben Ihnen eine Bestätigung an Ihre E-Mail-Adresse geschickt.', errorInvalid: 'Bitte geben Sie eine gültige E-Mail-Adresse ein.', errorGeneric: 'Etwas ist schiefgelaufen. Bitte später noch einmal versuchen.', }, problem: { eyebrow: 'Das Problem', title: 'Eine verpasste Frist kann teuer werden.', body: 'Behördenbriefe kommen in Papier. Sie liegen Tage auf dem Küchentisch. Niemand erinnert. Niemand trackt. Eine versäumte Frist kostet Geld, manchmal eine Genehmigung, manchmal mehr — und es gibt schlicht kein System dafür.', }, how: { eyebrow: 'So funktioniert’s', title: 'Vier Schritte vom Brief zum Nachweis.', steps: [ { n: '01', t: 'Foto machen', d: 'Fotografieren Sie den Brief — vorne und hinten. Die Texterkennung läuft auf Ihrem Gerät.' }, { n: '02', t: 'Frist & Risiko sehen', d: 'FristRadar erkennt die Frist und stuft das Risiko ein: Was passiert, wenn Sie sie versäumen?' }, { n: '03', t: 'Aktionsplan + Antwort', d: 'Schritt‑für‑Schritt‑Plan plus eine fertige Antwortvorlage im DIN 5008 Format.' }, { n: '04', t: 'Nachweis ablegen', d: 'Versandbeleg fotografieren. Tracking‑Nummer eintragen. Frist sauber abgeschlossen.' }, ], }, features: { eyebrow: 'Funktionen', title: 'Alles, was zwischen Briefkasten und Frist passiert.', items: [ { t: 'Frist‑Erkennung mit Risikostufe', d: 'Drei Stufen: hoch, mittel, gering — mit konkreter Konsequenz in Euro.' }, { t: 'Aktionsplan pro Behörde', d: 'Vorgefertigte Schritte für Finanzamt, Jobcenter, Bußgeldstelle, Ausländerbehörde und mehr.' }, { t: 'DIN 5008 Antwort‑Generator', d: 'Formaler Antwortbrief, fertig zum Drucken oder als PDF — Adressblock, Aktenzeichen, Betreff.' }, { t: 'Nachweis‑Ordner', d: 'Posteingang, Sendebeleg, Tracking. Pro Brief ein vollständiger Vorgang.' }, { t: 'Kalender‑Sync + Reminder', d: 'T‑7, T‑3, T‑1 als Push. „Erledigt"‑Knopf schließt die Frist sauber ab.' }, { t: 'On‑Device OCR', d: 'Daten bleiben auf Ihrem Gerät. Cloud‑OCR nur, wenn Sie es ausdrücklich wählen.' }, ], }, authorities: { eyebrow: 'Unterstützte Behörden', title: 'Von Finanzamt bis Gericht.', list: ['Finanzamt', 'Bußgeldstelle', 'Jobcenter / Agentur für Arbeit', 'Ausländerbehörde', 'Krankenkasse', 'Rentenversicherung', 'Bauamt', 'Kfz‑Zulassung', 'Kita / Schule', 'Gericht'], }, privacy: { eyebrow: 'Datenschutz', title: 'Ihre Briefe bleiben Ihre Briefe.', body: 'FristRadar ist für deutsche Nutzer gebaut — und das schließt deutschen Datenschutz‑Anspruch ein.', items: [ ['On‑Device OCR', 'Standard. Texterkennung passiert auf Ihrem Gerät — der Brief verlässt es nicht.'], ['EU‑only Hosting', 'Cloudflare EU. Keine Drittland‑Übermittlung, keine US‑Hyperscaler.'], ['Datenminimierung', 'Wir speichern nur, was die App braucht. Keine Werbe‑IDs, kein Tracking.'], ['Verschlüsselung', 'At rest und in transit. AES‑256 / TLS 1.3.'], ['Auto‑Löschung', 'Konfigurierbar pro Brief: nach 90, 180 oder 365 Tagen.'], ['Open Audit', 'Datenschutzkonzept und Sicherheitsbericht öffentlich einsehbar.'], ], }, pricing: { eyebrow: 'Preise', title: 'Klar, fair, deutsch.', free: { name: 'Free', desc: 'Für gelegentliche Briefe.', price: '0 €', items: ['5 Scans pro Monat', '3 aktive Fristen', 'Manueller .ics‑Export', 'Vorlagen nur lesen'] }, premium: { name: 'Premium', desc: 'Für alle, die alles im Griff brauchen.', price: '4,99 €', perMonth: '/ Monat', earlyBird: 'Early Bird · 3–6 Monate gratis', earlyBirdNote: 'Auf der Warteliste: 3–6 Monate gratis', items: ['Unbegrenzte Scans & Fristen', 'Auto‑Kalender‑Sync', 'Antwortvorlagen generieren & bearbeiten', 'DIN 5008 PDF‑Export', 'Cloud‑OCR (auch Handschrift)'], }, }, faq: { eyebrow: 'Fragen & Antworten', title: 'Was Sie wissen sollten.', qa: [ ['Wann startet die App?', 'Wir planen den Launch im Lauf des Jahres 2026 — iOS und Android gemeinsam. Early Birds bekommen die App eine Woche vor allen anderen.'], ['Was bekomme ich als Early Bird genau?', '3 bis 6 Monate FristRadar Premium kostenlos, sobald die App live ist. Die Länge richtet sich nach Ihrer Position auf der Warteliste.'], ['Wo werden meine Daten gespeichert?', 'Ausschließlich in der EU, gehostet bei Cloudflare EU. Texterkennung läuft standardmäßig auf Ihrem Gerät — nichts verlässt das Telefon ohne Ihre Zustimmung.'], ['Funktioniert das auch mit handschriftlichen Briefen?', 'Mit Premium: ja. Cloud‑OCR erkennt auch deutsche Handschrift in Druckbuchstaben — Sie können das Ergebnis vor dem Speichern korrigieren.'], ['Welche Behörden werden unterstützt?', 'Finanzamt, Jobcenter, Bußgeldstelle, Ausländerbehörde, Krankenkasse, Rentenversicherung, Bauamt, Kfz‑Zulassung, Kita/Schule, Gericht. Andere Behörden lassen sich manuell anlegen.'], ['iOS und Android?', 'Beides. Beide Plattformen starten gleichzeitig.'], ], }, footer: { tagline: 'Behördenpost im Griff. Frist erkennen, handeln, Nachweis sichern.', colProduct: 'Produkt', colLegal: 'Rechtliches', colContact: 'Kontakt', productLinks: [['Funktionen', '#funktionen'], ['Sicherheit', '#sicherheit'], ['Preise', '#preise'], ['FAQ', '#faq']], legalLinks: [['Impressum', 'https://teknora.de/de/contact#legal'], ['Datenschutz', 'https://teknora.de/de/privacy-policy']], contactLinks: [['info@teknora.de', 'mailto:info@teknora.de'], ['Kontaktformular', 'https://teknora.de/de/contact']], copyright: '© 2026 Teknora e.K. · Made in Germany', }, }, en: { htmlLang: 'en', nav: { features: 'Features', security: 'Privacy', pricing: 'Pricing', faq: 'FAQ', cta: 'Join the waitlist' }, hero: { badge: 'Coming soon — iOS & Android', titleA: 'Government mail,', titleB: 'under control.', body: 'Photograph a letter from the Finanzamt, Jobcenter or Bußgeldstelle — FristRadar detects the deadline, plans the steps, and drafts a DIN 5008 reply for you.', cta: 'Join the waitlist', ghost: 'How it works', soon: 'Coming soon', tooltip: 'Coming to App Store & Play Store — sign up to be notified.', }, mini: { brand: 'FristRadar', scan: 'Scan letter', latest: 'Recent letters', letters: [ { from: 'Finanzamt Berlin‑Mitte', subj: 'Income tax return 2024', risk: 'high', days: '15', deadline: '19.03.2026' }, { from: 'Bußgeldstelle Köln', subj: 'Hearing — speeding', risk: 'mid', days: '22', deadline: '26.03.2026' }, { from: 'Jobcenter München', subj: 'Benefits renewal', risk: 'low', days: '37', deadline: '10.04.2026' }, ], heroLetterFrom: 'FINANZAMT BERLIN‑MITTE', heroLetterDeadline: 'Deadline: 19.03.2026', daysWord: 'days', risks: { high: 'High risk', mid: 'Medium', low: 'Low' }, }, waitlist: { badge: 'Early Bird', title: 'Become an early bird.', bodyA: 'Join the waitlist and receive ', bodyB: '3–6 months of FristRadar Premium for free', bodyC: ' as soon as the app launches.', placeholder: 'your@email.com', cta: 'Notify me', ctaSending: 'Sending…', reassure: 'No spam. We’ll write you exactly once — when the app goes live.', successTitle: 'You’re on the list.', successBody: 'We’ve sent a confirmation to your inbox.', errorInvalid: 'Please enter a valid email address.', errorGeneric: 'Something went wrong. Please try again later.', }, problem: { eyebrow: 'The problem', title: 'A missed deadline can get expensive — fast.', body: 'Government letters arrive on paper. They sit on the kitchen table for days. Nobody reminds you. Nobody tracks them. A missed deadline costs money, sometimes a permit, sometimes more — and there is simply no system for it.', }, how: { eyebrow: 'How it works', title: 'Four steps from letter to proof of delivery.', steps: [ { n: '01', t: 'Take a photo', d: 'Photograph the letter — front and back. Text recognition runs on your device.' }, { n: '02', t: 'See deadline & risk', d: 'FristRadar detects the deadline and rates the risk: what happens if you miss it?' }, { n: '03', t: 'Action plan + reply', d: 'Step‑by‑step plan plus a ready‑to‑send DIN 5008 response template.' }, { n: '04', t: 'File the proof', d: 'Photograph the postal receipt. Add the tracking number. Deadline cleanly closed.' }, ], }, features: { eyebrow: 'Features', title: 'Everything that happens between the mailbox and the deadline.', items: [ { t: 'Deadline detection with risk level', d: 'Three tiers: high, medium, low — with concrete consequences in euros.' }, { t: 'Action plan per authority', d: 'Pre‑built steps for Finanzamt, Jobcenter, Bußgeldstelle, Ausländerbehörde and more.' }, { t: 'DIN 5008 response generator', d: 'A formal reply letter, ready to print or as PDF — address block, file number, subject.' }, { t: 'Proof folder', d: 'Inbox, postal receipt, tracking. One complete record per letter.' }, { t: 'Calendar sync + reminders', d: 'T‑7, T‑3, T‑1 as push. “Done” button closes the deadline cleanly.' }, { t: 'On‑device OCR', d: 'Your data stays on your device. Cloud OCR only when you explicitly choose it.' }, ], }, authorities: { eyebrow: 'Supported authorities', title: 'From Finanzamt to Gericht.', list: ['Finanzamt', 'Bußgeldstelle', 'Jobcenter / Agentur für Arbeit', 'Ausländerbehörde', 'Krankenkasse', 'Rentenversicherung', 'Bauamt', 'Kfz‑Zulassung', 'Kita / Schule', 'Gericht'], }, privacy: { eyebrow: 'Privacy', title: 'Your letters stay your letters.', body: 'FristRadar is built for German users — and that includes a German‑level expectation of privacy.', items: [ ['On‑device OCR', 'Default. Text recognition runs on your device — the letter never leaves it.'], ['EU‑only hosting', 'Cloudflare EU. No third‑country transfers, no US hyperscalers.'], ['Data minimisation', 'We only store what the app needs. No advertising IDs, no tracking.'], ['Encryption', 'At rest and in transit. AES‑256 / TLS 1.3.'], ['Auto‑deletion', 'Configurable per letter: after 90, 180 or 365 days.'], ['Open audit', 'Privacy concept and security report publicly available.'], ], }, pricing: { eyebrow: 'Pricing', title: 'Clear, fair, no surprises.', free: { name: 'Free', desc: 'For occasional letters.', price: '€ 0', items: ['5 scans per month', '3 active deadlines', 'Manual .ics export', 'Templates read‑only'] }, premium: { name: 'Premium', desc: 'For everyone who needs all of it under control.', price: '€ 4.99', perMonth: '/ month', earlyBird: 'Early Bird · 3–6 months free', earlyBirdNote: 'On the waitlist: 3–6 months free', items: ['Unlimited scans & deadlines', 'Auto calendar sync', 'Generate & edit response templates', 'DIN 5008 PDF export', 'Cloud OCR (handwriting too)'], }, }, faq: { eyebrow: 'Questions & answers', title: 'What you should know.', qa: [ ['When is the app launching?', 'We are planning the launch during 2026 — iOS and Android together. Early birds get the app a week before everyone else.'], ['What exactly do I get as an early bird?', '3 to 6 months of FristRadar Premium for free, as soon as the app launches. The length depends on your position on the waitlist.'], ['Where is my data stored?', 'Exclusively in the EU, hosted on Cloudflare EU. Text recognition runs on your device by default — nothing leaves your phone without your consent.'], ['Does it work with handwritten letters?', 'With Premium: yes. Cloud OCR also recognises German block‑letter handwriting — and you can correct the result before saving.'], ['Which authorities are supported?', 'Finanzamt, Jobcenter, Bußgeldstelle, Ausländerbehörde, Krankenkasse, Rentenversicherung, Bauamt, Kfz‑Zulassung, Kita/Schule, Gericht. Other authorities can be added manually.'], ['iOS and Android?', 'Both. Both platforms launch at the same time.'], ], }, footer: { tagline: 'Government mail under control. Detect, act, prove.', colProduct: 'Product', colLegal: 'Legal', colContact: 'Contact', productLinks: [['Features', '#funktionen'], ['Privacy', '#sicherheit'], ['Pricing', '#preise'], ['FAQ', '#faq']], legalLinks: [['Legal notice', 'https://teknora.de/en/contact#legal'], ['Privacy policy', 'https://teknora.de/en/privacy-policy']], contactLinks: [['info@teknora.de', 'mailto:info@teknora.de'], ['Contact form', 'https://teknora.de/en/contact']], copyright: '© 2026 Teknora e.K. · Made in Germany', }, }, }; const I18nContext = createContext({ t: STRINGS.de, lang: 'de', setLang: () => {} }); const useT = () => useContext(I18nContext); function I18nProvider({ children }) { const initial = (() => { if (typeof window === 'undefined') return 'de'; const saved = window.localStorage?.getItem('fristradar-lang'); if (saved === 'de' || saved === 'en') return saved; const nav = (window.navigator?.language || 'de').toLowerCase(); return nav.startsWith('en') ? 'en' : 'de'; })(); const [lang, _setLang] = useState(initial); const setLang = (l) => { _setLang(l); try { window.localStorage.setItem('fristradar-lang', l); } catch {} document.documentElement.lang = STRINGS[l].htmlLang; }; useEffect(() => { document.documentElement.lang = STRINGS[lang].htmlLang; }, [lang]); return ( {children} ); } // ============================================================ // Components // ============================================================ function Nav() { const { t, lang, setLang } = useT(); return (
F
FristRadar
); } function LangToggle({ lang, setLang }) { const btn = (active) => ({ background: active ? '#1B4F72' : 'transparent', color: active ? '#fff' : '#1C2833', border: '1px solid ' + (active ? '#1B4F72' : '#C5D0DB'), padding: '5px 10px', borderRadius: 8, fontSize: 12, fontWeight: 700, fontFamily: 'inherit', cursor: 'pointer', letterSpacing: '.02em', }); return (
); } function Hero() { const { t } = useT(); return (
{t.hero.badge}

{t.hero.titleA}
{t.hero.titleB}

{t.hero.body}

{t.hero.cta} {t.hero.ghost}
{t.hero.soon}
); } function StoreBadge({ variant }) { if (variant === 'apple') { return (
Download on the
App Store
); } return (
GET IT ON
Google Play
); } function HeroVisual() { const { t } = useT(); return (
{t.mini.heroLetterFrom}
{t.mini.heroLetterDeadline}
F
{t.mini.brand}
{t.mini.scan}
{t.mini.latest}
{t.mini.letters.map((l, i) => (
{i < t.mini.letters.length - 1 ?
: null}
))}
); } function MiniLetterCard({ from, subj, risk, days, deadline }) { const { t } = useT(); const c = { high: { bg: '#FDECEA', fg: '#B33120', dot: '#E74C3C' }, mid: { bg: '#FEF3E2', fg: '#B57100', dot: '#F39C12' }, low: { bg: '#E8F6EE', fg: '#1D7A43', dot: '#27AE60' } }[risk]; const label = t.mini.risks[risk]; return (
{from}
{days} {t.mini.daysWord}
{subj}
{label} {deadline}
); } function Waitlist() { const { t, lang } = useT(); const [email, setEmail] = useState(''); const [status, setStatus] = useState('idle'); // 'idle' | 'sending' | 'ok' | 'error' const [errorMsg, setErrorMsg] = useState(''); const submit = async (e) => { e.preventDefault(); if (status === 'sending') return; setErrorMsg(''); setStatus('sending'); try { const r = await fetch('/api/waitlist', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ email, lang }), }); const data = await r.json().catch(() => ({})); if (r.ok && data.ok) { setStatus('ok'); } else { setStatus('error'); setErrorMsg(r.status === 400 ? t.waitlist.errorInvalid : t.waitlist.errorGeneric); } } catch { setStatus('error'); setErrorMsg(t.waitlist.errorGeneric); } }; return (
{t.waitlist.badge}

{status === 'ok' ? t.waitlist.successTitle : t.waitlist.title}

{status === 'ok' ? t.waitlist.successBody : (<>{t.waitlist.bodyA}{t.waitlist.bodyB}{t.waitlist.bodyC})}

{status !== 'ok' && ( <>
setEmail(e.target.value)} placeholder={t.waitlist.placeholder} disabled={status === 'sending'} style={{ flex: 1, padding: '14px 18px', borderRadius: 12, border: '1px solid rgba(255,255,255,.2)', background: 'rgba(255,255,255,.08)', color: '#fff', fontSize: 15, fontFamily: 'inherit', minWidth: 0 }} />
{status === 'error' && (

{errorMsg}

)}

{t.waitlist.reassure}

)} {status === 'ok' && (
{t.waitlist.successBody}
)}
); } function Problem() { const { t } = useT(); return (
{t.problem.eyebrow}

{t.problem.title}

{t.problem.body}

); } function HowItWorks() { const { t } = useT(); return (
{t.how.eyebrow}

{t.how.title}

{t.how.steps.map(s => (
{s.n}
{s.t}
{s.d}
))}
); } function Features() { const { t } = useT(); return (
{t.features.eyebrow}

{t.features.title}

{t.features.items.map((it, i) => (
{it.t}
{it.d}
))}
); } function Authorities() { const { t } = useT(); return (
{t.authorities.eyebrow}

{t.authorities.title}

{t.authorities.list.map(n => ( {n} ))}
); } function Privacy() { const { t } = useT(); return (
{t.privacy.eyebrow}

{t.privacy.title}

{t.privacy.body}

{t.privacy.items.map(([title, desc]) => (
{title}
{desc}
))}
); } function Pricing() { const { t } = useT(); const f = t.pricing.free; const p = t.pricing.premium; return (
{t.pricing.eyebrow}

{t.pricing.title}

{f.name}
{f.desc}
{f.price}
    {f.items.map((it, i) =>
  • {it}
  • )}
{p.earlyBird}
{p.name}
{p.desc}
{p.price} {p.perMonth}
{p.earlyBirdNote}
    {p.items.map((it, i) =>
  • {it}
  • )}
); } function FAQ() { const { t } = useT(); return (
{t.faq.eyebrow}

{t.faq.title}

{t.faq.qa.map(([q, a], i) => (
{q}+

{a}

))}
); } function Footer() { const { t } = useT(); return (
F
FristRadar

{t.footer.tagline}

{t.footer.copyright}
); } function FCol({ h, links }) { return (
{h}
    {links.map(([label, href]) => { const external = /^https?:/.test(href); return (
  • {label}
  • ); })}
); } const lpStyles = { nav: { position: 'sticky', top: 0, zIndex: 10, display: 'flex', justifyContent: 'space-between', alignItems: 'center', padding: '16px 32px', background: 'rgba(235,240,245,.85)', backdropFilter: 'saturate(180%) blur(12px)', borderBottom: '1px solid rgba(28,40,51,.06)' }, navLink: { fontSize: 14, color: '#1C2833', textDecoration: 'none', fontWeight: 500 }, section: { padding: '80px 32px' }, container: { maxWidth: 1200, margin: '0 auto' }, eyebrow: { fontSize: 12, fontWeight: 700, letterSpacing: '.08em', textTransform: 'uppercase', color: '#1B4F72', marginBottom: 14 }, h2: { fontSize: 'clamp(26px,3.5vw,42px)', fontWeight: 700, letterSpacing: '-0.02em', lineHeight: 1.1, color: '#1C2833', margin: 0 }, btnPrimary: { display: 'inline-flex', alignItems: 'center', justifyContent: 'center', padding: '14px 22px', borderRadius: 14, background: '#1B4F72', color: '#fff', textDecoration: 'none', fontWeight: 700, fontSize: 15 }, btnGhost: { display: 'inline-flex', alignItems: 'center', justifyContent: 'center', padding: '14px 22px', borderRadius: 14, background: 'transparent', color: '#1C2833', textDecoration: 'none', fontWeight: 700, fontSize: 15, border: '1px solid #C5D0DB' }, ul: { listStyle: 'none', padding: 0, margin: 0, display: 'flex', flexDirection: 'column', gap: 10, fontSize: 14, color: '#1C2833' }, }; // ============================================================ // Global styles: pricing checkmarks + responsive media queries // ============================================================ const _globalStyle = document.createElement('style'); _globalStyle.textContent = ` .lp-pricing-card ul li::before { content: "✓"; color: #27AE60; font-weight: 700; margin-right: 10px; } .lp-footer-list li::before { content: none; } /* Tablet */ @media (max-width: 960px) { .lp-nav { padding: 12px 20px !important; } .lp-nav-links { gap: 16px !important; } .lp-nav-text { display: none !important; } .lp-section { padding: 56px 20px !important; } .lp-grid-hero { grid-template-columns: 1fr !important; gap: 40px !important; } .lp-grid-4 { grid-template-columns: repeat(2,1fr) !important; } .lp-grid-3 { grid-template-columns: repeat(2,1fr) !important; } .lp-grid-2, .lp-pricing-grid { grid-template-columns: 1fr !important; } .lp-grid-privacy { grid-template-columns: 1fr !important; gap: 32px !important; } .lp-hero-visual { height: auto !important; padding: 0 !important; min-height: 480px; } .lp-hero-letter { display: none !important; } .lp-hero-phone { margin-left: 0 !important; margin-top: 0 !important; } .lp-grid-footer { grid-template-columns: 1fr 1fr !important; gap: 28px !important; } .lp-footer-bottom { flex-direction: column !important; gap: 12px !important; text-align: center; } } /* Phone */ @media (max-width: 600px) { .lp-nav { padding: 10px 16px !important; } .lp-nav-links { gap: 8px !important; } .lp-section { padding: 40px 16px !important; } .lp-grid-4, .lp-grid-3 { grid-template-columns: 1fr !important; } .lp-grid-privacy-cards { grid-template-columns: 1fr !important; } .lp-hero-cta { flex-direction: column !important; align-items: stretch !important; } .lp-hero-cta a { justify-content: center !important; } .lp-hero-stores { gap: 10px !important; } .lp-waitlist-form { flex-direction: column !important; } .lp-grid-footer { grid-template-columns: 1fr !important; gap: 24px !important; } .lp-pricing-premium > div:first-child { right: 16px !important; font-size: 11px !important; padding: 4px 10px !important; } } `; document.head.appendChild(_globalStyle); Object.assign(window, { I18nProvider, Nav, Hero, Waitlist, Problem, HowItWorks, Features, Authorities, Privacy, Pricing, FAQ, Footer });