diff --git a/district/blocks.py b/district/blocks.py
index 074af513c4e8b7495ad12537a462881fa1013c9d..aaad95fa2f9918005d0263581a72ff34176ee4f2 100644
--- a/district/blocks.py
+++ b/district/blocks.py
@@ -32,6 +32,7 @@ from shared.blocks import ProgramGroupBlockPopout as SharedProgramGroupBlockPopo
 from shared.blocks import ProgramItemBlock
 from shared.blocks import SecondaryCandidateBlock as SharedSecondaryCandidateBlockMixin
 
+
 # --- BEGIN New blocks ---
 
 
@@ -271,39 +272,6 @@ class SimplePersonBlock(StructBlock):
         label = "Osoba blok"
 
 
-class CandidateListBlock(StructBlock):
-    candidate_list = blocks.StreamBlock(
-        label="Kandidáti",
-        local_blocks=[
-            (
-                "person_page",
-                PageChooserBlock(
-                    label="Osoba", page_type=["district.DistrictPersonPage"]
-                ),
-            ),
-            ("person_block", SimplePersonBlock()),
-        ],
-    )
-    candidate_list_big_count = IntegerBlock(
-        label="Počet kanditátů s velkým náhledem", default=7
-    )
-    candidate_list_shown_count = IntegerBlock(
-        label="Počet zobrazených kandidátů při načtení stránky (včetně velkých náhledů)",
-        default=16,
-    )
-
-    cta_text = CharBlock(label="Text 'call-to-action' baneru", required=False)
-    cta_link = URLBlock(label="Odkaz 'call-to-action' baneru", required=False)
-    cta_button_text = CharBlock(
-        label="Text tlačítka 'call-to-action' baneru", max_length=24, required=False
-    )
-
-    class Meta:
-        template = "district/blocks/candidate_list_block.html"
-        icon = "list-ol"
-        label = "List kanditátů"
-
-
 class CardLinkBlock(CardLinkBlockMixin):
     page = PageChooserBlock(
         label="Stránka",
@@ -570,26 +538,31 @@ class SecondaryCandidateBlock(SharedSecondaryCandidateBlockMixin):
 class CandidateListBlock(SharedCandidateListBlockMixin):
     candidates = ListBlock(
         CandidateBlock(),
-        label="Kandidáti",
+        label=" ",  # Hacky way to show no label
     )
 
 
 class CandidateSecondaryListBlock(SharedCandidateSecondaryListBlockMixin):
     candidates = ListBlock(
         SecondaryCandidateBlock(),
-        label="Kandidáti",
+        label="Zbylí kandidáti na listině",
     )
 
 
 class ProgramGroupWithCandidatesBlock(StructBlock):
-    title = CharBlock(label="Titulek části programu")
+    title = CharBlock(
+        label="Název programu",
+        help_text="Např. 'Krajské volby 2024', 'Evropské volby 2024', ..."
+    )
 
     primary_candidates = CandidateListBlock(
-        label="Čelo kandidátky",
+        label="Osoby na čele kandidátky",
+        help_text="Zobrazí se ve velkých blocích na začátku stránky."
     )
 
     secondary_candidates = CandidateSecondaryListBlock(
-        label="Ostatní kandidáti",
+        label="Ostatní osoby na kandidátce",
+        help_text="Zobrazí se v kompaktním seznamu pod čelem kandidátky."
     )
 
     program = StreamBlock(
diff --git a/district/migrations/0216_alter_districtnewprogrampage_program.py b/district/migrations/0216_alter_districtnewprogrampage_program.py
index f56c9e7d094c5eb425661583d8e5b2af7450021d..81a76479931edd66f54f6c202392538e6c081227 100644
--- a/district/migrations/0216_alter_districtnewprogrampage_program.py
+++ b/district/migrations/0216_alter_districtnewprogrampage_program.py
@@ -7,15 +7,586 @@ from django.db import migrations
 
 
 class Migration(migrations.Migration):
-
     dependencies = [
-        ('district', '0215_alter_districtelectioncampaignpage_candidates_and_more'),
+        ("district", "0215_alter_districtelectioncampaignpage_candidates_and_more"),
     ]
 
     operations = [
         migrations.AlterField(
-            model_name='districtnewprogrampage',
-            name='program',
-            field=wagtail.fields.StreamField([('program_group', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(label='Titulek části programu')), ('point_list', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('url', wagtail.blocks.URLBlock(label='Odkaz pokrývající celou tuto část', required=False)), ('icon', wagtail.images.blocks.ImageChooserBlock(label='Ikona', required=False)), ('title', wagtail.blocks.CharBlock(label='Titulek článku programu')), ('text', wagtail.blocks.RichTextBlock(features=['h3', 'h4', 'h5', 'bold', 'italic', 'ol', 'ul', 'hr', 'link', 'document-link', 'image', 'superscript', 'subscript', 'strikethrough', 'blockquote', 'embed'], label='Obsah'))]), label='Jednotlivé články programu'))])), ('program_group_crossroad', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(label='Titulek části programu')), ('point_list', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('image', wagtail.images.blocks.ImageChooserBlock(label='Obrázek')), ('title', wagtail.blocks.CharBlock(label='Titulek', required=True)), ('text', wagtail.blocks.RichTextBlock(label='Krátký text pod nadpisem', required=False)), ('page', wagtail.blocks.PageChooserBlock(label='Stránka', page_type=['district.DistrictArticlePage', 'district.DistrictArticlesPage', 'district.DistrictCenterPage', 'district.DistrictContactPage', 'district.DistrictCrossroadPage', 'district.DistrictCustomPage', 'district.DistrictElectionCampaignPage', 'district.DistrictElectionProgramPage', 'district.DistrictElectionRootPage', 'district.DistrictPeoplePage', 'district.DistrictPersonPage', 'district.DistrictPostElectionStrategyPage', 'district.DistrictProgramPage'], required=False)), ('link', wagtail.blocks.URLBlock(label='Odkaz', required=False))]), label='Karty programu'))])), ('program_group_popout', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(label='Titulek části programu')), ('categories', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('name', wagtail.blocks.CharBlock(label='Název')), ('icon', wagtail.images.blocks.ImageChooserBlock(label='Ikona', required=False)), ('description', wagtail.blocks.RichTextBlock(label='Popis', required=False)), ('point_list', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(label='Titulek vyskakovacího bloku')), ('content', wagtail.blocks.RichTextBlock(features=['h3', 'h4', 'h5', 'bold', 'italic', 'ol', 'ul', 'hr', 'link', 'document-link', 'image', 'superscript', 'subscript', 'strikethrough', 'blockquote', 'embed'], label='Obsah')), ('guarantor', wagtail.blocks.PageChooserBlock(label='Garant', page_type=['district.DistrictPersonPage'], required=False))]), label='Jednotlivé bloky programu'))]), label='Kategorie programu'))])), ('program_group_with_candidates', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(label='Titulek části programu')), ('primary_candidates', wagtail.blocks.StructBlock([('candidates', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('page', wagtail.blocks.PageChooserBlock(label='Stránka', page_type=['district.DistrictPersonPage'])), ('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'))], label='Čelo kandidátky')), ('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=['district.DistrictPersonPage'])), ('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'))], label='Ostatní kandidáti')), ('program', wagtail.blocks.StreamBlock([('program_group', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(label='Titulek části programu')), ('point_list', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('url', wagtail.blocks.URLBlock(label='Odkaz pokrývající celou tuto část', required=False)), ('icon', wagtail.images.blocks.ImageChooserBlock(label='Ikona', required=False)), ('title', wagtail.blocks.CharBlock(label='Titulek článku programu')), ('text', wagtail.blocks.RichTextBlock(features=['h3', 'h4', 'h5', 'bold', 'italic', 'ol', 'ul', 'hr', 'link', 'document-link', 'image', 'superscript', 'subscript', 'strikethrough', 'blockquote', 'embed'], label='Obsah'))]), label='Jednotlivé články programu'))])), ('program_group_crossroad', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(label='Titulek části programu')), ('point_list', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('image', wagtail.images.blocks.ImageChooserBlock(label='Obrázek')), ('title', wagtail.blocks.CharBlock(label='Titulek', required=True)), ('text', wagtail.blocks.RichTextBlock(label='Krátký text pod nadpisem', required=False)), ('page', wagtail.blocks.PageChooserBlock(label='Stránka', page_type=['district.DistrictArticlePage', 'district.DistrictArticlesPage', 'district.DistrictCenterPage', 'district.DistrictContactPage', 'district.DistrictCrossroadPage', 'district.DistrictCustomPage', 'district.DistrictElectionCampaignPage', 'district.DistrictElectionProgramPage', 'district.DistrictElectionRootPage', 'district.DistrictPeoplePage', 'district.DistrictPersonPage', 'district.DistrictPostElectionStrategyPage', 'district.DistrictProgramPage'], required=False)), ('link', wagtail.blocks.URLBlock(label='Odkaz', required=False))]), label='Karty programu'))])), ('program_group_popout', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(label='Titulek části programu')), ('categories', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('name', wagtail.blocks.CharBlock(label='Název')), ('icon', wagtail.images.blocks.ImageChooserBlock(label='Ikona', required=False)), ('description', wagtail.blocks.RichTextBlock(label='Popis', required=False)), ('point_list', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(label='Titulek vyskakovacího bloku')), ('content', wagtail.blocks.RichTextBlock(features=['h3', 'h4', 'h5', 'bold', 'italic', 'ol', 'ul', 'hr', 'link', 'document-link', 'image', 'superscript', 'subscript', 'strikethrough', 'blockquote', 'embed'], label='Obsah')), ('guarantor', wagtail.blocks.PageChooserBlock(label='Garant', page_type=['district.DistrictPersonPage'], required=False))]), label='Jednotlivé bloky programu'))]), label='Kategorie programu'))]))]))]))], blank=True, verbose_name='Programy'),
+            model_name="districtnewprogrampage",
+            name="program",
+            field=wagtail.fields.StreamField(
+                [
+                    (
+                        "program_group",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "title",
+                                    wagtail.blocks.CharBlock(
+                                        label="Titulek části programu"
+                                    ),
+                                ),
+                                (
+                                    "point_list",
+                                    wagtail.blocks.ListBlock(
+                                        wagtail.blocks.StructBlock(
+                                            [
+                                                (
+                                                    "url",
+                                                    wagtail.blocks.URLBlock(
+                                                        label="Odkaz pokrývající celou tuto část",
+                                                        required=False,
+                                                    ),
+                                                ),
+                                                (
+                                                    "icon",
+                                                    wagtail.images.blocks.ImageChooserBlock(
+                                                        label="Ikona", required=False
+                                                    ),
+                                                ),
+                                                (
+                                                    "title",
+                                                    wagtail.blocks.CharBlock(
+                                                        label="Titulek článku programu"
+                                                    ),
+                                                ),
+                                                (
+                                                    "text",
+                                                    wagtail.blocks.RichTextBlock(
+                                                        features=[
+                                                            "h3",
+                                                            "h4",
+                                                            "h5",
+                                                            "bold",
+                                                            "italic",
+                                                            "ol",
+                                                            "ul",
+                                                            "hr",
+                                                            "link",
+                                                            "document-link",
+                                                            "image",
+                                                            "superscript",
+                                                            "subscript",
+                                                            "strikethrough",
+                                                            "blockquote",
+                                                            "embed",
+                                                        ],
+                                                        label="Obsah",
+                                                    ),
+                                                ),
+                                            ]
+                                        ),
+                                        label="Jednotlivé články programu",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "program_group_crossroad",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "title",
+                                    wagtail.blocks.CharBlock(
+                                        label="Titulek části programu"
+                                    ),
+                                ),
+                                (
+                                    "point_list",
+                                    wagtail.blocks.ListBlock(
+                                        wagtail.blocks.StructBlock(
+                                            [
+                                                (
+                                                    "image",
+                                                    wagtail.images.blocks.ImageChooserBlock(
+                                                        label="Obrázek"
+                                                    ),
+                                                ),
+                                                (
+                                                    "title",
+                                                    wagtail.blocks.CharBlock(
+                                                        label="Titulek", required=True
+                                                    ),
+                                                ),
+                                                (
+                                                    "text",
+                                                    wagtail.blocks.RichTextBlock(
+                                                        label="Krátký text pod nadpisem",
+                                                        required=False,
+                                                    ),
+                                                ),
+                                                (
+                                                    "page",
+                                                    wagtail.blocks.PageChooserBlock(
+                                                        label="Stránka",
+                                                        page_type=[
+                                                            "district.DistrictArticlePage",
+                                                            "district.DistrictArticlesPage",
+                                                            "district.DistrictCenterPage",
+                                                            "district.DistrictContactPage",
+                                                            "district.DistrictCrossroadPage",
+                                                            "district.DistrictCustomPage",
+                                                            "district.DistrictElectionCampaignPage",
+                                                            "district.DistrictElectionProgramPage",
+                                                            "district.DistrictElectionRootPage",
+                                                            "district.DistrictPeoplePage",
+                                                            "district.DistrictPersonPage",
+                                                            "district.DistrictPostElectionStrategyPage",
+                                                            "district.DistrictProgramPage",
+                                                        ],
+                                                        required=False,
+                                                    ),
+                                                ),
+                                                (
+                                                    "link",
+                                                    wagtail.blocks.URLBlock(
+                                                        label="Odkaz", required=False
+                                                    ),
+                                                ),
+                                            ]
+                                        ),
+                                        label="Karty programu",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "program_group_popout",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "title",
+                                    wagtail.blocks.CharBlock(
+                                        label="Titulek části programu"
+                                    ),
+                                ),
+                                (
+                                    "categories",
+                                    wagtail.blocks.ListBlock(
+                                        wagtail.blocks.StructBlock(
+                                            [
+                                                (
+                                                    "name",
+                                                    wagtail.blocks.CharBlock(
+                                                        label="Název"
+                                                    ),
+                                                ),
+                                                (
+                                                    "icon",
+                                                    wagtail.images.blocks.ImageChooserBlock(
+                                                        label="Ikona", required=False
+                                                    ),
+                                                ),
+                                                (
+                                                    "description",
+                                                    wagtail.blocks.RichTextBlock(
+                                                        label="Popis", required=False
+                                                    ),
+                                                ),
+                                                (
+                                                    "point_list",
+                                                    wagtail.blocks.ListBlock(
+                                                        wagtail.blocks.StructBlock(
+                                                            [
+                                                                (
+                                                                    "title",
+                                                                    wagtail.blocks.CharBlock(
+                                                                        label="Titulek vyskakovacího bloku"
+                                                                    ),
+                                                                ),
+                                                                (
+                                                                    "content",
+                                                                    wagtail.blocks.RichTextBlock(
+                                                                        features=[
+                                                                            "h3",
+                                                                            "h4",
+                                                                            "h5",
+                                                                            "bold",
+                                                                            "italic",
+                                                                            "ol",
+                                                                            "ul",
+                                                                            "hr",
+                                                                            "link",
+                                                                            "document-link",
+                                                                            "image",
+                                                                            "superscript",
+                                                                            "subscript",
+                                                                            "strikethrough",
+                                                                            "blockquote",
+                                                                            "embed",
+                                                                        ],
+                                                                        label="Obsah",
+                                                                    ),
+                                                                ),
+                                                                (
+                                                                    "guarantor",
+                                                                    wagtail.blocks.PageChooserBlock(
+                                                                        label="Garant",
+                                                                        page_type=[
+                                                                            "district.DistrictPersonPage"
+                                                                        ],
+                                                                        required=False,
+                                                                    ),
+                                                                ),
+                                                            ]
+                                                        ),
+                                                        label="Jednotlivé bloky programu",
+                                                    ),
+                                                ),
+                                            ]
+                                        ),
+                                        label="Kategorie programu",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "program_group_with_candidates",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "title",
+                                    wagtail.blocks.CharBlock(
+                                        label="Titulek části programu"
+                                    ),
+                                ),
+                                (
+                                    "primary_candidates",
+                                    wagtail.blocks.StructBlock(
+                                        [
+                                            (
+                                                "candidates",
+                                                wagtail.blocks.ListBlock(
+                                                    wagtail.blocks.StructBlock(
+                                                        [
+                                                            (
+                                                                "page",
+                                                                wagtail.blocks.PageChooserBlock(
+                                                                    label="Stránka",
+                                                                    page_type=[
+                                                                        "district.DistrictPersonPage"
+                                                                    ],
+                                                                ),
+                                                            ),
+                                                            (
+                                                                "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",
+                                                ),
+                                            )
+                                        ],
+                                        label="Čelo kandidátky",
+                                    ),
+                                ),
+                                (
+                                    "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=[
+                                                                        "district.DistrictPersonPage"
+                                                                    ],
+                                                                ),
+                                                            ),
+                                                            (
+                                                                "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",
+                                                ),
+                                            ),
+                                        ],
+                                        label="Ostatní kandidáti",
+                                    ),
+                                ),
+                                (
+                                    "program",
+                                    wagtail.blocks.StreamBlock(
+                                        [
+                                            (
+                                                "program_group",
+                                                wagtail.blocks.StructBlock(
+                                                    [
+                                                        (
+                                                            "title",
+                                                            wagtail.blocks.CharBlock(
+                                                                label="Titulek části programu"
+                                                            ),
+                                                        ),
+                                                        (
+                                                            "point_list",
+                                                            wagtail.blocks.ListBlock(
+                                                                wagtail.blocks.StructBlock(
+                                                                    [
+                                                                        (
+                                                                            "url",
+                                                                            wagtail.blocks.URLBlock(
+                                                                                label="Odkaz pokrývající celou tuto část",
+                                                                                required=False,
+                                                                            ),
+                                                                        ),
+                                                                        (
+                                                                            "icon",
+                                                                            wagtail.images.blocks.ImageChooserBlock(
+                                                                                label="Ikona",
+                                                                                required=False,
+                                                                            ),
+                                                                        ),
+                                                                        (
+                                                                            "title",
+                                                                            wagtail.blocks.CharBlock(
+                                                                                label="Titulek článku programu"
+                                                                            ),
+                                                                        ),
+                                                                        (
+                                                                            "text",
+                                                                            wagtail.blocks.RichTextBlock(
+                                                                                features=[
+                                                                                    "h3",
+                                                                                    "h4",
+                                                                                    "h5",
+                                                                                    "bold",
+                                                                                    "italic",
+                                                                                    "ol",
+                                                                                    "ul",
+                                                                                    "hr",
+                                                                                    "link",
+                                                                                    "document-link",
+                                                                                    "image",
+                                                                                    "superscript",
+                                                                                    "subscript",
+                                                                                    "strikethrough",
+                                                                                    "blockquote",
+                                                                                    "embed",
+                                                                                ],
+                                                                                label="Obsah",
+                                                                            ),
+                                                                        ),
+                                                                    ]
+                                                                ),
+                                                                label="Jednotlivé články programu",
+                                                            ),
+                                                        ),
+                                                    ]
+                                                ),
+                                            ),
+                                            (
+                                                "program_group_crossroad",
+                                                wagtail.blocks.StructBlock(
+                                                    [
+                                                        (
+                                                            "title",
+                                                            wagtail.blocks.CharBlock(
+                                                                label="Titulek části programu"
+                                                            ),
+                                                        ),
+                                                        (
+                                                            "point_list",
+                                                            wagtail.blocks.ListBlock(
+                                                                wagtail.blocks.StructBlock(
+                                                                    [
+                                                                        (
+                                                                            "image",
+                                                                            wagtail.images.blocks.ImageChooserBlock(
+                                                                                label="Obrázek"
+                                                                            ),
+                                                                        ),
+                                                                        (
+                                                                            "title",
+                                                                            wagtail.blocks.CharBlock(
+                                                                                label="Titulek",
+                                                                                required=True,
+                                                                            ),
+                                                                        ),
+                                                                        (
+                                                                            "text",
+                                                                            wagtail.blocks.RichTextBlock(
+                                                                                label="Krátký text pod nadpisem",
+                                                                                required=False,
+                                                                            ),
+                                                                        ),
+                                                                        (
+                                                                            "page",
+                                                                            wagtail.blocks.PageChooserBlock(
+                                                                                label="Stránka",
+                                                                                page_type=[
+                                                                                    "district.DistrictArticlePage",
+                                                                                    "district.DistrictArticlesPage",
+                                                                                    "district.DistrictCenterPage",
+                                                                                    "district.DistrictContactPage",
+                                                                                    "district.DistrictCrossroadPage",
+                                                                                    "district.DistrictCustomPage",
+                                                                                    "district.DistrictElectionCampaignPage",
+                                                                                    "district.DistrictElectionProgramPage",
+                                                                                    "district.DistrictElectionRootPage",
+                                                                                    "district.DistrictPeoplePage",
+                                                                                    "district.DistrictPersonPage",
+                                                                                    "district.DistrictPostElectionStrategyPage",
+                                                                                    "district.DistrictProgramPage",
+                                                                                ],
+                                                                                required=False,
+                                                                            ),
+                                                                        ),
+                                                                        (
+                                                                            "link",
+                                                                            wagtail.blocks.URLBlock(
+                                                                                label="Odkaz",
+                                                                                required=False,
+                                                                            ),
+                                                                        ),
+                                                                    ]
+                                                                ),
+                                                                label="Karty programu",
+                                                            ),
+                                                        ),
+                                                    ]
+                                                ),
+                                            ),
+                                            (
+                                                "program_group_popout",
+                                                wagtail.blocks.StructBlock(
+                                                    [
+                                                        (
+                                                            "title",
+                                                            wagtail.blocks.CharBlock(
+                                                                label="Titulek části programu"
+                                                            ),
+                                                        ),
+                                                        (
+                                                            "categories",
+                                                            wagtail.blocks.ListBlock(
+                                                                wagtail.blocks.StructBlock(
+                                                                    [
+                                                                        (
+                                                                            "name",
+                                                                            wagtail.blocks.CharBlock(
+                                                                                label="Název"
+                                                                            ),
+                                                                        ),
+                                                                        (
+                                                                            "icon",
+                                                                            wagtail.images.blocks.ImageChooserBlock(
+                                                                                label="Ikona",
+                                                                                required=False,
+                                                                            ),
+                                                                        ),
+                                                                        (
+                                                                            "description",
+                                                                            wagtail.blocks.RichTextBlock(
+                                                                                label="Popis",
+                                                                                required=False,
+                                                                            ),
+                                                                        ),
+                                                                        (
+                                                                            "point_list",
+                                                                            wagtail.blocks.ListBlock(
+                                                                                wagtail.blocks.StructBlock(
+                                                                                    [
+                                                                                        (
+                                                                                            "title",
+                                                                                            wagtail.blocks.CharBlock(
+                                                                                                label="Titulek vyskakovacího bloku"
+                                                                                            ),
+                                                                                        ),
+                                                                                        (
+                                                                                            "content",
+                                                                                            wagtail.blocks.RichTextBlock(
+                                                                                                features=[
+                                                                                                    "h3",
+                                                                                                    "h4",
+                                                                                                    "h5",
+                                                                                                    "bold",
+                                                                                                    "italic",
+                                                                                                    "ol",
+                                                                                                    "ul",
+                                                                                                    "hr",
+                                                                                                    "link",
+                                                                                                    "document-link",
+                                                                                                    "image",
+                                                                                                    "superscript",
+                                                                                                    "subscript",
+                                                                                                    "strikethrough",
+                                                                                                    "blockquote",
+                                                                                                    "embed",
+                                                                                                ],
+                                                                                                label="Obsah",
+                                                                                            ),
+                                                                                        ),
+                                                                                        (
+                                                                                            "guarantor",
+                                                                                            wagtail.blocks.PageChooserBlock(
+                                                                                                label="Garant",
+                                                                                                page_type=[
+                                                                                                    "district.DistrictPersonPage"
+                                                                                                ],
+                                                                                                required=False,
+                                                                                            ),
+                                                                                        ),
+                                                                                    ]
+                                                                                ),
+                                                                                label="Jednotlivé bloky programu",
+                                                                            ),
+                                                                        ),
+                                                                    ]
+                                                                ),
+                                                                label="Kategorie programu",
+                                                            ),
+                                                        ),
+                                                    ]
+                                                ),
+                                            ),
+                                        ]
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                ],
+                blank=True,
+                verbose_name="Programy",
+            ),
         ),
     ]
diff --git a/district/migrations/0217_alter_districthomepage_menu.py b/district/migrations/0217_alter_districthomepage_menu.py
index 354a29930c013aaf269aebcf9b3e9d8dd522a837..4a9449a159d2dbd2cbe2db20bc6466968db7797b 100644
--- a/district/migrations/0217_alter_districthomepage_menu.py
+++ b/district/migrations/0217_alter_districthomepage_menu.py
@@ -6,15 +6,89 @@ from django.db import migrations
 
 
 class Migration(migrations.Migration):
-
     dependencies = [
-        ('district', '0216_alter_districtnewprogrampage_program'),
+        ("district", "0216_alter_districtnewprogrampage_program"),
     ]
 
     operations = [
         migrations.AlterField(
-            model_name='districthomepage',
-            name='menu',
-            field=wagtail.fields.StreamField([('menu_item', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(help_text='Pokud není odkazovaná stránka na Majáku, použij možnost zadání samotné adresy níže.', label='Titulek', required=True)), ('page', wagtail.blocks.PageChooserBlock(label='Stránka', required=False)), ('link', wagtail.blocks.URLBlock(label='Odkaz', required=False))])), ('menu_parent', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(label='Titulek', required=True)), ('menu_items', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(help_text='Pokud není odkazovaná stránka na Majáku, použij možnost zadání samotné adresy níže.', label='Titulek', required=True)), ('page', wagtail.blocks.PageChooserBlock(label='Stránka', required=False)), ('link', wagtail.blocks.URLBlock(label='Odkaz', required=False))]), label='Položky menu'))]))], blank=True, verbose_name='Položky'),
+            model_name="districthomepage",
+            name="menu",
+            field=wagtail.fields.StreamField(
+                [
+                    (
+                        "menu_item",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "title",
+                                    wagtail.blocks.CharBlock(
+                                        help_text="Pokud není odkazovaná stránka na Majáku, použij možnost zadání samotné adresy níže.",
+                                        label="Titulek",
+                                        required=True,
+                                    ),
+                                ),
+                                (
+                                    "page",
+                                    wagtail.blocks.PageChooserBlock(
+                                        label="Stránka", required=False
+                                    ),
+                                ),
+                                (
+                                    "link",
+                                    wagtail.blocks.URLBlock(
+                                        label="Odkaz", required=False
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "menu_parent",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "title",
+                                    wagtail.blocks.CharBlock(
+                                        label="Titulek", required=True
+                                    ),
+                                ),
+                                (
+                                    "menu_items",
+                                    wagtail.blocks.ListBlock(
+                                        wagtail.blocks.StructBlock(
+                                            [
+                                                (
+                                                    "title",
+                                                    wagtail.blocks.CharBlock(
+                                                        help_text="Pokud není odkazovaná stránka na Majáku, použij možnost zadání samotné adresy níže.",
+                                                        label="Titulek",
+                                                        required=True,
+                                                    ),
+                                                ),
+                                                (
+                                                    "page",
+                                                    wagtail.blocks.PageChooserBlock(
+                                                        label="Stránka", required=False
+                                                    ),
+                                                ),
+                                                (
+                                                    "link",
+                                                    wagtail.blocks.URLBlock(
+                                                        label="Odkaz", required=False
+                                                    ),
+                                                ),
+                                            ]
+                                        ),
+                                        label="Položky menu",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                ],
+                blank=True,
+                verbose_name="Položky",
+            ),
         ),
     ]
diff --git a/district/migrations/0218_auto_20240601_1530.py b/district/migrations/0218_auto_20240601_1530.py
new file mode 100644
index 0000000000000000000000000000000000000000..af6e8d45d31f450942e2cb937a172f0329ce0751
--- /dev/null
+++ b/district/migrations/0218_auto_20240601_1530.py
@@ -0,0 +1,61 @@
+# Generated by Django 5.0.4 on 2024-06-01 13:30
+
+from django.db import migrations
+
+
+def migrate_programs(apps, schema_editor):
+    # Get the models
+    DistrictHomePage = apps.get_model("district", "DistrictHomePage")
+    DistrictElectionRootPage = apps.get_model("district", "DistrictElectionRootPage")
+    DistrictElectionCampaignPage = apps.get_model("district", "DistrictElectionCampaignPage")
+    Page = apps.get_model("wagtailcore", "Page")
+
+    # Get the content type for DistrictElectionCampaignPage and DistrictElectionRootPage
+    ContentType = apps.get_model("contenttypes", "ContentType")
+    root_page_content_type = ContentType.objects.get(
+        app_label="district", model="districtelectionrootpage"
+    )
+    campaign_page_content_type = ContentType.objects.get(
+        app_label="district", model="districtelectioncampaignpage"
+    )
+
+    # Function to get children of a certain type
+    def get_children_of_type(parent_page, content_type):
+        return Page.objects.filter(
+            path__startswith=parent_page.path, depth=parent_page.depth + 1,
+            content_type=content_type
+        )
+
+    for home_page in DistrictHomePage.objects.all():
+        election_data = {}
+
+        print(f"Processing DistrictHomePage: {home_page}")
+
+        # Iterate over all child DistrictElectionRootPage instances
+        for election_root_page in get_children_of_type(home_page, root_page_content_type):
+            print(f"  Processing DistrictElectionRootPage: {election_root_page} with title: {election_root_page.title}")
+
+            # Get the children of type DistrictElectionCampaignPage
+            campaign_pages = get_children_of_type(election_root_page, campaign_page_content_type)
+
+            for campaign_page in campaign_pages:
+                print(f"    Found campaign page: {campaign_page} with title: {campaign_page.title}")
+                
+                election_data["title"] = election_root_page.title
+                
+
+        print(election_data)
+
+    # Stop migration for debugging purposes
+    raise ValueError("Stopping migration for debugging purposes")
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('district', '0217_alter_districthomepage_menu'),
+    ]
+
+    operations = [
+        migrations.RunPython(migrate_programs)
+    ]
diff --git a/district/models.py b/district/models.py
index 0a008f01f1c7687c2d152f3357c7210107542b1b..5b368e4d09424e5023c614485b190f20a61db00f 100644
--- a/district/models.py
+++ b/district/models.py
@@ -51,8 +51,8 @@ from shared.models import (
     MainPersonPageMixin,
     MainProgramPageMixin,
     MainSimplePageMixin,
-    PdfPageMixin,
     PageInMenuMixin,
+    PdfPageMixin,
     SharedTaggedDistrictArticle,
     SubpageMixin,
 )
