[damned-lies] Design updates and migration to Deneb theme



commit 4072efe18fc2f1715721c911f4755d561e3e64ec
Author: Tom Tryfonidis <tomtryf gmail com>
Date:   Sun Dec 16 13:52:07 2018 +0200

    Design updates and migration to Deneb theme

 common/static/css/bootstrap.min.css                |   6 -
 common/static/css/fonts.css                        |   9 -
 common/static/css/login.css                        |  29 --
 common/static/css/reset.css                        |   1 -
 common/static/css/responsive.css                   |  66 ----
 common/static/css/template.css                     | 405 ++++++---------------
 common/static/css/text.css                         | 125 -------
 common/static/fonts/Cantarell-Bold.otf             | Bin 51840 -> 0 bytes
 common/static/fonts/Cantarell-Regular.otf          | Bin 47828 -> 0 bytes
 common/static/img/favicon.ico                      | Bin 0 -> 5430 bytes
 common/static/img/gnome-logo.svg                   | 126 +++++++
 people/forms.py                                    |  10 +-
 people/templatetags/people.py                      |   6 +-
 stats/templatetags/stats_extras.py                 |   4 +-
 teams/forms.py                                     |   8 +-
 templates/base.html                                | 100 +++--
 templates/error.html                               |   4 +-
 templates/languages/language_release_stats.html    |   4 +-
 templates/login.html                               |  44 ++-
 templates/login/login_popup_form.html              |   4 +-
 templates/login/login_usermenu.html                |   2 +-
 templates/people/person_overview.html              |   2 +-
 templates/people/person_password_change_form.html  |  37 +-
 templates/registration/password_reset_confirm.html |  10 +-
 templates/registration/password_reset_form.html    |  16 +-
 templates/registration/register.html               |  35 +-
 templates/stats_show.html                          |   4 +-
 templates/teams/team_detail.html                   |   2 +-
 templates/teams/team_edit.html                     |   2 +-
 templates/vertimus/vertimus_detail.html            |  10 +-
 vertimus/forms.py                                  |   2 +-
 31 files changed, 395 insertions(+), 678 deletions(-)
---
diff --git a/common/static/css/template.css b/common/static/css/template.css
index 40a8de25..978112cf 100644
--- a/common/static/css/template.css
+++ b/common/static/css/template.css
@@ -1,5 +1,4 @@
-@import url("reset.css");
-@import url("text.css");
+@import url("https://static.gnome.org/css/fonts.css";);
 
 /* Base information */
 /* ========================================================================== */
@@ -7,9 +6,6 @@
 a {
     color: #204a87;
 }
-a:hover {
-    color: #3465a4;
-}
 .left {
     float: left;
 }
