diff --git a/elections/blocks.py b/elections/blocks.py
index de4a7b63b1bcd97a44f944adfdde2c131705635e..154dfc8e38ef9532061de0767137d0ef9aa33670 100644
--- a/elections/blocks.py
+++ b/elections/blocks.py
@@ -16,6 +16,13 @@ class ElectionsCarouselBlock(StructBlock):
         label="Obrázek na pozadí",
         help_text="Pokud není vybráno video, ukáže se na mobilu i desktopu.",
     )
+
+    preview_image = ImageChooserBlock(
+        label="Preview obrázek",
+        help_text="Obrázek, který se bude ukazovat při načítání nebo nedostupnosti videa.",
+        required=False,
+    )
+
     video_url = URLBlock(
         label="URL videa",
         help_text="Pokud je vybráno, ukáže se na desktopech s povoleným autoplayem místo obrázku.",
diff --git a/elections/migrations/0014_alter_electionshomepage_content.py b/elections/migrations/0014_alter_electionshomepage_content.py
index dcce3f85129273034b3655403281a4a8bd799407..e662285ceeafd3287bd1adc9ab52f51c9793237b 100644
--- a/elections/migrations/0014_alter_electionshomepage_content.py
+++ b/elections/migrations/0014_alter_electionshomepage_content.py
@@ -1,21 +1,208 @@
 # Generated by Django 4.1.10 on 2024-01-19 10:40
 
-from django.db import migrations
 import wagtail.blocks
 import wagtail.fields
 import wagtail.images.blocks
+from django.db import migrations
 
 
 class Migration(migrations.Migration):
-
     dependencies = [
-        ('elections', '0013_rename_date_electionsarticlepage_timestamp'),
+        ("elections", "0013_rename_date_electionsarticlepage_timestamp"),
     ]
 
     operations = [
         migrations.AlterField(
-            model_name='electionshomepage',
-            name='content',
-            field=wagtail.fields.StreamField([('carousel', wagtail.blocks.StructBlock([('image', wagtail.images.blocks.ImageChooserBlock(help_text='Pokud není vybráno video, ukáže se na mobilu i desktopu.', label='Obrázek na pozadí')), ('video_url', wagtail.blocks.URLBlock(help_text='Pokud je vybráno, ukáže se na desktopech s povoleným autoplayem místo obrázku.', label='URL videa', required=False))])), ('candidates', wagtail.blocks.StructBlock([('candidates', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('page', wagtail.blocks.PageChooserBlock(label='Stránka', page_type=['elections.ElectionsCandidatePage'])), ('image', wagtail.images.blocks.ImageChooserBlock(help_text='Pokud není vybrán, použije se obrázek ze stránky kandidáta', label='Obrázek', required=False)), ('description', wagtail.blocks.TextBlock(label='Popis'))]), label='Kandidáti'))])), ('secondary_candidates', wagtail.blocks.StructBlock([('heading', wagtail.blocks.CharBlock(label='Nadpis')), ('candidates', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('number', wagtail.blocks.CharBlock(label='Číslo')), ('page', wagtail.blocks.PageChooserBlock(label='Stránka', page_type=['elections.ElectionsCandidatePage'])), ('image', wagtail.images.blocks.ImageChooserBlock(help_text='Pokud není vybrán, použije se obrázek ze stránky kandidáta', label='Obrázek', required=False))]), label='Kandidáti'))])), ('program', wagtail.blocks.StructBlock([('categories', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('number', wagtail.blocks.IntegerBlock(label='Číslo')), ('name', wagtail.blocks.CharBlock(label='Název')), ('points', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('content', wagtail.blocks.TextBlock(label='Obsah'))]), label='Body'))]), label='Kategorie')), ('long_version_url', wagtail.blocks.URLBlock(help_text='Pro zobrazení odkazu na celou verzi programu musí být obě následující pole vyplněná.', label='Odkaz na celou verzi programu', required=False)), ('long_version_text', wagtail.blocks.CharBlock(label='Nadpis odkazu na celou verzi programu', required=False))])), ('news', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(help_text='Nejnovější články se načtou automaticky', label='Titulek')), ('description', wagtail.blocks.TextBlock(label='Popis'))], template='styleguide2/includes/organisms/articles/elections/articles_section.html'))], blank=True, use_json_field=True, verbose_name='Hlavní obsah'),
+            model_name="electionshomepage",
+            name="content",
+            field=wagtail.fields.StreamField(
+                [
+                    (
+                        "carousel",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "image",
+                                    wagtail.images.blocks.ImageChooserBlock(
+                                        help_text="Pokud není vybráno video, ukáže se na mobilu i desktopu.",
+                                        label="Obrázek na pozadí",
+                                    ),
+                                ),
+                                (
+                                    "video_url",
+                                    wagtail.blocks.URLBlock(
+                                        help_text="Pokud je vybráno, ukáže se na desktopech s povoleným autoplayem místo obrázku.",
+                                        label="URL videa",
+                                        required=False,
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "candidates",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "candidates",
+                                    wagtail.blocks.ListBlock(
+                                        wagtail.blocks.StructBlock(
+                                            [
+                                                (
+                                                    "page",
+                                                    wagtail.blocks.PageChooserBlock(
+                                                        label="Stránka",
+                                                        page_type=[
+                                                            "elections.ElectionsCandidatePage"
+                                                        ],
+                                                    ),
+                                                ),
+                                                (
+                                                    "image",
+                                                    wagtail.images.blocks.ImageChooserBlock(
+                                                        help_text="Pokud není vybrán, použije se obrázek ze stránky kandidáta",
+                                                        label="Obrázek",
+                                                        required=False,
+                                                    ),
+                                                ),
+                                                (
+                                                    "description",
+                                                    wagtail.blocks.TextBlock(
+                                                        label="Popis"
+                                                    ),
+                                                ),
+                                            ]
+                                        ),
+                                        label="Kandidáti",
+                                    ),
+                                )
+                            ]
+                        ),
+                    ),
+                    (
+                        "secondary_candidates",
+                        wagtail.blocks.StructBlock(
+                            [
+                                ("heading", wagtail.blocks.CharBlock(label="Nadpis")),
+                                (
+                                    "candidates",
+                                    wagtail.blocks.ListBlock(
+                                        wagtail.blocks.StructBlock(
+                                            [
+                                                (
+                                                    "number",
+                                                    wagtail.blocks.CharBlock(
+                                                        label="Číslo"
+                                                    ),
+                                                ),
+                                                (
+                                                    "page",
+                                                    wagtail.blocks.PageChooserBlock(
+                                                        label="Stránka",
+                                                        page_type=[
+                                                            "elections.ElectionsCandidatePage"
+                                                        ],
+                                                    ),
+                                                ),
+                                                (
+                                                    "image",
+                                                    wagtail.images.blocks.ImageChooserBlock(
+                                                        help_text="Pokud není vybrán, použije se obrázek ze stránky kandidáta",
+                                                        label="Obrázek",
+                                                        required=False,
+                                                    ),
+                                                ),
+                                            ]
+                                        ),
+                                        label="Kandidáti",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "program",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "categories",
+                                    wagtail.blocks.ListBlock(
+                                        wagtail.blocks.StructBlock(
+                                            [
+                                                (
+                                                    "number",
+                                                    wagtail.blocks.IntegerBlock(
+                                                        label="Číslo"
+                                                    ),
+                                                ),
+                                                (
+                                                    "name",
+                                                    wagtail.blocks.CharBlock(
+                                                        label="Název"
+                                                    ),
+                                                ),
+                                                (
+                                                    "points",
+                                                    wagtail.blocks.ListBlock(
+                                                        wagtail.blocks.StructBlock(
+                                                            [
+                                                                (
+                                                                    "content",
+                                                                    wagtail.blocks.TextBlock(
+                                                                        label="Obsah"
+                                                                    ),
+                                                                )
+                                                            ]
+                                                        ),
+                                                        label="Body",
+                                                    ),
+                                                ),
+                                            ]
+                                        ),
+                                        label="Kategorie",
+                                    ),
+                                ),
+                                (
+                                    "long_version_url",
+                                    wagtail.blocks.URLBlock(
+                                        help_text="Pro zobrazení odkazu na celou verzi programu musí být obě následující pole vyplněná.",
+                                        label="Odkaz na celou verzi programu",
+                                        required=False,
+                                    ),
+                                ),
+                                (
+                                    "long_version_text",
+                                    wagtail.blocks.CharBlock(
+                                        label="Nadpis odkazu na celou verzi programu",
+                                        required=False,
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "news",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "title",
+                                    wagtail.blocks.CharBlock(
+                                        help_text="Nejnovější články se načtou automaticky",
+                                        label="Titulek",
+                                    ),
+                                ),
+                                (
+                                    "description",
+                                    wagtail.blocks.TextBlock(label="Popis"),
+                                ),
+                            ],
+                            template="styleguide2/includes/organisms/articles/elections/articles_section.html",
+                        ),
+                    ),
+                ],
+                blank=True,
+                use_json_field=True,
+                verbose_name="Hlavní obsah",
+            ),
         ),
     ]
