diff --git a/README.md b/README.md
index e04c7c4ff665a2f45bf7f3f5d0131e2b8f49ae61..a54ad214bdf75428b223bae07094ea27cf988f7e 100644
--- a/README.md
+++ b/README.md
@@ -35,6 +35,7 @@ Rozšíření která používáme:
     ├── senat_campaign  = app na weby kandidátů na senátory
     ├── districts       = app na web kraje.pirati.cz
     ├── program2021     = app na prezentaci programu 2021
+    ├── uniweb          = app na univerzalni webove stranky
     ...
     ├── majak           = Django projekt s konfigurací Majáku
     ├── shared          = app se sdílenými static soubory a templaty pro weby
diff --git a/majak/settings/base.py b/majak/settings/base.py
index 017f3f114833b82e2cec53e1bac029cdc0703ccd..1c615875701d56a6070de97700eaabfe55f0b6af 100644
--- a/majak/settings/base.py
+++ b/majak/settings/base.py
@@ -37,6 +37,7 @@ INSTALLED_APPS = [
     "senat_campaign",
     "home",
     "program2021",
+    "uniweb",
     "shared",
     "calendar_utils",
     "users",
diff --git a/shared/static/shared/img/logo_black.svg b/shared/static/shared/img/logo_black.svg
new file mode 100644
index 0000000000000000000000000000000000000000..bb08d45f5bd57d47c5d78806303a90aba1f5d259
--- /dev/null
+++ b/shared/static/shared/img/logo_black.svg
@@ -0,0 +1,39 @@
+<?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"
+   id="Vrstva_1"
+   viewBox="0 0 302.3622 302.36221"
+   version="1.1"
+   width="80mm"
+   height="80mm">
+  <metadata
+     id="metadata1114">
+    <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>
+  <defs
+     id="defs1112" />
+  <style
+     id="style1101">
+    .st0{fill:none}
+  </style>
+  <path
+     d="M 151.52548,2.4e-7 C 110.8891,2.4e-7 73.00773,15.8413 44.768891,44.080139 15.841299,72.318978 -4.1e-7,110.8891 -4.1e-7,150.83673 c 0,40.63637 15.84129941,78.51774 44.08013841,107.44533 28.927592,28.23884 66.808962,44.08014 106.756582,44.08014 40.63638,0 78.51775,-15.8413 106.75659,-44.08014 28.92759,-28.23883 44.08014,-66.80896 44.08014,-106.75658 0,-40.63638 -15.8413,-78.51775 -44.08014,-106.756589 C 230.04322,15.152548 192.16186,2.4000002e-7 151.52548,2.4000002e-7 M 151.52548,287.89841 c -75.762742,0 -137.061685,-61.29895 -137.061685,-137.06168 0,-75.762743 61.298943,-137.061686 137.061685,-137.061686 75.76274,0 137.06168,61.298943 137.06168,137.061686 0,75.76273 -61.29894,137.06168 -137.06168,137.06168"
+     id="path1103"
+     style="stroke-width:6.88752" />
+  <path
+     d="M 106.06783,61.298943 V 39.947626 H 92.981543 v 24.795078 c -8.953779,2.755009 -14.463796,5.510018 -13.086292,7.576274 2.755009,-0.688752 7.576274,-1.377504 13.086292,-0.688752 V 198.36063 c -13.775044,26.17258 6.198769,66.80896 6.198769,66.80896 0,0 -14.463796,-43.39139 17.907558,-64.05396 29.61634,-18.5963 132.92917,-10.33128 132.24042,-68.18646 C 248.63953,50.967661 153.59173,50.967661 106.06783,61.298943 m 42.01389,79.895257 c -4.82127,22.04006 -28.23884,33.0601 -42.70264,42.70263 V 73.00773 c 24.10633,5.510018 52.34517,24.106326 42.70264,68.18647"
+     id="path1105"
+     style="stroke-width:6.88752" />
+</svg>
diff --git a/shared/static/shared/img/logo_white.svg b/shared/static/shared/img/logo_white.svg
new file mode 100644
index 0000000000000000000000000000000000000000..5b73cdcbea5cf6d7dba3affbf9b504110cff781e
--- /dev/null
+++ b/shared/static/shared/img/logo_white.svg
@@ -0,0 +1,39 @@
+<?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"
+   id="Vrstva_1"
+   viewBox="0 0 302.3622 302.36221"
+   version="1.1"
+   width="80mm"
+   height="80mm">
+  <metadata
+     id="metadata1114">
+    <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>
+  <defs
+     id="defs1112" />
+  <style
+     id="style1101">
+    .st0{fill:none}
+  </style>
+  <path
+     d="M 151.52548,2.4e-7 C 110.8891,2.4e-7 73.00773,15.8413 44.768891,44.080139 15.841299,72.318978 -4.1e-7,110.8891 -4.1e-7,150.83673 c 0,40.63637 15.84129941,78.51774 44.08013841,107.44533 28.927592,28.23884 66.808962,44.08014 106.756582,44.08014 40.63638,0 78.51775,-15.8413 106.75659,-44.08014 28.92759,-28.23883 44.08014,-66.80896 44.08014,-106.75658 0,-40.63638 -15.8413,-78.51775 -44.08014,-106.756589 C 230.04322,15.152548 192.16186,2.4000002e-7 151.52548,2.4000002e-7 M 151.52548,287.89841 c -75.762742,0 -137.061685,-61.29895 -137.061685,-137.06168 0,-75.762743 61.298943,-137.061686 137.061685,-137.061686 75.76274,0 137.06168,61.298943 137.06168,137.061686 0,75.76273 -61.29894,137.06168 -137.06168,137.06168"
+     id="path1103"
+     style="stroke-width:6.88752;fill:#ffffff" />
+  <path
+     d="M 106.06783,61.298943 V 39.947626 H 92.981543 v 24.795078 c -8.953779,2.755009 -14.463796,5.510018 -13.086292,7.576274 2.755009,-0.688752 7.576274,-1.377504 13.086292,-0.688752 V 198.36063 c -13.775044,26.17258 6.198769,66.80896 6.198769,66.80896 0,0 -14.463796,-43.39139 17.907558,-64.05396 29.61634,-18.5963 132.92917,-10.33128 132.24042,-68.18646 C 248.63953,50.967661 153.59173,50.967661 106.06783,61.298943 m 42.01389,79.895257 c -4.82127,22.04006 -28.23884,33.0601 -42.70264,42.70263 V 73.00773 c 24.10633,5.510018 52.34517,24.106326 42.70264,68.18647"
+     id="path1105"
+     style="stroke-width:6.88752;fill:#ffffff" />
+</svg>
diff --git a/uniweb/__init__.py b/uniweb/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/uniweb/apps.py b/uniweb/apps.py
new file mode 100644
index 0000000000000000000000000000000000000000..04014c2fc2b9a77f34d8b98f21ead63e3179dddd
--- /dev/null
+++ b/uniweb/apps.py
@@ -0,0 +1,5 @@
+from django.apps import AppConfig
+
+
+class UniwebConfig(AppConfig):
+    name = "uniweb"
diff --git a/uniweb/migrations/0001_initial.py b/uniweb/migrations/0001_initial.py
new file mode 100644
index 0000000000000000000000000000000000000000..a66edfeba9657ce2b525b7bd63f9bddea18c788f
--- /dev/null
+++ b/uniweb/migrations/0001_initial.py
@@ -0,0 +1,258 @@
+# Generated by Django 3.1.1 on 2020-09-08 21:05
+
+import django.db.models.deletion
+import wagtail.core.blocks
+import wagtail.core.fields
+import wagtail.images.blocks
+import wagtailmetadata.models
+from django.db import migrations, models
+
+import uniweb.models
+
+
+class Migration(migrations.Migration):
+
+    initial = True
+
+    dependencies = [
+        ("wagtailcore", "0052_pagelogentry"),
+        ("wagtailimages", "0022_uploadedimage"),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name="UniwebHomePage",
+            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",
+                    ),
+                ),
+                (
+                    "content",
+                    wagtail.core.fields.StreamField(
+                        [
+                            (
+                                "text_section",
+                                wagtail.core.blocks.StructBlock(
+                                    [
+                                        (
+                                            "title",
+                                            wagtail.core.blocks.CharBlock(
+                                                label="nadpis", required=False
+                                            ),
+                                        ),
+                                        (
+                                            "text",
+                                            wagtail.core.blocks.RichTextBlock(
+                                                features=[
+                                                    "h3",
+                                                    "h4",
+                                                    "h5",
+                                                    "bold",
+                                                    "italic",
+                                                    "ol",
+                                                    "ul",
+                                                    "hr",
+                                                    "link",
+                                                    "document-link",
+                                                    "image",
+                                                    "superscript",
+                                                    "subscript",
+                                                    "strikethrough",
+                                                    "blockquote",
+                                                ],
+                                                label="text",
+                                            ),
+                                        ),
+                                    ]
+                                ),
+                            ),
+                            (
+                                "gallery_section",
+                                wagtail.core.blocks.StructBlock(
+                                    [
+                                        (
+                                            "title",
+                                            wagtail.core.blocks.CharBlock(
+                                                label="nadpis", required=False
+                                            ),
+                                        ),
+                                        (
+                                            "images",
+                                            wagtail.core.blocks.ListBlock(
+                                                wagtail.images.blocks.ImageChooserBlock(
+                                                    label="obrázek"
+                                                )
+                                            ),
+                                        ),
+                                    ]
+                                ),
+                            ),
+                        ],
+                        blank=True,
+                        verbose_name="obsah stránky",
+                    ),
+                ),
+                (
+                    "matomo_id",
+                    models.IntegerField(
+                        blank=True,
+                        null=True,
+                        verbose_name="Matomo ID pro sledování návštěvnosti",
+                    ),
+                ),
+                (
+                    "top_menu",
+                    wagtail.core.fields.StreamField(
+                        [
+                            (
+                                "item",
+                                wagtail.core.blocks.StructBlock(
+                                    [
+                                        (
+                                            "name",
+                                            wagtail.core.blocks.CharBlock(
+                                                label="název"
+                                            ),
+                                        ),
+                                        (
+                                            "page",
+                                            wagtail.core.blocks.PageChooserBlock(
+                                                label="stránka"
+                                            ),
+                                        ),
+                                    ]
+                                ),
+                            )
+                        ],
+                        blank=True,
+                        verbose_name="horní menu",
+                    ),
+                ),
+                (
+                    "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": "Univerzální web",},
+            bases=(
+                wagtailmetadata.models.MetadataMixin,
+                "wagtailcore.page",
+                models.Model,
+            ),
+        ),
+        migrations.CreateModel(
+            name="UniwebFlexiblePage",
+            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",
+                    ),
+                ),
+                (
+                    "content",
+                    wagtail.core.fields.StreamField(
+                        [
+                            (
+                                "text_section",
+                                wagtail.core.blocks.StructBlock(
+                                    [
+                                        (
+                                            "title",
+                                            wagtail.core.blocks.CharBlock(
+                                                label="nadpis", required=False
+                                            ),
+                                        ),
+                                        (
+                                            "text",
+                                            wagtail.core.blocks.RichTextBlock(
+                                                features=[
+                                                    "h3",
+                                                    "h4",
+                                                    "h5",
+                                                    "bold",
+                                                    "italic",
+                                                    "ol",
+                                                    "ul",
+                                                    "hr",
+                                                    "link",
+                                                    "document-link",
+                                                    "image",
+                                                    "superscript",
+                                                    "subscript",
+                                                    "strikethrough",
+                                                    "blockquote",
+                                                ],
+                                                label="text",
+                                            ),
+                                        ),
+                                    ]
+                                ),
+                            ),
+                            (
+                                "gallery_section",
+                                wagtail.core.blocks.StructBlock(
+                                    [
+                                        (
+                                            "title",
+                                            wagtail.core.blocks.CharBlock(
+                                                label="nadpis", required=False
+                                            ),
+                                        ),
+                                        (
+                                            "images",
+                                            wagtail.core.blocks.ListBlock(
+                                                wagtail.images.blocks.ImageChooserBlock(
+                                                    label="obrázek"
+                                                )
+                                            ),
+                                        ),
+                                    ]
+                                ),
+                            ),
+                        ],
+                        blank=True,
+                        verbose_name="obsah stránky",
+                    ),
+                ),
+                (
+                    "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": "Flexibilní stránka",},
+            bases=(
+                "wagtailcore.page",
+                uniweb.models.SubpageMixin,
+                wagtailmetadata.models.MetadataMixin,
+                models.Model,
+            ),
+        ),
+    ]
diff --git a/uniweb/migrations/__init__.py b/uniweb/migrations/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/uniweb/models.py b/uniweb/models.py
new file mode 100644
index 0000000000000000000000000000000000000000..c27f88849203255edce007f71ea99568e347baef
--- /dev/null
+++ b/uniweb/models.py
@@ -0,0 +1,158 @@
+from django.db import models
+from django.utils.translation import gettext_lazy
+from wagtail.admin.edit_handlers import (
+    FieldPanel,
+    HelpPanel,
+    MultiFieldPanel,
+    StreamFieldPanel,
+)
+from wagtail.core import blocks
+from wagtail.core.fields import StreamField
+from wagtail.core.models import Page
+from wagtail.images.edit_handlers import ImageChooserPanel
+from wagtailmetadata.models import MetadataPageMixin
+
+from tuning import help
+
+RICH_TEXT_FEATURES = [
+    "h3",
+    "h4",
+    "h5",
+    "bold",
+    "italic",
+    "ol",
+    "ul",
+    "hr",
+    "link",
+    "document-link",
+    "image",
+    "superscript",
+    "subscript",
+    "strikethrough",
+    "blockquote",
+]
+
+
+class TextSectionBlock(blocks.StructBlock):
+    title = blocks.CharBlock(label="nadpis", required=False)
+    text = blocks.RichTextBlock(label="text", features=RICH_TEXT_FEATURES)
+
+    class Meta:
+        label = "textová sekce"
+
+
+class MenuItemBlock(blocks.StructBlock):
+    name = blocks.CharBlock(label="název")
+    page = blocks.PageChooserBlock(label="stránka")
+
+    class Meta:
+        label = "stránka"
+
+
+class SubpageMixin:
+    """Must be used in class definition before MetadataPageMixin!"""
+
+    @property
+    def root_page(self):
+        if not hasattr(self, "_root_page"):
+            self._root_page = self.get_ancestors().type(UniwebHomePage).specific().get()
+        return self._root_page
+
+    def get_meta_image(self):
+        return self.search_image or self.root_page.get_meta_image()
+
+
+class UniwebHomePage(MetadataPageMixin, Page):
+    ### FIELDS
+
+    content = StreamField(
+        [("text_section", TextSectionBlock()),],
+        verbose_name="Obsah stránky",
+        blank=True,
+    )
+    # settings
+    matomo_id = models.IntegerField(
+        "Matomo ID pro sledování návštěvnosti", blank=True, null=True
+    )
+    top_menu = StreamField(
+        [("item", MenuItemBlock())], verbose_name="horní menu", blank=True,
+    )
+
+    ### PANELS
+
+    content_panels = Page.content_panels + [
+        StreamFieldPanel("content"),
+    ]
+
+    promote_panels = [
+        MultiFieldPanel(
+            [
+                FieldPanel("seo_title"),
+                FieldPanel("search_description"),
+                ImageChooserPanel("search_image"),
+                HelpPanel(help.build(help.IMPORTANT_TITLE)),
+            ],
+            gettext_lazy("Common page configuration"),
+        ),
+    ]
+
+    settings_panels = [
+        FieldPanel("matomo_id"),
+        StreamFieldPanel("top_menu"),
+    ]
+
+    ### RELATIONS
+
+    subpage_types = [
+        "uniweb.UniwebFlexiblePage",
+    ]
+
+    ### OTHERS
+
+    class Meta:
+        verbose_name = "Univerzální web"
+
+    @property
+    def root_page(self):
+        return self
+
+
+class UniwebFlexiblePage(Page, SubpageMixin, MetadataPageMixin):
+    ### FIELDS
+
+    content = StreamField(
+        [("text_section", TextSectionBlock()),],
+        verbose_name="Obsah stránky",
+        blank=True,
+    )
+
+    ### PANELS
+
+    promote_panels = [
+        MultiFieldPanel(
+            [
+                FieldPanel("slug"),
+                FieldPanel("seo_title"),
+                FieldPanel("search_description"),
+                ImageChooserPanel("search_image"),
+                HelpPanel(help.build(help.NO_SEO_TITLE, help.NO_SEARCH_IMAGE)),
+            ],
+            gettext_lazy("Common page configuration"),
+        ),
+    ]
+
+    content_panels = Page.content_panels + [
+        StreamFieldPanel("content"),
+    ]
+
+    settings_panels = []
+
+    ### RELATIONS
+
+    parent_page_types = ["uniweb.UniwebHomePage"]
+    subpage_types = []
+
+    ### OTHERS
+
+    class Meta:
+        verbose_name = "Flexibilní stránka"
diff --git a/uniweb/static/uniweb/assets/css/icons.css b/uniweb/static/uniweb/assets/css/icons.css
new file mode 100644
index 0000000000000000000000000000000000000000..7218ce4bf326a8ec64edd73a7a8be8dea58bec4c
--- /dev/null
+++ b/uniweb/static/uniweb/assets/css/icons.css
@@ -0,0 +1,63 @@
+@font-face {
+  font-family: 'icomoon';
+  src:  url('../../icons/icomoon.eot?qfo5nx');
+  src:  url('../../icons/icomoon.eot?qfo5nx#iefix') format('embedded-opentype'),
+    url('../../icons/icomoon.ttf?qfo5nx') format('truetype'),
+    url('../../icons/icomoon.woff?qfo5nx') format('woff'),
+    url('../../icons/icomoon.svg?qfo5nx#icomoon') format('svg');
+  font-weight: normal;
+  font-style: normal;
+  font-display: block;
+}
+
+i {
+  /* use !important to prevent issues with browser extensions that change fonts */
+  font-family: 'icomoon' !important;
+  speak: none;
+  font-style: normal;
+  font-weight: normal;
+  font-variant: normal;
+  text-transform: none;
+  line-height: 1;
+
+  /* Better Font Rendering =========== */
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+
+.icon-heart:before {
+  content: "\f004";
+}
+.icon-linkedin:before {
+  content: "\f08c";
+}
+.icon-twitter:before {
+  content: "\f099";
+}
+.icon-youtube:before {
+  content: "\f167";
+}
+.icon-instagram:before {
+  content: "\f16d";
+}
+.icon-flickr:before {
+  content: "\f16e";
+}
+.icon-facebook-f:before {
+  content: "\f39e";
+}
+.icon-check:before {
+  content: "\f00c";
+}
+.icon-chevron-left:before {
+  content: "\f053";
+}
+.icon-chevron-right:before {
+  content: "\f054";
+}
+.icon-external-link:before {
+  content: "\f08e";
+}
+.icon-calendar:before {
+  content: "\f133";
+}
diff --git a/uniweb/static/uniweb/assets/css/style.css b/uniweb/static/uniweb/assets/css/style.css
new file mode 100644
index 0000000000000000000000000000000000000000..bf3d78161cd1a559e7b90d0855dee1a8b649ef33
--- /dev/null
+++ b/uniweb/static/uniweb/assets/css/style.css
@@ -0,0 +1,1195 @@
+/*
+*
+* Custom styling for Piráti donate website
+* Author: Daniel Hlavacek
+* Author's website: https://danielhlavacek.cz/
+*
+*/
+
+/* GENERAL */
+
+body {
+  font-size: 16px;
+  /*padding-top: 79px;*/
+  font-family: "Roboto Condensed", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
+}
+
+a:hover {
+  color: #757575;
+}
+
+/* HEADINGS */
+
+h1, h1.lead {
+  font-size: 3.6rem;
+}
+
+h2, h2.lead {
+  font-size: 2.8rem;
+}
+
+h3, h3.lead {
+  font-size: 2.1rem;
+}
+
+h4, h4.lead {
+  font-size: 1.65rem;
+}
+
+h5, h5.lead {
+  font-size: 1.3rem;
+}
+
+h6, h6.lead {
+  font-size: 1rem;
+}
+
+@media screen and (max-width: 500px) {
+  h1, h1.lead {
+    font-size: 3rem;
+  }
+  h2, h2.lead {
+    font-size: 2.4rem;
+  }
+  h3, h3.lead {
+    font-size: 1.85rem;
+  }
+  h4, h4.lead {
+    font-size: 1.4rem;
+  }
+  h5, h5.lead {
+    font-size: 1.2rem;
+  }
+  h6, h6.lead {
+    font-size: 1rem;
+  }
+}
+
+h1.lead, h2.lead, h3.lead, h4.lead, h5.lead, h6.lead {
+  font-family: "Bebas Neue", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
+  line-height: 1;
+  text-transform: uppercase;
+}
+
+
+
+h1.homepage-heading {
+  font-size: 6rem;
+}
+h1.heading {
+  font-size: 4rem;
+}
+h2.page-subheading {
+  font-size: 4rem;
+}
+h3.page-subheading {
+  font-size: 3.8rem;
+}
+
+@media screen and (max-width: 1200px) {
+  h1.homepage-heading {
+    font-size: 5.4rem;
+  }
+  h1.heading {
+    font-size: 4rem;
+  }
+  h2.page-subheading {
+    font-size: 4rem;
+  }
+  h3.page-subheading {
+    font-size: 3.6rem;
+  }
+}
+
+@media screen and (max-width: 991px) {
+  h1.homepage-heading {
+    font-size: 4.4rem;
+  }
+  h1.heading {
+    font-size: 3.7rem;
+  }
+  h2.page-subheading {
+    font-size: 3.7rem;
+  }
+  h3.page-subheading {
+    font-size: 3.2rem;
+  }
+}
+
+@media screen and (max-width: 440px) {
+  h1.homepage-heading {
+    font-size: 3.8rem;
+  }
+  h1.heading {
+    font-size: 3.4rem;
+  }
+  h2.page-subheading {
+    font-size: 3.4rem;
+  }
+  h3.page-subheading {
+    font-size: 3rem;
+  }
+}
+
+@media screen and (max-width: 370px) {
+  h1.homepage-heading {
+    font-size: 3.6rem;
+  }
+  h2.page-subheading {
+    font-size: 3rem;
+  }
+  h3.page-subheading {
+    font-size: 2.6rem;
+  }
+}
+
+@media screen and (max-width: 330px) {
+  h1.homepage-heading {
+    font-size: 3rem;
+  }
+  h2.page-subheading {
+    font-size: 2.8rem;
+  }
+  h3.page-subheading {
+    font-size: 2.3rem;
+  }
+}
+
+
+/* BUTTONS */
+
+.btn-dark {
+  background: #000000;
+}
+
+.btn-light {
+  background: #CCCCCC;
+}
+
+.btn-dark:hover, .btn-light:hover {
+  background: #222222;
+  color: #FFFFFF;
+}
+
+.btn {
+  border-radius: 0;
+  padding: 0.7rem 1.6rem;
+}
+
+.btn {
+  font-family: "Roboto Condensed", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
+}
+
+.btn-lg {
+  border-radius: 0;
+  padding: 0.7rem 3rem;
+}
+
+/* TOOLS AND FIXES */
+
+.lazyload, .lazyloading {
+  opacity: 0;
+}
+
+.lazyloaded {
+  opacity: 1;
+  transition: opacity .5s;
+}
+
+/* SECTIONS */
+
+.section--primary {
+  background: #ffffff;
+  color: #000000;
+}
+
+.section--alternate {
+  background: #f7f7f7;
+  color: #000000;
+}
+
+.section--black {
+  background: #000000;
+  color: #ffffff;
+}
+
+/* SECTION SIZING */
+
+section {
+  padding: 4rem 0rem;
+}
+
+.section--lead {
+  padding: 6rem 0rem;
+}
+
+.section--no-bottom-padding {
+  padding-bottom: 0rem;
+}
+
+.section--form {
+  padding-top: 2rem;
+}
+
+@media screen and (max-width: 991px) {
+  section {
+    padding: 3.5rem 0rem;
+  }
+  .section--lead {
+    padding: 4rem 0rem;
+  }
+}
+
+@media screen and (max-width: 768px) {
+  section {
+    padding: 3rem 0rem;
+  }
+  .section--lead {
+    padding: 3.5rem 0rem;
+  }
+}
+
+@media screen and (max-width: 575px) {
+  section {
+    padding: 2.5rem 0rem;
+  }
+  .section--lead {
+    padding: 3rem 0rem;
+  }
+}
+
+/* HEADER */
+
+.navbar {
+  background: #212121;
+}
+
+@media screen and (max-width: 991.99px) {
+  .navbar {
+    position: fixed;
+    top: 0;
+    right: 0;
+    left: 0;
+    z-index: 1030;
+  }
+
+  main {
+    margin-top: 90px;
+  }
+}
+
+.navbar-dark .navbar-toggler-icon {
+  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgb(255, 255, 255)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
+}
+
+.navbar-dark .navbar-nav .nav-link {
+	color: rgba(255,255,255);
+}
+
+.navbar-dark .navbar-toggler {
+  color: #ffffff;
+  border: none;
+  margin-right: -1rem;
+}
+
+.nav-link {
+  display: block;
+  padding: .5rem 1rem;
+  text-transform: uppercase;
+  font-family: "Roboto Condensed", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
+  font-size: 1.2rem;
+}
+
+.navbar-brand {
+  font-family: "Bebas Neue", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
+  font-size: 2.2rem;
+  text-transform: uppercase;
+}
+
+@media screen and (max-width: 420px) {
+  .navbar-brand {
+    font-size: 2rem;
+  }
+}
+
+@media screen and (max-width: 390px) {
+  .navbar-brand {
+    font-size: 1.8rem;
+  }
+}
+
+@media screen and (max-width: 350px) {
+  .navbar-brand {
+    font-size: 1.6rem;
+  }
+}
+
+.brand-wrapper {
+  height: 90px;
+  display: flex;
+  align-items: center;
+  justify-content: flex-start;
+}
+
+.brand-wrapper img {
+  width: 160px;
+
+}
+
+@media screen and (max-width: 575px) {
+  .brand-wrapper {
+    height: 74px;
+  }
+  .brand-wrapper img {
+    width: 150px;
+  }
+}
+
+@media screen and (min-width: 1200px) {
+  .navbar-expand-xl .navbar-nav .nav-link {
+    padding-right: 0.8rem;
+    padding-left: 0.8rem;
+  }
+}
+
+@media screen and (min-width: 576px) and (max-width: 1199.99px) {
+  .navbar .navbar-collapse .navbar-nav {
+    margin-top: 1rem;
+    margin-bottom: 1rem;
+  }
+}
+
+.header__socials {
+  display: flex;
+  margin-left: -0.5rem;
+}
+
+.header__socials a {
+  padding: 0.5rem;
+}
+
+.header__socials a i {
+	font-size: 1rem;
+	color: white;
+}
+
+.header__socials.header__socials--mobile {
+  margin-left: -0.7rem;
+  padding-top: 0.4rem;
+}
+
+.header__socials.header__socials--mobile a {
+  padding: 0.7rem;
+}
+
+.header__socials.header__socials--mobile a i {
+  font-size: 1.3rem;
+  color: rgba(255,255,255,.5);
+}
+
+.header_link.header_link--desktop {
+	color: white;
+}
+
+.header_link.header_link--mobile {
+	color: rgba(255,255,255,.5);
+}
+
+
+/*--/ Hamburger Navbar /--*/
+
+.navbar-toggler {
+  position: relative;
+}
+
+.navbar-toggler:focus,
+.navbar-toggler:active {
+  outline: 0;
+}
+
+.navbar-toggler span {
+  display: block;
+  background-color: #ffffff;
+  height: 2px;
+  width: 30px;
+  margin-top: 8px;
+  margin-bottom: 8px;
+  -webkit-transform: rotate(0deg);
+  transform: rotate(0deg);
+  left: 0;
+  opacity: 1;
+}
+
+.navbar-toggler span:nth-child(1),
+.navbar-toggler span:nth-child(3) {
+  transition: -webkit-transform .35s ease-in-out;
+  transition: transform .35s ease-in-out;
+  transition: transform .35s ease-in-out, -webkit-transform .35s ease-in-out;
+}
+
+.navbar-toggler:not(.collapsed) span:nth-child(1) {
+  position: absolute;
+  left: 12px;
+  top: 10px;
+  -webkit-transform: rotate(135deg);
+  transform: rotate(135deg);
+  opacity: 0.9;
+}
+
+.navbar-toggler:not(.collapsed) span:nth-child(2) {
+  height: 12px;
+  visibility: hidden;
+  background-color: transparent;
+}
+
+.navbar-toggler:not(.collapsed) span:nth-child(3) {
+  position: absolute;
+  left: 12px;
+  top: 10px;
+  -webkit-transform: rotate(-135deg);
+  transform: rotate(-135deg);
+  opacity: 0.9;
+}
+
+
+/* FOOTER */
+
+.footer__top {
+  background: #212121;
+}
+
+.footer__bottom {
+  background: #000000;
+}
+
+footer {
+  color: #8a8a8a;
+}
+
+footer a {
+  color: #8a8a8a;
+}
+
+footer a:hover {
+  color: #ffffff;
+  text-decoration: none;
+}
+
+footer h1, footer h2, footer h3, footer h4, footer h5, footer h6 {
+  color: #ffffff;
+}
+
+.footer__top {
+  padding: 4rem 0rem;
+}
+
+@media screen and (max-width: 991px) {
+  .footer__top {
+    padding: 3.5rem 0rem;
+  }
+}
+
+@media screen and (max-width: 768px) {
+  .footer__top {
+    padding: 3rem 0rem;
+  }
+}
+
+@media screen and (max-width: 575px) {
+  .footer__top {
+    padding: 2.5rem 0rem;
+  }
+}
+
+.footer__bottom {
+  padding: 2rem 0rem;
+}
+
+.footer__bottom a {
+  border-bottom: 1px dotted;
+}
+
+.footer__bottom a:hover {
+  border-bottom: none;
+  text-decoration: none;
+  color: #8a8a8a;
+}
+
+.footer__list-heading {
+  text-transform: uppercase;
+  margin-bottom: 1.6rem;
+}
+
+.footer__menu {
+  padding-left: 0;
+  list-style: none;
+}
+
+.footer__menu li {
+  padding: 0.15rem 0;
+}
+
+.footer__logo img {
+  width: 180px;
+}
+
+/* UVOD */
+
+.uvod__image-wrapper {
+  max-width: 180px;
+  display: inline-block;
+}
+
+.uvod__button {
+  margin-right: 2rem;
+}
+
+
+
+/* PROJEKTY */
+
+.project {
+  box-shadow: 0 .25rem 1.875rem rgba(42, 53, 79, .28);
+  border-radius: 0;
+  border: 0;
+  height: 100%;
+  color: black;
+  transition: all 0.5s ease-in-out;
+}
+
+
+.project:hover {
+  text-decoration: none;
+  box-shadow: 0 .25rem 1.875rem rgba(42, 53, 79, 0.73);
+  color: black;
+}
+
+.project:hover .card-img-top {
+  opacity: 0.9;
+}
+
+.project .card-footer {
+  border-radius: 0;
+  border: 0;
+}
+
+.card-footer .text-muted {
+  color: #707070 !important;
+}
+
+.project .card-img, .project .card-img-top {
+  border-top-left-radius: 0;
+  border-top-right-radius: 0;
+}
+
+.project .card-body h5 {
+	font-weight: bold;
+}
+
+.project .card-body p:last-child {
+	margin-bottom: 0;
+}
+
+.project .card-body p {
+	color: #797676;
+}
+
+.project .card-footer p {
+  margin-bottom: 0;
+}
+
+.project .progress-bar {
+  background-color: #04a548;
+}
+
+.project .progress {
+  margin-bottom: 0.8rem;
+}
+
+.project__flags {
+	position: absolute;
+	top: 0;
+	margin-bottom: 0;
+	z-index: 1;
+	left: -0.25rem;
+	display: flex;
+	flex-direction: column;
+  align-items: flex-start;
+  list-style: none;
+  padding-left: 0;
+}
+
+.project__flag {
+	margin-top: .5rem;
+	color: #fff;
+	background: #2fb5d2;
+  padding: .25rem .6rem;
+  font-weight: bold;
+}
+
+.project__flag.almost {
+  background: #04a548;
+}
+
+.project__flag.new {
+  background: #04a548;
+}
+
+.project-images {
+  margin-right: -7.5px;
+  margin-left: -7.5px;
+}
+
+.project-images > div{
+  padding-right: 7.5px;
+  padding-left: 7.5px;
+  margin-bottom: 15px;
+}
+
+.project-donate-form .progress-bar {
+  background-color: #04a548;
+}
+
+
+/* KRAJE */
+
+.region {
+  box-shadow: 0 .25rem 1.875rem rgba(42, 53, 79, .28);
+  border-radius: 0;
+  border: 0;
+  height: 100%;
+  color: black;
+  transition: all 0.5s ease-in-out;
+}
+
+
+.region:hover {
+  text-decoration: none;
+  box-shadow: 0 .25rem 1.875rem rgba(42, 53, 79, 0.73);
+  color: black;
+}
+
+.region:hover .card-img-top {
+  opacity: 0.9;
+}
+
+.region .card-img, .region .card-img-top {
+  border-top-left-radius: 0;
+  border-top-right-radius: 0;
+}
+
+.region .card-body h5 {
+	font-weight: bold;
+}
+
+.region .card-body p:last-child {
+	margin-bottom: 0;
+}
+
+.region .card-body p {
+	color: #797676;
+}
+
+
+/* DONATE FORM */
+.donate-form {
+  display: flex;
+  box-shadow: 0 .25rem 1.875rem rgba(42, 53, 79, .28);
+}
+
+.donate-form__left {
+  background: #090A0B;
+  color: white;
+  padding: 1.8rem;
+  flex: 0 0 auto;
+  justify-content: space-between;
+  display: flex;
+  flex-direction: column;
+}
+
+.donate-form__icon {
+  max-width: 7rem;
+  margin-bottom: 4rem;
+}
+
+.donate-form__right {
+  width: 100%;
+  padding: 1.8rem;
+}
+
+.custom-control-input:checked ~ .custom-control-label::before {
+	color: #fff;
+	border-color: #d02d40;
+	background-color: #d02d40;
+}
+
+.custom-control-input:not(:disabled):active ~ .custom-control-label::before {
+	color: #fff;
+	background-color: #b3ffd1;
+	border-color: #b3ffd1;
+}
+
+.custom-control-input:focus ~ .custom-control-label::before {
+	box-shadow: 0 0 0 .2rem rgba(0, 255, 147, 0.25);
+}
+
+.custom-control-label {
+    line-height: 1.2;
+    padding-top: .7rem;
+}
+
+.custom-control-label::after {
+	top: .5rem;
+	left: -2.5rem;
+	width: 2rem;
+	height: 2rem;
+}
+
+.custom-control-label::before {
+	top: .5rem;
+	left: -2.5rem;
+	width: 2rem;
+	height: 2rem;
+}
+
+.custom-control-input {
+	width: 2rem;
+	height: 2.5rem;
+}
+
+.custom-control {
+	min-height: 2.5rem;
+	padding-left: 2.5rem;
+}
+
+.input-group-lg > .form-control,
+.input-group-lg > .input-group-append > .input-group-text {
+	border-radius: 0;
+}
+
+.form-control-lg {
+	border-radius: 0;
+}
+
+.form-control:focus {
+	border-color: #28a745;
+	box-shadow: 0 0 0 .2rem rgba(43, 174, 70, 0.25);
+}
+
+@media screen and (min-width: 1200px) {
+  .donate-form__left {
+    width: 16rem;
+  }
+}
+
+@media screen and (max-width: 991px) {
+  .donate-form {
+    flex-direction: column;
+  }
+  .donate-form__left {
+    flex-direction: row;
+    align-items: center;
+  }
+  .donate-form__icon {
+    max-width: 2.5rem;
+    margin-bottom: 0rem;
+    order: 1;
+    margin-left: 1.8rem;
+  }
+  .donate-form__left-content {
+    order: 0;
+  }
+}
+
+.donate-form .custom-amount {
+  max-width: 15rem;
+}
+
+
+/* REGION DONATE FORM */
+
+.region-donate-form {
+  display: flex;
+  box-shadow: 0 .25rem 1.875rem rgba(42, 53, 79, .28);
+  flex-direction: column;
+}
+
+.region-donate-form__left {
+  background: #090A0B;
+  color: white;
+  padding: 1.8rem;
+  flex: 0 0 auto;
+  justify-content: space-between;
+  display: flex;
+  flex-direction: row;
+  align-items: center;
+}
+
+.region-donate-form__icon {
+  max-width: 2.5rem;
+  margin-bottom: 0rem;
+  order: 1;
+  margin-left: 1.8rem;
+}
+
+.region-donate-form__right {
+  width: 100%;
+  padding: 1.8rem;
+}
+
+
+/* PROJECT DONATE FORM */
+
+.project-donate-form {
+  display: flex;
+  box-shadow: 0 .25rem 1.875rem rgba(42, 53, 79, .28);
+  flex-direction: column;
+}
+
+.project-donate-form__left {
+  background: #090A0B;
+  color: white;
+  padding: 1.8rem;
+  flex: 0 0 auto;
+  justify-content: space-between;
+  display: flex;
+  flex-direction: row;
+  align-items: center;
+}
+
+.project-donate-form__icon {
+  max-width: 2.5rem;
+  margin-bottom: 0rem;
+  order: 1;
+  margin-left: 1.8rem;
+}
+
+.project-donate-form__right {
+  width: 100%;
+  padding: 1.8rem;
+}
+
+/* FOOTER */
+
+.socials {
+  display: flex;
+  margin-left: -0.8rem;
+}
+
+.socials a {
+  padding: 0.8rem;
+}
+
+.socials a:last-child {
+  margin-right: 0;
+}
+
+.socials a i {
+  font-size: 1.4rem;
+  color: white;
+}
+
+
+
+/* PAGINATION */
+.page-link {
+  padding: .8rem 1.1rem;
+  color: #333;
+  background-color: #f3f3f3;
+  border: 1px solid #f3f3f3;
+  font-weight: bold;
+}
+
+.page-link:hover {
+  color: #333;
+  background-color: #e9ecef;
+  border-color: #e9ecef;
+}
+
+.page-link:focus {
+  box-shadow: 0 0 0 .2rem rgba(168, 168, 168, 0.25);
+}
+
+.page-item {
+  margin-right: 0.5rem;
+}
+
+.page-item:last-child {
+  margin-right: 0;
+}
+
+.page-item.active .page-link {
+  color: #fff;
+  background-color: #333;
+  border-color: #333;
+}
+
+.page-item:first-child .page-link {
+  border-top-left-radius: 0;
+  border-bottom-left-radius: 0;
+}
+
+.page-item:last-child .page-link {
+  border-top-right-radius: 0;
+  border-bottom-right-radius: 0;
+}
+
+
+
+/* PROJECT */
+.project__header {
+  padding: 4rem 0 2rem 0;
+}
+
+.project__date {
+  margin-bottom: 0;
+  color: #707070;
+}
+
+.project__badges .badge {
+  font-size: 1rem;
+  background: white;
+  border-radius: 0;
+  padding: 0.8rem 1.3rem;
+  font-weight: bold;
+}
+
+.badge.almost {
+  background: #04a548;
+  color: white;
+}
+
+.badge.new {
+  background: #e1242a;
+  color: white;
+}
+
+
+/* SHARING BOX */
+.article__sharing-box {
+  box-shadow: 0 .25rem 1.875rem rgba(42, 53, 79, .28);
+  border: none;
+  border-radius: 0;
+}
+
+.article__sharing-box h3 {
+  margin-bottom: 0;
+}
+
+.article__sharing-box .icon i {
+  font-size: 2.4rem;
+}
+
+.article__sharing-box .icon {
+  margin-bottom: 2.8rem;
+}
+
+.article__sharing-box .card-body {
+  padding: 2rem;
+  margin-bottom: 1rem;
+}
+
+.btn-facebook {
+  color: #fff;
+  background-color: #3b5998;
+  border-color: #3b5998;
+}
+
+.btn-twitter {
+  color: #fff;
+  background-color: #55acee;
+  border-color: #55acee;
+}
+
+.btn-linkedin {
+  color: #fff;
+  background-color: #007bb5;
+  border-color: #007bb5;
+}
+
+.btn-facebook:hover {
+  color: #fff;
+  background-color: #253860;
+  border-color: #253860;
+}
+
+.btn-twitter:hover {
+  color: #fff;
+  background-color: #448cc4;
+  border-color: #448cc4;
+}
+
+.btn-linkedin:hover {
+  color: #fff;
+  background-color: #006291;
+  border-color: #006291;
+}
+
+.sharing-buttons {
+  display: flex;
+  justify-content: space-between;
+}
+
+.sharing-buttons a {
+  flex: 1;
+  margin-right: 8px;
+  padding: .375rem .75rem;
+}
+
+.sharing-buttons a:last-child {
+  margin-right: 0;
+}
+
+.sharing-box__content {
+  margin-bottom: 0.6rem;
+}
+
+@media screen and (max-width: 991px) {
+  .article__sharing-box .card-body {
+    padding: 1.8rem;
+    margin-bottom: 0;
+  }
+  .article__sharing-box .image {
+    display: none;
+  }
+
+  .sharing-box__content {
+    display: flex;
+    align-items: center;
+    margin-bottom: 1rem;
+  }
+
+  .article__sharing-box .icon {
+    margin-bottom: 0;
+    margin-right: 1.2rem;
+  }
+}
+
+
+/* REGION */
+.region__header {
+  padding: 4rem 0 2rem 0;
+}
+
+.other-regions a {
+  box-shadow: 0 .25rem 1.875rem rgba(42, 53, 79, .28);
+  margin-bottom: 1rem;
+  color: black;
+  padding: 0.8rem 1rem;
+  display: block;
+  font-weight: bold;
+}
+
+/* ARTICLE CONTENT */
+article img {
+  max-width: 100%;
+  height: auto;
+  margin-top: 1rem;
+  margin-bottom: 3rem;
+}
+
+/* REGION MAP */
+
+.region-map {
+    overflow: hidden;
+}
+
+.region-map svg {
+    position: relative;
+    top: -0.734375px;
+}
+
+.region-map path {
+  stroke-linejoin: round;
+  cursor: pointer;
+  fill: #333333;
+  stroke: #666666;
+}
+
+.region-map a:hover path {
+  fill: #000000;
+}
+
+.region-list {
+    padding: 0;
+}
+
+.region-list li {
+    list-style-type: none;
+}
+
+.region-list a {
+  box-shadow: 0 .25rem 1.875rem rgba(42, 53, 79, .28);
+  margin-bottom: 1rem;
+  color: black;
+  padding: 0.6rem 1rem;
+  display: block;
+  font-weight: bold;
+}
+
+/* FORM TWEAKS */
+
+input::-webkit-outer-spin-button,
+input::-webkit-inner-spin-button {
+  -webkit-appearance: none;
+  margin: 0;
+}
+
+input[type=number] {
+  -moz-appearance: textfield;
+}
+
+/* VARIOUS */
+
+img.full-width {
+  width: 100%;
+  height: auto;
+}
+
+.btn-danger {
+  background-color: #d02d40;
+}
+
+.btn-wide {
+  width: 250px;
+}
+
+.richtext i {
+  font-family: inherit !important;
+  font-style: italic;
+  -webkit-font-smoothing: inherit;
+  -moz-osx-font-smoothing: inherit;
+  line-height: inherit;
+  font-weight: inherit;
+  font-variant: inherit;
+  text-transform: inherit;
+}
+
+.richtext blockquote {
+  font-style: italic;
+  padding: 0 1rem 0 1rem;
+  font-size: 115%;
+  border-left: 2px solid #BBBBBB;
+  color: #666666;
+}
+
+.richtext-image.left {
+  float: left;
+  margin: 0 1.5rem 1rem 0;
+}
+
+.richtext-image.right {
+  float: right;
+  margin: 0 0 1rem 1.5rem;
+}
+
+.richtext ol, .richtext ul {
+  padding-left: 0;
+  margin-left: 0;
+}
+
+.richtext ol li, .richtext ul li {
+  position: relative;
+  left: 2.5rem;
+  padding-right: 2.5rem;
+}
diff --git a/uniweb/static/uniweb/icons/icomoon.eot b/uniweb/static/uniweb/icons/icomoon.eot
new file mode 100644
index 0000000000000000000000000000000000000000..cab88ec4cc00f28eb94308704629fd46b85a7f97
Binary files /dev/null and b/uniweb/static/uniweb/icons/icomoon.eot differ
diff --git a/uniweb/static/uniweb/icons/icomoon.svg b/uniweb/static/uniweb/icons/icomoon.svg
new file mode 100644
index 0000000000000000000000000000000000000000..ae6f3d57e3f34d985f7dc3b96b7edce195ff9168
--- /dev/null
+++ b/uniweb/static/uniweb/icons/icomoon.svg
@@ -0,0 +1,22 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>Generated by IcoMoon</metadata>
+<defs>
+<font id="icomoon" horiz-adv-x="1024">
+<font-face units-per-em="1024" ascent="896" descent="-128" />
+<missing-glyph horiz-adv-x="1024" />
+<glyph unicode="&#x20;" horiz-adv-x="0" d="" />
+<glyph unicode="&#xf004;" glyph-name="heart" d="M924.6 770.8c125.6-107.201 132.201-299.602 19.6-415.8l-387-399.6c-25-25.801-65.6-25.801-90.6 0l-387 399.6c-112.4 116.199-105.799 308.6 19.801 415.8 109.6 93.398 272.798 76.6 373.2-27.201l39.4-40.6 39.4 40.6c100.6 103.801 263.6 120.6 373.2 27.201z" />
+<glyph unicode="&#xf00c;" glyph-name="check" horiz-adv-x="896" d="M827.010 712.098c9.373 9.373 24.568 9.373 33.939 0l22.629-22.627c9.371-9.375 9.371-24.57 0-33.943l-599.626-599.624c-9.373-9.373-24.568-9.373-33.941 0l-237.588 237.588c-9.371 9.373-9.371 24.57 0 33.941l22.627 22.627c9.373 9.371 24.568 9.371 33.941 0l197.99-197.99z" />
+<glyph unicode="&#xf053;" glyph-name="chevron-left" horiz-adv-x="512" d="M476.95-55.070c-9.371-9.373-24.566-9.373-33.939-0.002l-422.102 422.1c-9.373 9.375-9.373 24.57 0 33.943l422.102 422.1c9.373 9.371 24.568 9.371 33.939 0l14.143-14.141c9.373-9.373 9.373-24.57 0-33.941l-390.986-390.988 390.986-390.988c9.373-9.373 9.373-24.57 0-33.941z" />
+<glyph unicode="&#xf054;" glyph-name="chevron-right" horiz-adv-x="512" d="M35.051 823.070c9.371 9.373 24.566 9.373 33.939 0l422.102-422.098c9.373-9.375 9.373-24.57 0-33.943l-422.102-422.1c-9.373-9.371-24.568-9.371-33.939 0l-14.143 14.141c-9.373 9.373-9.373 24.57 0 33.941l390.986 390.988-390.986 390.988c-9.373 9.373-9.373 24.57 0 33.941z" />
+<glyph unicode="&#xf08c;" glyph-name="linkedin" d="M832 832c35.199 0 64-29 64-64.6v-766.8c0-35.6-28.801-64.6-64-64.6h-768.2c-35.201 0-63.801 29-63.801 64.6v766.8c0 35.6 28.6 64.6 63.801 64.6h768.2zM270.8 64h0.199v427.6h-133v-427.6h132.801zM204.4 550c42.6 0 77 34.4 77 77 0 42.4-34.6 77-77 77-42.6 0-77-34.6-77-77s34.4-77 77-77zM768.6 64v234.4c0 115.199-25 203.798-159.4 203.798-64.6 0-108-35.398-125.799-69h-1.801v58.4h-127.4v-427.6h132.801v211.6c0 55.801 10.6 109.801 79.801 109.801 68 0 69-63.801 69-113.4v-208h132.799z" />
+<glyph unicode="&#xf08e;" glyph-name="external-link" d="M880 384c8.832 0 16-7.168 16-16v-400c0-52.992-43.008-96-96-96h-704c-52.992 0-96 43.008-96 96v704c0 52.992 43.008 96 96 96h400c8.832 0 16-7.168 16-16v-32c0-8.832-7.168-16-16-16h-400c-17.664 0-32-14.336-32-32v-704c0-17.664 14.336-32 32-32h704c17.664 0 32 14.336 32 32v400c0 8.832 7.168 16 16 16h32zM1000 896c13.248 0 24-10.752 24-24l-0.68-272.080c0-13.248-10.752-24-24-24h-20c-13.248 0-24 10.752-24 24l0.68 180-1.42 1.4-646.24-646.36c-3.883-3.898-11.498-7.061-17-7.061-5.5 0-13.117 3.162-17 7.061l-11.32 11.318c-3.896 3.883-7.059 11.5-7.059 17 0 5.502 3.162 13.117 7.059 17l646.38 646.3-1.4 1.42-180-0.68c-13.248 0-24 10.752-24 24v20c0 13.248 10.752 24 24 24z" />
+<glyph unicode="&#xf099;" glyph-name="twitter" d="M918.74 592.568c0.65-9.096 0.65-18.195 0.65-27.291 0-277.44-211.166-597.116-597.118-597.116-118.904 0-229.36 34.438-322.274 94.211 16.895-1.947 33.137-2.598 50.68-2.598 98.109 0 188.426 33.137 260.548 89.664-92.264 1.951-169.584 62.377-196.225 145.545 12.996-1.949 25.99-3.248 39.637-3.248 18.842 0 37.686 2.6 55.227 7.146-96.162 19.494-168.285 103.959-168.285 205.968v2.598c27.938-15.594 60.428-25.34 94.861-26.637-56.527 37.686-93.561 102.010-93.561 174.781 0 38.984 10.393 74.721 28.588 105.908 103.309-127.35 258.6-210.516 432.728-219.614-3.248 15.594-5.197 31.836-5.197 48.080 0 115.654 93.564 209.868 209.868 209.868 60.428 0 115.004-25.34 153.342-66.273 47.43 9.096 92.91 26.639 133.197 50.68-15.596-48.732-48.732-89.666-92.264-115.654 42.234 4.547 83.168 16.244 120.852 32.486-28.584-41.582-64.322-78.617-105.256-108.506z" />
+<glyph unicode="&#xf133;" glyph-name="calendar" horiz-adv-x="896" d="M800 768c53.020 0 96-42.98 96-96v-704c0-53.020-42.98-96-96-96h-704c-53.020 0-96 42.98-96 96v704c0 53.020 42.98 96 96 96h96v104c0 13.254 10.746 24 24 24h16c13.254 0 24-10.746 24-24v-104h384v104c0 13.254 10.746 24 24 24h16c13.254 0 24-10.746 24-24v-104h96zM96 704c-17.645 0-32-14.355-32-32v-96h768v96c0 17.645-14.355 32-32 32h-704zM800-64c17.645 0 32 14.355 32 32v544h-768v-544c0-17.645 14.355-32 32-32h704z" />
+<glyph unicode="&#xf167;" glyph-name="youtube" horiz-adv-x="1152" d="M1099.31 647.834c22.824-85.734 22.824-264.61 22.824-264.61s0-178.877-22.824-264.612c-12.563-47.299-49.574-83-96.568-95.641-85.182-22.973-426.742-22.973-426.742-22.973s-341.56 0-426.742 22.973c-46.994 12.641-84.006 48.342-96.568 95.641-22.824 85.734-22.824 264.612-22.824 264.612s0 178.875 22.824 264.61c12.563 47.301 49.574 84.551 96.568 97.193 85.182 22.973 426.742 22.973 426.742 22.973s341.562 0 426.742-22.973c46.994-12.641 84.006-49.893 96.568-97.193zM464.29 220.818l285.478 162.402-285.478 162.41v-324.812z" />
+<glyph unicode="&#xf16d;" glyph-name="instagram" d="M448.2 614c127.201 0 229.8-102.6 229.8-229.8s-102.6-229.798-229.8-229.798c-127.199 0-229.798 102.6-229.798 229.798 0 127.201 102.6 229.8 229.798 229.8zM448.2 234.8c82.201 0 149.4 67 149.4 149.398 0 82.4-67 149.4-149.4 149.4-82.398 0-149.398-67-149.398-149.4 0-82.398 67.199-149.398 149.398-149.398zM741 623.4c0-29.801-24-53.6-53.6-53.6-29.801 0-53.6 24-53.6 53.6s24 53.6 53.6 53.6 53.6-24 53.6-53.6zM893.2 569c4.201-74 4.201-295.6 0-369.6-3.6-71.801-20-135.4-72.398-187.801-52.4-52.6-116-69-187.801-72.4-74-4.199-295.8-4.199-369.8 0-71.799 3.602-135.199 20-187.799 72.4s-69 116-72.4 187.801c-4.199 74-4.199 295.798 0 369.798 3.6 71.801 19.801 135.4 72.4 187.801s116.199 68.801 187.799 72.199c74 4.201 295.8 4.201 369.8 0 71.801-3.6 135.4-20 187.801-72.398 52.6-52.4 69-116 72.398-187.801zM797.6 120c23.4 58.801 18 199 18 264.2s5.4 205.202-18 264.202c-15.799 39.4-46 69.6-85.199 85.199-58.801 23.201-199 18-264.202 18-65.199 0-205.2 5.4-264.2-18-39.4-15.799-69.6-46-85.199-85.199-23.201-58.801-18-199-18-264.202 0-65.199-5.4-205.2 18-264.2 15.799-39.4 46-69.6 85.199-85.199 58.801-23.201 199-18 264.2-18s205.202-5.4 264.202 18c39.4 15.799 69.6 46 85.199 85.199z" />
+<glyph unicode="&#xf16e;" glyph-name="flickr" d="M800 832c53 0 96-43 96-96v-704c0-53-43-96-96-96h-704c-53 0-96 43-96 96v704c0 53 43 96 96 96h704zM289 258c70.199 0 127 56.801 127 127s-56.801 127-127 127-127-56.801-127-127 56.801-127 127-127zM607 258c70.199 0 127 56.801 127 127s-56.801 127-127 127-127-56.801-127-127 56.801-127 127-127z" />
+<glyph unicode="&#xf39e;" glyph-name="facebook-f" horiz-adv-x="640" d="M558.28 320h-149.379v-448h-200.34v448h-162.781v185.32h162.781v141.24c0 160.68 95.719 249.44 242.16 249.44 70.139 0 143.5-12.52 143.5-12.52v-157.781h-80.84c-79.641 0-104.48-49.42-104.48-100.119v-120.26h177.82z" />
+</font></defs></svg>
diff --git a/uniweb/static/uniweb/icons/icomoon.ttf b/uniweb/static/uniweb/icons/icomoon.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..fa59609ee85bc976737b94433954173288573a23
Binary files /dev/null and b/uniweb/static/uniweb/icons/icomoon.ttf differ
diff --git a/uniweb/static/uniweb/icons/icomoon.woff b/uniweb/static/uniweb/icons/icomoon.woff
new file mode 100644
index 0000000000000000000000000000000000000000..87c46d1a16a4e75d3012924560f851023629e81c
Binary files /dev/null and b/uniweb/static/uniweb/icons/icomoon.woff differ
diff --git a/uniweb/templates/uniweb/base.html b/uniweb/templates/uniweb/base.html
new file mode 100644
index 0000000000000000000000000000000000000000..e4bb12138cc0bad65fb0befafc6480f5abe3d382
--- /dev/null
+++ b/uniweb/templates/uniweb/base.html
@@ -0,0 +1,107 @@
+{% load static wagtailuserbar wagtailcore_tags wagtailimages_tags wagtailmetadata_tags %}
+<!doctype html>
+<html lang="cs">
+<head>
+
+  <!-- Font loader -->
+  <script type="text/javascript">
+    WebFontConfig = {
+      google: { families: ['Roboto+Condensed:300,300i,400,400i,700,700i:latin-ext', 'Bebas+Neue'] }
+    };
+    (function () {
+      var wf = document.createElement('script');
+      wf.src = 'https://ajax.googleapis.com/ajax/libs/webfont/1/webfont.js';
+      wf.type = 'text/javascript';
+      wf.async = 'true';
+      var s = document.getElementsByTagName('script')[0];
+      s.parentNode.insertBefore(wf, s);
+    })();
+  </script>
+
+  <!-- Meta -->
+  <meta charset="utf-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
+  {% meta_tags %}
+  {% if settings.MAJAK_ENV == "test" %}
+    <meta name="robots" content="noindex, nofollow">
+  {% endif %}
+
+  <!-- Favicon -->
+  {% include "shared/favicon_snippet.html" %}
+
+  <!-- Bootstrap CSS -->
+  <link rel="stylesheet" href="{% static "shared/vendor/bootstrap-4.4.1/css/bootstrap.min.css" %}">
+
+  <!-- Styles -->
+  <link href="{% static "uniweb/assets/css/style.css" %}" rel="stylesheet">
+  <link href="{% static "uniweb/assets/css/icons.css" %}" rel="stylesheet">
+
+  {% if page.matomo_id %}
+    {% include "shared/matomo_snippet.html" with matomo_id=page.matomo_id %}
+  {% endif %}
+</head>
+
+<body id="top">
+
+  <!-- HEADER -->
+  <div class="pre-navbar d-none d-lg-flex" style="background:black;">
+    <div class="container d-flex justify-content-end">
+      <a href="https://www.pirati.cz/" class="header_link header_link--desktop mr-4 py-2" target="_blank" rel="noreferrer"><i class="icon-external-link mr-2" title="Ikona odkazu"></i>www.pirati.cz</a>
+    </div>
+  </div>
+
+  <nav class="navbar navbar-expand-xl navbar-dark">
+    <div class="container">
+
+      <div class="brand-wrapper">
+        <a class="navbar-brand" href="/">
+          <h1 class="lead ml-1 mt-3" style="color: #FFFFFF; font-size: 3rem;">
+            <img src="{% static "shared/img/logo_white.svg" %}" alt="Logo Pirátské strany" style="width: 50px; height: 50px;" class="mr-2">
+            {{ page.root_page.seo_title }}
+          </h1>
+        </a>
+      </div>
+
+      <!-- Mobile menu toggler -->
+      <button class="navbar-toggler collapsed" type="button" data-toggle="collapse" data-target="#mainNavigation" aria-controls="mainNavigation" aria-expanded="false" aria-label="Otevřít menu">
+        <span></span>
+        <span></span>
+        <span></span>
+      </button>
+
+      <!-- Navigation -->
+      <div class="collapse navbar-collapse" id="mainNavigation">
+        <ul class="navbar-nav ml-auto">
+          {% for item in page.root_page.top_menu %}
+          <li class="nav-item">
+            <a class="nav-link" href="{% pageurl item.value.page %}">{{ item.value.name }}</a>
+          </li>
+          {% endfor %}
+        </ul>
+        <a href="https://www.pirati.cz/" class="d-block d-lg-none mb-3 header_link header_link--mobile"  target="_blank" rel="noreferrer"><i class="icon-external-link mr-2" title="Ikona odkazu"></i>www.pirati.cz</a>
+      </div><!-- /navigation -->
+
+    </div><!-- /container -->
+  </nav>
+  <!-- /HEADER -->
+
+  {% block content %}{% endblock %}
+
+  <!-- FOOTER -->
+  <footer id="kontakt">
+
+    <div class="footer__bottom">
+      <div class="container">
+        <div class="row">
+          <div class="col-12 col-md-6 mb-3 mb-md-0">
+            <p class="mb-0">&copy; {% now "Y" %} Piráti. Všechna práva vyhlazena.<br/>Sdílejte a nechte ostatní sdílet za stejných podmínek.</p>
+          </div><!-- /column -->
+        </div><!-- /row -->
+      </div><!-- /container -->
+    </div><!-- /footer_bottom -->
+
+  </footer>
+  <!-- /FOOTER -->
+
+</body>
+</html>
diff --git a/uniweb/templates/uniweb/snippet_sections.html b/uniweb/templates/uniweb/snippet_sections.html
new file mode 100644
index 0000000000000000000000000000000000000000..f74374572df3ba33670f9d7b2f2fbe43210dd242
--- /dev/null
+++ b/uniweb/templates/uniweb/snippet_sections.html
@@ -0,0 +1,17 @@
+{% load wagtailcore_tags %}
+{% for section in page.content %}
+<section class="section--{% cycle "alternate" "primary" %}">
+  <div class="container">
+    {% if section.value.title %}
+      <h2 class="lead page-subheading mb-4">{{ section.value.title }}</h2>
+    {% endif %}
+
+    <div class="row">
+      <div class="col-12 richtext">
+        {{ section.value.text|richtext }}
+      </div><!-- /column -->
+    </div><!-- /row -->
+
+  </div> <!-- /container -->
+</section>
+{% endfor %}
diff --git a/uniweb/templates/uniweb/uniweb_flexible_page.html b/uniweb/templates/uniweb/uniweb_flexible_page.html
new file mode 100644
index 0000000000000000000000000000000000000000..8a8eb7f0c6cad9824941e7ad21df587fc3ccc1b5
--- /dev/null
+++ b/uniweb/templates/uniweb/uniweb_flexible_page.html
@@ -0,0 +1,13 @@
+{% extends "uniweb/base.html" %}
+
+{% block content %}
+
+<!-- CONTENT -->
+<main role="main">
+
+  {% include "uniweb/snippet_sections.html" %}
+
+</main>
+<!-- /CONTENT -->
+
+{% endblock %}
diff --git a/uniweb/templates/uniweb/uniweb_home_page.html b/uniweb/templates/uniweb/uniweb_home_page.html
new file mode 100644
index 0000000000000000000000000000000000000000..36ac0c7e4bfda623e31d13d11f4e6eec4a013c09
--- /dev/null
+++ b/uniweb/templates/uniweb/uniweb_home_page.html
@@ -0,0 +1,14 @@
+{% extends "uniweb/base.html" %}
+{% load wagtailcore_tags %}
+
+{% block content %}
+
+<!-- CONTENT -->
+<main role="main">
+
+  {% include "uniweb/snippet_sections.html" %}
+
+</main>
+<!-- /CONTENT -->
+
+{% endblock %}