@@ -22,208 +18,46 @@ a:hover {
 .clear {
     clear: both;
 }
-
-/* GNOME Header */
-/* ========================================================================== */
-
-.gnome-header {
-    margin-bottom: 90px;
-}
-.gnome-header .avatar {
-    margin: 10px 0 0;
-    padding: 0;
-    border-radius: 50%;
+ol {
+    list-style:decimal;
 }
-.gnome-header .avatar img {
-    width: 30px;
-    height: 30px;
-    border-radius: 50%;
+ul {
+    list-style:square;
 }
-.navbar-default .navbar-nav > #userDropdownMenu > a,
-.navbar-default .navbar-nav > #userDropdownMenu > a:hover,
-.navbar-default .navbar-nav > #userDropdownMenu > a:focus {
-    background: transparent;
+p, dd, .action_box, ul, ol {
+    margin: 0.4em 0 1em;
 }
-.gnome-navbar-brand {
-    height: 50px;
-    padding: 6px;
-    float: left;
-    outline: 0;
-    margin-left: 7px;
-    font-weight: 700;
-    text-transform: uppercase;
-    font-size: 80%;
-    color: #ffffff;
-    text-decoration: none;
-    opacity: 1;
-    transition: opacity .2s;
-}
-.gnome-navbar-brand:hover,
-.gnome-navbar-brand:active {
-    color: #ffffff;
-    text-decoration: none;
-        opacity: 7;
 
-}
-.gnome-navbar-brand img {
-    max-height: 35px;
-    min-height: 35px;
-    min-width: 35px;
-    vertical-align: middle !important;
-}
-
-/* Main Navigation Menu */
+/* Text classes */
 /* ========================================================================== */
 
-.navbar-default {
-    background-color: #4a86cf;
-    border-color: #3968a1;
-}
-.navbar-default .navbar-brand {
-    color: #ffffff;
-}
-.navbar-default .navbar-brand:hover,
-.navbar-default .navbar-brand:focus {
-    color: #ffffff;
-}
-.navbar-default .navbar-text {
-    color: #ffffff;
-}
-.navbar-default .navbar-nav > li {
-    margin-left: 10px;
-}
-.navbar-default .navbar-nav > li > a {
-    color: #ffffff;
-    text-decoration: none;
-}
-.navbar-default .navbar-nav > li > a:hover,
-.navbar-default .navbar-nav > li > a:focus {
-    color: #ffffff;
-    background: rgba(100%, 100%, 100%, 0.2);
-}
-.navbar-default .navbar-nav > .active > a,
-.navbar-default .navbar-nav > .active > a:hover,
-.navbar-default .navbar-nav > .active > a:focus {
-    color: #ffffff;
-    background-color: #3968a1;
-}
-.navbar-default .navbar-nav > .open > a,
-.navbar-default .navbar-nav > .open > a:hover,
-.navbar-default .navbar-nav > .open > a:focus {
-    color: #ffffff;
-    background-color: #3968a1;
-}
-.navbar-default .navbar-toggle {
-    border-color: #3968a1;
-}
-.navbar-default .navbar-toggle:hover,
-.navbar-default .navbar-toggle:focus {
-    background-color: #3968a1;
-}
-.navbar-default .navbar-toggle .icon-bar {
-    background-color: #ffffff;
-}
-.navbar-default .navbar-collapse,
-.navbar-default .navbar-form {
-    border-color: transparent;
-}
-.navbar-default .navbar-link {
-    color: #ffffff;
-}
-.navbar-default .navbar-link:hover {
-    color: #ffffff;
-}
-.navbar-default .navbar-header .icons{
-    display: block;
-    float: right;
-    margin: 5px 20px !important;
-}
-.navbar-default .navbar-header .icons li{
-    display: inline-block !important;
-    
-}
-
-/* User settings */
-
-.login_popup_form {
-    padding: 15px 15px 5px; /* bottom: 5px */
-    min-width: 220px;
+.highlight {
+    background: yellow;
 }
 
-.navbar-nav>li>.dropdown-menu {
-    margin-top: 18px;
-}
-.navbar-nav>li>.dropdown-menu, ul.dropdown-menu {
-    border-radius: 6px;
-}
-.navbar-nav>li>.dropdown-menu li {
-    margin-left: 0px;
+.help{
+    font-size: 12px;
+    color: #888a85;
 }
 
-@media screen and (min-width:750px) {
-    .dropdown-menu:after {
-        position: absolute;
-        top: -11px;
-        left: 83%;
-        display: inline-block;
-        border-right: 11px solid transparent;
-        border-bottom: 11px solid #ffffff;
-        border-left: 11px solid transparent;
-        content:'';
-    }
-    .dropdown-menu:before {
-        position: absolute;
-        top: -12px;
-        left: 83%;
-        display: inline-block;
-        border-right: 11px solid transparent;
-        border-bottom: 11px solid #ccc;
-        border-left: 11px solid transparent;
-        border-bottom-color: rgba(0, 0, 0, 0.2);
-        content:'';
-    }
+.more {
+    cursor: pointer;
+    white-space: nowrap;
+    text-decoration: underline;
 }
 
-/* Animated "Close" icon on Navbar */
-/* ========================================================================== */
-
-.navbar-toggle {
-    border: none;
-    background: transparent !important;
-}
-.navbar-toggle:hover {
-    background: transparent !important;
-}
-.navbar-toggle .icon-bar {
-    width: 22px;
-    transition: all 0.2s;
-}
-.navbar-toggle .top-bar {
-    transform: rotate(45deg);
-    transform-origin: 10% 10%;
-}
-.navbar-toggle .middle-bar {
-    opacity: 0;
-}
-.navbar-toggle .bottom-bar {
-    transform: rotate(-45deg);
-    transform-origin: 10% 90%;
-}
-.navbar-toggle.collapsed .top-bar {
-    transform: rotate(0);
-}
-.navbar-toggle.collapsed .middle-bar {
-    opacity: 1;
-}
-.navbar-toggle.collapsed .bottom-bar {
-    transform: rotate(0);
+code {
+    background: #ececec;
+    background: rgba(0,0,0,0.1);
+    padding: 1px;
 }
-.navbar-form,
-.navbar-collapse {
-    box-shadow: none;
+.about_qlinks dt {
+    font-size: 18px;
+    color: #CE5C00;
+    font-weight: normal;
+    text-align: left;
 }
 
-
 /* Page Title */
 /* ========================================================================== */
 
@@ -231,27 +65,18 @@ a:hover {
 #content h1 {
     margin: 10px 0 20px;
     border-bottom: 1px solid #d3d7cf;
-    font-size: 37px;
     text-shadow: 0 1px 0 #fff;
     line-height: normal;
     letter-spacing: -0.04em;
 }
 #content h1 a {
     text-decoration: none;
-    color: inherit;
+    color: #4a86cf;
 }
 #content h1 a:hover {
     text-decoration: underline;
 }
 
-/* GNOME Container */
-/* ========================================================================== */
-
-
-#gnome_container {
-    min-height: 400px;
-}
-
 /* Separators */
 /* ========================================================================== */
 
@@ -262,7 +87,6 @@ hr {
     height: 0;
     margin: 20px 0;
 }
-
 hr.top_shadow,
 hr.bottom_shadow {
     height: 25px;
@@ -330,11 +154,12 @@ table.stats td.fuzzy {
 /* Compact text stats */
 
 pre.stats {
-    color: #333;
     display: inline;
     white-space: pre;
     font-family: monospace;
     font-size: 11px;
+    background-color: transparent;
+    border: none;
 }
 pre.stats .num1 {
     color: #4e9a06;
@@ -373,6 +198,7 @@ div#vertimus_stats pre.stats {
     position: relative;
     border-radius: 10px;
     box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.3);
+    margin-top: 5px;
 }
 div.graphinline {
     width: 100px;
@@ -385,7 +211,7 @@ div.graphinline {
 }
 .graph .translated {
     background: #73d216;
-    background: linear-gradient(to top, #73d216, #66bb14);
+    background: -linear-gradient(to top, #73d216, #66bb14);
 }
 .graph .fuzzy {
     background: #5688c9;
@@ -446,11 +272,11 @@ div.graphinline {
     float: left;
     margin-left: -65px;
 }
-
+/*
 .person_detail {
     display: block;
     padding-bottom: 20px;
-}
+}*/
 .person_detail .image,
 .person_detail .txt {
     display: table-cell;
@@ -460,7 +286,7 @@ div.graphinline {
     padding-right: 15px;
 }
 .person_detail .txt .name {
-    font-weight: bold;
+    font-weight: 400;
 }
 .person_detail .txt .email {
     color: #999;
@@ -553,7 +379,7 @@ table.stats th.headerNoSort {
 }
 .vertimus_action_head {
        border-bottom: solid #ddd 1px;
-       padding: 0.5em 12px 0;
+       padding: 0.5em 12px;
 }
 .vertimus_action_content {
        padding: 1em 12px 0;
@@ -583,20 +409,16 @@ div.face_image img {
 }
 .right_actions {
        float: right;
-       font-weight: bold;
-    text-shadow: 0 1px 0 rgba(0, 0, 0, 0.1);
-       border: 1px solid #eee;
+       border: 1px solid rgba(0,0,0,.15);
        padding: 5px 25px 0 0;
-       background: #7fa7d4;
-    background: #fff url(../img/html-bg.png) 0 repeat-x;
-    border-radius: 5px;
-    box-shadow: inset 0 1px 3px -1px #396da9;
+    border-radius: 2px;
 }
 .right_actions ul {
        list-style: none;
 }
 .right_actions a {
        text-decoration: none;
+       color: #333;
 }
 .right_actions a:hover {
        text-decoration: underline;
@@ -610,12 +432,12 @@ div.docimages {
 .diff_header,
 .djform {
        margin-top: 10px;
-       padding: 20px;
+       padding: 5px 20px;
        border: 1px solid #ccc;
 
        background: #eeeeee;
     background: linear-gradient(to top, #f9f9f9, #ececec);
-       border-radius: 5px;
+       border-radius: 2px;
 }
 .djform textarea {
        width: 100%;
@@ -707,96 +529,87 @@ ul.foot li {
    list-style-image: url(../img/foot-16.png);
 }
 
-/* Footer */
+/* Input Forms */
 /* ========================================================================== */
 
-#footer {
-    clear: left;
-    background: #000;
-    color: #919191;
-    padding: 20px 20px;
-    padding-top: 40px;
-    margin-top: 80px;
-}
-#footer div.links > div > ul > li {
-    float: left;
-    margin: 0 40px 10px 5px;
-}
-#footer .links {
-    overflow: hidden;
-    font-size: 14px;
-}
-#footer .links a,
-#footer .links strong {
-    display: block;
-    text-decoration: none;
-}
-#footer .links a:hover,
-#footer .links a:focus {
-    text-decoration: underline;
+.form-group input {
+    width: 100%;
+    height: 34px;
+    padding: 6px 12px;
+    background-color: #fff;
+    background-image: none;
+    border: 1px solid #ccc;
+        border-top-color: rgb(204, 204, 204);
+        border-right-color: rgb(204, 204, 204);
+        border-bottom-color: rgb(204, 204, 204);
+        border-left-color: rgb(204, 204, 204);
+    border-radius: 2px;
+    -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075);
+    box-shadow: inset 0 1px 1px rgba(0,0,0,.075);
+    -webkit-transition: border-color .15s ease-in-out,box-shadow .15s ease-in-out;
+    -webkit-transition: border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;
+    transition: border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;
+    transition: border-color .15s ease-in-out,box-shadow .15s ease-in-out;
+    transition: border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s 
ease-in-out;
+}
+
+.form-group input:focus {
+    border-color: #66afe9;
+    outline: 0;
+    -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);
+    box-shadow: inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);
 }
 
-#footer ul {
-    margin: 0;
-    padding: 0;
-    list-style: none;
-}
-#footer ul li {
-    margin: 0;
-    padding: 0;
-}
-#footer ul.menu > li > a {
-    font-weight: bold;
+.form-group input:focus {
+    -webkit-box-shadow: none;
+    box-shadow: none;
 }
-#footer .links > ul > li > a {
+
+/* About page */
+/* ========================================================================== */
+
+#about_page .about_qlinks dt {
+    font-size: 16px;
     font-weight: bold;
 }
-#footer .links a {
-    color: inherit;
-    outline: 0;
-    transition: all .35s;
-    margin: 6px 0;
-}
-#footer .links a:hover {
-    color: #c4c4c4;
+
+/* Custom media queries and Bootstrap overwrite rules for Damned Lies */
+/* ========================================================================== */
+
+.col-centered{
+    float: none;
+    margin: 0 auto;
 }
-#footer .links a:active,
-#footer .links a:focus {
-    color: #fff;
+.no-padding {
+   padding: 0 !important;
+   margin: 0 !important;
 }
-#footer div.links div a, #footer div.links div strong {
-    display: block;
+.no-decoration {
     text-decoration: none;
 }
-#footer div.links div a:hover, #footer div.links div a:focus {
-    text-decoration: underline;
-}
-#footer #footnotes {
-    margin-top: 20px;
-}
-#footer #footnotes small {
-    font-size: 88%;
-}
-#footer #footnotes a {
-    color: inherit;
+.table-responsive {
+    border: none;
 }
 
-/* Sticky Footer */
 
-.gnome-body {
-    display: -webkit-box;
-    display: -webkit-flex;
-    display: -ms-flexbox;
-    display: flex;
-    -webkit-box-orient: vertical;
-    -webkit-box-direction: normal;
-    -ms-flex-direction: column;
-    flex-direction: column;
-    min-height: 100vh;
-}
-.gnome-content {
-    -webkit-flex:1;
-    -ms-flex:1;
-    -webkit-box-flex:1; 
-    flex:1;
+/* Classes for responsive views */
+/* ========================================================================== */
+
+@media screen and (max-width: 767px) {
+
+    h1, #content h1 {
+        font-size: 23px;
+    }
+
+    h2 {
+        font-size: 20px;
+    }
+
+    .dropdown-menu.login_popup_form {
+            color: #ffffff;
+    }
+
+    .navbar-default .navbar-header .icons {
+        margin: 2px 20px 0;
+    }
 }
diff --git a/common/static/img/favicon.ico b/common/static/img/favicon.ico
new file mode 100644
index 00000000..2de35a6d
Binary files /dev/null and b/common/static/img/favicon.ico differ
diff --git a/common/static/img/gnome-logo.svg b/common/static/img/gnome-logo.svg
new file mode 100644
index 00000000..0534b66a
--- /dev/null
+++ b/common/static/img/gnome-logo.svg
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   version="1.0"
+   width="1062.9567"
+   height="408.40155"
+   id="svg3642"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="gnome-logo.svg">
+  <metadata
+     id="metadata24">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     pagecolor="#000000"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1280"
+     inkscape:window-height="961"
+     id="namedview22"
+     showgrid="false"
+     inkscape:zoom="1"
+     inkscape:cx="519.63537"
+     inkscape:cy="203.3948"
+     inkscape:window-x="0"
+     inkscape:window-y="27"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="g15041"
+     showborder="true"
+     borderlayer="false"
+     inkscape:showpageshadow="false" />
+  <defs
+     id="defs3644" />
+  <g
+     transform="translate(162.8693,-197.3138)"
+     id="layer1">
+    <g
+       transform="matrix(1.293235,0,0,1.293235,-4878.321,-1224.915)"
+       id="g15041">
+      <g
+         transform="matrix(2.438586,0,0,2.438586,3659.952,1113.451)"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-miterlimit:4"
+         id="g15043">
+        <g
+           style="fill:#ffffff;fill-opacity:1"
+           id="g15045">
+          <path
+             d="M 86.068,0 C 61.466,0 56.851,35.041 70.691,35.041 84.529,35.041 110.671,0 86.068,0 Z"
+             style="fill:#ffffff;fill-opacity:1"
+             id="path15047"
+             inkscape:connector-curvature="0" />
+          <path
+             d="M 45.217,30.699 C 52.586,31.149 60.671,2.577 46.821,4.374 32.976,6.171 37.845,30.249 
45.217,30.699 Z"
+             style="fill:#ffffff;fill-opacity:1"
+             id="path15049"
+             inkscape:connector-curvature="0" />
+          <path
+             d="M 11.445,48.453 C 16.686,46.146 12.12,23.581 3.208,29.735 -5.7,35.89 6.204,50.759 
11.445,48.453 Z"
+             style="fill:#ffffff;fill-opacity:1"
+             id="path15051"
+             inkscape:connector-curvature="0" />
+          <path
+             d="M 26.212,36.642 C 32.451,35.37 32.793,9.778 21.667,14.369 10.539,18.961 19.978,37.916 
26.212,36.642 l 0,0 z"
+             style="fill:#ffffff;fill-opacity:1"
+             id="path15053"
+             inkscape:connector-curvature="0" />
+          <path
+             d="m 58.791,93.913 c 1.107,8.454 -6.202,12.629 -13.36,7.179 C 22.644,83.743 83.16,75.088 
79.171,51.386 75.86,31.712 15.495,37.769 8.621,68.553 3.968,89.374 27.774,118.26 52.614,118.26 c 12.22,0 
26.315,-11.034 28.952,-25.012 C 83.58,82.589 57.867,86.86 58.791,93.913 l 0,0 z"
+             style="fill:#ffffff;fill-opacity:1"
+             id="path15055"
+             inkscape:connector-curvature="0" />
+        </g>
+      </g>
+      <g
+         id="g15057"
+         style="fill:#ffffff">
+        <path
+           d="m 4176.2963,1214.4401 c -15.1078,0.4069 -27.0386,5.8367 -35.8126,16.25 -9.0861,10.8369 
-13.6562,25.8104 -13.6562,44.9063 0,19.0432 4.5703,33.9757 13.6562,44.8124 9.1305,10.8369 21.6664,16.25 
37.6563,16.25 16.034,0 28.6014,-5.4131 37.6875,-16.25 9.0859,-10.8367 13.6251,-25.7692 13.625,-44.8124 
-1e-4,-19.0959 -4.5391,-34.0694 -13.625,-44.9063 -9.0861,-10.8366 -21.6536,-16.2499 -37.6875,-16.25 -0.6246,0 
-1.2296,-0.016 -1.8437,0 z m 1.125,22 c 0.2415,-0.01 0.4737,0 0.7187,0 7.8833,10e-5 13.9919,3.4114 
18.3125,10.25 4.3203,6.8388 6.4999,16.4913 6.5,28.9063 0,12.3623 -2.1799,21.9427 -6.5,28.7812 -4.3204,6.8389 
-10.4293,10.2812 -18.3125,10.2812 -7.8391,0 -13.8983,-3.4423 -18.2187,-10.2812 -4.3204,-6.8385 
-6.4999,-16.4189 -6.5,-28.7812 0,-12.4149 2.1798,-22.0675 6.5,-28.9063 4.1852,-6.6249 10.0123,-10.0428 
17.5,-10.25 z"
+           
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:148.699646px;line-height:125%;font-family:'Bitstream
 Vera 
Sans';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path15059"
+           inkscape:connector-curvature="0" />
+        <path
+           d="m 4005.6293,1325.612 c -13.3076,11.1757 -33.1067,11.0472 -41.3549,11.0472 -16.6133,0 
-29.7747,-5.471 -39.4842,-16.413 -9.7097,-10.9946 -14.5644,-25.8819 -14.5644,-44.6622 0,-18.9906 
4.9438,-33.9305 14.8316,-44.82 9.8878,-10.8892 23.4277,-16.3339 40.62,-16.334 6.6363,10e-5 12.9831,0.7366 
19.0406,2.2094 6.1019,1.473 11.8475,3.6562 17.2368,6.5494 l -6.921,20.4608 c -3.0298,-1.6586 -6.4987,-3.2932 
-9.7145,-4.4424 -5.4784,-1.8411 -10.979,-2.7617 -16.5018,-2.7618 -10.2442,10e-5 -18.15,3.3932 
-23.7173,10.1792 -5.523,6.7336 -8.2844,16.3867 -8.2844,28.9594 0,12.4676 2.6723,22.0945 8.0172,28.8806 
5.3446,6.7861 13.3768,10.1791 22.7818,10.1791 9.5548,0 15.4728,-2.4084 18.6291,-4.9461 l 0,-20.3835 
-20.7001,0 0,-20.3584 40.0855,0"
+           
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:148.699646px;line-height:125%;font-family:'Bitstream
 Vera 
Sans';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path15061"
+           inkscape:connector-curvature="0" />
+        <path
+           d="m 4023.2108,1216.5605 16.2279,0 51.2775,70.8022 0,-70.8022 21.8853,0 0,117.8103 -16.2279,0 
-51.2774,-70.8022 0,70.8022 -21.8854,0 0,-117.8103"
+           
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:148.699646px;line-height:125%;font-family:'Bitstream
 Vera 
Sans';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path15063"
+           inkscape:connector-curvature="0" />
+        <path
+           d="m 4246.3361,1216.5605 32.7366,0 22.7151,73.5479 22.8487,-73.5479 27.6698,0 12.5,117.8103 
-24.3186,0 -7.5,-73.668 -22.9823,74.0213 -16.3015,0 -22.9824,-76.5213 -7.5,76.168 -24.3854,0 12.5,-117.8103"
+           
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:148.699646px;line-height:125%;font-family:'Bitstream
 Vera 
Sans';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path15065"
+           inkscape:connector-curvature="0" />
+        <path
+           d="m 4382.3597,1216.5605 69.4147,0 0,22.9624 -43.6933,0 0,24.4365 33.5877,0 0,20.4623 -33.5877,0 
0,26.9868 45.1631,0 0,22.9623 -70.8845,0 0,-117.8103"
+           
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:148.699646px;line-height:125%;font-family:'Bitstream
 Vera 
Sans';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path15067"
+           inkscape:connector-curvature="0" />
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/people/forms.py b/people/forms.py
index a3e159b8..ce1e9c1e 100644
--- a/people/forms.py
+++ b/people/forms.py
@@ -17,14 +17,16 @@ from people.models import Person
 
 class RegistrationForm(forms.Form):
     """ Form for user registration """
-    username = forms.RegexField(max_length=30, regex=r'^\w+$',
+    username = forms.RegexField(widget=forms.TextInput(attrs={'class': 'form-control'}),
+                               max_length=30, regex=r'^\w+$',
                                label=ugettext_lazy('Choose a username:'),
                                help_text=ugettext_lazy('May contain only letters, numbers, underscores or 
hyphens'))
-    email = forms.EmailField(label=ugettext_lazy('Email:'))
-    password1 = forms.CharField(widget=forms.PasswordInput(render_value=False),
+    email = forms.EmailField(widget=forms.TextInput(attrs={'class': 'form-control'}),
+                               label=ugettext_lazy('Email:'))
+    password1 = forms.CharField(widget=forms.PasswordInput(attrs={'class': 
'form-control'},render_value=False),
                                 label=ugettext_lazy('Password:'), required=False, min_length=7,
                                 help_text=ugettext_lazy('At least 7 characters'))
-    password2 = forms.CharField(widget=forms.PasswordInput(render_value=False),
+    password2 = forms.CharField(widget=forms.PasswordInput(attrs={'class': 
'form-control'},render_value=False),
                                 label=ugettext_lazy('Confirm password:'), required=False)
 
     def clean_username(self):
diff --git a/people/templatetags/people.py b/people/templatetags/people.py
index 99696663..dff9365f 100644
--- a/people/templatetags/people.py
+++ b/people/templatetags/people.py
@@ -34,15 +34,15 @@ def people_image(person):
             qs=urlencode([('s', '80'), ('d', 'identicon'), ('r', 'g')])
         )
         tag = format_html(
-            '<img src="{url}" alt="{alt}">', url=url, alt=_("avatar icon")
+            '<img class="img-circle" src="{url}" alt="{alt}">', url=url, alt=_("avatar icon")
         )
     elif person.image:
         tag = format_html(
-            '<img src="{}" alt="{}" onerror="this.onerror = null; this.src=\'{}\'">',
+            '<img class="img-circle" src="{}" alt="{}" onerror="this.onerror = null; this.src=\'{}\'">',
             person.image, person.name, nobody
         )
     else:
         tag = format_html(
-            '<img src="{url}" alt="{alt}">', url=nobody, alt=_("generic person icon")
+            '<img class="img-circle" src="{url}" alt="{alt}">', url=nobody, alt=_("generic person icon")
         )
     return tag
diff --git a/stats/templatetags/stats_extras.py b/stats/templatetags/stats_extras.py
index 66e63757..0a812edf 100644
--- a/stats/templatetags/stats_extras.py
+++ b/stats/templatetags/stats_extras.py
@@ -223,8 +223,8 @@ def as_tr(field):
         help_link = help_link % (field.field.help_link, settings.STATIC_URL)
     errors_html = ''
     if field.errors:
-        errors = ''.join(["<li>%s</li>" % err for err in field.errors])
-        errors_html = '<ul class="errorlist">%s</ul>' % errors
+        errors = ''.join(["%s" % err for err in field.errors])
+        errors_html = '%s' % errors
 
     return mark_safe('<tr class="tr_%s"><th>%s</th><td>%s%s%s%s</td></tr>' % (
         field.name, field.label_tag(), errors_html, field.as_widget(), help_link, help_html)
diff --git a/teams/forms.py b/teams/forms.py
index 9a5f5d41..01774c1d 100644
--- a/teams/forms.py
+++ b/teams/forms.py
@@ -11,10 +11,10 @@ class EditTeamDetailsForm(forms.ModelForm):
         model = Team
         fields = ('webpage_url', 'mailing_list', 'mailing_list_subscribe', 'use_workflow', 'presentation')
         widgets = {
-            'webpage_url':  forms.TextInput(attrs={'size': 60}),
-            'mailing_list': forms.TextInput(attrs={'size': 60}),
-            'mailing_list_subscribe': forms.TextInput(attrs={'size': 60}),
-            'presentation': forms.Textarea(attrs={'cols': 60}),
+            'webpage_url':  forms.TextInput(attrs={'size': 60, 'class': 'form-control'}),
+            'mailing_list': forms.TextInput(attrs={'size': 60, 'class': 'form-control'}),
+            'mailing_list_subscribe': forms.TextInput(attrs={'size': 60, 'class': 'form-control'}),
+            'presentation': forms.Textarea(attrs={'cols': 60, 'class': 'form-control'}),
         }
 
     def __init__(self, user, *args, **kwargs):
diff --git a/templates/base.html b/templates/base.html
index 920b2038..41488a51 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -6,10 +6,9 @@
   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
   <meta name="viewport" content="width=device-width, initial-scale=1">
   <title>{% block title %}page title{% endblock %}</title>
-  <link rel="icon" type="image/png" href="{{ STATIC_URL }}img/foot-16.png">
-  <link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}css/bootstrap.min.css">
+  <link rel="icon" type="image/png" href="{{ STATIC_URL }}img/favicon.ico">
+  <link rel="stylesheet" type="text/css" href="https://static.gnome.org/css/deneb.min.css";>
   <link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}css/template.css">
-  <link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}css/responsive.css">
 {% if LANGUAGE_BIDI %}
   <link rel="stylesheet" href="{{ STATIC_URL }}css/rtl.css">
 {% endif %}
@@ -41,9 +40,9 @@
                     <span class="icon-bar middle-bar"></span>
                     <span class="icon-bar bottom-bar"></span>
                 </button>
-                <a class="gnome-navbar-brand" title="{% trans "Back to Damned Lies home page" %}" 
href="/"><img src="{{ STATIC_URL }}img/gnome-l10n.svg" alt="GNOME - Damned Lies" /></a>
+                <a class="gnome-navbar-brand" title="{% trans "Back to Damned Lies home page" %}" 
href="/"><img src="{{ STATIC_URL }}img/gnome-logo.svg" alt="GNOME - Damned Lies" /></a>
                 <ul class="nav navbar-nav icons visible-xs">
-                    <li class="dropdown">
+                    <li class="dropdown pull-right">
                     {% if user.is_authenticated %}
                         <a data-target="#userDropdownMenu" class="dropdown-toggle avatar" 
data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">{{ user.person|people_image 
}}</a>
                     {% else %}
@@ -57,9 +56,9 @@
                 {% if user.is_authenticated %}
                     <a href="{% url 'person_detail_username' user.username %}" class="dropdown-toggle 
hidden-xs avatar" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">{{ 
user.person|people_image }}</a>
                 {% else %}
-                    <a href="{% url 'login' %}" class="dropdown-toggle hidden-xs" data-toggle="dropdown" 
role="button" aria-haspopup="true" aria-expanded="false">{% trans "Log in" %} <span class="caret"></span></a>
+                    <a href="{% url 'login' %}" class="dropdown-toggle hidden-xs" data-toggle="dropdown" 
role="button" aria-haspopup="true" aria-expanded="false">{% trans "Log in" %}</a>
                 {% endif %}
-                    <ul class="dropdown-menu login_popup_form">
+                    <ul class="dropdown-menu login_popup_form user-menu">
                         <li>
                             {% include "login/login_usermenu.html" %}
                         </li>
@@ -91,49 +90,48 @@
     {% block content %}{% endblock %}
 </div>
 
-<div id="footer">
-    <div class="links container">
-        <div>
-        <ul id="menu-footer" class="menu">
-            <li><a href="https://www.gnome.org";>{% trans "The GNOME Project" %}</a>
-            <ul class="sub-menu">
-                <li><a href="https://www.gnome.org/about/";>{% trans "About Us" %}</a></li>
-                <li><a href="https://www.gnome.org/get-involved/";>{% trans "Get Involved" %}</a></li>
-                <li><a href="https://www.gnome.org/support-gnome/";>{% trans "Support GNOME" %}</a></li>
-                <li><a href="https://www.gnome.org/merchandise/";>{% trans "Merchandise" %}</a></li>
-                <li><a href="https://www.gnome.org/contact/";>{% trans "Contact Us" %}</a></li>
-                <li><a href="https://www.gnome.org/foundation/";>{% trans "The GNOME Foundation" %}</a></li>
-            </ul>
-        </li>
-        <li><a href="#">{% trans "Resources" %}</a>
-            <ul class="sub-menu">
-                <li><a href="https://developer.gnome.org";>{% trans "Developer Center" %}</a></li>
-                <li><a href="https://help.gnome.org";>{% trans "Documentation" %}</a></li>
-                <li><a href="https://wiki.gnome.org/";>{% trans "Wiki" %}</a></li>
-                <li><a href="https://mail.gnome.org/mailman/listinfo";>{% trans "Mailing Lists" %}</a></li>
-                <li><a href="https://wiki.gnome.org/GnomeIrcChannels";>{% trans "IRC Channels" %}</a></li>
-                <li><a href="https://gitlab.gnome.org/";>{% trans "Bug Tracker" %}</a></li>
-                <li><a href="https://gitlab.gnome.org/GNOME/";>{% trans "Development Code" %}</a></li>
-        </ul>
-        </li>
-        <li><a href="https://www.gnome.org/news/";>{% trans "News" %}</a>
-        <ul class="sub-menu">
-            <li><a href="https://www.gnome.org/press/";>{% trans "Press Releases" %}</a></li>
-            <li><a href="https://www.gnome.org/start/stable";>{% trans "Latest Release" %}</a></li>
-            <li><a href="https://planet.gnome.org";>{% trans "Planet GNOME" %}</a></li>
-        </ul>
-        </li>
-    </ul>
-    </div>
-    </div> <!-- end of div.links -->
-
-    <div id="footnotes" class="container">
-        {% trans "Copyright &copy; 2006" %}-{% now "Y" %} <strong><a href="https://www.gnome.org/";>{% trans 
"The GNOME Project" %}</a></strong>.
-        <br />
-        <a href="{% url 'about' %}">{% trans "About Damned Lies" %}</a>.
-        {% trans "Optimized for standards." %}
-        {% blocktrans with "<a href='http://www.canonical.com/'>Canonical</a>" as link %}Hosted by {{ link 
}}.{% endblocktrans %}
-        {% blocktrans with "<a href='https://www.djangoproject.com/'>Django</a>" as link %}Powered by {{ 
link }}.{% endblocktrans %}
+<div class="footer">
+    <div class="container">
+        <div class="row">
+                <div class="col-xs-12 col-sm-2">
+                    <h4><a href="https://www.gnome.org";>{% trans "The GNOME Project" %}</a></h4>
+                    <ul>
+                        <li><a href="https://www.gnome.org/about/";>{% trans "About Us" %}</a></li>
+                        <li><a href="https://www.gnome.org/get-involved/";>{% trans "Get Involved" %}</a></li>
+                        <li><a href="https://www.gnome.org/support-gnome/";>{% trans "Support GNOME" 
%}</a></li>
+                        <li><a href="https://www.gnome.org/teams/";>{% trans "Merchandise" %}</a></li>
+                        <li><a href="https://www.gnome.org/contact/";>{% trans "Contact Us" %}</a></li>
+                        <li><a href="https://www.gnome.org/foundation/";>{% trans "The GNOME Foundation" 
%}</a></li>
+                    </ul>
+                </div>
+                <div class="col-xs-12 col-sm-2">
+                    <h4><a href="#">{% trans "Resources" %}</a></h4>
+                    <ul class="sub-menu">
+                        <li><a href="https://developer.gnome.org";>{% trans "Developer Center" %}</a></li>
+                        <li><a href="https://help.gnome.org";>{% trans "Documentation" %}</a></li>
+                        <li><a href="https://wiki.gnome.org";>{% trans "Wiki" %}</a></li>
+                        <li><a href="https://mail.gnome.org/mailman/listinfo";>{% trans "Mailing Lists" 
%}</a></li>
+                        <li><a href="https://wiki.gnome.org/GettingInTouch/IRC";>{% trans "IRC Channels" 
%}</a></li>
+                        <li><a href="https://gitlab.gnome.org/";>{% trans "Bug Tracker" %}</a></li>
+                        <li><a href="https://gitlab.gnome.org/";>{% trans "Development Code" %}</a></li>
+                    </ul>
+                </div>
+                <div class="col-xs-12 col-sm-2">
+                    <h4><a href="https://www.gnome.org/news/";>{% trans "News" %}</a></h4>
+                    <ul class="sub-menu">
+                        <li><a href="https://www.gnome.org/press/";>{% trans "Press Releases" %}</a></li>
+                        <li><a href="https://www.gnome.org/start/stable";>{% trans "Latest Release" 
%}</a></li>
+                        <li><a href="https://planet.gnome.org";>{% trans "Planet GNOME" %}</a></li>
+                    </ul>
+                </div>
+        </div>
+        <div class="row">
+            <div class="col-xs-12">
+                <p>© <a href="https://www.gnome.org/";>{% trans "The GNOME Project" %}</a>.</p>
+                <p><a href="{% url 'about' %}">{% trans "Damned Lies" %}</a>. {% blocktrans with "<a 
href='http://www.canonical.com/'>Canonical</a>" as link %}Hosted by {{ link }}.{% endblocktrans %}
+                Powered by {% blocktrans with "<a href='https://www.djangoproject.com/'>Django</a>" as link 
%}Powered by {{ link }}.{% endblocktrans %}</p>
+            </div>
+        </div>
     </div>
 </div>
 
@@ -144,6 +142,6 @@
     </div>
 </div>
 
-<script type="text/javascript" src="{{ STATIC_URL }}js/bootstrap.min.js"></script>
+<script type="text/javascript" src="https://static.gnome.org/js/deneb.min.js";></script>
 </body>
 </html>
diff --git a/templates/error.html b/templates/error.html
index 3e28d054..398bdab7 100644
--- a/templates/error.html
+++ b/templates/error.html
@@ -8,7 +8,9 @@
 
 <h1>{% trans "Error:" %}</h1>
 
-<p class="errornote">{{ error }}</p>
+<div class="alert alert-danger">
+  {{ error }}
+</div>
 
 </div>
 {% endblock %}
diff --git a/templates/languages/language_release_stats.html b/templates/languages/language_release_stats.html
index ae9376e2..28c3e26e 100644
--- a/templates/languages/language_release_stats.html
+++ b/templates/languages/language_release_stats.html
@@ -75,8 +75,8 @@
           <td>
            {% if stat.state.name %}
              {% if stat.state.name != "None" %}
-             <em><small>{{ stat.state.description }}</small></em></td>
-             <td><span style="display: none;">{{ stat.state.updated|date:"c" }}</span><em><small>{{ 
stat.state.updated|date:"DATE_FORMAT" }}
+             <em>{{ stat.state.description }}</em></td>
+             <td><span style="display: none;">{{ stat.state.updated|date:"c" }}</span><em>{{ 
stat.state.updated|date:"DATE_FORMAT" }}
              {% else %}
                {% if stat.state.last_comment %}
                  <span class="comment">{{ stat.state.last_comment|truncatewords:12 }}</span>
diff --git a/templates/login.html b/templates/login.html
index b79cbee0..cb82a803 100644
--- a/templates/login.html
+++ b/templates/login.html
@@ -2,33 +2,28 @@
 {% load i18n %}
 
 {% block title %} {% trans "Damned Lies about GNOME" %} {% endblock %}
-{% block extrahead %} <link rel="stylesheet" href="{{ STATIC_URL }}css/login.css"/> {% endblock %}
 {% block content %}
 <div class="mainpage">
-
-<h2>{% trans "User Login" %}</h2>
-{% if user.is_authenticated %}
-  <p>{% blocktrans with user.username as username %}You are already logged in as {{ username }}.{% 
endblocktrans %}</p>
-{% else %}
-{% url 'register' as link %}
-<p class="main_register">{% blocktrans %}If you do not own an account on this site, you can <a href='{{ link 
}}'>register</a> for a new account.{% endblocktrans %}</p>
+<div class="col-sm-8 col-md-6 col-centered">
+<h1>{% trans "User Login" %}</h1>
 
 <p>{% trans 'Log in with your username (or email) and password:' %}</p>
-<form action="{% url 'login' %}" method="post" id="login-form" class="login">
+<form action="{% url 'login' %}" method="post" id="login-form" class="form">
   {% csrf_token %}
-  <div class="form-row">
-    {{ form.username.errors }}
-    {{ form.username.label_tag }} {{ form.username }}
+  <div class="form-group">
+    {{ form.username.label_tag }}
+    {{ form.username }}
+    <span class="help-block">{{ form.username.errors }}</span>
   </div>
-  <div class="form-row">
-    {{ form.password.errors }}
-    {{ form.password.label_tag }} {{ form.password }}
-    <span class="help"><a href="{% url 'password_reset' %}">{% trans 'Have you forgotten your password?' 
%}</a></span>
+  <div class="form-group">
+    {{ form.password.label_tag }} <a class="right" href="{% url 'password_reset' %}">{% trans 'Forgot your 
password?' %}</a>
+    {{ form.password }}
+    <span class="help-block">{{ form.password.errors }}</span>
     <input type="hidden" name="referer" value="{{ referer|default:"" }}" />
   </div>
-  <div class="submit-row">
-    <label>&nbsp;</label><input type="submit" value="{% trans 'Log in' %}" />
-  </div>
+    <div class="form-group">
+      <button type="submit" class="btn btn-action btn-block">{% trans 'Log in' %}</button>
+    </div>
 </form>
 
 <div style="margin-top: 2em;">
@@ -36,9 +31,20 @@
     {% blocktrans %}Or <a href="{{ link }}">login with your GNOME account</a>{% endblocktrans %}
 </div>
 
+<hr>
+<p class="text-center main_feature" style="margin-bottom: 30px;">Don't have an account?</p>
+{% if user.is_authenticated %}
+  <p>{% blocktrans with user.username as username %}You are already logged in as {{ username }}.{% 
endblocktrans %}</p>
+{% else %}
+{% url 'register' as link %}
+  <a href="{{ link }}" class="btn btn-action btn-block">{% trans "Register" %}</a>
+
+
 <script type="text/javascript">
 document.getElementById('id_username').focus()
 </script>
 {% endif %}
+
+</div>
 </div>
 {% endblock %}
diff --git a/templates/login/login_popup_form.html b/templates/login/login_popup_form.html
index 718806cb..86228603 100644
--- a/templates/login/login_popup_form.html
+++ b/templates/login/login_popup_form.html
@@ -12,7 +12,7 @@
             </div>
             <input type="hidden" name="referer" value="{{ referer|default:"" }}" />
             <div class="form-group">
-                <button type="submit" class="btn btn-primary btn-block">{% trans "Log in" %}</button>
+                <button type="submit" class="btn btn-action btn-block">{% trans "Log in" %}</button>
             </div>
             <div class="form-group">
                 <a href="{% url 'password_reset' %}">{% trans 'Forgot your password?' %}</a>
@@ -20,7 +20,7 @@
             <li class="divider"></li>
             <p>{% trans "Don’t have an account?" %}</p>
             <div class="form-group">
-                <a href="{% url 'register' %}" class="btn btn-success btn-block no-decoration">{% trans 
"Register" %}</a>
+                <a href="{% url 'register' %}" class="btn btn-action btn-block">{% trans "Register" %}</a>
             </div>
         </form>
     </div>
diff --git a/templates/login/login_usermenu.html b/templates/login/login_usermenu.html
index 0e8bc9a5..2c555bcd 100644
--- a/templates/login/login_usermenu.html
+++ b/templates/login/login_usermenu.html
@@ -3,7 +3,7 @@
 {% if user.is_authenticated %}
     <div class="row">
         <div class="col-sm-12">
-            <a class="btn btn-link no-decoration" href="{% url 'person_detail_username' user.username %}">{% 
trans 'User Settings' %}</a>
+            <a class="btn btn-link" href="{% url 'person_detail_username' user.username %}">{% trans 'User 
Settings' %}</a>
                 <form action="{% url 'logout' %}" method="post" class="form">
                     {% csrf_token %}
                     <input type="hidden" name="logout" value="1">
diff --git a/templates/people/person_overview.html b/templates/people/person_overview.html
index 85f35a7f..52aee9b1 100644
--- a/templates/people/person_overview.html
+++ b/templates/people/person_overview.html
@@ -7,7 +7,7 @@
     <div class="image">{{ person|people_image }}</div>
 
     <div class="txt">
-        <a class="name" href="{{ person.get_absolute_url }}">{{ person.name }}</a>
+        <a class="name main_feature" href="{{ person.get_absolute_url }}">{{ person.name }}</a>
         <br>
 
         {% if person.webpage_url %}
diff --git a/templates/people/person_password_change_form.html 
b/templates/people/person_password_change_form.html
index 0e9a80e1..9cadad0e 100644
--- a/templates/people/person_password_change_form.html
+++ b/templates/people/person_password_change_form.html
@@ -7,29 +7,24 @@
 
 <p>{% trans "Please enter your old password, for security’s sake, and then enter your new password twice so 
we can verify you typed it in correctly." %}</p>
 
-<form action="{{ request.path }}"  method="post" class="djform">
+<form action="{{ request.path }}"  method="post" class="djform form">
   {% csrf_token %}
   <table>
-  <tr>
-    <td colspan="2">{{ form.old_password.errors }}</td>
-  <tr>
-    <th><label for="id_old_password">{% trans 'Old password:' %}</label></th><td>{{ form.old_password }}</td>
-  </tr>
-  <tr>
-    <td colspan="2">{{ form.new_password1.errors }}</td>
-  </tr>
-  <tr>
-    <th><label for="id_new_password1">{% trans 'New password:' %}</label></th><td>{{ form.new_password1 
}}</td>
-  </tr>
-  <tr>
-    <td colspan="2">{{ form.new_password2.errors }}</td>
-  </tr>
-  <tr>
-    <th><label for="id_new_password2">{% trans 'Confirm password:' %}</label></th><td>{{ form.new_password2 
}}</td>
-  </tr>
-  <tr>
-    <td></td><td><input type="submit" value="{% trans 'Change my password' %}" /></td>
-  </tr>
+  <div class="form-group">
+    <label for="id_old_password">{% trans 'Old password:' %}</label>{{ form.old_password }}
+    <span class="help-block">{{ form.old_password.errors }}</span>
+  </div>
+  <div class="form-group">
+    <label for="id_new_password1">{% trans 'New password:' %}</label>{{ form.new_password1 }}
+    <span class="help-block">{{ form.new_password1.errors }}</span>
+  </div>
+  <div class="form-group">
+    <label for="id_new_password2">{% trans 'Confirm password:' %}</label>{{ form.new_password2 }}
+    <span class="help-block">{{ form.new_password2.errors }}</span>
+  </div>
+  <div class="form-group">
+    <button type="submit" class="btn btn-default">{% trans 'Change my password' %}</button>
+  </div>
   </table>
 </form>
 
diff --git a/templates/registration/password_reset_confirm.html 
b/templates/registration/password_reset_confirm.html
index 2527874b..3d9482f2 100644
--- a/templates/registration/password_reset_confirm.html
+++ b/templates/registration/password_reset_confirm.html
@@ -5,19 +5,22 @@
 
 {% block content %}
 <div class="mainpage">
+<div class="col-sm-8 col-md-6 col-centered">
 
 {% if validlink %}
 <h1>{% trans 'Enter new password' %}</h1>
 
-<p>{% trans "Please enter your new password twice so we can verify you typed it in correctly." %}</p>
+<p class="main_feature">{% trans "Please enter your new password twice so we can verify you typed it in 
correctly." %}</p>
 
-<form action="{{ request.path }}" method="post">
+<form action="{{ request.path }}" method="post" class="form">
 {% csrf_token %}
 {% if form.new_password1.errors %}{{ form.new_password1.errors }}{% endif %}
 <p class="aligned wide"><label for="id_new_password1">{% trans 'New password:' %}</label>{{ 
form.new_password1 }}</p>
 {% if form.new_password2.errors %}{{ form.new_password2.errors }}{% endif %}
 <p class="aligned wide"><label for="id_new_password2">{% trans 'Confirm password:' %}</label>{{ 
form.new_password2 }}</p>
-<p><input type="submit" value="{% trans 'Change my password' %}" /></p>
+  <div class="form-group">
+    <button type="submit" class="btn btn-action">{% trans 'Change my password' %}</button>
+  </div>
 </form>
 
 {% else %}
@@ -28,4 +31,5 @@
 
 {% endif %}
 </div>
+</div>
 {% endblock %}
diff --git a/templates/registration/password_reset_form.html b/templates/registration/password_reset_form.html
index 4c4fc2c3..cc1f14ec 100644
--- a/templates/registration/password_reset_form.html
+++ b/templates/registration/password_reset_form.html
@@ -5,14 +5,20 @@
 
 {% block content %}
 <div class="mainpage">
-
+<div class="col-sm-8 col-md-6 col-centered">
 <h1>{% trans "Password reset" %}</h1>
 
-<p>{% trans "Forgotten your password? Enter your e-mail address below, and we’ll e-mail instructions for 
setting a new one." %}</p>
+<p class="main_feature">{% trans "Forgotten your password? Enter your e-mail address below, and we’ll e-mail 
instructions for setting a new one." %}</p>
 
-<form action="{{ request.path }}" method="post">{% csrf_token %}
-{% if form.email.errors %}{{ form.email.errors }}{% endif %}
-<p><label for="id_email">{% trans 'E-mail address:' %}</label> {{ form.email }} <input type="submit" 
value="{% trans 'Reset my password' %}" /></p>
+<form action="{{ request.path }}" method="post" class="form">{% csrf_token %}
+  <div class="form-group">
+    <label for="id_email">{% trans 'E-mail address:' %}</label> {{ form.email }}
+    {% if form.email.errors %}<span class="help-block">{{ form.email.errors }}</span>{% endif %}
+  </div>
+  <div class="form-group">
+    <button type="submit" class="btn btn-action">{% trans 'Reset my password' %}</button>
+  </div>
 </form>
 </div>
+</div>
 {% endblock %}
diff --git a/templates/registration/register.html b/templates/registration/register.html
index ee6fde6e..bcc8590c 100644
--- a/templates/registration/register.html
+++ b/templates/registration/register.html
@@ -5,38 +5,38 @@
 {% block extrahead %} <link rel="stylesheet" href="{{ STATIC_URL }}css/login.css"/> {% endblock %}
 {% block content %}
 <div class="mainpage">
-
-<h2>{% trans "Account Registration" %}</h2>
+<div class="col-sm-8 col-md-6 col-centered">
+<h1>{% trans "Account Registration" %}</h1>
 {% if user.is_authenticated %}
   <p>{% blocktrans with user.username as username %}You are already logged in as {{ username }}.{% 
endblocktrans %}</p>
 {% else %}
-<p class="main_register">{% trans "You can register here for an account on this site. This is only useful if 
you plan to contribute to GNOME translations." %}</p>
+<p class="main_feature">{% trans "You can register here for an account on this site. This is only useful if 
you plan to contribute to GNOME translations." %}</p>
 <p>{% trans "After registration and connection, you will be able to join an existing team from your profile 
page." %}</p>
 
-<form action="/register/" method="post" id="login-form" class="login">
+<form action="/register/" method="post" id="login-form" class="form">
   {% csrf_token %}
-  <div class="form-row">
-    {{ form.username.errors }}
-    <label for="id_username">{{ form.username.label }}</label> {{ form.username }} <span class="help">{{ 
form.username.help_text }}</span>
+  <div class="form-group">
+    <label for="id_username">{{ form.username.label }}</label> {{ form.username }} <span 
class="help-block">{{ form.username.help_text }}</span>
+    <span class="help-block">{{ form.username.errors }}</span>
   </div>
-  <div class="form-row">
-    {{ form.email.errors }}
+  <div class="form-group">
     <label for="id_email">{{ form.email.label }}</label> {{ form.email }}
+    <span class="help-block">{{ form.email.errors }}</span>
   </div>
 
 <div style="clear:both">{{ form.non_field_errors }}</div>
 
 <div class="login">
-       <div id="password">
-               <div class="form-row">
-                       {{ form.password1.errors }}
-                       <label for="id_password1">{{ form.password1.label }}</label> {{ form.password1 }} 
<span class="help">{{ form.password1.help_text }}</span>
-               </div>
-  <div class="form-row">
+  <div id="password">
+    <div class="form-group">
+      <label for="id_password1">{{ form.password1.label }}</label> {{ form.password1 }} <span 
class="help-block">{{ form.password1.help_text }}</span>
+      <span class="help-block">{{ form.password1.errors }}</span>
+    </div>
+  <div class="form-group">
     <label for="id_password2">{{ form.password2.label }}</label> {{ form.password2 }}
   </div>
-  <div class="form-row">
-    <label>&nbsp;</label><input type="submit" value="{% trans 'Register with password' %}" />
+  <div class="form-group">
+    <button type="submit" class="btn btn-action btn-block">{% trans 'Register with password' %}</button>
   </div>
 </div>
 
@@ -48,4 +48,5 @@ document.getElementById('id_username').focus()
 </script>
 {% endif %}
 </div>
+</div>
 {% endblock %}
diff --git a/templates/stats_show.html b/templates/stats_show.html
index 2ef36296..ce5fc8ad 100644
--- a/templates/stats_show.html
+++ b/templates/stats_show.html
@@ -8,11 +8,11 @@
     <h3>{% trans pot_stat.domain.get_description %}
 
         {% if pot_stat.get_type == "mallard" %}
-            <span style="padding-top: 8px;" class="icon_button"><img src="{{ STATIC_URL }}img/mallard.png" 
title="{% trans "This document is written in Mallard documentation format" %}" alt="mallard icon"/></span>
+            <span style="padding-top: 8px;" class="btn btn-action"><img src="{{ STATIC_URL 
}}img/mallard.png" title="{% trans "This document is written in Mallard documentation format" %}" 
alt="mallard icon"/></span>
         {% endif %}
 
         {% if pot_stat.full_po %}
-            <a href="{{ pot_stat.po_url }}" class="icon_button" title="{% trans 'Download POT file' %}"><img 
src="{{ STATIC_URL }}img/download.png" alt="{% trans 'Download POT file' %}" /></a>
+            <a href="{{ pot_stat.po_url }}" class="btn btn-action" title="{% trans 'Download POT file' 
%}"><img src="{{ STATIC_URL }}img/download.png" alt="{% trans 'Download POT file' %}" /></a>
         {% endif %}
 
     </h3>
diff --git a/templates/teams/team_detail.html b/templates/teams/team_detail.html
index 9ddd295a..9511969d 100644
--- a/templates/teams/team_detail.html
+++ b/templates/teams/team_detail.html
@@ -67,7 +67,7 @@ $(document).ready(function() {
     {% endwith %}
 
 {% if user.is_authenticated %}
-  <div class="right"><a href="{% url 'activity_by_language' lang.locale %}">{% trans "Current activities" 
%}</a></div>
+  <div class="right"><a class="btn btn-action" href="{% url 'activity_by_language' lang.locale %}">{% trans 
"Current activities" %}</a></div>
 {% endif %}
 
     <p><strong>{% trans "Plural forms:" %}</strong> {{ lang.get_plurals }}</p>
diff --git a/templates/teams/team_edit.html b/templates/teams/team_edit.html
index 12bc1101..f3e8dd8c 100644
--- a/templates/teams/team_edit.html
+++ b/templates/teams/team_edit.html
@@ -15,7 +15,7 @@ $(document).ready(function() {
 <div class="col-xs-12">
 <h1>{% blocktrans with team.get_description as lang %}{{ lang }} Translation Team{% endblocktrans %}</h1>
 
-<form action="{{ request.path }}" method="POST" class="djform">
+<form action="{{ request.path }}" method="POST" class="djform form">
 {% csrf_token %}
 <table>
   {% if form.coordinatorship %}
diff --git a/templates/vertimus/vertimus_detail.html b/templates/vertimus/vertimus_detail.html
index b82ff3db..93e9d35b 100644
--- a/templates/vertimus/vertimus_detail.html
+++ b/templates/vertimus/vertimus_detail.html
@@ -59,7 +59,7 @@ $(document).ready(function() {
 » <span style="color: #000">{{ branch.name }}</span> » <a href="{{ language.get_team_url }}">{{ 
language.get_name }}</a>
 </h1>
 
-<p>{{ domain.get_description }}</p>
+<p class="main_feature">{{ domain.get_description }}</p>
 
 <h2 class="plain">
 {% trans "State:" %} {{ state.description }}
@@ -77,12 +77,12 @@ $(document).ready(function() {
 {% endif %}
 
 <div id="vertimus_stats">
-<div><em><a class="icon_button" href="{{ pot_stats.pot_url }}" title="{% trans 'Download POT file' %}">
+<div><em><a class="btn btn-action" href="{{ pot_stats.pot_url }}" title="{% trans 'Download POT file' %}">
       <img src="{{ STATIC_URL }}img/download.png" alt="{% trans 'Download POT file' %}" /></a>
     {{ pot_stats.pot_text }}
   </em></div>
-  <div style="display: inline-block;">
-    <a class="icon_button" href="{{ po_url }}" title="{% trans 'Download PO file' %}"><img src="{{ 
STATIC_URL }}img/download.png" alt="{% trans 'Download PO file' %}"></a>
+  <div style="margin-top: 5px;">
+    <a class="btn btn-action" href="{{ po_url }}" title="{% trans 'Download PO file' %}"><img src="{{ 
STATIC_URL }}img/download.png" alt="{% trans 'Download PO file' %}"></a>
     {% if domain.dtype == 'doc' %}
       <a href="{% url 'stats-quality-check' stats.pk %}" data-target="#modal-container"
          role="button" data-toggle="modal" title="{% trans 'Quality checks' %}">
@@ -113,7 +113,7 @@ $(document).ready(function() {
 
   {% if po_url_reduced %}
   <div style="display: inline-block; margin: 20px 0 5px 0;">
-    <a class="icon_button" href="{{ po_url_reduced }}" title="{% trans "Download PO file" %}"><img src="{{ 
STATIC_URL }}img/download.png" alt="{% trans "Download PO file" %}" /></a>
+    <a class="btn btn-action" href="{{ po_url_reduced }}" title="{% trans "Download PO file" %}"><img 
src="{{ STATIC_URL }}img/download.png" alt="{% trans "Download PO file" %}" /></a>
     {% trans "PO file statistics (reduced):" %}
     <div style="display: inline-block;">
       <span class="help_link"><a href="{% url 'help' 'reduced_po' 1 %}" data-target="#modal-container" 
role="button" data-toggle="modal">
diff --git a/vertimus/forms.py b/vertimus/forms.py
index 35dd9d99..f2f35be2 100644
--- a/vertimus/forms.py
+++ b/vertimus/forms.py
@@ -47,7 +47,7 @@ class ActionForm(forms.Form):
         label=_("Comment"),
         max_length=5000,
         required=False,
-        widget=forms.Textarea(attrs={'rows':8, 'cols':70})
+        widget=forms.Textarea(attrs={'rows':8, 'cols':70, 'class': 'form-control'})
     )
     author = AuthorChoiceField(label=_("Commit author"), queryset=Person.objects.none(), required=False)
     sync_master = forms.BooleanField(


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]