diff --git a/elections/migrations/0015_alter_electionshomepage_content.py b/elections/migrations/0015_alter_electionshomepage_content.py
new file mode 100644
index 0000000000000000000000000000000000000000..3d5ebac8f5cb8d7bc60d720431e2bd38f67d8899
--- /dev/null
+++ b/elections/migrations/0015_alter_electionshomepage_content.py
@@ -0,0 +1,21 @@
+# Generated by Django 4.1.10 on 2024-01-19 11:14
+
+from django.db import migrations
+import wagtail.blocks
+import wagtail.fields
+import wagtail.images.blocks
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('elections', '0014_alter_electionshomepage_content'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='electionshomepage',
+            name='content',
+            field=wagtail.fields.StreamField([('carousel', wagtail.blocks.StructBlock([('image', wagtail.images.blocks.ImageChooserBlock(help_text='Pokud není vybráno video, ukáže se na mobilu i desktopu.', label='Obrázek na pozadí')), ('preview_image', wagtail.images.blocks.ImageChooserBlock(help_text='Obrázek, který se bude ukazovat při načítání nebo nedostupnosti videa.', label='Obrázek na pozadí', required=False)), ('video_url', wagtail.blocks.URLBlock(help_text='Pokud je vybráno, ukáže se na desktopech s povoleným autoplayem místo obrázku.', label='URL videa', required=False))])), ('candidates', wagtail.blocks.StructBlock([('candidates', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('page', wagtail.blocks.PageChooserBlock(label='Stránka', page_type=['elections.ElectionsCandidatePage'])), ('image', wagtail.images.blocks.ImageChooserBlock(help_text='Pokud není vybrán, použije se obrázek ze stránky kandidáta', label='Obrázek', required=False)), ('description', wagtail.blocks.TextBlock(label='Popis'))]), label='Kandidáti'))])), ('secondary_candidates', wagtail.blocks.StructBlock([('heading', wagtail.blocks.CharBlock(label='Nadpis')), ('candidates', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('number', wagtail.blocks.CharBlock(label='Číslo')), ('page', wagtail.blocks.PageChooserBlock(label='Stránka', page_type=['elections.ElectionsCandidatePage'])), ('image', wagtail.images.blocks.ImageChooserBlock(help_text='Pokud není vybrán, použije se obrázek ze stránky kandidáta', label='Obrázek', required=False))]), label='Kandidáti'))])), ('program', wagtail.blocks.StructBlock([('categories', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('number', wagtail.blocks.IntegerBlock(label='Číslo')), ('name', wagtail.blocks.CharBlock(label='Název')), ('points', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('content', wagtail.blocks.TextBlock(label='Obsah'))]), label='Body'))]), label='Kategorie')), ('long_version_url', wagtail.blocks.URLBlock(help_text='Pro zobrazení odkazu na celou verzi programu musí být obě následující pole vyplněná.', label='Odkaz na celou verzi programu', required=False)), ('long_version_text', wagtail.blocks.CharBlock(label='Nadpis odkazu na celou verzi programu', required=False))])), ('news', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(help_text='Nejnovější články se načtou automaticky', label='Titulek')), ('description', wagtail.blocks.TextBlock(label='Popis'))], template='styleguide2/includes/organisms/articles/elections/articles_section.html'))], blank=True, use_json_field=True, verbose_name='Hlavní obsah'),
+        ),
+    ]
diff --git a/elections/migrations/0016_alter_electionshomepage_content.py b/elections/migrations/0016_alter_electionshomepage_content.py
new file mode 100644
index 0000000000000000000000000000000000000000..2b7f4fb66887e53cfb897a6ada237b1fd085099a
--- /dev/null
+++ b/elections/migrations/0016_alter_electionshomepage_content.py
@@ -0,0 +1,21 @@
+# Generated by Django 4.1.10 on 2024-01-19 11:15
+
+from django.db import migrations
+import wagtail.blocks
+import wagtail.fields
+import wagtail.images.blocks
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('elections', '0015_alter_electionshomepage_content'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='electionshomepage',
+            name='content',
+            field=wagtail.fields.StreamField([('carousel', wagtail.blocks.StructBlock([('image', wagtail.images.blocks.ImageChooserBlock(help_text='Pokud není vybráno video, ukáže se na mobilu i desktopu.', label='Obrázek na pozadí')), ('preview_image', wagtail.images.blocks.ImageChooserBlock(help_text='Obrázek, který se bude ukazovat při načítání nebo nedostupnosti videa.', label='Preview obrázek', required=False)), ('video_url', wagtail.blocks.URLBlock(help_text='Pokud je vybráno, ukáže se na desktopech s povoleným autoplayem místo obrázku.', label='URL videa', required=False))])), ('candidates', wagtail.blocks.StructBlock([('candidates', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('page', wagtail.blocks.PageChooserBlock(label='Stránka', page_type=['elections.ElectionsCandidatePage'])), ('image', wagtail.images.blocks.ImageChooserBlock(help_text='Pokud není vybrán, použije se obrázek ze stránky kandidáta', label='Obrázek', required=False)), ('description', wagtail.blocks.TextBlock(label='Popis'))]), label='Kandidáti'))])), ('secondary_candidates', wagtail.blocks.StructBlock([('heading', wagtail.blocks.CharBlock(label='Nadpis')), ('candidates', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('number', wagtail.blocks.CharBlock(label='Číslo')), ('page', wagtail.blocks.PageChooserBlock(label='Stránka', page_type=['elections.ElectionsCandidatePage'])), ('image', wagtail.images.blocks.ImageChooserBlock(help_text='Pokud není vybrán, použije se obrázek ze stránky kandidáta', label='Obrázek', required=False))]), label='Kandidáti'))])), ('program', wagtail.blocks.StructBlock([('categories', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('number', wagtail.blocks.IntegerBlock(label='Číslo')), ('name', wagtail.blocks.CharBlock(label='Název')), ('points', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('content', wagtail.blocks.TextBlock(label='Obsah'))]), label='Body'))]), label='Kategorie')), ('long_version_url', wagtail.blocks.URLBlock(help_text='Pro zobrazení odkazu na celou verzi programu musí být obě následující pole vyplněná.', label='Odkaz na celou verzi programu', required=False)), ('long_version_text', wagtail.blocks.CharBlock(label='Nadpis odkazu na celou verzi programu', required=False))])), ('news', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(help_text='Nejnovější články se načtou automaticky', label='Titulek')), ('description', wagtail.blocks.TextBlock(label='Popis'))], template='styleguide2/includes/organisms/articles/elections/articles_section.html'))], blank=True, use_json_field=True, verbose_name='Hlavní obsah'),
+        ),
+    ]
diff --git a/shared/templates/styleguide2/includes/molecules/menus/elections/carousel.html b/shared/templates/styleguide2/includes/molecules/menus/elections/carousel.html
index 37b5f09d0d7059783d191d7e708a90892421f60a..7058b266e2f3457f899a2a423c0c216f9c4b104a 100644
--- a/shared/templates/styleguide2/includes/molecules/menus/elections/carousel.html
+++ b/shared/templates/styleguide2/includes/molecules/menus/elections/carousel.html
@@ -12,6 +12,12 @@
 
       <video
         class="header-carousel--image opacity-60 hidden xl:block"
+
+        {% if self.preview_image %}
+          {% image self.preview_image original as preview_image %}
+          poster="{{ preview_image.url }}"
+        {% endif %}
+
         autoplay
         muted
         loop