diff --git a/elections/migrations/0001_initial.py b/elections/migrations/0001_initial.py
index 903d74d1f960d57f9bda7f424d8075a72bdca4dc..87462623935b0c68c040059d3ae02787cea31280 100644
--- a/elections/migrations/0001_initial.py
+++ b/elections/migrations/0001_initial.py
@@ -1,282 +1,163 @@
-# Generated by Django 4.1.10 on 2024-01-04 15:23
+# Generated by Django 4.1.10 on 2024-01-06 16:43
 
+from django.db import migrations, models
 import django.db.models.deletion
+import django.utils.timezone
+import modelcluster.fields
+import shared.blocks.main
+import shared.models.base
 import wagtail.blocks
 import wagtail.contrib.routable_page.models
+import wagtail.documents.blocks
 import wagtail.fields
+import wagtail.images.blocks
 import wagtailmetadata.models
-from django.db import migrations, models
-
-import shared.blocks.main
-import shared.models.base
 
 
 class Migration(migrations.Migration):
+
     initial = True
 
     dependencies = [
-        ("wagtailcore", "0083_workflowcontenttype"),
-        ("wagtailimages", "0025_alter_image_file_alter_rendition_file"),
-        ("main", "0066_alter_mainarticlepage_content_and_more"),
+        ('main', '0065_alter_mainarticlepage_content_and_more'),
+        ('wagtailimages', '0025_alter_image_file_alter_rendition_file'),
+        ('shared', '0003_initial'),
+        ('calendar_utils', '0004_auto_20220505_1228'),
+        ('taggit', '0005_auto_20220424_2025'),
+        ('wagtailcore', '0083_workflowcontenttype'),
     ]
 
     operations = [
         migrations.CreateModel(
-            name="ElectionsHomePage",
+            name='ElectionsArticlePage',
+            fields=[
+                ('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.page')),
+                ('date', models.DateField(default=django.utils.timezone.now, verbose_name='datum')),
+                ('perex', models.TextField(verbose_name='perex')),
+                ('author', models.CharField(blank=True, max_length=250, null=True, verbose_name='autor')),
+                ('shared_type', models.TextField(blank=True, null=True)),
+                ('content', wagtail.fields.StreamField([('text', wagtail.blocks.RichTextBlock(template='styleguide2/includes/atoms/text/prose_richtext.html')), ('quote', wagtail.blocks.StructBlock([('quote', wagtail.blocks.CharBlock(label='Citace')), ('autor_name', wagtail.blocks.CharBlock(label='Jméno autora'))])), ('download', wagtail.blocks.StructBlock([('file', wagtail.documents.blocks.DocumentChooserBlock(label='Stáhnutelný soubor'))]))], blank=True, use_json_field=True, verbose_name='Článek')),
+            ],
+            options={
+                'verbose_name': 'Aktualita',
+                'abstract': False,
+            },
+            bases=(shared.models.base.SubpageMixin, wagtailmetadata.models.WagtailImageMetadataMixin, 'wagtailcore.page', models.Model),
+        ),
+        migrations.CreateModel(
+            name='ElectionsSearchPage',
+            fields=[
+                ('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.page')),
+                ('search_image', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wagtailimages.image', verbose_name='Search image')),
+            ],
+            options={
+                'verbose_name': 'Vyhledávací stránka',
+                'abstract': False,
+            },
+            bases=(shared.models.base.SubpageMixin, wagtailmetadata.models.WagtailImageMetadataMixin, 'wagtailcore.page', models.Model),
+        ),
+        migrations.CreateModel(
+            name='ElectionsHomePage',
+            fields=[
+                ('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.page')),
+                ('title_suffix', models.CharField(blank=True, help_text="Umožňuje přidat příponu k základnímu titulku stránky. Pokud je např. titulek stránky pojmenovaný 'Kontakt' a do přípony vyplníte 'MS Pardubice | Piráti', výsledný titulek bude 'Kontakt | MS Pardubice | Piráti'. Pokud příponu nevyplníte, použije se název webu.", max_length=100, null=True, verbose_name='Přípona titulku stránky')),
+                ('important_item_name', models.CharField(blank=True, help_text='Pokud není odkazovaná stránka na Majáku, použij možnost zadání samotné adresy níže.', max_length=16, null=True, verbose_name='Jméno')),
+                ('important_item_url', models.URLField(blank=True, null=True, verbose_name='Adresa')),
+                ('menu', 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))]))], blank=True, use_json_field=True, verbose_name='Položky')),
+                ('menu_button_name', models.CharField(max_length=16, verbose_name='Text na tlačítku pro zapojení')),
+                ('menu_button_content', wagtail.fields.StreamField([('navbar_menu_item', wagtail.blocks.StructBlock([('button_link', wagtail.blocks.URLBlock(label='Odkaz tlačítka')), ('button_text', wagtail.blocks.CharBlock(label='Text tlačítka'))]))], blank=True, use_json_field=True, verbose_name='Obsah menu pro zapojení se')),
+                ('footer_other_links', wagtail.fields.StreamField([('other_links', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(label='Titulek')), ('list', wagtail.blocks.ListBlock(shared.blocks.main.LinkBlock, label='Seznam odkazů s titulkem'))]))], blank=True, use_json_field=True, verbose_name='Odkazy v zápatí webu')),
+                ('footer_person_list', wagtail.fields.StreamField([('person', wagtail.blocks.StructBlock([('position', wagtail.blocks.CharBlock(label='Název pozice', required=False)), ('person', wagtail.blocks.PageChooserBlock(label='Osoba', page_type=['main.MainPersonPage']))]))], blank=True, use_json_field=True, verbose_name='Osoby v zápatí webu')),
+                ('matomo_id', models.IntegerField(blank=True, null=True, verbose_name='Matomo ID pro sledování návštěvnosti')),
+                ('social_links', wagtail.fields.StreamField([('social_links', wagtail.blocks.StructBlock([('text', wagtail.blocks.CharBlock(label='Název')), ('link', wagtail.blocks.URLBlock(label='Odkaz')), ('icon', wagtail.blocks.CharBlock(help_text='Seznam ikon - https://styleguide.pirati.cz/latest/?p=viewall-atoms-icons <br/>Název ikony zadejte bez tečky na začátku', label='Ikona'))]))], blank=True, use_json_field=True, verbose_name='Odkazy na sociální sítě')),
+                ('content', wagtail.fields.StreamField([('carousel', wagtail.blocks.StructBlock([('image', wagtail.images.blocks.ImageChooserBlock(label='Obrázek na pozadí'))])), ('candidate', wagtail.blocks.StructBlock([('candidates', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('page', wagtail.blocks.PageChooserBlock(label='Stránka', page_type=['elections.ElectionsCandidatePage'])), ('image', wagtail.images.blocks.ImageChooserBlock(help_text='Pokud není vybrán, použije se obrázek ze stránky kandidáta', label='Obrázek', required=False)), ('description', wagtail.blocks.TextBlock(label='Popis'))]), label='Kandidáti'))])), ('program', wagtail.blocks.StructBlock([('categories', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('number', wagtail.blocks.IntegerBlock(label='Číslo')), ('name', wagtail.blocks.CharBlock(label='Název')), ('points', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('number', wagtail.blocks.IntegerBlock(label='Číslo')), ('content', wagtail.blocks.TextBlock(label='Obsah'))]), label='Body'))]), label='Kategorie')), ('long_version_url', wagtail.blocks.URLBlock(label='Odkaz na celou verzi programu')), ('long_version_text', wagtail.blocks.CharBlock(label='Nadpis odkazu na celou verzi programu'))])), ('news', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(help_text='Nejnovější články se načtou automaticky', label='Titulek')), ('description', wagtail.blocks.TextBlock(label='Popis'))], template='styleguide2/includes/organisms/articles/elections/articles_section.html'))], blank=True, use_json_field=True, verbose_name='Hlavní obsah')),
+                ('gdpr_and_cookies_page', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='main.mainsimplepage', verbose_name='Stránka pro GDPR')),
+                ('important_item_page', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='wagtailcore.page', verbose_name='Stránka')),
+                ('search_image', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wagtailimages.image', verbose_name='Search image')),
+            ],
+            options={
+                'verbose_name': 'Volební web',
+            },
+            bases=(wagtail.contrib.routable_page.models.RoutablePageMixin, wagtailmetadata.models.WagtailImageMetadataMixin, shared.models.base.ArticlesMixin, 'wagtailcore.page', models.Model),
+        ),
+        migrations.CreateModel(
+            name='ElectionsCandidatesPage',
+            fields=[
+                ('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.page')),
+                ('calendar_url', models.URLField(blank=True, help_text='Kalendář se po uložení stránky aktualizuje na pozadí. U plnějších kalendářů to může trvat i desítky sekund.', null=True, verbose_name='URL kalendáře ve formátu iCal')),
+                ('calendar', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='calendar_utils.calendar')),
+                ('search_image', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wagtailimages.image', verbose_name='Search image')),
+            ],
+            options={
+                'verbose_name': 'Kandidáti',
+            },
+            bases=(shared.models.base.SubpageMixin, wagtailmetadata.models.WagtailImageMetadataMixin, 'wagtailcore.page', models.Model),
+        ),
+        migrations.CreateModel(
+            name='ElectionsCandidatePage',
+            fields=[
+                ('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.page')),
+                ('calendar_url', models.URLField(blank=True, help_text='Kalendář se po uložení stránky aktualizuje na pozadí. U plnějších kalendářů to může trvat i desítky sekund.', null=True, verbose_name='URL kalendáře ve formátu iCal')),
+                ('position', models.CharField(blank=True, max_length=64, null=True, verbose_name='Pozice/povolání')),
+                ('perex', wagtail.fields.RichTextField()),
+                ('email', models.CharField(blank=True, max_length=128, null=True, verbose_name='E-mail')),
+                ('phone', models.CharField(blank=True, max_length=16, null=True, verbose_name='Telefonní kontakt')),
+                ('social_links', wagtail.fields.StreamField([('social_links', wagtail.blocks.StructBlock([('text', wagtail.blocks.CharBlock(label='Název')), ('link', wagtail.blocks.URLBlock(label='Odkaz')), ('icon', wagtail.blocks.CharBlock(help_text='Seznam ikon - https://styleguide.pirati.cz/latest/?p=viewall-atoms-icons <br/>Název ikony zadejte bez tečky na začátku', label='Ikona'))]))], blank=True, use_json_field=True, verbose_name='Odkazy na sociální sítě')),
+                ('articles_heading', models.CharField(help_text='Např. "Aktuality Mikuláše Peksy".', max_length=32, verbose_name='Nadpis sekce s články')),
+                ('related_candidates', wagtail.fields.StreamField([('candidate', wagtail.blocks.PageChooserBlock(label='Detail kandidáta', page_type=['elections.ElectionsCandidatePage']))], blank=True, use_json_field=True, verbose_name='Další kandidáti')),
+                ('calendar', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='calendar_utils.calendar')),
+                ('image', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='wagtailimages.image', verbose_name='Obrázek')),
+                ('search_image', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wagtailimages.image', verbose_name='Search image')),
+            ],
+            options={
+                'verbose_name': 'Kandidát',
+            },
+            bases=(shared.models.base.SubpageMixin, wagtailmetadata.models.WagtailImageMetadataMixin, 'wagtailcore.page', models.Model),
+        ),
+        migrations.CreateModel(
+            name='ElectionsArticleTag',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('content_object', modelcluster.fields.ParentalKey(on_delete=django.db.models.deletion.CASCADE, related_name='elections_tagged_items', to='elections.electionsarticlepage')),
+                ('tag', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='%(app_label)s_%(class)s_items', to='taggit.tag')),
+            ],
+            options={
+                'abstract': False,
+            },
+        ),
+        migrations.CreateModel(
+            name='ElectionsArticlesPage',
             fields=[
-                (
-                    "page_ptr",
-                    models.OneToOneField(
-                        auto_created=True,
-                        on_delete=django.db.models.deletion.CASCADE,
-                        parent_link=True,
-                        primary_key=True,
-                        serialize=False,
-                        to="wagtailcore.page",
-                    ),
-                ),
-                (
-                    "title_suffix",
-                    models.CharField(
-                        blank=True,
-                        help_text="Umožňuje přidat příponu k základnímu titulku stránky. Pokud je např. titulek stránky pojmenovaný 'Kontakt' a do přípony vyplníte 'MS Pardubice | Piráti', výsledný titulek bude 'Kontakt | MS Pardubice | Piráti'. Pokud příponu nevyplníte, použije se název webu.",
-                        max_length=100,
-                        null=True,
-                        verbose_name="Přípona titulku stránky",
-                    ),
-                ),
-                (
-                    "important_item_name",
-                    models.CharField(
-                        blank=True,
-                        help_text="Pokud není odkazovaná stránka na Majáku, použij možnost zadání samotné adresy níže.",
-                        max_length=16,
-                        null=True,
-                        verbose_name="Jméno",
-                    ),
-                ),
-                (
-                    "important_item_url",
-                    models.URLField(blank=True, null=True, verbose_name="Adresa"),
-                ),
-                (
-                    "menu",
-                    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
-                                            ),
-                                        ),
-                                    ]
-                                ),
-                            )
-                        ],
-                        blank=True,
-                        use_json_field=True,
-                        verbose_name="Položky",
-                    ),
-                ),
-                (
-                    "menu_button_name",
-                    models.CharField(
-                        max_length=16, verbose_name="Text na tlačítku pro zapojení"
-                    ),
-                ),
-                (
-                    "menu_button_content",
-                    wagtail.fields.StreamField(
-                        [
-                            (
-                                "navbar_menu_item",
-                                wagtail.blocks.StructBlock(
-                                    [
-                                        (
-                                            "button_link",
-                                            wagtail.blocks.URLBlock(
-                                                label="Odkaz tlačítka"
-                                            ),
-                                        ),
-                                        (
-                                            "button_text",
-                                            wagtail.blocks.CharBlock(
-                                                label="Text tlačítka"
-                                            ),
-                                        ),
-                                    ]
-                                ),
-                            )
-                        ],
-                        blank=True,
-                        use_json_field=True,
-                        verbose_name="Obsah menu pro zapojení se",
-                    ),
-                ),
-                (
-                    "footer_other_links",
-                    wagtail.fields.StreamField(
-                        [
-                            (
-                                "other_links",
-                                wagtail.blocks.StructBlock(
-                                    [
-                                        (
-                                            "title",
-                                            wagtail.blocks.CharBlock(label="Titulek"),
-                                        ),
-                                        (
-                                            "list",
-                                            wagtail.blocks.ListBlock(
-                                                shared.blocks.main.LinkBlock,
-                                                label="Seznam odkazů s titulkem",
-                                            ),
-                                        ),
-                                    ]
-                                ),
-                            )
-                        ],
-                        blank=True,
-                        use_json_field=True,
-                        verbose_name="Odkazy v zápatí webu",
-                    ),
-                ),
-                (
-                    "footer_person_list",
-                    wagtail.fields.StreamField(
-                        [
-                            (
-                                "person",
-                                wagtail.blocks.StructBlock(
-                                    [
-                                        (
-                                            "position",
-                                            wagtail.blocks.CharBlock(
-                                                label="Název pozice", required=False
-                                            ),
-                                        ),
-                                        (
-                                            "person",
-                                            wagtail.blocks.PageChooserBlock(
-                                                label="Osoba",
-                                                page_type=["main.MainPersonPage"],
-                                            ),
-                                        ),
-                                    ]
-                                ),
-                            )
-                        ],
-                        blank=True,
-                        use_json_field=True,
-                        verbose_name="Osoby v zápatí webu",
-                    ),
-                ),
-                (
-                    "matomo_id",
-                    models.IntegerField(
-                        blank=True,
-                        null=True,
-                        verbose_name="Matomo ID pro sledování návštěvnosti",
-                    ),
-                ),
-                (
-                    "social_links",
-                    wagtail.fields.StreamField(
-                        [
-                            (
-                                "social_links",
-                                wagtail.blocks.StructBlock(
-                                    [
-                                        (
-                                            "text",
-                                            wagtail.blocks.CharBlock(label="Název"),
-                                        ),
-                                        (
-                                            "link",
-                                            wagtail.blocks.URLBlock(label="Odkaz"),
-                                        ),
-                                        (
-                                            "icon",
-                                            wagtail.blocks.CharBlock(
-                                                help_text="Seznam ikon - https://styleguide.pirati.cz/latest/?p=viewall-atoms-icons <br/>Název ikony zadejte bez tečky na začátku",
-                                                label="Ikona",
-                                            ),
-                                        ),
-                                    ]
-                                ),
-                            )
-                        ],
-                        blank=True,
-                        use_json_field=True,
-                        verbose_name="Odkazy na sociální sítě",
-                    ),
-                ),
-                (
-                    "content",
-                    wagtail.fields.StreamField(
-                        [], blank=True, use_json_field=True, verbose_name="Hlavní obsah"
-                    ),
-                ),
-                (
-                    "gdpr_and_cookies_page",
-                    models.ForeignKey(
-                        blank=True,
-                        null=True,
-                        on_delete=django.db.models.deletion.PROTECT,
-                        to="main.mainsimplepage",
-                        verbose_name="Stránka pro GDPR",
-                    ),
-                ),
-                (
-                    "important_item_page",
-                    models.ForeignKey(
-                        blank=True,
-                        null=True,
-                        on_delete=django.db.models.deletion.PROTECT,
-                        related_name="+",
-                        to="wagtailcore.page",
-                        verbose_name="Stránka",
-                    ),
-                ),
-                (
-                    "search_image",
-                    models.ForeignKey(
-                        blank=True,
-                        null=True,
-                        on_delete=django.db.models.deletion.SET_NULL,
-                        related_name="+",
-                        to="wagtailimages.image",
-                        verbose_name="Search image",
-                    ),
-                ),
+                ('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.page')),
+                ('last_import_log', models.TextField(blank=True, null=True, verbose_name='Výstup z posledního importu')),
+                ('perex', models.TextField()),
+                ('search_image', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wagtailimages.image', verbose_name='Search image')),
+                ('shared_tags', modelcluster.fields.ParentalManyToManyField(blank=True, help_text='Pro výběr jednoho tagu klikněte na tag a uložte nebo publikujte stránku. Pro výběr více tagů využijte podržte Ctrl a vyberte příslušné tagy.', to='shared.sharedtag', verbose_name='Výběr tagů pro články sdílené mezi sítěmi')),
             ],
             options={
-                "verbose_name": "Web pro volby",
+                'verbose_name': 'Rozcestník článků',
+                'abstract': False,
             },
