JGirault has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/268842

Change subject: Revert "Revert "Adding postCSS & changing blue.""
......................................................................

Revert "Revert "Adding postCSS & changing blue.""

This reverts commit 80955536c3c03868129646798738d5702194ffd7.

Change-Id: Iacfddfc2feaea527b08a04aa3c8e13833d2d900f
---
A dev/wikipedia.org/assets/css/README.txt
A dev/wikipedia.org/assets/css/style.css
A dev/wikipedia.org/assets/cssnext/README.txt
R dev/wikipedia.org/assets/cssnext/_base.css
R dev/wikipedia.org/assets/cssnext/_buttons.css
R dev/wikipedia.org/assets/cssnext/_forms.css
R dev/wikipedia.org/assets/cssnext/_pab1.css
R dev/wikipedia.org/assets/cssnext/_pab2.css
A dev/wikipedia.org/assets/cssnext/_vars.css
R dev/wikipedia.org/assets/cssnext/_wm-portal.css
A dev/wikipedia.org/assets/cssnext/style.css
M dev/wikipedia.org/index.handlebars
M gulpfile.js
M package.json
M prod/wikipedia.org/index.html
A tests/lint.js
16 files changed, 1,001 insertions(+), 27 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/wikimedia/portals 
refs/changes/42/268842/1

