diff --git a/src/app/components/FlipCards.tsx b/src/app/components/FlipCards.tsx new file mode 100644 index 0000000..3fc7874 --- /dev/null +++ b/src/app/components/FlipCards.tsx @@ -0,0 +1,106 @@ +"use client"; + +import { useState } from "react"; + +const PAIRS = [ + { + before: "\u201EIch wei\xDF viel \u2014 aber niemand fragt an.\u201C", + after: "Positionierung in einem Satz. Ein System das planbar Anfragen bringt.", + }, + { + before: "\u201EIch poste regelm\xe4\xDFig. Nichts passiert.\u201C", + after: "Content-Plan f\xFCr alle Plattformen \u2014 du wei\xDFt was, wann und warum.", + }, + { + before: "\u201EIch wei\xDF nicht wie Marketing und Vertrieb zusammenh\xe4ngen.\u201C", + after: "Marketing-Systemkarte. Alle Teile greifen ineinander.", + }, + { + before: "\u201EIch warte dass Kunden kommen.\u201C", + after: "Verkaufsskript. Direktansprache. Du gehst aktiv auf Kunden zu.", + }, + { + before: "\u201EIch werde online nicht gefunden.\u201C", + after: "Google Business optimiert. Deine Seite f\xFCr dein Haupt-Keyword.", + }, + { + before: "\u201ENach jedem Kurs fange ich wieder bei null an.\u201C", + after: "Ein System aus Marketing, Vertrieb und Social Media \u2014 das weiterl\xe4uft.", + }, +]; + +function FlipCard({ before, after }: { before: string; after: string }) { + const [flipped, setFlipped] = useState(false); + + return ( +
setFlipped((f) => !f)} + onMouseEnter={() => setFlipped(true)} + onMouseLeave={() => setFlipped(false)} + role="button" + tabIndex={0} + onKeyDown={(e) => e.key === "Enter" && setFlipped((f) => !f)} + aria-label={`Karte umdrehen: ${before}`} + > +
+ + {/* VORDERSEITE — Vorher */} +
+ Kennst du das? +

{before}

+ + + + + drehe mich um + +
+ + {/* RÜCKSEITE — Nachher */} +
+ Das hast du danach: +

{after}

+ + + + + nach 8 Wochen + +
+ +
+
+ ); +} + +export default function FlipCards() { + return ( +
+
+
+ + + Transformation + +

+ Kennst du das? +

+

+ Fahre über eine Karte — oder klicke drauf — um zu sehen was sich verändert. +

+
+ +
+ {PAIRS.map((pair, i) => ( + + ))} +
+ +

+ Dein Wissen war schon da. Jetzt bekommt es die Struktur die Kunden bringt. +

+
+
+ ); +} diff --git a/src/app/globals.css b/src/app/globals.css index fae95fc..ea251c4 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -59,6 +59,92 @@ body { details summary::-webkit-details-marker { display: none; } +/* ── Flip Cards ── */ +.flip-card-wrapper { + perspective: 1000px; + height: 220px; +} + +.flip-card-inner { + position: relative; + width: 100%; + height: 100%; + transform-style: preserve-3d; + transition: transform 0.55s cubic-bezier(0.4, 0.2, 0.2, 1); +} + +.flip-card-inner.flipped { + transform: rotateY(180deg); +} + +.flip-face { + position: absolute; + inset: 0; + backface-visibility: hidden; + -webkit-backface-visibility: hidden; + border-radius: 1rem; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 12px; + padding: 24px; + text-align: center; +} + +.flip-front { + background: #ffffff; + border: 1px solid #eae8f8; + box-shadow: 0 2px 12px rgba(99, 102, 241, 0.06); +} + +.flip-back { + background: linear-gradient(135deg, #6366f1, #8b5cf6); + transform: rotateY(180deg); + box-shadow: 0 4px 24px rgba(99, 102, 241, 0.35); +} + +.flip-label { + font-size: 0.65rem; + font-weight: 800; + letter-spacing: 0.12em; + text-transform: uppercase; + border-radius: 99px; + padding: 3px 10px; +} + +.flip-label-front { + background: #eef2ff; + color: #4338ca; +} + +.flip-label-back { + background: rgba(255,255,255,0.2); + color: #fff; +} + +.flip-text { + font-size: 0.9rem; + line-height: 1.5; + font-style: italic; +} + +.flip-front .flip-text { color: #475569; } +.flip-back .flip-text { color: #fff; font-style: normal; font-weight: 600; } + +.flip-hint { + font-size: 0.68rem; + display: flex; + align-items: center; + gap: 4px; + color: #a5b4fc; + margin-top: auto; +} + +.flip-hint-back { + color: rgba(255,255,255,0.7); +} + /* ── Timeline scroll animations ── */ .tl-card { opacity: 0; diff --git a/src/app/page.tsx b/src/app/page.tsx index 99da417..7be12c1 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,5 +1,6 @@ import Image from "next/image"; import WeekTimeline from "./components/WeekTimeline"; +import FlipCards from "./components/FlipCards"; const CTA_HREF = "#platz-sichern"; @@ -225,35 +226,7 @@ export default function Home() { - {/* ══════════════════════════════════════════ - VORHER / NACHHER - ══════════════════════════════════════════ */} -
-
-
- Transformation -

Vorher. Nachher.

-
-
- {[ - ["\u201EIch wei\xDF viel \u2014 aber niemand fragt an.\u201C", "Positionierung in einem Satz. System das Anfragen bringt."], - ["\u201EIch poste regelm\xe4\xDFig. Nichts passiert.\u201C", "Content-Plan f\xFCr alle Plattformen \u2014 du wei\xDFt was, wann, warum."], - ["\u201EIch wei\xDF nicht wie Marketing und Vertrieb zusammenh\xe4ngen.\u201C", "Marketing-Systemkarte. Alle Teile greifen ineinander."], - ["\u201EIch warte dass Kunden kommen.\u201C", "Verkaufsskript. Direktansprache. Ich gehe hin."], - ["\u201EIch werde online nicht gefunden.\u201C", "Google Business optimiert. Seite f\xFCr mein Keyword."], - ["\u201ENach jedem Kurs fange ich wieder bei null an.\u201C", "Ein System aus Marketing, Vertrieb und Social Media \u2014 das weiterl\xe4uft."], - ].map(([before, after], i) => ( -
-
{before}
-
{after}
-
- ))} -
-

- Dein Wissen war schon da. Jetzt hat es eine Struktur die Kunden bringt. -

-
-
+ {/* ══════════════════════════════════════════ MEET THE COACH — Brunson-Style