-            bases=(
-                wagtail.contrib.routable_page.models.RoutablePageMixin,
-                wagtailmetadata.models.WagtailImageMetadataMixin,
-                shared.models.base.ArticlesMixin,
-                "wagtailcore.page",
-                models.Model,
-            ),
+            bases=(wagtail.contrib.routable_page.models.RoutablePageMixin, shared.models.base.SubpageMixin, wagtailmetadata.models.WagtailImageMetadataMixin, shared.models.base.ArticlesMixin, 'wagtailcore.page', models.Model),
+        ),
+        migrations.AddField(
+            model_name='electionsarticlepage',
+            name='author_page',
+            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='elections.electionscandidatepage', verbose_name='Stránka autora (kandidáta)'),
+        ),
+        migrations.AddField(
+            model_name='electionsarticlepage',
+            name='image',
+            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='wagtailimages.image', verbose_name='obrázek'),
+        ),
+        migrations.AddField(
+            model_name='electionsarticlepage',
+            name='search_image',
+            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wagtailimages.image', verbose_name='Search image'),
+        ),
+        migrations.AddField(
+            model_name='electionsarticlepage',
+            name='shared_from',
+            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='wagtailcore.page'),
         ),
     ]
diff --git a/elections/migrations/0002_electionsarticlespage.py b/elections/migrations/0002_electionsarticlespage.py
deleted file mode 100644
index 93c6c9e790c88d61fbe2232391f319b0f793a946..0000000000000000000000000000000000000000
--- a/elections/migrations/0002_electionsarticlespage.py
+++ /dev/null
@@ -1,78 +0,0 @@
-# Generated by Django 4.1.10 on 2024-01-04 15:24
-
-import django.db.models.deletion
-import modelcluster.fields
-import wagtail.contrib.routable_page.models
-import wagtailmetadata.models
-from django.db import migrations, models
-
-import shared.models.base
-
-
-class Migration(migrations.Migration):
-    dependencies = [
-        ("wagtailcore", "0083_workflowcontenttype"),
-        ("shared", "0003_initial"),
-        ("wagtailimages", "0025_alter_image_file_alter_rendition_file"),
-        ("elections", "0001_initial"),
-    ]
-
-    operations = [
-        migrations.CreateModel(
-            name="ElectionsArticlesPage",
-            fields=[
-                (
-                    "page_ptr",
-                    models.OneToOneField(
-                        auto_created=True,
-                        on_delete=django.db.models.deletion.CASCADE,
-                        parent_link=True,
-                        primary_key=True,
-                        serialize=False,
-                        to="wagtailcore.page",
-                    ),
-                ),
-                (
-                    "last_import_log",
-                    models.TextField(
-                        blank=True,
-                        null=True,
-                        verbose_name="Výstup z posledního importu",
-                    ),
-                ),
-                ("perex", models.TextField()),
-                (
-                    "search_image",
-                    models.ForeignKey(
-                        blank=True,
-                        null=True,
-                        on_delete=django.db.models.deletion.SET_NULL,
-                        related_name="+",
-                        to="wagtailimages.image",
-                        verbose_name="Search image",
-                    ),
-                ),
-                (
-                    "shared_tags",
-                    modelcluster.fields.ParentalManyToManyField(
-                        blank=True,
-                        help_text="Pro výběr jednoho tagu klikněte na tag a uložte nebo publikujte stránku. Pro výběr více tagů využijte podržte Ctrl a vyberte příslušné tagy.",
-                        to="shared.sharedtag",
-                        verbose_name="Výběr tagů pro články sdílené mezi sítěmi",
-                    ),
-                ),
-            ],
-            options={
-                "verbose_name": "Rozcestník článků",
-                "abstract": False,
-            },
-            bases=(
-                wagtail.contrib.routable_page.models.RoutablePageMixin,
-                shared.models.base.SubpageMixin,
-                wagtailmetadata.models.WagtailImageMetadataMixin,
-                shared.models.base.ArticlesMixin,
-                "wagtailcore.page",
-                models.Model,
-            ),
-        ),
-    ]
diff --git a/elections/migrations/0002_initial.py b/elections/migrations/0002_initial.py
new file mode 100644
index 0000000000000000000000000000000000000000..6851ae7e80e1749df9d05793da0781db177b180e
--- /dev/null
+++ b/elections/migrations/0002_initial.py
@@ -0,0 +1,28 @@
+# Generated by Django 4.1.10 on 2024-01-06 16:43
+
+from django.db import migrations
+import modelcluster.contrib.taggit
+
+
+class Migration(migrations.Migration):
+
+    initial = True
+
+    dependencies = [
+        ('taggit', '0005_auto_20220424_2025'),
+        ('elections', '0001_initial'),
+        ('shared', '0004_sharedtaggedelectionsarticle'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='electionsarticlepage',
+            name='shared_tags',
+            field=modelcluster.contrib.taggit.ClusterTaggableManager(blank=True, help_text='A comma-separated list of tags.', through='shared.SharedTaggedElectionsArticle', to='shared.SharedTag', verbose_name='Tagy pro sdílení mezi weby'),
+        ),
+        migrations.AddField(
+            model_name='electionsarticlepage',
+            name='tags',
+            field=modelcluster.contrib.taggit.ClusterTaggableManager(blank=True, help_text='A comma-separated list of tags.', through='elections.ElectionsArticleTag', to='taggit.Tag', verbose_name='Tags'),
+        ),
+    ]
diff --git a/elections/migrations/0003_electionsarticlepage_electionssearchpage_and_more.py b/elections/migrations/0003_electionsarticlepage_electionssearchpage_and_more.py
deleted file mode 100644
index 7301da6ad3e408d5cdcb1fc0bbdf807db8d40339..0000000000000000000000000000000000000000
--- a/elections/migrations/0003_electionsarticlepage_electionssearchpage_and_more.py
+++ /dev/null
@@ -1,245 +0,0 @@
-# Generated by Django 4.1.10 on 2024-01-04 15:26
-
-import django.db.models.deletion
-import django.utils.timezone
-import modelcluster.contrib.taggit
-import modelcluster.fields
-import wagtail.blocks
-import wagtail.documents.blocks
-import wagtail.fields
-import wagtailmetadata.models
-from django.db import migrations, models
-
-import shared.models.base
-
-
-class Migration(migrations.Migration):
-    dependencies = [
-        ("main", "0067_alter_mainarticletag_content_object"),
-        ("wagtailimages", "0025_alter_image_file_alter_rendition_file"),
-        ("taggit", "0005_auto_20220424_2025"),
-        ("wagtailcore", "0083_workflowcontenttype"),
-        ("shared", "0003_initial"),
-        ("elections", "0002_electionsarticlespage"),
-    ]
-
-    operations = [
-        migrations.CreateModel(
-            name="ElectionsArticlePage",
-            fields=[
-                (
-                    "page_ptr",
-                    models.OneToOneField(
-                        auto_created=True,
-                        on_delete=django.db.models.deletion.CASCADE,
-                        parent_link=True,
-                        primary_key=True,
-                        serialize=False,
-                        to="wagtailcore.page",
-                    ),
-                ),
-                (
-                    "date",
-                    models.DateField(
-                        default=django.utils.timezone.now, verbose_name="datum"
-                    ),
-                ),
-                ("perex", models.TextField(verbose_name="perex")),
-                (
-                    "author",
-                    models.CharField(
-                        blank=True, max_length=250, null=True, verbose_name="autor"
-                    ),
-                ),
-                ("shared_type", models.TextField(blank=True, null=True)),
-                (
-                    "content",
-                    wagtail.fields.StreamField(
-                        [
-                            (
-                                "text",
-                                wagtail.blocks.RichTextBlock(
-                                    template="styleguide2/includes/atoms/text/prose_richtext.html"
-                                ),
-                            ),
-                            (
-                                "quote",
-                                wagtail.blocks.StructBlock(
-                                    [
-                                        (
-                                            "quote",
-                                            wagtail.blocks.CharBlock(label="Citace"),
-                                        ),
-                                        (
-                                            "autor_name",
-                                            wagtail.blocks.CharBlock(
-                                                label="Jméno autora"
-                                            ),
-                                        ),
-                                    ]
-                                ),
-                            ),
-                            (
-                                "download",
-                                wagtail.blocks.StructBlock(
-                                    [
-                                        (
-                                            "file",
-                                            wagtail.documents.blocks.DocumentChooserBlock(
-                                                label="Stáhnutelný soubor"
-                                            ),
-                                        )
-                                    ]
-                                ),
-                            ),
-                        ],
-                        blank=True,
-                        use_json_field=True,
-                        verbose_name="Článek",
-                    ),
-                ),
-                (
-                    "author_page",
-                    models.ForeignKey(
-                        blank=True,
-                        null=True,
-                        on_delete=django.db.models.deletion.SET_NULL,
-                        to="main.mainpersonpage",
-                        verbose_name="Stránka autora (osoby)",
-                    ),
-                ),
-                (
-                    "image",
-                    models.ForeignKey(
-                        blank=True,
-                        null=True,
-                        on_delete=django.db.models.deletion.PROTECT,
-                        to="wagtailimages.image",
-                        verbose_name="obrázek",
-                    ),
-                ),
-                (
-                    "search_image",
-                    models.ForeignKey(
-                        blank=True,
-                        null=True,
-                        on_delete=django.db.models.deletion.SET_NULL,
-                        related_name="+",
-                        to="wagtailimages.image",
-                        verbose_name="Search image",
-                    ),
-                ),
-                (
-                    "shared_from",
-                    models.ForeignKey(
-                        blank=True,
-                        null=True,
-                        on_delete=django.db.models.deletion.PROTECT,
-                        related_name="+",
-                        to="wagtailcore.page",
-                    ),
-                ),
-                (
-                    "shared_tags",
-                    modelcluster.contrib.taggit.ClusterTaggableManager(
-                        blank=True,
-                        help_text="A comma-separated list of tags.",
-                        through="shared.SharedTaggedMainArticle",
-                        to="shared.SharedTag",
-                        verbose_name="Tagy pro sdílení mezi weby",
-                    ),
-                ),
-            ],
-            options={
-                "verbose_name": "Aktualita",
-                "abstract": False,
-            },
-            bases=(
-                shared.models.base.SubpageMixin,
-                wagtailmetadata.models.WagtailImageMetadataMixin,
-                "wagtailcore.page",
-                models.Model,
-            ),
-        ),
-        migrations.CreateModel(
-            name="ElectionsSearchPage",
-            fields=[
-                (
-                    "page_ptr",
-                    models.OneToOneField(
-                        auto_created=True,
-                        on_delete=django.db.models.deletion.CASCADE,
-                        parent_link=True,
-                        primary_key=True,
-                        serialize=False,
-                        to="wagtailcore.page",
-                    ),
-                ),
-                (
-                    "search_image",
-                    models.ForeignKey(
-                        blank=True,
-                        null=True,
-                        on_delete=django.db.models.deletion.SET_NULL,
-                        related_name="+",
-                        to="wagtailimages.image",
-                        verbose_name="Search image",
-                    ),
-                ),
-            ],
-            options={
-                "verbose_name": "Vyhledávací stránka",
-                "abstract": False,
-            },
-            bases=(
-                shared.models.base.SubpageMixin,
-                wagtailmetadata.models.WagtailImageMetadataMixin,
-                "wagtailcore.page",
-                models.Model,
-            ),
-        ),
-        migrations.CreateModel(
-            name="ElectionsArticleTag",
-            fields=[
-                (
-                    "id",
-                    models.AutoField(
-                        auto_created=True,
-                        primary_key=True,
-                        serialize=False,
-                        verbose_name="ID",
-                    ),
-                ),
-                (
-                    "content_object",
-                    modelcluster.fields.ParentalKey(
-                        on_delete=django.db.models.deletion.CASCADE,
-                        related_name="elections_tagged_items",
-                        to="elections.electionsarticlepage",
-                    ),
-                ),
-                (
-                    "tag",
-                    models.ForeignKey(
-                        on_delete=django.db.models.deletion.CASCADE,
-                        related_name="%(app_label)s_%(class)s_items",
-                        to="taggit.tag",
-                    ),
-                ),
-            ],
-            options={
-                "abstract": False,
-            },
-        ),
-        migrations.AddField(
-            model_name="electionsarticlepage",
-            name="tags",
-            field=modelcluster.contrib.taggit.ClusterTaggableManager(
-                blank=True,
-                help_text="A comma-separated list of tags.",
-                through="elections.ElectionsArticleTag",
-                to="taggit.Tag",
-                verbose_name="Tags",
-            ),
-        ),
-    ]
diff --git a/elections/migrations/0004_alter_electionshomepage_options.py b/elections/migrations/0004_alter_electionshomepage_options.py
deleted file mode 100644
index bb8d3c58008f03ca9fba3538245672cd13f0bdca..0000000000000000000000000000000000000000
--- a/elections/migrations/0004_alter_electionshomepage_options.py
+++ /dev/null
@@ -1,16 +0,0 @@
-# Generated by Django 4.1.10 on 2024-01-04 15:46
-
-from django.db import migrations
-
-
-class Migration(migrations.Migration):
-    dependencies = [
-        ("elections", "0003_electionsarticlepage_electionssearchpage_and_more"),
-    ]
-
-    operations = [
-        migrations.AlterModelOptions(
-            name="electionshomepage",
-            options={"verbose_name": "Volební web"},
-        ),
-    ]
diff --git a/elections/migrations/0005_alter_electionsarticlepage_shared_tags.py b/elections/migrations/0005_alter_electionsarticlepage_shared_tags.py
deleted file mode 100644
index 04df0372d59690c84e9bae52b467cfb3cf478b87..0000000000000000000000000000000000000000
--- a/elections/migrations/0005_alter_electionsarticlepage_shared_tags.py
+++ /dev/null
@@ -1,25 +0,0 @@
-# Generated by Django 4.1.10 on 2024-01-04 16:21
-
-import modelcluster.contrib.taggit
-from django.db import migrations
-
-
-class Migration(migrations.Migration):
-    dependencies = [
-        ("shared", "0004_sharedtaggedelectionsarticle"),
-        ("elections", "0004_alter_electionshomepage_options"),
-    ]
-
-    operations = [
-        migrations.AlterField(
-            model_name="electionsarticlepage",
-            name="shared_tags",
-            field=modelcluster.contrib.taggit.ClusterTaggableManager(
-                blank=True,
-                help_text="A comma-separated list of tags.",
-                through="shared.SharedTaggedElectionsArticle",
-                to="shared.SharedTag",
-                verbose_name="Tagy pro sdílení mezi weby",
-            ),
-        ),
-    ]
diff --git a/elections/migrations/0006_alter_electionshomepage_content.py b/elections/migrations/0006_alter_electionshomepage_content.py
deleted file mode 100644
index b1a7e88b30ecbb475c9526958cbd5f6955df67fd..0000000000000000000000000000000000000000
--- a/elections/migrations/0006_alter_electionshomepage_content.py
+++ /dev/null
@@ -1,39 +0,0 @@
-# Generated by Django 4.1.10 on 2024-01-04 16:52
-
-import wagtail.blocks
-import wagtail.fields
-import wagtail.images.blocks
-from django.db import migrations
-
-
-class Migration(migrations.Migration):
-    dependencies = [
-        ("elections", "0005_alter_electionsarticlepage_shared_tags"),
-    ]
-
-    operations = [
-        migrations.AlterField(
-            model_name="electionshomepage",
-            name="content",
-            field=wagtail.fields.StreamField(
-                [
-                    (
-                        "carousel",
-                        wagtail.blocks.StructBlock(
-                            [
-                                (
-                                    "image",
-                                    wagtail.images.blocks.ImageChooserBlock(
-                                        label="Obrázek na pozadí"
-                                    ),
-                                )
-                            ]
-                        ),
-                    )
-                ],
-                blank=True,
-                use_json_field=True,
-                verbose_name="Hlavní obsah",
-            ),
-        ),
-    ]
diff --git a/elections/migrations/0007_alter_electionshomepage_content_and_more.py b/elections/migrations/0007_alter_electionshomepage_content_and_more.py
deleted file mode 100644
index 153fdd0a1ab3a0fb118d39e472ee305afadeb96d..0000000000000000000000000000000000000000
--- a/elections/migrations/0007_alter_electionshomepage_content_and_more.py
+++ /dev/null
@@ -1,273 +0,0 @@
-# Generated by Django 4.1.10 on 2024-01-05 16:23
-
-import django.db.models.deletion
-import wagtail.blocks
-import wagtail.fields
-import wagtail.images.blocks
-import wagtailmetadata.models
-from django.db import migrations, models
-
-import shared.models.base
-
-
-class Migration(migrations.Migration):
-    dependencies = [
-        ("wagtailcore", "0083_workflowcontenttype"),
-        ("calendar_utils", "0004_auto_20220505_1228"),
-        ("wagtailimages", "0025_alter_image_file_alter_rendition_file"),
-        ("elections", "0006_alter_electionshomepage_content"),
-    ]
-
-    operations = [
-        migrations.AlterField(
-            model_name="electionshomepage",
-            name="content",
-            field=wagtail.fields.StreamField(
-                [
-                    (
-                        "carousel",
-                        wagtail.blocks.StructBlock(
-                            [
-                                (
-                                    "image",
-                                    wagtail.images.blocks.ImageChooserBlock(
-                                        label="Obrázek na pozadí"
-                                    ),
-                                )
-                            ]
-                        ),
-                    ),
-                    (
-                        "candidate",
-                        wagtail.blocks.StructBlock(
-                            [
-                                (
-                                    "candidates",
-                                    wagtail.blocks.ListBlock(
-                                        wagtail.blocks.StructBlock(
-                                            [
-                                                (
-                                                    "candidate",
-                                                    wagtail.blocks.PageChooserBlock(
-                                                        label="Stránka",
-                                                        page_type=[
-                                                            "elections.ElectionsCandidatePage"
-                                                        ],
-                                                    ),
-                                                ),
-                                                (
-                                                    "description",
-                                                    wagtail.blocks.RichTextBlock(
-                                                        help_text="Pokud zůstane prázdné, použije se popis ze stránky kandidáta",
-                                                        label="Popis",
-                                                        required=False,
-                                                    ),
-                                                ),
-                                            ]
-                                        ),
-                                        label="Kandidáti",
-                                    ),
-                                )
-                            ]
-                        ),
-                    ),
-                ],
-                blank=True,
-                use_json_field=True,
-                verbose_name="Hlavní obsah",
-            ),
-        ),
-        migrations.CreateModel(
-            name="ElectionsCandidatesPage",
-            fields=[
-                (
-                    "page_ptr",
-                    models.OneToOneField(
-                        auto_created=True,
-                        on_delete=django.db.models.deletion.CASCADE,
-                        parent_link=True,
-                        primary_key=True,
-                        serialize=False,
-                        to="wagtailcore.page",
-                    ),
-                ),
-                (
-                    "calendar_url",
-                    models.URLField(
-                        blank=True,
-                        help_text="Kalendář se po uložení stránky aktualizuje na pozadí. U plnějších kalendářů to může trvat i desítky sekund.",
-                        null=True,
-                        verbose_name="URL kalendáře ve formátu iCal",
-                    ),
-                ),
-                (
-                    "calendar",
-                    models.ForeignKey(
-                        blank=True,
-                        null=True,
-                        on_delete=django.db.models.deletion.PROTECT,
-                        to="calendar_utils.calendar",
-                    ),
-                ),
-                (
-                    "search_image",
-                    models.ForeignKey(
-                        blank=True,
-                        null=True,
-                        on_delete=django.db.models.deletion.SET_NULL,
-                        related_name="+",
-                        to="wagtailimages.image",
-                        verbose_name="Search image",
-                    ),
-                ),
-            ],
-            options={
-                "verbose_name": "Kandidáti",
-            },
-            bases=(
-                shared.models.base.SubpageMixin,
-                wagtailmetadata.models.WagtailImageMetadataMixin,
-                "wagtailcore.page",
-                models.Model,
-            ),
-        ),
-        migrations.CreateModel(
-            name="ElectionsCandidatePage",
-            fields=[
-                (
-                    "page_ptr",
-                    models.OneToOneField(
-                        auto_created=True,
-                        on_delete=django.db.models.deletion.CASCADE,
-                        parent_link=True,
-                        primary_key=True,
-                        serialize=False,
-                        to="wagtailcore.page",
-                    ),
-                ),
-                (
-                    "calendar_url",
-                    models.URLField(
-                        blank=True,
-                        help_text="Kalendář se po uložení stránky aktualizuje na pozadí. U plnějších kalendářů to může trvat i desítky sekund.",
-                        null=True,
-                        verbose_name="URL kalendáře ve formátu iCal",
-                    ),
-                ),
-                (
-                    "position",
-                    models.CharField(
-                        blank=True,
-                        max_length=64,
-                        null=True,
-                        verbose_name="Pozice/povolání",
-                    ),
-                ),
-                ("perex", wagtail.fields.RichTextField()),
-                (
-                    "email",
-                    models.CharField(
-                        blank=True, max_length=128, null=True, verbose_name="E-mail"
-                    ),
-                ),
-                (
-                    "phone",
-                    models.CharField(
-                        blank=True,
-                        max_length=16,
-                        null=True,
-                        verbose_name="Telefonní kontakt",
-                    ),
-                ),
-                (
-                    "social_links",
-                    wagtail.fields.StreamField(
-                        [
-                            (
-                                "social_links",
-                                wagtail.blocks.StructBlock(
-                                    [
-                                        (
-                                            "text",
-                                            wagtail.blocks.CharBlock(label="Název"),
-                                        ),
-                                        (
-                                            "link",
-                                            wagtail.blocks.URLBlock(label="Odkaz"),
-                                        ),
-                                        (
-                                            "icon",
-                                            wagtail.blocks.CharBlock(
-                                                help_text="Seznam ikon - https://styleguide.pirati.cz/latest/?p=viewall-atoms-icons <br/>Název ikony zadejte bez tečky na začátku",
-                                                label="Ikona",
-                                            ),
-                                        ),
-                                    ]
-                                ),
-                            )
-                        ],
-                        blank=True,
-                        use_json_field=True,
-                        verbose_name="Odkazy na sociální sítě",
-                    ),
-                ),
-                (
-                    "related_candidates",
-                    wagtail.fields.StreamField(
-                        [
-                            (
-                                "candidate",
-                                wagtail.blocks.PageChooserBlock(
-                                    label="Detail kandidáta",
-                                    page_type=["elections.ElectionsCandidatePage"],
-                                ),
-                            )
-                        ],
-                        blank=True,
-                        use_json_field=True,
-                        verbose_name="Další kandidáti",
-                    ),
-                ),
-                (
-                    "calendar",
-                    models.ForeignKey(
-                        blank=True,
-                        null=True,
-                        on_delete=django.db.models.deletion.PROTECT,
-                        to="calendar_utils.calendar",
-                    ),
-                ),
-                (
-                    "image",
-                    models.ForeignKey(
-                        blank=True,
-                        null=True,
-                        on_delete=django.db.models.deletion.PROTECT,
-                        related_name="+",
-                        to="wagtailimages.image",
-                        verbose_name="Obrázek",
-                    ),
-                ),
-                (
-                    "search_image",
-                    models.ForeignKey(
-                        blank=True,
-                        null=True,
-                        on_delete=django.db.models.deletion.SET_NULL,
-                        related_name="+",
-                        to="wagtailimages.image",
-                        verbose_name="Search image",
-                    ),
-                ),
-            ],
-            options={
-                "abstract": False,
-            },
-            bases=(
-                shared.models.base.SubpageMixin,
-                wagtailmetadata.models.WagtailImageMetadataMixin,
-                "wagtailcore.page",
-                models.Model,
-            ),
-        ),
-    ]
diff --git a/elections/migrations/0008_alter_electionsarticlepage_author_page.py b/elections/migrations/0008_alter_electionsarticlepage_author_page.py
deleted file mode 100644
index 11b8cd8b0caa6038d47435395161b489574298cc..0000000000000000000000000000000000000000
--- a/elections/migrations/0008_alter_electionsarticlepage_author_page.py
+++ /dev/null
@@ -1,24 +0,0 @@
-# Generated by Django 4.1.10 on 2024-01-05 17:20
-
-import django.db.models.deletion
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-    dependencies = [
-        ("elections", "0007_alter_electionshomepage_content_and_more"),
-    ]
-
-    operations = [
-        migrations.AlterField(
-            model_name="electionsarticlepage",
-            name="author_page",
-            field=models.ForeignKey(
-                blank=True,
-                null=True,
-                on_delete=django.db.models.deletion.SET_NULL,
-                to="elections.electionscandidatepage",
-                verbose_name="Stránka autora (kandidáta)",
-            ),
-        ),
-    ]
diff --git a/elections/migrations/0009_electionscandidatepage_articles_heading.py b/elections/migrations/0009_electionscandidatepage_articles_heading.py
deleted file mode 100644
index 5083cb6070ef367511073af5ab70445ad58742ae..0000000000000000000000000000000000000000
--- a/elections/migrations/0009_electionscandidatepage_articles_heading.py
+++ /dev/null
@@ -1,23 +0,0 @@
-# Generated by Django 4.1.10 on 2024-01-05 17:29
-
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-    dependencies = [
-        ("elections", "0008_alter_electionsarticlepage_author_page"),
-    ]
-
-    operations = [
-        migrations.AddField(
-            model_name="electionscandidatepage",
-            name="articles_heading",
-            field=models.CharField(
-                default="Aktuality",
-                help_text='Např. "Aktuality Mikuláše Peksy".',
-                max_length=32,
-                verbose_name="Nadpis sekce s články",
-            ),
-            preserve_default=False,
-        ),
-    ]
diff --git a/elections/migrations/0010_alter_electionscandidatepage_options_and_more.py b/elections/migrations/0010_alter_electionscandidatepage_options_and_more.py
deleted file mode 100644
index d1717aedd69ecd0be008420d31948ed4ddda6b37..0000000000000000000000000000000000000000
--- a/elections/migrations/0010_alter_electionscandidatepage_options_and_more.py
+++ /dev/null
@@ -1,85 +0,0 @@
-# Generated by Django 4.1.10 on 2024-01-05 17:35
-
-import wagtail.blocks
-import wagtail.fields
-import wagtail.images.blocks
-from django.db import migrations
-
-
-class Migration(migrations.Migration):
-    dependencies = [
-        ("elections", "0009_electionscandidatepage_articles_heading"),
-    ]
-
-    operations = [
-        migrations.AlterModelOptions(
-            name="electionscandidatepage",
-            options={"verbose_name": "Kandidát"},
-        ),
-        migrations.AlterField(
-            model_name="electionshomepage",
-            name="content",
-            field=wagtail.fields.StreamField(
-                [
-                    (
-                        "carousel",
-                        wagtail.blocks.StructBlock(
-                            [
-                                (
-                                    "image",
-                                    wagtail.images.blocks.ImageChooserBlock(
-                                        label="Obrázek na pozadí"
-                                    ),
-                                )
-                            ]
-                        ),
-                    ),
-                    (
-                        "candidate",
-                        wagtail.blocks.StructBlock(
-                            [
-                                (
-                                    "candidates",
-                                    wagtail.blocks.ListBlock(
-                                        wagtail.blocks.StructBlock(
-                                            [
-                                                (
-                                                    "candidate",
-                                                    wagtail.blocks.PageChooserBlock(
-                                                        label="Stránka",
-                                                        page_type=[
-                                                            "elections.ElectionsCandidatePage"
-                                                        ],
-                                                    ),
-                                                ),
-                                                (
-                                                    "image",
-                                                    wagtail.images.blocks.ImageChooserBlock(
-                                                        help_text="Pokud není vybrán, použije se obrázek ze stránky kandidáta",
-                                                        label="Obrázek",
-                                                        required=False,
-                                                    ),
-                                                ),
-                                                (
-                                                    "description",
-                                                    wagtail.blocks.RichTextBlock(
-                                                        help_text="Pokud zůstane prázdné, použije se popis ze stránky kandidáta",
-                                                        label="Popis",
-                                                        required=False,
-                                                    ),
-                                                ),
-                                            ]
-                                        ),
-                                        label="Kandidáti",
-                                    ),
-                                )
-                            ]
-                        ),
-                    ),
-                ],
-                blank=True,
-                use_json_field=True,
-                verbose_name="Hlavní obsah",
-            ),
-        ),
-    ]
diff --git a/elections/migrations/0011_alter_electionshomepage_content.py b/elections/migrations/0011_alter_electionshomepage_content.py
deleted file mode 100644
index 4989009736320126cd49f09546693d62cd83a2f5..0000000000000000000000000000000000000000
--- a/elections/migrations/0011_alter_electionshomepage_content.py
+++ /dev/null
@@ -1,81 +0,0 @@
-# Generated by Django 4.1.10 on 2024-01-05 17:44
-
-import wagtail.blocks
-import wagtail.fields
-import wagtail.images.blocks
-from django.db import migrations
-
-
-class Migration(migrations.Migration):
-    dependencies = [
-        ("elections", "0010_alter_electionscandidatepage_options_and_more"),
-    ]
-
-    operations = [
-        migrations.AlterField(
-            model_name="electionshomepage",
-            name="content",
-            field=wagtail.fields.StreamField(
-                [
-                    (
-                        "carousel",
-                        wagtail.blocks.StructBlock(
-                            [
-                                (
-                                    "image",
-                                    wagtail.images.blocks.ImageChooserBlock(
-                                        label="Obrázek na pozadí"
-                                    ),
-                                )
-                            ]
-                        ),
-                    ),
-                    (
-                        "candidate",
-                        wagtail.blocks.StructBlock(
-                            [
-                                (
-                                    "candidates",
-                                    wagtail.blocks.ListBlock(
-                                        wagtail.blocks.StructBlock(
-                                            [
-                                                (
-                                                    "page",
-                                                    wagtail.blocks.PageChooserBlock(
-                                                        label="Stránka",
-                                                        page_type=[
-                                                            "elections.ElectionsCandidatePage"
-                                                        ],
-                                                    ),
-                                                ),
-                                                (
-                                                    "image",
-                                                    wagtail.images.blocks.ImageChooserBlock(
-                                                        help_text="Pokud není vybrán, použije se obrázek ze stránky kandidáta",
-                                                        label="Obrázek",
-                                                        required=False,
-                                                    ),
-                                                ),
-                                                (
-                                                    "description",
-                                                    wagtail.blocks.TextBlock(
-                                                        help_text="Pokud zůstane prázdné, použije se popis ze stránky kandidáta",
-                                                        label="Popis",
-                                                        required=False,
-                                                    ),
-                                                ),
-                                            ]
-                                        ),
-                                        label="Kandidáti",
-                                    ),
-                                )
-                            ]
-                        ),
-                    ),
-                ],
-                blank=True,
-                use_json_field=True,
-                verbose_name="Hlavní obsah",
-            ),
-        ),
-    ]
diff --git a/elections/migrations/0012_alter_electionshomepage_content.py b/elections/migrations/0012_alter_electionshomepage_content.py
deleted file mode 100644
index 2d3dec21beaf84c4c15f83af0c366dc1b090d3b6..0000000000000000000000000000000000000000
--- a/elections/migrations/0012_alter_electionshomepage_content.py
+++ /dev/null
@@ -1,144 +0,0 @@
-# Generated by Django 4.1.10 on 2024-01-05 19:47
-
-import wagtail.blocks
-import wagtail.fields
-import wagtail.images.blocks
-from django.db import migrations
-
-
-class Migration(migrations.Migration):
-    dependencies = [
-        ("elections", "0011_alter_electionshomepage_content"),
-    ]
-
-    operations = [
-        migrations.AlterField(
-            model_name="electionshomepage",
-            name="content",
-            field=wagtail.fields.StreamField(
-                [
-                    (
-                        "carousel",
-                        wagtail.blocks.StructBlock(
-                            [
-                                (
-                                    "image",
-                                    wagtail.images.blocks.ImageChooserBlock(
-                                        label="Obrázek na pozadí"
-                                    ),
-                                )
-                            ]
-                        ),
-                    ),
-                    (
-                        "candidate",
-                        wagtail.blocks.StructBlock(
-                            [
-                                (
-                                    "candidates",
-                                    wagtail.blocks.ListBlock(
-                                        wagtail.blocks.StructBlock(
-                                            [
-                                                (
-                                                    "page",
-                                                    wagtail.blocks.PageChooserBlock(
-                                                        label="Stránka",
-                                                        page_type=[
-                                                            "elections.ElectionsCandidatePage"
-                                                        ],
-                                                    ),
-                                                ),
-                                                (
-                                                    "image",
-                                                    wagtail.images.blocks.ImageChooserBlock(
-                                                        help_text="Pokud není vybrán, použije se obrázek ze stránky kandidáta",
-                                                        label="Obrázek",
-                                                        required=False,
-                                                    ),
-                                                ),
-                                                (
-                                                    "description",
-                                                    wagtail.blocks.TextBlock(
-                                                        help_text="Pokud zůstane prázdné, použije se popis ze stránky kandidáta",
-                                                        label="Popis",
-                                                        required=False,
-                                                    ),
-                                                ),
-                                            ]
-                                        ),
-                                        label="Kandidáti",
-                                    ),
-                                )
-                            ]
-                        ),
-                    ),
-                    (
-                        "program",
-                        wagtail.blocks.StructBlock(
-                            [
-                                (
-                                    "categories",
-                                    wagtail.blocks.ListBlock(
-                                        wagtail.blocks.StructBlock(
-                                            [
-                                                (
-                                                    "number",
-                                                    wagtail.blocks.IntegerBlock(
-                                                        label="Číslo"
-                                                    ),
-                                                ),
-                                                (
-                                                    "name",
-                                                    wagtail.blocks.CharBlock(
-                                                        label="Název"
-                                                    ),
-                                                ),
-                                                (
-                                                    "points",
-                                                    wagtail.blocks.ListBlock(
-                                                        wagtail.blocks.StructBlock(
-                                                            [
-                                                                (
-                                                                    "number",
-                                                                    wagtail.blocks.IntegerBlock(
-                                                                        label="Číslo"
-                                                                    ),
-                                                                ),
-                                                                (
-                                                                    "content",
-                                                                    wagtail.blocks.RichTextBlock(
-                                                                        label="Obsah"
-                                                                    ),
-                                                                ),
-                                                            ]
-                                                        ),
-                                                        label="Body",
-                                                    ),
-                                                ),
-                                            ]
-                                        ),
-                                        label="Kategorie",
-                                    ),
-                                ),
-                                (
-                                    "long_version_url",
-                                    wagtail.blocks.URLBlock(
-                                        label="Odkaz na celou verzi programu"
-                                    ),
-                                ),
-                                (
-                                    "long_version_text",
-                                    wagtail.blocks.CharBlock(
-                                        label="Nadpis odkazu na celou verzi programu"
-                                    ),
-                                ),
-                            ]
-                        ),
-                    ),
-                ],
-                blank=True,
-                use_json_field=True,
-                verbose_name="Hlavní obsah",
-            ),
-        ),
-    ]
diff --git a/elections/migrations/0013_alter_electionshomepage_content.py b/elections/migrations/0013_alter_electionshomepage_content.py
deleted file mode 100644
index 6f6bffb9b5fe1954331c11616fec94485287dcf8..0000000000000000000000000000000000000000
--- a/elections/migrations/0013_alter_electionshomepage_content.py
+++ /dev/null
@@ -1,21 +0,0 @@
-# Generated by Django 4.1.10 on 2024-01-06 06:27
-
-from django.db import migrations
-import wagtail.blocks
-import wagtail.fields
-import wagtail.images.blocks
-
-
-class Migration(migrations.Migration):
-
-    dependencies = [
-        ('elections', '0012_alter_electionshomepage_content'),
-    ]
-
-    operations = [
-        migrations.AlterField(
-            model_name='electionshomepage',
-            name='content',
-            field=wagtail.fields.StreamField([('carousel', wagtail.blocks.StructBlock([('image', wagtail.images.blocks.ImageChooserBlock(label='Obrázek na pozadí'))])), ('candidate', wagtail.blocks.StructBlock([('candidates', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('page', wagtail.blocks.PageChooserBlock(label='Stránka', page_type=['elections.ElectionsCandidatePage'])), ('image', wagtail.images.blocks.ImageChooserBlock(help_text='Pokud není vybrán, použije se obrázek ze stránky kandidáta', label='Obrázek', required=False)), ('description', wagtail.blocks.TextBlock(label='Popis'))]), label='Kandidáti'))])), ('program', wagtail.blocks.StructBlock([('categories', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('number', wagtail.blocks.IntegerBlock(label='Číslo')), ('name', wagtail.blocks.CharBlock(label='Název')), ('points', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('number', wagtail.blocks.IntegerBlock(label='Číslo')), ('content', wagtail.blocks.TextBlock(label='Obsah'))]), label='Body'))]), label='Kategorie')), ('long_version_url', wagtail.blocks.URLBlock(label='Odkaz na celou verzi programu')), ('long_version_text', wagtail.blocks.CharBlock(label='Nadpis odkazu na celou verzi programu'))])), ('news', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(help_text='Nejnovější články se načtou automaticky', label='Titulek')), ('description', wagtail.blocks.TextBlock(label='Popis'))], template='styleguide2/includes/organisms/articles/elections/articles_section.html'))], blank=True, use_json_field=True, verbose_name='Hlavní obsah'),
-        ),
-    ]
diff --git a/main/migrations/0065_alter_mainarticlepage_content_and_more.py b/main/migrations/0065_alter_mainarticlepage_content_and_more.py
new file mode 100644
index 0000000000000000000000000000000000000000..2f78fc9fdfbeb4a2fd3dd091cb639c82f158e15b
--- /dev/null
+++ b/main/migrations/0065_alter_mainarticlepage_content_and_more.py
@@ -0,0 +1,56 @@
+# Generated by Django 4.1.10 on 2024-01-06 16:43
+
+from django.db import migrations
+import django.db.models.deletion
+import main.blocks
+import modelcluster.fields
+import shared.blocks.main
+import wagtail.blocks
+import wagtail.documents.blocks
+import wagtail.fields
+import wagtail.images.blocks
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('main', '0064_alter_mainhomepage_content'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='mainarticlepage',
+            name='content',
+            field=wagtail.fields.StreamField([('text', wagtail.blocks.RichTextBlock(template='styleguide2/includes/atoms/text/prose_richtext.html')), ('quote', wagtail.blocks.StructBlock([('quote', wagtail.blocks.CharBlock(label='Citace')), ('autor_name', wagtail.blocks.CharBlock(label='Jméno autora'))])), ('download', wagtail.blocks.StructBlock([('file', wagtail.documents.blocks.DocumentChooserBlock(label='Stáhnutelný soubor'))]))], blank=True, use_json_field=True, verbose_name='Článek'),
+        ),
+        migrations.AlterField(
+            model_name='mainarticletag',
+            name='content_object',
+            field=modelcluster.fields.ParentalKey(on_delete=django.db.models.deletion.CASCADE, related_name='main_tagged_items', to='main.mainarticlepage'),
+        ),
+        migrations.AlterField(
+            model_name='maincrossroadpage',
+            name='headlined_cards_content',
+            field=wagtail.fields.StreamField([('headlined_cards', wagtail.blocks.StructBlock([('headline', wagtail.blocks.CharBlock(label='Titulek bloku', required=False)), ('card_items', 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))], template='styleguide2/includes/molecules/boxes/card_box_block.html'), label='Karty s odkazy'))]))], blank=True, use_json_field=True, verbose_name='Karty rozcestníku s nadpisem'),
+        ),
+        migrations.AlterField(
+            model_name='mainhomepage',
+            name='content',
+            field=wagtail.fields.StreamField([('carousel', wagtail.blocks.StructBlock([('desktop_line_1', wagtail.blocks.TextBlock(label='Desktop první řádek')), ('desktop_line_2', wagtail.blocks.TextBlock(label='Desktop druhý řádek')), ('mobile_line_1', wagtail.blocks.TextBlock(label='První mobilní řádek')), ('mobile_line_2', wagtail.blocks.TextBlock(label='Druhý mobilní řádek')), ('mobile_line_3', wagtail.blocks.TextBlock(label='Třetí mobilní řádek'))])), ('news', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(help_text='Nejnovější články se načtou automaticky', label='Titulek')), ('description', wagtail.blocks.TextBlock(label='Popis'))], template='styleguide2/includes/organisms/articles/articles_section.html')), ('europarl_news', wagtail.blocks.StructBlock([])), ('people', wagtail.blocks.StructBlock([('title_line_1', wagtail.blocks.CharBlock(label='První řádek titulku')), ('title_line_2', wagtail.blocks.CharBlock(label='Druhý řádek titulku')), ('description', wagtail.blocks.TextBlock(label='Popis')), ('list', wagtail.blocks.ListBlock(main.blocks.BoxBlock, label='Boxíky'))])), ('regions', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(help_text='Články pro regiony se načtou automaticky', label='Titulek'))])), ('boxes', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(label='Nadpis')), ('list', wagtail.blocks.ListBlock(main.blocks.BoxBlock, label='Boxíky')), ('image', wagtail.images.blocks.ImageChooserBlock(label='Obrázek pozadí', required=False))]))], blank=True, use_json_field=True, verbose_name='Hlavní obsah'),
+        ),
+        migrations.AlterField(
+            model_name='mainhomepage',
+            name='footer_other_links',
+            field=wagtail.fields.StreamField([('other_links', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(label='Titulek')), ('list', wagtail.blocks.ListBlock(shared.blocks.main.LinkBlock, label='Seznam odkazů s titulkem'))]))], blank=True, use_json_field=True, verbose_name='Odkazy v zápatí webu'),
+        ),
+        migrations.AlterField(
+            model_name='mainpeoplepage',
+            name='people',
+            field=wagtail.fields.StreamField([('people_group', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(label='Titulek')), ('slug', wagtail.blocks.CharBlock(help_text='Není třeba vyplňovat, bude automaticky vyplněno', label='Slug skupiny', required=False)), ('person_list', wagtail.blocks.ListBlock(wagtail.blocks.PageChooserBlock(label='Detail osoby', page_type=['main.MainPersonPage']), label='Skupina osob'))], label='Seznam osob')), ('team_group', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(label='Název sekce týmů')), ('slug', wagtail.blocks.CharBlock(help_text='Není třeba vyplňovat, bude automaticky vyplněno', label='Slug sekce', required=False)), ('team_list', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('headline', wagtail.blocks.CharBlock(label='Titulek bloku', required=False)), ('card_items', 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))], template='styleguide2/includes/molecules/boxes/card_box_block.html'), label='Karty s odkazy'))], label='Karta týmu'), label='Týmy'))]))], blank=True, use_json_field=True, verbose_name='Lidé a týmy'),
+        ),
+        migrations.AlterField(
+            model_name='mainsimplepage',
+            name='content',
+            field=wagtail.fields.StreamField([('text', wagtail.blocks.RichTextBlock(template='styleguide2/includes/atoms/text/prose_richtext.html'))], blank=True, use_json_field=True, verbose_name='Hlavní obsah'),
+        ),
+    ]
diff --git a/main/migrations/0065_alter_mainhomepage_footer_other_links.py b/main/migrations/0065_alter_mainhomepage_footer_other_links.py
deleted file mode 100644
index 2d06c8fbf396765503f79820297f3f7cff4f85c7..0000000000000000000000000000000000000000
--- a/main/migrations/0065_alter_mainhomepage_footer_other_links.py
+++ /dev/null
@@ -1,42 +0,0 @@
-# Generated by Django 4.1.10 on 2024-01-03 19:04
-
-import wagtail.blocks
-import wagtail.fields
-from django.db import migrations
-
-import shared.blocks.main
-
-
-class Migration(migrations.Migration):
-    dependencies = [
-        ("main", "0064_alter_mainhomepage_content"),
-    ]
-
-    operations = [
-        migrations.AlterField(
-            model_name="mainhomepage",
-            name="footer_other_links",
-            field=wagtail.fields.StreamField(
-                [
-                    (
-                        "other_links",
-                        wagtail.blocks.StructBlock(
-                            [
-                                ("title", wagtail.blocks.CharBlock(label="Titulek")),
-                                (
-                                    "list",
-                                    wagtail.blocks.ListBlock(
-                                        shared.blocks.main.LinkBlock,
-                                        label="Seznam odkazů s titulkem",
-                                    ),
-                                ),
-                            ]
-                        ),
-                    )
-                ],
-                blank=True,
-                use_json_field=True,
-                verbose_name="Odkazy v zápatí webu",
-            ),
-        ),
-    ]
diff --git a/main/migrations/0066_alter_mainarticlepage_content_and_more.py b/main/migrations/0066_alter_mainarticlepage_content_and_more.py
deleted file mode 100644
index 28852b9c9a644470700385a6b3915d372b7b84c0..0000000000000000000000000000000000000000
--- a/main/migrations/0066_alter_mainarticlepage_content_and_more.py
+++ /dev/null
@@ -1,282 +0,0 @@
-# Generated by Django 4.1.10 on 2024-01-04 10:19
-
-import wagtail.blocks
-import wagtail.documents.blocks
-import wagtail.fields
-import wagtail.images.blocks
-from django.db import migrations
-
-
-class Migration(migrations.Migration):
-    dependencies = [
-        ("main", "0065_alter_mainhomepage_footer_other_links"),
-    ]
-
-    operations = [
-        migrations.AlterField(
-            model_name="mainarticlepage",
-            name="content",
-            field=wagtail.fields.StreamField(
-                [
-                    (
-                        "text",
-                        wagtail.blocks.RichTextBlock(
-                            template="styleguide2/includes/atoms/text/prose_richtext.html"
-                        ),
-                    ),
-                    (
-                        "quote",
-                        wagtail.blocks.StructBlock(
-                            [
-                                ("quote", wagtail.blocks.CharBlock(label="Citace")),
-                                (
-                                    "autor_name",
-                                    wagtail.blocks.CharBlock(label="Jméno autora"),
-                                ),
-                            ]
-                        ),
-                    ),
-                    (
-                        "download",
-                        wagtail.blocks.StructBlock(
-                            [
-                                (
-                                    "file",
-                                    wagtail.documents.blocks.DocumentChooserBlock(
-                                        label="Stáhnutelný soubor"
-                                    ),
-                                )
-                            ]
-                        ),
-                    ),
-                ],
-                blank=True,
-                use_json_field=True,
-                verbose_name="Článek",
-            ),
-        ),
-        migrations.AlterField(
-            model_name="maincrossroadpage",
-            name="headlined_cards_content",
-            field=wagtail.fields.StreamField(
-                [
-                    (
-                        "headlined_cards",
-                        wagtail.blocks.StructBlock(
-                            [
-                                (
-                                    "headline",
-                                    wagtail.blocks.CharBlock(
-                                        label="Titulek bloku", required=False
-                                    ),
-                                ),
-                                (
-                                    "card_items",
-                                    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
-                                                    ),
-                                                ),
-                                            ],
-                                            template="styleguide2/includes/molecules/boxes/card_box_block.html",
-                                        ),
-                                        label="Karty s odkazy",
-                                    ),
-                                ),
-                            ]
-                        ),
-                    )
-                ],
-                blank=True,
-                use_json_field=True,
-                verbose_name="Karty rozcestníku s nadpisem",
-            ),
-        ),
-        migrations.AlterField(
-            model_name="mainpeoplepage",
-            name="people",
-            field=wagtail.fields.StreamField(
-                [
-                    (
-                        "people_group",
-                        wagtail.blocks.StructBlock(
-                            [
-                                ("title", wagtail.blocks.CharBlock(label="Titulek")),
-                                (
-                                    "slug",
-                                    wagtail.blocks.CharBlock(
-                                        help_text="Není třeba vyplňovat, bude automaticky vyplněno",
-                                        label="Slug skupiny",
-                                        required=False,
-                                    ),
-                                ),
-                                (
-                                    "person_list",
-                                    wagtail.blocks.ListBlock(
-                                        wagtail.blocks.PageChooserBlock(
-                                            label="Detail osoby",
-                                            page_type=["main.MainPersonPage"],
-                                        ),
-                                        label="Skupina osob",
-                                    ),
-                                ),
-                            ],
-                            label="Seznam osob",
-                        ),
-                    ),
-                    (
-                        "team_group",
-                        wagtail.blocks.StructBlock(
-                            [
-                                (
-                                    "title",
-                                    wagtail.blocks.CharBlock(label="Název sekce týmů"),
-                                ),
-                                (
-                                    "slug",
-                                    wagtail.blocks.CharBlock(
-                                        help_text="Není třeba vyplňovat, bude automaticky vyplněno",
-                                        label="Slug sekce",
-                                        required=False,
-                                    ),
-                                ),
-                                (
-                                    "team_list",
-                                    wagtail.blocks.ListBlock(
-                                        wagtail.blocks.StructBlock(
-                                            [
-                                                (
-                                                    "headline",
-                                                    wagtail.blocks.CharBlock(
-                                                        label="Titulek bloku",
-                                                        required=False,
-                                                    ),
-                                                ),
-                                                (
-                                                    "card_items",
-                                                    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,
-                                                                    ),
-                                                                ),
-                                                            ],
-                                                            template="styleguide2/includes/molecules/boxes/card_box_block.html",
-                                                        ),
-                                                        label="Karty s odkazy",
-                                                    ),
-                                                ),
-                                            ],
-                                            label="Karta týmu",
-                                        ),
-                                        label="Týmy",
-                                    ),
-                                ),
-                            ]
-                        ),
-                    ),
-                ],
-                blank=True,
-                use_json_field=True,
-                verbose_name="Lidé a týmy",
-            ),
-        ),
-        migrations.AlterField(
-            model_name="mainsimplepage",
-            name="content",
-            field=wagtail.fields.StreamField(
-                [
-                    (
-                        "text",
-                        wagtail.blocks.RichTextBlock(
-                            template="styleguide2/includes/atoms/text/prose_richtext.html"
-                        ),
-                    )
-                ],
-                blank=True,
-                use_json_field=True,
-                verbose_name="Hlavní obsah",
-            ),
-        ),
-    ]
diff --git a/main/migrations/0067_alter_mainarticletag_content_object.py b/main/migrations/0067_alter_mainarticletag_content_object.py
deleted file mode 100644
index 3b64a6e5d03385edffe44384ee5afa4be1d97adf..0000000000000000000000000000000000000000
--- a/main/migrations/0067_alter_mainarticletag_content_object.py
+++ /dev/null
@@ -1,23 +0,0 @@
-# Generated by Django 4.1.10 on 2024-01-04 15:26
-
-import django.db.models.deletion
-import modelcluster.fields
-from django.db import migrations
-
-
-class Migration(migrations.Migration):
-    dependencies = [
-        ("main", "0066_alter_mainarticlepage_content_and_more"),
-    ]
-
-    operations = [
-        migrations.AlterField(
-            model_name="mainarticletag",
-            name="content_object",
-            field=modelcluster.fields.ParentalKey(
-                on_delete=django.db.models.deletion.CASCADE,
-                related_name="main_tagged_items",
-                to="main.mainarticlepage",
-            ),
-        ),
-    ]
diff --git a/main/migrations/0068_alter_mainhomepage_content.py b/main/migrations/0068_alter_mainhomepage_content.py
deleted file mode 100644
index ba8cdbdedba2c9929cb0c4686358af5ae43cd1af..0000000000000000000000000000000000000000
--- a/main/migrations/0068_alter_mainhomepage_content.py
+++ /dev/null
@@ -1,22 +0,0 @@
-# Generated by Django 4.1.10 on 2024-01-06 06:27
-
-from django.db import migrations
-import main.blocks
-import wagtail.blocks
-import wagtail.fields
-import wagtail.images.blocks
-
-
-class Migration(migrations.Migration):
-
-    dependencies = [
-        ('main', '0067_alter_mainarticletag_content_object'),
-    ]
-
-    operations = [
-        migrations.AlterField(
-            model_name='mainhomepage',
-            name='content',
-            field=wagtail.fields.StreamField([('carousel', wagtail.blocks.StructBlock([('desktop_line_1', wagtail.blocks.TextBlock(label='Desktop první řádek')), ('desktop_line_2', wagtail.blocks.TextBlock(label='Desktop druhý řádek')), ('mobile_line_1', wagtail.blocks.TextBlock(label='První mobilní řádek')), ('mobile_line_2', wagtail.blocks.TextBlock(label='Druhý mobilní řádek')), ('mobile_line_3', wagtail.blocks.TextBlock(label='Třetí mobilní řádek'))])), ('news', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(help_text='Nejnovější články se načtou automaticky', label='Titulek')), ('description', wagtail.blocks.TextBlock(label='Popis'))], template='styleguide2/includes/organisms/articles/articles_section.html')), ('europarl_news', wagtail.blocks.StructBlock([])), ('people', wagtail.blocks.StructBlock([('title_line_1', wagtail.blocks.CharBlock(label='První řádek titulku')), ('title_line_2', wagtail.blocks.CharBlock(label='Druhý řádek titulku')), ('description', wagtail.blocks.TextBlock(label='Popis')), ('list', wagtail.blocks.ListBlock(main.blocks.BoxBlock, label='Boxíky'))])), ('regions', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(help_text='Články pro regiony se načtou automaticky', label='Titulek'))])), ('boxes', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(label='Nadpis')), ('list', wagtail.blocks.ListBlock(main.blocks.BoxBlock, label='Boxíky')), ('image', wagtail.images.blocks.ImageChooserBlock(label='Obrázek pozadí', required=False))]))], blank=True, use_json_field=True, verbose_name='Hlavní obsah'),
-        ),
-    ]
diff --git a/shared/migrations/0004_sharedtaggedelectionsarticle.py b/shared/migrations/0004_sharedtaggedelectionsarticle.py
index 3d594e4afb740751b9fd0baae5219beaa2878dab..401321ccdd44824c83f3ef3896f9df601fefb58d 100644
--- a/shared/migrations/0004_sharedtaggedelectionsarticle.py
+++ b/shared/migrations/0004_sharedtaggedelectionsarticle.py
@@ -1,48 +1,27 @@
-# Generated by Django 4.1.10 on 2024-01-04 16:14
+# Generated by Django 4.1.10 on 2024-01-06 16:43
 