diff --git a/dev/wikipedia.org/assets/css/README.txt 
b/dev/wikipedia.org/assets/css/README.txt
new file mode 100644
index 0000000..c7e71c0
--- /dev/null
+++ b/dev/wikipedia.org/assets/css/README.txt
@@ -0,0 +1,3 @@
+Do not edit the CSS files in this directory.
+They will be overridden during the build process.
+Instead, make your changes to the files in the cssnext folder.
\ No newline at end of file
diff --git a/dev/wikipedia.org/assets/css/style.css 
b/dev/wikipedia.org/assets/css/style.css
new file mode 100644
index 0000000..cdf47bc
--- /dev/null
+++ b/dev/wikipedia.org/assets/css/style.css
@@ -0,0 +1,915 @@
+/**
+* Colors from 
https://phabricator.wikimedia.org/diffusion/WMUI/browse/master/base.less
+*/
+/*!
+Pure v0.6.1-pre
+Copyright 2014 Yahoo! Inc. All rights reserved.
+Licensed under the BSD License.
+https://github.com/yahoo/pure/blob/master/LICENSE.md
+*/
+/*!
+normalize.css v^3.0 | MIT License | git.io/normalize
+Copyright (c) Nicolas Gallagher and Jonathan Neal
+*/
+/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
+/**
+ * 1. Set default font family to sans-serif.
+ * 2. Prevent iOS and IE text size adjust after device orientation change,
+ *    without disabling user zoom.
+ */
+html {
+  font-family: sans-serif; /* 1 */
+  -ms-text-size-adjust: 100%; /* 2 */
+  -webkit-text-size-adjust: 100%; /* 2 */
+}
+/**
+ * Remove default margin.
+ */
+body {
+  margin: 0;
+}
+/* HTML5 display definitions
+   ========================================================================== 
*/
+/**
+ * Correct `block` display not defined for any HTML5 element in IE 8/9.
+ * Correct `block` display not defined for `details` or `summary` in IE 10/11
+ * and Firefox.
+ * Correct `block` display not defined for `main` in IE 11.
+ */
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+menu,
+nav,
+section,
+summary {
+  display: block;
+}
+/**
+ * 1. Correct `inline-block` display not defined in IE 8/9.
+ * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
+ */
+audio,
+canvas,
+progress,
+video {
+  display: inline-block; /* 1 */
+  vertical-align: baseline; /* 2 */
+}
+/**
+ * Prevent modern browsers from displaying `audio` without controls.
+ * Remove excess height in iOS 5 devices.
+ */
+audio:not([controls]) {
+  display: none;
+  height: 0;
+}
+/**
+ * Address `[hidden]` styling not present in IE 8/9/10.
+ * Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.
+ */
+[hidden],
+template {
+  display: none;
+}
+/* Links
+   ========================================================================== 
*/
+/**
+ * Remove the gray background color from active links in IE 10.
+ */
+a {
+  background-color: transparent;
+}
+/**
+ * Improve readability of focused elements when they are also in an
+ * active/hover state.
+ */
+a:active,
+a:hover {
+  outline: 0;
+}
+/* Text-level semantics
+   ========================================================================== 
*/
+/**
+ * Address styling not present in IE 8/9/10/11, Safari, and Chrome.
+ */
+abbr[title] {
+  border-bottom: 1px dotted;
+}
+/**
+ * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
+ */
+b,
+strong {
+  font-weight: bold;
+}
+/**
+ * Address styling not present in Safari and Chrome.
+ */
+dfn {
+  font-style: italic;
+}
+/**
+ * Address variable `h1` font-size and margin within `section` and `article`
+ * contexts in Firefox 4+, Safari, and Chrome.
+ */
+h1 {
+  font-size: 2em;
+  margin: 0.67em 0;
+}
+/**
+ * Address styling not present in IE 8/9.
+ */
+mark {
+  background: #ff0;
+  color: #000;
+}
+/**
+ * Address inconsistent and variable font size in all browsers.
+ */
+small {
+  font-size: 85%; /* CHANGED from 80% to 85% */
+}
+/**
+ * Prevent `sub` and `sup` affecting `line-height` in all browsers.
+ */
+sub,
+sup {
+  font-size: 75%;
+  line-height: 0;
+  position: relative;
+  vertical-align: baseline;
+}
+sup {
+  top: -0.5em;
+}
+sub {
+  bottom: -0.25em;
+}
+/* Embedded content
+   ========================================================================== 
*/
+/**
+ * Remove border when inside `a` element in IE 8/9/10.
+ */
+img {
+  border: 0;
+}
+/**
+ * Correct overflow not hidden in IE 9/10/11.
+ */
+svg:not(:root) {
+  overflow: hidden;
+}
+/* Grouping content
+   ========================================================================== 
*/
+/**
+ * Address margin not present in IE 8/9 and Safari.
+ */
+figure {
+  margin: 1em 40px;
+}
+/**
+ * Address differences between Firefox and other browsers.
+ */
+hr {
+  box-sizing: content-box;
+  height: 0;
+}
+/**
+ * Contain overflow in all browsers.
+ */
+pre {
+  overflow: auto;
+}
+/**
+ * Address odd `em`-unit font size rendering in all browsers.
+ */
+code,
+kbd,
+pre,
+samp {
+  font-family: monospace, monospace;
+  font-size: 1em;
+}
+/* Forms
+   ========================================================================== 
*/
+/**
+ * Known limitation: by default, Chrome and Safari on OS X allow very limited
+ * styling of `select`, unless a `border` property is set.
+ */
+/**
+ * 1. Correct color not being inherited.
+ *    Known issue: affects color of disabled elements.
+ * 2. Correct font properties not being inherited.
+ * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
+ */
+button,
+input,
+optgroup,
+select,
+textarea {
+  color: inherit; /* 1 */
+  font: inherit; /* 2 */
+  margin: 0; /* 3 */
+}
+/**
+ * Address `overflow` set to `hidden` in IE 8/9/10/11.
+ */
+button {
+  overflow: visible;
+}
+/**
+ * Address inconsistent `text-transform` inheritance for `button` and `select`.
+ * All other form control elements do not inherit `text-transform` values.
+ * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
+ * Correct `select` style inheritance in Firefox.
+ */
+button,
+select {
+  text-transform: none;
+}
+/**
+ * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
+ *    and `video` controls.
+ * 2. Correct inability to style clickable `input` types in iOS.
+ * 3. Improve usability and consistency of cursor style between image-type
+ *    `input` and others.
+ */
+button,
+html input[type="button"], /* 1 */
+input[type="reset"],
+input[type="submit"] {
+  -webkit-appearance: button; /* 2 */
+  cursor: pointer; /* 3 */
+}
+/**
+ * Re-set default cursor for disabled elements.
+ */
+button[disabled],
+html input[disabled] {
+  cursor: default;
+}
+/**
+ * Remove inner padding and border in Firefox 4+.
+ */
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+  border: 0;
+  padding: 0;
+}
+/**
+ * Address Firefox 4+ setting `line-height` on `input` using `!important` in
+ * the UA stylesheet.
+ */
+input {
+  line-height: normal;
+}
+/**
+ * It's recommended that you don't attempt to style these elements.
+ * Firefox's implementation doesn't respect box-sizing, padding, or width.
+ *
+ * 1. Address box sizing set to `content-box` in IE 8/9/10.
+ * 2. Remove excess padding in IE 8/9/10.
+ */
+input[type="checkbox"],
+input[type="radio"] {
+  box-sizing: border-box; /* 1 */
+  padding: 0; /* 2 */
+}
+/**
+ * Fix the cursor style for Chrome's increment/decrement buttons. For certain
+ * `font-size` values of the `input`, it causes the cursor style of the
+ * decrement button to change from `default` to `text`.
+ */
+input[type="number"]::-webkit-inner-spin-button,
+input[type="number"]::-webkit-outer-spin-button {
+  height: auto;
+}
+/**
+ * 1. Address `appearance` set to `searchfield` in Safari and Chrome.
+ * 2. Address `box-sizing` set to `border-box` in Safari and Chrome.
+ */
+input[type="search"] {
+  -webkit-appearance: textfield; /* 1 */
+  box-sizing: content-box; /* 2 */
+}
+/**
+ * Remove inner padding and search cancel button in Safari and Chrome on OS X.
+ * Safari (but not Chrome) clips the cancel button when the search input has
+ * padding (and `textfield` appearance).
+ */
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+  -webkit-appearance: none;
+}
+/**
+ * ADDED
+ *
+ * Remove extra space between input borders and input outline.
+ * Needed for Safari.
+ */
+input[type="search"]:focus {
+    outline-offset: -2px;
+}
+/**
+ * Define consistent border, margin, and padding.
+ */
+fieldset {
+  border: 1px solid #c0c0c0;
+  margin: 0 2px;
+  padding: 0.35em 0.625em 0.75em;
+}
+/**
+ * 1. Correct `color` not being inherited in IE 8/9/10/11.
+ * 2. Remove padding so people aren't caught out if they zero out fieldsets.
+ */
+legend {
+  border: 0; /* 1 */
+  padding: 0; /* 2 */
+}
+/**
+ * Remove default vertical scrollbar in IE 8/9/10/11.
+ */
+textarea {
+  overflow: auto;
+}
+/**
+ * Don't inherit the `font-weight` (applied by a rule above).
+ * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
+ */
+optgroup {
+  font-weight: bold;
+}
+/* Tables
+   ========================================================================== 
*/
+/**
+ * Remove most spacing between table cells.
+ */
+table {
+  border-collapse: collapse;
+  border-spacing: 0;
+}
+td,
+th {
+  padding: 0;
+}
+/*csslint important:false*/
+/* ==========================================================================
+   Pure Base Extras
+   ========================================================================== 
*/
+/**
+ * Extra rules that Pure adds on top of Normalize.css
+ */
+/**
+ * Always hide an element when it has the `hidden` HTML attribute.
+ */
+.hidden,
+[hidden] {
+    display: none !important;
+}
+/**
+ * Add this class to an image to make it fit within it's fluid parent wrapper 
while maintaining
+ * aspect ratio.
+ */
+.pure-img {
+    max-width: 100%;
+    height: auto;
+    display: block;
+}
+/**
+ * This is the stylesheet for the [[m:Project portal]] templates.
+ * It should loosely match the style of MediaWiki's Vector theme
+ * for consistency.
+ * Colors from ./skins/Vector/screen.css
+ *
+ * Indention style: 1 tab
+ *
+ */
+body {
+    background-color: white;
+    font: 13px/1.5 sans-serif;
+    margin: 0.3em 0;
+}
+a,
+a:active,
+a:focus {
+    unicode-bidi: embed;
+    white-space: nowrap;
+    outline: 0;
+    color: #165c91;
+    text-decoration: none;
+}
+a:focus {
+    outline: 1px solid #165c91;
+}
+a:hover {
+    text-decoration: underline;
+}
+img {
+    border: none;
+    vertical-align: middle;
+}
+hr {
+    clear: both;
+    height: 0;
+    border: none;
+    border-bottom: 1px solid #aaa;
+    margin: 0.2em 1em;
+}
+/**
+ * Central logo area for wiki-project portals
+ * (e.g. where the globe is on www.wikipedia.org)
+ */
+.central-textlogo {
+    margin: 1em 0 0.3em 0;
+    text-align: center;
+    font-size: 30px;
+    line-height: 110%;
+    font-family: 'Linux Libertine', 'Hoefler Text', Georgia, 'Times New 
Roman', Times, serif;
+    font-weight: normal;
+    padding: 10px 0;
+    /* Crossed W in Linux Libertine */
+    -webkit-font-feature-settings: "ss05";
+    -ms-font-feature-settings: "ss05";
+    font-feature-settings: "ss05";
+}
+.central-featured {
+    position: relative;
+    text-align: center;
+    vertical-align: middle;
+    max-width: 100%;
+    width: 42em;
+    margin: 0 auto;
+    height: 26em;
+}
+.central-featured-logo-wrapper{
+    vertical-align: middle;
+    line-height: 26em;
+}
+.central-featured-lang {
+    position: absolute;
+    width: 12em;
+}
+/* Make entire block clickable, surpress hover underline */
+.central-featured-lang .link-box {
+    display: block;
+    padding: 0;
+    text-decoration: none;
+}
+/* Restore underline on main label */
+.central-featured-lang .link-box:hover strong {
+    text-decoration: underline;
+}
+/* Surpress blue color */
+.central-featured-lang .link-box em,
+.central-featured-lang .link-box small {
+    color: black;
+    text-decoration: none;
+}
+.central-featured-lang strong {
+    font-size: larger;
+}
+.central-featured-lang em {
+    font-style: italic;
+}
+.central-featured-lang .emNonItalicLang {
+    font-style: normal;
+}
+/* Serbo-Croatian is dual-script, so it needs some tweaking to fit in the top 
10 ring. */
+/* .digraphic strong {
+    font-size: 110%;
+    line-height: 1em;
+}
+.digraphic em,
+.digraphic em + br {
+    display: none;
+} */
+.lang1 {
+    top: 0;
+    right: 60%;
+}
+.lang2 {
+    top: 0;
+    left: 60%;
+}
+.lang3 {
+    top: 20%;
+    right: 70%;
+}
+.lang4 {
+    top: 20%;
+    left: 70%;
+}
+.lang5 {
+    top: 40%;
+    right: 72%;
+}
+.lang6 {
+    top: 40%;
+    left: 72%;
+}
+.lang7 {
+    top: 60%;
+    right: 70%;
+}
+.lang8 {
+    top: 60%;
+    left: 70%;
+}
+.lang9 {
+    top: 80%;
+    right: 60%;
+}
+.lang10 {
+    top: 80%;
+    left: 60%;
+}
+/**
+ * Search bar below the central logo area
+ */
+.search-container {
+    float: none;
+    margin: 1em auto 1.5em auto;
+    max-width: 95%;
+    padding: 0.3em;
+    text-align: center;
+    vertical-align: middle;
+    width: 540px;
+}
+.search-form fieldset {
+    background-color: #f9f9f9;
+    border: 1px solid #aaa;
+    margin-top: 0.5em;
+    padding: 0.7em;
+    width: auto;
+}
+.search-form #searchInput {
+    font-size: 1.2em;
+    margin: 0;
+    padding: 0;
+    vertical-align: top;
+}
+.search-form select {
+    margin: 0 0.4em;
+    padding: 0;
+    vertical-align: middle;
+    max-width: 12em;
+    width: 12em; /* otherwise the width is inconsistent between browsers */
+}
+/**
+ * Language lists, bookshelves, etc.
+ */
+.bookshelf-container {
+    width: 100%;
+    overflow: hidden;
+    margin: 2em 0 0.5em 0;
+    font-size: 13px;
+    font-weight: bold;
+    line-height: 20px;
+}
+.bookshelf-container .text {
+    padding: 0 0.5em;
+}
+.bookshelf {
+    display: block;
+    width: 300%;
+    overflow: hidden;
+    position: relative;
+    left: -100%;
+    text-align: center;
+    white-space: nowrap;
+}
+.bookshelf-container .bookend {
+    display: inline-block;
+    vertical-align: top;
+
+}
+.langlist {
+    text-align: center;
+    margin: 0.5em 3em 2.5em 3em;
+}
+.langlist-large {
+    font-size: larger;
+}
+.langlist-tiny {
+    margin: 0.5em 3em 3em 3em;
+}
+.langlist-others {
+    margin: 0 3em 2em 3em;
+    font-weight: bold;
+}
+.otherprojects {
+    font-weight: bold;
+    margin: 1.5em auto;
+    text-align: left;
+    vertical-align: middle;
+    width: 90%;
+}
+.otherprojects-item {
+    float: left;
+    height: 60px;
+    min-width: 12em;
+    width: 24.75%;
+    line-height: 60px;
+}
+.otherprojects-item a {
+    display: block;
+    width: 10em;
+    margin: 0 auto;
+}
+.sprite-project-logos-wrapper{
+    width: 47px;
+    display: -moz-inline-stack; display: inline-block;
+    text-align: center;
+    vertical-align: middle;
+}
+.otherprojects-item .sprite-project-logos{
+    display: -moz-inline-stack; display: inline-block;
+    text-align: center;
+    vertical-align: middle;
+}
+.otherprojects-item .otherprojects-item-name {
+    vertical-align: middle;
+}
+.sprite-project-logos-Wikispecies-logo_sister {
+    background-position: -0px -324px !important;
+    width: 35px !important;
+    height: 40px !important;
+}
+.wm-site-info {
+    clear: both;
+    margin: 2.5em 0 2em 0;
+    text-align: center;
+    padding-top: 1.5em;
+}
+/**
+ * Style for horizontal lists (separator following item).
+ * @note Support for unused tags like <dt> has been stripped out, and the
+ *              dependency on :last-child and JavaScript has been removed in 
favor of
+ *              :before.
+ * @source mediawiki.org/wiki/Snippets/Horizontal_lists
+ * @revision 6 (2014-05-09)
+ * @author [[User:Edokter]]
+ */
+.hlist ul {
+    margin: 0;
+    padding: 0;
+}
+/* Display list items inline */
+.hlist li {
+    display: inline;
+}
+/* Display nested lists inline */
+.hlist ul ul {
+    display: inline;
+}
+/* Generate interpuncts */
+.hlist li:before {
+    content: " · ";
+    font-weight: bold;
+}
+.hlist li:first-child:before {
+    content: none;
+}
+/* Add parentheses around nested lists */
+.hlist li + ul:before {
+    content: "\00a0(";
+}
+.hlist li + ul:after {
+    content: ") ";
+}
+/**
+ * Print stylesheet
+ */
+@media print {
+
+    body {
+        background-color: transparent;
+    }
+
+    a {
+        color: black !important;
+        background: none !important;
+        padding: 0 !important;
+    }
+
+    a:link,
+    a:visited {
+        color: #520;
+        background: transparent;
+    }
+
+    img {
+        border: none;
+    }
+
+}
+@media all and (max-width:480px) {
+    .central-textlogo {
+        line-height: normal;
+        padding: 0;
+        margin: 0;
+        height: 70px;
+        text-align: left;
+        padding-left: 84px;
+        position: relative;
+    }
+    .central-textlogo img {
+        height: 35px;
+        width: auto;
+        margin-top: 22.5px;
+    }
+    .central-featured {
+        width: auto;
+        height: auto;
+        padding-top: 2em;
+        text-align: left;
+        font-size: 0.8em;
+        margin-top: 4em;
+    }
+    .central-featured-logo {
+        right: 0;
+        left: 0.8em;
+        top: -70px;
+        margin-top: -4em;
+        width: 70px;
+        position: absolute;
+    }
+    .central-featured-lang {
+        right: auto;
+        top: auto;
+        position: relative;
+        left: auto;
+        text-align: left;
+        margin-left: 1em;
+        display: block;
+        float: left;
+        width: 40%;
+        height: 5em;
+    }
+    .search-container {
+        margin-top: 0;
+        height: 6em;
+        position: absolute;
+        top: 5em;
+        left: 0;
+        right: 0;
+        max-width: 100%;
+        width: auto;
+        padding: 0;
+        text-align: left;
+    }
+    .search-container label {
+        display: none;
+    }
+    .search-form #searchInput {
+        max-width: 40%;
+        vertical-align:middle;
+    }
+    .search-form #searchLanguage,
+    .search-form .formBtn {
+        max-width: 25%;
+        vertical-align: middle;
+    }
+    form fieldset {
+        margin: 0;
+        border-left: none;
+        border-right: none;
+    }
+    .language-search {
+        display: none;
+    }
+    .bookshelf {
+        width: auto;
+        left: auto;
+        overflow: hidden;
+        text-align: left;
+    }
+    .bookshelf-container .bookend {
+        width: 40px !important;
+    }
+    .bookshelf-container .bookend:last-child {
+        display: none;
+    }
+    .langlist a {
+        word-wrap: break-word;
+        white-space: normal;
+    }
+    .langlist {
+        font-size: 0.7em
+    }
+    .otherprojects-item {
+        width: 50%;
+        text-align: left;
+    }
+    .bookshelf-container,
+    .langlist {
+        margin: 1em 1em 0 1em;
+        text-align: left;
+        width: auto;
+    }
+    hr {
+        margin-top: 0.5em;
+    }
+}
+@media all and (max-width:240px) {
+    .central-featured-lang,
+    .otherprojects-item {
+        width: 100%;
+    }
+    .central-textlogo img {
+        width: 100px;
+        height: auto;
+    }
+}
+@media all and (max-width: 45em) {
+    .otherprojects {
+        width: 100%;
+    }
+    .otherprojects-item {
+        width: 33.33%;
+    }
+}
+@media all and (max-width: 30em) {
+    .otherprojects-item {
+        width: 50%;
+    }
+}
+@media all and (max-width: 20em) {
+    .otherprojects-item {
+        width: 100%;
+    }
+}
+@media (-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 
1.5), (min-resolution: 1.5dppx), (min-resolution: 144dpi) {
+    .bookshelf-container .bookend {
+        background-size: 40px auto;
+    }
+}
+@media (-webkit-min-device-pixel-ratio: 2), (min--moz-device-pixel-ratio: 2), 
(min-resolution: 2dppx), (min-resolution: 192dpi) {
+    .bookshelf-container .bookend {
+        background-size: 40px auto;
+    }
+}
+/* Subpixel borders supported in Gecko, Trident */
+@media (min--moz-device-pixel-ratio: 2), (-webkit-min-device-pixel-ratio: 2), 
(min-resolution: 2dppx), (min-resolution: 192dpi) {
+    #footer,
+    .search-form fieldset {
+        border-width: 0.5px;
+    }
+
+    hr {
+        border-bottom-width: 0.5px;
+    }
+}
+/* Subpixel borders not supported in older releases of Blink, WebKit */
+@supports (-webkit-transform: rotate(30deg)) {
+    #footer,
+    .search-form fieldset {
+        border-width: 1px;
+    }
+
+    hr {
+        border-bottom-width: 1px;
+    }
+}
+/* Gives the button its previous native look */
+.formBtn {
+    background-color: white;
+    border: 1px solid #E4E4E4;
+    border-radius: 4px;
+    border-top: 1px solid #e8e8e8;
+    border-bottom: 1px solid #CECECE;
+    font-size: 11px;
+    padding: 1px 8px;
+    margin-left: .3em;
+    vertical-align: top;
+}
+.formBtn .sprite-bookshelf_icons-search_icon {
+    display: inline-block;
+    vertical-align: middle;
+}
+.formBtn:focus {
+    background-color: #c0c0c0;
+    outline: 0;
+}
+.formBtn:active {
+    background-color: #b0b0b0;
+}
+/* Gives the inputs their previous look */
+.search-container .search-form #searchInput {
+    font-size: 13px;
+    padding: 1px 3px;
+    width: 15em; /* otherwise the width is inconsistent between browsers */
+}
+#langsearch-input {
+    padding: 1px 2px;
+    font-size: 11px;
+    vertical-align: top;
+}
+/*# 
sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIl92YXJzLmNzcyIsIl9iYXNlLmNzcyIsIl93bS1wb3J0YWwuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztFQUVFO0FDRkY7Ozs7O0VBS0U7QUFDRjs7O0VBR0U7QUFDRiw0RUFBNEU7QUFFNUU7Ozs7R0FJRztBQUVIO0VBQ0Usd0JBQXdCLENBQUMsT0FBTztFQUNoQywyQkFBMkIsQ0FBQyxPQUFPO0VBQ25DLCtCQUErQixDQUFDLE9BQU87Q0FDeEM7QUFFRDs7R0FFRztBQUVIO0VBQ0UsVUFBVTtDQUNYO0FBRUQ7Z0ZBQ2dGO0FBRWhGOzs7OztHQUtHO0FBRUg7Ozs7Ozs7Ozs7Ozs7RUFhRSxlQUFlO0NBQ2hCO0FBRUQ7OztHQUdHO0FBRUg7Ozs7RUFJRSxzQkFBc0IsQ0FBQyxPQUFPO0VBQzlCLHlCQUF5QixDQUFDLE9BQU87Q0FDbEM7QUFFRDs7O0dBR0c7QUFFSDtFQUNFLGNBQWM7RUFDZCxVQUFVO0NBQ1g7QUFFRDs7O0dBR0c7QUFFSDs7RUFFRSxjQUFjO0NBQ2Y7QUFFRDtnRkFDZ0Y7QUFFaEY7O0dBRUc7QUFFSDtFQUNFLDhCQUE4QjtDQUMvQjtBQUVEOzs7R0FHRztBQUVIOztFQUVFLFdBQVc7Q0FDWjtBQUVEO2dGQUNnRjtBQUVoRjs7R0FFRztBQUVIO0VBQ0UsMEJBQTBCO0NBQzNCO0FBRUQ7O0dBRUc7QUFFSDs7RUFFRSxrQkFBa0I7Q0FDbkI7QUFFRDs7R0FFRztBQUVIO0VBQ0UsbUJBQW1CO0NBQ3BCO0FBRUQ7OztHQUdHO0FBRUg7RUFDRSxlQUFlO0VBQ2YsaUJBQWlCO0NBQ2xCO0FBRUQ7O0dBRUc7QUFFSDtFQUNFLGlCQUFpQjtFQUNqQixZQUFZO0NBQ2I7QUFFRDs7R0FFRztBQUVIO0VBQ0UsZUFBZSxDQUFDLDZCQUE2QjtDQUM5QztBQUVEOztHQUVHO0FBRUg7O0VBRUUsZUFBZTtFQUNmLGVBQWU7RUFDZixtQkFBbUI7RUFDbkIseUJBQXlCO0NBQzFCO0FBRUQ7RUFDRSxZQUFZO0NBQ2I7QUFFRDtFQUNFLGdCQUFn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QixvQkFBb0I7Q0FDdkI7QUFDRDtJQUNJLHNCQUFzQjtJQUN0Qix1QkFBdUI7Q0FDMUI7QUFDRDtJQUNJLDBCQUEwQjtJQUMxQixXQUFXO0NBQ2Q7QUFDRDtJQUNJLDBCQUEwQjtDQUM3QjtBQUVELDBDQUEwQztBQUMxQztJQUNJLGdCQUFnQjtJQUNoQixpQkFBaUI7SUFDakIsWUFBWSxDQUFDLDBEQUEwRDtDQUMxRTtBQUNEO0lBQ0ksaUJBQWlCO0lBQ2pCLGdCQUFnQjtJQUNoQixvQkFBb0I7Q0FDdkIiLCJmaWxlIjoic3R5bGUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4qIENvbG9ycyBmcm9tIGh0dHBzOi8vcGhhYnJpY2F0b3Iud2lraW1lZGlhLm9yZy9kaWZmdXNpb24vV01VSS9icm93c2UvbWFzdGVyL2Jhc2UubGVzc1xuKi9cbjpyb290IHtcbiAgICAtLWMtcHJpbWFyeTogIzE2NWM5MTtcbn0iLCIvKiFcblB1cmUgdjAuNi4xLXByZVxuQ29weXJpZ2h0IDIwMTQgWWFob28hIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBCU0QgTGljZW5zZS5cbmh0dHBzOi8vZ2l0aHViLmNvbS95YWhvby9wdXJlL2Jsb2IvbWFzdGVyL0xJQ0VOU0UubWRcbiovXG4vKiFcbm5vcm1hbGl6ZS5jc3Mgdl4zLjAgfCBNSVQgTGljZW5zZSB8IGdpdC5pby9ub3JtYWxpemVcbkNvcHlyaWdodCAoYykgTmljb2xhcyBHYWxsYWdoZXIgYW5kIEpvbmF0aGFuIE5lYWxcbiovXG4vKiEgbm9ybWFsaXplLmNzcyB2My4wLjMgfCBNSVQgTGljZW5zZSB8IGdpdGh1Yi5jb20vbmVjb2xhcy9ub3JtYWxpemUuY3NzICovXG5cbi8qKlxuICogMS4gU2V0IGRlZmF1bHQgZm9udCBmYW1pbHkgdG8gc2Fucy1zZXJpZi5cbiAqIDIuIFByZXZlbnQgaU9TIGFuZCBJRSB0ZXh0IHNpemUgYWRqdXN0IGFmdGVyIGRldmljZSBvcmllbnRhdGlvbiBjaGFuZ2UsXG4gKiAgICB3aXRob3V0IGRpc2FibGluZyB1c2VyIHpvb20uXG4gKi9cblxuaHRtbCB7XG4gIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmOyAvKiAxICovXG4gIC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAvKiAyICovXG4gIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLyogMiAqL1xufVxuXG4vKipcbiAqIFJlbW92ZSBkZWZhdWx0IG1hcmdpbi5cbiAqL1xuXG5ib2R5IHtcbiAgbWFyZ2luOiAwO1xufVxuXG4vKiBIVE1MNSBkaXNwbGF5IGRlZmluaXRpb25zXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIENvcnJlY3QgYGJsb2NrYCBkaXNwbGF5IG5vdCBkZWZpbmVkIGZvciBhbnkgSFRNTDUgZWxlbWVudCBpbiBJRSA4LzkuXG4gKiBDb3JyZWN0IGBibG9ja2AgZGlzcGxheSBub3QgZGVmaW5lZCBmb3IgYGRldGFpbHNgIG9yIGBzdW1tYXJ5YCBpbiBJRSAxMC8xMVxuICogYW5kIEZpcmVmb3guXG4gKiBDb3JyZWN0IGBibG9ja2AgZGlzcGxheSBub3QgZGVmaW5lZCBmb3IgYG1haW5gIGluIElFIDExLlxuICovXG5cbmFydGljbGUsXG5hc2lkZSxcbmRldGFpbHMsXG5maWdjYXB0aW9uLFxuZmlndXJlLFxuZm9vdGVyLFxuaGVhZGVyLFxuaGdyb3VwLFxubWFpbixcbm1lbnUsXG5uYXYsXG5zZWN0aW9uLFxuc3VtbWFyeSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4vKipcbiAqIDEuIENvcnJlY3QgYGlubGluZS1ibG9ja2AgZGlzcGxheSBub3QgZGVmaW5lZCBpbiBJRSA4LzkuXG4gKiAyLiBOb3JtYWxpemUgdmVydGljYWwgYWxpZ25tZW50IG9mIGBwcm9ncmVzc2AgaW4gQ2hyb21lLCBGaXJlZm94LCBhbmQgT3BlcmEuXG4gKi9cblxuYXVkaW8sXG5jYW52YXMsXG5wcm9ncmVzcyxcbnZpZGVvIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrOyAvKiAxICovXG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsgLyogMiAqL1xufVxuXG4vKipcbiAqIFByZXZlbnQgbW9kZXJuIGJyb3dzZXJzIGZyb20gZGlzcGxheWluZyBgYXVkaW9gIHdpdGhvdXQgY29udHJvbHMuXG4gKiBSZW1vdmUgZXhjZXNzIGhlaWdodCBpbiBpT1MgNSBkZXZpY2VzLlxuICovXG5cbmF1ZGlvOm5vdChbY29udHJvbHNdKSB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIGhlaWdodDogMDtcbn1cblxuLyoqXG4gKiBBZGRyZXNzIGBbaGlkZGVuXWAgc3R5bGluZyBub3QgcHJlc2VudCBpbiBJRSA4LzkvMTAuXG4gKiBIaWRlIHRoZSBgdGVtcGxhdGVgIGVsZW1lbnQgaW4gSUUgOC85LzEwLzExLCBTYWZhcmksIGFuZCBGaXJlZm94IDwgMjIuXG4gKi9cblxuW2hpZGRlbl0sXG50ZW1wbGF0ZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi8qIExpbmtzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIFJlbW92ZSB0aGUgZ3JheSBiYWNrZ3JvdW5kIGNvbG9yIGZyb20gYWN0aXZlIGxpbmtzIGluIElFIDEwLlxuICovXG5cbmEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLyoqXG4gKiBJbXByb3ZlIHJlYWRhYmlsaXR5IG9mIGZvY3VzZWQgZWxlbWVudHMgd2hlbiB0aGV5IGFyZSBhbHNvIGluIGFuXG4gKiBhY3RpdmUvaG92ZXIgc3RhdGUuXG4gKi9cblxuYTphY3RpdmUsXG5hOmhvdmVyIHtcbiAgb3V0bGluZTogMDtcbn1cblxuLyogVGV4dC1sZXZlbCBzZW1hbnRpY3NcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogQWRkcmVzcyBzdHlsaW5nIG5vdCBwcmVzZW50IGluIElFIDgvOS8xMC8xMSwgU2FmYXJpLCBhbmQgQ2hyb21lLlxuICovXG5cbmFiYnJbdGl0bGVdIHtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IGRvdHRlZDtcbn1cblxuLyoqXG4gKiBBZGRyZXNzIHN0eWxlIHNldCB0byBgYm9sZGVyYCBpbiBGaXJlZm94IDQrLCBTYWZhcmksIGFuZCBDaHJvbWUuXG4gKi9cblxuYixcbnN0cm9uZyB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4vKipcbiAqIEFkZHJlc3Mgc3R5bGluZyBub3QgcHJlc2VudCBpbiBTYWZhcmkgYW5kIENocm9tZS5cbiAqL1xuXG5kZm4ge1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG59XG5cbi8qKlxuICogQWRkcmVzcyB2YXJpYWJsZSBgaDFgIGZvbnQtc2l6ZSBhbmQgbWFyZ2luIHdpdGhpbiBgc2VjdGlvbmAgYW5kIGBhcnRpY2xlYFxuICogY29udGV4dHMgaW4gRmlyZWZveCA0KywgU2FmYXJpLCBhbmQgQ2hyb21lLlxuICovXG5cbmgxIHtcbiAgZm9udC1zaXplOiAyZW07XG4gIG1hcmdpbjogMC42N2VtIDA7XG59XG5cbi8qKlxuICogQWRkcmVzcyBzdHlsaW5nIG5vdCBwcmVzZW50IGluIElFIDgvOS5cbiAqL1xuXG5tYXJrIHtcbiAgYmFja2dyb3VuZDogI2ZmMDtcbiAgY29sb3I6ICMwMDA7XG59XG5cbi8qKlxuICogQWRkcmVzcyBpbmNvbnNpc3RlbnQgYW5kIHZhcmlhYmxlIGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cblxuc21hbGwge1xuICBmb250LXNpemU6IDg1JTsgLyogQ0hBTkdFRCBmcm9tIDgwJSB0byA4NSUgKi9cbn1cblxuLyoqXG4gKiBQcmV2ZW50IGBzdWJgIGFuZCBgc3VwYCBhZmZlY3RpbmcgYGxpbmUtaGVpZ2h0YCBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cblxuc3ViLFxuc3VwIHtcbiAgZm9udC1zaXplOiA3NSU7XG4gIGxpbmUtaGVpZ2h0OiAwO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbn1cblxuc3VwIHtcbiAgdG9wOiAtMC41ZW07XG59XG5cbnN1YiB7XG4gIGJvdHRvbTogLTAuMjVlbTtcbn1cblxuLyogRW1iZWRkZWQgY29udGVudFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBSZW1vdmUgYm9yZGVyIHdoZW4gaW5zaWRlIGBhYCBlbGVtZW50IGluIElFIDgvOS8xMC5cbiAqL1xuXG5pbWcge1xuICBib3JkZXI6IDA7XG59XG5cbi8qKlxuICogQ29ycmVjdCBvdmVyZmxvdyBub3QgaGlkZGVuIGluIElFIDkvMTAvMTEuXG4gKi9cblxuc3ZnOm5vdCg6cm9vdCkge1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4vKiBHcm91cGluZyBjb250ZW50XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIEFkZHJlc3MgbWFyZ2luIG5vdCBwcmVzZW50IGluIElFIDgvOSBhbmQgU2FmYXJpLlxuICovXG5cbmZpZ3VyZSB7XG4gIG1hcmdpbjogMWVtIDQwcHg7XG59XG5cbi8qKlxuICogQWRkcmVzcyBkaWZmZXJlbmNlcyBiZXR3ZWVuIEZpcmVmb3ggYW5kIG90aGVyIGJyb3dzZXJzLlxuICovXG5cbmhyIHtcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7XG4gIGhlaWdodDogMDtcbn1cblxuLyoqXG4gKiBDb250YWluIG92ZXJmbG93IGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5wcmUge1xuICBvdmVyZmxvdzogYXV0bztcbn1cblxuLyoqXG4gKiBBZGRyZXNzIG9kZCBgZW1gLXVuaXQgZm9udCBzaXplIHJlbmRlcmluZyBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cblxuY29kZSxcbmtiZCxcbnByZSxcbnNhbXAge1xuICBmb250LWZhbWlseTogbW9ub3NwYWNlLCBtb25vc3BhY2U7XG4gIGZvbnQtc2l6ZTogMWVtO1xufVxuXG4vKiBGb3Jtc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBLbm93biBsaW1pdGF0aW9uOiBieSBkZWZhdWx0LCBDaHJvbWUgYW5kIFNhZmFyaSBvbiBPUyBYIGFsbG93IHZlcnkgbGltaXRlZFxuICogc3R5bGluZyBvZiBgc2VsZWN0YCwgdW5sZXNzIGEgYGJvcmRlcmAgcHJvcGVydHkgaXMgc2V0LlxuICovXG5cbi8qKlxuICogMS4gQ29ycmVjdCBjb2xvciBub3QgYmVpbmcgaW5oZXJpdGVkLlxuICogICAgS25vd24gaXNzdWU6IGFmZmVjdHMgY29sb3Igb2YgZGlzYWJsZWQgZWxlbWVudHMuXG4gKiAyLiBDb3JyZWN0IGZvbnQgcHJvcGVydGllcyBub3QgYmVpbmcgaW5oZXJpdGVkLlxuICogMy4gQWRkcmVzcyBtYXJnaW5zIHNldCBkaWZmZXJlbnRseSBpbiBGaXJlZm94IDQrLCBTYWZhcmksIGFuZCBDaHJvbWUuXG4gKi9cblxuYnV0dG9uLFxuaW5wdXQsXG5vcHRncm91cCxcbnNlbGVjdCxcbnRleHRhcmVhIHtcbiAgY29sb3I6IGluaGVyaXQ7IC8qIDEgKi9cbiAgZm9udDogaW5oZXJpdDsgLyogMiAqL1xuICBtYXJnaW46IDA7IC8qIDMgKi9cbn1cblxuLyoqXG4gKiBBZGRyZXNzIGBvdmVyZmxvd2Agc2V0IHRvIGBoaWRkZW5gIGluIElFIDgvOS8xMC8xMS5cbiAqL1xuXG5idXR0b24ge1xuICBvdmVyZmxvdzogdmlzaWJsZTtcbn1cblxuLyoqXG4gKiBBZGRyZXNzIGluY29uc2lzdGVudCBgdGV4dC10cmFuc2Zvcm1gIGluaGVyaXRhbmNlIGZvciBgYnV0dG9uYCBhbmQgYHNlbGVjdGAuXG4gKiBBbGwgb3RoZXIgZm9ybSBjb250cm9sIGVsZW1lbnRzIGRvIG5vdCBpbmhlcml0IGB0ZXh0LXRyYW5zZm9ybWAgdmFsdWVzLlxuICogQ29ycmVjdCBgYnV0dG9uYCBzdHlsZSBpbmhlcml0YW5jZSBpbiBGaXJlZm94LCBJRSA4LzkvMTAvMTEsIGFuZCBPcGVyYS5cbiAqIENvcnJlY3QgYHNlbGVjdGAgc3R5bGUgaW5oZXJpdGFuY2UgaW4gRmlyZWZveC5cbiAqL1xuXG5idXR0b24sXG5zZWxlY3Qge1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbn1cblxuLyoqXG4gKiAxLiBBdm9pZCB0aGUgV2ViS2l0IGJ1ZyBpbiBBbmRyb2lkIDQuMC4qIHdoZXJlICgyKSBkZXN0cm95cyBuYXRpdmUgYGF1ZGlvYFxuICogICAgYW5kIGB2aWRlb2AgY29udHJvbHMuXG4gKiAyLiBDb3JyZWN0IGluYWJpbGl0eSB0byBzdHlsZSBjbGlja2FibGUgYGlucHV0YCB0eXBlcyBpbiBpT1MuXG4gKiAzLiBJbXByb3ZlIHVzYWJpbGl0eSBhbmQgY29uc2lzdGVuY3kgb2YgY3Vyc29yIHN0eWxlIGJldHdlZW4gaW1hZ2UtdHlwZVxuICogICAgYGlucHV0YCBhbmQgb3RoZXJzLlxuICovXG5cbmJ1dHRvbixcbmh0bWwgaW5wdXRbdHlwZT1cImJ1dHRvblwiXSwgLyogMSAqL1xuaW5wdXRbdHlwZT1cInJlc2V0XCJdLFxuaW5wdXRbdHlwZT1cInN1Ym1pdFwiXSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOyAvKiAyICovXG4gIGN1cnNvcjogcG9pbnRlcjsgLyogMyAqL1xufVxuXG4vKipcbiAqIFJlLXNldCBkZWZhdWx0IGN1cnNvciBmb3IgZGlzYWJsZWQgZWxlbWVudHMuXG4gKi9cblxuYnV0dG9uW2Rpc2FibGVkXSxcbmh0bWwgaW5wdXRbZGlzYWJsZWRdIHtcbiAgY3Vyc29yOiBkZWZhdWx0O1xufVxuXG4vKipcbiAqIFJlbW92ZSBpbm5lciBwYWRkaW5nIGFuZCBib3JkZXIgaW4gRmlyZWZveCA0Ky5cbiAqL1xuXG5idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsXG5pbnB1dDo6LW1vei1mb2N1cy1pbm5lciB7XG4gIGJvcmRlcjogMDtcbiAgcGFkZGluZzogMDtcbn1cblxuLyoqXG4gKiBBZGRyZXNzIEZpcmVmb3ggNCsgc2V0dGluZyBgbGluZS1oZWlnaHRgIG9uIGBpbnB1dGAgdXNpbmcgYCFpbXBvcnRhbnRgIGluXG4gKiB0aGUgVUEgc3R5bGVzaGVldC5cbiAqL1xuXG5pbnB1dCB7XG4gIGxpbmUtaGVpZ2h0OiBub3JtYWw7XG59XG5cbi8qKlxuICogSXQncyByZWNvbW1lbmRlZCB0aGF0IHlvdSBkb24ndCBhdHRlbXB0IHRvIHN0eWxlIHRoZXNlIGVsZW1lbnRzLlxuICogRmlyZWZveCdzIGltcGxlbWVudGF0aW9uIGRvZXNuJ3QgcmVzcGVjdCBib3gtc2l6aW5nLCBwYWRkaW5nLCBvciB3aWR0aC5cbiAqXG4gKiAxLiBBZGRyZXNzIGJveCBzaXppbmcgc2V0IHRvIGBjb250ZW50LWJveGAgaW4gSUUgOC85LzEwLlxuICogMi4gUmVtb3ZlIGV4Y2VzcyBwYWRkaW5nIGluIElFIDgvOS8xMC5cbiAqL1xuXG5pbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0sXG5pbnB1dFt0eXBlPVwicmFkaW9cIl0ge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94OyAvKiAxICovXG4gIHBhZGRpbmc6IDA7IC8qIDIgKi9cbn1cblxuLyoqXG4gKiBGaXggdGhlIGN1cnNvciBzdHlsZSBmb3IgQ2hyb21lJ3MgaW5jcmVtZW50L2RlY3JlbWVudCBidXR0b25zLiBGb3IgY2VydGFpblxuICogYGZvbnQtc2l6ZWAgdmFsdWVzIG9mIHRoZSBgaW5wdXRgLCBpdCBjYXVzZXMgdGhlIGN1cnNvciBzdHlsZSBvZiB0aGVcbiAqIGRlY3JlbWVudCBidXR0b24gdG8gY2hhbmdlIGZyb20gYGRlZmF1bHRgIHRvIGB0ZXh0YC5cbiAqL1xuXG5pbnB1dFt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFxuaW5wdXRbdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiB7XG4gIGhlaWdodDogYXV0bztcbn1cblxuLyoqXG4gKiAxLiBBZGRyZXNzIGBhcHBlYXJhbmNlYCBzZXQgdG8gYHNlYXJjaGZpZWxkYCBpbiBTYWZhcmkgYW5kIENocm9tZS5cbiAqIDIuIEFkZHJlc3MgYGJveC1zaXppbmdgIHNldCB0byBgYm9yZGVyLWJveGAgaW4gU2FmYXJpIGFuZCBDaHJvbWUuXG4gKi9cblxuaW5wdXRbdHlwZT1cInNlYXJjaFwiXSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogdGV4dGZpZWxkOyAvKiAxICovXG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94OyAvKiAyICovXG59XG5cbi8qKlxuICogUmVtb3ZlIGlubmVyIHBhZGRpbmcgYW5kIHNlYXJjaCBjYW5jZWwgYnV0dG9uIGluIFNhZmFyaSBhbmQgQ2hyb21lIG9uIE9TIFguXG4gKiBTYWZhcmkgKGJ1dCBub3QgQ2hyb21lKSBjbGlwcyB0aGUgY2FuY2VsIGJ1dHRvbiB3aGVuIHRoZSBzZWFyY2ggaW5wdXQgaGFzXG4gKiBwYWRkaW5nIChhbmQgYHRleHRmaWVsZGAgYXBwZWFyYW5jZSkuXG4gKi9cblxuaW5wdXRbdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbixcbmlucHV0W3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG59XG5cbi8qKlxuICogQURERURcbiAqXG4gKiBSZW1vdmUgZXh0cmEgc3BhY2UgYmV0d2VlbiBpbnB1dCBib3JkZXJzIGFuZCBpbnB1dCBvdXRsaW5lLlxuICogTmVlZGVkIGZvciBTYWZhcmkuXG4gKi9cbmlucHV0W3R5cGU9XCJzZWFyY2hcIl06Zm9jdXMge1xuICAgIG91dGxpbmUtb2Zmc2V0OiAtMnB4O1xufVxuXG4vKipcbiAqIERlZmluZSBjb25zaXN0ZW50IGJvcmRlciwgbWFyZ2luLCBhbmQgcGFkZGluZy5cbiAqL1xuXG5maWVsZHNldCB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNjMGMwYzA7XG4gIG1hcmdpbjogMCAycHg7XG4gIHBhZGRpbmc6IDAuMzVlbSAwLjYyNWVtIDAuNzVlbTtcbn1cblxuLyoqXG4gKiAxLiBDb3JyZWN0IGBjb2xvcmAgbm90IGJlaW5nIGluaGVyaXRlZCBpbiBJRSA4LzkvMTAvMTEuXG4gKiAyLiBSZW1vdmUgcGFkZGluZyBzbyBwZW9wbGUgYXJlbid0IGNhdWdodCBvdXQgaWYgdGhleSB6ZXJvIG91dCBmaWVsZHNldHMuXG4gKi9cblxubGVnZW5kIHtcbiAgYm9yZGVyOiAwOyAvKiAxICovXG4gIHBhZGRpbmc6IDA7IC8qIDIgKi9cbn1cblxuLyoqXG4gKiBSZW1vdmUgZGVmYXVsdCB2ZXJ0aWNhbCBzY3JvbGxiYXIgaW4gSUUgOC85LzEwLzExLlxuICovXG5cbnRleHRhcmVhIHtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG5cbi8qKlxuICogRG9uJ3QgaW5oZXJpdCB0aGUgYGZvbnQtd2VpZ2h0YCAoYXBwbGllZCBieSBhIHJ1bGUgYWJvdmUpLlxuICogTk9URTogdGhlIGRlZmF1bHQgY2Fubm90IHNhZmVseSBiZSBjaGFuZ2VkIGluIENocm9tZSBhbmQgU2FmYXJpIG9uIE9TIFguXG4gKi9cblxub3B0Z3JvdXAge1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuLyogVGFibGVzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIFJlbW92ZSBtb3N0IHNwYWNpbmcgYmV0d2VlbiB0YWJsZSBjZWxscy5cbiAqL1xuXG50YWJsZSB7XG4gIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG4gIGJvcmRlci1zcGFjaW5nOiAwO1xufVxuXG50ZCxcbnRoIHtcbiAgcGFkZGluZzogMDtcbn1cblxuLypjc3NsaW50IGltcG9ydGFudDpmYWxzZSovXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBQdXJlIEJhc2UgRXh0cmFzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIEV4dHJhIHJ1bGVzIHRoYXQgUHVyZSBhZGRzIG9uIHRvcCBvZiBOb3JtYWxpemUuY3NzXG4gKi9cblxuLyoqXG4gKiBBbHdheXMgaGlkZSBhbiBlbGVtZW50IHdoZW4gaXQgaGFzIHRoZSBgaGlkZGVuYCBIVE1MIGF0dHJpYnV0ZS5cbiAqL1xuXG4uaGlkZGVuLFxuW2hpZGRlbl0ge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLyoqXG4gKiBBZGQgdGhpcyBjbGFzcyB0byBhbiBpbWFnZSB0byBtYWtlIGl0IGZpdCB3aXRoaW4gaXQncyBmbHVpZCBwYXJlbnQgd3JhcHBlciB3aGlsZSBtYWludGFpbmluZ1xuICogYXNwZWN0IHJhdGlvLlxuICovXG4ucHVyZS1pbWcge1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IGF1dG87XG4gICAgZGlzcGxheTogYmxvY2s7XG59XG4iLCIvKipcbiAqIFRoaXMgaXMgdGhlIHN0eWxlc2hlZXQgZm9yIHRoZSBbW206UHJvamVjdCBwb3J0YWxdXSB0ZW1wbGF0ZXMuXG4gKiBJdCBzaG91bGQgbG9vc2VseSBtYXRjaCB0aGUgc3R5bGUgb2YgTWVkaWFXaWtpJ3MgVmVjdG9yIHRoZW1lXG4gKiBmb3IgY29uc2lzdGVuY3kuXG4gKiBDb2xvcnMgZnJvbSAuL3NraW5zL1ZlY3Rvci9zY3JlZW4uY3NzXG4gKlxuICogSW5kZW50aW9uIHN0eWxlOiAxIHRhYlxuICpcbiAqL1xuXG5ib2R5IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgICBmb250OiAxM3B4LzEuNSBzYW5zLXNlcmlmO1xuICAgIG1hcmdpbjogMC4zZW0gMDtcbn1cblxuYSxcbmE6YWN0aXZlLFxuYTpmb2N1cyB7XG4gICAgdW5pY29kZS1iaWRpOiBlbWJlZDtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIG91dGxpbmU6IDA7XG4gICAgY29sb3I6IHZhcigtLWMtcHJpbWFyeSk7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuYTpmb2N1cyB7XG4gICAgb3V0bGluZTogMXB4IHNvbGlkIHZhcigtLWMtcHJpbWFyeSk7XG59XG5cbmE6aG92ZXIge1xuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xufVxuXG5pbWcge1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuXG5ociB7XG4gICAgY2xlYXI6IGJvdGg7XG4gICAgaGVpZ2h0OiAwO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2FhYTtcbiAgICBtYXJnaW46IDAuMmVtIDFlbTtcbn1cblxuLyoqXG4gKiBDZW50cmFsIGxvZ28gYXJlYSBmb3Igd2lraS1wcm9qZWN0IHBvcnRhbHNcbiAqIChlLmcuIHdoZXJlIHRoZSBnbG9iZSBpcyBvbiB3d3cud2lraXBlZGlhLm9yZylcbiAqL1xuLmNlbnRyYWwtdGV4dGxvZ28ge1xuICAgIG1hcmdpbjogMWVtIDAgMC4zZW0gMDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgZm9udC1zaXplOiAzMHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxMTAlO1xuICAgIGZvbnQtZmFtaWx5OiAnTGludXggTGliZXJ0aW5lJywgJ0hvZWZsZXIgVGV4dCcsIEdlb3JnaWEsICdUaW1lcyBOZXcgUm9tYW4nLCBUaW1lcywgc2VyaWY7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBwYWRkaW5nOiAxMHB4IDA7XG4gICAgLyogQ3Jvc3NlZCBXIGluIExpbnV4IExpYmVydGluZSAqL1xuICAgIC1tb3otZm9udC1mZWF0dXJlLXNldHRpbmdzOiBcInNzMDU9MVwiOyAtbW96LWZvbnQtZmVhdHVyZS1zZXR0aW5nczogXCJzczA1XCI7XG4gICAgLXdlYmtpdC1mb250LWZlYXR1cmUtc2V0dGluZ3M6IFwic3MwNVwiO1xuICAgIC1tcy1mb250LWZlYXR1cmUtc2V0dGluZ3M6IFwic3MwNVwiO1xuICAgIGZvbnQtZmVhdHVyZS1zZXR0aW5nczogXCJzczA1XCI7XG59XG5cbi5jZW50cmFsLWZlYXR1cmVkIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIHdpZHRoOiA0MmVtO1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIGhlaWdodDogMjZlbTtcbn1cblxuLmNlbnRyYWwtZmVhdHVyZWQtbG9nby13cmFwcGVye1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgbGluZS1oZWlnaHQ6IDI2ZW07XG59XG5cbi5jZW50cmFsLWZlYXR1cmVkLWxhbmcge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aWR0aDogMTJlbTtcbn1cblxuLyogTWFrZSBlbnRpcmUgYmxvY2sgY2xpY2thYmxlLCBzdXJwcmVzcyBob3ZlciB1bmRlcmxpbmUgKi9cbi5jZW50cmFsLWZlYXR1cmVkLWxhbmcgLmxpbmstYm94IHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwYWRkaW5nOiAwO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cbi8qIFJlc3RvcmUgdW5kZXJsaW5lIG9uIG1haW4gbGFiZWwgKi9cbi5jZW50cmFsLWZlYXR1cmVkLWxhbmcgLmxpbmstYm94OmhvdmVyIHN0cm9uZyB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG59XG4vKiBTdXJwcmVzcyBibHVlIGNvbG9yICovXG4uY2VudHJhbC1mZWF0dXJlZC1sYW5nIC5saW5rLWJveCBlbSxcbi5jZW50cmFsLWZlYXR1cmVkLWxhbmcgLmxpbmstYm94IHNtYWxsIHtcbiAgICBjb2xvcjogYmxhY2s7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuXG4uY2VudHJhbC1mZWF0dXJlZC1sYW5nIHN0cm9uZyB7XG4gICAgZm9udC1zaXplOiBsYXJnZXI7XG59XG5cbi5jZW50cmFsLWZlYXR1cmVkLWxhbmcgZW0ge1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cblxuLmNlbnRyYWwtZmVhdHVyZWQtbGFuZyAuZW1Ob25JdGFsaWNMYW5nIHtcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG59XG5cbi8qIFNlcmJvLUNyb2F0aWFuIGlzIGR1YWwtc2NyaXB0LCBzbyBpdCBuZWVkcyBzb21lIHR3ZWFraW5nIHRvIGZpdCBpbiB0aGUgdG9wIDEwIHJpbmcuICovXG4vKiAuZGlncmFwaGljIHN0cm9uZyB7XG4gICAgZm9udC1zaXplOiAxMTAlO1xuICAgIGxpbmUtaGVpZ2h0OiAxZW07XG59XG4uZGlncmFwaGljIGVtLFxuLmRpZ3JhcGhpYyBlbSArIGJyIHtcbiAgICBkaXNwbGF5OiBub25lO1xufSAqL1xuXG4ubGFuZzEge1xuICAgIHRvcDogMDtcbiAgICByaWdodDogNjAlO1xufVxuLmxhbmcyIHtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogNjAlO1xufVxuLmxhbmczIHtcbiAgICB0b3A6IDIwJTtcbiAgICByaWdodDogNzAlO1xufVxuLmxhbmc0IHtcbiAgICB0b3A6IDIwJTtcbiAgICBsZWZ0OiA3MCU7XG59XG4ubGFuZzUge1xuICAgIHRvcDogNDAlO1xuICAgIHJpZ2h0OiA3MiU7XG59XG4ubGFuZzYge1xuICAgIHRvcDogNDAlO1xuICAgIGxlZnQ6IDcyJTtcbn1cbi5sYW5nNyB7XG4gICAgdG9wOiA2MCU7XG4gICAgcmlnaHQ6IDcwJTtcbn1cbi5sYW5nOCB7XG4gICAgdG9wOiA2MCU7XG4gICAgbGVmdDogNzAlO1xufVxuLmxhbmc5IHtcbiAgICB0b3A6IDgwJTtcbiAgICByaWdodDogNjAlO1xufVxuLmxhbmcxMCB7XG4gICAgdG9wOiA4MCU7XG4gICAgbGVmdDogNjAlO1xufVxuXG4vKipcbiAqIFNlYXJjaCBiYXIgYmVsb3cgdGhlIGNlbnRyYWwgbG9nbyBhcmVhXG4gKi9cbi5zZWFyY2gtY29udGFpbmVyIHtcbiAgICBmbG9hdDogbm9uZTtcbiAgICBtYXJnaW46IDFlbSBhdXRvIDEuNWVtIGF1dG87XG4gICAgbWF4LXdpZHRoOiA5NSU7XG4gICAgcGFkZGluZzogMC4zZW07XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgd2lkdGg6IDU0MHB4O1xufVxuXG4uc2VhcmNoLWZvcm0gZmllbGRzZXQge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmOWY5Zjk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2FhYTtcbiAgICBtYXJnaW4tdG9wOiAwLjVlbTtcbiAgICBwYWRkaW5nOiAwLjdlbTtcbiAgICB3aWR0aDogYXV0bztcbn1cblxuLnNlYXJjaC1mb3JtICNzZWFyY2hJbnB1dCB7XG4gICAgZm9udC1zaXplOiAxLjJlbTtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xufVxuXG4uc2VhcmNoLWZvcm0gc2VsZWN0IHtcbiAgICBtYXJnaW46IDAgMC40ZW07XG4gICAgcGFkZGluZzogMDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIG1heC13aWR0aDogMTJlbTtcbiAgICB3aWR0aDogMTJlbTsgLyogb3RoZXJ3aXNlIHRoZSB3aWR0aCBpcyBpbmNvbnNpc3RlbnQgYmV0d2VlbiBicm93c2VycyAqL1xufVxuXG4vKipcbiAqIExhbmd1YWdlIGxpc3RzLCBib29rc2hlbHZlcywgZXRjLlxuICovXG4uYm9va3NoZWxmLWNvbnRhaW5lciB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBtYXJnaW46IDJlbSAwIDAuNWVtIDA7XG4gICAgZm9udC1zaXplOiAxM3B4O1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGxpbmUtaGVpZ2h0OiAyMHB4O1xufVxuXG4uYm9va3NoZWxmLWNvbnRhaW5lciAudGV4dCB7XG4gICAgcGFkZGluZzogMCAwLjVlbTtcbn1cblxuLmJvb2tzaGVsZiB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDMwMCU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbGVmdDogLTEwMCU7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi5ib29rc2hlbGYtY29udGFpbmVyIC5ib29rZW5kIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcblxufVxuXG4ubGFuZ2xpc3Qge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBtYXJnaW46IDAuNWVtIDNlbSAyLjVlbSAzZW07XG59XG5cbi5sYW5nbGlzdC1sYXJnZSB7XG4gICAgZm9udC1zaXplOiBsYXJnZXI7XG59XG5cbi5sYW5nbGlzdC10aW55IHtcbiAgICBtYXJnaW46IDAuNWVtIDNlbSAzZW0gM2VtO1xufVxuXG4ubGFuZ2xpc3Qtb3RoZXJzIHtcbiAgICBtYXJnaW46IDAgM2VtIDJlbSAzZW07XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi5vdGhlcnByb2plY3RzIHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBtYXJnaW46IDEuNWVtIGF1dG87XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIHdpZHRoOiA5MCU7XG59XG5cbi5vdGhlcnByb2plY3RzLWl0ZW0ge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIGhlaWdodDogNjBweDtcbiAgICBtaW4td2lkdGg6IDEyZW07XG4gICAgd2lkdGg6IDI0Ljc1JTtcbiAgICBsaW5lLWhlaWdodDogNjBweDtcbn1cblxuLm90aGVycHJvamVjdHMtaXRlbSBhIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogMTBlbTtcbiAgICBtYXJnaW46IDAgYXV0bztcbn1cblxuLnNwcml0ZS1wcm9qZWN0LWxvZ29zLXdyYXBwZXJ7XG4gICAgd2lkdGg6IDQ3cHg7XG4gICAgZGlzcGxheTogLW1vei1pbmxpbmUtc3RhY2s7IGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cblxuLm90aGVycHJvamVjdHMtaXRlbSAuc3ByaXRlLXByb2plY3QtbG9nb3N7XG4gICAgZGlzcGxheTogLW1vei1pbmxpbmUtc3RhY2s7IGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cbi5vdGhlcnByb2plY3RzLWl0ZW0gLm90aGVycHJvamVjdHMtaXRlbS1uYW1lIHtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuXG4uc3ByaXRlLXByb2plY3QtbG9nb3MtV2lraXNwZWNpZXMtbG9nb19zaXN0ZXIge1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IC0wcHggLTMyNHB4ICFpbXBvcnRhbnQ7XG4gICAgd2lkdGg6IDM1cHggIWltcG9ydGFudDtcbiAgICBoZWlnaHQ6IDQwcHggIWltcG9ydGFudDtcbn1cblxuLndtLXNpdGUtaW5mbyB7XG4gICAgY2xlYXI6IGJvdGg7XG4gICAgbWFyZ2luOiAyLjVlbSAwIDJlbSAwO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBwYWRkaW5nLXRvcDogMS41ZW07XG59XG5cbi8qKlxuICogU3R5bGUgZm9yIGhvcml6b250YWwgbGlzdHMgKHNlcGFyYXRvciBmb2xsb3dpbmcgaXRlbSkuXG4gKiBAbm90ZSBTdXBwb3J0IGZvciB1bnVzZWQgdGFncyBsaWtlIDxkdD4gaGFzIGJlZW4gc3RyaXBwZWQgb3V0LCBhbmQgdGhlXG4gKlx0XHQgZGVwZW5kZW5jeSBvbiA6bGFzdC1jaGlsZCBhbmQgSmF2YVNjcmlwdCBoYXMgYmVlbiByZW1vdmVkIGluIGZhdm9yIG9mXG4gKlx0XHQgOmJlZm9yZS5cbiAqIEBzb3VyY2UgbWVkaWF3aWtpLm9yZy93aWtpL1NuaXBwZXRzL0hvcml6b250YWxfbGlzdHNcbiAqIEByZXZpc2lvbiA2ICgyMDE0LTA1LTA5KVxuICogQGF1dGhvciBbW1VzZXI6RWRva3Rlcl1dXG4gKi9cbi5obGlzdCB1bCB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG59XG4vKiBEaXNwbGF5IGxpc3QgaXRlbXMgaW5saW5lICovXG4uaGxpc3QgbGkge1xuICAgIGRpc3BsYXk6IGlubGluZTtcbn1cbi8qIERpc3BsYXkgbmVzdGVkIGxpc3RzIGlubGluZSAqL1xuLmhsaXN0IHVsIHVsIHtcbiAgICBkaXNwbGF5OiBpbmxpbmU7XG59XG4vKiBHZW5lcmF0ZSBpbnRlcnB1bmN0cyAqL1xuLmhsaXN0IGxpOmJlZm9yZSB7XG4gICAgY29udGVudDogXCIgwrcgXCI7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG4uaGxpc3QgbGk6Zmlyc3QtY2hpbGQ6YmVmb3JlIHtcbiAgICBjb250ZW50OiBub25lO1xufVxuLyogQWRkIHBhcmVudGhlc2VzIGFyb3VuZCBuZXN0ZWQgbGlzdHMgKi9cbi5obGlzdCBsaSArIHVsOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcXDAwYTAoXCI7XG59XG4uaGxpc3QgbGkgKyB1bDphZnRlciB7XG4gICAgY29udGVudDogXCIpIFwiO1xufVxuXG4vKipcbiAqIFByaW50IHN0eWxlc2hlZXRcbiAqL1xuQG1lZGlhIHByaW50IHtcblxuICAgIGJvZHkge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB9XG5cbiAgICBhIHtcbiAgICAgICAgY29sb3I6IGJsYWNrICFpbXBvcnRhbnQ7XG4gICAgICAgIGJhY2tncm91bmQ6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIGE6bGluayxcbiAgICBhOnZpc2l0ZWQge1xuICAgICAgICBjb2xvcjogIzUyMDtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgfVxuXG4gICAgaW1nIHtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgIH1cblxufVxuXG5AbWVkaWEgYWxsIGFuZCAobWF4LXdpZHRoOjQ4MHB4KSB7XG4gICAgLmNlbnRyYWwtdGV4dGxvZ28ge1xuICAgICAgICBsaW5lLWhlaWdodDogbm9ybWFsO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGhlaWdodDogNzBweDtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiA4NHB4O1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgfVxuICAgIC5jZW50cmFsLXRleHRsb2dvIGltZyB7XG4gICAgICAgIGhlaWdodDogMzVweDtcbiAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgIG1hcmdpbi10b3A6IDIyLjVweDtcbiAgICB9XG4gICAgLmNlbnRyYWwtZmVhdHVyZWQge1xuICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICBwYWRkaW5nLXRvcDogMmVtO1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICBmb250LXNpemU6IDAuOGVtO1xuICAgICAgICBtYXJnaW4tdG9wOiA0ZW07XG4gICAgfVxuICAgIC5jZW50cmFsLWZlYXR1cmVkLWxvZ28ge1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgbGVmdDogMC44ZW07XG4gICAgICAgIHRvcDogLTcwcHg7XG4gICAgICAgIG1hcmdpbi10b3A6IC00ZW07XG4gICAgICAgIHdpZHRoOiA3MHB4O1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgfVxuICAgIC5jZW50cmFsLWZlYXR1cmVkLWxhbmcge1xuICAgICAgICByaWdodDogYXV0bztcbiAgICAgICAgdG9wOiBhdXRvO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGxlZnQ6IGF1dG87XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAxZW07XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgd2lkdGg6IDQwJTtcbiAgICAgICAgaGVpZ2h0OiA1ZW07XG4gICAgfVxuICAgIC5zZWFyY2gtY29udGFpbmVyIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgICAgaGVpZ2h0OiA2ZW07XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiA1ZW07XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgIH1cbiAgICAuc2VhcmNoLWNvbnRhaW5lciBsYWJlbCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICAgIC5zZWFyY2gtZm9ybSAjc2VhcmNoSW5wdXQge1xuICAgICAgICBtYXgtd2lkdGg6IDQwJTtcbiAgICAgICAgdmVydGljYWwtYWxpZ246bWlkZGxlO1xuICAgIH1cbiAgICAuc2VhcmNoLWZvcm0gI3NlYXJjaExhbmd1YWdlLFxuICAgIC5zZWFyY2gtZm9ybSAuZm9ybUJ0biB7XG4gICAgICAgIG1heC13aWR0aDogMjUlO1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIH1cbiAgICBmb3JtIGZpZWxkc2V0IHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBib3JkZXItbGVmdDogbm9uZTtcbiAgICAgICAgYm9yZGVyLXJpZ2h0OiBub25lO1xuICAgIH1cbiAgICAubGFuZ3VhZ2Utc2VhcmNoIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gICAgLmJvb2tzaGVsZiB7XG4gICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICBsZWZ0OiBhdXRvO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgIH1cbiAgICAuYm9va3NoZWxmLWNvbnRhaW5lciAuYm9va2VuZCB7XG4gICAgICAgIHdpZHRoOiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgfVxuICAgIC5ib29rc2hlbGYtY29udGFpbmVyIC5ib29rZW5kOmxhc3QtY2hpbGQge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgICAubGFuZ2xpc3QgYSB7XG4gICAgICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcbiAgICB9XG4gICAgLmxhbmdsaXN0IHtcbiAgICAgICAgZm9udC1zaXplOiAwLjdlbVxuICAgIH1cbiAgICAub3RoZXJwcm9qZWN0cy1pdGVtIHtcbiAgICAgICAgd2lkdGg6IDUwJTtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICB9XG4gICAgLmJvb2tzaGVsZi1jb250YWluZXIsXG4gICAgLmxhbmdsaXN0IHtcbiAgICAgICAgbWFyZ2luOiAxZW0gMWVtIDAgMWVtO1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICB3aWR0aDogYXV0bztcbiAgICB9XG4gICAgaHIge1xuICAgICAgICBtYXJnaW4tdG9wOiAwLjVlbTtcbiAgICB9XG59XG5cbkBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6MjQwcHgpIHtcbiAgICAuY2VudHJhbC1mZWF0dXJlZC1sYW5nLFxuICAgIC5vdGhlcnByb2plY3RzLWl0ZW0ge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG4gICAgLmNlbnRyYWwtdGV4dGxvZ28gaW1nIHtcbiAgICAgICAgd2lkdGg6IDEwMHB4O1xuICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgfVxufVxuXG5AbWVkaWEgYWxsIGFuZCAobWF4LXdpZHRoOiA0NWVtKSB7XG4gICAgLm90aGVycHJvamVjdHMge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG4gICAgLm90aGVycHJvamVjdHMtaXRlbSB7XG4gICAgICAgIHdpZHRoOiAzMy4zMyU7XG4gICAgfVxufVxuQG1lZGlhIGFsbCBhbmQgKG1heC13aWR0aDogMzBlbSkge1xuICAgIC5vdGhlcnByb2plY3RzLWl0ZW0ge1xuICAgICAgICB3aWR0aDogNTAlO1xuICAgIH1cbn1cbkBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6IDIwZW0pIHtcbiAgICAub3RoZXJwcm9qZWN0cy1pdGVtIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxufVxuXG5AbWVkaWEgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogMS41KSwgKG1pbi0tbW96LWRldmljZS1waXhlbC1yYXRpbzogMS41KSwgKC1vLW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDMvMiksIChtaW4tcmVzb2x1dGlvbjogMS41ZHBweCksIChtaW4tcmVzb2x1dGlvbjogMTQ0ZHBpKSB7XG4gICAgLmJvb2tzaGVsZi1jb250YWluZXIgLmJvb2tlbmQge1xuICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IDQwcHggYXV0bztcbiAgICB9XG59XG5cbkBtZWRpYSAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyKSwgKG1pbi0tbW96LWRldmljZS1waXhlbC1yYXRpbzogMiksICgtby1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyKSwgKG1pbi1yZXNvbHV0aW9uOiAyZHBweCksIChtaW4tcmVzb2x1dGlvbjogMTkyZHBpKSB7XG4gICAgLmJvb2tzaGVsZi1jb250YWluZXIgLmJvb2tlbmQge1xuICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IDQwcHggYXV0bztcbiAgICB9XG59XG5cbi8qIFN1YnBpeGVsIGJvcmRlcnMgc3VwcG9ydGVkIGluIEdlY2tvLCBUcmlkZW50ICovXG5AbWVkaWEgKG1pbi0tbW96LWRldmljZS1waXhlbC1yYXRpbzogMiksIChtaW4tcmVzb2x1dGlvbjogMmRwcHgpLCAobWluLXJlc29sdXRpb246IDE5MmRwaSkge1xuICAgICNmb290ZXIsXG4gICAgLnNlYXJjaC1mb3JtIGZpZWxkc2V0IHtcbiAgICAgICAgYm9yZGVyLXdpZHRoOiAwLjVweDtcbiAgICB9XG5cbiAgICBociB7XG4gICAgICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDAuNXB4O1xuICAgIH1cbn1cblxuLyogU3VicGl4ZWwgYm9yZGVycyBub3Qgc3VwcG9ydGVkIGluIG9sZGVyIHJlbGVhc2VzIG9mIEJsaW5rLCBXZWJLaXQgKi9cbkBzdXBwb3J0cyAoLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzMGRlZykpIHtcbiAgICAjZm9vdGVyLFxuICAgIC5zZWFyY2gtZm9ybSBmaWVsZHNldCB7XG4gICAgICAgIGJvcmRlci13aWR0aDogMXB4O1xuICAgIH1cblxuICAgIGhyIHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMXB4O1xuICAgIH1cbn1cblxuLyogR2l2ZXMgdGhlIGJ1dHRvbiBpdHMgcHJldmlvdXMgbmF0aXZlIGxvb2sgKi9cbi5mb3JtQnRuIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjRTRFNEU0O1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2U4ZThlODtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0NFQ0VDRTtcbiAgICBmb250LXNpemU6IDExcHg7XG4gICAgcGFkZGluZzogMXB4IDhweDtcbiAgICBtYXJnaW4tbGVmdDogLjNlbTtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xufVxuLmZvcm1CdG4gLnNwcml0ZS1ib29rc2hlbGZfaWNvbnMtc2VhcmNoX2ljb24ge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuLmZvcm1CdG46Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNjMGMwYzA7XG4gICAgb3V0bGluZTogMDtcbn1cbi5mb3JtQnRuOmFjdGl2ZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2IwYjBiMDtcbn1cblxuLyogR2l2ZXMgdGhlIGlucHV0cyB0aGVpciBwcmV2aW91cyBsb29rICovXG4uc2VhcmNoLWNvbnRhaW5lciAuc2VhcmNoLWZvcm0gI3NlYXJjaElucHV0IHtcbiAgICBmb250LXNpemU6IDEzcHg7XG4gICAgcGFkZGluZzogMXB4IDNweDtcbiAgICB3aWR0aDogMTVlbTsgLyogb3RoZXJ3aXNlIHRoZSB3aWR0aCBpcyBpbmNvbnNpc3RlbnQgYmV0d2VlbiBicm93c2VycyAqL1xufVxuI2xhbmdzZWFyY2gtaW5wdXQge1xuICAgIHBhZGRpbmc6IDFweCAycHg7XG4gICAgZm9udC1zaXplOiAxMXB4O1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG59XG4iXX0=
 */
