diff --git a/district/blocks.py b/district/blocks.py
index cd2caa005241306a81be83596f378cad67abcdcc..fd22b761b5d3b4358732ad49b3bf659cb193050b 100644
--- a/district/blocks.py
+++ b/district/blocks.py
@@ -76,7 +76,11 @@ class FullscreenHeaderBlock(StructBlock):
         help_text="Bez odkazu tlačítko nebude viditelné.",
         required=False,
     )
-    button_text = CharBlock(label="Text tlaÄŤĂ­tka", required=False)
+    button_text = CharBlock(
+        label="Text tlaÄŤĂ­tka",
+        help_text="Odkaz funguje i bez tlačítka. Pokud chceš tlačítko skrýt, nevyplňuj text.",
+        required=False
+    )
 
     class Meta:
         template = "styleguide2/includes/molecules/menus/district/carousel.html"
diff --git a/district/migrations/0286_alter_districthomepage_content.py b/district/migrations/0286_alter_districthomepage_content.py
new file mode 100644
index 0000000000000000000000000000000000000000..0ba45bb73fb9808801834bc75308317cd200f63d
--- /dev/null
+++ b/district/migrations/0286_alter_districthomepage_content.py
@@ -0,0 +1,23 @@
+# Generated by Django 5.0.7 on 2024-09-01 13:29
+
+import shared.blocks.children.misc
+import wagtail.blocks
+import wagtail.blocks.static_block
+import wagtail.fields
+import wagtail.images.blocks
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('district', '0285_alter_districtoctopuspersonpage_person'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='districthomepage',
+            name='content',
+            field=wagtail.fields.StreamField([('fullscreen_header_block', 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)', required=False)), ('mobile_image', wagtail.images.blocks.ImageChooserBlock(help_text='Pokud není vybráno video, ukáže se na mobilu.', label='Obrázek na pozadí (mobil)', required=False)), ('desktop_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='Video (desktop)', required=False)), ('mobile_video_url', wagtail.blocks.URLBlock(help_text='Pokud je vybráno, ukáže se na mobilech s povoleným autoplayem místo obrázku.', label='Video (mobil)', required=False)), ('desktop_line_1', wagtail.blocks.TextBlock(label='Desktop první řádek', required=False)), ('desktop_line_2', wagtail.blocks.TextBlock(label='Desktop druhý řádek', required=False)), ('mobile_line_1', wagtail.blocks.TextBlock(label='První mobilní řádek', required=False)), ('mobile_line_2', wagtail.blocks.TextBlock(label='Druhý mobilní řádek', required=False)), ('mobile_line_3', wagtail.blocks.TextBlock(label='Třetí mobilní řádek', required=False)), ('button_url', wagtail.blocks.URLBlock(help_text='Bez odkazu tlačítko nebude viditelné.', label='Odkaz tlačítka', required=False)), ('button_text', wagtail.blocks.CharBlock(help_text='Odkaz funguje i bez tlačítka. Pokud chceš tlačítko skrýt, nevyplňuj text.', label='Text tlačítka', required=False))])), ('news_block', 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', required=False))], template='styleguide2/includes/organisms/articles/district/articles_section.html')), ('elections_block', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(label='Titulek', required=True)), ('text_before_countdown', wagtail.blocks.CharBlock(default='Aktuálně zbývá', label='Text před odpočtem', required=True)), ('countdown_timestamp', wagtail.blocks.DateTimeBlock(label='Datum & čas voleb', required=True)), ('buttons', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(label='Titulek', max_length=128, required=True)), ('page', wagtail.blocks.PageChooserBlock(label='Stránka', required=False)), ('link', wagtail.blocks.URLBlock(label='Odkaz', required=False))]), label='Tlačítka', required=False))])), ('people_block', wagtail.blocks.StructBlock([('title_line_1', wagtail.blocks.CharBlock(label='První řádek titulku')), ('title_line_2', wagtail.blocks.CharBlock(label='Druhý řádek titulku')), ('description', wagtail.blocks.TextBlock(label='Popis')), ('list', wagtail.blocks.ListBlock(shared.blocks.children.misc.PersonBoxBlock, label='Boxíky'))], template='styleguide2/includes/organisms/main_section/district/representatives_section.html')), ('calendar_block', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(label='Titulek', required=False)), ('info', wagtail.blocks.static_block.StaticBlock(admin_text='Adresa kalendáře se zadává v nastavení hlavní stránky webu', label='Volba kalendáře'))])), ('carousel_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))])), ('newsletter_block', wagtail.blocks.StructBlock([]))], blank=True, verbose_name='Obsah'),
+        ),
+    ]
diff --git a/main/blocks.py b/main/blocks.py
index 20542e9de431bad58b1387c59d5f72bfc52c95ea..52e6fd8e07a5cf63389ae02abab73d02acaeb145 100644
--- a/main/blocks.py
+++ b/main/blocks.py
@@ -88,7 +88,11 @@ class HomePageCarouseSlideBlock(StructBlock):
         help_text="Bez odkazu tlačítko nebude viditelné.",
         required=False,
     )
