diff --git a/district/migrations/0124_alter_districtarticlepage_date.py b/district/migrations/0124_alter_districtarticlepage_date.py
index 9efc367ff24713712c29c6ad437456b22d4498cc..8bffe0e6bcfdd22b710599c8a737a009981bb05d 100644
--- a/district/migrations/0124_alter_districtarticlepage_date.py
+++ b/district/migrations/0124_alter_districtarticlepage_date.py
@@ -1,19 +1,20 @@
 # Generated by Django 4.1.10 on 2024-01-18 18:54
 
-from django.db import migrations, models
 import django.utils.timezone
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
-
     dependencies = [
-        ('district', '0123_alter_districtcalendarpage_calendar_url_and_more'),
+        ("district", "0123_alter_districtcalendarpage_calendar_url_and_more"),
     ]
 
     operations = [
         migrations.AlterField(
-            model_name='districtarticlepage',
-            name='date',
-            field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='Datum a čas'),
+            model_name="districtarticlepage",
+            name="date",
+            field=models.DateTimeField(
+                default=django.utils.timezone.now, verbose_name="Datum a čas"
+            ),
         ),
     ]
diff --git a/district/migrations/0125_rename_date_districtarticlepage_timestamp.py b/district/migrations/0125_rename_date_districtarticlepage_timestamp.py
index 6b2d0e20bd92e0f34e6b08a94ccef345822aa379..512ae5bc464776a00911fafd9ea6a830d12ca644 100644
--- a/district/migrations/0125_rename_date_districtarticlepage_timestamp.py
+++ b/district/migrations/0125_rename_date_districtarticlepage_timestamp.py
@@ -4,15 +4,14 @@ from django.db import migrations
 
 
 class Migration(migrations.Migration):
-
     dependencies = [
-        ('district', '0124_alter_districtarticlepage_date'),
+        ("district", "0124_alter_districtarticlepage_date"),
     ]
 
     operations = [
         migrations.RenameField(
-            model_name='districtarticlepage',
-            old_name='date',
-            new_name='timestamp',
+            model_name="districtarticlepage",
+            old_name="date",
+            new_name="timestamp",
         ),
     ]
diff --git a/elections/blocks.py b/elections/blocks.py
index c35cedc7e62f1b87f045086c1112a603c6ce5982..de4a7b63b1bcd97a44f944adfdde2c131705635e 100644
--- a/elections/blocks.py
+++ b/elections/blocks.py
@@ -12,7 +12,15 @@ from wagtail.images.blocks import ImageChooserBlock
 
 
 class ElectionsCarouselBlock(StructBlock):
-    image = ImageChooserBlock(label="Obrázek na pozadí")
+    image = ImageChooserBlock(
+        label="Obrázek na pozadí",
+        help_text="Pokud není vybráno video, ukáže se na mobilu i desktopu.",
+    )
+    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.",
+        required=False,
+    )
 
     class Meta:
         template = "styleguide2/includes/molecules/menus/elections/carousel.html"
diff --git a/elections/migrations/0012_alter_electionsarticlepage_date.py b/elections/migrations/0012_alter_electionsarticlepage_date.py
index 3cafa30a24496d11335768b54cd20481a1045f35..f06982af5c455fee5552e3e6ba7fad889ec26d14 100644
--- a/elections/migrations/0012_alter_electionsarticlepage_date.py
+++ b/elections/migrations/0012_alter_electionsarticlepage_date.py
@@ -1,19 +1,20 @@
 # Generated by Django 4.1.10 on 2024-01-18 18:54
 
-from django.db import migrations, models
 import django.utils.timezone
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
-
     dependencies = [
-        ('elections', '0011_electionscandidatepage_description'),
+        ("elections", "0011_electionscandidatepage_description"),
     ]
 
     operations = [
         migrations.AlterField(
-            model_name='electionsarticlepage',
-            name='date',
-            field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='Datum a čas'),
+            model_name="electionsarticlepage",
+            name="date",
+            field=models.DateTimeField(
+                default=django.utils.timezone.now, verbose_name="Datum a čas"
+            ),
         ),
     ]
diff --git a/elections/migrations/0013_rename_date_electionsarticlepage_timestamp.py b/elections/migrations/0013_rename_date_electionsarticlepage_timestamp.py
index a3908a70644c63efd1d83139d7e668fc4b7b6c35..5a559f77feece378f2e113634078deb35c8ddda4 100644
--- a/elections/migrations/0013_rename_date_electionsarticlepage_timestamp.py
+++ b/elections/migrations/0013_rename_date_electionsarticlepage_timestamp.py
@@ -4,15 +4,14 @@ from django.db import migrations
 
 
 class Migration(migrations.Migration):