\ No newline at end of file
diff --git a/dev/wikipedia.org/assets/cssnext/README.txt 
b/dev/wikipedia.org/assets/cssnext/README.txt
new file mode 100644
index 0000000..a6e4706
--- /dev/null
+++ b/dev/wikipedia.org/assets/cssnext/README.txt
@@ -0,0 +1,10 @@
+The files in the directory are processed by cssnext.
+style.css is the 'main' file. All other files are
+treated as 'partials' that should be included in style.css
+via @import statements. PostCSS-import will expand the @import
+statements and merge these files in style.css.
+
+All other files should be treated as 'partials' and
+should begin with an underscore.
+
+_vars.css is reserved for css variables (css custom properties).
\ No newline at end of file
diff --git a/dev/wikipedia.org/assets/css/base.css 
b/dev/wikipedia.org/assets/cssnext/_base.css
similarity index 100%
rename from dev/wikipedia.org/assets/css/base.css
rename to dev/wikipedia.org/assets/cssnext/_base.css
diff --git a/dev/wikipedia.org/assets/css/buttons.css 
b/dev/wikipedia.org/assets/cssnext/_buttons.css
similarity index 100%
rename from dev/wikipedia.org/assets/css/buttons.css
rename to dev/wikipedia.org/assets/cssnext/_buttons.css
diff --git a/dev/wikipedia.org/assets/css/forms.css 
b/dev/wikipedia.org/assets/cssnext/_forms.css
similarity index 100%
rename from dev/wikipedia.org/assets/css/forms.css
rename to dev/wikipedia.org/assets/cssnext/_forms.css
diff --git a/dev/wikipedia.org/assets/css/pab1.css 
b/dev/wikipedia.org/assets/cssnext/_pab1.css
similarity index 100%
rename from dev/wikipedia.org/assets/css/pab1.css
rename to dev/wikipedia.org/assets/cssnext/_pab1.css
diff --git a/dev/wikipedia.org/assets/css/pab2.css 
b/dev/wikipedia.org/assets/cssnext/_pab2.css
similarity index 100%
rename from dev/wikipedia.org/assets/css/pab2.css
rename to dev/wikipedia.org/assets/cssnext/_pab2.css
diff --git a/dev/wikipedia.org/assets/cssnext/_vars.css 
b/dev/wikipedia.org/assets/cssnext/_vars.css
new file mode 100644
index 0000000..037f11c
--- /dev/null
+++ b/dev/wikipedia.org/assets/cssnext/_vars.css
@@ -0,0 +1,6 @@
+/**
+* Colors from 
https://phabricator.wikimedia.org/diffusion/WMUI/browse/master/base.less
+*/
+:root {
+    --c-primary: #165c91;
+}
\ No newline at end of file
diff --git a/dev/wikipedia.org/assets/css/wm-portal.css 
b/dev/wikipedia.org/assets/cssnext/_wm-portal.css
similarity index 95%
rename from dev/wikipedia.org/assets/css/wm-portal.css
rename to dev/wikipedia.org/assets/cssnext/_wm-portal.css
index 93311d4..96304e6 100644
--- a/dev/wikipedia.org/assets/css/wm-portal.css
+++ b/dev/wikipedia.org/assets/cssnext/_wm-portal.css
@@ -6,14 +6,6 @@
  *
  * Indention style: 1 tab
  *
