diff --git a/app/components/TrustRow.tsx b/app/components/TrustRow.tsx
index c97198a..6646db1 100644
--- a/app/components/TrustRow.tsx
+++ b/app/components/TrustRow.tsx
@@ -11,41 +11,53 @@ export async function TrustRow() {
if (items.length === 0) return null;
return (
- // Below lg (1024px): badges sit side by side as one row (never wrap,
- // never stack to one-per-row) with icon ABOVE text, centered — icon
- // beside text (the lg: layout below) is what made a full row of 3
- // badges too wide below ~1024px in the first place (see git history:
- // originally lg:-gated for exactly this, then briefly tried flex-wrap,
- // which put an odd 3rd item alone on its own wrapped line and read as
- // disorganized). Putting the icon above the text instead shrinks each
- // badge down to just its text column's width, and — combined with
- // dropping whitespace-nowrap on the title/description below lg: so
- // long copy wraps within its own narrow column instead of forcing
- // overflow — a real row of 3 now fits without wrapping at all, so
- // there's no odd-item-out case to worry about. lg:+ reverts to the
- // original icon-beside-text row-with-dividers layout unchanged.
-
-
- {items.map((item, i) => (
-
- {i > 0 && }
-
+
+ {/* Below lg (1024px): a CSS Grid with `grid-template-rows: subgrid` —
+ not a fixed min-height guess — so every badge's "icon+title" box
+ shares the SAME row track height (auto-sized to whichever
+ badge's title actually needs 2 lines), and every description
+ starts exactly at that row's bottom edge regardless of how many
+ lines its own title happens to wrap to. Icon beside text (the
+ lg: layout below) is what made a full row of 3 badges too wide
+ below ~1024px in the first place (see git history: originally
+ lg:-gated for exactly this, then briefly tried flex-wrap, which
+ put an odd 3rd item alone on its own wrapped line and read as
+ disorganized) — icon above text instead shrinks each badge down
+ to just its text column's width, letting a real row of 3 fit
+ without wrapping at all. Two structurally different layouts
+ (icon-above-title here vs. icon-beside-a-title/description-
+ stack at lg:) don't share one flexible markup shape cleanly, so
+ this renders as two separate blocks (lg:hidden / hidden lg:flex)
+ rather than fighting one shape across both breakpoints. */}
+
+ {items.map((item) => (
+
+
-
- {/* min-h reserves 2 lines worth of height (text-body's
- line-height is 1.6rem) below lg: — titles are short
- enough that some wrap to 2 lines in their narrow
- stacked column and some don't, and without a reserved
- height the description below started at a different
- y-position from one badge to the next depending on
- whether its own title happened to wrap. Reset to
- min-h-0 at lg: (whitespace-nowrap there forces a
- single line anyway, so the reservation would just add
- unwanted empty space). */}
-
{item.title}
-
{item.description}
+
{item.title}
+
+
{item.description}
+
+ ))}
+
+
+ {/* lg+: original icon-beside-text row with dividers, unchanged. */}
+
+ {items.map((item, i) => (
+
+ {i > 0 && }
+
+
+
+
+
+
{item.title}
+
{item.description}
diff --git a/app/konto/bestellungen/components/OrderFilters.tsx b/app/konto/bestellungen/components/OrderFilters.tsx
new file mode 100644
index 0000000..f04cbc9
--- /dev/null
+++ b/app/konto/bestellungen/components/OrderFilters.tsx
@@ -0,0 +1,82 @@
+"use client";
+
+import { useRouter, useSearchParams } from "next/navigation";
+
+// Three native