From 6d579e90723caf64ec65e566b5d79d44548fd42f Mon Sep 17 00:00:00 2001
From: Jarmil <jarmil.halamicek@seznam.cz>
Date: Thu, 3 Sep 2020 10:30:40 +0200
Subject: [PATCH] Uniweb: Basic uniweb with flexible text page

---
 README.md                                     |    1 +
 majak/settings/base.py                        |    1 +
 shared/static/shared/img/logo_black.svg       |   39 +
 shared/static/shared/img/logo_white.svg       |   39 +
 uniweb/__init__.py                            |    0
 uniweb/apps.py                                |    5 +
 uniweb/migrations/0001_initial.py             |  258 ++++
 uniweb/migrations/__init__.py                 |    0
 uniweb/models.py                              |  158 +++
 uniweb/static/uniweb/assets/css/icons.css     |   63 +
 uniweb/static/uniweb/assets/css/style.css     | 1195 +++++++++++++++++
 uniweb/static/uniweb/icons/icomoon.eot        |  Bin 0 -> 3384 bytes
 uniweb/static/uniweb/icons/icomoon.svg        |   22 +
 uniweb/static/uniweb/icons/icomoon.ttf        |  Bin 0 -> 3220 bytes
 uniweb/static/uniweb/icons/icomoon.woff       |  Bin 0 -> 3296 bytes
 uniweb/templates/uniweb/base.html             |  107 ++
 uniweb/templates/uniweb/snippet_sections.html |   17 +
 .../uniweb/uniweb_flexible_page.html          |   13 +
 uniweb/templates/uniweb/uniweb_home_page.html |   14 +
 19 files changed, 1932 insertions(+)
 create mode 100644 shared/static/shared/img/logo_black.svg
 create mode 100644 shared/static/shared/img/logo_white.svg
 create mode 100644 uniweb/__init__.py
 create mode 100644 uniweb/apps.py
 create mode 100644 uniweb/migrations/0001_initial.py
 create mode 100644 uniweb/migrations/__init__.py
 create mode 100644 uniweb/models.py
 create mode 100644 uniweb/static/uniweb/assets/css/icons.css
 create mode 100644 uniweb/static/uniweb/assets/css/style.css
 create mode 100644 uniweb/static/uniweb/icons/icomoon.eot
 create mode 100644 uniweb/static/uniweb/icons/icomoon.svg
 create mode 100644 uniweb/static/uniweb/icons/icomoon.ttf
 create mode 100644 uniweb/static/uniweb/icons/icomoon.woff
 create mode 100644 uniweb/templates/uniweb/base.html
 create mode 100644 uniweb/templates/uniweb/snippet_sections.html
 create mode 100644 uniweb/templates/uniweb/uniweb_flexible_page.html
 create mode 100644 uniweb/templates/uniweb/uniweb_home_page.html

diff --git a/README.md b/README.md
index e04c7c4f..a54ad214 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 017f3f11..1c615875 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 00000000..bb08d45f
--- /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 00000000..5b73cdcb
--- /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 00000000..e69de29b
diff --git a/uniweb/apps.py b/uniweb/apps.py
new file mode 100644
index 00000000..04014c2f
--- /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 00000000..a66edfeb
--- /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 00000000..e69de29b
diff --git a/uniweb/models.py b/uniweb/models.py
new file mode 100644
index 00000000..c27f8884
--- /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 00000000..7218ce4b
--- /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 00000000..bf3d7816
--- /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
GIT binary patch
literal 3384
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

literal 0
HcmV?d00001

diff --git a/uniweb/static/uniweb/icons/icomoon.svg b/uniweb/static/uniweb/icons/icomoon.svg
new file mode 100644
index 00000000..ae6f3d57
--- /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
GIT binary patch
literal 3220
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
bki<~Qpupe>_JA+M1K^khwWy&Hf{g+I7!e6y

literal 0
HcmV?d00001

diff --git a/uniweb/static/uniweb/icons/icomoon.woff b/uniweb/static/uniweb/icons/icomoon.woff
new file mode 100644
index 0000000000000000000000000000000000000000..87c46d1a16a4e75d3012924560f851023629e81c
GIT binary patch
literal 3296
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

literal 0
HcmV?d00001

diff --git a/uniweb/templates/uniweb/base.html b/uniweb/templates/uniweb/base.html
new file mode 100644
index 00000000..e4bb1213
--- /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 00000000..f7437457
--- /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 00000000..8a8eb7f0
--- /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 00000000..36ac0c7e
--- /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 %}
-- 
GitLab