- * Don't be afraid to document changes here with comments, this stylesheet
- * is loaded through ResourceLoader on the portal pages and as such is minified
- * and squeezed into a tiny package delivered from bits.wikimedia.org
- *
- * Usage:
- * <link rel="stylesheet" 
href="//meta.wikimedia.org/w/load.php?debug=false&amp;lang=en&amp;modules=ext.gadget.wm-portal&amp;only=styles&amp;skin=vector&amp;*">
- *
- * (if RTL flipping is needed, replace lang=en with the correct language)
  */
 
 body {
@@ -28,13 +20,12 @@
     unicode-bidi: embed;
     white-space: nowrap;
     outline: 0;
-    color: #0645AD;
+    color: var(--c-primary);
     text-decoration: none;
 }
 a:focus {
-    outline: 1px solid #0645AD;
+    outline: 1px solid var(--c-primary);
 }
-
 
 a:hover {
     text-decoration: underline;
diff --git a/dev/wikipedia.org/assets/cssnext/style.css 
b/dev/wikipedia.org/assets/cssnext/style.css
new file mode 100644
index 0000000..2ab91f2
--- /dev/null
+++ b/dev/wikipedia.org/assets/cssnext/style.css
@@ -0,0 +1,3 @@
+@import '_vars.css';
+@import '_base.css';
+@import '_wm-portal.css';
\ No newline at end of file
diff --git a/dev/wikipedia.org/index.handlebars 
b/dev/wikipedia.org/index.handlebars
index d83803f..835e696 100644
--- a/dev/wikipedia.org/index.handlebars
+++ b/dev/wikipedia.org/index.handlebars
@@ -8,8 +8,7 @@
 <link rel="apple-touch-icon" href="/static/apple-touch/wikipedia.png">
 <link rel="shortcut icon" href="/static/favicon/wikipedia.ico">
 <link rel="license" href="//creativecommons.org/licenses/by-sa/3.0/">
-<link rel="stylesheet" href="assets/css/base.css">
-<link rel="stylesheet" href="assets/css/wm-portal.css">
+<link rel="stylesheet" href="assets/css/style.css">
 <link rel="stylesheet" href="assets/css/sprites.css">
 
 <!--[if lt IE 8]><style type="text/css">
diff --git a/gulpfile.js b/gulpfile.js
index d49c785..8e17cf3 100644
--- a/gulpfile.js
+++ b/gulpfile.js
@@ -10,7 +10,8 @@
        siteStats = require( './site-stats' ),
        fs = require( 'fs' ),
        sprity = require( 'sprity' ),
-       gulpif = require( 'gulp-if' );
+       postCSSNext = require( 'postcss-cssnext' ),
+       postCSSImport = require( 'postcss-import' );
 
 var baseDir, prodDir,
        plugins = gulpLoadPlugins(),
@@ -96,12 +97,17 @@
        };
 
        config.watch = {
-               hb: [ baseDir + 'templates/*.handlebars', baseDir + '.json', 
baseDir + 'controller.js' ],
-               sprites: [ baseDir + 'assets/img/sprite_assets/**/*' ]
+               sprites: [ baseDir + 'assets/img/sprite_assets/**/*' ],
+               cssnext: baseDir + 'assets/cssnext/*.css',
+               hb: [ baseDir + '*.handlebars',
+                       baseDir + '.json',
+                       baseDir + 'controller.js',
+                       baseDir + 'templates/**/*'
+               ]
        };
 
        config.optImage = {
-               src: baseDir + 'assets/img/*',
+               src: [ baseDir + 'assets/img/*', '!' + baseDir + 
'assets/img/sprite_assets' ],
                pngQuantOptions: { quality: '57-95', speed: 1 },
                dest: prodDir + 'assets/img'
        };