-
     dependencies = [
-        ('elections', '0012_alter_electionsarticlepage_date'),
+        ("elections", "0012_alter_electionsarticlepage_date"),
     ]
 
     operations = [
         migrations.RenameField(
-            model_name='electionsarticlepage',
-            old_name='date',
-            new_name='timestamp',
+            model_name="electionsarticlepage",
+            old_name="date",
+            new_name="timestamp",
         ),
     ]
diff --git a/elections/migrations/0014_alter_electionshomepage_content.py b/elections/migrations/0014_alter_electionshomepage_content.py
new file mode 100644
index 0000000000000000000000000000000000000000..dcce3f85129273034b3655403281a4a8bd799407
--- /dev/null
+++ b/elections/migrations/0014_alter_electionshomepage_content.py
@@ -0,0 +1,21 @@
+# 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
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('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'),
+        ),
+    ]
diff --git a/elections2021/migrations/0056_alter_elections2021articlepage_date.py b/elections2021/migrations/0056_alter_elections2021articlepage_date.py
index 41a8332dc29f46fe38bb47c10c1a555ac5778949..5ab116b1336d7893918464c43e3c9cbf1b056562 100644
--- a/elections2021/migrations/0056_alter_elections2021articlepage_date.py
+++ b/elections2021/migrations/0056_alter_elections2021articlepage_date.py
@@ -1,19 +1,20 @@
 # Generated by Django 4.1.10 on 2024-01-18 18:54
 
-from django.db import migrations, models
 import django.utils.timezone
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
-
     dependencies = [
-        ('elections2021', '0055_alter_elections2021calendarpage_calendar_url'),
+        ("elections2021", "0055_alter_elections2021calendarpage_calendar_url"),
     ]
 
     operations = [
         migrations.AlterField(
-            model_name='elections2021articlepage',
-            name='date',
-            field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='Datum a čas'),
+            model_name="elections2021articlepage",
+            name="date",
+            field=models.DateTimeField(
+                default=django.utils.timezone.now, verbose_name="Datum a čas"
+            ),
         ),
     ]
diff --git a/elections2021/migrations/0057_rename_date_elections2021articlepage_timestamp.py b/elections2021/migrations/0057_rename_date_elections2021articlepage_timestamp.py
index ee784f82395f13505b18ef5b58fafa0fd74143bb..632b24c278a1c479801cc9893eb2a2f197ac064c 100644
--- a/elections2021/migrations/0057_rename_date_elections2021articlepage_timestamp.py
+++ b/elections2021/migrations/0057_rename_date_elections2021articlepage_timestamp.py
@@ -4,15 +4,14 @@ from django.db import migrations
 
 
 class Migration(migrations.Migration):
-
     dependencies = [
-        ('elections2021', '0056_alter_elections2021articlepage_date'),
+        ("elections2021", "0056_alter_elections2021articlepage_date"),
     ]
 
     operations = [
         migrations.RenameField(
-            model_name='elections2021articlepage',
-            old_name='date',
-            new_name='timestamp',
+            model_name="elections2021articlepage",
+            old_name="date",
+            new_name="timestamp",
         ),
     ]
diff --git a/elections2021/models.py b/elections2021/models.py
index 6896aa0457f7959fc6252b931a35173d12489d4d..e93efcf83831061dcc157647b1542858c307f7c1 100644
--- a/elections2021/models.py
+++ b/elections2021/models.py
@@ -495,7 +495,9 @@ class Elections2021HomePage(MetadataPageMixin, RoutablePageMixin, Page):
     def get_context(self, request):
         context = super().get_context(request)
         context["articles"] = (
-            Elections2021ArticlePage.objects.live().specific().order_by("-timestamp")[:3]
+            Elections2021ArticlePage.objects.live()
+            .specific()
+            .order_by("-timestamp")[:3]
         )
         context["questions"] = (
             Elections2021QuestionsPage.objects.live().specific().first().elections[:3]
diff --git a/main/migrations/0070_alter_mainarticlepage_date.py b/main/migrations/0070_alter_mainarticlepage_date.py
index 0b018b446ab0520931e7ea686592d640abf8df34..29d835987256a04870bab75195d81eb005fa2ff8 100644
--- a/main/migrations/0070_alter_mainarticlepage_date.py
+++ b/main/migrations/0070_alter_mainarticlepage_date.py
@@ -1,19 +1,20 @@
 # Generated by Django 4.1.10 on 2024-01-18 18:54
 
-from django.db import migrations, models
 import django.utils.timezone
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
-
     dependencies = [
-        ('main', '0069_alter_mainhomepage_content'),
+        ("main", "0069_alter_mainhomepage_content"),
     ]
 
     operations = [
         migrations.AlterField(
-            model_name='mainarticlepage',
-            name='date',
-            field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='Datum a čas'),
+            model_name="mainarticlepage",
+            name="date",
+            field=models.DateTimeField(
+                default=django.utils.timezone.now, verbose_name="Datum a čas"
+            ),
         ),
     ]
