diff --git a/district/blocks.py b/district/blocks.py
index a1fb75c8175da9d5a20ead1eb4f9429554d2b1cb..d6c0374ceed2acc6a02943d23ca694decaac3c6b 100644
--- a/district/blocks.py
+++ b/district/blocks.py
@@ -256,6 +256,7 @@ class InteractiveProgramBlock(StructBlock):
             ("verejne-sluzby", "Veřejné služby"),
             ("zdravotni-pece", "Zdravotní péče"),
             ("sport", "Sport"),
+            ("sport-plavec", "Sport - plavec"),
             ("socialni-politika", "Sociální politika"),
             ("aktivni-verejnost", "Aktivní veřejnost"),
             ("priroda", "Příroda"),
diff --git a/district/migrations/0096_districtelectioncampaignpage_show_program_points_inline_and_more.py b/district/migrations/0096_districtelectioncampaignpage_show_program_points_inline_and_more.py
new file mode 100644
index 0000000000000000000000000000000000000000..8f3bdf38b1f686ce6b4fa85b651247bb968bdb70
--- /dev/null
+++ b/district/migrations/0096_districtelectioncampaignpage_show_program_points_inline_and_more.py
@@ -0,0 +1,25 @@
+# Generated by Django 4.0.7 on 2022-08-11 16:38
+
+from django.db import migrations, models
+import wagtail.blocks
+import wagtail.fields
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('district', '0095_alter_districtpersonpage_options_and_more'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='districtelectioncampaignpage',
+            name='show_program_points_inline',
+            field=models.BooleanField(default=False, help_text='Hodí se v případě spousty krátkých bodů programu, z nichž si většina nezaslouží vlastní stránku.', verbose_name='Zobrazit obsah celého programu na jedné stránce'),
+        ),
+        migrations.AlterField(
+            model_name='districtinteractiveprogrampage',
+            name='content',
+            field=wagtail.fields.StreamField([('interactive_program_block', wagtail.blocks.StructBlock([('name', wagtail.blocks.CharBlock(label='Název části programu', required=True)), ('heading', wagtail.blocks.CharBlock(label='Nadpis', required=True)), ('description', wagtail.blocks.RichTextBlock(blank=True, label='Krátký popis, BEZ BODŮ', required=False)), ('icon', wagtail.blocks.ChoiceBlock(choices=[('verejne-sluzby', 'Veřejné služby'), ('zdravotni-pece', 'Zdravotní péče'), ('sport', 'Sport'), ('sport-plavec', 'Sport - plavec'), ('socialni-politika', 'Sociální politika'), ('aktivni-verejnost', 'Aktivní veřejnost'), ('priroda', 'Příroda'), ('vzdelavani', 'Vzdělávání'), ('kultura', 'Kultura'), ('otevrena-radnice', 'Otevřená radnice'), ('cestovni-ruch', 'Cestovní ruch'), ('doprava', 'Doprava'), ('bydleni', 'Bydlení')], label='Ikona')), ('program_items', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('content', wagtail.blocks.RichTextBlock(label='Obsah', required=True))]), label='Seznam bodů', required=True))]))], use_json_field=None, verbose_name='Části programu'),
+        ),
+    ]
diff --git a/district/migrations/0097_alter_districtelectioncampaignpage_show_program_points_inline.py b/district/migrations/0097_alter_districtelectioncampaignpage_show_program_points_inline.py
new file mode 100644
index 0000000000000000000000000000000000000000..972978cd045635b7e459948ec1e4c73ff3cfaee3
--- /dev/null
+++ b/district/migrations/0097_alter_districtelectioncampaignpage_show_program_points_inline.py
@@ -0,0 +1,18 @@
+# Generated by Django 4.0.7 on 2022-08-11 16:40
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('district', '0096_districtelectioncampaignpage_show_program_points_inline_and_more'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='districtelectioncampaignpage',
+            name='show_program_points_inline',
+            field=models.BooleanField(default=False, help_text='Hodí se v případě spousty krátkých bodů programu, z nichž si většina nezaslouží vlastní stránku.', verbose_name='Zobrazit obsah programu na jedné stránce'),
+        ),
+    ]
diff --git a/district/migrations/0098_alter_districtelectionprogrampage_guarantor.py b/district/migrations/0098_alter_districtelectionprogrampage_guarantor.py
new file mode 100644
index 0000000000000000000000000000000000000000..f154e65e9da7b707a095afa6d5cb71000a5b9bce
--- /dev/null
+++ b/district/migrations/0098_alter_districtelectionprogrampage_guarantor.py
@@ -0,0 +1,19 @@
+# Generated by Django 4.0.7 on 2022-08-11 19:26
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('district', '0097_alter_districtelectioncampaignpage_show_program_points_inline'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='districtelectionprogrampage',
+            name='guarantor',
+            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, to='district.districtpersonpage', verbose_name='Garant'),
+        ),
+    ]
diff --git a/district/migrations/0099_alter_districtelectionprogrampage_guarantor.py b/district/migrations/0099_alter_districtelectionprogrampage_guarantor.py
new file mode 100644
index 0000000000000000000000000000000000000000..8e544f7b66370d01bd00bd000815b56681c91b2f
--- /dev/null
+++ b/district/migrations/0099_alter_districtelectionprogrampage_guarantor.py
@@ -0,0 +1,19 @@
+# Generated by Django 4.0.7 on 2022-08-11 19:27
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('district', '0098_alter_districtelectionprogrampage_guarantor'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='districtelectionprogrampage',
+            name='guarantor',
+            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='district.districtpersonpage', verbose_name='Garant'),
+        ),
+    ]
diff --git a/district/models.py b/district/models.py
index b3530f5903119b760c34d8971b009c40d7a13491..ba7345ed7dbd23a4b11a82b4f70de698a2c165c7 100644
--- a/district/models.py
+++ b/district/models.py
@@ -856,7 +856,11 @@ class DistrictElectionProgramPage(
     ### FIELDS
 
     guarantor = models.ForeignKey(
-        "district.DistrictPersonPage", verbose_name="Garant", on_delete=models.PROTECT
+        "district.DistrictPersonPage",
+        verbose_name="Garant",
+        on_delete=models.PROTECT,
+        blank=True,
+        null=True,
     )
     image = models.ForeignKey(
         "wagtailimages.Image",
@@ -917,6 +921,11 @@ class DistrictElectionCampaignPage(DistrictElectionBasePage):
         max_length=128,
         help_text="Např. Program pro magistrát.",
     )
+    show_program_points_inline = models.BooleanField(
+        "Zobrazit obsah programu na jedné stránce",
+        default=False,
+        help_text="Hodí se v případě spousty krátkých bodů programu, z nichž si většina nezaslouží vlastní stránku."
+    )
     hero_headline = models.CharField(
         "Banner headline",
         max_length=128,
@@ -976,6 +985,7 @@ class DistrictElectionCampaignPage(DistrictElectionBasePage):
                 FieldPanel("number"),
                 FieldPanel("candidate_list_title"),
                 FieldPanel("program_point_list_title"),
+                FieldPanel("show_program_points_inline"),
                 FieldPanel("content"),
             ],
             "Personalizace",
diff --git a/district/static/district/svg/theme-icons/sport-plavec.svg b/district/static/district/svg/theme-icons/sport-plavec.svg
new file mode 100644
index 0000000000000000000000000000000000000000..a729167596af8f2672c3f5806a22880efe4c25bc
--- /dev/null
+++ b/district/static/district/svg/theme-icons/sport-plavec.svg
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   width="50mm"
+   height="50mm"
+   version="1.1"
+   viewBox="0 0 50 50"
+   id="svg7">
+  <defs
+     id="defs11" />
+  <metadata
+     id="metadata2">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <path
+     d="m 33.448763,31.618729 c -5.495869,0 -4.690306,-3.439903 -8.266348,-3.470254 -3.688769,0.03184 -2.758339,3.470254 -8.31664,3.470254 -3.405219,0 -4.831647,-1.596384 -5.394414,-2.153084 L 23.645862,19.39827 c -0.28546,-0.146458 -2.745333,-1.578176 -6.525151,-1.578176 -1.089982,0 -2.183433,0.121139 -3.254338,0.365062 l -3.346254,0.76689 c -0.209151,0.04849 -0.418303,0.07173 -0.6243332,0.07173 -1.3796033,0 -2.7713466,-1.110793 -2.7713466,-2.778283 0,-1.264275 0.8697312,-2.408019 2.1539504,-2.701976 l 3.3462534,-0.766891 c 1.479324,-0.338528 2.988129,-0.506145 4.492599,-0.506145 10.414229,0 15.382881,7.446044 15.443579,7.632476 l 2.041224,2.463498 c 1.820973,2.427964 2.748801,5.246136 2.956912,8.185704 -1.083911,0.66769 -2.540688,1.06657 -4.110194,1.06657 z M 0.18566731,38.295627 c 0,-1.312833 0.93823429,-2.479122 2.27621549,-2.72452 4.2073133,-0.770705 3.9454403,-2.556299 6.0352229,-2.556299 2.1695583,0 2.7045773,2.756607 8.3400533,2.756607 4.213383,0 6.305767,-1.91289 6.362998,-1.961449 0.532504,-0.533892 1.236527,-0.796719 1.944105,-0.796719 2.146147,0 2.739263,2.75834 8.341789,2.75834 4.213381,0 6.303163,-1.910287 6.365597,-1.958846 0.531117,-0.533892 1.239996,-0.801661 1.947574,-0.801661 0.699947,0 1.397812,0.262393 1.940637,0.771832 2.515542,2.276216 6.395082,1.08738 6.395082,4.516012 0,1.394343 -1.107326,2.780884 -2.749669,2.780884 -0.847185,0 -3.43817,-0.636473 -5.572175,-1.89381 -1.696106,0.999974 -4.462251,2.066544 -8.32965,2.066544 -3.867398,0 -6.63354,-1.137674 -8.324444,-2.138344 -1.693504,0.999802 -4.463117,2.132274 -8.324445,2.132274 -3.866532,0 -6.638745,-1.135073 -8.3296481,-2.134875 C 6.3622323,40.375006 3.7582418,41.004542 2.9344685,41.004542 1.2955933,41.079112 0.18566731,39.70905 0.18566731,38.295627 Z M 41.885934,23.294284 c -3.065301,0 -5.54963,-2.484326 -5.54963,-5.54963 0,-3.065303 2.484329,-5.54963 5.54963,-5.54963 3.065304,0 5.549633,2.484327 5.549633,5.54963 0,3.060968 -2.562371,5.54963 -5.549633,5.54963 z"
+     id="icon"
+     style="stroke-width:0.0867129" />
+</svg>
diff --git a/district/templates/district/district_election_campaign_page.html b/district/templates/district/district_election_campaign_page.html
index c0c3d0dca1c7f8231f2b7f6b76ed128b21c18f09..a75fa7a3f1b1a8a7445929e8e5f2223dfe6f3743 100644
--- a/district/templates/district/district_election_campaign_page.html
+++ b/district/templates/district/district_election_campaign_page.html
@@ -106,28 +106,55 @@
 
           {% if page.program_points %}
             <template v-if="isCurrentView('program')">
-              <h1 class="head-alt-md text-center py-8 lg:pt-24 lg:pb-8">{{ page.program_point_list_title|default:"Volební program" }}</h1>
-
-              <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
+              <h1
+                class="head-alt-md text-center py-8 lg:pt-24 {% if not page.show_program_points_inline %}lg:pb-8{% else %}pb-0{% endif %}"
+              >{{ page.program_point_list_title|default:"Volební program" }}</h1>
+              {% if page.show_program_points_inline %}
                 {% for program_point in page.program_points %}
-                  <div class="card card--hoveractive">
-                    <a href="{% pageurl program_point %}">
-                      {% image program_point.image width-357 as list_image %}
-                      <img src="{{ list_image.url }}" alt="{{ program_point.title }}" class="w-full h-48 object-cover">
-                    </a>
-                    <div class="card__body p-4">
-                      <h1 class="card-headline mb-2">
-                        <a href="{% pageurl program_point %}">
-                          {{ program_point.title }}
-                        </a>
-                      </h1>
-                      <p class="card-body-text">
-                        {{ program_point.perex }}
-                      </p>
-                    </div>
-                  </div>
+                  <h2 class="head-alt-md mb-2 mt-8">
+                    {{ program_point.title }}
+                  </h2>
+                  <p
+                    class="font-bold text-lg leading-normal {% if program_point.guarantor is not none %}mb-3{% else %}mb-5{% endif %}"
+                  >
+                    {{ program_point.perex }}
+                  </p>
+
+                  {% if program_point.guarantor is not none %}
+                    <p class="mb-5 text-grey-300">
+                      Garant:
+                      <a
+                        href="{{ program_point.guarantor.url }}"
+                      >{{ program_point.guarantor }}</a>
+                    </p>
+                  {% endif %}
+
+                  {% for block in program_point.content %}
+                    {% include_block block %}
+                  {% endfor %}
                 {% endfor %}
-              </div>
+              {% else %}
+                <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
+                  {% for program_point in page.program_points %}
+                    <div class="card card--hoveractive">
+                      <a href="{% pageurl program_point %}">
+                        {% image program_point.image width-357 as list_image %}
+                        <img src="{{ list_image.url }}" alt="{{ program_point.title }}" class="w-full h-48 object-cover">
+                      </a>
+                      <div class="card__body p-4">
+                        <h1 class="card-headline mb-2">
+                          <a href="{% pageurl program_point %}">
+                            {{ program_point.title }}
+                          </a>
+                        </h1>
+                        <p class="card-body-text">
+                          {{ program_point.perex }}
+                        </p>
+                      </div>
+                    </div>
+                  {% endfor %}
+                </div>
+              {% endif %}
             </template>
           {% endif %}
         </section>
diff --git a/district/templates/district/district_election_program_page.html b/district/templates/district/district_election_program_page.html
index 92306473114ad882cc2a734f7ba09d1d67857644..6a8b035700bcd3e00b6ad473ddc5861bb9fcd318 100644
--- a/district/templates/district/district_election_program_page.html
+++ b/district/templates/district/district_election_program_page.html
@@ -3,7 +3,11 @@
 
 {% block content %}
   <div class="lg:flex lg:space-x-8 xl:space-x-16">
-    <section class="lg:w-3/5 xl:w-2/3">
+    <section
+      {% if page.guarantor is not none %}
+        class="lg:w-3/5 xl:w-2/3"
+      {% endif %}
+    >
       <h1 class="head-alt-md md:head-alt-lg max-w-5xl mb-4">
         {{ page.title }}
       </h1>
@@ -16,17 +20,19 @@
       {% endfor %}
     </section>
 
-    <section class="pt-8 lg:w-2/5 xl:w-1/3 lg:pt-0">
-      <div class="lg:card lg:elevation-10">
-        <div class="lg:card__body">
-          <h2 class="head-heavy-sm mb-4"><a href="{% pageurl page.root_election_page %}">{{ page.root_election_page.title }}</a></h2>
+    {% if page.guarantor is not none %}
+      <section class="pt-8 lg:w-2/5 xl:w-1/3 lg:pt-0">
+        <div class="lg:card lg:elevation-10">
+          <div class="lg:card__body">
+            <h2 class="head-heavy-sm mb-4"><a href="{% pageurl page.root_election_page %}">{{ page.root_election_page.title }}</a></h2>
 
-          {% include "shared/person_badge_snippet.html" with person_page=page.guarantor title="Garant bodu" %}
-          <hr />
+            {% include "shared/person_badge_snippet.html" with person_page=page.guarantor title="Garant bodu" %}
+            <hr />
 
-          {% include "district/includes/election_subpage_sidebar_content.html" %}
+            {% include "district/includes/election_subpage_sidebar_content.html" %}
+          </div>
         </div>
-      </div>
-    </section>
+      </section>
+    {% endif %}
   </div>
 {% endblock content %}
diff --git a/shared/templates/shared/article_preview.html b/shared/templates/shared/article_preview.html
index b6a1b7c3ae0e5a2f4846965cde6ee0bb149e54f2..f577fed130a45802ab3b4e66515c230a30af7ff2 100644
--- a/shared/templates/shared/article_preview.html
+++ b/shared/templates/shared/article_preview.html
@@ -43,7 +43,7 @@
         </div>
       </div>
 
-      <div class="article-card-meta"  class="c-metadata-block-section__item" >
+      <div class="article-card-meta c-metadata-block-section__item">
         <span itemprop="description" class="article-card-meta__item">
           {{ article.date|date:"SHORT_DATE_FORMAT" }}
           <meta itemprop="datePublished" content="{{ article.last_published_at }}" />