@@ -129,10 +135,30 @@
 } );
 
 /**
+ * Compiles CSSNext files into regular CSS and
+ * outputs them into the CSS dev folder.
+ */
+gulp.task( 'cssnext', function () {
+
+       if ( !baseDir ) {
+               gulp.start( 'build' );
+       }
+
+       return gulp.src( baseDir + 'assets/cssnext/style.css' )
+               .pipe( plugins.postcss( [
+                       postCSSImport(),
+                       postCSSNext()
+               ],
+                       { map: { inline: true } }
+               ) )
+               .pipe( gulp.dest( baseDir + 'assets/css/' ) );
+} );
+
+/**
  * Inlines assets of index.html in dev folder,
  * moves index.html into prod folder
  */
-gulp.task( 'inline-assets', [ 'compile-handlebars' ], function () {
+gulp.task( 'inline-assets', [ 'compile-handlebars', 'cssnext' ], function () {
        return gulp.src( config.inline.src )
                .pipe( plugins.inline( config.inline.options ) )
                .pipe( gulp.dest( prodDir ) );
@@ -174,7 +200,7 @@
 /**
  * Optimizes images in dev folder and moves them into prod folder
  */
-gulp.task( 'optimize-images', [ 'build', 'sprite' ], function () {
+gulp.task( 'optimize-images', [ 'build' ], function () {
        return gulp.src( config.optImage.src )
                .pipe( plugins.imagemin() )
                .pipe( imageminPngquant( config.optImage.pngQuantOptions )() )
@@ -182,13 +208,15 @@
 } );
 
 /**
- * Watches for changes in dev folder and compiles handlebars
+ * Watches for changes in dev folder and compiles:
+ * - handlebars templates
+ * - CSSNext files
  * into dev folder.
  */
-gulp.task( 'watch', [ 'build', 'compile-handlebars', 'sprite' ], function () {
+gulp.task( 'watch', [ 'build', 'compile-handlebars', 'sprite', 'cssnext' ], 
function () {
        gulp.watch( config.watch.hb, [ 'compile-handlebars' ] );
        gulp.watch( config.watch.sprites, [ 'sprite' ] );
-
+       gulp.watch( config.watch.cssnext, [ 'cssnext' ] );
 } );
 
 /**
@@ -257,8 +285,9 @@
                split: true,
                margin: 0
        } )
-       .pipe( gulpif( '*.png', gulp.dest( baseDir + 'assets/img/' ), 
gulp.dest( baseDir + 'assets/css/' ) ) );
+       .pipe( plugins[ 'if' ]( '*.png', gulp.dest( baseDir + 'assets/img/' ), 
gulp.dest( baseDir + 'assets/css/' ) ) );
 } );
 
-gulp.task( 'default', [ 'build', 'lint', 'compile-handlebars', 'sprite', 
'inline-assets', 'clean-prod-js', 'concat-minify-js', 'minify-html', 
'optimize-images' ] );
+gulp.task( 'default', [ 'build', 'lint', 'compile-handlebars', 'sprite', 
'cssnext', 'inline-assets', 'clean-prod-js', 'concat-minify-js', 'minify-html', 
'optimize-images' ] );
+
 gulp.task( 'test', [ 'lint' ] );
diff --git a/package.json b/package.json
index f0384b7..20ef7de 100644
--- a/package.json
+++ b/package.json
@@ -1,11 +1,12 @@
 {
   "private": true,
   "scripts": {
-    "test": "gulp lint"
+    "test": "node ./tests/lint.js"
   },
   "devDependencies": {
     "bluebird": "^3.0.5",
     "del": "^2.2.0",
+    "cssnext": "^1.8.4",
     "gulp": "^3.9.0",
     "gulp-compile-handlebars": "^0.5.0",
     "gulp-downloader": "^1.0.4",
@@ -17,6 +18,7 @@
     "gulp-jshint": "^1.11.2",
     "gulp-load-plugins": "^1.0.0",
     "gulp-minify-css": "^1.2.1",
+    "gulp-postcss": "^6.0.1",
     "gulp-rename": "^1.2.2",
     "gulp-rev": "^6.0.1",
     "gulp-rev-replace": "^0.4.3",
@@ -26,6 +28,8 @@
     "imagemin-pngquant": "^4.2.0",
     "lwip": "0.0.8",
     "moment": "^2.10.6",
+    "postcss-cssnext": "^2.4.0",
+    "postcss-import": "^8.0.2",
     "preq": "^0.4.6",
     "sprity": "^1.0.8",
     "underscore": "^1.8.3",
diff --git a/prod/wikipedia.org/index.html b/prod/wikipedia.org/index.html
index deee21a..56d24cc 100644
--- a/prod/wikipedia.org/index.html
+++ b/prod/wikipedia.org/index.html
@@ -8,8 +8,7 @@
 <link rel="apple-touch-icon" href="/static/apple-touch/wikipedia.png">
 <link rel="shortcut icon" href="/static/favicon/wikipedia.ico">
 <link rel="license" href="//creativecommons.org/licenses/by-sa/3.0/">
-<style>img,legend{border:0}legend,td,th{padding:0}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px
 
dotted}b,optgroup,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em
 
0}mark{background:#ff0;color:#000}small{font-size:85%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}svg:not(:root){overflow:hidden}figure{margin:1em
 
40px}hr{box-sizing:content-box;height:0}pre,textarea{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html
 
input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html
 
input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input[type=search]:focus{outline-offset:-2px}fieldset{border:1px
 solid silver;margin:0 2px;padding:.35em .625em 
.75em}table{border-collapse:collapse;border-spacing:0}.hidden,[hidden]{display:none!important}.pure-img{max-width:100%;height:auto;display:block}</style>
-<style>hr,img{border:none}.central-featured,.search-container,img{vertical-align:middle}body{background-color:#fff;font:13px/1.5
 sans-serif;margin:.3em 
0}a,a:active,a:focus{unicode-bidi:embed;white-space:nowrap;outline:0;color:#0645AD;text-decoration:none}a:focus{outline:#0645AD
 solid 
1px}a:hover{text-decoration:underline}hr{clear:both;height:0;border-bottom:1px 
solid #aaa;margin:.2em 1em}.central-textlogo{margin:1em 0 
.3em;text-align:center;font-size:30px;line-height:110%;font-family:'Linux 
Libertine','Hoefler Text',Georgia,'Times New 
Roman',Times,serif;font-weight:400;padding:10px 
0;-moz-font-feature-settings:"ss05=1";-moz-font-feature-settings:"ss05";-webkit-font-feature-settings:"ss05";-ms-font-feature-settings:"ss05";font-feature-settings:"ss05"}.central-featured{position:relative;text-align:center;max-width:100%;width:42em;margin:0
 
auto;height:26em}.central-featured-logo-wrapper{vertical-align:middle;line-height:26em}.central-featured-lang{position:absolute;width:12em}.central-featured-lang
 .link-box{display:block;padding:0;text-decoration:none}.central-featured-lang 
.link-box:hover strong{text-decoration:underline}.central-featured-lang 
.link-box em,.central-featured-lang .link-box 
small{color:#000;text-decoration:none}.central-featured-lang 
strong{font-size:larger}.central-featured-lang 
em{font-style:italic}.central-featured-lang 
.emNonItalicLang{font-style:normal}.lang1{top:0;right:60%}.lang2{top:0;left:60%}.lang3{top:20%;right:70%}.lang4{top:20%;left:70%}.lang5{top:40%;right:72%}.lang6{top:40%;left:72%}.lang7{top:60%;right:70%}.lang8{top:60%;left:70%}.lang9{top:80%;right:60%}.lang10{top:80%;left:60%}.search-container{float:none;margin:1em
 auto 
1.5em;max-width:95%;padding:.3em;text-align:center;width:540px}.search-form 
fieldset{background-color:#f9f9f9;border:1px solid 
#aaa;margin-top:.5em;padding:.7em;width:auto}.search-form 
#searchInput{font-size:1.2em;margin:0;padding:0;vertical-align:top}.search-form 
select{margin:0 
.4em;padding:0;vertical-align:middle;max-width:12em;width:12em}.bookshelf-container{width:100%;overflow:hidden;margin:2em
 0 .5em;font-size:13px;font-weight:700;line-height:20px}.bookshelf-container 
.text{padding:0 
.5em}.bookshelf{display:block;width:300%;overflow:hidden;position:relative;left:-100%;text-align:center;white-space:nowrap}.bookshelf-container
 
.bookend{display:inline-block;vertical-align:top}.langlist{text-align:center;margin:.5em
 3em 2.5em}.langlist-large{font-size:larger}.langlist-tiny{margin:.5em 3em 
3em}.langlist-others{margin:0 3em 
2em;font-weight:700}.otherprojects{font-weight:700;margin:1.5em 
auto;text-align:left;vertical-align:middle;width:90%}.otherprojects-item{float:left;height:60px;min-width:12em;width:24.75%;line-height:60px}.otherprojects-item
 a{display:block;width:10em;margin:0 
auto}.sprite-project-logos-wrapper{width:47px;display:-moz-inline-stack;display:inline-block;text-align:center;vertical-align:middle}.otherprojects-item
 
.sprite-project-logos{display:-moz-inline-stack;display:inline-block;text-align:center;vertical-align:middle}.otherprojects-item
 
.otherprojects-item-name{vertical-align:middle}.sprite-project-logos-Wikispecies-logo_sister{background-position:0
 
-324px!important;width:35px!important;height:40px!important}.wm-site-info{clear:both;margin:2.5em
 0 2em;text-align:center;padding-top:1.5em}.hlist ul{margin:0;padding:0}.hlist 
li,.hlist ul ul{display:inline}.hlist li:before{content:" · 
";font-weight:700}.hlist li:first-child:before{content:none}.hlist 
li+ul:before{content:"\00a0("}.hlist li+ul:after{content:") "}@media 
print{body{background-color:transparent}a{color:#000!important;background:0 
0!important;padding:0!important}a:link,a:visited{color:#520;background:0 
0}img{border:none}}@media all and 
(max-width:480px){.central-textlogo{line-height:normal;padding:0 0 0 
84px;margin:0;height:70px;text-align:left;position:relative}.central-textlogo 
img{height:35px;width:auto;margin-top:22.5px}.central-featured{width:auto;height:auto;padding-top:2em;text-align:left;font-size:.8em;margin-top:4em}.central-featured-logo{right:0;left:.8em;top:-70px;margin-top:-4em;width:70px;position:absolute}.central-featured-lang{right:auto;top:auto;position:relative;left:auto;text-align:left;margin-left:1em;display:block;float:left;width:40%;height:5em}.language-search,.search-container
 
label{display:none}.search-container{margin-top:0;height:6em;position:absolute;top:5em;left:0;right:0;max-width:100%;width:auto;padding:0;text-align:left}.search-form
 #searchInput{max-width:40%;vertical-align:middle}.search-form 
#searchLanguage,.search-form .formBtn{max-width:25%;vertical-align:middle}form 
fieldset{margin:0;border-left:none;border-right:none}.bookshelf{width:auto;left:auto;overflow:hidden;text-align:left}.bookshelf-container
 .bookend{width:40px!important}.bookshelf-container 
.bookend:last-child{display:none}.langlist 
a{word-wrap:break-word;white-space:normal}.langlist{font-size:.7em}.otherprojects-item{width:50%;text-align:left}.bookshelf-container,.langlist{margin:1em
 1em 0;text-align:left;width:auto}hr{margin-top:.5em}}@media all and 
(max-width:240px){.central-featured-lang,.otherprojects-item{width:100%}.central-textlogo
 img{width:100px;height:auto}}@media all and 
(max-width:45em){.otherprojects{width:100%}.otherprojects-item{width:33.33%}}@media
 all and (max-width:30em){.otherprojects-item{width:50%}}@media all and 
(max-width:20em){.otherprojects-item{width:100%}}@media 
(-webkit-min-device-pixel-ratio:1.5),(min--moz-device-pixel-ratio:1.5),(-o-min-device-pixel-ratio:3/2),(min-resolution:1.5dppx),(min-resolution:144dpi){.bookshelf-container
 .bookend{background-size:40px auto}}@media 
(-webkit-min-device-pixel-ratio:2),(min--moz-device-pixel-ratio:2),(-o-min-device-pixel-ratio:2),(min-resolution:2dppx),(min-resolution:192dpi){.bookshelf-container
 .bookend{background-size:40px auto}}@media 
(min--moz-device-pixel-ratio:2),(min-resolution:2dppx),(min-resolution:192dpi){#footer,.search-form
 fieldset{border-width:.5px}hr{border-bottom-width:.5px}}@supports 
(-webkit-transform:rotate(30deg)){#footer,.search-form 
fieldset{border-width:1px}hr{border-bottom-width:1px}}.formBtn{background-color:#fff;border:1px
 solid #E4E4E4;border-radius:4px;border-top:1px solid #e8e8e8;border-bottom:1px 
solid #CECECE;font-size:11px;padding:1px 
8px;margin-left:.3em;vertical-align:top}.formBtn 
.sprite-bookshelf_icons-search_icon{display:inline-block;vertical-align:middle}.formBtn:focus{background-color:silver;outline:0}.formBtn:active{background-color:#b0b0b0}.search-container
 .search-form #searchInput{font-size:13px;padding:1px 
3px;width:15em}#langsearch-input{padding:1px 
2px;font-size:11px;vertical-align:top}</style>
+<style>legend,td,th{padding:0}hr,img{border:none}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px
 
dotted}b,optgroup,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em
 
0}mark{background:#ff0;color:#000}small{font-size:85%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}.central-featured,.search-container,img{vertical-align:middle}sup{top:-.5em}sub{bottom:-.25em}svg:not(:root){overflow:hidden}figure{margin:1em
 
40px}pre,textarea{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html
 
input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html
 
input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input[type=search]:focus{outline-offset:-2px}fieldset{border:1px
 solid silver;margin:0 2px;padding:.35em .625em 
.75em}legend{border:0}table{border-collapse:collapse;border-spacing:0}.hidden,[hidden]{display:none!important}.pure-img{max-width:100%;height:auto;display:block}body{background-color:#fff;font:13px/1.5
 sans-serif;margin:.3em 
0}a,a:active,a:focus{unicode-bidi:embed;white-space:nowrap;outline:0;color:#165c91;text-decoration:none}a:focus{outline:#165c91
 solid 
1px}a:hover{text-decoration:underline}hr{box-sizing:content-box;clear:both;height:0;border-bottom:1px
 solid #aaa;margin:.2em 1em}.central-textlogo{margin:1em 0 
.3em;text-align:center;font-size:30px;line-height:110%;font-family:'Linux 
Libertine','Hoefler Text',Georgia,'Times New 
Roman',Times,serif;font-weight:400;padding:10px 
0;-webkit-font-feature-settings:"ss05";-ms-font-feature-settings:"ss05";font-feature-settings:"ss05"}.central-featured{position:relative;text-align:center;max-width:100%;width:42em;margin:0
 
auto;height:26em}.central-featured-logo-wrapper{vertical-align:middle;line-height:26em}.central-featured-lang{position:absolute;width:12em}.central-featured-lang
 .link-box{display:block;padding:0;text-decoration:none}.central-featured-lang 
.link-box:hover strong{text-decoration:underline}.central-featured-lang 
.link-box em,.central-featured-lang .link-box 
small{color:#000;text-decoration:none}.central-featured-lang 
strong{font-size:larger}.central-featured-lang 
em{font-style:italic}.central-featured-lang 
.emNonItalicLang{font-style:normal}.lang1{top:0;right:60%}.lang2{top:0;left:60%}.lang3{top:20%;right:70%}.lang4{top:20%;left:70%}.lang5{top:40%;right:72%}.lang6{top:40%;left:72%}.lang7{top:60%;right:70%}.lang8{top:60%;left:70%}.lang9{top:80%;right:60%}.lang10{top:80%;left:60%}.search-container{float:none;margin:1em
 auto 
1.5em;max-width:95%;padding:.3em;text-align:center;width:540px}.search-form 
fieldset{background-color:#f9f9f9;border:1px solid 
#aaa;margin-top:.5em;padding:.7em;width:auto}.search-form 
#searchInput{font-size:1.2em;margin:0;padding:0;vertical-align:top}.search-form 
select{margin:0 
.4em;padding:0;vertical-align:middle;max-width:12em;width:12em}.bookshelf-container{width:100%;overflow:hidden;margin:2em
 0 .5em;font-size:13px;font-weight:700;line-height:20px}.bookshelf-container 
.text{padding:0 
.5em}.bookshelf{display:block;width:300%;overflow:hidden;position:relative;left:-100%;text-align:center;white-space:nowrap}.bookshelf-container
 
.bookend{display:inline-block;vertical-align:top}.langlist{text-align:center;margin:.5em
 3em 2.5em}.langlist-large{font-size:larger}.langlist-tiny{margin:.5em 3em 
3em}.langlist-others{margin:0 3em 
2em;font-weight:700}.otherprojects{font-weight:700;margin:1.5em 
auto;text-align:left;vertical-align:middle;width:90%}.otherprojects-item{float:left;height:60px;min-width:12em;width:24.75%;line-height:60px}.otherprojects-item
 a{display:block;width:10em;margin:0 
auto}.sprite-project-logos-wrapper{width:47px;display:-moz-inline-stack;display:inline-block;text-align:center;vertical-align:middle}.otherprojects-item
 
.sprite-project-logos{display:-moz-inline-stack;display:inline-block;text-align:center;vertical-align:middle}.otherprojects-item
 
.otherprojects-item-name{vertical-align:middle}.sprite-project-logos-Wikispecies-logo_sister{background-position:0
 
-324px!important;width:35px!important;height:40px!important}.wm-site-info{clear:both;margin:2.5em
 0 2em;text-align:center;padding-top:1.5em}.hlist ul{margin:0;padding:0}.hlist 
li,.hlist ul ul{display:inline}.hlist li:before{content:" · 
";font-weight:700}.hlist li:first-child:before{content:none}.hlist 
li+ul:before{content:"\00a0("}.hlist li+ul:after{content:") "}@media 
print{body{background-color:transparent}a{color:#000!important;background:0 
0!important;padding:0!important}a:link,a:visited{color:#520;background:0 
0}img{border:none}}@media all and 
(max-width:480px){.central-textlogo{line-height:normal;padding:0 0 0 
84px;margin:0;height:70px;text-align:left;position:relative}.central-textlogo 
img{height:35px;width:auto;margin-top:22.5px}.central-featured{width:auto;height:auto;padding-top:2em;text-align:left;font-size:.8em;margin-top:4em}.central-featured-logo{right:0;left:.8em;top:-70px;margin-top:-4em;width:70px;position:absolute}.central-featured-lang{right:auto;top:auto;position:relative;left:auto;text-align:left;margin-left:1em;display:block;float:left;width:40%;height:5em}.language-search,.search-container
 
label{display:none}.search-container{margin-top:0;height:6em;position:absolute;top:5em;left:0;right:0;max-width:100%;width:auto;padding:0;text-align:left}.search-form
 #searchInput{max-width:40%;vertical-align:middle}.search-form 
#searchLanguage,.search-form .formBtn{max-width:25%;vertical-align:middle}form 
fieldset{margin:0;border-left:none;border-right:none}.bookshelf{width:auto;left:auto;overflow:hidden;text-align:left}.bookshelf-container
 .bookend{width:40px!important}.bookshelf-container 
.bookend:last-child{display:none}.langlist 
a{word-wrap:break-word;white-space:normal}.langlist{font-size:.7em}.otherprojects-item{width:50%;text-align:left}.bookshelf-container,.langlist{margin:1em
 1em 0;text-align:left;width:auto}hr{margin-top:.5em}}@media all and 
(max-width:240px){.central-featured-lang,.otherprojects-item{width:100%}.central-textlogo
 img{width:100px;height:auto}}@media all and 
(max-width:45em){.otherprojects{width:100%}.otherprojects-item{width:33.33%}}@media
 all and (max-width:30em){.otherprojects-item{width:50%}}@media all and 
(max-width:20em){.otherprojects-item{width:100%}}@media 
(-webkit-min-device-pixel-ratio:1.5),(min--moz-device-pixel-ratio:1.5),(min-resolution:1.5dppx),(min-resolution:144dpi){.bookshelf-container
 .bookend{background-size:40px auto}}@media 
(-webkit-min-device-pixel-ratio:2),(min--moz-device-pixel-ratio:2),(min-resolution:2dppx),(min-resolution:192dpi){.bookshelf-container
 .bookend{background-size:40px auto}}@media 
(min--moz-device-pixel-ratio:2),(-webkit-min-device-pixel-ratio:2),(min-resolution:2dppx),(min-resolution:192dpi){#footer,.search-form
 fieldset{border-width:.5px}hr{border-bottom-width:.5px}}@supports 
(-webkit-transform:rotate(30deg)){#footer,.search-form 
fieldset{border-width:1px}hr{border-bottom-width:1px}}.formBtn{background-color:#fff;border:1px
 solid #E4E4E4;border-radius:4px;border-top:1px solid #e8e8e8;border-bottom:1px 
solid #CECECE;font-size:11px;padding:1px 
8px;margin-left:.3em;vertical-align:top}.formBtn 
.sprite-bookshelf_icons-search_icon{display:inline-block;vertical-align:middle}.formBtn:focus{background-color:silver;outline:0}.formBtn:active{background-color:#b0b0b0}.search-container
 .search-form #searchInput{font-size:13px;padding:1px 
3px;width:15em}#langsearch-input{padding:1px 
2px;font-size:11px;vertical-align:top}</style>
 
<style>.sprite-bookshelf_icons{background-image:url(portal/wikipedia.org/assets/img/sprite-bookshelf_icons.png)}@media
 
(-webkit-min-device-pixel-ratio:1.5),(min-resolution:144dpi){.sprite-bookshelf_icons{background-image:url(portal/wikipedia.org/assets/img/sprite-bookshelf_ic...@1.5x.png);background-size:40px
 57px}}@media 
(-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){.sprite-bookshelf_icons{background-image:url(portal/wikipedia.org/assets/img/sprite-bookshelf_ic...@2x.png);background-size:40px
 57px}}.sprite-bookshelf_icons-caretDown{background-position:0 
0;width:12px;height:12px}.sprite-bookshelf_icons-search-ltr-invert{background-position:0
 
-12px;width:12px;height:12px}.sprite-bookshelf_icons-search_icon{background-position:0
 
-24px;width:12px;height:13px}.sprite-bookshelf_icons-Bookshelf{background-position:0
 
-37px;width:40px;height:20px}.sprite-project-logos{background-image:url(portal/wikipedia.org/assets/img/sprite-project-logos.png)}@media
 
(-webkit-min-device-pixel-ratio:1.5),(min-resolution:144dpi){.sprite-project-logos{background-image:url(portal/wikipedia.org/assets/img/sprite-project-lo...@1.5x.png);background-size:88px
 452px}}@media 
(-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){.sprite-project-logos{background-image:url(portal/wikipedia.org/assets/img/sprite-project-lo...@2x.png);background-size:88px
 453px}}.sprite-project-logos-Wikinews-logo_sister{background-position:0 
0;width:47px;height:26px}.sprite-project-logos-Wikidata-logo_sister{background-position:0
 
-26px;width:47px;height:27px}.sprite-project-logos-Wikiversity-logo_sister{background-position:0
 
-52px;width:35px;height:28px}.sprite-project-logos-wikimedia-button{background-position:0
 
-80px;width:88px;height:31px}.sprite-project-logos-Wikibooks-logo_sister{background-position:0
 
-111px;width:35px;height:35px}.sprite-project-logos-Meta-logo_sister{background-position:0
 
-146px;width:35px;height:35px}.sprite-project-logos-Wikivoyage-logo_sister{background-position:0
 
-181px;width:35px;height:35px}.sprite-project-logos-Wiktionary-logo_sister{background-position:0
 
-216px;width:35px;height:35px}.sprite-project-logos-MediaWiki-logo_sister{background-position:0
 
-251px;width:47px;height:36px}.sprite-project-logos-Wikisource-logo_sister{background-position:0
 
-287px;width:35px;height:37px}.sprite-project-logos-Wikispecies-logo_sister{background-position:0
 
-323px;width:35px;height:41px}.sprite-project-logos-Wikiquote-logo_sister{background-position:0
 
-364px;width:35px;height:42px}.sprite-project-logos-Commons-logo_sister{background-position:0
 -406px;width:35px;height:47px}</style>
 <!--[if lt IE 8]><style type="text/css">
 .bookshelf-container .bookend,.otherprojects-icon{zoom:1;display:inline}
diff --git a/tests/lint.js b/tests/lint.js
new file mode 100644
index 0000000..5ee6b69
--- /dev/null
+++ b/tests/lint.js
@@ -0,0 +1,15 @@
+var gulp = require( 'gulp' ),
+       jshint = require( 'gulp-jshint' ),
+       jscs = require( 'gulp-jscs' );
+
+gulp.task( 'lint', function () {
+       var devFolder = 'dev/**/*.js';
+
+       gulp.src( [ '*.js', devFolder ] )
+               .pipe( jshint( '.jshintrc' ) )
+               .pipe( jshint.reporter( 'default' ) )
+               .pipe( jscs() )
+               .pipe( jscs.reporter() );
+} );
+
+gulp.start( 'lint' );

-- 
To view, visit https://gerrit.wikimedia.org/r/268842
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Iacfddfc2feaea527b08a04aa3c8e13833d2d900f
Gerrit-PatchSet: 1
Gerrit-Project: wikimedia/portals
Gerrit-Branch: master
Gerrit-Owner: JGirault <jgira...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to