-    button_text = CharBlock(label="Text tlaÄŤĂ­tka", required=False)
+    button_text = CharBlock(
+        label="Text tlaÄŤĂ­tka",
+        help_text="Odkaz funguje i bez tlačítka. Pokud chceš tlačítko skrýt, nevyplňuj text.",
+        required=False
+    )
 
     class Meta:
         template = "styleguide2/includes/molecules/menus/carousel.html"
diff --git a/main/migrations/0129_alter_mainhomepage_content.py b/main/migrations/0129_alter_mainhomepage_content.py
new file mode 100644
index 0000000000000000000000000000000000000000..e945383c5e3597a869194090388f35d9ef207244
--- /dev/null
+++ b/main/migrations/0129_alter_mainhomepage_content.py
@@ -0,0 +1,22 @@
+# Generated by Django 5.0.7 on 2024-09-01 13:29
+
+import shared.blocks.children.misc
+import wagtail.blocks
+import wagtail.fields
+import wagtail.images.blocks
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('main', '0128_alter_mainprogrampage_program'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='mainhomepage',
+            name='content',
+            field=wagtail.fields.StreamField([('carousel', wagtail.blocks.StructBlock([('desktop_line_1', wagtail.blocks.TextBlock(label='Desktop první řádek')), ('desktop_line_2', wagtail.blocks.TextBlock(label='Desktop druhý řádek')), ('mobile_line_1', wagtail.blocks.TextBlock(label='První mobilní řádek')), ('mobile_line_2', wagtail.blocks.TextBlock(label='Druhý mobilní řádek')), ('mobile_line_3', wagtail.blocks.TextBlock(label='Třetí mobilní řádek')), ('desktop_image', wagtail.images.blocks.ImageChooserBlock(label='Obrázek nahrazující animaci (desktop)', required=False)), ('mobile_image', wagtail.images.blocks.ImageChooserBlock(label='Obrázek nahrazující animaci (mobil / tablet)', required=False)), ('button_url', wagtail.blocks.URLBlock(help_text='Bez odkazu tlačítko nebude viditelné.', label='Odkaz tlačítka', required=False)), ('button_text', wagtail.blocks.CharBlock(help_text='Odkaz funguje i bez tlačítka. Pokud chceš tlačítko skrýt, nevyplňuj text.', label='Text tlačítka', 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', required=False))], template='styleguide2/includes/organisms/articles/articles_section.html')), ('people', wagtail.blocks.StructBlock([('title_line_1', wagtail.blocks.CharBlock(label='První řádek titulku')), ('title_line_2', wagtail.blocks.CharBlock(label='Druhý řádek titulku')), ('description', wagtail.blocks.TextBlock(label='Popis')), ('list', wagtail.blocks.ListBlock(shared.blocks.children.misc.PersonBoxBlock, label='Boxíky'))])), ('regions', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(help_text='Články pro regiony se načtou automaticky', label='Titulek'))])), ('boxes', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(label='Nadpis')), ('list', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('button_link', wagtail.blocks.URLBlock(label='Odkaz tlačítka')), ('button_text', wagtail.blocks.CharBlock(label='Text tlačítka')), ('title', wagtail.blocks.CharBlock(label='Nadpis')), ('image', wagtail.images.blocks.ImageChooserBlock(label='Logo/obrázek'))]), label='Boxíky')), ('image', wagtail.images.blocks.ImageChooserBlock(label='Obrázek pozadí', required=False))]))], blank=True, verbose_name='Hlavní obsah'),
+        ),
+    ]
diff --git a/shared/templates/styleguide2/includes/molecules/menus/carousel.html b/shared/templates/styleguide2/includes/molecules/menus/carousel.html
index aea8c1f2df947422c66d189ac4d7b65e37f95ea5..fb8f722dbbfa532dcf35923e6119283398644896 100644
--- a/shared/templates/styleguide2/includes/molecules/menus/carousel.html
+++ b/shared/templates/styleguide2/includes/molecules/menus/carousel.html
@@ -90,7 +90,7 @@
             <div>{{ self.desktop_line_2 }}</div>
           </h1>
 
-          {% if self.button_url %}
+          {% if self.button_url and self.button_text %}
             <div class="__header-carousel-button-wrapper ml-4 text-lg group">
               {% firstof self.button_text "VĂ­ce informacĂ­" as button_text %}