diff --git a/public/images/miniturniirid/avatar_legends.jpg b/public/images/miniturniirid/avatar_legends.jpg
new file mode 100644
index 0000000..1ec9825
Binary files /dev/null and b/public/images/miniturniirid/avatar_legends.jpg differ
diff --git a/public/images/miniturniirid/cs16.jpg b/public/images/miniturniirid/cs16.jpg
new file mode 100644
index 0000000..907c3f9
Binary files /dev/null and b/public/images/miniturniirid/cs16.jpg differ
diff --git a/public/images/miniturniirid/invincible_vs.png b/public/images/miniturniirid/invincible_vs.png
new file mode 100644
index 0000000..4833578
Binary files /dev/null and b/public/images/miniturniirid/invincible_vs.png differ
diff --git a/public/images/miniturniirid/marvel_tokon.png b/public/images/miniturniirid/marvel_tokon.png
new file mode 100644
index 0000000..25c4829
Binary files /dev/null and b/public/images/miniturniirid/marvel_tokon.png differ
diff --git a/public/images/miniturniirid/osu.jpg b/public/images/miniturniirid/osu.jpg
new file mode 100644
index 0000000..191b576
Binary files /dev/null and b/public/images/miniturniirid/osu.jpg differ
diff --git a/public/images/miniturniirid/quake.jpg b/public/images/miniturniirid/quake.jpg
new file mode 100644
index 0000000..01f7d00
Binary files /dev/null and b/public/images/miniturniirid/quake.jpg differ
diff --git a/public/images/miniturniirid/rocket_league.jpg b/public/images/miniturniirid/rocket_league.jpg
new file mode 100644
index 0000000..5f44dff
Binary files /dev/null and b/public/images/miniturniirid/rocket_league.jpg differ
diff --git a/src/app/[locale]/miniturniirid/page.tsx b/src/app/[locale]/miniturniirid/page.tsx
new file mode 100644
index 0000000..3be5215
--- /dev/null
+++ b/src/app/[locale]/miniturniirid/page.tsx
@@ -0,0 +1,102 @@
+import { vipnagorgialla } from "@/components/Vipnagorgialla";
+import Image from "next/image";
+import Link from "next/link";
+import { getTranslations, setRequestLocale } from "next-intl/server";
+import { miniTournaments } from "@/data/miniturniirid";
+
+/** Horizontal padding used by the page (64px at the design width). */
+const GUTTER = "px-4 sm:px-8 lg:px-16";
+
+// TODO: replace with the real mini-tournaments rules URL once it exists.
+// Placeholder points at the TipiLAN ruleset repo root.
+const RULES_URL =
+ "https://git.edunaut.ee/slunk/TipiLAN_reeglistik_ruleset";
+
+/**
+ * One mini-tournament tile: a cyan-bordered cover image above a bold caption
+ * "Title – Prize". Games without artwork yet fall back to a text tile.
+ */
+function MiniCard({ title, prize, image }: (typeof miniTournaments)[number]) {
+ return (
+