+from django.db import migrations, models
 import django.db.models.deletion
 import modelcluster.fields
-from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
+
     dependencies = [
-        ("elections", "0004_alter_electionshomepage_options"),
-        ("shared", "0003_initial"),
+        ('elections', '0001_initial'),
+        ('shared', '0003_initial'),
     ]
 
     operations = [
         migrations.CreateModel(
-            name="SharedTaggedElectionsArticle",
+            name='SharedTaggedElectionsArticle',
             fields=[
-                (
-                    "id",
-                    models.AutoField(
-                        auto_created=True,
-                        primary_key=True,
-                        serialize=False,
-                        verbose_name="ID",
-                    ),
-                ),
-                (
-                    "content_object",
-                    modelcluster.fields.ParentalKey(
-                        on_delete=django.db.models.deletion.CASCADE,
-                        related_name="shared_elections_articles",
-                        to="elections.electionsarticlepage",
-                    ),
-                ),
-                (
-                    "tag",
-                    models.ForeignKey(
-                        on_delete=django.db.models.deletion.CASCADE,
-                        related_name="shared_elections_tags",
-                        to="shared.sharedtag",
-                    ),
-                ),
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('content_object', modelcluster.fields.ParentalKey(on_delete=django.db.models.deletion.CASCADE, related_name='shared_elections_articles', to='elections.electionsarticlepage')),
+                ('tag', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='shared_elections_tags', to='shared.sharedtag')),
             ],
             options={
-                "abstract": False,
+                'abstract': False,
             },
         ),
     ]