diff --git a/elections/blocks.py b/elections/blocks.py
index d6b08f35a2e63196ab8f4b72c241d485be18b7d2..73ee448ff59125de08dd5e97abebda9be65686e7 100644
--- a/elections/blocks.py
+++ b/elections/blocks.py
@@ -12,9 +12,14 @@ from wagtail.images.blocks import ImageChooserBlock
 
 
 class ElectionsCarouselBlock(StructBlock):
-    image = ImageChooserBlock(
-        label="Obrázek na pozadí",
-        help_text="Pokud není vybráno video, ukáže se na mobilu i desktopu.",
+    desktop_image = ImageChooserBlock(
+        label="Obrázek na pozadí (desktop)",
+        help_text="Pokud není vybráno video, ukáže se na desktopu.",
+    )
+
+    mobile_image = ImageChooserBlock(
+        label="Obrázek (mobil)",
+        help_text="Pokud je vybrán, ukáže se místo videa na mobilu.",
     )
 
     video_url = URLBlock(
diff --git a/elections/migrations/0021_alter_electionshomepage_content.py b/elections/migrations/0021_alter_electionshomepage_content.py
new file mode 100644
index 0000000000000000000000000000000000000000..b94c6cf0ea003a3a3d5ab22ae54bcf5e77f5ca6d
--- /dev/null
+++ b/elections/migrations/0021_alter_electionshomepage_content.py
@@ -0,0 +1,21 @@
+# Generated by Django 4.1.13 on 2024-03-09 18:06
+
+from django.db import migrations
+import wagtail.blocks
+import wagtail.fields
+import wagtail.images.blocks
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('elections', '0020_alter_electionshomepage_content'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='electionshomepage',
+            name='content',
+            field=wagtail.fields.StreamField([('carousel', wagtail.blocks.StructBlock([('desktop_image', wagtail.images.blocks.ImageChooserBlock(help_text='Pokud není vybráno video, ukáže se na desktopu.', label='Obrázek na pozadí (desktop)')), ('mobile_image', wagtail.images.blocks.ImageChooserBlock(help_text='Pokud je vybrán, ukáže se místo videa na mobilu.', label='Obrázek (mobil)')), ('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)), ('mobile_line_1', wagtail.blocks.TextBlock(label='První mobilní řádek')), ('mobile_line_2', wagtail.blocks.TextBlock(label='Druhý mobilní řádek'))])), ('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([('label', wagtail.blocks.CharBlock(default='Program', help_text="Např. 'Program'", label='Nadpis')), ('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 c202122b26fe45784e06c8f868e2996f749c9e21..2311b30fc7789554ae2f3592761733b06e343cc3 100644
--- a/shared/templates/styleguide2/includes/molecules/menus/elections/carousel.html
+++ b/shared/templates/styleguide2/includes/molecules/menus/elections/carousel.html
@@ -3,7 +3,8 @@
 <div class="__js-root">
   <div class="header-carousel">
     <div class="h-[700px] xl:h-screen relative bg-white">
-      {% image self.image original as image %}
+      {% image self.desktop_image original as desktop_image %}
+      {% image self.mobile_image original as mobile_image %}
 
       <video
         class="
@@ -16,14 +17,16 @@
         playsinline
         preload="metadata"
 
-        poster="{% static 'styleguide2/images/background-images/bg-flag-mobile-preview.jpg' %}"
+        poster="{% if not mobile_image %}{% static 'styleguide2/images/background-images/bg-flag-mobile-preview.jpg' %} {% else %}{{ mobile_image.url }}{% endif %}"
       >
-        <source src="{% static 'styleguide2/images/background-images/bg-flag-mobile.mp4' %}">
+        {% if not mobile_image %}
+          <source src="{% static 'styleguide2/images/background-images/bg-flag-mobile.mp4' %}">
+        {% endif %}
       </video>
 
       <video
         class="header-carousel--image opacity-60 hidden lg:block"
-        poster="{% static 'styleguide2/images/background-images/loading.gif' %}"
+        poster="{% if self.video_url or not desktop_image %}{% static 'styleguide2/images/background-images/loading.gif' %}{% else %}{{ desktop_image.url }}{% endif %}"
         autoplay
         muted
         loop