From 78c6c45a0b9d2d7dbad225b73019a06f496ab38c Mon Sep 17 00:00:00 2001
From: rscnt
Date: Sun, 4 Oct 2015 08:04:23 -0600
Subject: [PATCH 01/15] project: removed circus egg and deps.
Signed-off-by: rscnt
---
requirements.txt | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/requirements.txt b/requirements.txt
index f43f1e69..342be9cf 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -6,7 +6,7 @@ six==1.3.0 #compat
python-memcached
# django
-django==1.7.8
+django==1.7.10
#django-assets
django-bootstrap3
@@ -45,10 +45,9 @@ djangocms-table
cmsplugin-filer==0.10.1
# production
--e git+git@github.com:circus-tent/circus.git#egg=circus
-circus-web
-chaussette
-meinheld
+# circus-web
+# chaussette
+# meinheld
# python3 support
gevent>=1.1a2
From 4b69077414580132552aa05383e2b8506c6586de Mon Sep 17 00:00:00 2001
From: rscnt
Date: Sun, 4 Oct 2015 08:08:19 -0600
Subject: [PATCH 02/15] dynamicweb: settings, added German lang, changed
templates.
Signed-off-by: rscnt
---
dynamicweb/settings.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/dynamicweb/settings.py b/dynamicweb/settings.py
index e133cca3..6bcc26c3 100644
--- a/dynamicweb/settings.py
+++ b/dynamicweb/settings.py
@@ -159,7 +159,7 @@ TEMPLATE_DIRS = (
)
CMS_TEMPLATES_DIR = {
- 1: os.path.join(TEMPLATE_DIRS[0], 'cms/ungleich.ch/'),
+ 1: os.path.join(TEMPLATE_DIRS[0], 'cms/'),
}
@@ -187,6 +187,7 @@ USE_TZ = True
LANGUAGES = (
('en-us', _('US English')),
+ ('de', _('German')),
)
LANGUAGE_CODE = 'en-us'
From b12a273a1d13371e3debb67188ac432e399f6607 Mon Sep 17 00:00:00 2001
From: rscnt
Date: Sun, 4 Oct 2015 08:27:44 -0600
Subject: [PATCH 03/15] templates: cms, moved ungleich.ch -> ungleichch
Signed-off-by: rscnt
---
templates/cms/ungleich.ch/index.html | 3 ---
templates/cms/{ungleich.ch => ungleichch}/__init__.py | 0
templates/cms/{ungleich.ch => ungleichch}/_footer.html | 0
templates/cms/{ungleich.ch => ungleichch}/_header_base.html | 0
templates/cms/{ungleich.ch => ungleichch}/_menu.html | 0
templates/cms/{ungleich.ch => ungleichch}/base.html | 6 +++---
templates/cms/{ungleich.ch => ungleichch}/blog.html | 2 +-
templates/cms/ungleichch/index.html | 3 +++
templates/cms/{ungleich.ch => ungleichch}/page.html | 2 +-
9 files changed, 8 insertions(+), 8 deletions(-)
delete mode 100644 templates/cms/ungleich.ch/index.html
rename templates/cms/{ungleich.ch => ungleichch}/__init__.py (100%)
rename templates/cms/{ungleich.ch => ungleichch}/_footer.html (100%)
rename templates/cms/{ungleich.ch => ungleichch}/_header_base.html (100%)
rename templates/cms/{ungleich.ch => ungleichch}/_menu.html (100%)
rename templates/cms/{ungleich.ch => ungleichch}/base.html (94%)
rename templates/cms/{ungleich.ch => ungleichch}/blog.html (64%)
create mode 100644 templates/cms/ungleichch/index.html
rename templates/cms/{ungleich.ch => ungleichch}/page.html (68%)
diff --git a/templates/cms/ungleich.ch/index.html b/templates/cms/ungleich.ch/index.html
deleted file mode 100644
index 9e1c9503..00000000
--- a/templates/cms/ungleich.ch/index.html
+++ /dev/null
@@ -1,3 +0,0 @@
-{% extends "cms/ungleich.ch/base.html" %}
-{% block base_content %}
-{% endblock %}
diff --git a/templates/cms/ungleich.ch/__init__.py b/templates/cms/ungleichch/__init__.py
similarity index 100%
rename from templates/cms/ungleich.ch/__init__.py
rename to templates/cms/ungleichch/__init__.py
diff --git a/templates/cms/ungleich.ch/_footer.html b/templates/cms/ungleichch/_footer.html
similarity index 100%
rename from templates/cms/ungleich.ch/_footer.html
rename to templates/cms/ungleichch/_footer.html
diff --git a/templates/cms/ungleich.ch/_header_base.html b/templates/cms/ungleichch/_header_base.html
similarity index 100%
rename from templates/cms/ungleich.ch/_header_base.html
rename to templates/cms/ungleichch/_header_base.html
diff --git a/templates/cms/ungleich.ch/_menu.html b/templates/cms/ungleichch/_menu.html
similarity index 100%
rename from templates/cms/ungleich.ch/_menu.html
rename to templates/cms/ungleichch/_menu.html
diff --git a/templates/cms/ungleich.ch/base.html b/templates/cms/ungleichch/base.html
similarity index 94%
rename from templates/cms/ungleich.ch/base.html
rename to templates/cms/ungleichch/base.html
index 339fe37c..9897c4f8 100644
--- a/templates/cms/ungleich.ch/base.html
+++ b/templates/cms/ungleichch/base.html
@@ -37,11 +37,11 @@
{% cms_toolbar %}
- {% show_menu 0 1 100 100 "cms/ungleich.ch/_menu.html" %}
+ {% show_menu 0 1 100 100 "cms/ungleichch/_menu.html" %}
{% block base_header %}
- {% include "cms/ungleich.ch/_header_base.html" %}
+ {% include "cms/ungleichch/_header_base.html" %}
{% endblock %}
- {% include "cms/ungleich.ch/_footer.html" %}
+ {% include "cms/ungleichch/_footer.html" %}
{% addtoblock "external-js" %}
{% bootstrap_javascript %}
{% endaddtoblock %}
diff --git a/templates/cms/ungleich.ch/blog.html b/templates/cms/ungleichch/blog.html
similarity index 64%
rename from templates/cms/ungleich.ch/blog.html
rename to templates/cms/ungleichch/blog.html
index bfc3aae7..5317a021 100644
--- a/templates/cms/ungleich.ch/blog.html
+++ b/templates/cms/ungleichch/blog.html
@@ -1,4 +1,4 @@
-{% extends "cms/ungleich.ch/base.html" %}
+{% extends "cms/ungleichch/base.html" %}
{% block base_content %}
{% block content %}
{% endblock %}
diff --git a/templates/cms/ungleichch/index.html b/templates/cms/ungleichch/index.html
new file mode 100644
index 00000000..f3fbca67
--- /dev/null
+++ b/templates/cms/ungleichch/index.html
@@ -0,0 +1,3 @@
+{% extends "cms/ungleichch/base.html" %}
+{% block base_content %}
+{% endblock %}
diff --git a/templates/cms/ungleich.ch/page.html b/templates/cms/ungleichch/page.html
similarity index 68%
rename from templates/cms/ungleich.ch/page.html
rename to templates/cms/ungleichch/page.html
index 66f67def..81a4a027 100644
--- a/templates/cms/ungleich.ch/page.html
+++ b/templates/cms/ungleichch/page.html
@@ -1,4 +1,4 @@
-{% extends "cms/ungleich.ch/base.html" %}
+{% extends "cms/ungleichch/base.html" %}
{% load cms_tags %}
{% block base_content %}
{% placeholder "page_content" %}
From 9f2fa42302a67f265364bef7208cdf5ab4e896b7 Mon Sep 17 00:00:00 2001
From: rscnt
Date: Sun, 4 Oct 2015 08:33:48 -0600
Subject: [PATCH 04/15] templates: added html for digital.glarus cms.
Signed-off-by: rscnt
---
templates/cms/__init__.py | 11 ++
templates/cms/digitalglarus/__init__.py | 9 ++
templates/cms/digitalglarus/about.html | 57 +++++++++
templates/cms/digitalglarus/base.html | 128 ++++++++++++++++++++
templates/cms/digitalglarus/contact.html | 65 ++++++++++
templates/cms/digitalglarus/detail.html | 11 ++
templates/cms/digitalglarus/index.html | 99 +++++++++++++++
templates/cms/digitalglarus/letscowork.html | 51 ++++++++
8 files changed, 431 insertions(+)
create mode 100644 templates/cms/__init__.py
create mode 100644 templates/cms/digitalglarus/__init__.py
create mode 100755 templates/cms/digitalglarus/about.html
create mode 100644 templates/cms/digitalglarus/base.html
create mode 100755 templates/cms/digitalglarus/contact.html
create mode 100644 templates/cms/digitalglarus/detail.html
create mode 100644 templates/cms/digitalglarus/index.html
create mode 100644 templates/cms/digitalglarus/letscowork.html
diff --git a/templates/cms/__init__.py b/templates/cms/__init__.py
new file mode 100644
index 00000000..f27d72f5
--- /dev/null
+++ b/templates/cms/__init__.py
@@ -0,0 +1,11 @@
+# -*- coding: utf-8 -*-
+from django.utils.translation import ugettext_lazy as _
+TEMPLATES = {
+ 'digitalglarus/about.html': _('DG.About'),
+ 'digitalglarus/contact.html': _('DG.Contact'),
+ 'digitalglarus/index.html': _('DG.Home'),
+ 'digitalglarus/letscowork.html': _('DG.CoWork'),
+ 'digitalglarus/detail.html': _('DG.Detail'),
+ 'ungleichch/blog.html': _('Blog'),
+ 'ungleichch/page.html': _('Page'),
+}
diff --git a/templates/cms/digitalglarus/__init__.py b/templates/cms/digitalglarus/__init__.py
new file mode 100644
index 00000000..7b16fec8
--- /dev/null
+++ b/templates/cms/digitalglarus/__init__.py
@@ -0,0 +1,9 @@
+# -*- coding: utf-8 -*-
+from django.utils.translation import ugettext_lazy as _
+TEMPLATES = {
+ 'about.html': _('DG.About'),
+ 'contact.html': _('DG.Contact'),
+ 'index.html': _('DG.Home'),
+ 'letscowork.html': _('DG.CoWork'),
+ 'detail.html': _('DG.Detail'),
+}
diff --git a/templates/cms/digitalglarus/about.html b/templates/cms/digitalglarus/about.html
new file mode 100755
index 00000000..6c12cbcb
--- /dev/null
+++ b/templates/cms/digitalglarus/about.html
@@ -0,0 +1,57 @@
+{% extends "cms/digitalglarus/base.html" %}
+{% load staticfiles cms_tags %}
+{% block title %}About{% endblock %}
+
+{% block content %}
+
+
+
+
+ {% placeholder 'digitalglarus_why_us' %}
+
+
+
+
+
+
+
+ {% placeholder 'digitalglarus_why_us_content' %}
+
+
+
+
+
+
+
+
+
+
+
+ {% placeholder 'digitalglarus_why_glarus' %}
+
+
+
+
+
+
+ {% placeholder 'digitalglarus_why_glarus_beautiful_landscape' %}
+
+
+
+
+ {% placeholder 'digitalglarus_why_glarus_affordable_price' %}
+
+
+
+
+ {% placeholder 'digitalglarus_why_glarus_direct_connection_zurich' %}
+
+
+
+
+
+
+
+
+
+{% endblock %}
diff --git a/templates/cms/digitalglarus/base.html b/templates/cms/digitalglarus/base.html
new file mode 100644
index 00000000..6dd1bfc0
--- /dev/null
+++ b/templates/cms/digitalglarus/base.html
@@ -0,0 +1,128 @@
+{% load staticfiles cms_tags menu_tags sekizai_tags %}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {% page_attribute "page_title" %}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {% render_block "css" postprocessor "compressor.contrib.sekizai.compress" %}
+ {% render_block "js" postprocessor "compressor.contrib.sekizai.compress" %}
+
+
+
+
+ {% cms_toolbar %}
+ Digital Glarus
+
+ {% placeholder 'digital_glarus_legend' %}
+
+
+
+
+
+
+
+
+
+ {% block content %} {% endblock %}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/templates/cms/digitalglarus/contact.html b/templates/cms/digitalglarus/contact.html
new file mode 100755
index 00000000..01a57109
--- /dev/null
+++ b/templates/cms/digitalglarus/contact.html
@@ -0,0 +1,65 @@
+{% extends "digitalglarus/base.html" %}
+{% load cms_tags %}
+{% block title %}Contact{% endblock %}
+
+{% block content %}
+
+
+
+
+
+ {% placeholder 'digital_glarus_contact' %}
+
+
+
+
+ {% placeholder 'digital_glarus_contact_content' %}
+
+
+ {% placeholder 'digital_glarus_contact_information' %}
+
+
+
+
+
+
+
+
+
+
Contact
+ form
+
+
+
If you want further information on Digital Glarus, please send us a message using the form below.
+
+
+
+
+
+
+{% endblock %}
diff --git a/templates/cms/digitalglarus/detail.html b/templates/cms/digitalglarus/detail.html
new file mode 100644
index 00000000..412a6b91
--- /dev/null
+++ b/templates/cms/digitalglarus/detail.html
@@ -0,0 +1,11 @@
+{{ message }}
+
+
+ {{ message.name }}
+ {{ message.email }}
+ {{ message.phone_number }}
+ {{ message.message }}
+ {{ message.received_date }}
+
+
+Back to Main
diff --git a/templates/cms/digitalglarus/index.html b/templates/cms/digitalglarus/index.html
new file mode 100644
index 00000000..7e7eaff3
--- /dev/null
+++ b/templates/cms/digitalglarus/index.html
@@ -0,0 +1,99 @@
+{% extends "digitalglarus/base.html" %}
+{% load staticfiles %}
+
+{% block content %}
+
+
+
+
+
+ WELCOME TO
+
+
Digital Glarus
+
+
+
+
+
+
+
+
+
+
+
+ {% placeholder 'digital_glarus_build_a_tech_valley' %}
+
+
+
+
+ {% placeholder 'digital_glarus_build_a_tech_valley_content' %}
+
+
+
+
+
+
+
+
+
+
+ {% placeholder 'digital_glarus_a_new_area' %}
+
+
+ {% placeholder 'digital_glarus_a_new_area_content' %}
+
+
+
+
+
+
+
+
+
+ {% placeholder 'digital_glarus_why_be_interested' %}
+
+
+ {% placeholder 'digital_glarus_why_be_interested_content' %}
+
+
+
+
+
+
+
+
+ {% placeholder 'digital_glarus_where_we_are' %}
+
+
+ {% placeholder 'digital_glarus_where_we_are_content' %}
+
+
+
+
+
+{% endblock %}
diff --git a/templates/cms/digitalglarus/letscowork.html b/templates/cms/digitalglarus/letscowork.html
new file mode 100644
index 00000000..518e1224
--- /dev/null
+++ b/templates/cms/digitalglarus/letscowork.html
@@ -0,0 +1,51 @@
+{% extends "digitalglarus/base.html" %}
+{% load staticfiles %}
+{% block title %}crowdfunding{% endblock %}
+
+{% block content %}
+
+
+
+
+
+
+ why
+ glarus?
+
+
+
+
+
+
BEAUTIFUL
+ landscape
+
+
+
+
+
AFFORDABLE
+ price
+
+
+
+
direct
+ connection to zurich
+
+
+
+
+
+
+{% endblock %}
From 530ca19556a6a020334b417603a682517c6c1efb Mon Sep 17 00:00:00 2001
From: Sanghee Kim
Date: Fri, 4 Mar 2016 21:15:48 +0100
Subject: [PATCH 05/15] Import cal + css from Jiyoun
---
design_membership/calendar.html | 110 ++++++++++++++++++++
design_membership/stylesheet.css | 166 +++++++++++++++++++++++++++++++
2 files changed, 276 insertions(+)
create mode 100644 design_membership/calendar.html
create mode 100644 design_membership/stylesheet.css
diff --git a/design_membership/calendar.html b/design_membership/calendar.html
new file mode 100644
index 00000000..acd783f5
--- /dev/null
+++ b/design_membership/calendar.html
@@ -0,0 +1,110 @@
+
+
+
+
+ Calendar
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mo
+ Tu
+ We
+ Th
+ Fr
+ Sa
+ Su
+
+
+
+
+
+
+
+
+ 26
+ 27
+ 28
+ 29
+ 30
+ 31
+ 1
+
+
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+
+
+ 9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+
+
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+
+
+
+ 23
+ 24
+ 25
+ 26
+ 27
+ 28
+ 29
+
+
+ 30
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/design_membership/stylesheet.css b/design_membership/stylesheet.css
new file mode 100644
index 00000000..4c257151
--- /dev/null
+++ b/design_membership/stylesheet.css
@@ -0,0 +1,166 @@
+@charset "utf-8";
+/* CSS Document */
+
+/* ---------- FONTAWESOME ---------- */
+/* ---------- http://fortawesome.github.com/Font-Awesome/ ---------- */
+/* ---------- http://weloveiconfonts.com/ ---------- */
+
+@import url(http://weloveiconfonts.com/api/?family=fontawesome);
+
+*[class*="fontawesome-"]:before {
+ font-family: 'FontAwesome', sans-serif;
+}
+
+/* ---------- GENERAL ---------- */
+
+body {
+ background: #f9f9f9;
+ color: #0e171c;
+ font: 100 100%/.7em 'Lato', sans-serif;
+ margin: 0;
+}
+
+a {
+ text-decoration: none;
+}
+
+/*Month size*/
+h2 {
+ font-size: .8em;
+ line-height: 1em;
+ /*margin: .1em 0;*/
+}
+
+td{
+ font-size:.7em;
+}
+
+h3 {
+ font-size: .7em;
+ line-height: .1em;
+ margin: .13em 0;
+}
+
+table {
+ /*border-collapse: collapse;*/
+ border-spacing: 0;
+}
+
+.container {
+ height: 270px;
+ left: 50%;
+ margin: -100px 0 0 -100px; /* Calendar location */
+ position: absolute;
+ top: 50%;
+ width: 13%;
+}
+
+/* ---------- CALENDAR ---------- */
+
+.calendar {
+ text-align: center;
+}
+
+.calendar header {
+ position: relative;
+}
+
+.calendar h2 {
+ text-transform: uppercase;
+ color: #1A6687;
+}
+/*Title*/
+.calendar thead {
+ font-size: .9em;
+ font-weight: 600;
+ text-transform: uppercase;
+ color: #8BC4C9;
+}
+
+/*Body text*/
+.calendar tbody {
+ color: #7c8a95;
+}
+
+/*select date*/
+.calendar tbody td:hover {
+ border: .2em solid #8BC4C9;
+}
+
+.calendar td {
+ border: .7em solid none;
+ border-radius: 50%;
+ display: inline-block;
+ height: 2em;
+ line-height: 2em;
+ text-align: center;
+ width: 2em;
+}
+
+.calendar .prev-month,
+.calendar .next-month {
+ color: #cbd1d2;
+}
+
+.calendar .prev-month:hover,
+.calendar .next-month:hover {
+ border: 2px solid #cbd1d2;
+}
+
+/*Today*/
+.current-day {
+ background: #8BC4C9;
+ color: #f9f9f9;
+}
+
+.event {
+ cursor: pointer;
+ position: relative;
+}
+
+/*Little dot*/
+.event:after {
+ background: #8BC4C9;
+ border-radius: 50%;
+ bottom: .3em;
+ display: block;
+ content: '';
+ height: .3em;
+ left: 50%;
+ margin: -.5em 0 0 -.1em;
+ position: absolute;
+ width: .3em;
+}
+
+.event.current-day:after {
+ background: #f9f9f9;
+}
+
+/*Next,Prev month*/
+.btn-prev,
+.btn-next {
+ border: 2px solid none;
+ border-radius: 50%;
+ color: #8BC4C9;
+ height: 2em;
+ font-size: .75em;
+ line-height: 2em;
+ margin: -1em;
+ position: absolute;
+ top: 50%;
+ width: 2em;
+}
+
+.btn-prev:hover,
+.btn-next:hover {
+ background: none;
+ color: #1A6687;
+}
+
+.btn-prev {
+ left: 1.7em;
+}
+
+.btn-next {
+ right: 1.7em;
+}
\ No newline at end of file
From 201331742087c577718428c9c454e0f54bdf190f Mon Sep 17 00:00:00 2001
From: jiyounyoon
Date: Mon, 14 Mar 2016 14:13:31 -0700
Subject: [PATCH 06/15] Add new files for design
---
design_membership/stylesheet.css | 63 ++++++++++++++++----------------
1 file changed, 31 insertions(+), 32 deletions(-)
diff --git a/design_membership/stylesheet.css b/design_membership/stylesheet.css
index 4c257151..d0ed6d1f 100644
--- a/design_membership/stylesheet.css
+++ b/design_membership/stylesheet.css
@@ -16,7 +16,7 @@
body {
background: #f9f9f9;
color: #0e171c;
- font: 100 100%/.7em 'Lato', sans-serif;
+ font: 300 100%/1.5em 'Lato', sans-serif;
margin: 0;
}
@@ -26,33 +26,30 @@ a {
/*Month size*/
h2 {
- font-size: .8em;
- line-height: 1em;
- /*margin: .1em 0;*/
-}
-
-td{
- font-size:.7em;
+ font-size: 1.5em;
+ line-height: 1.25em;
+ margin: .25em 0;
}
h3 {
- font-size: .7em;
- line-height: .1em;
- margin: .13em 0;
+ font-size: 1.5em;
+ line-height: 1em;
+ margin: .33em 0;
}
table {
/*border-collapse: collapse;*/
border-spacing: 0;
+ margin:auto;
}
.container {
- height: 270px;
+ height: 558px;
left: 50%;
- margin: -100px 0 0 -100px; /* Calendar location */
+ margin: -255px 0 0 -245px;
position: absolute;
top: 50%;
- width: 13%;
+ width: 540px;
}
/* ---------- CALENDAR ---------- */
@@ -71,7 +68,6 @@ table {
}
/*Title*/
.calendar thead {
- font-size: .9em;
font-weight: 600;
text-transform: uppercase;
color: #8BC4C9;
@@ -84,17 +80,20 @@ table {
/*select date*/
.calendar tbody td:hover {
- border: .2em solid #8BC4C9;
+ border: .5px solid #8BC4C9;
+ -webkit-border: .5px solid none;
+ border-radius: 50%;
}
.calendar td {
- border: .7em solid none;
+ border: .5px solid transparent;
border-radius: 50%;
display: inline-block;
- height: 2em;
- line-height: 2em;
+ height: 2.5em;
+ line-height: 2.5em;
text-align: center;
- width: 2em;
+ width: 2.5em;
+
}
.calendar .prev-month,
@@ -104,7 +103,7 @@ table {
.calendar .prev-month:hover,
.calendar .next-month:hover {
- border: 2px solid #cbd1d2;
+ border: .5px solid #cbd1d2;
}
/*Today*/
@@ -122,14 +121,14 @@ table {
.event:after {
background: #8BC4C9;
border-radius: 50%;
- bottom: .3em;
+ bottom: .35em;
display: block;
content: '';
- height: .3em;
+ height: .35em;
left: 50%;
- margin: -.5em 0 0 -.1em;
+ margin: -.25em 0 0 -.25em ;
position: absolute;
- width: .3em;
+ width: .35em;
}
.event.current-day:after {
@@ -139,18 +138,18 @@ table {
/*Next,Prev month*/
.btn-prev,
.btn-next {
- border: 2px solid none;
- border-radius: 50%;
+ border: 1px solid transparent;
color: #8BC4C9;
height: 2em;
font-size: .75em;
line-height: 2em;
- margin: -1em;
+ margin: auto;
position: absolute;
- top: 50%;
- width: 2em;
+ top: .3em;
+ width: 10em;
}
+
.btn-prev:hover,
.btn-next:hover {
background: none;
@@ -158,9 +157,9 @@ table {
}
.btn-prev {
- left: 1.7em;
+ left: 6em;
}
.btn-next {
- right: 1.7em;
+ right: 6em;
}
\ No newline at end of file
From 17a9245d2151c46bd391949e09d7b8c1bf839911 Mon Sep 17 00:00:00 2001
From: Sanghee Kim
Date: Wed, 23 Mar 2016 18:25:49 +0100
Subject: [PATCH 07/15] calendar added
---
design_membership/calendar/calendar.html | 107 +++++++++++++++
design_membership/calendar/stylesheet.css | 160 ++++++++++++++++++++++
2 files changed, 267 insertions(+)
create mode 100644 design_membership/calendar/calendar.html
create mode 100644 design_membership/calendar/stylesheet.css
diff --git a/design_membership/calendar/calendar.html b/design_membership/calendar/calendar.html
new file mode 100644
index 00000000..5b3b04a2
--- /dev/null
+++ b/design_membership/calendar/calendar.html
@@ -0,0 +1,107 @@
+
+
+
+
+ Calendar
+
+
+
+
+
+
+
+
+
+
+
+
+ September
+
+
+
+
+
+
+
+
+
+ Mo
+ Tu
+ We
+ Th
+ Fr
+ Sa
+ Su
+
+
+
+
+
+
+
+
+ 26
+ 27
+ 28
+ 29
+ 30
+ 31
+ 1
+
+
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+
+
+ 9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+
+
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+
+
+
+ 23
+ 24
+ 25
+ 26
+ 27
+ 28
+ 29
+
+
+ 30
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/design_membership/calendar/stylesheet.css b/design_membership/calendar/stylesheet.css
new file mode 100644
index 00000000..25861a58
--- /dev/null
+++ b/design_membership/calendar/stylesheet.css
@@ -0,0 +1,160 @@
+@charset "utf-8";
+/* CSS Document */
+
+/* ---------- FONTAWESOME ---------- */
+/* ---------- http://fortawesome.github.com/Font-Awesome/ ---------- */
+/* ---------- http://weloveiconfonts.com/ ---------- */
+
+@import url(http://weloveiconfonts.com/api/?family=fontawesome);
+
+*[class*="fontawesome-"]:before {
+ font-family: 'FontAwesome', sans-serif;
+}
+
+/* ---------- GENERAL ---------- */
+
+body {
+ background: #f9f9f9;
+ color: #0e171c;
+ font: 300 100%/1em 'Lato', sans-serif;
+ margin: 0;
+}
+
+a {
+ text-decoration: none;
+}
+
+/*Month size*/
+#monthtitle {
+ font-size: 1.2em;
+ line-height: 1.25em;
+ margin: .25em 0;
+ font-weight: 600;
+}
+
+h3 {
+ font-size: 1.5em;
+ line-height: 1em;
+ margin: .33em 0;
+}
+
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
+ margin:auto;
+
+}
+
+.container {
+ height: 358px;
+ left: 50%;
+ margin: -255px 0 0 -245px;
+ position: absolute;
+ top: 50%;
+ width: 340px;
+}
+
+/* ---------- CALENDAR ---------- */
+
+.calendar {
+ text-align: center;
+}
+
+.calendar header {
+ position: relative;
+}
+
+.calendar #monthtitle {
+ text-transform: uppercase;
+ color: #1A6687;
+}
+/*Title*/
+.calendar thead {
+ font-weight: 500;
+ /*text-transform: uppercase;*/
+ color: #8BC4C9;
+ /*margin-bottom:1px;*/
+
+}
+
+/*Body text*/
+.calendar tbody {
+ color: #7c8a95;
+}
+
+/*select date*/
+.calendar tbody td:hover {
+ background: #8BC4C9;
+ color: #f9f9f9;
+ /*border: .1px solid #8BC4C9;*/
+
+ /*border-radius: 50%;*/
+}
+
+.calendar thead>tr>td{
+ border-top:hidden;
+ border-left:hidden;
+ border-right: hidden;
+}
+
+.calendar td {
+ border: .1px solid #cbd1d2;
+ /*border-radius: 50%;*/
+ display: inline-block;
+ height: 2.5em;
+ line-height: 2.5em;
+ text-align: center;
+ width: 2.5em;
+
+}
+
+.calendar .prev-month,
+.calendar .next-month {
+ /*border: .1px solid #cbd1d2;*/
+ color: #cbd1d2;
+
+}
+
+.calendar .prev-month:hover,
+.calendar .next-month:hover {
+ border: .5px solid #cbd1d2;
+ background: #cbd1d2;
+ color: #f9f9f9;
+}
+
+/*Today*/
+.current-day {
+ color: #8BC4C9;
+ /*background-color: #8BC4C9;*/
+}
+
+
+/*Next,Prev month*/
+.btn-prev,
+.btn-next {
+ border: 1px solid transparent;
+ color: #8BC4C9;
+ font-size: 1.5em;
+ padding: 1em;
+ /*height: .7em;*/
+ /*line-height: .3em;*/
+ /*margin: auto;*/
+ /*position: absolute;*/
+ /*top: .1em;*/
+ /*width: 25em;*/
+}
+
+
+.btn-prev:hover,
+.btn-next:hover {
+ background: none;
+ color: #1A6687;
+}
+
+.btn-prev {
+ left: 6em;
+}
+
+.btn-next {
+ right: 6em;
+}
\ No newline at end of file
From 64a484e749e2131072f34f9d1807160385df86c9 Mon Sep 17 00:00:00 2001
From: Levi
Date: Wed, 20 Apr 2016 01:03:32 -0500
Subject: [PATCH 08/15] Separated base hosting page into html sections, Added
pricing selector to Django Page, Added pricing selector to Rails Page, Added
pricing selector to NodeJS Page, Implemented hosting signup , Implemented
hosting login, Created forms to handle login/signup errors
---
dynamicweb/urls.py | 4 +-
hosting/forms.py | 50 +++
hosting/models.py | 10 +-
hosting/static/hosting/css/landing-page.css | 6 +-
hosting/static/hosting/js/pricing.js | 5 -
hosting/templates/hosting/base.html | 334 ++----------------
.../templates/hosting/includes/_contact.html | 28 ++
.../templates/hosting/includes/_footer.html | 33 ++
.../templates/hosting/includes/_header.html | 31 ++
.../templates/hosting/includes/_navbar.html | 39 ++
.../hosting/includes/_our_infrastructure.html | 23 ++
.../templates/hosting/includes/_pricing.html | 144 ++++++++
.../includes/_your_infrastructure.html | 20 ++
hosting/templates/hosting/index.html | 10 +-
hosting/templates/hosting/login.html | 53 ++-
hosting/templates/hosting/pricing.html | 186 ----------
hosting/templates/hosting/signup.html | 59 ++--
hosting/urls.py | 12 +-
hosting/views.py | 169 ++++++---
19 files changed, 578 insertions(+), 638 deletions(-)
create mode 100644 hosting/forms.py
create mode 100644 hosting/templates/hosting/includes/_contact.html
create mode 100644 hosting/templates/hosting/includes/_footer.html
create mode 100644 hosting/templates/hosting/includes/_header.html
create mode 100644 hosting/templates/hosting/includes/_navbar.html
create mode 100644 hosting/templates/hosting/includes/_our_infrastructure.html
create mode 100644 hosting/templates/hosting/includes/_pricing.html
create mode 100644 hosting/templates/hosting/includes/_your_infrastructure.html
delete mode 100644 hosting/templates/hosting/pricing.html
diff --git a/dynamicweb/urls.py b/dynamicweb/urls.py
index daa7cbee..78c06077 100644
--- a/dynamicweb/urls.py
+++ b/dynamicweb/urls.py
@@ -5,12 +5,12 @@ from django.conf.urls.i18n import i18n_patterns
from django.conf.urls.static import static
from django.conf import settings
-from hosting.views import railshosting
+from hosting.views import RailsHostingView
from membership import urls as membership_urls
urlpatterns = [
url(r'^hosting/', include('hosting.urls', namespace="hosting")),
- url(r'^railshosting/', railshosting, name="rails.hosting"),
+ url(r'^railshosting/', RailsHostingView.as_view(), name="rails.hosting"),
url(r'^taggit_autosuggest/', include('taggit_autosuggest.urls')),
url(r'^jsi18n/(?P\S+?)/$',
'django.views.i18n.javascript_catalog'),
diff --git a/hosting/forms.py b/hosting/forms.py
new file mode 100644
index 00000000..ddb30e1c
--- /dev/null
+++ b/hosting/forms.py
@@ -0,0 +1,50 @@
+from django import forms
+from membership.models import CustomUser
+from django.contrib.auth import authenticate
+
+
+class HostingUserLoginForm(forms.Form):
+
+ email = forms.CharField(widget=forms.EmailInput())
+ password = forms.CharField(widget=forms.PasswordInput())
+
+ class Meta:
+ fields = ['email', 'password']
+
+ def clean(self):
+ email = self.cleaned_data.get('email')
+ password = self.cleaned_data.get('password')
+ is_auth = authenticate(email=email, password=password)
+ if not is_auth:
+ raise forms.ValidationError("Your username and/or password were incorrect.")
+ return self.cleaned_data
+
+ def clean_email(self):
+ email = self.cleaned_data.get('email')
+ try:
+ CustomUser.objects.get(email=email)
+ return email
+ except CustomUser.DoesNotExist:
+ raise forms.ValidationError("User does not exists")
+ else:
+ return email
+
+
+class HostingUserSignupForm(forms.ModelForm):
+
+ confirm_password = forms.CharField(widget=forms.PasswordInput())
+ password = forms.CharField(widget=forms.PasswordInput())
+
+ class Meta:
+ model = CustomUser
+ fields = ['name', 'email', 'password']
+ widgets = {
+ 'name': forms.TextInput(attrs={'placeholder': 'Enter your name or company name'}),
+ }
+
+ def clean_confirm_password(self):
+ password = self.cleaned_data.get('password')
+ confirm_password = self.cleaned_data.get('confirm_password')
+ if not confirm_password == password:
+ raise forms.ValidationError("Passwords don't match")
+ return confirm_password
diff --git a/hosting/models.py b/hosting/models.py
index ba38219a..59ba8521 100644
--- a/hosting/models.py
+++ b/hosting/models.py
@@ -41,9 +41,16 @@ class VirtualMachineType(models.Model):
@classmethod
def get_serialized_vm_types(cls):
return [vm.get_serialized_data()
- for vm in cls.objects.all()]
+ for vm in cls.objects.all()]
# return serializers.serialize("json",)
+ def defeault_price(self):
+ price = self.base_price
+ price += self.core_price
+ price += self.memory_price
+ price += self.disk_size_price * 10
+ return price
+
def get_serialized_data(self):
return {
'description': self.description,
@@ -53,5 +60,6 @@ class VirtualMachineType(models.Model):
'memory_price': self.memory_price,
'hosting_company_name': self.get_hosting_company_display(),
'hosting_company': self.hosting_company,
+ 'default_price': self.defeault_price(),
'id': self.id,
}
diff --git a/hosting/static/hosting/css/landing-page.css b/hosting/static/hosting/css/landing-page.css
index 6698c5ec..24be9dec 100644
--- a/hosting/static/hosting/css/landing-page.css
+++ b/hosting/static/hosting/css/landing-page.css
@@ -31,7 +31,8 @@ h6 {
}
.intro-header {
- padding-top: 50px; /* If you're making other pages, make sure there is 50px of padding to make sure the navbar doesn't overlap content! */
+ height: 85%;
+ padding-top: 10%; /* If you're making other pages, make sure there is 50px of padding to make sure the navbar doesn't overlap content! */
padding-bottom: 50px;
text-align: center;
color: #f8f8f8;
@@ -47,7 +48,8 @@ h6 {
background-size: cover;
}
.intro-header-2 {
- padding-top: 50px; /* If you're making other pages, make sure there is 50px of padding to make sure the navbar doesn't overlap content! */
+ height: 85%;
+ padding-top: 100px; /* If you're making other pages, make sure there is 50px of padding to make sure the navbar doesn't overlap content! */
padding-bottom: 50px;
text-align: center;
color: #f8f8f8;
diff --git a/hosting/static/hosting/js/pricing.js b/hosting/static/hosting/js/pricing.js
index 667239ab..64e80638 100644
--- a/hosting/static/hosting/js/pricing.js
+++ b/hosting/static/hosting/js/pricing.js
@@ -30,11 +30,6 @@ $( document ).ready(function() {
console.log(final_price_selector);
$(final_price_selector).text(price.toString().concat(CURRENCY));
-
-
-
-
-
}
//Listener function
diff --git a/hosting/templates/hosting/base.html b/hosting/templates/hosting/base.html
index 4c80530a..72ebff2e 100644
--- a/hosting/templates/hosting/base.html
+++ b/hosting/templates/hosting/base.html
@@ -60,336 +60,48 @@
-
-
-
-
-
+ {% include "hosting/includes/_navbar.html" %}
-
-
-
+ {% include "hosting/includes/_header.html" %}
-
-
-
-
-
-
-
-
-
How it works :
- {% block specification %}
- {% endblock %}
-
-
- {% with 'hosting/img/card-'|add:hosting|add:'.png' as image_static %}
-
-
-
- {% endwith %}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Option 1 : Your own infrastructure
-
We configure your own infrastructure for {{ hosting_long }}. Keep the comfort and safety of being at your home, while we set things up for you.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Option 2 : Our infrastructure
-
We take care of everything for you! You don't need your infrastructure. We give you everything you need in {{ hosting_long }} hosting. Full root access, 24x7 support.
+
+
+
How it works :
+
+ {% block specification %}
+ {% endblock %}
+
+ {% with 'hosting/img/card-'|add:hosting|add:'.png' as image_static %}
-
+
+ {% endwith %}
+
+
-
-
+
+ {% include "hosting/includes/_your_infrastructure.html" %}
-
-
-
-
-
+
+ {% include "hosting/includes/_our_infrastructure.html" %}
-
+
+ {% include "hosting/includes/_pricing.html" %}
-
-
-
-
-
Hosting Price Samples
-
Here are samples of our {{ hosting_long }} hosting offers, suited for different projects. Our offer examples come in different size, speed, and storage.
-
-
-
-
-
-
-
-
- {% include "hosting/pricing.html" %}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
QUESTIONS?
-
CONTACT US!
-
ungleich GmbH
-
{{ email }}
-
14 Hauptstrasse Luchsingen 8775
-
Switzerland
-
-
-
- Twitter
-
-
- Github
-
-
-
-
-
-
-
-
-
+
+ {% include "hosting/includes/_contact.html" %}
-
-
-
-
-
-
Copyright © ungleich GmbH {% now "Y" %}. All Rights Reserved
-
-
-
-
+ {% include "hosting/includes/_footer.html" %}
{% if vm_types %}
diff --git a/hosting/templates/hosting/includes/_contact.html b/hosting/templates/hosting/includes/_contact.html
new file mode 100644
index 00000000..b0ad9ff7
--- /dev/null
+++ b/hosting/templates/hosting/includes/_contact.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
QUESTIONS?
+
CONTACT US!
+
ungleich GmbH
+
{{ email }}
+
14 Hauptstrasse Luchsingen 8775
+
Switzerland
+
+
+
+ Twitter
+
+
+ Github
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/hosting/templates/hosting/includes/_footer.html b/hosting/templates/hosting/includes/_footer.html
new file mode 100644
index 00000000..270c9b61
--- /dev/null
+++ b/hosting/templates/hosting/includes/_footer.html
@@ -0,0 +1,33 @@
+{% load staticfiles %}
+
+
+
+
+
+
+
Copyright © ungleich GmbH {% now "Y" %}. All Rights Reserved
+
+
+
+
\ No newline at end of file
diff --git a/hosting/templates/hosting/includes/_header.html b/hosting/templates/hosting/includes/_header.html
new file mode 100644
index 00000000..03e3e5c2
--- /dev/null
+++ b/hosting/templates/hosting/includes/_header.html
@@ -0,0 +1,31 @@
+{% load staticfiles %}
+
+
+
+
\ No newline at end of file
diff --git a/hosting/templates/hosting/includes/_navbar.html b/hosting/templates/hosting/includes/_navbar.html
new file mode 100644
index 00000000..62ae9a12
--- /dev/null
+++ b/hosting/templates/hosting/includes/_navbar.html
@@ -0,0 +1,39 @@
+{% load staticfiles %}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/hosting/templates/hosting/includes/_our_infrastructure.html b/hosting/templates/hosting/includes/_our_infrastructure.html
new file mode 100644
index 00000000..135d6ba4
--- /dev/null
+++ b/hosting/templates/hosting/includes/_our_infrastructure.html
@@ -0,0 +1,23 @@
+{% load staticfiles %}
+
+
+
+
+
+
+
+
+
+
+
Option 2 : Our infrastructure
+
We take care of everything for you! You don't need your infrastructure. We give you everything you need in {{ hosting_long }} hosting. Full root access, 24x7 support.
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/hosting/templates/hosting/includes/_pricing.html b/hosting/templates/hosting/includes/_pricing.html
new file mode 100644
index 00000000..628a65f8
--- /dev/null
+++ b/hosting/templates/hosting/includes/_pricing.html
@@ -0,0 +1,144 @@
+
+
+
+
+
+
+
+
Hosting Price Samples
+
Here are samples of our {{ hosting_long }} hosting offers, suited for different projects. Our offer examples come in different size, speed, and storage.
+
+
+
+
+
+
+
+
+
+ {% for vm in vm_types %}
+
+
+
+
+
+ Cores:
+
+ {% with ''|center:10 as range %}
+ {% for _ in range %}
+ {{ forloop.counter }}
+ {% endfor %}
+ {% endwith %}
+
+
+
+
+
Memory:
+
+
+
+ {% with ''|center:50 as range %}
+ {% for _ in range %}
+ {{ forloop.counter }}
+ {% endfor %}
+ {% endwith %}
+
+ GiB
+
+
+
+ Disk Size:
+
+ GiB
+
+
+
$199
+
+
+ Buy it
+
+
+
+
+
+
+
+
+ {% endfor %}
+ {% for vm in vm_types %}
+
+
+
+
+
+ {{vm.hosting_company_name}}
+
+
+
+
+
+ Cores:
+
+ {% with ''|center:10 as range %}
+ {% for _ in range %}
+ {{ forloop.counter }}
+ {% endfor %}
+ {% endwith %}
+
+
+
+
+
+
+
+
+ Memory:
+
+ {% with ''|center:50 as range %}
+ {% for _ in range %}
+ {{ forloop.counter }}
+ {% endfor %}
+ {% endwith %}
+
+ GiB
+
+
+
+
+
+ Disk Size:
+
+ GiB
+
+
+
+ {{vm.default_price|floatformat}}$
+ per month
+
+
+ Buy it
+
+
+
+
+ {% endfor %}
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/hosting/templates/hosting/includes/_your_infrastructure.html b/hosting/templates/hosting/includes/_your_infrastructure.html
new file mode 100644
index 00000000..e70a6261
--- /dev/null
+++ b/hosting/templates/hosting/includes/_your_infrastructure.html
@@ -0,0 +1,20 @@
+{% load staticfiles %}
+
+
+
+
+
+
+
+
+
Option 1 : Your own infrastructure
+
We configure your own infrastructure for {{ hosting_long }}. Keep the comfort and safety of being at your home, while we set things up for you.
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/hosting/templates/hosting/index.html b/hosting/templates/hosting/index.html
index 0956b500..446534d4 100644
--- a/hosting/templates/hosting/index.html
+++ b/hosting/templates/hosting/index.html
@@ -14,16 +14,16 @@
Rails Hosting.ch - Ruby on Rails as easy as possible
-
+
-
+
-
+
-
+
@@ -296,7 +296,7 @@
{% if error_message %}{{ error_message }}
{% endif %}
{{ form.non_field_errors }}
{{ form.email.errors }}
-
+
{% csrf_token %}
diff --git a/hosting/templates/hosting/pricing.html b/hosting/templates/hosting/pricing.html
deleted file mode 100644
index 95e8cc83..00000000
--- a/hosting/templates/hosting/pricing.html
+++ /dev/null
@@ -1,186 +0,0 @@
-
-
-
- {% for vm in vm_types %}
-
-
-
-
-
- Cores:
-
- {% with ''|center:10 as range %}
- {% for _ in range %}
- {{ forloop.counter }}
- {% endfor %}
- {% endwith %}
-
-
-
-
-
Memory:
-
-
-
- {% with ''|center:50 as range %}
- {% for _ in range %}
- {{ forloop.counter }}
- {% endfor %}
- {% endwith %}
-
- GiB
-
-
-
- Disk Size:
-
- GiB
-
-
-
$199
-
-
- Buy it
-
-
-
-
-
-
-
-
- {% endfor %}
- {% for vm in vm_types %}
-
-
-
-
-
- {{vm.hosting_company_name}}
-
-
-
-
-
- Cores:
-
- {% with ''|center:10 as range %}
- {% for _ in range %}
- {{ forloop.counter }}
- {% endfor %}
- {% endwith %}
-
-
-
-
-
-
-
-
- Memory:
-
- {% with ''|center:50 as range %}
- {% for _ in range %}
- {{ forloop.counter }}
- {% endfor %}
- {% endwith %}
-
- GiB
-
-
-
-
-
- Disk Size:
-
- GiB
-
-
-
- select
- per month
-
-
- Buy it
-
-
-
-
- {% endfor %}
-
-
-
-
-
-
-
diff --git a/hosting/templates/hosting/signup.html b/hosting/templates/hosting/signup.html
index b7dc3239..d92957bc 100644
--- a/hosting/templates/hosting/signup.html
+++ b/hosting/templates/hosting/signup.html
@@ -1,3 +1,5 @@
+{% load staticfiles bootstrap3%}
+
@@ -9,13 +11,13 @@
- Rails Hosting.ch - Ruby on Rails as easy as possible
+ Signup
-
+
-
+
@@ -45,7 +47,7 @@
-
+
@@ -139,7 +132,7 @@
Contact
- Copyright © ungleich GmbH 2015. All Rights Reserved
+ Copyright © ungleich GmbH {% now "Y" %}. All Rights Reserved
diff --git a/hosting/urls.py b/hosting/urls.py
index ee79deb9..0852bc0d 100644
--- a/hosting/urls.py
+++ b/hosting/urls.py
@@ -1,12 +1,14 @@
from django.conf.urls import url
-from . import views
-from .views import VMPricingView, DjangoHostingView
+from .views import VMPricingView, DjangoHostingView, RailsHostingView, \
+ NodeJSHostingView, LoginView, SignupView, IndexView
urlpatterns = [
- url(r'beta$', views.beta, name='beta'),
+ url(r'index/?$', IndexView.as_view(), name='index'),
url(r'pricing/?$', VMPricingView.as_view(), name='pricing'),
url(r'django/?$', DjangoHostingView.as_view(), name='djangohosting'),
- url(r'nodejs$', views.nodejshosting, name='nodejshosting'),
- url(r'rails$', views.railshosting, name='railshosting'),
+ url(r'nodejs/?$', NodeJSHostingView.as_view(), name='nodejshosting'),
+ url(r'rails/?$', RailsHostingView.as_view(), name='railshosting'),
+ url(r'login/?$', LoginView.as_view(), name='login'),
+ url(r'signup/?$', SignupView.as_view(), name='signup'),
]
diff --git a/hosting/views.py b/hosting/views.py
index 7bbb2b85..27bbeea2 100644
--- a/hosting/views.py
+++ b/hosting/views.py
@@ -1,16 +1,14 @@
-import datetime
from django.shortcuts import get_object_or_404, render
-from django.forms import ModelForm
+from django.core.urlresolvers import reverse_lazy, reverse
+
+from django.views.generic import View, CreateView, FormView
from django.http import HttpResponseRedirect
-from django.core.urlresolvers import reverse
-
-from django.core.mail import send_mail
-from django.core.mail import mail_managers
-from django.views.generic import View, DetailView
-
+from django.contrib.auth import authenticate, login
+from membership.models import CustomUser
from .models import RailsBetaUser, VirtualMachineType
+from .forms import HostingUserSignupForm, HostingUserLoginForm
class VMPricingView(View):
@@ -38,67 +36,122 @@ class DjangoHostingView(View):
return render(request, self.template_name, context)
-class RailsBetaUserForm(ModelForm):
- required_css_class = 'form-control'
- class Meta:
- model = RailsBetaUser
- fields = [ 'email' ]
+class RailsHostingView(View):
+ template_name = "hosting/rails.html"
-def hosting(request, context):
- email = RailsBetaUser(received_date=datetime.datetime.now())
+ def get_context_data(self, **kwargs):
+ context = {}
+ context["hosting"] = "rails"
+ context["hosting_long"] = "Ruby On Rails"
+ context["domain"] = "rails-hosting.ch"
+ context["google_analytics"] = "UA-62285904-5"
+ context["email"] = "info@rails-hosting.ch"
+ context["vm_types"] = VirtualMachineType.get_serialized_vm_types()
+ return context
- if request.method == 'POST':
- context['form'] = RailsBetaUserForm(request.POST, instance=email)
- if context['form'].is_valid():
- context['form'].save()
- email = context['form'].cleaned_data['email']
- subject = "%shosting request" % context['hosting']
- message = "Request for beta by: %s" % email
+ def get(self, request, *args, **kwargs):
+ context = self.get_context_data()
+ return render(request, self.template_name, context)
- mail_managers(subject, message)
- return HttpResponseRedirect(reverse("hosting:beta"))
- else:
- context['form'] = RailsBetaUserForm()
- context['error_message'] = "a problem"
+class NodeJSHostingView(View):
+ template_name = "hosting/nodejs.html"
- page = "hosting/%s.html" % context['hosting']
+ def get_context_data(self, **kwargs):
+ context = {}
+ context["hosting"] = "nodejs"
+ context["hosting_long"] = "NodeJS"
+ context["domain"] = "node-hosting.ch"
+ context["google_analytics"] = "UA-62285904-7"
+ context["email"] = "info@node-hosting.ch"
+ context["vm_types"] = VirtualMachineType.get_serialized_vm_types()
+ return context
- return render(request, page, context)
+ def get(self, request, *args, **kwargs):
+ context = self.get_context_data()
+ return render(request, self.template_name, context)
-################################################################################
-# Hostings
-#
-def djangohosting(request):
- context = {}
- context["hosting"]="django"
- context["hosting_long"]="Django"
- context["domain"]="django-hosting.ch"
- context["google_analytics"]="UA-62285904-6"
- context["email"]="info@django-hosting.ch"
- return hosting(request, context)
+class IndexView(View):
+ template_name = "hosting/index.html"
-def railshosting(request):
- context = {}
- context["hosting"]="rails"
- context["hosting_long"]="Ruby On Rails"
- context["domain"]="rails-hosting.ch"
- context["google_analytics"]="UA-62285904-5"
- context["email"]="info@rails-hosting.ch"
+ def get_context_data(self, **kwargs):
+ context = {}
+ context["hosting"] = "nodejs"
+ context["hosting_long"] = "NodeJS"
+ context["domain"] = "node-hosting.ch"
+ context["google_analytics"] = "UA-62285904-7"
+ context["email"] = "info@node-hosting.ch"
+ context["vm_types"] = VirtualMachineType.get_serialized_vm_types()
+ return context
- return hosting(request, context)
+ def get(self, request, *args, **kwargs):
+ context = self.get_context_data()
+ return render(request, self.template_name, context)
-def nodejshosting(request):
- context = {}
- context["hosting"]="nodejs"
- context["hosting_long"]="NodeJS"
- context["domain"]="node-hosting.ch"
- context["google_analytics"]="UA-62285904-7"
- context["email"]="info@node-hosting.ch"
+class LoginView(FormView):
+ template_name = 'hosting/login.html'
+ form_class = HostingUserLoginForm
+ moodel = CustomUser
+ success_url = reverse_lazy('hosting:login')
- return hosting(request, context)
+ def form_valid(self, form):
+ email = form.cleaned_data.get('email')
+ password = form.cleaned_data.get('password')
+ auth_user = authenticate(email=email, password=password)
+ if auth_user:
+ login(self.request, auth_user)
+ return HttpResponseRedirect(self.get_success_url())
+ return HttpResponseRedirect(self.get_success_url())
-def beta(request):
- return render(request, 'hosting/beta.html')
+
+class SignupView(CreateView):
+ template_name = 'hosting/signup.html'
+ form_class = HostingUserSignupForm
+ moodel = CustomUser
+
+ def get_success_url(self):
+ return reverse_lazy('hosting:signup')
+
+ def form_valid(self, form):
+ name = form.cleaned_data.get('name')
+ email = form.cleaned_data.get('email')
+ password = form.cleaned_data.get('password')
+ CustomUser.register(name, password, email)
+ auth_user = authenticate(email=email, password=password)
+ login(self.request, auth_user)
+ return HttpResponseRedirect(self.get_success_url())
+
+
+
+# class RailsBetaUserForm(ModelForm):
+# required_css_class = 'form-control'
+# class Meta:
+# model = RailsBetaUser
+# fields = [ 'email' ]
+
+# def hosting(request, context):
+# email = RailsBetaUser(received_date=datetime.datetime.now())
+
+# if request.method == 'POST':
+# context['form'] = RailsBetaUserForm(request.POST, instance=email)
+# if context['form'].is_valid():
+# context['form'].save()
+# email = context['form'].cleaned_data['email']
+# subject = "%shosting request" % context['hosting']
+# message = "Request for beta by: %s" % email
+
+# mail_managers(subject, message)
+
+# return HttpResponseRedirect(reverse("hosting:beta"))
+# else:
+# context['form'] = RailsBetaUserForm()
+# context['error_message'] = "a problem"
+
+# page = "hosting/%s.html" % context['hosting']
+
+# return render(request, page, context)
+
+# def beta(request):
+# return render(request, 'hosting/beta.html')
From 213f295394a18583653d77b6cb17835f1eb92768 Mon Sep 17 00:00:00 2001
From: Tomislav R
Date: Sat, 23 Apr 2016 19:00:20 +0200
Subject: [PATCH 09/15] digitalglarus booking update
---
design_membership/calendar/stylesheet.css | 2 +-
design_membership/login.html | 6 +-
digitalglarus/models.py | 1 +
.../static/digitalglarus/css/login.css | 71 +
digitalglarus/templates/base_glarus.html | 22 +-
digitalglarus/urls.py | 2 +
digitalglarus/views.py | 32 +-
dynamicweb/settings/base.py | 4 +-
dynamicweb/urls.py | 2 +-
membership/calendar/__init__.py | 1 +
membership/calendar/calendar.py | 136 +
.../migrations/0003_auto_20160422_1002.py | 35 +
membership/models.py | 31 +-
membership/static/membership.css | 8644 ++++++++++-------
membership/static/stylesheet.css | 168 +
membership/templates/calendar/calendar.html | 112 +
membership/templates/error.html | 2 +-
membership/templates/login.html | 6 +-
membership/templates/membership.html | 434 +-
membership/templates/success.html | 2 +-
membership/urls.py | 3 +-
membership/views.py | 13 +-
22 files changed, 5935 insertions(+), 3794 deletions(-)
create mode 100644 digitalglarus/static/digitalglarus/css/login.css
create mode 100644 membership/calendar/__init__.py
create mode 100644 membership/calendar/calendar.py
create mode 100644 membership/migrations/0003_auto_20160422_1002.py
create mode 100644 membership/static/stylesheet.css
create mode 100644 membership/templates/calendar/calendar.html
diff --git a/design_membership/calendar/stylesheet.css b/design_membership/calendar/stylesheet.css
index 25861a58..b5902a87 100644
--- a/design_membership/calendar/stylesheet.css
+++ b/design_membership/calendar/stylesheet.css
@@ -84,7 +84,7 @@ table {
/*select date*/
.calendar tbody td:hover {
- background: #8BC4C9;
+ background: #347D80;
color: #f9f9f9;
/*border: .1px solid #8BC4C9;*/
diff --git a/design_membership/login.html b/design_membership/login.html
index 6f796f06..5c9d5461 100644
--- a/design_membership/login.html
+++ b/design_membership/login.html
@@ -15,15 +15,15 @@
- Brand
+ Digital Glarus
diff --git a/digitalglarus/models.py b/digitalglarus/models.py
index 19962a2f..3939dac1 100644
--- a/digitalglarus/models.py
+++ b/digitalglarus/models.py
@@ -1,6 +1,7 @@
from django.db import models
from cms.models import CMSPlugin
from filer.fields.image import FilerImageField
+from django.core.urlresolvers import reverse
class Supporter(models.Model):
diff --git a/digitalglarus/static/digitalglarus/css/login.css b/digitalglarus/static/digitalglarus/css/login.css
new file mode 100644
index 00000000..f0cd3326
--- /dev/null
+++ b/digitalglarus/static/digitalglarus/css/login.css
@@ -0,0 +1,71 @@
+.user {
+ padding-right: 2%;
+ background-position: 6px 7px;
+ background-repeat: no-repeat;
+ background-color: white;
+ padding: 5px 8px 4px 8px;
+ -webkit-border-radius: 0px 0px 8px 8px;
+ -moz-border-radius: 0px 0px 8px 8px;
+ border-radius: 1px 1px 1px 1px;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ margin-left: 8px;
+ background-color: #333;
+ padding: 4px 4px 0px 4px;
+ -webkit-border-radius: 0px 0px 10px 10px;
+ -moz-border-radius: 0px 0px 10px 10px;
+ border-radius: 0px 0px 10px 10px;
+ font-size: 14px;
+ line-height: 1.42857143;
+ color: #794646;
+ background-color: #fff;
+
+}
+
+.user_loggedin{
+ padding-bottom: 2%;
+ padding-right: 2%;
+ background-position: 6px 7px;
+ background-repeat: no-repeat;
+ background-color: white;
+ padding: 5px 8px 4px 8px;
+ -webkit-border-radius: 0px 0px 8px 8px;
+ -moz-border-radius: 0px 0px 8px 8px;
+ border-radius: 1px 1px 1px 1px;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ float: left;
+ margin-left: 8px;
+ background-color: #333;
+ padding: 4px 4px 0px 4px;
+ -webkit-border-radius: 0px 0px 10px 10px;
+ -moz-border-radius: 0px 0px 10px 10px;
+ border-radius: 0px 0px 10px 10px;
+ font-size: 14px;
+ line-height: 1.42857143;
+ color: #777;
+ background-color: #fff;
+}
+
+.user > span {
+ width: 100%;
+}
+
+.u_P {
+ background-color: #fffcfc;
+ text-transform: uppercase;
+ padding-right: 2%;
+ padding-left:2%;
+ padding-bottom:0.5%;
+ margin-right: 1%;
+}
+.u_P a{
+ margin-bottom: 1%;
+ color: #777;
+}
+.u_P a:hover{
+ text-decoration: None;
+ color: #000;
+}
diff --git a/digitalglarus/templates/base_glarus.html b/digitalglarus/templates/base_glarus.html
index 36a86190..b1d57293 100644
--- a/digitalglarus/templates/base_glarus.html
+++ b/digitalglarus/templates/base_glarus.html
@@ -21,12 +21,15 @@
+
+
{% render_block "css" postprocessor "compressor.contrib.sekizai.compress" %}
{% render_block "js" postprocessor "compressor.contrib.sekizai.compress" %}
@@ -37,6 +40,7 @@
+
+
+
diff --git a/membership/templates/error.html b/membership/templates/error.html
index 7e7ce023..c697ef87 100644
--- a/membership/templates/error.html
+++ b/membership/templates/error.html
@@ -36,7 +36,7 @@
diff --git a/membership/templates/login.html b/membership/templates/login.html
index fc795325..d199f601 100644
--- a/membership/templates/login.html
+++ b/membership/templates/login.html
@@ -20,15 +20,15 @@
- Brand
+ Digital Glarus
diff --git a/membership/templates/membership.html b/membership/templates/membership.html
index a0c5468c..335bc847 100644
--- a/membership/templates/membership.html
+++ b/membership/templates/membership.html
@@ -1,196 +1,252 @@
-
+
+
-
-
-
+
+
+
{% load static %}
-
-
-
+
+
+
+
+
+
+
+ {% if request.user.is_authenticated %}
+
{{ request.user.name }} (
Logout )
+ {% else %}
+
Login
+ {% endif %}
+
-
- {% load static %}
-
-
-
-
-
-
When do you want to cowork?
-
Pick a date!
-
Calender
-
-
-
-
-
-
-
-
-
-
Become our member of Digital Glarus!
-
-
-
-
-
-
-
-
-
-
-
-
The Spontaneous
-
35CHF/Month (1 day pass included)
-
Do you dream of having a place to be inspired in the middle of the Alps?
- With only 35CHF a month, you can enjoy the full benefit of a Digital Chalet
- Schwanden membership! You can enjoy high speed network connection and comfortable
- working desks where you can come up with best ideas for your project surrounded
- by friendly coworkers. And if your work gets too productive to leave, you
- can crash on our guest bed for the night, the house has everything a coworker
- needs from an equipped kitchen to a shower. The Spontaneous includes 1
- day pass included, it is perfect for you if you are planning a retreat
- month of a coworking in the nature, or coming for a limited period to Switzerland
- for coworking. It is a perfect try-out package!
-
-
-
Buy Now
-
-
-
-
-
-
-
-
-
The Committed
-
360CHF/Year (2 free day per month included)
-
Be a regular coworker in our Digital Chalet Schwanden! With only 360CHF,
- you can enjoy the full coworking space for the whole year, with additional
- 2 free day passes for each month. It is an ideal deal for our busy and
- active coworkers who would like to save time(and nerve)for requesting new
- membership every month. Signifiantly discounted price is applied for yearly
- membership.
-
-
-
Buy Now
-
-
-
-
-
-
-
-
-
-
-
-
A Quick Glance..
-
A short guide for membership features.
-
-
-
-
-
-
-
-
- The Spontaneous
- The Committed
-
-
-
-
- Includes
- 1 work day included
- 2 free work days per month
-
-
- Fits for
- Great for trial, see how it goes
- Perfect for coworking with great price
-
-
- Price
- Decicde every month
- Pay once per year
-
-
- Membership price
- 35CHF/Month
- 360CHF/Year
-
-
- Price per additional day
- 20 CHF
- 15 CHF
-
-
-
-
-
-
-
-
-
-
-
-
Digital Glarus
-
In der Au 7 8762 Schwanden
- Copyright © ungleich GmbH 2016
-
-
-
-
-
+
+
+
+ Home
+
+
+ Contacts
+
-
\ No newline at end of file
+
+
+
+
+
+
+
+ {% load static %}
+
+
+
+
+
+
When do you want to cowork?
+
+
Pick a date!
+
Calender
+
+
+
+
+
+
+
+ {% include 'calendar/calendar.html' %}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Become our member of Digital Glarus!
+
+
+
+
+
+
+
+
+
+
+
+
The Spontaneous
+
+
35CHF/Month (1 day pass included)
+
+
Do you dream of having a place to be inspired in the middle of the Alps?
+ With only 35CHF a month, you can enjoy the full benefit of a Digital Chalet
+ Schwanden membership! You can enjoy high speed network connection and comfortable
+ working desks where you can come up with best ideas for your project surrounded
+ by friendly coworkers. And if your work gets too productive to leave, you
+ can crash on our guest bed for the night, the house has everything a coworker
+ needs from an equipped kitchen to a shower. The Spontaneous includes 1
+ day pass included, it is perfect for you if you are planning a retreat
+ month of a coworking in the nature, or coming for a limited period to Switzerland
+ for coworking. It is a perfect try-out package!
+
+
+
Buy Now
+
+
+
+
+
+
+
+
+
The Committed
+
+
360CHF/Year (2 free day per month included)
+
+
Be a regular coworker in our Digital Chalet Schwanden! With only 360CHF,
+ you can enjoy the full coworking space for the whole year, with additional
+ 2 free day passes for each month. It is an ideal deal for our busy and
+ active coworkers who would like to save time(and nerve)for requesting new
+ membership every month. Signifiantly discounted price is applied for yearly
+ membership.
+
+
+
Buy Now
+
+
+
+
+
+
+
+
+
+
+
+
A Quick Glance..
+
+
A short guide for membership features.
+
+
+
+
+
+
+
+
+ The Spontaneous
+ The Committed
+
+
+
+
+ Includes
+ 1 work day included
+ 2 free work days per month
+
+
+ Fits for
+ Great for trial, see how it goes
+ Perfect for coworking with great price
+
+
+ Price
+ Decicde every month
+ Pay once per year
+
+
+ Membership price
+ 35CHF/Month
+ 360CHF/Year
+
+
+ Price per additional day
+ 20 CHF
+ 15 CHF
+
+
+
+
+
+
+
+
+
+
+
+
Digital Glarus
+
+
In der Au 7 8762 Schwanden
+ Copyright © ungleich GmbH 2016
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/membership/templates/success.html b/membership/templates/success.html
index ed64b8ec..88cb2256 100644
--- a/membership/templates/success.html
+++ b/membership/templates/success.html
@@ -19,7 +19,7 @@
Check your email to activate your account.
diff --git a/membership/urls.py b/membership/urls.py
index d1d1c474..65be6868 100644
--- a/membership/urls.py
+++ b/membership/urls.py
@@ -5,9 +5,10 @@ from django.contrib.auth.decorators import login_required
from . import views
urlpatterns = (
- url(r"^$", views.LoginRegistrationView.as_view(), name='login'),
+ url(r"^$", views.LoginRegistrationView.as_view(), name='login_glarus'),
url(r"^validate/(?P.*)/$", views.validate_email),
url(r"^membership/$", login_required(views.MembershipView.as_view()), name='membership'),
+ url(r'logout/?$',views.logout_glarus,name='logout_glarus'),
url(r"^buy/(?P\w+)/$", login_required(views.CreditCardView.as_view()), name='payment'),
url(r'^buy/(?P\w+)/reset',login_required(views.reset),name='reset')
)
diff --git a/membership/views.py b/membership/views.py
index 5c73fab0..23f08ede 100644
--- a/membership/views.py
+++ b/membership/views.py
@@ -4,6 +4,10 @@ from django.contrib.auth import authenticate, login
from django.views.decorators.cache import cache_control
from django.conf import settings
from django.db.models import Q
+from django.utils.translation import get_language
+from django.contrib.auth import logout
+from django.http import HttpResponseRedirect
+from django.core.urlresolvers import reverse_lazy,reverse
from .models import CustomUser
from .forms import (LoginForm, RegisterForm, PaymentForm)
@@ -105,9 +109,14 @@ class LoginRegistrationView(View):
class MembershipView(View):
def get(self, request):
- #if the user has payed allready
+ #if the user has payed already
member_payed = request.user.creditcards_set.filter(Q(payment_type='month') | Q(payment_type='year'))
if member_payed:
return redirect('/')
request.session['next'] = 0
- return render(request, 'templates/membership.html')
+ language = get_language()
+ return render(request, 'templates/membership.html',context={'language_code':language})
+
+def logout_glarus(request):
+ logout(request)
+ return HttpResponseRedirect('/digitalglarus')
\ No newline at end of file
From 5d0b49b6d9f08f317c0e81a62079bebaeabf83ed Mon Sep 17 00:00:00 2001
From: Tomislav R
Date: Sat, 23 Apr 2016 20:12:55 +0200
Subject: [PATCH 10/15] new url structure
---
digitalglarus/urls.py | 6 +++---
membership/templates/login.html | 2 +-
membership/templates/membership.html | 2 +-
3 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/digitalglarus/urls.py b/digitalglarus/urls.py
index 29c9dcb8..ac72fc26 100644
--- a/digitalglarus/urls.py
+++ b/digitalglarus/urls.py
@@ -5,13 +5,13 @@ from . import views
from .views import ContactView, IndexView, AboutView
urlpatterns = [
- url(r'', IndexView.as_view(), name='home'),
+ url(r'^$', IndexView.as_view(), name='home'),
url(_(r'home/?$'), IndexView.as_view(), name='home'),
url(_(r'about/?$'), AboutView.as_view(), name='about'),
url(_(r'contact/?$'), ContactView.as_view(), name='contact'),
url(_(r'supporters/?$'), views.supporters, name='supporters'),
- url(_(r'calendar_api/(?P\d+)/(?P\d+)?$'),views.CalendarApi.as_view()),
- url(_(r'calendar_api/'),views.CalendarApi.as_view()),
+ url(r'calendar_api/(?P\d+)/(?P\d+)?$',views.CalendarApi.as_view()),
+ url(r'calendar_api/',views.CalendarApi.as_view()),
url(_(r'support-us/?$'), views.support, name='support'),
url(r'^blog/(?P\w[-\w]*)/$', views.blog_detail, name='blog-detail'),
url(r'blog/$', views.blog, name='blog'),
diff --git a/membership/templates/login.html b/membership/templates/login.html
index d199f601..6d1c981c 100644
--- a/membership/templates/login.html
+++ b/membership/templates/login.html
@@ -25,7 +25,7 @@
- Home
+ Home
Contacts
diff --git a/membership/templates/membership.html b/membership/templates/membership.html
index 335bc847..a9579709 100644
--- a/membership/templates/membership.html
+++ b/membership/templates/membership.html
@@ -38,7 +38,7 @@
- Home
+ Home
Contacts
From 8bf18c2833e9676a7ab8ed38edef9359e8ff754f Mon Sep 17 00:00:00 2001
From: Tomislav R
Date: Sat, 23 Apr 2016 20:27:13 +0200
Subject: [PATCH 11/15] https
---
digitalglarus/static/digitalglarus/css/font-awesome.min.css | 4 ++++
1 file changed, 4 insertions(+)
create mode 100644 digitalglarus/static/digitalglarus/css/font-awesome.min.css
diff --git a/digitalglarus/static/digitalglarus/css/font-awesome.min.css b/digitalglarus/static/digitalglarus/css/font-awesome.min.css
new file mode 100644
index 00000000..24fcc04c
--- /dev/null
+++ b/digitalglarus/static/digitalglarus/css/font-awesome.min.css
@@ -0,0 +1,4 @@
+/*!
+ * Font Awesome 4.3.0 by @davegandy - http://fontawesome.io - @fontawesome
+ * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
+ */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.3.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.3.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.3.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.3.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.3.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.3.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transform:translate(0, 0)}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-genderless:before,.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}
\ No newline at end of file
From 8ea8ff216c2eee22ca2de69f69ebe45ce83fb305 Mon Sep 17 00:00:00 2001
From: Tomislav R
Date: Sat, 23 Apr 2016 20:39:02 +0200
Subject: [PATCH 12/15] font-awesome local version
---
.../static/digitalglarus/css/font-awesome.css | 2178 +++++++++++++++++
.../digitalglarus/fonts/FontAwesome.otf | Bin 0 -> 123112 bytes
.../fonts/font-awesome-4.6.1.zip | Bin 0 -> 591843 bytes
.../fonts/fontawesome-webfont.eot | Bin 0 -> 75220 bytes
.../fonts/fontawesome-webfont.svg | 685 ++++++
.../fonts/fontawesome-webfont.ttf | Bin 0 -> 150920 bytes
.../fonts/fontawesome-webfont.woff | Bin 0 -> 89076 bytes
.../fonts/fontawesome-webfont.woff2 | Bin 0 -> 70728 bytes
digitalglarus/templates/base_glarus.html | 2 +-
membership/templates/membership.html | 6 +-
10 files changed, 2867 insertions(+), 4 deletions(-)
create mode 100644 digitalglarus/static/digitalglarus/css/font-awesome.css
create mode 100644 digitalglarus/static/digitalglarus/fonts/FontAwesome.otf
create mode 100644 digitalglarus/static/digitalglarus/fonts/font-awesome-4.6.1.zip
create mode 100644 digitalglarus/static/digitalglarus/fonts/fontawesome-webfont.eot
create mode 100644 digitalglarus/static/digitalglarus/fonts/fontawesome-webfont.svg
create mode 100644 digitalglarus/static/digitalglarus/fonts/fontawesome-webfont.ttf
create mode 100644 digitalglarus/static/digitalglarus/fonts/fontawesome-webfont.woff
create mode 100644 digitalglarus/static/digitalglarus/fonts/fontawesome-webfont.woff2
diff --git a/digitalglarus/static/digitalglarus/css/font-awesome.css b/digitalglarus/static/digitalglarus/css/font-awesome.css
new file mode 100644
index 00000000..bb0fe51a
--- /dev/null
+++ b/digitalglarus/static/digitalglarus/css/font-awesome.css
@@ -0,0 +1,2178 @@
+/*!
+ * Font Awesome 4.6.1 by @davegandy - http://fontawesome.io - @fontawesome
+ * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
+ */
+/* FONT PATH
+ * -------------------------- */
+@font-face {
+ font-family: 'FontAwesome';
+ src: url('../fonts/fontawesome-webfont.eot?v=4.6.1');
+ src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.6.1') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff2?v=4.6.1') format('woff2'), url('../fonts/fontawesome-webfont.woff?v=4.6.1') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.6.1') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.6.1#fontawesomeregular') format('svg');
+ font-weight: normal;
+ font-style: normal;
+}
+.fa {
+ display: inline-block;
+ font: normal normal normal 14px/1 FontAwesome;
+ font-size: inherit;
+ text-rendering: auto;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+/* makes the font 33% larger relative to the icon container */
+.fa-lg {
+ font-size: 1.33333333em;
+ line-height: 0.75em;
+ vertical-align: -15%;
+}
+.fa-2x {
+ font-size: 2em;
+}
+.fa-3x {
+ font-size: 3em;
+}
+.fa-4x {
+ font-size: 4em;
+}
+.fa-5x {
+ font-size: 5em;
+}
+.fa-fw {
+ width: 1.28571429em;
+ text-align: center;
+}
+.fa-ul {
+ padding-left: 0;
+ margin-left: 2.14285714em;
+ list-style-type: none;
+}
+.fa-ul > li {
+ position: relative;
+}
+.fa-li {
+ position: absolute;
+ left: -2.14285714em;
+ width: 2.14285714em;
+ top: 0.14285714em;
+ text-align: center;
+}
+.fa-li.fa-lg {
+ left: -1.85714286em;
+}
+.fa-border {
+ padding: .2em .25em .15em;
+ border: solid 0.08em #eeeeee;
+ border-radius: .1em;
+}
+.fa-pull-left {
+ float: left;
+}
+.fa-pull-right {
+ float: right;
+}
+.fa.fa-pull-left {
+ margin-right: .3em;
+}
+.fa.fa-pull-right {
+ margin-left: .3em;
+}
+/* Deprecated as of 4.4.0 */
+.pull-right {
+ float: right;
+}
+.pull-left {
+ float: left;
+}
+.fa.pull-left {
+ margin-right: .3em;
+}
+.fa.pull-right {
+ margin-left: .3em;
+}
+.fa-spin {
+ -webkit-animation: fa-spin 2s infinite linear;
+ animation: fa-spin 2s infinite linear;
+}
+.fa-pulse {
+ -webkit-animation: fa-spin 1s infinite steps(8);
+ animation: fa-spin 1s infinite steps(8);
+}
+@-webkit-keyframes fa-spin {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+ 100% {
+ -webkit-transform: rotate(359deg);
+ transform: rotate(359deg);
+ }
+}
+@keyframes fa-spin {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+ 100% {
+ -webkit-transform: rotate(359deg);
+ transform: rotate(359deg);
+ }
+}
+.fa-rotate-90 {
+ -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";
+ -webkit-transform: rotate(90deg);
+ -ms-transform: rotate(90deg);
+ transform: rotate(90deg);
+}
+.fa-rotate-180 {
+ -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";
+ -webkit-transform: rotate(180deg);
+ -ms-transform: rotate(180deg);
+ transform: rotate(180deg);
+}
+.fa-rotate-270 {
+ -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";
+ -webkit-transform: rotate(270deg);
+ -ms-transform: rotate(270deg);
+ transform: rotate(270deg);
+}
+.fa-flip-horizontal {
+ -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";
+ -webkit-transform: scale(-1, 1);
+ -ms-transform: scale(-1, 1);
+ transform: scale(-1, 1);
+}
+.fa-flip-vertical {
+ -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
+ -webkit-transform: scale(1, -1);
+ -ms-transform: scale(1, -1);
+ transform: scale(1, -1);
+}
+:root .fa-rotate-90,
+:root .fa-rotate-180,
+:root .fa-rotate-270,
+:root .fa-flip-horizontal,
+:root .fa-flip-vertical {
+ filter: none;
+}
+.fa-stack {
+ position: relative;
+ display: inline-block;
+ width: 2em;
+ height: 2em;
+ line-height: 2em;
+ vertical-align: middle;
+}
+.fa-stack-1x,
+.fa-stack-2x {
+ position: absolute;
+ left: 0;
+ width: 100%;
+ text-align: center;
+}
+.fa-stack-1x {
+ line-height: inherit;
+}
+.fa-stack-2x {
+ font-size: 2em;
+}
+.fa-inverse {
+ color: #ffffff;
+}
+/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
+ readers do not read off random characters that represent icons */
+.fa-glass:before {
+ content: "\f000";
+}
+.fa-music:before {
+ content: "\f001";
+}
+.fa-search:before {
+ content: "\f002";
+}
+.fa-envelope-o:before {
+ content: "\f003";
+}
+.fa-heart:before {
+ content: "\f004";
+}
+.fa-star:before {
+ content: "\f005";
+}
+.fa-star-o:before {
+ content: "\f006";
+}
+.fa-user:before {
+ content: "\f007";
+}
+.fa-film:before {
+ content: "\f008";
+}
+.fa-th-large:before {
+ content: "\f009";
+}
+.fa-th:before {
+ content: "\f00a";
+}
+.fa-th-list:before {
+ content: "\f00b";
+}
+.fa-check:before {
+ content: "\f00c";
+}
+.fa-remove:before,
+.fa-close:before,
+.fa-times:before {
+ content: "\f00d";
+}
+.fa-search-plus:before {
+ content: "\f00e";
+}
+.fa-search-minus:before {
+ content: "\f010";
+}
+.fa-power-off:before {
+ content: "\f011";
+}
+.fa-signal:before {
+ content: "\f012";
+}
+.fa-gear:before,
+.fa-cog:before {
+ content: "\f013";
+}
+.fa-trash-o:before {
+ content: "\f014";
+}
+.fa-home:before {
+ content: "\f015";
+}
+.fa-file-o:before {
+ content: "\f016";
+}
+.fa-clock-o:before {
+ content: "\f017";
+}
+.fa-road:before {
+ content: "\f018";
+}
+.fa-download:before {
+ content: "\f019";
+}
+.fa-arrow-circle-o-down:before {
+ content: "\f01a";
+}
+.fa-arrow-circle-o-up:before {
+ content: "\f01b";
+}
+.fa-inbox:before {
+ content: "\f01c";
+}
+.fa-play-circle-o:before {
+ content: "\f01d";
+}
+.fa-rotate-right:before,
+.fa-repeat:before {
+ content: "\f01e";
+}
+.fa-refresh:before {
+ content: "\f021";
+}
+.fa-list-alt:before {
+ content: "\f022";
+}
+.fa-lock:before {
+ content: "\f023";
+}
+.fa-flag:before {
+ content: "\f024";
+}
+.fa-headphones:before {
+ content: "\f025";
+}
+.fa-volume-off:before {
+ content: "\f026";
+}
+.fa-volume-down:before {
+ content: "\f027";
+}
+.fa-volume-up:before {
+ content: "\f028";
+}
+.fa-qrcode:before {
+ content: "\f029";
+}
+.fa-barcode:before {
+ content: "\f02a";
+}
+.fa-tag:before {
+ content: "\f02b";
+}
+.fa-tags:before {
+ content: "\f02c";
+}
+.fa-book:before {
+ content: "\f02d";
+}
+.fa-bookmark:before {
+ content: "\f02e";
+}
+.fa-print:before {
+ content: "\f02f";
+}
+.fa-camera:before {
+ content: "\f030";
+}
+.fa-font:before {
+ content: "\f031";
+}
+.fa-bold:before {
+ content: "\f032";
+}
+.fa-italic:before {
+ content: "\f033";
+}
+.fa-text-height:before {
+ content: "\f034";
+}
+.fa-text-width:before {
+ content: "\f035";
+}
+.fa-align-left:before {
+ content: "\f036";
+}
+.fa-align-center:before {
+ content: "\f037";
+}
+.fa-align-right:before {
+ content: "\f038";
+}
+.fa-align-justify:before {
+ content: "\f039";
+}
+.fa-list:before {
+ content: "\f03a";
+}
+.fa-dedent:before,
+.fa-outdent:before {
+ content: "\f03b";
+}
+.fa-indent:before {
+ content: "\f03c";
+}
+.fa-video-camera:before {
+ content: "\f03d";
+}
+.fa-photo:before,
+.fa-image:before,
+.fa-picture-o:before {
+ content: "\f03e";
+}
+.fa-pencil:before {
+ content: "\f040";
+}
+.fa-map-marker:before {
+ content: "\f041";
+}
+.fa-adjust:before {
+ content: "\f042";
+}
+.fa-tint:before {
+ content: "\f043";
+}
+.fa-edit:before,
+.fa-pencil-square-o:before {
+ content: "\f044";
+}
+.fa-share-square-o:before {
+ content: "\f045";
+}
+.fa-check-square-o:before {
+ content: "\f046";
+}
+.fa-arrows:before {
+ content: "\f047";
+}
+.fa-step-backward:before {
+ content: "\f048";
+}
+.fa-fast-backward:before {
+ content: "\f049";
+}
+.fa-backward:before {
+ content: "\f04a";
+}
+.fa-play:before {
+ content: "\f04b";
+}
+.fa-pause:before {
+ content: "\f04c";
+}
+.fa-stop:before {
+ content: "\f04d";
+}
+.fa-forward:before {
+ content: "\f04e";
+}
+.fa-fast-forward:before {
+ content: "\f050";
+}
+.fa-step-forward:before {
+ content: "\f051";
+}
+.fa-eject:before {
+ content: "\f052";
+}
+.fa-chevron-left:before {
+ content: "\f053";
+}
+.fa-chevron-right:before {
+ content: "\f054";
+}
+.fa-plus-circle:before {
+ content: "\f055";
+}
+.fa-minus-circle:before {
+ content: "\f056";
+}
+.fa-times-circle:before {
+ content: "\f057";
+}
+.fa-check-circle:before {
+ content: "\f058";
+}
+.fa-question-circle:before {
+ content: "\f059";
+}
+.fa-info-circle:before {
+ content: "\f05a";
+}
+.fa-crosshairs:before {
+ content: "\f05b";
+}
+.fa-times-circle-o:before {
+ content: "\f05c";
+}
+.fa-check-circle-o:before {
+ content: "\f05d";
+}
+.fa-ban:before {
+ content: "\f05e";
+}
+.fa-arrow-left:before {
+ content: "\f060";
+}
+.fa-arrow-right:before {
+ content: "\f061";
+}
+.fa-arrow-up:before {
+ content: "\f062";
+}
+.fa-arrow-down:before {
+ content: "\f063";
+}
+.fa-mail-forward:before,
+.fa-share:before {
+ content: "\f064";
+}
+.fa-expand:before {
+ content: "\f065";
+}
+.fa-compress:before {
+ content: "\f066";
+}
+.fa-plus:before {
+ content: "\f067";
+}
+.fa-minus:before {
+ content: "\f068";
+}
+.fa-asterisk:before {
+ content: "\f069";
+}
+.fa-exclamation-circle:before {
+ content: "\f06a";
+}
+.fa-gift:before {
+ content: "\f06b";
+}
+.fa-leaf:before {
+ content: "\f06c";
+}
+.fa-fire:before {
+ content: "\f06d";
+}
+.fa-eye:before {
+ content: "\f06e";
+}
+.fa-eye-slash:before {
+ content: "\f070";
+}
+.fa-warning:before,
+.fa-exclamation-triangle:before {
+ content: "\f071";
+}
+.fa-plane:before {
+ content: "\f072";
+}
+.fa-calendar:before {
+ content: "\f073";
+}
+.fa-random:before {
+ content: "\f074";
+}
+.fa-comment:before {
+ content: "\f075";
+}
+.fa-magnet:before {
+ content: "\f076";
+}
+.fa-chevron-up:before {
+ content: "\f077";
+}
+.fa-chevron-down:before {
+ content: "\f078";
+}
+.fa-retweet:before {
+ content: "\f079";
+}
+.fa-shopping-cart:before {
+ content: "\f07a";
+}
+.fa-folder:before {
+ content: "\f07b";
+}
+.fa-folder-open:before {
+ content: "\f07c";
+}
+.fa-arrows-v:before {
+ content: "\f07d";
+}
+.fa-arrows-h:before {
+ content: "\f07e";
+}
+.fa-bar-chart-o:before,
+.fa-bar-chart:before {
+ content: "\f080";
+}
+.fa-twitter-square:before {
+ content: "\f081";
+}
+.fa-facebook-square:before {
+ content: "\f082";
+}
+.fa-camera-retro:before {
+ content: "\f083";
+}
+.fa-key:before {
+ content: "\f084";
+}
+.fa-gears:before,
+.fa-cogs:before {
+ content: "\f085";
+}
+.fa-comments:before {
+ content: "\f086";
+}
+.fa-thumbs-o-up:before {
+ content: "\f087";
+}
+.fa-thumbs-o-down:before {
+ content: "\f088";
+}
+.fa-star-half:before {
+ content: "\f089";
+}
+.fa-heart-o:before {
+ content: "\f08a";
+}
+.fa-sign-out:before {
+ content: "\f08b";
+}
+.fa-linkedin-square:before {
+ content: "\f08c";
+}
+.fa-thumb-tack:before {
+ content: "\f08d";
+}
+.fa-external-link:before {
+ content: "\f08e";
+}
+.fa-sign-in:before {
+ content: "\f090";
+}
+.fa-trophy:before {
+ content: "\f091";
+}
+.fa-github-square:before {
+ content: "\f092";
+}
+.fa-upload:before {
+ content: "\f093";
+}
+.fa-lemon-o:before {
+ content: "\f094";
+}
+.fa-phone:before {
+ content: "\f095";
+}
+.fa-square-o:before {
+ content: "\f096";
+}
+.fa-bookmark-o:before {
+ content: "\f097";
+}
+.fa-phone-square:before {
+ content: "\f098";
+}
+.fa-twitter:before {
+ content: "\f099";
+}
+.fa-facebook-f:before,
+.fa-facebook:before {
+ content: "\f09a";
+}
+.fa-github:before {
+ content: "\f09b";
+}
+.fa-unlock:before {
+ content: "\f09c";
+}
+.fa-credit-card:before {
+ content: "\f09d";
+}
+.fa-feed:before,
+.fa-rss:before {
+ content: "\f09e";
+}
+.fa-hdd-o:before {
+ content: "\f0a0";
+}
+.fa-bullhorn:before {
+ content: "\f0a1";
+}
+.fa-bell:before {
+ content: "\f0f3";
+}
+.fa-certificate:before {
+ content: "\f0a3";
+}
+.fa-hand-o-right:before {
+ content: "\f0a4";
+}
+.fa-hand-o-left:before {
+ content: "\f0a5";
+}
+.fa-hand-o-up:before {
+ content: "\f0a6";
+}
+.fa-hand-o-down:before {
+ content: "\f0a7";
+}
+.fa-arrow-circle-left:before {
+ content: "\f0a8";
+}
+.fa-arrow-circle-right:before {
+ content: "\f0a9";
+}
+.fa-arrow-circle-up:before {
+ content: "\f0aa";
+}
+.fa-arrow-circle-down:before {
+ content: "\f0ab";
+}
+.fa-globe:before {
+ content: "\f0ac";
+}
+.fa-wrench:before {
+ content: "\f0ad";
+}
+.fa-tasks:before {
+ content: "\f0ae";
+}
+.fa-filter:before {
+ content: "\f0b0";
+}
+.fa-briefcase:before {
+ content: "\f0b1";
+}
+.fa-arrows-alt:before {
+ content: "\f0b2";
+}
+.fa-group:before,
+.fa-users:before {
+ content: "\f0c0";
+}
+.fa-chain:before,
+.fa-link:before {
+ content: "\f0c1";
+}
+.fa-cloud:before {
+ content: "\f0c2";
+}
+.fa-flask:before {
+ content: "\f0c3";
+}
+.fa-cut:before,
+.fa-scissors:before {
+ content: "\f0c4";
+}
+.fa-copy:before,
+.fa-files-o:before {
+ content: "\f0c5";
+}
+.fa-paperclip:before {
+ content: "\f0c6";
+}
+.fa-save:before,
+.fa-floppy-o:before {
+ content: "\f0c7";
+}
+.fa-square:before {
+ content: "\f0c8";
+}
+.fa-navicon:before,
+.fa-reorder:before,
+.fa-bars:before {
+ content: "\f0c9";
+}
+.fa-list-ul:before {
+ content: "\f0ca";
+}
+.fa-list-ol:before {
+ content: "\f0cb";
+}
+.fa-strikethrough:before {
+ content: "\f0cc";
+}
+.fa-underline:before {
+ content: "\f0cd";
+}
+.fa-table:before {
+ content: "\f0ce";
+}
+.fa-magic:before {
+ content: "\f0d0";
+}
+.fa-truck:before {
+ content: "\f0d1";
+}
+.fa-pinterest:before {
+ content: "\f0d2";
+}
+.fa-pinterest-square:before {
+ content: "\f0d3";
+}
+.fa-google-plus-square:before {
+ content: "\f0d4";
+}
+.fa-google-plus:before {
+ content: "\f0d5";
+}
+.fa-money:before {
+ content: "\f0d6";
+}
+.fa-caret-down:before {
+ content: "\f0d7";
+}
+.fa-caret-up:before {
+ content: "\f0d8";
+}
+.fa-caret-left:before {
+ content: "\f0d9";
+}
+.fa-caret-right:before {
+ content: "\f0da";
+}
+.fa-columns:before {
+ content: "\f0db";
+}
+.fa-unsorted:before,
+.fa-sort:before {
+ content: "\f0dc";
+}
+.fa-sort-down:before,
+.fa-sort-desc:before {
+ content: "\f0dd";
+}
+.fa-sort-up:before,
+.fa-sort-asc:before {
+ content: "\f0de";
+}
+.fa-envelope:before {
+ content: "\f0e0";
+}
+.fa-linkedin:before {
+ content: "\f0e1";
+}
+.fa-rotate-left:before,
+.fa-undo:before {
+ content: "\f0e2";
+}
+.fa-legal:before,
+.fa-gavel:before {
+ content: "\f0e3";
+}
+.fa-dashboard:before,
+.fa-tachometer:before {
+ content: "\f0e4";
+}
+.fa-comment-o:before {
+ content: "\f0e5";
+}
+.fa-comments-o:before {
+ content: "\f0e6";
+}
+.fa-flash:before,
+.fa-bolt:before {
+ content: "\f0e7";
+}
+.fa-sitemap:before {
+ content: "\f0e8";
+}
+.fa-umbrella:before {
+ content: "\f0e9";
+}
+.fa-paste:before,
+.fa-clipboard:before {
+ content: "\f0ea";
+}
+.fa-lightbulb-o:before {
+ content: "\f0eb";
+}
+.fa-exchange:before {
+ content: "\f0ec";
+}
+.fa-cloud-download:before {
+ content: "\f0ed";
+}
+.fa-cloud-upload:before {
+ content: "\f0ee";
+}
+.fa-user-md:before {
+ content: "\f0f0";
+}
+.fa-stethoscope:before {
+ content: "\f0f1";
+}
+.fa-suitcase:before {
+ content: "\f0f2";
+}
+.fa-bell-o:before {
+ content: "\f0a2";
+}
+.fa-coffee:before {
+ content: "\f0f4";
+}
+.fa-cutlery:before {
+ content: "\f0f5";
+}
+.fa-file-text-o:before {
+ content: "\f0f6";
+}
+.fa-building-o:before {
+ content: "\f0f7";
+}
+.fa-hospital-o:before {
+ content: "\f0f8";
+}
+.fa-ambulance:before {
+ content: "\f0f9";
+}
+.fa-medkit:before {
+ content: "\f0fa";
+}
+.fa-fighter-jet:before {
+ content: "\f0fb";
+}
+.fa-beer:before {
+ content: "\f0fc";
+}
+.fa-h-square:before {
+ content: "\f0fd";
+}
+.fa-plus-square:before {
+ content: "\f0fe";
+}
+.fa-angle-double-left:before {
+ content: "\f100";
+}
+.fa-angle-double-right:before {
+ content: "\f101";
+}
+.fa-angle-double-up:before {
+ content: "\f102";
+}
+.fa-angle-double-down:before {
+ content: "\f103";
+}
+.fa-angle-left:before {
+ content: "\f104";
+}
+.fa-angle-right:before {
+ content: "\f105";
+}
+.fa-angle-up:before {
+ content: "\f106";
+}
+.fa-angle-down:before {
+ content: "\f107";
+}
+.fa-desktop:before {
+ content: "\f108";
+}
+.fa-laptop:before {
+ content: "\f109";
+}
+.fa-tablet:before {
+ content: "\f10a";
+}
+.fa-mobile-phone:before,
+.fa-mobile:before {
+ content: "\f10b";
+}
+.fa-circle-o:before {
+ content: "\f10c";
+}
+.fa-quote-left:before {
+ content: "\f10d";
+}
+.fa-quote-right:before {
+ content: "\f10e";
+}
+.fa-spinner:before {
+ content: "\f110";
+}
+.fa-circle:before {
+ content: "\f111";
+}
+.fa-mail-reply:before,
+.fa-reply:before {
+ content: "\f112";
+}
+.fa-github-alt:before {
+ content: "\f113";
+}
+.fa-folder-o:before {
+ content: "\f114";
+}
+.fa-folder-open-o:before {
+ content: "\f115";
+}
+.fa-smile-o:before {
+ content: "\f118";
+}
+.fa-frown-o:before {
+ content: "\f119";
+}
+.fa-meh-o:before {
+ content: "\f11a";
+}
+.fa-gamepad:before {
+ content: "\f11b";
+}
+.fa-keyboard-o:before {
+ content: "\f11c";
+}
+.fa-flag-o:before {
+ content: "\f11d";
+}
+.fa-flag-checkered:before {
+ content: "\f11e";
+}
+.fa-terminal:before {
+ content: "\f120";
+}
+.fa-code:before {
+ content: "\f121";
+}
+.fa-mail-reply-all:before,
+.fa-reply-all:before {
+ content: "\f122";
+}
+.fa-star-half-empty:before,
+.fa-star-half-full:before,
+.fa-star-half-o:before {
+ content: "\f123";
+}
+.fa-location-arrow:before {
+ content: "\f124";
+}
+.fa-crop:before {
+ content: "\f125";
+}
+.fa-code-fork:before {
+ content: "\f126";
+}
+.fa-unlink:before,
+.fa-chain-broken:before {
+ content: "\f127";
+}
+.fa-question:before {
+ content: "\f128";
+}
+.fa-info:before {
+ content: "\f129";
+}
+.fa-exclamation:before {
+ content: "\f12a";
+}
+.fa-superscript:before {
+ content: "\f12b";
+}
+.fa-subscript:before {
+ content: "\f12c";
+}
+.fa-eraser:before {
+ content: "\f12d";
+}
+.fa-puzzle-piece:before {
+ content: "\f12e";
+}
+.fa-microphone:before {
+ content: "\f130";
+}
+.fa-microphone-slash:before {
+ content: "\f131";
+}
+.fa-shield:before {
+ content: "\f132";
+}
+.fa-calendar-o:before {
+ content: "\f133";
+}
+.fa-fire-extinguisher:before {
+ content: "\f134";
+}
+.fa-rocket:before {
+ content: "\f135";
+}
+.fa-maxcdn:before {
+ content: "\f136";
+}
+.fa-chevron-circle-left:before {
+ content: "\f137";
+}
+.fa-chevron-circle-right:before {
+ content: "\f138";
+}
+.fa-chevron-circle-up:before {
+ content: "\f139";
+}
+.fa-chevron-circle-down:before {
+ content: "\f13a";
+}
+.fa-html5:before {
+ content: "\f13b";
+}
+.fa-css3:before {
+ content: "\f13c";
+}
+.fa-anchor:before {
+ content: "\f13d";
+}
+.fa-unlock-alt:before {
+ content: "\f13e";
+}
+.fa-bullseye:before {
+ content: "\f140";
+}
+.fa-ellipsis-h:before {
+ content: "\f141";
+}
+.fa-ellipsis-v:before {
+ content: "\f142";
+}
+.fa-rss-square:before {
+ content: "\f143";
+}
+.fa-play-circle:before {
+ content: "\f144";
+}
+.fa-ticket:before {
+ content: "\f145";
+}
+.fa-minus-square:before {
+ content: "\f146";
+}
+.fa-minus-square-o:before {
+ content: "\f147";
+}
+.fa-level-up:before {
+ content: "\f148";
+}
+.fa-level-down:before {
+ content: "\f149";
+}
+.fa-check-square:before {
+ content: "\f14a";
+}
+.fa-pencil-square:before {
+ content: "\f14b";
+}
+.fa-external-link-square:before {
+ content: "\f14c";
+}
+.fa-share-square:before {
+ content: "\f14d";
+}
+.fa-compass:before {
+ content: "\f14e";
+}
+.fa-toggle-down:before,
+.fa-caret-square-o-down:before {
+ content: "\f150";
+}
+.fa-toggle-up:before,
+.fa-caret-square-o-up:before {
+ content: "\f151";
+}
+.fa-toggle-right:before,
+.fa-caret-square-o-right:before {
+ content: "\f152";
+}
+.fa-euro:before,
+.fa-eur:before {
+ content: "\f153";
+}
+.fa-gbp:before {
+ content: "\f154";
+}
+.fa-dollar:before,
+.fa-usd:before {
+ content: "\f155";
+}
+.fa-rupee:before,
+.fa-inr:before {
+ content: "\f156";
+}
+.fa-cny:before,
+.fa-rmb:before,
+.fa-yen:before,
+.fa-jpy:before {
+ content: "\f157";
+}
+.fa-ruble:before,
+.fa-rouble:before,
+.fa-rub:before {
+ content: "\f158";
+}
+.fa-won:before,
+.fa-krw:before {
+ content: "\f159";
+}
+.fa-bitcoin:before,
+.fa-btc:before {
+ content: "\f15a";
+}
+.fa-file:before {
+ content: "\f15b";
+}
+.fa-file-text:before {
+ content: "\f15c";
+}
+.fa-sort-alpha-asc:before {
+ content: "\f15d";
+}
+.fa-sort-alpha-desc:before {
+ content: "\f15e";
+}
+.fa-sort-amount-asc:before {
+ content: "\f160";
+}
+.fa-sort-amount-desc:before {
+ content: "\f161";
+}
+.fa-sort-numeric-asc:before {
+ content: "\f162";
+}
+.fa-sort-numeric-desc:before {
+ content: "\f163";
+}
+.fa-thumbs-up:before {
+ content: "\f164";
+}
+.fa-thumbs-down:before {
+ content: "\f165";
+}
+.fa-youtube-square:before {
+ content: "\f166";
+}
+.fa-youtube:before {
+ content: "\f167";
+}
+.fa-xing:before {
+ content: "\f168";
+}
+.fa-xing-square:before {
+ content: "\f169";
+}
+.fa-youtube-play:before {
+ content: "\f16a";
+}
+.fa-dropbox:before {
+ content: "\f16b";
+}
+.fa-stack-overflow:before {
+ content: "\f16c";
+}
+.fa-instagram:before {
+ content: "\f16d";
+}
+.fa-flickr:before {
+ content: "\f16e";
+}
+.fa-adn:before {
+ content: "\f170";
+}
+.fa-bitbucket:before {
+ content: "\f171";
+}
+.fa-bitbucket-square:before {
+ content: "\f172";
+}
+.fa-tumblr:before {
+ content: "\f173";
+}
+.fa-tumblr-square:before {
+ content: "\f174";
+}
+.fa-long-arrow-down:before {
+ content: "\f175";
+}
+.fa-long-arrow-up:before {
+ content: "\f176";
+}
+.fa-long-arrow-left:before {
+ content: "\f177";
+}
+.fa-long-arrow-right:before {
+ content: "\f178";
+}
+.fa-apple:before {
+ content: "\f179";
+}
+.fa-windows:before {
+ content: "\f17a";
+}
+.fa-android:before {
+ content: "\f17b";
+}
+.fa-linux:before {
+ content: "\f17c";
+}
+.fa-dribbble:before {
+ content: "\f17d";
+}
+.fa-skype:before {
+ content: "\f17e";
+}
+.fa-foursquare:before {
+ content: "\f180";
+}
+.fa-trello:before {
+ content: "\f181";
+}
+.fa-female:before {
+ content: "\f182";
+}
+.fa-male:before {
+ content: "\f183";
+}
+.fa-gittip:before,
+.fa-gratipay:before {
+ content: "\f184";
+}
+.fa-sun-o:before {
+ content: "\f185";
+}
+.fa-moon-o:before {
+ content: "\f186";
+}
+.fa-archive:before {
+ content: "\f187";
+}
+.fa-bug:before {
+ content: "\f188";
+}
+.fa-vk:before {
+ content: "\f189";
+}
+.fa-weibo:before {
+ content: "\f18a";
+}
+.fa-renren:before {
+ content: "\f18b";
+}
+.fa-pagelines:before {
+ content: "\f18c";
+}
+.fa-stack-exchange:before {
+ content: "\f18d";
+}
+.fa-arrow-circle-o-right:before {
+ content: "\f18e";
+}
+.fa-arrow-circle-o-left:before {
+ content: "\f190";
+}
+.fa-toggle-left:before,
+.fa-caret-square-o-left:before {
+ content: "\f191";
+}
+.fa-dot-circle-o:before {
+ content: "\f192";
+}
+.fa-wheelchair:before {
+ content: "\f193";
+}
+.fa-vimeo-square:before {
+ content: "\f194";
+}
+.fa-turkish-lira:before,
+.fa-try:before {
+ content: "\f195";
+}
+.fa-plus-square-o:before {
+ content: "\f196";
+}
+.fa-space-shuttle:before {
+ content: "\f197";
+}
+.fa-slack:before {
+ content: "\f198";
+}
+.fa-envelope-square:before {
+ content: "\f199";
+}
+.fa-wordpress:before {
+ content: "\f19a";
+}
+.fa-openid:before {
+ content: "\f19b";
+}
+.fa-institution:before,
+.fa-bank:before,
+.fa-university:before {
+ content: "\f19c";
+}
+.fa-mortar-board:before,
+.fa-graduation-cap:before {
+ content: "\f19d";
+}
+.fa-yahoo:before {
+ content: "\f19e";
+}
+.fa-google:before {
+ content: "\f1a0";
+}
+.fa-reddit:before {
+ content: "\f1a1";
+}
+.fa-reddit-square:before {
+ content: "\f1a2";
+}
+.fa-stumbleupon-circle:before {
+ content: "\f1a3";
+}
+.fa-stumbleupon:before {
+ content: "\f1a4";
+}
+.fa-delicious:before {
+ content: "\f1a5";
+}
+.fa-digg:before {
+ content: "\f1a6";
+}
+.fa-pied-piper:before {
+ content: "\f1a7";
+}
+.fa-pied-piper-alt:before {
+ content: "\f1a8";
+}
+.fa-drupal:before {
+ content: "\f1a9";
+}
+.fa-joomla:before {
+ content: "\f1aa";
+}
+.fa-language:before {
+ content: "\f1ab";
+}
+.fa-fax:before {
+ content: "\f1ac";
+}
+.fa-building:before {
+ content: "\f1ad";
+}
+.fa-child:before {
+ content: "\f1ae";
+}
+.fa-paw:before {
+ content: "\f1b0";
+}
+.fa-spoon:before {
+ content: "\f1b1";
+}
+.fa-cube:before {
+ content: "\f1b2";
+}
+.fa-cubes:before {
+ content: "\f1b3";
+}
+.fa-behance:before {
+ content: "\f1b4";
+}
+.fa-behance-square:before {
+ content: "\f1b5";
+}
+.fa-steam:before {
+ content: "\f1b6";
+}
+.fa-steam-square:before {
+ content: "\f1b7";
+}
+.fa-recycle:before {
+ content: "\f1b8";
+}
+.fa-automobile:before,
+.fa-car:before {
+ content: "\f1b9";
+}
+.fa-cab:before,
+.fa-taxi:before {
+ content: "\f1ba";
+}
+.fa-tree:before {
+ content: "\f1bb";
+}
+.fa-spotify:before {
+ content: "\f1bc";
+}
+.fa-deviantart:before {
+ content: "\f1bd";
+}
+.fa-soundcloud:before {
+ content: "\f1be";
+}
+.fa-database:before {
+ content: "\f1c0";
+}
+.fa-file-pdf-o:before {
+ content: "\f1c1";
+}
+.fa-file-word-o:before {
+ content: "\f1c2";
+}
+.fa-file-excel-o:before {
+ content: "\f1c3";
+}
+.fa-file-powerpoint-o:before {
+ content: "\f1c4";
+}
+.fa-file-photo-o:before,
+.fa-file-picture-o:before,
+.fa-file-image-o:before {
+ content: "\f1c5";
+}
+.fa-file-zip-o:before,
+.fa-file-archive-o:before {
+ content: "\f1c6";
+}
+.fa-file-sound-o:before,
+.fa-file-audio-o:before {
+ content: "\f1c7";
+}
+.fa-file-movie-o:before,
+.fa-file-video-o:before {
+ content: "\f1c8";
+}
+.fa-file-code-o:before {
+ content: "\f1c9";
+}
+.fa-vine:before {
+ content: "\f1ca";
+}
+.fa-codepen:before {
+ content: "\f1cb";
+}
+.fa-jsfiddle:before {
+ content: "\f1cc";
+}
+.fa-life-bouy:before,
+.fa-life-buoy:before,
+.fa-life-saver:before,
+.fa-support:before,
+.fa-life-ring:before {
+ content: "\f1cd";
+}
+.fa-circle-o-notch:before {
+ content: "\f1ce";
+}
+.fa-ra:before,
+.fa-rebel:before {
+ content: "\f1d0";
+}
+.fa-ge:before,
+.fa-empire:before {
+ content: "\f1d1";
+}
+.fa-git-square:before {
+ content: "\f1d2";
+}
+.fa-git:before {
+ content: "\f1d3";
+}
+.fa-y-combinator-square:before,
+.fa-yc-square:before,
+.fa-hacker-news:before {
+ content: "\f1d4";
+}
+.fa-tencent-weibo:before {
+ content: "\f1d5";
+}
+.fa-qq:before {
+ content: "\f1d6";
+}
+.fa-wechat:before,
+.fa-weixin:before {
+ content: "\f1d7";
+}
+.fa-send:before,
+.fa-paper-plane:before {
+ content: "\f1d8";
+}
+.fa-send-o:before,
+.fa-paper-plane-o:before {
+ content: "\f1d9";
+}
+.fa-history:before {
+ content: "\f1da";
+}
+.fa-circle-thin:before {
+ content: "\f1db";
+}
+.fa-header:before {
+ content: "\f1dc";
+}
+.fa-paragraph:before {
+ content: "\f1dd";
+}
+.fa-sliders:before {
+ content: "\f1de";
+}
+.fa-share-alt:before {
+ content: "\f1e0";
+}
+.fa-share-alt-square:before {
+ content: "\f1e1";
+}
+.fa-bomb:before {
+ content: "\f1e2";
+}
+.fa-soccer-ball-o:before,
+.fa-futbol-o:before {
+ content: "\f1e3";
+}
+.fa-tty:before {
+ content: "\f1e4";
+}
+.fa-binoculars:before {
+ content: "\f1e5";
+}
+.fa-plug:before {
+ content: "\f1e6";
+}
+.fa-slideshare:before {
+ content: "\f1e7";
+}
+.fa-twitch:before {
+ content: "\f1e8";
+}
+.fa-yelp:before {
+ content: "\f1e9";
+}
+.fa-newspaper-o:before {
+ content: "\f1ea";
+}
+.fa-wifi:before {
+ content: "\f1eb";
+}
+.fa-calculator:before {
+ content: "\f1ec";
+}
+.fa-paypal:before {
+ content: "\f1ed";
+}
+.fa-google-wallet:before {
+ content: "\f1ee";
+}
+.fa-cc-visa:before {
+ content: "\f1f0";
+}
+.fa-cc-mastercard:before {
+ content: "\f1f1";
+}
+.fa-cc-discover:before {
+ content: "\f1f2";
+}
+.fa-cc-amex:before {
+ content: "\f1f3";
+}
+.fa-cc-paypal:before {
+ content: "\f1f4";
+}
+.fa-cc-stripe:before {
+ content: "\f1f5";
+}
+.fa-bell-slash:before {
+ content: "\f1f6";
+}
+.fa-bell-slash-o:before {
+ content: "\f1f7";
+}
+.fa-trash:before {
+ content: "\f1f8";
+}
+.fa-copyright:before {
+ content: "\f1f9";
+}
+.fa-at:before {
+ content: "\f1fa";
+}
+.fa-eyedropper:before {
+ content: "\f1fb";
+}
+.fa-paint-brush:before {
+ content: "\f1fc";
+}
+.fa-birthday-cake:before {
+ content: "\f1fd";
+}
+.fa-area-chart:before {
+ content: "\f1fe";
+}
+.fa-pie-chart:before {
+ content: "\f200";
+}
+.fa-line-chart:before {
+ content: "\f201";
+}
+.fa-lastfm:before {
+ content: "\f202";
+}
+.fa-lastfm-square:before {
+ content: "\f203";
+}
+.fa-toggle-off:before {
+ content: "\f204";
+}
+.fa-toggle-on:before {
+ content: "\f205";
+}
+.fa-bicycle:before {
+ content: "\f206";
+}
+.fa-bus:before {
+ content: "\f207";
+}
+.fa-ioxhost:before {
+ content: "\f208";
+}
+.fa-angellist:before {
+ content: "\f209";
+}
+.fa-cc:before {
+ content: "\f20a";
+}
+.fa-shekel:before,
+.fa-sheqel:before,
+.fa-ils:before {
+ content: "\f20b";
+}
+.fa-meanpath:before {
+ content: "\f20c";
+}
+.fa-buysellads:before {
+ content: "\f20d";
+}
+.fa-connectdevelop:before {
+ content: "\f20e";
+}
+.fa-dashcube:before {
+ content: "\f210";
+}
+.fa-forumbee:before {
+ content: "\f211";
+}
+.fa-leanpub:before {
+ content: "\f212";
+}
+.fa-sellsy:before {
+ content: "\f213";
+}
+.fa-shirtsinbulk:before {
+ content: "\f214";
+}
+.fa-simplybuilt:before {
+ content: "\f215";
+}
+.fa-skyatlas:before {
+ content: "\f216";
+}
+.fa-cart-plus:before {
+ content: "\f217";
+}
+.fa-cart-arrow-down:before {
+ content: "\f218";
+}
+.fa-diamond:before {
+ content: "\f219";
+}
+.fa-ship:before {
+ content: "\f21a";
+}
+.fa-user-secret:before {
+ content: "\f21b";
+}
+.fa-motorcycle:before {
+ content: "\f21c";
+}
+.fa-street-view:before {
+ content: "\f21d";
+}
+.fa-heartbeat:before {
+ content: "\f21e";
+}
+.fa-venus:before {
+ content: "\f221";
+}
+.fa-mars:before {
+ content: "\f222";
+}
+.fa-mercury:before {
+ content: "\f223";
+}
+.fa-intersex:before,
+.fa-transgender:before {
+ content: "\f224";
+}
+.fa-transgender-alt:before {
+ content: "\f225";
+}
+.fa-venus-double:before {
+ content: "\f226";
+}
+.fa-mars-double:before {
+ content: "\f227";
+}
+.fa-venus-mars:before {
+ content: "\f228";
+}
+.fa-mars-stroke:before {
+ content: "\f229";
+}
+.fa-mars-stroke-v:before {
+ content: "\f22a";
+}
+.fa-mars-stroke-h:before {
+ content: "\f22b";
+}
+.fa-neuter:before {
+ content: "\f22c";
+}
+.fa-genderless:before {
+ content: "\f22d";
+}
+.fa-facebook-official:before {
+ content: "\f230";
+}
+.fa-pinterest-p:before {
+ content: "\f231";
+}
+.fa-whatsapp:before {
+ content: "\f232";
+}
+.fa-server:before {
+ content: "\f233";
+}
+.fa-user-plus:before {
+ content: "\f234";
+}
+.fa-user-times:before {
+ content: "\f235";
+}
+.fa-hotel:before,
+.fa-bed:before {
+ content: "\f236";
+}
+.fa-viacoin:before {
+ content: "\f237";
+}
+.fa-train:before {
+ content: "\f238";
+}
+.fa-subway:before {
+ content: "\f239";
+}
+.fa-medium:before {
+ content: "\f23a";
+}
+.fa-yc:before,
+.fa-y-combinator:before {
+ content: "\f23b";
+}
+.fa-optin-monster:before {
+ content: "\f23c";
+}
+.fa-opencart:before {
+ content: "\f23d";
+}
+.fa-expeditedssl:before {
+ content: "\f23e";
+}
+.fa-battery-4:before,
+.fa-battery-full:before {
+ content: "\f240";
+}
+.fa-battery-3:before,
+.fa-battery-three-quarters:before {
+ content: "\f241";
+}
+.fa-battery-2:before,
+.fa-battery-half:before {
+ content: "\f242";
+}
+.fa-battery-1:before,
+.fa-battery-quarter:before {
+ content: "\f243";
+}
+.fa-battery-0:before,
+.fa-battery-empty:before {
+ content: "\f244";
+}
+.fa-mouse-pointer:before {
+ content: "\f245";
+}
+.fa-i-cursor:before {
+ content: "\f246";
+}
+.fa-object-group:before {
+ content: "\f247";
+}
+.fa-object-ungroup:before {
+ content: "\f248";
+}
+.fa-sticky-note:before {
+ content: "\f249";
+}
+.fa-sticky-note-o:before {
+ content: "\f24a";
+}
+.fa-cc-jcb:before {
+ content: "\f24b";
+}
+.fa-cc-diners-club:before {
+ content: "\f24c";
+}
+.fa-clone:before {
+ content: "\f24d";
+}
+.fa-balance-scale:before {
+ content: "\f24e";
+}
+.fa-hourglass-o:before {
+ content: "\f250";
+}
+.fa-hourglass-1:before,
+.fa-hourglass-start:before {
+ content: "\f251";
+}
+.fa-hourglass-2:before,
+.fa-hourglass-half:before {
+ content: "\f252";
+}
+.fa-hourglass-3:before,
+.fa-hourglass-end:before {
+ content: "\f253";
+}
+.fa-hourglass:before {
+ content: "\f254";
+}
+.fa-hand-grab-o:before,
+.fa-hand-rock-o:before {
+ content: "\f255";
+}
+.fa-hand-stop-o:before,
+.fa-hand-paper-o:before {
+ content: "\f256";
+}
+.fa-hand-scissors-o:before {
+ content: "\f257";
+}
+.fa-hand-lizard-o:before {
+ content: "\f258";
+}
+.fa-hand-spock-o:before {
+ content: "\f259";
+}
+.fa-hand-pointer-o:before {
+ content: "\f25a";
+}
+.fa-hand-peace-o:before {
+ content: "\f25b";
+}
+.fa-trademark:before {
+ content: "\f25c";
+}
+.fa-registered:before {
+ content: "\f25d";
+}
+.fa-creative-commons:before {
+ content: "\f25e";
+}
+.fa-gg:before {
+ content: "\f260";
+}
+.fa-gg-circle:before {
+ content: "\f261";
+}
+.fa-tripadvisor:before {
+ content: "\f262";
+}
+.fa-odnoklassniki:before {
+ content: "\f263";
+}
+.fa-odnoklassniki-square:before {
+ content: "\f264";
+}
+.fa-get-pocket:before {
+ content: "\f265";
+}
+.fa-wikipedia-w:before {
+ content: "\f266";
+}
+.fa-safari:before {
+ content: "\f267";
+}
+.fa-chrome:before {
+ content: "\f268";
+}
+.fa-firefox:before {
+ content: "\f269";
+}
+.fa-opera:before {
+ content: "\f26a";
+}
+.fa-internet-explorer:before {
+ content: "\f26b";
+}
+.fa-tv:before,
+.fa-television:before {
+ content: "\f26c";
+}
+.fa-contao:before {
+ content: "\f26d";
+}
+.fa-500px:before {
+ content: "\f26e";
+}
+.fa-amazon:before {
+ content: "\f270";
+}
+.fa-calendar-plus-o:before {
+ content: "\f271";
+}
+.fa-calendar-minus-o:before {
+ content: "\f272";
+}
+.fa-calendar-times-o:before {
+ content: "\f273";
+}
+.fa-calendar-check-o:before {
+ content: "\f274";
+}
+.fa-industry:before {
+ content: "\f275";
+}
+.fa-map-pin:before {
+ content: "\f276";
+}
+.fa-map-signs:before {
+ content: "\f277";
+}
+.fa-map-o:before {
+ content: "\f278";
+}
+.fa-map:before {
+ content: "\f279";
+}
+.fa-commenting:before {
+ content: "\f27a";
+}
+.fa-commenting-o:before {
+ content: "\f27b";
+}
+.fa-houzz:before {
+ content: "\f27c";
+}
+.fa-vimeo:before {
+ content: "\f27d";
+}
+.fa-black-tie:before {
+ content: "\f27e";
+}
+.fa-fonticons:before {
+ content: "\f280";
+}
+.fa-reddit-alien:before {
+ content: "\f281";
+}
+.fa-edge:before {
+ content: "\f282";
+}
+.fa-credit-card-alt:before {
+ content: "\f283";
+}
+.fa-codiepie:before {
+ content: "\f284";
+}
+.fa-modx:before {
+ content: "\f285";
+}
+.fa-fort-awesome:before {
+ content: "\f286";
+}
+.fa-usb:before {
+ content: "\f287";
+}
+.fa-product-hunt:before {
+ content: "\f288";
+}
+.fa-mixcloud:before {
+ content: "\f289";
+}
+.fa-scribd:before {
+ content: "\f28a";
+}
+.fa-pause-circle:before {
+ content: "\f28b";
+}
+.fa-pause-circle-o:before {
+ content: "\f28c";
+}
+.fa-stop-circle:before {
+ content: "\f28d";
+}
+.fa-stop-circle-o:before {
+ content: "\f28e";
+}
+.fa-shopping-bag:before {
+ content: "\f290";
+}
+.fa-shopping-basket:before {
+ content: "\f291";
+}
+.fa-hashtag:before {
+ content: "\f292";
+}
+.fa-bluetooth:before {
+ content: "\f293";
+}
+.fa-bluetooth-b:before {
+ content: "\f294";
+}
+.fa-percent:before {
+ content: "\f295";
+}
+.fa-gitlab:before {
+ content: "\f296";
+}
+.fa-wpbeginner:before {
+ content: "\f297";
+}
+.fa-wpforms:before {
+ content: "\f298";
+}
+.fa-envira:before {
+ content: "\f299";
+}
+.fa-universal-access:before {
+ content: "\f29a";
+}
+.fa-wheelchair-alt:before {
+ content: "\f29b";
+}
+.fa-question-circle-o:before {
+ content: "\f29c";
+}
+.fa-blind:before {
+ content: "\f29d";
+}
+.fa-audio-description:before {
+ content: "\f29e";
+}
+.fa-volume-control-phone:before {
+ content: "\f2a0";
+}
+.fa-braille:before {
+ content: "\f2a1";
+}
+.fa-assistive-listening-systems:before {
+ content: "\f2a2";
+}
+.fa-asl-interpreting:before,
+.fa-american-sign-language-interpreting:before {
+ content: "\f2a3";
+}
+.fa-deafness:before,
+.fa-hard-of-hearing:before,
+.fa-deaf:before {
+ content: "\f2a4";
+}
+.fa-glide:before {
+ content: "\f2a5";
+}
+.fa-glide-g:before {
+ content: "\f2a6";
+}
+.fa-signing:before,
+.fa-sign-language:before {
+ content: "\f2a7";
+}
+.fa-low-vision:before {
+ content: "\f2a8";
+}
+.fa-viadeo:before {
+ content: "\f2a9";
+}
+.fa-viadeo-square:before {
+ content: "\f2aa";
+}
+.fa-snapchat:before {
+ content: "\f2ab";
+}
+.fa-snapchat-ghost:before {
+ content: "\f2ac";
+}
+.fa-snapchat-square:before {
+ content: "\f2ad";
+}
+.sr-only {
+ position: absolute;
+ width: 1px;
+ height: 1px;
+ padding: 0;
+ margin: -1px;
+ overflow: hidden;
+ clip: rect(0, 0, 0, 0);
+ border: 0;
+}
+.sr-only-focusable:active,
+.sr-only-focusable:focus {
+ position: static;
+ width: auto;
+ height: auto;
+ margin: 0;
+ overflow: visible;
+ clip: auto;
+}
diff --git a/digitalglarus/static/digitalglarus/fonts/FontAwesome.otf b/digitalglarus/static/digitalglarus/fonts/FontAwesome.otf
new file mode 100644
index 0000000000000000000000000000000000000000..59853bcda7308254f58c2d74053f3ba55c21b9fb
GIT binary patch
literal 123112
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