+ flipped. Hidden below md: — removed on mobile 2026-07-24. */}
+
diff --git a/app/components/Tools.tsx b/app/components/Tools.tsx
index 7c03a65..a3ee14a 100644
--- a/app/components/Tools.tsx
+++ b/app/components/Tools.tsx
@@ -38,9 +38,13 @@ export async function Tools() {
key={tool.id}
className="md:col-span-4 flex gap-8 items-start rounded-md transition-transform duration-300 hover:-translate-y-1"
>
- {/* Icon — uniform box, pre-flipped/rotated source asset */}
-
-
+ {/* Icon — uniform box, pre-flipped/rotated source asset.
+ size-14 (56px) is a fixed value at every width (14 isn't
+ one of this project's fluid spacing-scale steps) — smaller
+ below md: so it doesn't dwarf the title/description text,
+ which does shrink toward its own fluid floor there. */}
+
+
{/* Card content — self-stretch + h-full + justify-between so
diff --git a/app/newsletter/components/HowItWorks.tsx b/app/newsletter/components/HowItWorks.tsx
index 095f2ae..03b8ad8 100644
--- a/app/newsletter/components/HowItWorks.tsx
+++ b/app/newsletter/components/HowItWorks.tsx
@@ -76,12 +76,16 @@ export function HowItWorks() {
// technique as Challenge's step connector and todo-cards'
// identical HowItWorks, not just the same icon asset.
+ {/* object-contain — see todo-cards/HowItWorks.tsx's own
+ comment on this same fix: the SVG's preserveAspectRatio
+ ="none" stretched it to fill the square mobile box
+ instead of keeping its thin-arrow ratio. */}
)}
diff --git a/app/todo-cards/components/Focus.tsx b/app/todo-cards/components/Focus.tsx
index 9b56109..d460011 100644
--- a/app/todo-cards/components/Focus.tsx
+++ b/app/todo-cards/components/Focus.tsx
@@ -9,6 +9,17 @@ const bullets = [
"Inklusive Mini-Anleitung mit Tipps für den Start",
];
+// Inline, brand-orange stroke — same fix/reasoning as TodoKartenHero.tsx's
+// own IconCheck (icon-check.svg's fill can't be recolored from outside
+// the SVG when loaded via
/next/image).
+function IconCheck() {
+ return (
+
+
+
+ );
+}
+
export function Focus() {
return (
@@ -33,8 +44,8 @@ export function Focus() {
{bullets.map((b) => (
-
-
+
+
{b}
))}
diff --git a/app/todo-cards/components/HowItWorks.tsx b/app/todo-cards/components/HowItWorks.tsx
index afe7ece..52e7d35 100644
--- a/app/todo-cards/components/HowItWorks.tsx
+++ b/app/todo-cards/components/HowItWorks.tsx
@@ -83,12 +83,18 @@ export function HowItWorks() {
// — same margin-based centering technique as Challenge's
// step connector, not just the same icon asset.
+ {/* object-contain — the SVG has preserveAspectRatio="none"
+ (viewBox 40x12) and stretches to fill whatever box
+ it's given; the square w-6 h-6 mobile box squished it
+ into a blob instead of a thin arrow. contain keeps its
+ real ratio, letterboxed inside the (still square, so
+ rotate-90 doesn't shift its footprint) box. */}
)}
diff --git a/app/todo-cards/components/TodoKartenHero.tsx b/app/todo-cards/components/TodoKartenHero.tsx
index 4ce199e..2bc5e29 100644
--- a/app/todo-cards/components/TodoKartenHero.tsx
+++ b/app/todo-cards/components/TodoKartenHero.tsx
@@ -12,6 +12,19 @@ const checklist = [
"Minimalistisch, analog, effektiv",
];
+// Inline, brand-orange stroke — icon-check.svg's fill is hardcoded to
+// #222221 via an internal CSS var that only resolves inside the SVG's own
+// document, so it can't be recolored from the host page when loaded via
+// /next/image. Same simple checkmark path as Challenge's own
+// Check() component, for the same orange-checkmark look (fixed 2026-07-24).
+function IconCheck() {
+ return (
+
+
+
+ );
+}
+
// Same "todo-karten" product Pricing.tsx reads further down the page —
// this is just a compact early teaser so the hero's CTA isn't asking for
// a click without saying what it costs. Delivery time is repeated here too
@@ -94,8 +107,8 @@ export async function TodoKartenHero() {
{checklist.map((item) => (
-
-
+
+
{item}
))}