diff --git a/main/migrations/0071_rename_date_mainarticlepage_timestamp.py b/main/migrations/0071_rename_date_mainarticlepage_timestamp.py
index d197d5f3885e7e4b8c9208b48d34ebe9038b232a..46b2ae4a0d6cb4703c45817ca767d94bc19b621e 100644
--- a/main/migrations/0071_rename_date_mainarticlepage_timestamp.py
+++ b/main/migrations/0071_rename_date_mainarticlepage_timestamp.py
@@ -4,15 +4,14 @@ from django.db import migrations
 
 
 class Migration(migrations.Migration):
-
     dependencies = [
-        ('main', '0070_alter_mainarticlepage_date'),
+        ("main", "0070_alter_mainarticlepage_date"),
     ]
 
     operations = [
         migrations.RenameField(
-            model_name='mainarticlepage',
-            old_name='date',
-            new_name='timestamp',
+            model_name="mainarticlepage",
+            old_name="date",
+            new_name="timestamp",
         ),
     ]
diff --git a/shared/templates/styleguide2/includes/molecules/menus/elections/carousel.html b/shared/templates/styleguide2/includes/molecules/menus/elections/carousel.html
index 571164dd8c874a45aa14e88dd1f5476287d59aa1..37b5f09d0d7059783d191d7e708a90892421f60a 100644
--- a/shared/templates/styleguide2/includes/molecules/menus/elections/carousel.html
+++ b/shared/templates/styleguide2/includes/molecules/menus/elections/carousel.html
@@ -6,12 +6,24 @@
       {% image self.image original as image %}
 
       <img
-        class="header-carousel--image opacity-60"
+        class="header-carousel--image opacity-60 inline xl:hidden"
         src="{{ image.url }}"
-        draggable="false"
       >
 
-      <div class="elections--header-carousel--text-wrapper">
+      <video
+        class="header-carousel--image opacity-60 hidden xl:block"
+        autoplay
+        muted
+        loop
+        playsinline
+        preload="metadata"
+      >
+        {% if self.video_url %}
+          <source src="{{ self.video_url }}">
+        {% endif %}
+      </video>
+
+      <div class="elections--header-carousel--text-wrapper {% if self.video_url %}xl:hidden{% endif %}">
         <div
           class="container--wide h-full flex flex-col justify-end items-start"
         >
diff --git a/uniweb/migrations/0052_alter_uniwebarticlepage_date.py b/uniweb/migrations/0052_alter_uniwebarticlepage_date.py
index 7e80b05b7a48c1fa63a0ba87dc694d4044c26037..dcb2f4edda3ffd51cd8018ca192e9ee3d480a7ff 100644
--- a/uniweb/migrations/0052_alter_uniwebarticlepage_date.py
+++ b/uniweb/migrations/0052_alter_uniwebarticlepage_date.py
@@ -1,19 +1,20 @@
 # Generated by Django 4.1.10 on 2024-01-18 18:54
 
-from django.db import migrations, models
 import django.utils.timezone
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
-
     dependencies = [
-        ('uniweb', '0051_uniwebhomepage_fallback_image'),
+        ("uniweb", "0051_uniwebhomepage_fallback_image"),
     ]
 
     operations = [
         migrations.AlterField(
-            model_name='uniwebarticlepage',
-            name='date',
-            field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='Datum a čas'),
+            model_name="uniwebarticlepage",
+            name="date",
+            field=models.DateTimeField(
+                default=django.utils.timezone.now, verbose_name="Datum a čas"
+            ),
         ),
     ]
diff --git a/uniweb/migrations/0053_rename_date_uniwebarticlepage_timestamp.py b/uniweb/migrations/0053_rename_date_uniwebarticlepage_timestamp.py
index c0e6bb5f3e1184564fa45ccc80fa7c58c70a3541..c6c406dc58e4047cfe3417e134716182c0146de7 100644
--- a/uniweb/migrations/0053_rename_date_uniwebarticlepage_timestamp.py
+++ b/uniweb/migrations/0053_rename_date_uniwebarticlepage_timestamp.py
@@ -4,15 +4,14 @@ from django.db import migrations
 
 
 class Migration(migrations.Migration):
-
     dependencies = [
-        ('uniweb', '0052_alter_uniwebarticlepage_date'),
+        ("uniweb", "0052_alter_uniwebarticlepage_date"),
     ]
 
     operations = [
         migrations.RenameField(
-            model_name='uniwebarticlepage',
-            old_name='date',
-            new_name='timestamp',
+            model_name="uniwebarticlepage",
+            old_name="date",
+            new_name="timestamp",
         ),
     ]