@@ -432,7 +432,7 @@ class DistrictCenterPage(
     SubpageMixin,
     MetadataPageMixin,
     PageInMenuMixin,
-    Page
+    Page,
 ):
     ### FIELDS
 
diff --git a/district/templates/district/district_article_page.html b/district/templates/district/district_article_page.html
index dc9121987657158aff3ccc25237cb2a82ed51b79..c43dc3736130fcb86ae32958c9c7604117a56949 100644
--- a/district/templates/district/district_article_page.html
+++ b/district/templates/district/district_article_page.html
@@ -1 +1 @@
-{% extends "styleguide2/article_page.html" %}
\ No newline at end of file
+{% extends "styleguide2/article_page.html" %}
diff --git a/donate/migrations/0048_alter_donatehomepage_menu.py b/donate/migrations/0048_alter_donatehomepage_menu.py
index f0bed8ed1e10c5c9e3f92013625dc59b698eaea0..c75106fe506e1bae1645eecf998b6bd426e335ec 100644
--- a/donate/migrations/0048_alter_donatehomepage_menu.py
+++ b/donate/migrations/0048_alter_donatehomepage_menu.py
@@ -6,15 +6,89 @@ from django.db import migrations
 
 
 class Migration(migrations.Migration):
-
     dependencies = [
-        ('donate', '0047_alter_donatehomepage_menu'),
+        ("donate", "0047_alter_donatehomepage_menu"),
     ]
 
     operations = [
         migrations.AlterField(
-            model_name='donatehomepage',
-            name='menu',
-            field=wagtail.fields.StreamField([('menu_item', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(help_text='Pokud není odkazovaná stránka na Majáku, použij možnost zadání samotné adresy níže.', label='Titulek', required=True)), ('page', wagtail.blocks.PageChooserBlock(label='Stránka', required=False)), ('link', wagtail.blocks.URLBlock(label='Odkaz', required=False))])), ('menu_parent', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(label='Titulek', required=True)), ('menu_items', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(help_text='Pokud není odkazovaná stránka na Majáku, použij možnost zadání samotné adresy níže.', label='Titulek', required=True)), ('page', wagtail.blocks.PageChooserBlock(label='Stránka', required=False)), ('link', wagtail.blocks.URLBlock(label='Odkaz', required=False))]), label='Položky menu'))]))], blank=True, verbose_name='Menu'),
+            model_name="donatehomepage",
+            name="menu",
+            field=wagtail.fields.StreamField(
+                [
+                    (
+                        "menu_item",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "title",
+                                    wagtail.blocks.CharBlock(
+                                        help_text="Pokud není odkazovaná stránka na Majáku, použij možnost zadání samotné adresy níže.",
+                                        label="Titulek",
+                                        required=True,
+                                    ),
+                                ),
+                                (
+                                    "page",
+                                    wagtail.blocks.PageChooserBlock(
+                                        label="Stránka", required=False
+                                    ),
+                                ),
+                                (
+                                    "link",
+                                    wagtail.blocks.URLBlock(
+                                        label="Odkaz", required=False
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "menu_parent",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "title",
+                                    wagtail.blocks.CharBlock(
+                                        label="Titulek", required=True
+                                    ),
+                                ),
+                                (
+                                    "menu_items",
+                                    wagtail.blocks.ListBlock(
+                                        wagtail.blocks.StructBlock(
+                                            [
+                                                (
+                                                    "title",
+                                                    wagtail.blocks.CharBlock(
+                                                        help_text="Pokud není odkazovaná stránka na Majáku, použij možnost zadání samotné adresy níže.",
+                                                        label="Titulek",
+                                                        required=True,
+                                                    ),
+                                                ),
+                                                (
+                                                    "page",
+                                                    wagtail.blocks.PageChooserBlock(
+                                                        label="Stránka", required=False
+                                                    ),
+                                                ),
+                                                (
+                                                    "link",
+                                                    wagtail.blocks.URLBlock(
+                                                        label="Odkaz", required=False
+                                                    ),
+                                                ),
+                                            ]
+                                        ),
+                                        label="Položky menu",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                ],
+                blank=True,
+                verbose_name="Menu",
+            ),
         ),
     ]
diff --git a/elections/migrations/0036_alter_electionshomepage_menu.py b/elections/migrations/0036_alter_electionshomepage_menu.py
index 27b9522be06570002a110ab1c350f71c1db493e2..f07afae4e47327040de48023216806191d92c8fd 100644
--- a/elections/migrations/0036_alter_electionshomepage_menu.py
+++ b/elections/migrations/0036_alter_electionshomepage_menu.py
@@ -6,15 +6,89 @@ from django.db import migrations
 
 
 class Migration(migrations.Migration):
-
     dependencies = [
-        ('elections', '0035_alter_electionsfullprogrampage_content'),
+        ("elections", "0035_alter_electionsfullprogrampage_content"),
     ]
 
     operations = [
         migrations.AlterField(
-            model_name='electionshomepage',
-            name='menu',
-            field=wagtail.fields.StreamField([('menu_item', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(help_text='Pokud není odkazovaná stránka na Majáku, použij možnost zadání samotné adresy níže.', label='Titulek', required=True)), ('page', wagtail.blocks.PageChooserBlock(label='Stránka', required=False)), ('link', wagtail.blocks.URLBlock(label='Odkaz', required=False))])), ('menu_parent', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(label='Titulek', required=True)), ('menu_items', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(help_text='Pokud není odkazovaná stránka na Majáku, použij možnost zadání samotné adresy níže.', label='Titulek', required=True)), ('page', wagtail.blocks.PageChooserBlock(label='Stránka', required=False)), ('link', wagtail.blocks.URLBlock(label='Odkaz', required=False))]), label='Položky menu'))]))], blank=True, verbose_name='Položky'),
+            model_name="electionshomepage",
+            name="menu",
+            field=wagtail.fields.StreamField(
+                [
+                    (
+                        "menu_item",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "title",
+                                    wagtail.blocks.CharBlock(
+                                        help_text="Pokud není odkazovaná stránka na Majáku, použij možnost zadání samotné adresy níže.",
+                                        label="Titulek",
+                                        required=True,
+                                    ),
+                                ),
+                                (
+                                    "page",
+                                    wagtail.blocks.PageChooserBlock(
+                                        label="Stránka", required=False
+                                    ),
+                                ),
+                                (
+                                    "link",
+                                    wagtail.blocks.URLBlock(
+                                        label="Odkaz", required=False
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "menu_parent",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "title",
+                                    wagtail.blocks.CharBlock(
+                                        label="Titulek", required=True
+                                    ),
+                                ),
+                                (
+                                    "menu_items",
+                                    wagtail.blocks.ListBlock(
+                                        wagtail.blocks.StructBlock(
+                                            [
+                                                (
+                                                    "title",
+                                                    wagtail.blocks.CharBlock(
+                                                        help_text="Pokud není odkazovaná stránka na Majáku, použij možnost zadání samotné adresy níže.",
+                                                        label="Titulek",
+                                                        required=True,
+                                                    ),
+                                                ),
+                                                (
+                                                    "page",
+                                                    wagtail.blocks.PageChooserBlock(
+                                                        label="Stránka", required=False
+                                                    ),
+                                                ),
+                                                (
+                                                    "link",
+                                                    wagtail.blocks.URLBlock(
+                                                        label="Odkaz", required=False
+                                                    ),
+                                                ),
+                                            ]
+                                        ),
+                                        label="Položky menu",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                ],
+                blank=True,
+                verbose_name="Položky",
+            ),
         ),
     ]
diff --git a/main/blocks.py b/main/blocks.py
index 15007f10727d28bdda1be134452783fd446d3fa2..0f1d243d2f278b90d3716e81ae4842ac7adcccef 100644
--- a/main/blocks.py
+++ b/main/blocks.py
@@ -210,7 +210,10 @@ class TeamBlock(StructBlock):
 
 
 class ElectionsProgramBlock(StructBlock):
-    title = CharBlock(label="Titulek části programu")
+    title = CharBlock(
+        label="Název programu",
+        help_text="Např. 'Krajské volby 2024', 'Evropské volby 2024', ..."
+    )
 
     program_page = PageChooserBlock(
         label="Stránka",
diff --git a/main/migrations/0092_alter_mainprogrampage_program.py b/main/migrations/0092_alter_mainprogrampage_program.py
index e684039697d8037bc1087525d7b5dc166086a3d3..1e5d732c61c80f4d1e595c20100d53bf0fe47045 100644
--- a/main/migrations/0092_alter_mainprogrampage_program.py
+++ b/main/migrations/0092_alter_mainprogrampage_program.py
@@ -7,15 +7,264 @@ from django.db import migrations
 
 
 class Migration(migrations.Migration):
-
     dependencies = [
-        ('main', '0091_alter_mainprogrampage_program'),
+        ("main", "0091_alter_mainprogrampage_program"),
     ]
 
     operations = [
         migrations.AlterField(
-            model_name='mainprogrampage',
-            name='program',
-            field=wagtail.fields.StreamField([('program_group', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(label='Titulek části programu')), ('point_list', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('url', wagtail.blocks.URLBlock(label='Odkaz pokrývající celou tuto část', required=False)), ('icon', wagtail.images.blocks.ImageChooserBlock(label='Ikona', required=False)), ('title', wagtail.blocks.CharBlock(label='Titulek článku programu')), ('text', wagtail.blocks.RichTextBlock(features=['h3', 'h4', 'h5', 'bold', 'italic', 'ol', 'ul', 'hr', 'link', 'document-link', 'image', 'superscript', 'subscript', 'strikethrough', 'blockquote', 'embed'], label='Obsah'))]), label='Jednotlivé články programu'))])), ('program_group_crossroad', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(label='Titulek části programu')), ('point_list', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('image', wagtail.images.blocks.ImageChooserBlock(label='Obrázek')), ('title', wagtail.blocks.CharBlock(label='Titulek', required=True)), ('text', wagtail.blocks.RichTextBlock(label='Krátký text pod nadpisem', required=False)), ('page', wagtail.blocks.PageChooserBlock(label='Stránka', page_type=['main.MainArticlesPage', 'main.MainArticlePage', 'main.MainProgramPage', 'main.MainPeoplePage', 'main.MainPersonPage', 'main.MainSimplePage', 'main.MainContactPage', 'main.MainCrossroadPage'], required=False)), ('link', wagtail.blocks.URLBlock(label='Odkaz', required=False))]), label='Karty programu'))])), ('program_group_popout', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(label='Titulek části programu')), ('categories', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('name', wagtail.blocks.CharBlock(label='Název')), ('icon', wagtail.images.blocks.ImageChooserBlock(label='Ikona', required=False)), ('description', wagtail.blocks.RichTextBlock(label='Popis', required=False)), ('point_list', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(label='Titulek vyskakovacího bloku')), ('content', wagtail.blocks.RichTextBlock(features=['h3', 'h4', 'h5', 'bold', 'italic', 'ol', 'ul', 'hr', 'link', 'document-link', 'image', 'superscript', 'subscript', 'strikethrough', 'blockquote', 'embed'], label='Obsah')), ('guarantor', wagtail.blocks.PageChooserBlock(label='Garant', page_type=['district.DistrictPersonPage'], required=False))]), label='Jednotlivé bloky programu'))]), label='Kategorie programu'))])), ('elections_program', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(label='Titulek části programu')), ('program_page', wagtail.blocks.PageChooserBlock(label='Stránka', page_type=['elections.ElectionsFullProgramPage'], required=False))]))], blank=True, verbose_name='Programy'),
+            model_name="mainprogrampage",
+            name="program",
+            field=wagtail.fields.StreamField(
+                [
+                    (
+                        "program_group",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "title",
+                                    wagtail.blocks.CharBlock(
+                                        label="Titulek části programu"
+                                    ),
+                                ),
+                                (
+                                    "point_list",
+                                    wagtail.blocks.ListBlock(
+                                        wagtail.blocks.StructBlock(
+                                            [
+                                                (
+                                                    "url",
+                                                    wagtail.blocks.URLBlock(
+                                                        label="Odkaz pokrývající celou tuto část",
+                                                        required=False,
+                                                    ),
+                                                ),
+                                                (
+                                                    "icon",
+                                                    wagtail.images.blocks.ImageChooserBlock(
+                                                        label="Ikona", required=False
+                                                    ),
+                                                ),
+                                                (
+                                                    "title",
+                                                    wagtail.blocks.CharBlock(
+                                                        label="Titulek článku programu"
+                                                    ),
+                                                ),
+                                                (
+                                                    "text",
+                                                    wagtail.blocks.RichTextBlock(
+                                                        features=[
+                                                            "h3",
+                                                            "h4",
+                                                            "h5",
+                                                            "bold",
+                                                            "italic",
+                                                            "ol",
+                                                            "ul",
+                                                            "hr",
+                                                            "link",
+                                                            "document-link",
+                                                            "image",
+                                                            "superscript",
+                                                            "subscript",
+                                                            "strikethrough",
+                                                            "blockquote",
+                                                            "embed",
+                                                        ],
+                                                        label="Obsah",
+                                                    ),
+                                                ),
+                                            ]
+                                        ),
+                                        label="Jednotlivé články programu",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "program_group_crossroad",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "title",
+                                    wagtail.blocks.CharBlock(
+                                        label="Titulek části programu"
+                                    ),
+                                ),
+                                (
+                                    "point_list",
+                                    wagtail.blocks.ListBlock(
+                                        wagtail.blocks.StructBlock(
+                                            [
+                                                (
+                                                    "image",
+                                                    wagtail.images.blocks.ImageChooserBlock(
+                                                        label="Obrázek"
+                                                    ),
+                                                ),
+                                                (
+                                                    "title",
+                                                    wagtail.blocks.CharBlock(
+                                                        label="Titulek", required=True
+                                                    ),
+                                                ),
+                                                (
+                                                    "text",
+                                                    wagtail.blocks.RichTextBlock(
+                                                        label="Krátký text pod nadpisem",
+                                                        required=False,
+                                                    ),
+                                                ),
+                                                (
+                                                    "page",
+                                                    wagtail.blocks.PageChooserBlock(
+                                                        label="Stránka",
+                                                        page_type=[
+                                                            "main.MainArticlesPage",
+                                                            "main.MainArticlePage",
+                                                            "main.MainProgramPage",
+                                                            "main.MainPeoplePage",
+                                                            "main.MainPersonPage",
+                                                            "main.MainSimplePage",
+                                                            "main.MainContactPage",
+                                                            "main.MainCrossroadPage",
+                                                        ],
+                                                        required=False,
+                                                    ),
+                                                ),
+                                                (
+                                                    "link",
+                                                    wagtail.blocks.URLBlock(
+                                                        label="Odkaz", required=False
+                                                    ),
+                                                ),
+                                            ]
+                                        ),
+                                        label="Karty programu",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "program_group_popout",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "title",
+                                    wagtail.blocks.CharBlock(
+                                        label="Titulek části programu"
+                                    ),
+                                ),
+                                (
+                                    "categories",
+                                    wagtail.blocks.ListBlock(
+                                        wagtail.blocks.StructBlock(
+                                            [
+                                                (
+                                                    "name",
+                                                    wagtail.blocks.CharBlock(
+                                                        label="Název"
+                                                    ),
+                                                ),
+                                                (
+                                                    "icon",
+                                                    wagtail.images.blocks.ImageChooserBlock(
+                                                        label="Ikona", required=False
+                                                    ),
+                                                ),
+                                                (
+                                                    "description",
+                                                    wagtail.blocks.RichTextBlock(
+                                                        label="Popis", required=False
+                                                    ),
+                                                ),
+                                                (
+                                                    "point_list",
+                                                    wagtail.blocks.ListBlock(
+                                                        wagtail.blocks.StructBlock(
+                                                            [
+                                                                (
+                                                                    "title",
+                                                                    wagtail.blocks.CharBlock(
+                                                                        label="Titulek vyskakovacího bloku"
+                                                                    ),
+                                                                ),
+                                                                (
+                                                                    "content",
+                                                                    wagtail.blocks.RichTextBlock(
+                                                                        features=[
+                                                                            "h3",
+                                                                            "h4",
+                                                                            "h5",
+                                                                            "bold",
+                                                                            "italic",
+                                                                            "ol",
+                                                                            "ul",
+                                                                            "hr",
+                                                                            "link",
+                                                                            "document-link",
+                                                                            "image",
+                                                                            "superscript",
+                                                                            "subscript",
+                                                                            "strikethrough",
+                                                                            "blockquote",
+                                                                            "embed",
+                                                                        ],
+                                                                        label="Obsah",
+                                                                    ),
+                                                                ),
+                                                                (
+                                                                    "guarantor",
+                                                                    wagtail.blocks.PageChooserBlock(
+                                                                        label="Garant",
+                                                                        page_type=[
+                                                                            "district.DistrictPersonPage"
+                                                                        ],
+                                                                        required=False,
+                                                                    ),
+                                                                ),
+                                                            ]
+                                                        ),
+                                                        label="Jednotlivé bloky programu",
+                                                    ),
+                                                ),
+                                            ]
+                                        ),
+                                        label="Kategorie programu",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "elections_program",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "title",
+                                    wagtail.blocks.CharBlock(
+                                        label="Titulek části programu"
+                                    ),
+                                ),
+                                (
+                                    "program_page",
+                                    wagtail.blocks.PageChooserBlock(
+                                        label="Stránka",
+                                        page_type=[
+                                            "elections.ElectionsFullProgramPage"
+                                        ],
+                                        required=False,
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                ],
+                blank=True,
+                verbose_name="Programy",
+            ),
         ),
     ]
diff --git a/main/migrations/0093_alter_mainhomepage_menu.py b/main/migrations/0093_alter_mainhomepage_menu.py
index cbc6695715ff9c1a6da7d6a85e29d7168393e902..9c00b5c7f54d9d44a333dacaf9ccda2edb8355a1 100644
--- a/main/migrations/0093_alter_mainhomepage_menu.py
+++ b/main/migrations/0093_alter_mainhomepage_menu.py
@@ -6,15 +6,89 @@ from django.db import migrations
 
 
 class Migration(migrations.Migration):
-
     dependencies = [
-        ('main', '0092_alter_mainprogrampage_program'),
+        ("main", "0092_alter_mainprogrampage_program"),
     ]
 
     operations = [
         migrations.AlterField(
-            model_name='mainhomepage',
-            name='menu',
-            field=wagtail.fields.StreamField([('menu_item', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(help_text='Pokud není odkazovaná stránka na Majáku, použij možnost zadání samotné adresy níže.', label='Titulek', required=True)), ('page', wagtail.blocks.PageChooserBlock(label='Stránka', required=False)), ('link', wagtail.blocks.URLBlock(label='Odkaz', required=False))])), ('menu_parent', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(label='Titulek', required=True)), ('menu_items', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(help_text='Pokud není odkazovaná stránka na Majáku, použij možnost zadání samotné adresy níže.', label='Titulek', required=True)), ('page', wagtail.blocks.PageChooserBlock(label='Stránka', required=False)), ('link', wagtail.blocks.URLBlock(label='Odkaz', required=False))]), label='Položky menu'))]))], blank=True, verbose_name='Položky'),
+            model_name="mainhomepage",
+            name="menu",
+            field=wagtail.fields.StreamField(
+                [
+                    (
+                        "menu_item",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "title",
+                                    wagtail.blocks.CharBlock(
+                                        help_text="Pokud není odkazovaná stránka na Majáku, použij možnost zadání samotné adresy níže.",
+                                        label="Titulek",
+                                        required=True,
+                                    ),
+                                ),
+                                (
+                                    "page",
+                                    wagtail.blocks.PageChooserBlock(
+                                        label="Stránka", required=False
+                                    ),
+                                ),
+                                (
+                                    "link",
+                                    wagtail.blocks.URLBlock(
+                                        label="Odkaz", required=False
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "menu_parent",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "title",
+                                    wagtail.blocks.CharBlock(
+                                        label="Titulek", required=True
+                                    ),
+                                ),
+                                (
+                                    "menu_items",
+                                    wagtail.blocks.ListBlock(
+                                        wagtail.blocks.StructBlock(
+                                            [
+                                                (
+                                                    "title",
+                                                    wagtail.blocks.CharBlock(
+                                                        help_text="Pokud není odkazovaná stránka na Majáku, použij možnost zadání samotné adresy níže.",
+                                                        label="Titulek",
+                                                        required=True,
+                                                    ),
+                                                ),
+                                                (
+                                                    "page",
+                                                    wagtail.blocks.PageChooserBlock(
+                                                        label="Stránka", required=False
+                                                    ),
+                                                ),
+                                                (
+                                                    "link",
+                                                    wagtail.blocks.URLBlock(
+                                                        label="Odkaz", required=False
+                                                    ),
+                                                ),
+                                            ]
+                                        ),
+                                        label="Položky menu",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                ],
+                blank=True,
+                verbose_name="Položky",
+            ),
         ),
     ]
diff --git a/majak/settings/base.py b/majak/settings/base.py
index 7c903eee3d4a0a3970543aea4a1465f1e234ac31..a81f7b5ea40c049c83923655f3af19fac22eec5e 100644
--- a/majak/settings/base.py
+++ b/majak/settings/base.py
@@ -227,7 +227,7 @@ WAGTAIL_SITE_NAME = "Maják"
 WAGTAIL_USER_TIME_ZONES = ["Europe/Prague"]
 WAGTAIL_ALLOW_UNICODE_SLUGS = False
 WAGTAILADMIN_NOTIFICATION_INCLUDE_SUPERUSERS = False
-WAGTAILIMAGES_FEATURE_DETECTION_ENABLED = True
+WAGTAILIMAGES_FEATURE_DETECTION_ENABLED = False
 WAGTAILIMAGES_INDEX_PAGE_SIZE = 30
 WAGTAILIMAGES_USAGE_PAGE_SIZE = 30
 WAGTAILIMAGES_CHOOSER_PAGE_SIZE = 15
diff --git a/shared/blocks/base.py b/shared/blocks/base.py
index e54da16a8829069fd7325d007c491759395d6041..78058310e62eefedb297386de56991655642d83d 100644
--- a/shared/blocks/base.py
+++ b/shared/blocks/base.py
@@ -51,7 +51,7 @@ class MenuItemBlock(blocks.StructBlock):
     title = blocks.CharBlock(
         label="Titulek",
         help_text="Pokud není odkazovaná stránka na Majáku, použij možnost zadání samotné adresy níže.",
-        required=True
+        required=True,
     )
     page = blocks.PageChooserBlock(label="Stránka", required=False)
     link = blocks.URLBlock(label="Odkaz", required=False)
diff --git a/shared/blocks/main.py b/shared/blocks/main.py
index 011d8b90ecc9b71aa5c009978ede55c78e1e1f78..cc5adf39d7dd0bccbcb5b7096809474984156b2d 100644
--- a/shared/blocks/main.py
+++ b/shared/blocks/main.py
@@ -1,5 +1,4 @@
 from django.utils.text import slugify
-from wagtail import blocks
 from wagtail.blocks import (
     CharBlock,
     ListBlock,
@@ -12,7 +11,6 @@ from wagtail.blocks import (
 from wagtail.documents.blocks import DocumentChooserBlock
 from wagtail.images.blocks import ImageChooserBlock
 
-from .base import MenuItemBlock as MenuItemBlockBase
 
 # Mixins (or used as such)
 
@@ -256,7 +254,10 @@ class PeopleOverviewBlock(StructBlock):
 
 
 class ProgramGroupBlockMixin(StructBlock):
-    title = CharBlock(label="Titulek části programu")
+    title = CharBlock(
+        label="Název programu",
+        help_text="Např. 'Krajské volby 2024', 'Evropské volby 2024', ..."
+    )
     # point_list = ListBlock(ProgramBlock(), label="Jednotlivé články programu")
 
     class Meta:
@@ -357,12 +358,12 @@ class CandidateListBlock(StructBlock):
 
 
 class CandidateSecondaryListBlock(StructBlock):
-    heading = CharBlock(label="Nadpis")
+    heading = CharBlock(label="Nadpis zbytku kandidátky", default="Ostatní kandidátky")
 
     # NOTE: should be changed in mixed-in blocks.
     candidates = ListBlock(
         SecondaryCandidateBlock(),
-        label="Kandidáti",
+        label="Zbylí kandidáti na listině",
     )
 
     class Meta:
diff --git a/shared/models/main.py b/shared/models/main.py
index 4b8e7c70a08ecf34c7f53f9fd93e5cc468387f28..e5499c570d84879e408a2e6b580dfaa6a7aa0f6a 100644
--- a/shared/models/main.py
+++ b/shared/models/main.py
@@ -196,10 +196,7 @@ class MainMenuMixin(Page):
     )
 
     menu = StreamField(
-        [
-            ("menu_item", MenuItemBlock()),
-            ("menu_parent", MenuParentBlock())
-        ],
+        [("menu_item", MenuItemBlock()), ("menu_parent", MenuParentBlock())],
         verbose_name="Položky",
         blank=True,
         use_json_field=True,
diff --git a/shared/static/styleguide2/pirati-ui.svg b/shared/static/styleguide2/pirati-ui.svg
index ffc20eccf43c3d89476c0124b2475cd314fe2ecd..c6e3a71ad07f5229dda5d69c9289dc5ce339be12 100644
--- a/shared/static/styleguide2/pirati-ui.svg
+++ b/shared/static/styleguide2/pirati-ui.svg
@@ -127,4 +127,4 @@
 <glyph unicode="&#xe976;" glyph-name="price-tags" horiz-adv-x="1280" d="M1232 960h-384c-26.4 0-63.274-15.274-81.942-33.942l-476.116-476.116c-18.668-18.668-18.668-49.214 0-67.882l412.118-412.118c18.668-18.668 49.214-18.668 67.882 0l476.118 476.118c18.666 18.666 33.94 55.54 33.94 81.94v384c0 26.4-21.6 48-48 48zM992 576c-53.020 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96-42.98-96-96-96zM128 416l544 544h-80c-26.4 0-63.274-15.274-81.942-33.942l-476.116-476.116c-18.668-18.668-18.668-49.214 0-67.882l412.118-412.118c18.668-18.668 49.214-18.668 67.882 0l30.058 30.058-416 416z" />
 <glyph unicode="&#xe977;" glyph-name="twitter" horiz-adv-x="1001" d="M596.009 526.629l372.819 433.371h-88.346l-323.718-376.29-258.553 376.29h-298.21l390.983-569.018-390.983-454.457h88.351l341.855 397.375 273.051-397.375h298.21l-405.458 590.103zM475 385.969l-354.815 507.521h135.702l624.636-893.48h-135.702l-269.821 385.959z" />
 <glyph unicode="&#xe99b;" glyph-name="stats-dots" d="M128 64h896v-128h-1024v1024h128zM288 128c-53.020 0-96 42.98-96 96s42.98 96 96 96c2.828 0 5.622-0.148 8.388-0.386l103.192 171.986c-9.84 15.070-15.58 33.062-15.58 52.402 0 53.020 42.98 96 96 96s96-42.98 96-96c0-19.342-5.74-37.332-15.58-52.402l103.192-171.986c2.766 0.238 5.56 0.386 8.388 0.386 2.136 0 4.248-0.094 6.35-0.23l170.356 298.122c-10.536 15.408-16.706 34.036-16.706 54.11 0 53.020 42.98 96 96 96s96-42.98 96-96c0-53.020-42.98-96-96-96-2.14 0-4.248 0.094-6.35 0.232l-170.356-298.124c10.536-15.406 16.706-34.036 16.706-54.11 0-53.020-42.98-96-96-96s-96 42.98-96 96c0 19.34 5.74 37.332 15.578 52.402l-103.19 171.984c-2.766-0.238-5.56-0.386-8.388-0.386s-5.622 0.146-8.388 0.386l-103.192-171.986c9.84-15.068 15.58-33.060 15.58-52.4 0-53.020-42.98-96-96-96z" />
-</font></defs></svg>
\ No newline at end of file
+</font></defs></svg>
diff --git a/shared/templates/styleguide2/includes/atoms/dropdown/dropdown_item.html b/shared/templates/styleguide2/includes/atoms/dropdown/dropdown_item.html
index 269c90310a2d958098daae6d71017f0645999928..5fa42b798b89d1d3d14a0c17e26082519f8a045f 100644
--- a/shared/templates/styleguide2/includes/atoms/dropdown/dropdown_item.html
+++ b/shared/templates/styleguide2/includes/atoms/dropdown/dropdown_item.html
@@ -2,4 +2,4 @@
   <a href="{{ url }}">
     {{ title }}
   </a>
-</li>
\ No newline at end of file
+</li>
diff --git a/shared/templates/styleguide2/includes/molecules/dropdown/dropdown.html b/shared/templates/styleguide2/includes/molecules/dropdown/dropdown.html
index 896e8d713c3b8c5da6b0cae4b2d77d1ee785c75d..2f91e9860f1fb888736f75dd38c0b49b3044a453 100644
--- a/shared/templates/styleguide2/includes/molecules/dropdown/dropdown.html
+++ b/shared/templates/styleguide2/includes/molecules/dropdown/dropdown.html
@@ -19,4 +19,4 @@
       {% include "styleguide2/includes/atoms/dropdown/dropdown_item.html" with title=item.title url=url %}
     {% endfor %}
   </ul>
-</div>
\ No newline at end of file
+</div>