diff --git a/.gitignore b/.gitignore
index 7923548b4..eda88ae1f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -26,9 +26,9 @@ Resources/public/stylesheets/sass
Resources/.sass-cache/
Resources/bower_components/
Resources/node_modules/
-Resources/public/sass/*
-!Resources/public/sass/_custom.scss
-!Resources/public/sass/_timeline.scss
-!Resources/public/sass/custom/
-/nbproject/private/
\ No newline at end of file
+/nbproject/private/
+
+# Yarn lock
+Resources/package-lock.json
+Resources/yarn.lock
diff --git a/Form/Type/ChillDateTimeType.php b/Form/Type/ChillDateTimeType.php
new file mode 100644
index 000000000..07adc0cb8
--- /dev/null
+++ b/Form/Type/ChillDateTimeType.php
@@ -0,0 +1,50 @@
+
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+namespace Chill\MainBundle\Form\Type;
+
+use Symfony\Component\Form\AbstractType;
+use Symfony\Component\Form\Extension\Core\Type\DateTimeType;
+use Symfony\Component\OptionsResolver\OptionsResolver;
+
+/**
+ * Display the date in a date picker.
+ *
+ * Extends the symfony `Symfony\Component\Form\Extension\Core\Type\DateType`
+ * to automatically create a date picker.
+ *
+ * @author Mathieu Jaumotte
+ */
+class ChillDateTimeType extends AbstractType
+{
+ public function configureOptions(OptionsResolver $resolver)
+ {
+ $resolver
+ ->setDefault('date_widget', 'single_text')
+ ->setDefault('date_format', 'dd-MM-yyyy')
+ ->setDefault('time_widget', 'choice')
+ ->setDefault('minutes', range(0, 59, 5))
+ ->setDefault('hours', range(8, 22))
+ ->setDefault('html5', true)
+ ;
+ }
+
+ public function getParent()
+ {
+ return DateTimeType::class;
+ }
+}
diff --git a/Resources/bower.json b/Resources/bower.json
index d1903bb57..c179fdf8d 100644
--- a/Resources/bower.json
+++ b/Resources/bower.json
@@ -8,7 +8,7 @@
"description": "JS-CSS files for Chill, a software for social workers",
"private": true,
"devDependencies": {
- "Scratch-CSS-Design": "git@github.com:Champs-Libres/ScratchCSS.git",
+ "Scratch-CSS-Design": "https://github.com/Champs-Libres/ScratchCSS.git",
"pikaday": "https://github.com/dbushell/Pikaday.git#~1.2.0",
"moment": "~2.8.3",
"select2": "~3.5.2",
diff --git a/Resources/package.json b/Resources/package.json
index dae6ce776..b25e525a6 100644
--- a/Resources/package.json
+++ b/Resources/package.json
@@ -2,17 +2,16 @@
"name": "chill-js-css",
"version": "0.0.0",
"description": "JS-CSS files for Chill, a software for social workers",
- "directories": {
- },
+ "directories": {},
"author": "Champs-Libres ",
"devDependencies": {
- "grunt": "^0.4.5",
+ "grunt": "^1.0.3",
"grunt-bower-task": "^0.4.0",
+ "grunt-contrib-clean": "^0.6.0",
"grunt-contrib-copy": "^0.7.0",
"grunt-contrib-sass": "^0.8.1",
- "jit-grunt": "^0.9.0",
"grunt-contrib-watch": "^0.6.1",
- "grunt-contrib-clean": "^0.6.0"
+ "jit-grunt": "^0.9.0"
},
"dependencies": {}
}
diff --git a/Resources/public/sass/config/_buttons.scss b/Resources/public/sass/config/_buttons.scss
new file mode 100644
index 000000000..00b61968c
--- /dev/null
+++ b/Resources/public/sass/config/_buttons.scss
@@ -0,0 +1,7 @@
+// Buttons
+$button-font-size : 15px !default;
+$button-text-color : #000 !default;
+$button-text-weight : 300 !default;
+$button-padding : 8px 12px !default;
+$button-background : #eee !default;
+$button-margin : 5px !default;
\ No newline at end of file
diff --git a/Resources/public/sass/config/_colors.scss b/Resources/public/sass/config/_colors.scss
new file mode 100644
index 000000000..9c200db0f
--- /dev/null
+++ b/Resources/public/sass/config/_colors.scss
@@ -0,0 +1,64 @@
+// BODY
+$body-background : #fff !default;
+
+// PLAIN TEXT
+$text-color : #555 !default;
+
+// HEADINGS
+$headings-color : #404040 !default;
+
+// LINKS
+$link-color : #6998C9 !default;
+$link-visited-color : #808080 !default;
+$link-active-color : shade(red,5%) !default;
+$link-hover-color : #007ED5 !default;
+$link-focus-color : $link-color !default;
+
+$white : #fff !default;
+$black : #000 !default;
+$orange : #FF622C !default;
+$red : #C83D3D !default;
+$green : #27806f !default;
+$blue : #2980b9 !default;
+$yellow : #FFC82C !default;
+
+$light-blue : #4995C7;
+$llight-blue : #72B0D9;
+$dark-blue : #096EB0 !default;
+$ddark-blue : #07507F !default;
+
+$light-green : #419484 !default;
+$llight-green : #6CB3A5 !default;
+
+$warning-bg : $orange !default;
+$caution-bg : $red !default;
+$error-bg : $red !default;
+$success-bg : $green !default;
+$info-bg : $blue !default;
+
+$grey-95 : lighten($black, 5%) !default;
+$grey-90 : lighten($black, 10%) !default;
+$grey-85 : lighten($black, 15%) !default;
+$grey-80 : lighten($black, 20%) !default;
+$grey-75 : lighten($black, 25%) !default;
+$grey-70 : lighten($black, 30%) !default;
+$grey-65 : lighten($black, 35%) !default;
+$grey-60 : lighten($black, 40%) !default;
+$grey-55 : lighten($black, 45%) !default;
+$grey-50 : lighten($black, 50%) !default;
+$grey-45 : lighten($black, 55%) !default;
+$grey-40 : lighten($black, 60%) !default;
+$grey-35 : lighten($black, 65%) !default;
+$grey-30 : lighten($black, 70%) !default;
+$grey-25 : lighten($black, 75%) !default;
+$grey-20 : lighten($black, 80%) !default;
+$grey-15 : lighten($black, 85%) !default;
+$grey-10 : lighten($black, 90%) !default;
+$grey-5 : lighten($black, 95%) !default;
+
+
+$dark-grey: $grey-80; //#333;
+$medium-grey: $grey-50; //#999;
+$light-grey: $grey-20; //#DDD;
+
+@import "../custom/config/colors";
\ No newline at end of file
diff --git a/Resources/public/sass/config/_variables.scss b/Resources/public/sass/config/_variables.scss
new file mode 100644
index 000000000..09840d957
--- /dev/null
+++ b/Resources/public/sass/config/_variables.scss
@@ -0,0 +1,115 @@
+// Typography
+//$sans-serif: $helvetica;
+//$serif: $georgia;
+//$base-font-family: $sans-serif;
+//$header-font-family: $base-font-family;
+
+// Font Sizes
+$base-font-size: 1em;
+$h1-font-size: $base-font-size * 2.25;
+$h2-font-size: $base-font-size * 2;
+$h3-font-size: $base-font-size * 1.75;
+$h4-font-size: $base-font-size * 1.5;
+$h5-font-size: $base-font-size * 1.25;
+$h6-font-size: $base-font-size;
+
+// Line height
+$base-line-height: 1.5;
+$header-line-height: 1.25;
+
+// Other Sizes
+$base-border-radius: 3px;
+$base-spacing: $base-line-height * 1em;
+$base-z-index: 0;
+
+// Background Color
+$base-background-color: white;
+
+// Font Colors
+$base-font-color: $dark-grey;
+$base-accent-color: $blue;
+
+// Link Colors
+$base-link-color: $base-accent-color;
+$hover-link-color: darken($base-accent-color, 15);
+$base-button-color: $base-link-color;
+$hover-button-color: $hover-link-color;
+
+/*
+// Flash Colors
+$alert-color: $light-yellow;
+$error-color: $light-red;
+$notice-color: lighten($base-accent-color, 40);
+$success-color: $light-green;
+*/
+
+// Border color
+$base-border-color: $light-grey;
+$base-border: 1px solid $base-border-color;
+
+// Footer
+$footer-background: $grey-50;//-blue;// desaturate(darken($base-accent-color, 20), 30);
+$footer-color: white;
+$footer-link-color: transparentize($footer-color, .6);
+$footer-disclaimer-color: transparentize($footer-color, .6);
+$footer-vertical-padding: 0;
+
+// Forms
+$form-border-size: 1px;
+$form-border-color: $base-border-color;
+$form-border-color-hover: darken($base-border-color, 10);
+$form-border-color-focus: $base-accent-color;
+$form-border-radius: $base-border-radius;
+$form-box-shadow: inset 0 1px 3px rgba(black,0.06);
+$form-box-shadow-focus: $form-box-shadow, 0 0 5px rgba(darken($form-border-color-focus, 5), 0.7);
+$form-font-size: $base-font-size;
+//$form-font-family: $base-font-family;
+
+// Navigation
+$navigation-background: $dark-grey;
+$navigation-color: transparentize(white, 0.3);
+$navigation-color-hover: white;
+$navigation-height: 60px;
+$navigation-active-link-color: transparentize(white, 0.5);
+$navigation-submenu-padding: 1em;
+$navigation-submenu-width: 12em;
+$navigation-border-radius: $base-border-radius;
+$navigation-first-padding-top: 1em;
+$navigation-last-padding-bottom: 0.7em;
+$navigation-more-pin: '\25BE';
+$navigation-more-pin-color: $navigation-color;
+$navigation-ul-submenu-top: 1.5em;
+$navigation-ul-submenu-padding-left: 0;
+$navigation-search-padding: .85em .6em;
+$navigation-border-bottom: 1px solid darken($navigation-background, 10);
+
+//Table
+$table-width: 100%;
+
+$table-head-bg-color: $orange;
+$table-head-td-border: unset;
+$table-head-td-text-align: center;
+$table-head-td-padding: 0.3em;
+$table-head-text-color: $white;
+
+$table-body-tr-bg-color-even: $grey-5;
+$table-body-tr-bg-color-odd: unset;
+$table-body-td-border: unset;
+$table-body-td-text-align: left;
+$table-body-td-padding: 0.3em;
+$table-body-text-color: unset;
+
+//Tabs
+$tabs-nav-margin-bottom: none;
+$tabs-nav-title-bg-color: $blue;
+$tabs-nav-title-text-color: $white;
+$tabs-nav-title-padding: 0.5em 0.5em 0.5em 1em;
+$tabs-nav-bg-color: none;
+$tabs-nav-text-color: inherit;
+$tabs-new-border: 3px solid transparent;
+$tabs-nav-hover-border: 3px solid $orange;
+$tabs-nav-hover-text-color: inherit;
+$tabs-nav-font-family: unset;
+$tabs-nav-padding: 0.5em 0.5em 0.5em 1.5em;
+
+@import "../custom/config/variables";
\ No newline at end of file
diff --git a/Resources/public/sass/contrib/bourbon/_bourbon-deprecated-upcoming.scss b/Resources/public/sass/contrib/bourbon/_bourbon-deprecated-upcoming.scss
new file mode 100644
index 000000000..e6d1b8cec
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/_bourbon-deprecated-upcoming.scss
@@ -0,0 +1,411 @@
+// The following features have been deprecated and will be removed in the next MAJOR version release
+
+@mixin inline-block {
+ display: inline-block;
+
+ @warn "The inline-block mixin is deprecated and will be removed in the next major version release";
+}
+
+@mixin button ($style: simple, $base-color: #4294f0, $text-size: inherit, $padding: 7px 18px) {
+
+ @if type-of($style) == string and type-of($base-color) == color {
+ @include buttonstyle($style, $base-color, $text-size, $padding);
+ }
+
+ @if type-of($style) == string and type-of($base-color) == number {
+ $padding: $text-size;
+ $text-size: $base-color;
+ $base-color: #4294f0;
+
+ @if $padding == inherit {
+ $padding: 7px 18px;
+ }
+
+ @include buttonstyle($style, $base-color, $text-size, $padding);
+ }
+
+ @if type-of($style) == color and type-of($base-color) == color {
+ $base-color: $style;
+ $style: simple;
+ @include buttonstyle($style, $base-color, $text-size, $padding);
+ }
+
+ @if type-of($style) == color and type-of($base-color) == number {
+ $padding: $text-size;
+ $text-size: $base-color;
+ $base-color: $style;
+ $style: simple;
+
+ @if $padding == inherit {
+ $padding: 7px 18px;
+ }
+
+ @include buttonstyle($style, $base-color, $text-size, $padding);
+ }
+
+ @if type-of($style) == number {
+ $padding: $base-color;
+ $text-size: $style;
+ $base-color: #4294f0;
+ $style: simple;
+
+ @if $padding == #4294f0 {
+ $padding: 7px 18px;
+ }
+
+ @include buttonstyle($style, $base-color, $text-size, $padding);
+ }
+
+ &:disabled {
+ cursor: not-allowed;
+ opacity: 0.5;
+ }
+
+ @warn "The button mixin is deprecated and will be removed in the next major version release";
+}
+
+// Selector Style Button
+@mixin buttonstyle($type, $b-color, $t-size, $pad) {
+ // Grayscale button
+ @if $type == simple and $b-color == grayscale($b-color) {
+ @include simple($b-color, true, $t-size, $pad);
+ }
+
+ @if $type == shiny and $b-color == grayscale($b-color) {
+ @include shiny($b-color, true, $t-size, $pad);
+ }
+
+ @if $type == pill and $b-color == grayscale($b-color) {
+ @include pill($b-color, true, $t-size, $pad);
+ }
+
+ @if $type == flat and $b-color == grayscale($b-color) {
+ @include flat($b-color, true, $t-size, $pad);
+ }
+
+ // Colored button
+ @if $type == simple {
+ @include simple($b-color, false, $t-size, $pad);
+ }
+
+ @else if $type == shiny {
+ @include shiny($b-color, false, $t-size, $pad);
+ }
+
+ @else if $type == pill {
+ @include pill($b-color, false, $t-size, $pad);
+ }
+
+ @else if $type == flat {
+ @include flat($b-color, false, $t-size, $pad);
+ }
+}
+
+// Simple Button
+@mixin simple($base-color, $grayscale: false, $textsize: inherit, $padding: 7px 18px) {
+ $color: hsl(0, 0, 100%);
+ $border: adjust-color($base-color, $saturation: 9%, $lightness: -14%);
+ $inset-shadow: adjust-color($base-color, $saturation: -8%, $lightness: 15%);
+ $stop-gradient: adjust-color($base-color, $saturation: 9%, $lightness: -11%);
+ $text-shadow: adjust-color($base-color, $saturation: 15%, $lightness: -18%);
+
+ @if is-light($base-color) {
+ $color: hsl(0, 0, 20%);
+ $text-shadow: adjust-color($base-color, $saturation: 10%, $lightness: 4%);
+ }
+
+ @if $grayscale == true {
+ $border: grayscale($border);
+ $inset-shadow: grayscale($inset-shadow);
+ $stop-gradient: grayscale($stop-gradient);
+ $text-shadow: grayscale($text-shadow);
+ }
+
+ border: 1px solid $border;
+ border-radius: 3px;
+ box-shadow: inset 0 1px 0 0 $inset-shadow;
+ color: $color;
+ display: inline-block;
+ font-size: $textsize;
+ font-weight: bold;
+ @include linear-gradient ($base-color, $stop-gradient);
+ padding: $padding;
+ text-decoration: none;
+ text-shadow: 0 1px 0 $text-shadow;
+ background-clip: padding-box;
+
+ &:hover:not(:disabled) {
+ $base-color-hover: adjust-color($base-color, $saturation: -4%, $lightness: -5%);
+ $inset-shadow-hover: adjust-color($base-color, $saturation: -7%, $lightness: 5%);
+ $stop-gradient-hover: adjust-color($base-color, $saturation: 8%, $lightness: -14%);
+
+ @if $grayscale == true {
+ $base-color-hover: grayscale($base-color-hover);
+ $inset-shadow-hover: grayscale($inset-shadow-hover);
+ $stop-gradient-hover: grayscale($stop-gradient-hover);
+ }
+
+ @include linear-gradient ($base-color-hover, $stop-gradient-hover);
+
+ box-shadow: inset 0 1px 0 0 $inset-shadow-hover;
+ cursor: pointer;
+ }
+
+ &:active:not(:disabled),
+ &:focus:not(:disabled) {
+ $border-active: adjust-color($base-color, $saturation: 9%, $lightness: -14%);
+ $inset-shadow-active: adjust-color($base-color, $saturation: 7%, $lightness: -17%);
+
+ @if $grayscale == true {
+ $border-active: grayscale($border-active);
+ $inset-shadow-active: grayscale($inset-shadow-active);
+ }
+
+ border: 1px solid $border-active;
+ box-shadow: inset 0 0 8px 4px $inset-shadow-active, inset 0 0 8px 4px $inset-shadow-active;
+ }
+}
+
+// Shiny Button
+@mixin shiny($base-color, $grayscale: false, $textsize: inherit, $padding: 7px 18px) {
+ $color: hsl(0, 0, 100%);
+ $border: adjust-color($base-color, $red: -117, $green: -111, $blue: -81);
+ $border-bottom: adjust-color($base-color, $red: -126, $green: -127, $blue: -122);
+ $fourth-stop: adjust-color($base-color, $red: -79, $green: -70, $blue: -46);
+ $inset-shadow: adjust-color($base-color, $red: 37, $green: 29, $blue: 12);
+ $second-stop: adjust-color($base-color, $red: -56, $green: -50, $blue: -33);
+ $text-shadow: adjust-color($base-color, $red: -140, $green: -141, $blue: -114);
+ $third-stop: adjust-color($base-color, $red: -86, $green: -75, $blue: -48);
+
+ @if is-light($base-color) {
+ $color: hsl(0, 0, 20%);
+ $text-shadow: adjust-color($base-color, $saturation: 10%, $lightness: 4%);
+ }
+
+ @if $grayscale == true {
+ $border: grayscale($border);
+ $border-bottom: grayscale($border-bottom);
+ $fourth-stop: grayscale($fourth-stop);
+ $inset-shadow: grayscale($inset-shadow);
+ $second-stop: grayscale($second-stop);
+ $text-shadow: grayscale($text-shadow);
+ $third-stop: grayscale($third-stop);
+ }
+
+ @include linear-gradient(top, $base-color 0%, $second-stop 50%, $third-stop 50%, $fourth-stop 100%);
+
+ border: 1px solid $border;
+ border-bottom: 1px solid $border-bottom;
+ border-radius: 5px;
+ box-shadow: inset 0 1px 0 0 $inset-shadow;
+ color: $color;
+ display: inline-block;
+ font-size: $textsize;
+ font-weight: bold;
+ padding: $padding;
+ text-align: center;
+ text-decoration: none;
+ text-shadow: 0 -1px 1px $text-shadow;
+
+ &:hover:not(:disabled) {
+ $first-stop-hover: adjust-color($base-color, $red: -13, $green: -15, $blue: -18);
+ $second-stop-hover: adjust-color($base-color, $red: -66, $green: -62, $blue: -51);
+ $third-stop-hover: adjust-color($base-color, $red: -93, $green: -85, $blue: -66);
+ $fourth-stop-hover: adjust-color($base-color, $red: -86, $green: -80, $blue: -63);
+
+ @if $grayscale == true {
+ $first-stop-hover: grayscale($first-stop-hover);
+ $second-stop-hover: grayscale($second-stop-hover);
+ $third-stop-hover: grayscale($third-stop-hover);
+ $fourth-stop-hover: grayscale($fourth-stop-hover);
+ }
+
+ @include linear-gradient(top, $first-stop-hover 0%,
+ $second-stop-hover 50%,
+ $third-stop-hover 50%,
+ $fourth-stop-hover 100%);
+ cursor: pointer;
+ }
+
+ &:active:not(:disabled),
+ &:focus:not(:disabled) {
+ $inset-shadow-active: adjust-color($base-color, $red: -111, $green: -116, $blue: -122);
+
+ @if $grayscale == true {
+ $inset-shadow-active: grayscale($inset-shadow-active);
+ }
+
+ box-shadow: inset 0 0 20px 0 $inset-shadow-active;
+ }
+}
+
+// Pill Button
+@mixin pill($base-color, $grayscale: false, $textsize: inherit, $padding: 7px 18px) {
+ $color: hsl(0, 0, 100%);
+ $border-bottom: adjust-color($base-color, $hue: 8, $saturation: -11%, $lightness: -26%);
+ $border-sides: adjust-color($base-color, $hue: 4, $saturation: -21%, $lightness: -21%);
+ $border-top: adjust-color($base-color, $hue: -1, $saturation: -30%, $lightness: -15%);
+ $inset-shadow: adjust-color($base-color, $hue: -1, $saturation: -1%, $lightness: 7%);
+ $stop-gradient: adjust-color($base-color, $hue: 8, $saturation: 14%, $lightness: -10%);
+ $text-shadow: adjust-color($base-color, $hue: 5, $saturation: -19%, $lightness: -15%);
+
+ @if is-light($base-color) {
+ $color: hsl(0, 0, 20%);
+ $text-shadow: adjust-color($base-color, $saturation: 10%, $lightness: 4%);
+ }
+
+ @if $grayscale == true {
+ $border-bottom: grayscale($border-bottom);
+ $border-sides: grayscale($border-sides);
+ $border-top: grayscale($border-top);
+ $inset-shadow: grayscale($inset-shadow);
+ $stop-gradient: grayscale($stop-gradient);
+ $text-shadow: grayscale($text-shadow);
+ }
+
+ border: 1px solid $border-top;
+ border-color: $border-top $border-sides $border-bottom;
+ border-radius: 16px;
+ box-shadow: inset 0 1px 0 0 $inset-shadow;
+ color: $color;
+ display: inline-block;
+ font-size: $textsize;
+ font-weight: normal;
+ line-height: 1;
+ @include linear-gradient ($base-color, $stop-gradient);
+ padding: $padding;
+ text-align: center;
+ text-decoration: none;
+ text-shadow: 0 -1px 1px $text-shadow;
+ background-clip: padding-box;
+
+ &:hover:not(:disabled) {
+ $base-color-hover: adjust-color($base-color, $lightness: -4.5%);
+ $border-bottom: adjust-color($base-color, $hue: 8, $saturation: 13.5%, $lightness: -32%);
+ $border-sides: adjust-color($base-color, $hue: 4, $saturation: -2%, $lightness: -27%);
+ $border-top: adjust-color($base-color, $hue: -1, $saturation: -17%, $lightness: -21%);
+ $inset-shadow-hover: adjust-color($base-color, $saturation: -1%, $lightness: 3%);
+ $stop-gradient-hover: adjust-color($base-color, $hue: 8, $saturation: -4%, $lightness: -15.5%);
+ $text-shadow-hover: adjust-color($base-color, $hue: 5, $saturation: -5%, $lightness: -22%);
+
+ @if $grayscale == true {
+ $base-color-hover: grayscale($base-color-hover);
+ $border-bottom: grayscale($border-bottom);
+ $border-sides: grayscale($border-sides);
+ $border-top: grayscale($border-top);
+ $inset-shadow-hover: grayscale($inset-shadow-hover);
+ $stop-gradient-hover: grayscale($stop-gradient-hover);
+ $text-shadow-hover: grayscale($text-shadow-hover);
+ }
+
+ @include linear-gradient ($base-color-hover, $stop-gradient-hover);
+
+ background-clip: padding-box;
+ border: 1px solid $border-top;
+ border-color: $border-top $border-sides $border-bottom;
+ box-shadow: inset 0 1px 0 0 $inset-shadow-hover;
+ cursor: pointer;
+ text-shadow: 0 -1px 1px $text-shadow-hover;
+ }
+
+ &:active:not(:disabled),
+ &:focus:not(:disabled) {
+ $active-color: adjust-color($base-color, $hue: 4, $saturation: -12%, $lightness: -10%);
+ $border-active: adjust-color($base-color, $hue: 6, $saturation: -2.5%, $lightness: -30%);
+ $border-bottom-active: adjust-color($base-color, $hue: 11, $saturation: 6%, $lightness: -31%);
+ $inset-shadow-active: adjust-color($base-color, $hue: 9, $saturation: 2%, $lightness: -21.5%);
+ $text-shadow-active: adjust-color($base-color, $hue: 5, $saturation: -12%, $lightness: -21.5%);
+
+ @if $grayscale == true {
+ $active-color: grayscale($active-color);
+ $border-active: grayscale($border-active);
+ $border-bottom-active: grayscale($border-bottom-active);
+ $inset-shadow-active: grayscale($inset-shadow-active);
+ $text-shadow-active: grayscale($text-shadow-active);
+ }
+
+ background: $active-color;
+ border: 1px solid $border-active;
+ border-bottom: 1px solid $border-bottom-active;
+ box-shadow: inset 0 0 6px 3px $inset-shadow-active;
+ text-shadow: 0 -1px 1px $text-shadow-active;
+ }
+}
+
+// Flat Button
+@mixin flat($base-color, $grayscale: false, $textsize: inherit, $padding: 7px 18px) {
+ $color: hsl(0, 0, 100%);
+
+ @if is-light($base-color) {
+ $color: hsl(0, 0, 20%);
+ }
+
+ background-color: $base-color;
+ border-radius: 3px;
+ border: 0;
+ color: $color;
+ display: inline-block;
+ font-size: $textsize;
+ font-weight: bold;
+ padding: $padding;
+ text-decoration: none;
+ background-clip: padding-box;
+
+ &:hover:not(:disabled){
+ $base-color-hover: adjust-color($base-color, $saturation: 4%, $lightness: 5%);
+
+ @if $grayscale == true {
+ $base-color-hover: grayscale($base-color-hover);
+ }
+
+ background-color: $base-color-hover;
+ cursor: pointer;
+ }
+
+ &:active:not(:disabled),
+ &:focus:not(:disabled) {
+ $base-color-active: adjust-color($base-color, $saturation: -4%, $lightness: -5%);
+
+ @if $grayscale == true {
+ $base-color-active: grayscale($base-color-active);
+ }
+
+ background-color: $base-color-active;
+ cursor: pointer;
+ }
+}
+
+// Flexible grid
+@function flex-grid($columns, $container-columns: $fg-max-columns) {
+ $width: $columns * $fg-column + ($columns - 1) * $fg-gutter;
+ $container-width: $container-columns * $fg-column + ($container-columns - 1) * $fg-gutter;
+ @return percentage($width / $container-width);
+
+ @warn "The flex-grid function is deprecated and will be removed in the next major version release";
+}
+
+// Flexible gutter
+@function flex-gutter($container-columns: $fg-max-columns, $gutter: $fg-gutter) {
+ $container-width: $container-columns * $fg-column + ($container-columns - 1) * $fg-gutter;
+ @return percentage($gutter / $container-width);
+
+ @warn "The flex-gutter function is deprecated and will be removed in the next major version release";
+}
+
+@function grid-width($n) {
+ @return $n * $gw-column + ($n - 1) * $gw-gutter;
+
+ @warn "The grid-width function is deprecated and will be removed in the next major version release";
+}
+
+@function golden-ratio($value, $increment) {
+ @return modular-scale($increment, $value, $ratio: $golden);
+
+ @warn "The golden-ratio function is deprecated and will be removed in the next major version release. Please use the modular-scale function, instead.";
+}
+
+@mixin box-sizing($box) {
+ @include prefixer(box-sizing, $box, webkit moz spec);
+
+ @warn "The box-sizing mixin is deprecated and will be removed in the next major version release. This property can now be used un-prefixed.";
+}
diff --git a/Resources/public/sass/contrib/bourbon/_bourbon.scss b/Resources/public/sass/contrib/bourbon/_bourbon.scss
new file mode 100644
index 000000000..509fcc10e
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/_bourbon.scss
@@ -0,0 +1,87 @@
+// Bourbon 4.2.6
+// http://bourbon.io
+// Copyright 2011-2015 thoughtbot, inc.
+// MIT License
+
+@import "settings/prefixer";
+@import "settings/px-to-em";
+@import "settings/asset-pipeline";
+
+@import "functions/assign-inputs";
+@import "functions/contains";
+@import "functions/contains-falsy";
+@import "functions/is-length";
+@import "functions/is-light";
+@import "functions/is-number";
+@import "functions/is-size";
+@import "functions/px-to-em";
+@import "functions/px-to-rem";
+@import "functions/shade";
+@import "functions/strip-units";
+@import "functions/tint";
+@import "functions/transition-property-name";
+@import "functions/unpack";
+@import "functions/modular-scale";
+
+@import "helpers/convert-units";
+@import "helpers/directional-values";
+@import "helpers/font-source-declaration";
+@import "helpers/gradient-positions-parser";
+@import "helpers/linear-angle-parser";
+@import "helpers/linear-gradient-parser";
+@import "helpers/linear-positions-parser";
+@import "helpers/linear-side-corner-parser";
+@import "helpers/radial-arg-parser";
+@import "helpers/radial-positions-parser";
+@import "helpers/radial-gradient-parser";
+@import "helpers/render-gradients";
+@import "helpers/shape-size-stripper";
+@import "helpers/str-to-num";
+
+@import "css3/animation";
+@import "css3/appearance";
+@import "css3/backface-visibility";
+@import "css3/background";
+@import "css3/background-image";
+@import "css3/border-image";
+@import "css3/calc";
+@import "css3/columns";
+@import "css3/filter";
+@import "css3/flex-box";
+@import "css3/font-face";
+@import "css3/font-feature-settings";
+@import "css3/hidpi-media-query";
+@import "css3/hyphens";
+@import "css3/image-rendering";
+@import "css3/keyframes";
+@import "css3/linear-gradient";
+@import "css3/perspective";
+@import "css3/placeholder";
+@import "css3/radial-gradient";
+@import "css3/selection";
+@import "css3/text-decoration";
+@import "css3/transform";
+@import "css3/transition";
+@import "css3/user-select";
+
+@import "addons/border-color";
+@import "addons/border-radius";
+@import "addons/border-style";
+@import "addons/border-width";
+@import "addons/buttons";
+@import "addons/clearfix";
+@import "addons/ellipsis";
+@import "addons/font-stacks";
+@import "addons/hide-text";
+@import "addons/margin";
+@import "addons/padding";
+@import "addons/position";
+@import "addons/prefixer";
+@import "addons/retina-image";
+@import "addons/size";
+@import "addons/text-inputs";
+@import "addons/timing-functions";
+@import "addons/triangle";
+@import "addons/word-wrap";
+
+@import "bourbon-deprecated-upcoming";
diff --git a/Resources/public/sass/contrib/bourbon/addons/_border-color.scss b/Resources/public/sass/contrib/bourbon/addons/_border-color.scss
new file mode 100644
index 000000000..6f6ab36c4
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/addons/_border-color.scss
@@ -0,0 +1,26 @@
+@charset "UTF-8";
+
+/// Provides a quick method for targeting `border-color` on specific sides of a box. Use a `null` value to “skip” a side.
+///
+/// @param {Arglist} $vals
+/// List of arguments
+///
+/// @example scss - Usage
+/// .element {
+/// @include border-color(#a60b55 #76cd9c null #e8ae1a);
+/// }
+///
+/// @example css - CSS Output
+/// .element {
+/// border-left-color: #e8ae1a;
+/// border-right-color: #76cd9c;
+/// border-top-color: #a60b55;
+/// }
+///
+/// @require {mixin} directional-property
+///
+/// @output `border-color`
+
+@mixin border-color($vals...) {
+ @include directional-property(border, color, $vals...);
+}
diff --git a/Resources/public/sass/contrib/bourbon/addons/_border-radius.scss b/Resources/public/sass/contrib/bourbon/addons/_border-radius.scss
new file mode 100644
index 000000000..1f6586335
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/addons/_border-radius.scss
@@ -0,0 +1,48 @@
+@charset "UTF-8";
+
+/// Provides a quick method for targeting `border-radius` on both corners on the side of a box.
+///
+/// @param {Number} $radii
+/// List of arguments
+///
+/// @example scss - Usage
+/// .element-one {
+/// @include border-top-radius(5px);
+/// }
+///
+/// .element-two {
+/// @include border-left-radius(3px);
+/// }
+///
+/// @example css - CSS Output
+/// .element-one {
+/// border-top-left-radius: 5px;
+/// border-top-right-radius: 5px;
+/// }
+///
+/// .element-two {
+/// border-bottom-left-radius: 3px;
+/// border-top-left-radius: 3px;
+/// }
+///
+/// @output `border-radius`
+
+@mixin border-top-radius($radii) {
+ border-top-left-radius: $radii;
+ border-top-right-radius: $radii;
+}
+
+@mixin border-right-radius($radii) {
+ border-bottom-right-radius: $radii;
+ border-top-right-radius: $radii;
+}
+
+@mixin border-bottom-radius($radii) {
+ border-bottom-left-radius: $radii;
+ border-bottom-right-radius: $radii;
+}
+
+@mixin border-left-radius($radii) {
+ border-bottom-left-radius: $radii;
+ border-top-left-radius: $radii;
+}
diff --git a/Resources/public/sass/contrib/bourbon/addons/_border-style.scss b/Resources/public/sass/contrib/bourbon/addons/_border-style.scss
new file mode 100644
index 000000000..d86ee79d9
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/addons/_border-style.scss
@@ -0,0 +1,25 @@
+@charset "UTF-8";
+
+/// Provides a quick method for targeting `border-style` on specific sides of a box. Use a `null` value to “skip” a side.
+///
+/// @param {Arglist} $vals
+/// List of arguments
+///
+/// @example scss - Usage
+/// .element {
+/// @include border-style(dashed null solid);
+/// }
+///
+/// @example css - CSS Output
+/// .element {
+/// border-bottom-style: solid;
+/// border-top-style: dashed;
+/// }
+///
+/// @require {mixin} directional-property
+///
+/// @output `border-style`
+
+@mixin border-style($vals...) {
+ @include directional-property(border, style, $vals...);
+}
diff --git a/Resources/public/sass/contrib/bourbon/addons/_border-width.scss b/Resources/public/sass/contrib/bourbon/addons/_border-width.scss
new file mode 100644
index 000000000..0ea2d4b71
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/addons/_border-width.scss
@@ -0,0 +1,25 @@
+@charset "UTF-8";
+
+/// Provides a quick method for targeting `border-width` on specific sides of a box. Use a `null` value to “skip” a side.
+///
+/// @param {Arglist} $vals
+/// List of arguments
+///
+/// @example scss - Usage
+/// .element {
+/// @include border-width(1em null 20px);
+/// }
+///
+/// @example css - CSS Output
+/// .element {
+/// border-bottom-width: 20px;
+/// border-top-width: 1em;
+/// }
+///
+/// @require {mixin} directional-property
+///
+/// @output `border-width`
+
+@mixin border-width($vals...) {
+ @include directional-property(border, width, $vals...);
+}
diff --git a/Resources/public/sass/contrib/bourbon/addons/_buttons.scss b/Resources/public/sass/contrib/bourbon/addons/_buttons.scss
new file mode 100644
index 000000000..debeabc53
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/addons/_buttons.scss
@@ -0,0 +1,64 @@
+@charset "UTF-8";
+
+/// Generates variables for all buttons. Please note that you must use interpolation on the variable: `#{$all-buttons}`.
+///
+/// @example scss - Usage
+/// #{$all-buttons} {
+/// background-color: #f00;
+/// }
+///
+/// #{$all-buttons-focus},
+/// #{$all-buttons-hover} {
+/// background-color: #0f0;
+/// }
+///
+/// #{$all-buttons-active} {
+/// background-color: #00f;
+/// }
+///
+/// @example css - CSS Output
+/// button,
+/// input[type="button"],
+/// input[type="reset"],
+/// input[type="submit"] {
+/// background-color: #f00;
+/// }
+///
+/// button:focus,
+/// input[type="button"]:focus,
+/// input[type="reset"]:focus,
+/// input[type="submit"]:focus,
+/// button:hover,
+/// input[type="button"]:hover,
+/// input[type="reset"]:hover,
+/// input[type="submit"]:hover {
+/// background-color: #0f0;
+/// }
+///
+/// button:active,
+/// input[type="button"]:active,
+/// input[type="reset"]:active,
+/// input[type="submit"]:active {
+/// background-color: #00f;
+/// }
+///
+/// @require assign-inputs
+///
+/// @type List
+///
+/// @todo Remove double assigned variables (Lines 59–62) in v5.0.0
+
+$buttons-list: 'button',
+ 'input[type="button"]',
+ 'input[type="reset"]',
+ 'input[type="submit"]';
+
+$all-buttons: assign-inputs($buttons-list);
+$all-buttons-active: assign-inputs($buttons-list, active);
+$all-buttons-focus: assign-inputs($buttons-list, focus);
+$all-buttons-hover: assign-inputs($buttons-list, hover);
+
+$all-button-inputs: $all-buttons;
+$all-button-inputs-active: $all-buttons-active;
+$all-button-inputs-focus: $all-buttons-focus;
+$all-button-inputs-hover: $all-buttons-hover;
diff --git a/Resources/public/sass/contrib/bourbon/addons/_clearfix.scss b/Resources/public/sass/contrib/bourbon/addons/_clearfix.scss
new file mode 100644
index 000000000..11313d66f
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/addons/_clearfix.scss
@@ -0,0 +1,25 @@
+@charset "UTF-8";
+
+/// Provides an easy way to include a clearfix for containing floats.
+///
+/// @link http://cssmojo.com/latest_new_clearfix_so_far/
+///
+/// @example scss - Usage
+/// .element {
+/// @include clearfix;
+/// }
+///
+/// @example css - CSS Output
+/// .element::after {
+/// clear: both;
+/// content: "";
+/// display: table;
+/// }
+
+@mixin clearfix {
+ &::after {
+ clear: both;
+ content: "";
+ display: table;
+ }
+}
diff --git a/Resources/public/sass/contrib/bourbon/addons/_ellipsis.scss b/Resources/public/sass/contrib/bourbon/addons/_ellipsis.scss
new file mode 100644
index 000000000..a367f651c
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/addons/_ellipsis.scss
@@ -0,0 +1,30 @@
+@charset "UTF-8";
+
+/// Truncates text and adds an ellipsis to represent overflow.
+///
+/// @param {Number} $width [100%]
+/// Max-width for the string to respect before being truncated
+///
+/// @example scss - Usage
+/// .element {
+/// @include ellipsis;
+/// }
+///
+/// @example css - CSS Output
+/// .element {
+/// display: inline-block;
+/// max-width: 100%;
+/// overflow: hidden;
+/// text-overflow: ellipsis;
+/// white-space: nowrap;
+/// word-wrap: normal;
+/// }
+
+@mixin ellipsis($width: 100%) {
+ display: inline-block;
+ max-width: $width;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ word-wrap: normal;
+}
diff --git a/Resources/public/sass/contrib/bourbon/addons/_font-stacks.scss b/Resources/public/sass/contrib/bourbon/addons/_font-stacks.scss
new file mode 100644
index 000000000..57128f422
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/addons/_font-stacks.scss
@@ -0,0 +1,31 @@
+@charset "UTF-8";
+
+/// Georgia font stack.
+///
+/// @type List
+
+$georgia: "Georgia", "Cambria", "Times New Roman", "Times", serif;
+
+/// Helvetica font stack.
+///
+/// @type List
+
+$helvetica: "Helvetica Neue", "Helvetica", "Roboto", "Arial", sans-serif;
+
+/// Lucida Grande font stack.
+///
+/// @type List
+
+$lucida-grande: "Lucida Grande", "Tahoma", "Verdana", "Arial", sans-serif;
+
+/// Monospace font stack.
+///
+/// @type List
+
+$monospace: "Bitstream Vera Sans Mono", "Consolas", "Courier", monospace;
+
+/// Verdana font stack.
+///
+/// @type List
+
+$verdana: "Verdana", "Geneva", sans-serif;
diff --git a/Resources/public/sass/contrib/bourbon/addons/_hide-text.scss b/Resources/public/sass/contrib/bourbon/addons/_hide-text.scss
new file mode 100644
index 000000000..4caf20ed5
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/addons/_hide-text.scss
@@ -0,0 +1,27 @@
+/// Hides the text in an element, commonly used to show an image. Some elements will need block-level styles applied.
+///
+/// @link http://zeldman.com/2012/03/01/replacing-the-9999px-hack-new-image-replacement
+///
+/// @example scss - Usage
+/// .element {
+/// @include hide-text;
+/// }
+///
+/// @example css - CSS Output
+/// .element {
+/// overflow: hidden;
+/// text-indent: 101%;
+/// white-space: nowrap;
+/// }
+///
+/// @todo Remove height argument in v5.0.0
+
+@mixin hide-text($height: null) {
+ overflow: hidden;
+ text-indent: 101%;
+ white-space: nowrap;
+
+ @if $height {
+ @warn "The `hide-text` mixin has changed and no longer requires a height. The height argument will no longer be accepted in v5.0.0";
+ }
+}
diff --git a/Resources/public/sass/contrib/bourbon/addons/_margin.scss b/Resources/public/sass/contrib/bourbon/addons/_margin.scss
new file mode 100644
index 000000000..674f4e5f6
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/addons/_margin.scss
@@ -0,0 +1,26 @@
+@charset "UTF-8";
+
+/// Provides a quick method for targeting `margin` on specific sides of a box. Use a `null` value to “skip” a side.
+///
+/// @param {Arglist} $vals
+/// List of arguments
+///
+/// @example scss - Usage
+/// .element {
+/// @include margin(null 10px 3em 20vh);
+/// }
+///
+/// @example css - CSS Output
+/// .element {
+/// margin-bottom: 3em;
+/// margin-left: 20vh;
+/// margin-right: 10px;
+/// }
+///
+/// @require {mixin} directional-property
+///
+/// @output `margin`
+
+@mixin margin($vals...) {
+ @include directional-property(margin, false, $vals...);
+}
diff --git a/Resources/public/sass/contrib/bourbon/addons/_padding.scss b/Resources/public/sass/contrib/bourbon/addons/_padding.scss
new file mode 100644
index 000000000..40a5f006b
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/addons/_padding.scss
@@ -0,0 +1,26 @@
+@charset "UTF-8";
+
+/// Provides a quick method for targeting `padding` on specific sides of a box. Use a `null` value to “skip” a side.
+///
+/// @param {Arglist} $vals
+/// List of arguments
+///
+/// @example scss - Usage
+/// .element {
+/// @include padding(12vh null 10px 5%);
+/// }
+///
+/// @example css - CSS Output
+/// .element {
+/// padding-bottom: 10px;
+/// padding-left: 5%;
+/// padding-top: 12vh;
+/// }
+///
+/// @require {mixin} directional-property
+///
+/// @output `padding`
+
+@mixin padding($vals...) {
+ @include directional-property(padding, false, $vals...);
+}
diff --git a/Resources/public/sass/contrib/bourbon/addons/_position.scss b/Resources/public/sass/contrib/bourbon/addons/_position.scss
new file mode 100644
index 000000000..e460f3ffd
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/addons/_position.scss
@@ -0,0 +1,48 @@
+@charset "UTF-8";
+
+/// Provides a quick method for setting an element’s position. Use a `null` value to “skip” a side.
+///
+/// @param {Position} $position [relative]
+/// A CSS position value
+///
+/// @param {Arglist} $coordinates [null null null null]
+/// List of values that correspond to the 4-value syntax for the edges of a box
+///
+/// @example scss - Usage
+/// .element {
+/// @include position(absolute, 0 null null 10em);
+/// }
+///
+/// @example css - CSS Output
+/// .element {
+/// left: 10em;
+/// position: absolute;
+/// top: 0;
+/// }
+///
+/// @require {function} is-length
+/// @require {function} unpack
+
+@mixin position($position: relative, $coordinates: null null null null) {
+ @if type-of($position) == list {
+ $coordinates: $position;
+ $position: relative;
+ }
+
+ $coordinates: unpack($coordinates);
+
+ $offsets: (
+ top: nth($coordinates, 1),
+ right: nth($coordinates, 2),
+ bottom: nth($coordinates, 3),
+ left: nth($coordinates, 4)
+ );
+
+ position: $position;
+
+ @each $offset, $value in $offsets {
+ @if is-length($value) {
+ #{$offset}: $value;
+ }
+ }
+}
diff --git a/Resources/public/sass/contrib/bourbon/addons/_prefixer.scss b/Resources/public/sass/contrib/bourbon/addons/_prefixer.scss
new file mode 100644
index 000000000..2b6f73138
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/addons/_prefixer.scss
@@ -0,0 +1,66 @@
+@charset "UTF-8";
+
+/// A mixin for generating vendor prefixes on non-standardized properties.
+///
+/// @param {String} $property
+/// Property to prefix
+///
+/// @param {*} $value
+/// Value to use
+///
+/// @param {List} $prefixes
+/// Prefixes to define
+///
+/// @example scss - Usage
+/// .element {
+/// @include prefixer(border-radius, 10px, webkit ms spec);
+/// }
+///
+/// @example css - CSS Output
+/// .element {
+/// -webkit-border-radius: 10px;
+/// -moz-border-radius: 10px;
+/// border-radius: 10px;
+/// }
+///
+/// @require {variable} $prefix-for-webkit
+/// @require {variable} $prefix-for-mozilla
+/// @require {variable} $prefix-for-microsoft
+/// @require {variable} $prefix-for-opera
+/// @require {variable} $prefix-for-spec
+
+@mixin prefixer($property, $value, $prefixes) {
+ @each $prefix in $prefixes {
+ @if $prefix == webkit {
+ @if $prefix-for-webkit {
+ -webkit-#{$property}: $value;
+ }
+ } @else if $prefix == moz {
+ @if $prefix-for-mozilla {
+ -moz-#{$property}: $value;
+ }
+ } @else if $prefix == ms {
+ @if $prefix-for-microsoft {
+ -ms-#{$property}: $value;
+ }
+ } @else if $prefix == o {
+ @if $prefix-for-opera {
+ -o-#{$property}: $value;
+ }
+ } @else if $prefix == spec {
+ @if $prefix-for-spec {
+ #{$property}: $value;
+ }
+ } @else {
+ @warn "Unrecognized prefix: #{$prefix}";
+ }
+ }
+}
+
+@mixin disable-prefix-for-all() {
+ $prefix-for-webkit: false !global;
+ $prefix-for-mozilla: false !global;
+ $prefix-for-microsoft: false !global;
+ $prefix-for-opera: false !global;
+ $prefix-for-spec: false !global;
+}
diff --git a/Resources/public/sass/contrib/bourbon/addons/_retina-image.scss b/Resources/public/sass/contrib/bourbon/addons/_retina-image.scss
new file mode 100644
index 000000000..7febbd751
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/addons/_retina-image.scss
@@ -0,0 +1,25 @@
+@mixin retina-image($filename, $background-size, $extension: png, $retina-filename: null, $retina-suffix: _2x, $asset-pipeline: $asset-pipeline) {
+ @if $asset-pipeline {
+ background-image: image-url("#{$filename}.#{$extension}");
+ } @else {
+ background-image: url("#{$filename}.#{$extension}");
+ }
+
+ @include hidpi {
+ @if $asset-pipeline {
+ @if $retina-filename {
+ background-image: image-url("#{$retina-filename}.#{$extension}");
+ } @else {
+ background-image: image-url("#{$filename}#{$retina-suffix}.#{$extension}");
+ }
+ } @else {
+ @if $retina-filename {
+ background-image: url("#{$retina-filename}.#{$extension}");
+ } @else {
+ background-image: url("#{$filename}#{$retina-suffix}.#{$extension}");
+ }
+ }
+
+ background-size: $background-size;
+ }
+}
diff --git a/Resources/public/sass/contrib/bourbon/addons/_size.scss b/Resources/public/sass/contrib/bourbon/addons/_size.scss
new file mode 100644
index 000000000..a2992a34c
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/addons/_size.scss
@@ -0,0 +1,51 @@
+@charset "UTF-8";
+
+/// Sets the `width` and `height` of the element.
+///
+/// @param {List} $size
+/// A list of at most 2 size values.
+///
+/// If there is only a single value in `$size` it is used for both width and height. All units are supported.
+///
+/// @example scss - Usage
+/// .first-element {
+/// @include size(2em);
+/// }
+///
+/// .second-element {
+/// @include size(auto 10em);
+/// }
+///
+/// @example css - CSS Output
+/// .first-element {
+/// width: 2em;
+/// height: 2em;
+/// }
+///
+/// .second-element {
+/// width: auto;
+/// height: 10em;
+/// }
+///
+/// @todo Refactor in 5.0.0 to use a comma-separated argument
+
+@mixin size($value) {
+ $width: nth($value, 1);
+ $height: $width;
+
+ @if length($value) > 1 {
+ $height: nth($value, 2);
+ }
+
+ @if is-size($height) {
+ height: $height;
+ } @else {
+ @warn "`#{$height}` is not a valid length for the `$height` parameter in the `size` mixin.";
+ }
+
+ @if is-size($width) {
+ width: $width;
+ } @else {
+ @warn "`#{$width}` is not a valid length for the `$width` parameter in the `size` mixin.";
+ }
+}
diff --git a/Resources/public/sass/contrib/bourbon/addons/_text-inputs.scss b/Resources/public/sass/contrib/bourbon/addons/_text-inputs.scss
new file mode 100644
index 000000000..1eb7a5451
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/addons/_text-inputs.scss
@@ -0,0 +1,113 @@
+@charset "UTF-8";
+
+/// Generates variables for all text-based inputs. Please note that you must use interpolation on the variable: `#{$all-text-inputs}`.
+///
+/// @example scss - Usage
+/// #{$all-text-inputs} {
+/// border: 1px solid #f00;
+/// }
+///
+/// #{$all-text-inputs-focus},
+/// #{$all-text-inputs-hover} {
+/// border: 1px solid #0f0;
+/// }
+///
+/// #{$all-text-inputs-active} {
+/// border: 1px solid #00f;
+/// }
+///
+/// @example css - CSS Output
+/// input[type="color"],
+/// input[type="date"],
+/// input[type="datetime"],
+/// input[type="datetime-local"],
+/// input[type="email"],
+/// input[type="month"],
+/// input[type="number"],
+/// input[type="password"],
+/// input[type="search"],
+/// input[type="tel"],
+/// input[type="text"],
+/// input[type="time"],
+/// input[type="url"],
+/// input[type="week"],
+/// textarea {
+/// border: 1px solid #f00;
+/// }
+///
+/// input[type="color"]:focus,
+/// input[type="date"]:focus,
+/// input[type="datetime"]:focus,
+/// input[type="datetime-local"]:focus,
+/// input[type="email"]:focus,
+/// input[type="month"]:focus,
+/// input[type="number"]:focus,
+/// input[type="password"]:focus,
+/// input[type="search"]:focus,
+/// input[type="tel"]:focus,
+/// input[type="text"]:focus,
+/// input[type="time"]:focus,
+/// input[type="url"]:focus,
+/// input[type="week"]:focus,
+/// textarea:focus,
+/// input[type="color"]:hover,
+/// input[type="date"]:hover,
+/// input[type="datetime"]:hover,
+/// input[type="datetime-local"]:hover,
+/// input[type="email"]:hover,
+/// input[type="month"]:hover,
+/// input[type="number"]:hover,
+/// input[type="password"]:hover,
+/// input[type="search"]:hover,
+/// input[type="tel"]:hover,
+/// input[type="text"]:hover,
+/// input[type="time"]:hover,
+/// input[type="url"]:hover,
+/// input[type="week"]:hover,
+/// textarea:hover {
+/// border: 1px solid #0f0;
+/// }
+///
+/// input[type="color"]:active,
+/// input[type="date"]:active,
+/// input[type="datetime"]:active,
+/// input[type="datetime-local"]:active,
+/// input[type="email"]:active,
+/// input[type="month"]:active,
+/// input[type="number"]:active,
+/// input[type="password"]:active,
+/// input[type="search"]:active,
+/// input[type="tel"]:active,
+/// input[type="text"]:active,
+/// input[type="time"]:active,
+/// input[type="url"]:active,
+/// input[type="week"]:active,
+/// textarea:active {
+/// border: 1px solid #00f;
+/// }
+///
+/// @require assign-inputs
+///
+/// @type List
+
+$text-inputs-list: 'input[type="color"]',
+ 'input[type="date"]',
+ 'input[type="datetime"]',
+ 'input[type="datetime-local"]',
+ 'input[type="email"]',
+ 'input[type="month"]',
+ 'input[type="number"]',
+ 'input[type="password"]',
+ 'input[type="search"]',
+ 'input[type="tel"]',
+ 'input[type="text"]',
+ 'input[type="time"]',
+ 'input[type="url"]',
+ 'input[type="week"]',
+ 'input:not([type])',
+ 'textarea';
+
+$all-text-inputs: assign-inputs($text-inputs-list);
+$all-text-inputs-active: assign-inputs($text-inputs-list, active);
+$all-text-inputs-focus: assign-inputs($text-inputs-list, focus);
+$all-text-inputs-hover: assign-inputs($text-inputs-list, hover);
diff --git a/Resources/public/sass/contrib/bourbon/addons/_timing-functions.scss b/Resources/public/sass/contrib/bourbon/addons/_timing-functions.scss
new file mode 100644
index 000000000..20e5f1d40
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/addons/_timing-functions.scss
@@ -0,0 +1,34 @@
+@charset "UTF-8";
+
+/// CSS cubic-bezier timing functions. Timing functions courtesy of jquery.easie (github.com/jaukia/easie)
+///
+/// Timing functions are the same as demoed here: http://jqueryui.com/resources/demos/effect/easing.html
+///
+/// @type cubic-bezier
+
+$ease-in-quad: cubic-bezier(0.550, 0.085, 0.680, 0.530);
+$ease-in-cubic: cubic-bezier(0.550, 0.055, 0.675, 0.190);
+$ease-in-quart: cubic-bezier(0.895, 0.030, 0.685, 0.220);
+$ease-in-quint: cubic-bezier(0.755, 0.050, 0.855, 0.060);
+$ease-in-sine: cubic-bezier(0.470, 0.000, 0.745, 0.715);
+$ease-in-expo: cubic-bezier(0.950, 0.050, 0.795, 0.035);
+$ease-in-circ: cubic-bezier(0.600, 0.040, 0.980, 0.335);
+$ease-in-back: cubic-bezier(0.600, -0.280, 0.735, 0.045);
+
+$ease-out-quad: cubic-bezier(0.250, 0.460, 0.450, 0.940);
+$ease-out-cubic: cubic-bezier(0.215, 0.610, 0.355, 1.000);
+$ease-out-quart: cubic-bezier(0.165, 0.840, 0.440, 1.000);
+$ease-out-quint: cubic-bezier(0.230, 1.000, 0.320, 1.000);
+$ease-out-sine: cubic-bezier(0.390, 0.575, 0.565, 1.000);
+$ease-out-expo: cubic-bezier(0.190, 1.000, 0.220, 1.000);
+$ease-out-circ: cubic-bezier(0.075, 0.820, 0.165, 1.000);
+$ease-out-back: cubic-bezier(0.175, 0.885, 0.320, 1.275);
+
+$ease-in-out-quad: cubic-bezier(0.455, 0.030, 0.515, 0.955);
+$ease-in-out-cubic: cubic-bezier(0.645, 0.045, 0.355, 1.000);
+$ease-in-out-quart: cubic-bezier(0.770, 0.000, 0.175, 1.000);
+$ease-in-out-quint: cubic-bezier(0.860, 0.000, 0.070, 1.000);
+$ease-in-out-sine: cubic-bezier(0.445, 0.050, 0.550, 0.950);
+$ease-in-out-expo: cubic-bezier(1.000, 0.000, 0.000, 1.000);
+$ease-in-out-circ: cubic-bezier(0.785, 0.135, 0.150, 0.860);
+$ease-in-out-back: cubic-bezier(0.680, -0.550, 0.265, 1.550);
diff --git a/Resources/public/sass/contrib/bourbon/addons/_triangle.scss b/Resources/public/sass/contrib/bourbon/addons/_triangle.scss
new file mode 100644
index 000000000..8a1ed9cd0
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/addons/_triangle.scss
@@ -0,0 +1,63 @@
+@mixin triangle($size, $color, $direction) {
+ $width: nth($size, 1);
+ $height: nth($size, length($size));
+ $foreground-color: nth($color, 1);
+ $background-color: if(length($color) == 2, nth($color, 2), transparent);
+ height: 0;
+ width: 0;
+
+ @if ($direction == up) or ($direction == down) or ($direction == right) or ($direction == left) {
+ $width: $width / 2;
+ $height: if(length($size) > 1, $height, $height/2);
+
+ @if $direction == up {
+ border-bottom: $height solid $foreground-color;
+ border-left: $width solid $background-color;
+ border-right: $width solid $background-color;
+ } @else if $direction == right {
+ border-bottom: $width solid $background-color;
+ border-left: $height solid $foreground-color;
+ border-top: $width solid $background-color;
+ } @else if $direction == down {
+ border-left: $width solid $background-color;
+ border-right: $width solid $background-color;
+ border-top: $height solid $foreground-color;
+ } @else if $direction == left {
+ border-bottom: $width solid $background-color;
+ border-right: $height solid $foreground-color;
+ border-top: $width solid $background-color;
+ }
+ } @else if ($direction == up-right) or ($direction == up-left) {
+ border-top: $height solid $foreground-color;
+
+ @if $direction == up-right {
+ border-left: $width solid $background-color;
+ } @else if $direction == up-left {
+ border-right: $width solid $background-color;
+ }
+ } @else if ($direction == down-right) or ($direction == down-left) {
+ border-bottom: $height solid $foreground-color;
+
+ @if $direction == down-right {
+ border-left: $width solid $background-color;
+ } @else if $direction == down-left {
+ border-right: $width solid $background-color;
+ }
+ } @else if ($direction == inset-up) {
+ border-color: $background-color $background-color $foreground-color;
+ border-style: solid;
+ border-width: $height $width;
+ } @else if ($direction == inset-down) {
+ border-color: $foreground-color $background-color $background-color;
+ border-style: solid;
+ border-width: $height $width;
+ } @else if ($direction == inset-right) {
+ border-color: $background-color $background-color $background-color $foreground-color;
+ border-style: solid;
+ border-width: $width $height;
+ } @else if ($direction == inset-left) {
+ border-color: $background-color $foreground-color $background-color $background-color;
+ border-style: solid;
+ border-width: $width $height;
+ }
+}
diff --git a/Resources/public/sass/contrib/bourbon/addons/_word-wrap.scss b/Resources/public/sass/contrib/bourbon/addons/_word-wrap.scss
new file mode 100644
index 000000000..64856a925
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/addons/_word-wrap.scss
@@ -0,0 +1,29 @@
+@charset "UTF-8";
+
+/// Provides an easy way to change the `word-wrap` property.
+///
+/// @param {String} $wrap [break-word]
+/// Value for the `word-break` property.
+///
+/// @example scss - Usage
+/// .wrapper {
+/// @include word-wrap(break-word);
+/// }
+///
+/// @example css - CSS Output
+/// .wrapper {
+/// overflow-wrap: break-word;
+/// word-break: break-all;
+/// word-wrap: break-word;
+/// }
+
+@mixin word-wrap($wrap: break-word) {
+ overflow-wrap: $wrap;
+ word-wrap: $wrap;
+
+ @if $wrap == break-word {
+ word-break: break-all;
+ } @else {
+ word-break: $wrap;
+ }
+}
diff --git a/Resources/public/sass/contrib/bourbon/css3/_animation.scss b/Resources/public/sass/contrib/bourbon/css3/_animation.scss
new file mode 100644
index 000000000..aac675f5a
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/css3/_animation.scss
@@ -0,0 +1,43 @@
+// http://www.w3.org/TR/css3-animations/#the-animation-name-property-
+// Each of these mixins support comma separated lists of values, which allows different transitions for individual properties to be described in a single style rule. Each value in the list corresponds to the value at that same position in the other properties.
+
+@mixin animation($animations...) {
+ @include prefixer(animation, $animations, webkit moz spec);
+}
+
+@mixin animation-name($names...) {
+ @include prefixer(animation-name, $names, webkit moz spec);
+}
+
+@mixin animation-duration($times...) {
+ @include prefixer(animation-duration, $times, webkit moz spec);
+}
+
+@mixin animation-timing-function($motions...) {
+ // ease | linear | ease-in | ease-out | ease-in-out
+ @include prefixer(animation-timing-function, $motions, webkit moz spec);
+}
+
+@mixin animation-iteration-count($values...) {
+ // infinite |
+ @include prefixer(animation-iteration-count, $values, webkit moz spec);
+}
+
+@mixin animation-direction($directions...) {
+ // normal | alternate
+ @include prefixer(animation-direction, $directions, webkit moz spec);
+}
+
+@mixin animation-play-state($states...) {
+ // running | paused
+ @include prefixer(animation-play-state, $states, webkit moz spec);
+}
+
+@mixin animation-delay($times...) {
+ @include prefixer(animation-delay, $times, webkit moz spec);
+}
+
+@mixin animation-fill-mode($modes...) {
+ // none | forwards | backwards | both
+ @include prefixer(animation-fill-mode, $modes, webkit moz spec);
+}
diff --git a/Resources/public/sass/contrib/bourbon/css3/_appearance.scss b/Resources/public/sass/contrib/bourbon/css3/_appearance.scss
new file mode 100644
index 000000000..abddc0204
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/css3/_appearance.scss
@@ -0,0 +1,3 @@
+@mixin appearance($value) {
+ @include prefixer(appearance, $value, webkit moz ms o spec);
+}
diff --git a/Resources/public/sass/contrib/bourbon/css3/_backface-visibility.scss b/Resources/public/sass/contrib/bourbon/css3/_backface-visibility.scss
new file mode 100644
index 000000000..fc68e2dd0
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/css3/_backface-visibility.scss
@@ -0,0 +1,3 @@
+@mixin backface-visibility($visibility) {
+ @include prefixer(backface-visibility, $visibility, webkit spec);
+}
diff --git a/Resources/public/sass/contrib/bourbon/css3/_background-image.scss b/Resources/public/sass/contrib/bourbon/css3/_background-image.scss
new file mode 100644
index 000000000..6ed19ab58
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/css3/_background-image.scss
@@ -0,0 +1,42 @@
+//************************************************************************//
+// Background-image property for adding multiple background images with
+// gradients, or for stringing multiple gradients together.
+//************************************************************************//
+
+@mixin background-image($images...) {
+ $webkit-images: ();
+ $spec-images: ();
+
+ @each $image in $images {
+ $webkit-image: ();
+ $spec-image: ();
+
+ @if (type-of($image) == string) {
+ $url-str: str-slice($image, 1, 3);
+ $gradient-type: str-slice($image, 1, 6);
+
+ @if $url-str == "url" {
+ $webkit-image: $image;
+ $spec-image: $image;
+ }
+
+ @else if $gradient-type == "linear" {
+ $gradients: _linear-gradient-parser($image);
+ $webkit-image: map-get($gradients, webkit-image);
+ $spec-image: map-get($gradients, spec-image);
+ }
+
+ @else if $gradient-type == "radial" {
+ $gradients: _radial-gradient-parser($image);
+ $webkit-image: map-get($gradients, webkit-image);
+ $spec-image: map-get($gradients, spec-image);
+ }
+ }
+
+ $webkit-images: append($webkit-images, $webkit-image, comma);
+ $spec-images: append($spec-images, $spec-image, comma);
+ }
+
+ background-image: $webkit-images;
+ background-image: $spec-images;
+}
diff --git a/Resources/public/sass/contrib/bourbon/css3/_background.scss b/Resources/public/sass/contrib/bourbon/css3/_background.scss
new file mode 100644
index 000000000..019db0ed3
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/css3/_background.scss
@@ -0,0 +1,55 @@
+//************************************************************************//
+// Background property for adding multiple backgrounds using shorthand
+// notation.
+//************************************************************************//
+
+@mixin background($backgrounds...) {
+ $webkit-backgrounds: ();
+ $spec-backgrounds: ();
+
+ @each $background in $backgrounds {
+ $webkit-background: ();
+ $spec-background: ();
+ $background-type: type-of($background);
+
+ @if $background-type == string or $background-type == list {
+ $background-str: if($background-type == list, nth($background, 1), $background);
+
+ $url-str: str-slice($background-str, 1, 3);
+ $gradient-type: str-slice($background-str, 1, 6);
+
+ @if $url-str == "url" {
+ $webkit-background: $background;
+ $spec-background: $background;
+ }
+
+ @else if $gradient-type == "linear" {
+ $gradients: _linear-gradient-parser("#{$background}");
+ $webkit-background: map-get($gradients, webkit-image);
+ $spec-background: map-get($gradients, spec-image);
+ }
+
+ @else if $gradient-type == "radial" {
+ $gradients: _radial-gradient-parser("#{$background}");
+ $webkit-background: map-get($gradients, webkit-image);
+ $spec-background: map-get($gradients, spec-image);
+ }
+
+ @else {
+ $webkit-background: $background;
+ $spec-background: $background;
+ }
+ }
+
+ @else {
+ $webkit-background: $background;
+ $spec-background: $background;
+ }
+
+ $webkit-backgrounds: append($webkit-backgrounds, $webkit-background, comma);
+ $spec-backgrounds: append($spec-backgrounds, $spec-background, comma);
+ }
+
+ background: $webkit-backgrounds;
+ background: $spec-backgrounds;
+}
diff --git a/Resources/public/sass/contrib/bourbon/css3/_border-image.scss b/Resources/public/sass/contrib/bourbon/css3/_border-image.scss
new file mode 100644
index 000000000..cf568ce6d
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/css3/_border-image.scss
@@ -0,0 +1,59 @@
+@mixin border-image($borders...) {
+ $webkit-borders: ();
+ $spec-borders: ();
+
+ @each $border in $borders {
+ $webkit-border: ();
+ $spec-border: ();
+ $border-type: type-of($border);
+
+ @if $border-type == string or list {
+ $border-str: if($border-type == list, nth($border, 1), $border);
+
+ $url-str: str-slice($border-str, 1, 3);
+ $gradient-type: str-slice($border-str, 1, 6);
+
+ @if $url-str == "url" {
+ $webkit-border: $border;
+ $spec-border: $border;
+ }
+
+ @else if $gradient-type == "linear" {
+ $gradients: _linear-gradient-parser("#{$border}");
+ $webkit-border: map-get($gradients, webkit-image);
+ $spec-border: map-get($gradients, spec-image);
+ }
+
+ @else if $gradient-type == "radial" {
+ $gradients: _radial-gradient-parser("#{$border}");
+ $webkit-border: map-get($gradients, webkit-image);
+ $spec-border: map-get($gradients, spec-image);
+ }
+
+ @else {
+ $webkit-border: $border;
+ $spec-border: $border;
+ }
+ }
+
+ @else {
+ $webkit-border: $border;
+ $spec-border: $border;
+ }
+
+ $webkit-borders: append($webkit-borders, $webkit-border, comma);
+ $spec-borders: append($spec-borders, $spec-border, comma);
+ }
+
+ -webkit-border-image: $webkit-borders;
+ border-image: $spec-borders;
+ border-style: solid;
+}
+
+//Examples:
+// @include border-image(url("image.png"));
+// @include border-image(url("image.png") 20 stretch);
+// @include border-image(linear-gradient(45deg, orange, yellow));
+// @include border-image(linear-gradient(45deg, orange, yellow) stretch);
+// @include border-image(linear-gradient(45deg, orange, yellow) 20 30 40 50 stretch round);
+// @include border-image(radial-gradient(top, cover, orange, yellow, orange));
diff --git a/Resources/public/sass/contrib/bourbon/css3/_calc.scss b/Resources/public/sass/contrib/bourbon/css3/_calc.scss
new file mode 100644
index 000000000..0bfc738dd
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/css3/_calc.scss
@@ -0,0 +1,4 @@
+@mixin calc($property, $value) {
+ #{$property}: -webkit-calc(#{$value});
+ #{$property}: calc(#{$value});
+}
diff --git a/Resources/public/sass/contrib/bourbon/css3/_columns.scss b/Resources/public/sass/contrib/bourbon/css3/_columns.scss
new file mode 100644
index 000000000..96117670c
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/css3/_columns.scss
@@ -0,0 +1,47 @@
+@mixin columns($arg: auto) {
+ // ||
+ @include prefixer(columns, $arg, webkit moz spec);
+}
+
+@mixin column-count($int: auto) {
+ // auto || integer
+ @include prefixer(column-count, $int, webkit moz spec);
+}
+
+@mixin column-gap($length: normal) {
+ // normal || length
+ @include prefixer(column-gap, $length, webkit moz spec);
+}
+
+@mixin column-fill($arg: auto) {
+ // auto || length
+ @include prefixer(column-fill, $arg, webkit moz spec);
+}
+
+@mixin column-rule($arg) {
+ // || ||
+ @include prefixer(column-rule, $arg, webkit moz spec);
+}
+
+@mixin column-rule-color($color) {
+ @include prefixer(column-rule-color, $color, webkit moz spec);
+}
+
+@mixin column-rule-style($style: none) {
+ // none | hidden | dashed | dotted | double | groove | inset | inset | outset | ridge | solid
+ @include prefixer(column-rule-style, $style, webkit moz spec);
+}
+
+@mixin column-rule-width ($width: none) {
+ @include prefixer(column-rule-width, $width, webkit moz spec);
+}
+
+@mixin column-span($arg: none) {
+ // none || all
+ @include prefixer(column-span, $arg, webkit moz spec);
+}
+
+@mixin column-width($length: auto) {
+ // auto || length
+ @include prefixer(column-width, $length, webkit moz spec);
+}
diff --git a/Resources/public/sass/contrib/bourbon/css3/_filter.scss b/Resources/public/sass/contrib/bourbon/css3/_filter.scss
new file mode 100644
index 000000000..b8f8ffb0e
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/css3/_filter.scss
@@ -0,0 +1,4 @@
+@mixin filter($function: none) {
+ // [
+ @include prefixer(perspective, $depth, webkit moz spec);
+}
+
+@mixin perspective-origin($value: 50% 50%) {
+ @include prefixer(perspective-origin, $value, webkit moz spec);
+}
diff --git a/Resources/public/sass/contrib/bourbon/css3/_placeholder.scss b/Resources/public/sass/contrib/bourbon/css3/_placeholder.scss
new file mode 100644
index 000000000..5682fd097
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/css3/_placeholder.scss
@@ -0,0 +1,8 @@
+@mixin placeholder {
+ $placeholders: ":-webkit-input" ":-moz" "-moz" "-ms-input";
+ @each $placeholder in $placeholders {
+ &:#{$placeholder}-placeholder {
+ @content;
+ }
+ }
+}
diff --git a/Resources/public/sass/contrib/bourbon/css3/_radial-gradient.scss b/Resources/public/sass/contrib/bourbon/css3/_radial-gradient.scss
new file mode 100644
index 000000000..8da076e28
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/css3/_radial-gradient.scss
@@ -0,0 +1,39 @@
+// Requires Sass 3.1+
+@mixin radial-gradient($g1, $g2,
+ $g3: null, $g4: null,
+ $g5: null, $g6: null,
+ $g7: null, $g8: null,
+ $g9: null, $g10: null,
+ $pos: null,
+ $shape-size: null,
+ $fallback: null) {
+
+ $data: _radial-arg-parser($g1, $g2, $pos, $shape-size);
+ $g1: nth($data, 1);
+ $g2: nth($data, 2);
+ $pos: nth($data, 3);
+ $shape-size: nth($data, 4);
+
+ $full: $g1, $g2, $g3, $g4, $g5, $g6, $g7, $g8, $g9, $g10;
+
+ // Strip deprecated cover/contain for spec
+ $shape-size-spec: _shape-size-stripper($shape-size);
+
+ // Set $g1 as the default fallback color
+ $first-color: nth($full, 1);
+ $fallback-color: nth($first-color, 1);
+
+ @if (type-of($fallback) == color) or ($fallback == "transparent") {
+ $fallback-color: $fallback;
+ }
+
+ // Add Commas and spaces
+ $shape-size: if($shape-size, "#{$shape-size}, ", null);
+ $pos: if($pos, "#{$pos}, ", null);
+ $pos-spec: if($pos, "at #{$pos}", null);
+ $shape-size-spec: if(($shape-size-spec != " ") and ($pos == null), "#{$shape-size-spec}, ", "#{$shape-size-spec} ");
+
+ background-color: $fallback-color;
+ background-image: -webkit-radial-gradient(unquote(#{$pos}#{$shape-size}#{$full}));
+ background-image: unquote("radial-gradient(#{$shape-size-spec}#{$pos-spec}#{$full})");
+}
diff --git a/Resources/public/sass/contrib/bourbon/css3/_selection.scss b/Resources/public/sass/contrib/bourbon/css3/_selection.scss
new file mode 100644
index 000000000..cd71d4f53
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/css3/_selection.scss
@@ -0,0 +1,42 @@
+@charset "UTF-8";
+
+/// Outputs the spec and prefixed versions of the `::selection` pseudo-element.
+///
+/// @param {Bool} $current-selector [false]
+/// If set to `true`, it takes the current element into consideration.
+///
+/// @example scss - Usage
+/// .element {
+/// @include selection(true) {
+/// background-color: #ffbb52;
+/// }
+/// }
+///
+/// @example css - CSS Output
+/// .element::-moz-selection {
+/// background-color: #ffbb52;
+/// }
+///
+/// .element::selection {
+/// background-color: #ffbb52;
+/// }
+
+@mixin selection($current-selector: false) {
+ @if $current-selector {
+ &::-moz-selection {
+ @content;
+ }
+
+ &::selection {
+ @content;
+ }
+ } @else {
+ ::-moz-selection {
+ @content;
+ }
+
+ ::selection {
+ @content;
+ }
+ }
+}
diff --git a/Resources/public/sass/contrib/bourbon/css3/_text-decoration.scss b/Resources/public/sass/contrib/bourbon/css3/_text-decoration.scss
new file mode 100644
index 000000000..9222746ce
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/css3/_text-decoration.scss
@@ -0,0 +1,19 @@
+@mixin text-decoration($value) {
+// || ||
+ @include prefixer(text-decoration, $value, moz);
+}
+
+@mixin text-decoration-line($line: none) {
+// none || underline || overline || line-through
+ @include prefixer(text-decoration-line, $line, moz);
+}
+
+@mixin text-decoration-style($style: solid) {
+// solid || double || dotted || dashed || wavy
+ @include prefixer(text-decoration-style, $style, moz webkit);
+}
+
+@mixin text-decoration-color($color: currentColor) {
+// currentColor ||
+ @include prefixer(text-decoration-color, $color, moz);
+}
diff --git a/Resources/public/sass/contrib/bourbon/css3/_transform.scss b/Resources/public/sass/contrib/bourbon/css3/_transform.scss
new file mode 100644
index 000000000..8ee6509ff
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/css3/_transform.scss
@@ -0,0 +1,15 @@
+@mixin transform($property: none) {
+ // none |
+ @include prefixer(transform, $property, webkit moz ms o spec);
+}
+
+@mixin transform-origin($axes: 50%) {
+ // x-axis - left | center | right | length | %
+ // y-axis - top | center | bottom | length | %
+ // z-axis - length
+ @include prefixer(transform-origin, $axes, webkit moz ms o spec);
+}
+
+@mixin transform-style($style: flat) {
+ @include prefixer(transform-style, $style, webkit moz ms o spec);
+}
diff --git a/Resources/public/sass/contrib/bourbon/css3/_transition.scss b/Resources/public/sass/contrib/bourbon/css3/_transition.scss
new file mode 100644
index 000000000..3c785ed52
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/css3/_transition.scss
@@ -0,0 +1,71 @@
+// Shorthand mixin. Supports multiple parentheses-deliminated values for each variable.
+// Example: @include transition (all 2s ease-in-out);
+// @include transition (opacity 1s ease-in 2s, width 2s ease-out);
+// @include transition-property (transform, opacity);
+
+@mixin transition($properties...) {
+ // Fix for vendor-prefix transform property
+ $needs-prefixes: false;
+ $webkit: ();
+ $moz: ();
+ $spec: ();
+
+ // Create lists for vendor-prefixed transform
+ @each $list in $properties {
+ @if nth($list, 1) == "transform" {
+ $needs-prefixes: true;
+ $list1: -webkit-transform;
+ $list2: -moz-transform;
+ $list3: ();
+
+ @each $var in $list {
+ $list3: join($list3, $var);
+
+ @if $var != "transform" {
+ $list1: join($list1, $var);
+ $list2: join($list2, $var);
+ }
+ }
+
+ $webkit: append($webkit, $list1);
+ $moz: append($moz, $list2);
+ $spec: append($spec, $list3);
+ } @else {
+ $webkit: append($webkit, $list, comma);
+ $moz: append($moz, $list, comma);
+ $spec: append($spec, $list, comma);
+ }
+ }
+
+ @if $needs-prefixes {
+ -webkit-transition: $webkit;
+ -moz-transition: $moz;
+ transition: $spec;
+ } @else {
+ @if length($properties) >= 1 {
+ @include prefixer(transition, $properties, webkit moz spec);
+ } @else {
+ $properties: all 0.15s ease-out 0s;
+ @include prefixer(transition, $properties, webkit moz spec);
+ }
+ }
+}
+
+@mixin transition-property($properties...) {
+ -webkit-transition-property: transition-property-names($properties, "webkit");
+ -moz-transition-property: transition-property-names($properties, "moz");
+ transition-property: transition-property-names($properties, false);
+}
+
+@mixin transition-duration($times...) {
+ @include prefixer(transition-duration, $times, webkit moz spec);
+}
+
+@mixin transition-timing-function($motions...) {
+ // ease | linear | ease-in | ease-out | ease-in-out | cubic-bezier()
+ @include prefixer(transition-timing-function, $motions, webkit moz spec);
+}
+
+@mixin transition-delay($times...) {
+ @include prefixer(transition-delay, $times, webkit moz spec);
+}
diff --git a/Resources/public/sass/contrib/bourbon/css3/_user-select.scss b/Resources/public/sass/contrib/bourbon/css3/_user-select.scss
new file mode 100644
index 000000000..d4e555100
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/css3/_user-select.scss
@@ -0,0 +1,3 @@
+@mixin user-select($value: none) {
+ @include prefixer(user-select, $value, webkit moz ms spec);
+}
diff --git a/Resources/public/sass/contrib/bourbon/functions/_assign-inputs.scss b/Resources/public/sass/contrib/bourbon/functions/_assign-inputs.scss
new file mode 100644
index 000000000..f8aba9678
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/functions/_assign-inputs.scss
@@ -0,0 +1,11 @@
+@function assign-inputs($inputs, $pseudo: null) {
+ $list: ();
+
+ @each $input in $inputs {
+ $input: unquote($input);
+ $input: if($pseudo, $input + ":" + $pseudo, $input);
+ $list: append($list, $input, comma);
+ }
+
+ @return $list;
+}
diff --git a/Resources/public/sass/contrib/bourbon/functions/_contains-falsy.scss b/Resources/public/sass/contrib/bourbon/functions/_contains-falsy.scss
new file mode 100644
index 000000000..c096fdb92
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/functions/_contains-falsy.scss
@@ -0,0 +1,20 @@
+@charset "UTF-8";
+
+/// Checks if a list does not contains a value.
+///
+/// @access private
+///
+/// @param {List} $list
+/// The list to check against.
+///
+/// @return {Bool}
+
+@function contains-falsy($list) {
+ @each $item in $list {
+ @if not $item {
+ @return true;
+ }
+ }
+
+ @return false;
+}
diff --git a/Resources/public/sass/contrib/bourbon/functions/_contains.scss b/Resources/public/sass/contrib/bourbon/functions/_contains.scss
new file mode 100644
index 000000000..3dec27db8
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/functions/_contains.scss
@@ -0,0 +1,26 @@
+@charset "UTF-8";
+
+/// Checks if a list contains a value(s).
+///
+/// @access private
+///
+/// @param {List} $list
+/// The list to check against.
+///
+/// @param {List} $values
+/// A single value or list of values to check for.
+///
+/// @example scss - Usage
+/// contains($list, $value)
+///
+/// @return {Bool}
+
+@function contains($list, $values...) {
+ @each $value in $values {
+ @if type-of(index($list, $value)) != "number" {
+ @return false;
+ }
+ }
+
+ @return true;
+}
diff --git a/Resources/public/sass/contrib/bourbon/functions/_is-length.scss b/Resources/public/sass/contrib/bourbon/functions/_is-length.scss
new file mode 100644
index 000000000..5826e789b
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/functions/_is-length.scss
@@ -0,0 +1,11 @@
+@charset "UTF-8";
+
+/// Checks for a valid CSS length.
+///
+/// @param {String} $value
+
+@function is-length($value) {
+ @return type-of($value) != "null" and (str-slice($value + "", 1, 4) == "calc"
+ or index(auto inherit initial 0, $value)
+ or (type-of($value) == "number" and not(unitless($value))));
+}
diff --git a/Resources/public/sass/contrib/bourbon/functions/_is-light.scss b/Resources/public/sass/contrib/bourbon/functions/_is-light.scss
new file mode 100644
index 000000000..92d90ac3c
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/functions/_is-light.scss
@@ -0,0 +1,21 @@
+@charset "UTF-8";
+
+/// Programatically determines whether a color is light or dark.
+///
+/// @link http://robots.thoughtbot.com/closer-look-color-lightness
+///
+/// @param {Color (Hex)} $color
+///
+/// @example scss - Usage
+/// is-light($color)
+///
+/// @return {Bool}
+
+@function is-light($hex-color) {
+ $-local-red: red(rgba($hex-color, 1));
+ $-local-green: green(rgba($hex-color, 1));
+ $-local-blue: blue(rgba($hex-color, 1));
+ $-local-lightness: ($-local-red * 0.2126 + $-local-green * 0.7152 + $-local-blue * 0.0722) / 255;
+
+ @return $-local-lightness > 0.6;
+}
diff --git a/Resources/public/sass/contrib/bourbon/functions/_is-number.scss b/Resources/public/sass/contrib/bourbon/functions/_is-number.scss
new file mode 100644
index 000000000..a64e0bf21
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/functions/_is-number.scss
@@ -0,0 +1,11 @@
+@charset "UTF-8";
+
+/// Checks for a valid number.
+///
+/// @param {Number} $value
+///
+/// @require {function} contains
+
+@function is-number($value) {
+ @return contains("0" "1" "2" "3" "4" "5" "6" "7" "8" "9" 0 1 2 3 4 5 6 7 8 9, $value);
+}
diff --git a/Resources/public/sass/contrib/bourbon/functions/_is-size.scss b/Resources/public/sass/contrib/bourbon/functions/_is-size.scss
new file mode 100644
index 000000000..661789ab4
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/functions/_is-size.scss
@@ -0,0 +1,13 @@
+@charset "UTF-8";
+
+/// Checks for a valid CSS size.
+///
+/// @param {String} $value
+///
+/// @require {function} contains
+/// @require {function} is-length
+
+@function is-size($value) {
+ @return is-length($value)
+ or contains("fill" "fit-content" "min-content" "max-content", $value);
+}
diff --git a/Resources/public/sass/contrib/bourbon/functions/_modular-scale.scss b/Resources/public/sass/contrib/bourbon/functions/_modular-scale.scss
new file mode 100644
index 000000000..20fa38812
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/functions/_modular-scale.scss
@@ -0,0 +1,69 @@
+// Scaling Variables
+$golden: 1.618;
+$minor-second: 1.067;
+$major-second: 1.125;
+$minor-third: 1.2;
+$major-third: 1.25;
+$perfect-fourth: 1.333;
+$augmented-fourth: 1.414;
+$perfect-fifth: 1.5;
+$minor-sixth: 1.6;
+$major-sixth: 1.667;
+$minor-seventh: 1.778;
+$major-seventh: 1.875;
+$octave: 2;
+$major-tenth: 2.5;
+$major-eleventh: 2.667;
+$major-twelfth: 3;
+$double-octave: 4;
+
+$modular-scale-ratio: $perfect-fourth !default;
+$modular-scale-base: em($em-base) !default;
+
+@function modular-scale($increment, $value: $modular-scale-base, $ratio: $modular-scale-ratio) {
+ $v1: nth($value, 1);
+ $v2: nth($value, length($value));
+ $value: $v1;
+
+ // scale $v2 to just above $v1
+ @while $v2 > $v1 {
+ $v2: ($v2 / $ratio); // will be off-by-1
+ }
+ @while $v2 < $v1 {
+ $v2: ($v2 * $ratio); // will fix off-by-1
+ }
+
+ // check AFTER scaling $v2 to prevent double-counting corner-case
+ $double-stranded: $v2 > $v1;
+
+ @if $increment > 0 {
+ @for $i from 1 through $increment {
+ @if $double-stranded and ($v1 * $ratio) > $v2 {
+ $value: $v2;
+ $v2: ($v2 * $ratio);
+ } @else {
+ $v1: ($v1 * $ratio);
+ $value: $v1;
+ }
+ }
+ }
+
+ @if $increment < 0 {
+ // adjust $v2 to just below $v1
+ @if $double-stranded {
+ $v2: ($v2 / $ratio);
+ }
+
+ @for $i from $increment through -1 {
+ @if $double-stranded and ($v1 / $ratio) < $v2 {
+ $value: $v2;
+ $v2: ($v2 / $ratio);
+ } @else {
+ $v1: ($v1 / $ratio);
+ $value: $v1;
+ }
+ }
+ }
+
+ @return $value;
+}
diff --git a/Resources/public/sass/contrib/bourbon/functions/_px-to-em.scss b/Resources/public/sass/contrib/bourbon/functions/_px-to-em.scss
new file mode 100644
index 000000000..ae81a44ad
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/functions/_px-to-em.scss
@@ -0,0 +1,13 @@
+// Convert pixels to ems
+// eg. for a relational value of 12px write em(12) when the parent is 16px
+// if the parent is another value say 24px write em(12, 24)
+
+@function em($pxval, $base: $em-base) {
+ @if not unitless($pxval) {
+ $pxval: strip-units($pxval);
+ }
+ @if not unitless($base) {
+ $base: strip-units($base);
+ }
+ @return ($pxval / $base) * 1em;
+}
diff --git a/Resources/public/sass/contrib/bourbon/functions/_px-to-rem.scss b/Resources/public/sass/contrib/bourbon/functions/_px-to-rem.scss
new file mode 100644
index 000000000..0ac941e76
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/functions/_px-to-rem.scss
@@ -0,0 +1,15 @@
+// Convert pixels to rems
+// eg. for a relational value of 12px write rem(12)
+// Assumes $em-base is the font-size of
+
+@function rem($pxval) {
+ @if not unitless($pxval) {
+ $pxval: strip-units($pxval);
+ }
+
+ $base: $em-base;
+ @if not unitless($base) {
+ $base: strip-units($base);
+ }
+ @return ($pxval / $base) * 1rem;
+}
diff --git a/Resources/public/sass/contrib/bourbon/functions/_shade.scss b/Resources/public/sass/contrib/bourbon/functions/_shade.scss
new file mode 100644
index 000000000..8aaf2c6d2
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/functions/_shade.scss
@@ -0,0 +1,24 @@
+@charset "UTF-8";
+
+/// Mixes a color with black.
+///
+/// @param {Color} $color
+///
+/// @param {Number (Percentage)} $percent
+/// The amount of black to be mixed in.
+///
+/// @example scss - Usage
+/// .element {
+/// background-color: shade(#ffbb52, 60%);
+/// }
+///
+/// @example css - CSS Output
+/// .element {
+/// background-color: #664a20;
+/// }
+///
+/// @return {Color}
+
+@function shade($color, $percent) {
+ @return mix(#000, $color, $percent);
+}
diff --git a/Resources/public/sass/contrib/bourbon/functions/_strip-units.scss b/Resources/public/sass/contrib/bourbon/functions/_strip-units.scss
new file mode 100644
index 000000000..6c5f3e810
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/functions/_strip-units.scss
@@ -0,0 +1,17 @@
+@charset "UTF-8";
+
+/// Strips the unit from a number.
+///
+/// @param {Number (With Unit)} $value
+///
+/// @example scss - Usage
+/// $dimension: strip-units(10em);
+///
+/// @example css - CSS Output
+/// $dimension: 10;
+///
+/// @return {Number (Unitless)}
+
+@function strip-units($value) {
+ @return ($value / ($value * 0 + 1));
+}
diff --git a/Resources/public/sass/contrib/bourbon/functions/_tint.scss b/Resources/public/sass/contrib/bourbon/functions/_tint.scss
new file mode 100644
index 000000000..2e3381488
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/functions/_tint.scss
@@ -0,0 +1,24 @@
+@charset "UTF-8";
+
+/// Mixes a color with white.
+///
+/// @param {Color} $color
+///
+/// @param {Number (Percentage)} $percent
+/// The amount of white to be mixed in.
+///
+/// @example scss - Usage
+/// .element {
+/// background-color: tint(#6ecaa6, 40%);
+/// }
+///
+/// @example css - CSS Output
+/// .element {
+/// background-color: #a8dfc9;
+/// }
+///
+/// @return {Color}
+
+@function tint($color, $percent) {
+ @return mix(#fff, $color, $percent);
+}
diff --git a/Resources/public/sass/contrib/bourbon/functions/_transition-property-name.scss b/Resources/public/sass/contrib/bourbon/functions/_transition-property-name.scss
new file mode 100644
index 000000000..18348b93a
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/functions/_transition-property-name.scss
@@ -0,0 +1,22 @@
+// Return vendor-prefixed property names if appropriate
+// Example: transition-property-names((transform, color, background), moz) -> -moz-transform, color, background
+//************************************************************************//
+@function transition-property-names($props, $vendor: false) {
+ $new-props: ();
+
+ @each $prop in $props {
+ $new-props: append($new-props, transition-property-name($prop, $vendor), comma);
+ }
+
+ @return $new-props;
+}
+
+@function transition-property-name($prop, $vendor: false) {
+ // put other properties that need to be prefixed here aswell
+ @if $vendor and $prop == transform {
+ @return unquote('-'+$vendor+'-'+$prop);
+ }
+ @else {
+ @return $prop;
+ }
+}
diff --git a/Resources/public/sass/contrib/bourbon/functions/_unpack.scss b/Resources/public/sass/contrib/bourbon/functions/_unpack.scss
new file mode 100644
index 000000000..4367935d5
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/functions/_unpack.scss
@@ -0,0 +1,27 @@
+@charset "UTF-8";
+
+/// Converts shorthand to the 4-value syntax.
+///
+/// @param {List} $shorthand
+///
+/// @example scss - Usage
+/// .element {
+/// margin: unpack(1em 2em);
+/// }
+///
+/// @example css - CSS Output
+/// .element {
+/// margin: 1em 2em 1em 2em;
+/// }
+
+@function unpack($shorthand) {
+ @if length($shorthand) == 1 {
+ @return nth($shorthand, 1) nth($shorthand, 1) nth($shorthand, 1) nth($shorthand, 1);
+ } @else if length($shorthand) == 2 {
+ @return nth($shorthand, 1) nth($shorthand, 2) nth($shorthand, 1) nth($shorthand, 2);
+ } @else if length($shorthand) == 3 {
+ @return nth($shorthand, 1) nth($shorthand, 2) nth($shorthand, 3) nth($shorthand, 2);
+ } @else {
+ @return $shorthand;
+ }
+}
diff --git a/Resources/public/sass/contrib/bourbon/helpers/_convert-units.scss b/Resources/public/sass/contrib/bourbon/helpers/_convert-units.scss
new file mode 100644
index 000000000..e0a65a05c
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/helpers/_convert-units.scss
@@ -0,0 +1,21 @@
+//************************************************************************//
+// Helper function for str-to-num fn.
+// Source: http://sassmeister.com/gist/9647408
+//************************************************************************//
+@function _convert-units($number, $unit) {
+ $strings: "px", "cm", "mm", "%", "ch", "pica", "in", "em", "rem", "pt", "pc", "ex", "vw", "vh", "vmin", "vmax", "deg", "rad", "grad", "turn";
+ $units: 1px, 1cm, 1mm, 1%, 1ch, 1pica, 1in, 1em, 1rem, 1pt, 1pc, 1ex, 1vw, 1vh, 1vmin, 1vmax, 1deg, 1rad, 1grad, 1turn;
+ $index: index($strings, $unit);
+
+ @if not $index {
+ @warn "Unknown unit `#{$unit}`.";
+ @return false;
+ }
+
+ @if type-of($number) != "number" {
+ @warn "`#{$number} is not a number`";
+ @return false;
+ }
+
+ @return $number * nth($units, $index);
+}
diff --git a/Resources/public/sass/contrib/bourbon/helpers/_directional-values.scss b/Resources/public/sass/contrib/bourbon/helpers/_directional-values.scss
new file mode 100644
index 000000000..6ee538db4
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/helpers/_directional-values.scss
@@ -0,0 +1,96 @@
+@charset "UTF-8";
+
+/// Directional-property mixins are shorthands for writing properties like the following
+///
+/// @ignore You can also use `false` instead of `null`.
+///
+/// @param {List} $vals
+/// List of directional values
+///
+/// @example scss - Usage
+/// .element {
+/// @include border-style(dotted null);
+/// @include margin(null 0 10px);
+/// }
+///
+/// @example css - CSS Output
+/// .element {
+/// border-bottom-style: dotted;
+/// border-top-style: dotted;
+/// margin-bottom: 10px;
+/// margin-left: 0;
+/// margin-right: 0;
+/// }
+///
+/// @require {function} contains-falsy
+///
+/// @return {List}
+
+@function collapse-directionals($vals) {
+ $output: null;
+
+ $a: nth($vals, 1);
+ $b: if(length($vals) < 2, $a, nth($vals, 2));
+ $c: if(length($vals) < 3, $a, nth($vals, 3));
+ $d: if(length($vals) < 2, $a, nth($vals, if(length($vals) < 4, 2, 4)));
+
+ @if $a == 0 { $a: 0; }
+ @if $b == 0 { $b: 0; }
+ @if $c == 0 { $c: 0; }
+ @if $d == 0 { $d: 0; }
+
+ @if $a == $b and $a == $c and $a == $d { $output: $a; }
+ @else if $a == $c and $b == $d { $output: $a $b; }
+ @else if $b == $d { $output: $a $b $c; }
+ @else { $output: $a $b $c $d; }
+
+ @return $output;
+}
+
+/// Output directional properties, for instance `margin`.
+///
+/// @access private
+///
+/// @param {String} $pre
+/// Prefix to use
+/// @param {String} $suf
+/// Suffix to use
+/// @param {List} $vals
+/// List of values
+///
+/// @require {function} collapse-directionals
+/// @require {function} contains-falsy
+
+@mixin directional-property($pre, $suf, $vals) {
+ // Property Names
+ $top: $pre + "-top" + if($suf, "-#{$suf}", "");
+ $bottom: $pre + "-bottom" + if($suf, "-#{$suf}", "");
+ $left: $pre + "-left" + if($suf, "-#{$suf}", "");
+ $right: $pre + "-right" + if($suf, "-#{$suf}", "");
+ $all: $pre + if($suf, "-#{$suf}", "");
+
+ $vals: collapse-directionals($vals);
+
+ @if contains-falsy($vals) {
+ @if nth($vals, 1) { #{$top}: nth($vals, 1); }
+
+ @if length($vals) == 1 {
+ @if nth($vals, 1) { #{$right}: nth($vals, 1); }
+ } @else {
+ @if nth($vals, 2) { #{$right}: nth($vals, 2); }
+ }
+
+ @if length($vals) == 2 {
+ @if nth($vals, 1) { #{$bottom}: nth($vals, 1); }
+ @if nth($vals, 2) { #{$left}: nth($vals, 2); }
+ } @else if length($vals) == 3 {
+ @if nth($vals, 3) { #{$bottom}: nth($vals, 3); }
+ @if nth($vals, 2) { #{$left}: nth($vals, 2); }
+ } @else if length($vals) == 4 {
+ @if nth($vals, 3) { #{$bottom}: nth($vals, 3); }
+ @if nth($vals, 4) { #{$left}: nth($vals, 4); }
+ }
+ } @else {
+ #{$all}: $vals;
+ }
+}
diff --git a/Resources/public/sass/contrib/bourbon/helpers/_font-source-declaration.scss b/Resources/public/sass/contrib/bourbon/helpers/_font-source-declaration.scss
new file mode 100644
index 000000000..7f17586c9
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/helpers/_font-source-declaration.scss
@@ -0,0 +1,43 @@
+// Used for creating the source string for fonts using @font-face
+// Reference: http://goo.gl/Ru1bKP
+
+@function font-url-prefixer($asset-pipeline) {
+ @if $asset-pipeline == true {
+ @return font-url;
+ } @else {
+ @return url;
+ }
+}
+
+@function font-source-declaration(
+ $font-family,
+ $file-path,
+ $asset-pipeline,
+ $file-formats,
+ $font-url) {
+
+ $src: ();
+
+ $formats-map: (
+ eot: "#{$file-path}.eot?#iefix" format("embedded-opentype"),
+ woff2: "#{$file-path}.woff2" format("woff2"),
+ woff: "#{$file-path}.woff" format("woff"),
+ ttf: "#{$file-path}.ttf" format("truetype"),
+ svg: "#{$file-path}.svg##{$font-family}" format("svg")
+ );
+
+ @each $key, $values in $formats-map {
+ @if contains($file-formats, $key) {
+ $file-path: nth($values, 1);
+ $font-format: nth($values, 2);
+
+ @if $asset-pipeline == true {
+ $src: append($src, font-url($file-path) $font-format, comma);
+ } @else {
+ $src: append($src, url($file-path) $font-format, comma);
+ }
+ }
+ }
+
+ @return $src;
+}
diff --git a/Resources/public/sass/contrib/bourbon/helpers/_gradient-positions-parser.scss b/Resources/public/sass/contrib/bourbon/helpers/_gradient-positions-parser.scss
new file mode 100644
index 000000000..07d30b6cf
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/helpers/_gradient-positions-parser.scss
@@ -0,0 +1,13 @@
+@function _gradient-positions-parser($gradient-type, $gradient-positions) {
+ @if $gradient-positions
+ and ($gradient-type == linear)
+ and (type-of($gradient-positions) != color) {
+ $gradient-positions: _linear-positions-parser($gradient-positions);
+ }
+ @else if $gradient-positions
+ and ($gradient-type == radial)
+ and (type-of($gradient-positions) != color) {
+ $gradient-positions: _radial-positions-parser($gradient-positions);
+ }
+ @return $gradient-positions;
+}
diff --git a/Resources/public/sass/contrib/bourbon/helpers/_linear-angle-parser.scss b/Resources/public/sass/contrib/bourbon/helpers/_linear-angle-parser.scss
new file mode 100644
index 000000000..e0401ed8d
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/helpers/_linear-angle-parser.scss
@@ -0,0 +1,25 @@
+// Private function for linear-gradient-parser
+@function _linear-angle-parser($image, $first-val, $prefix, $suffix) {
+ $offset: null;
+ $unit-short: str-slice($first-val, str-length($first-val) - 2, str-length($first-val));
+ $unit-long: str-slice($first-val, str-length($first-val) - 3, str-length($first-val));
+
+ @if ($unit-long == "grad") or
+ ($unit-long == "turn") {
+ $offset: if($unit-long == "grad", -100grad * 3, -0.75turn);
+ }
+
+ @else if ($unit-short == "deg") or
+ ($unit-short == "rad") {
+ $offset: if($unit-short == "deg", -90 * 3, 1.6rad);
+ }
+
+ @if $offset {
+ $num: _str-to-num($first-val);
+
+ @return (
+ webkit-image: -webkit- + $prefix + ($offset - $num) + $suffix,
+ spec-image: $image
+ );
+ }
+}
diff --git a/Resources/public/sass/contrib/bourbon/helpers/_linear-gradient-parser.scss b/Resources/public/sass/contrib/bourbon/helpers/_linear-gradient-parser.scss
new file mode 100644
index 000000000..48a8f77f9
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/helpers/_linear-gradient-parser.scss
@@ -0,0 +1,41 @@
+@function _linear-gradient-parser($image) {
+ $image: unquote($image);
+ $gradients: ();
+ $start: str-index($image, "(");
+ $end: str-index($image, ",");
+ $first-val: str-slice($image, $start + 1, $end - 1);
+
+ $prefix: str-slice($image, 1, $start);
+ $suffix: str-slice($image, $end, str-length($image));
+
+ $has-multiple-vals: str-index($first-val, " ");
+ $has-single-position: unquote(_position-flipper($first-val) + "");
+ $has-angle: is-number(str-slice($first-val, 1, 1));
+
+ @if $has-multiple-vals {
+ $gradients: _linear-side-corner-parser($image, $first-val, $prefix, $suffix, $has-multiple-vals);
+ }
+
+ @else if $has-single-position != "" {
+ $pos: unquote($has-single-position + "");
+
+ $gradients: (
+ webkit-image: -webkit- + $image,
+ spec-image: $prefix + "to " + $pos + $suffix
+ );
+ }
+
+ @else if $has-angle {
+ // Rotate degree for webkit
+ $gradients: _linear-angle-parser($image, $first-val, $prefix, $suffix);
+ }
+
+ @else {
+ $gradients: (
+ webkit-image: -webkit- + $image,
+ spec-image: $image
+ );
+ }
+
+ @return $gradients;
+}
diff --git a/Resources/public/sass/contrib/bourbon/helpers/_linear-positions-parser.scss b/Resources/public/sass/contrib/bourbon/helpers/_linear-positions-parser.scss
new file mode 100644
index 000000000..96d6a6d45
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/helpers/_linear-positions-parser.scss
@@ -0,0 +1,61 @@
+@function _linear-positions-parser($pos) {
+ $type: type-of(nth($pos, 1));
+ $spec: null;
+ $degree: null;
+ $side: null;
+ $corner: null;
+ $length: length($pos);
+ // Parse Side and corner positions
+ @if ($length > 1) {
+ @if nth($pos, 1) == "to" { // Newer syntax
+ $side: nth($pos, 2);
+
+ @if $length == 2 { // eg. to top
+ // Swap for backwards compatibility
+ $degree: _position-flipper(nth($pos, 2));
+ }
+ @else if $length == 3 { // eg. to top left
+ $corner: nth($pos, 3);
+ }
+ }
+ @else if $length == 2 { // Older syntax ("top left")
+ $side: _position-flipper(nth($pos, 1));
+ $corner: _position-flipper(nth($pos, 2));
+ }
+
+ @if ("#{$side} #{$corner}" == "left top") or ("#{$side} #{$corner}" == "top left") {
+ $degree: _position-flipper(#{$side}) _position-flipper(#{$corner});
+ }
+ @else if ("#{$side} #{$corner}" == "right top") or ("#{$side} #{$corner}" == "top right") {
+ $degree: _position-flipper(#{$side}) _position-flipper(#{$corner});
+ }
+ @else if ("#{$side} #{$corner}" == "right bottom") or ("#{$side} #{$corner}" == "bottom right") {
+ $degree: _position-flipper(#{$side}) _position-flipper(#{$corner});
+ }
+ @else if ("#{$side} #{$corner}" == "left bottom") or ("#{$side} #{$corner}" == "bottom left") {
+ $degree: _position-flipper(#{$side}) _position-flipper(#{$corner});
+ }
+ $spec: to $side $corner;
+ }
+ @else if $length == 1 {
+ // Swap for backwards compatibility
+ @if $type == string {
+ $degree: $pos;
+ $spec: to _position-flipper($pos);
+ }
+ @else {
+ $degree: -270 - $pos; //rotate the gradient opposite from spec
+ $spec: $pos;
+ }
+ }
+ $degree: unquote($degree + ",");
+ $spec: unquote($spec + ",");
+ @return $degree $spec;
+}
+
+@function _position-flipper($pos) {
+ @return if($pos == left, right, null)
+ if($pos == right, left, null)
+ if($pos == top, bottom, null)
+ if($pos == bottom, top, null);
+}
diff --git a/Resources/public/sass/contrib/bourbon/helpers/_linear-side-corner-parser.scss b/Resources/public/sass/contrib/bourbon/helpers/_linear-side-corner-parser.scss
new file mode 100644
index 000000000..7a691253d
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/helpers/_linear-side-corner-parser.scss
@@ -0,0 +1,31 @@
+// Private function for linear-gradient-parser
+@function _linear-side-corner-parser($image, $first-val, $prefix, $suffix, $has-multiple-vals) {
+ $val-1: str-slice($first-val, 1, $has-multiple-vals - 1);
+ $val-2: str-slice($first-val, $has-multiple-vals + 1, str-length($first-val));
+ $val-3: null;
+ $has-val-3: str-index($val-2, " ");
+
+ @if $has-val-3 {
+ $val-3: str-slice($val-2, $has-val-3 + 1, str-length($val-2));
+ $val-2: str-slice($val-2, 1, $has-val-3 - 1);
+ }
+
+ $pos: _position-flipper($val-1) _position-flipper($val-2) _position-flipper($val-3);
+ $pos: unquote($pos + "");
+
+ // Use old spec for webkit
+ @if $val-1 == "to" {
+ @return (
+ webkit-image: -webkit- + $prefix + $pos + $suffix,
+ spec-image: $image
+ );
+ }
+
+ // Bring the code up to spec
+ @else {
+ @return (
+ webkit-image: -webkit- + $image,
+ spec-image: $prefix + "to " + $pos + $suffix
+ );
+ }
+}
diff --git a/Resources/public/sass/contrib/bourbon/helpers/_radial-arg-parser.scss b/Resources/public/sass/contrib/bourbon/helpers/_radial-arg-parser.scss
new file mode 100644
index 000000000..56c6030b7
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/helpers/_radial-arg-parser.scss
@@ -0,0 +1,69 @@
+@function _radial-arg-parser($g1, $g2, $pos, $shape-size) {
+ @each $value in $g1, $g2 {
+ $first-val: nth($value, 1);
+ $pos-type: type-of($first-val);
+ $spec-at-index: null;
+
+ // Determine if spec was passed to mixin
+ @if type-of($value) == list {
+ $spec-at-index: if(index($value, at), index($value, at), false);
+ }
+ @if $spec-at-index {
+ @if $spec-at-index > 1 {
+ @for $i from 1 through ($spec-at-index - 1) {
+ $shape-size: $shape-size nth($value, $i);
+ }
+ @for $i from ($spec-at-index + 1) through length($value) {
+ $pos: $pos nth($value, $i);
+ }
+ }
+ @else if $spec-at-index == 1 {
+ @for $i from ($spec-at-index + 1) through length($value) {
+ $pos: $pos nth($value, $i);
+ }
+ }
+ $g1: null;
+ }
+
+ // If not spec calculate correct values
+ @else {
+ @if ($pos-type != color) or ($first-val != "transparent") {
+ @if ($pos-type == number)
+ or ($first-val == "center")
+ or ($first-val == "top")
+ or ($first-val == "right")
+ or ($first-val == "bottom")
+ or ($first-val == "left") {
+
+ $pos: $value;
+
+ @if $pos == $g1 {
+ $g1: null;
+ }
+ }
+
+ @else if
+ ($first-val == "ellipse")
+ or ($first-val == "circle")
+ or ($first-val == "closest-side")
+ or ($first-val == "closest-corner")
+ or ($first-val == "farthest-side")
+ or ($first-val == "farthest-corner")
+ or ($first-val == "contain")
+ or ($first-val == "cover") {
+
+ $shape-size: $value;
+
+ @if $value == $g1 {
+ $g1: null;
+ }
+
+ @else if $value == $g2 {
+ $g2: null;
+ }
+ }
+ }
+ }
+ }
+ @return $g1, $g2, $pos, $shape-size;
+}
diff --git a/Resources/public/sass/contrib/bourbon/helpers/_radial-gradient-parser.scss b/Resources/public/sass/contrib/bourbon/helpers/_radial-gradient-parser.scss
new file mode 100644
index 000000000..5444d8085
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/helpers/_radial-gradient-parser.scss
@@ -0,0 +1,50 @@
+@function _radial-gradient-parser($image) {
+ $image: unquote($image);
+ $gradients: ();
+ $start: str-index($image, "(");
+ $end: str-index($image, ",");
+ $first-val: str-slice($image, $start + 1, $end - 1);
+
+ $prefix: str-slice($image, 1, $start);
+ $suffix: str-slice($image, $end, str-length($image));
+
+ $is-spec-syntax: str-index($first-val, "at");
+
+ @if $is-spec-syntax and $is-spec-syntax > 1 {
+ $keyword: str-slice($first-val, 1, $is-spec-syntax - 2);
+ $pos: str-slice($first-val, $is-spec-syntax + 3, str-length($first-val));
+ $pos: append($pos, $keyword, comma);
+
+ $gradients: (
+ webkit-image: -webkit- + $prefix + $pos + $suffix,
+ spec-image: $image
+ );
+ }
+
+ @else if $is-spec-syntax == 1 {
+ $pos: str-slice($first-val, $is-spec-syntax + 3, str-length($first-val));
+
+ $gradients: (
+ webkit-image: -webkit- + $prefix + $pos + $suffix,
+ spec-image: $image
+ );
+ }
+
+ @else if str-index($image, "cover") or str-index($image, "contain") {
+ @warn "Radial-gradient needs to be updated to conform to latest spec.";
+
+ $gradients: (
+ webkit-image: null,
+ spec-image: $image
+ );
+ }
+
+ @else {
+ $gradients: (
+ webkit-image: -webkit- + $image,
+ spec-image: $image
+ );
+ }
+
+ @return $gradients;
+}
diff --git a/Resources/public/sass/contrib/bourbon/helpers/_radial-positions-parser.scss b/Resources/public/sass/contrib/bourbon/helpers/_radial-positions-parser.scss
new file mode 100644
index 000000000..3c552ad79
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/helpers/_radial-positions-parser.scss
@@ -0,0 +1,18 @@
+@function _radial-positions-parser($gradient-pos) {
+ $shape-size: nth($gradient-pos, 1);
+ $pos: nth($gradient-pos, 2);
+ $shape-size-spec: _shape-size-stripper($shape-size);
+
+ $pre-spec: unquote(if($pos, "#{$pos}, ", null))
+ unquote(if($shape-size, "#{$shape-size},", null));
+ $pos-spec: if($pos, "at #{$pos}", null);
+
+ $spec: "#{$shape-size-spec} #{$pos-spec}";
+
+ // Add comma
+ @if ($spec != " ") {
+ $spec: "#{$spec},";
+ }
+
+ @return $pre-spec $spec;
+}
diff --git a/Resources/public/sass/contrib/bourbon/helpers/_render-gradients.scss b/Resources/public/sass/contrib/bourbon/helpers/_render-gradients.scss
new file mode 100644
index 000000000..576567683
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/helpers/_render-gradients.scss
@@ -0,0 +1,26 @@
+// User for linear and radial gradients within background-image or border-image properties
+
+@function _render-gradients($gradient-positions, $gradients, $gradient-type, $vendor: false) {
+ $pre-spec: null;
+ $spec: null;
+ $vendor-gradients: null;
+ @if $gradient-type == linear {
+ @if $gradient-positions {
+ $pre-spec: nth($gradient-positions, 1);
+ $spec: nth($gradient-positions, 2);
+ }
+ }
+ @else if $gradient-type == radial {
+ $pre-spec: nth($gradient-positions, 1);
+ $spec: nth($gradient-positions, 2);
+ }
+
+ @if $vendor {
+ $vendor-gradients: -#{$vendor}-#{$gradient-type}-gradient(#{$pre-spec} $gradients);
+ }
+ @else if $vendor == false {
+ $vendor-gradients: "#{$gradient-type}-gradient(#{$spec} #{$gradients})";
+ $vendor-gradients: unquote($vendor-gradients);
+ }
+ @return $vendor-gradients;
+}
diff --git a/Resources/public/sass/contrib/bourbon/helpers/_shape-size-stripper.scss b/Resources/public/sass/contrib/bourbon/helpers/_shape-size-stripper.scss
new file mode 100644
index 000000000..ee5eda422
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/helpers/_shape-size-stripper.scss
@@ -0,0 +1,10 @@
+@function _shape-size-stripper($shape-size) {
+ $shape-size-spec: null;
+ @each $value in $shape-size {
+ @if ($value == "cover") or ($value == "contain") {
+ $value: null;
+ }
+ $shape-size-spec: "#{$shape-size-spec} #{$value}";
+ }
+ @return $shape-size-spec;
+}
diff --git a/Resources/public/sass/contrib/bourbon/helpers/_str-to-num.scss b/Resources/public/sass/contrib/bourbon/helpers/_str-to-num.scss
new file mode 100644
index 000000000..3ef1d873b
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/helpers/_str-to-num.scss
@@ -0,0 +1,50 @@
+//************************************************************************//
+// Helper function for linear/radial-gradient-parsers.
+// Source: http://sassmeister.com/gist/9647408
+//************************************************************************//
+@function _str-to-num($string) {
+ // Matrices
+ $strings: "0" "1" "2" "3" "4" "5" "6" "7" "8" "9";
+ $numbers: 0 1 2 3 4 5 6 7 8 9;
+
+ // Result
+ $result: 0;
+ $divider: 0;
+ $minus: false;
+
+ // Looping through all characters
+ @for $i from 1 through str-length($string) {
+ $character: str-slice($string, $i, $i);
+ $index: index($strings, $character);
+
+ @if $character == "-" {
+ $minus: true;
+ }
+
+ @else if $character == "." {
+ $divider: 1;
+ }
+
+ @else {
+ @if not $index {
+ $result: if($minus, $result * -1, $result);
+ @return _convert-units($result, str-slice($string, $i));
+ }
+
+ $number: nth($numbers, $index);
+
+ @if $divider == 0 {
+ $result: $result * 10;
+ }
+
+ @else {
+ // Move the decimal dot to the left
+ $divider: $divider * 10;
+ $number: $number / $divider;
+ }
+
+ $result: $result + $number;
+ }
+ }
+ @return if($minus, $result * -1, $result);
+}
diff --git a/Resources/public/sass/contrib/bourbon/settings/_asset-pipeline.scss b/Resources/public/sass/contrib/bourbon/settings/_asset-pipeline.scss
new file mode 100644
index 000000000..4c6afc5bb
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/settings/_asset-pipeline.scss
@@ -0,0 +1,7 @@
+@charset "UTF-8";
+
+/// A global setting to enable or disable the `$asset-pipeline` variable for all functions that accept it.
+///
+/// @type Bool
+
+$asset-pipeline: false !default;
diff --git a/Resources/public/sass/contrib/bourbon/settings/_prefixer.scss b/Resources/public/sass/contrib/bourbon/settings/_prefixer.scss
new file mode 100644
index 000000000..8c390514d
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/settings/_prefixer.scss
@@ -0,0 +1,9 @@
+@charset "UTF-8";
+
+/// Global variables to enable or disable vendor prefixes
+
+$prefix-for-webkit: true !default;
+$prefix-for-mozilla: true !default;
+$prefix-for-microsoft: true !default;
+$prefix-for-opera: true !default;
+$prefix-for-spec: true !default;
diff --git a/Resources/public/sass/contrib/bourbon/settings/_px-to-em.scss b/Resources/public/sass/contrib/bourbon/settings/_px-to-em.scss
new file mode 100644
index 000000000..f2f9a3e8d
--- /dev/null
+++ b/Resources/public/sass/contrib/bourbon/settings/_px-to-em.scss
@@ -0,0 +1 @@
+$em-base: 16px !default;
diff --git a/Resources/public/sass/contrib/fontawesome/_animated.scss b/Resources/public/sass/contrib/fontawesome/_animated.scss
new file mode 100644
index 000000000..8a020dbff
--- /dev/null
+++ b/Resources/public/sass/contrib/fontawesome/_animated.scss
@@ -0,0 +1,34 @@
+// Spinning Icons
+// --------------------------
+
+.#{$fa-css-prefix}-spin {
+ -webkit-animation: fa-spin 2s infinite linear;
+ animation: fa-spin 2s infinite linear;
+}
+
+.#{$fa-css-prefix}-pulse {
+ -webkit-animation: fa-spin 1s infinite steps(8);
+ animation: fa-spin 1s infinite steps(8);
+}
+
+@-webkit-keyframes fa-spin {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+ 100% {
+ -webkit-transform: rotate(359deg);
+ transform: rotate(359deg);
+ }
+}
+
+@keyframes fa-spin {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+ 100% {
+ -webkit-transform: rotate(359deg);
+ transform: rotate(359deg);
+ }
+}
diff --git a/Resources/public/sass/contrib/fontawesome/_bordered-pulled.scss b/Resources/public/sass/contrib/fontawesome/_bordered-pulled.scss
new file mode 100644
index 000000000..d4b85a02f
--- /dev/null
+++ b/Resources/public/sass/contrib/fontawesome/_bordered-pulled.scss
@@ -0,0 +1,25 @@
+// Bordered & Pulled
+// -------------------------
+
+.#{$fa-css-prefix}-border {
+ padding: .2em .25em .15em;
+ border: solid .08em $fa-border-color;
+ border-radius: .1em;
+}
+
+.#{$fa-css-prefix}-pull-left { float: left; }
+.#{$fa-css-prefix}-pull-right { float: right; }
+
+.#{$fa-css-prefix} {
+ &.#{$fa-css-prefix}-pull-left { margin-right: .3em; }
+ &.#{$fa-css-prefix}-pull-right { margin-left: .3em; }
+}
+
+/* Deprecated as of 4.4.0 */
+.pull-right { float: right; }
+.pull-left { float: left; }
+
+.#{$fa-css-prefix} {
+ &.pull-left { margin-right: .3em; }
+ &.pull-right { margin-left: .3em; }
+}
diff --git a/Resources/public/sass/contrib/fontawesome/_core.scss b/Resources/public/sass/contrib/fontawesome/_core.scss
new file mode 100644
index 000000000..7425ef85f
--- /dev/null
+++ b/Resources/public/sass/contrib/fontawesome/_core.scss
@@ -0,0 +1,12 @@
+// Base Class Definition
+// -------------------------
+
+.#{$fa-css-prefix} {
+ display: inline-block;
+ font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration
+ font-size: inherit; // can't have font-size inherit on line above, so need to override
+ text-rendering: auto; // optimizelegibility throws things off #1094
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+
+}
diff --git a/Resources/public/sass/contrib/fontawesome/_fixed-width.scss b/Resources/public/sass/contrib/fontawesome/_fixed-width.scss
new file mode 100644
index 000000000..b221c9813
--- /dev/null
+++ b/Resources/public/sass/contrib/fontawesome/_fixed-width.scss
@@ -0,0 +1,6 @@
+// Fixed Width Icons
+// -------------------------
+.#{$fa-css-prefix}-fw {
+ width: (18em / 14);
+ text-align: center;
+}
diff --git a/Resources/public/sass/contrib/fontawesome/_icons.scss b/Resources/public/sass/contrib/fontawesome/_icons.scss
new file mode 100644
index 000000000..6f9375989
--- /dev/null
+++ b/Resources/public/sass/contrib/fontawesome/_icons.scss
@@ -0,0 +1,697 @@
+/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
+ readers do not read off random characters that represent icons */
+
+.#{$fa-css-prefix}-glass:before { content: $fa-var-glass; }
+.#{$fa-css-prefix}-music:before { content: $fa-var-music; }
+.#{$fa-css-prefix}-search:before { content: $fa-var-search; }
+.#{$fa-css-prefix}-envelope-o:before { content: $fa-var-envelope-o; }
+.#{$fa-css-prefix}-heart:before { content: $fa-var-heart; }
+.#{$fa-css-prefix}-star:before { content: $fa-var-star; }
+.#{$fa-css-prefix}-star-o:before { content: $fa-var-star-o; }
+.#{$fa-css-prefix}-user:before { content: $fa-var-user; }
+.#{$fa-css-prefix}-film:before { content: $fa-var-film; }
+.#{$fa-css-prefix}-th-large:before { content: $fa-var-th-large; }
+.#{$fa-css-prefix}-th:before { content: $fa-var-th; }
+.#{$fa-css-prefix}-th-list:before { content: $fa-var-th-list; }
+.#{$fa-css-prefix}-check:before { content: $fa-var-check; }
+.#{$fa-css-prefix}-remove:before,
+.#{$fa-css-prefix}-close:before,
+.#{$fa-css-prefix}-times:before { content: $fa-var-times; }
+.#{$fa-css-prefix}-search-plus:before { content: $fa-var-search-plus; }
+.#{$fa-css-prefix}-search-minus:before { content: $fa-var-search-minus; }
+.#{$fa-css-prefix}-power-off:before { content: $fa-var-power-off; }
+.#{$fa-css-prefix}-signal:before { content: $fa-var-signal; }
+.#{$fa-css-prefix}-gear:before,
+.#{$fa-css-prefix}-cog:before { content: $fa-var-cog; }
+.#{$fa-css-prefix}-trash-o:before { content: $fa-var-trash-o; }
+.#{$fa-css-prefix}-home:before { content: $fa-var-home; }
+.#{$fa-css-prefix}-file-o:before { content: $fa-var-file-o; }
+.#{$fa-css-prefix}-clock-o:before { content: $fa-var-clock-o; }
+.#{$fa-css-prefix}-road:before { content: $fa-var-road; }
+.#{$fa-css-prefix}-download:before { content: $fa-var-download; }
+.#{$fa-css-prefix}-arrow-circle-o-down:before { content: $fa-var-arrow-circle-o-down; }
+.#{$fa-css-prefix}-arrow-circle-o-up:before { content: $fa-var-arrow-circle-o-up; }
+.#{$fa-css-prefix}-inbox:before { content: $fa-var-inbox; }
+.#{$fa-css-prefix}-play-circle-o:before { content: $fa-var-play-circle-o; }
+.#{$fa-css-prefix}-rotate-right:before,
+.#{$fa-css-prefix}-repeat:before { content: $fa-var-repeat; }
+.#{$fa-css-prefix}-refresh:before { content: $fa-var-refresh; }
+.#{$fa-css-prefix}-list-alt:before { content: $fa-var-list-alt; }
+.#{$fa-css-prefix}-lock:before { content: $fa-var-lock; }
+.#{$fa-css-prefix}-flag:before { content: $fa-var-flag; }
+.#{$fa-css-prefix}-headphones:before { content: $fa-var-headphones; }
+.#{$fa-css-prefix}-volume-off:before { content: $fa-var-volume-off; }
+.#{$fa-css-prefix}-volume-down:before { content: $fa-var-volume-down; }
+.#{$fa-css-prefix}-volume-up:before { content: $fa-var-volume-up; }
+.#{$fa-css-prefix}-qrcode:before { content: $fa-var-qrcode; }
+.#{$fa-css-prefix}-barcode:before { content: $fa-var-barcode; }
+.#{$fa-css-prefix}-tag:before { content: $fa-var-tag; }
+.#{$fa-css-prefix}-tags:before { content: $fa-var-tags; }
+.#{$fa-css-prefix}-book:before { content: $fa-var-book; }
+.#{$fa-css-prefix}-bookmark:before { content: $fa-var-bookmark; }
+.#{$fa-css-prefix}-print:before { content: $fa-var-print; }
+.#{$fa-css-prefix}-camera:before { content: $fa-var-camera; }
+.#{$fa-css-prefix}-font:before { content: $fa-var-font; }
+.#{$fa-css-prefix}-bold:before { content: $fa-var-bold; }
+.#{$fa-css-prefix}-italic:before { content: $fa-var-italic; }
+.#{$fa-css-prefix}-text-height:before { content: $fa-var-text-height; }
+.#{$fa-css-prefix}-text-width:before { content: $fa-var-text-width; }
+.#{$fa-css-prefix}-align-left:before { content: $fa-var-align-left; }
+.#{$fa-css-prefix}-align-center:before { content: $fa-var-align-center; }
+.#{$fa-css-prefix}-align-right:before { content: $fa-var-align-right; }
+.#{$fa-css-prefix}-align-justify:before { content: $fa-var-align-justify; }
+.#{$fa-css-prefix}-list:before { content: $fa-var-list; }
+.#{$fa-css-prefix}-dedent:before,
+.#{$fa-css-prefix}-outdent:before { content: $fa-var-outdent; }
+.#{$fa-css-prefix}-indent:before { content: $fa-var-indent; }
+.#{$fa-css-prefix}-video-camera:before { content: $fa-var-video-camera; }
+.#{$fa-css-prefix}-photo:before,
+.#{$fa-css-prefix}-image:before,
+.#{$fa-css-prefix}-picture-o:before { content: $fa-var-picture-o; }
+.#{$fa-css-prefix}-pencil:before { content: $fa-var-pencil; }
+.#{$fa-css-prefix}-map-marker:before { content: $fa-var-map-marker; }
+.#{$fa-css-prefix}-adjust:before { content: $fa-var-adjust; }
+.#{$fa-css-prefix}-tint:before { content: $fa-var-tint; }
+.#{$fa-css-prefix}-edit:before,
+.#{$fa-css-prefix}-pencil-square-o:before { content: $fa-var-pencil-square-o; }
+.#{$fa-css-prefix}-share-square-o:before { content: $fa-var-share-square-o; }
+.#{$fa-css-prefix}-check-square-o:before { content: $fa-var-check-square-o; }
+.#{$fa-css-prefix}-arrows:before { content: $fa-var-arrows; }
+.#{$fa-css-prefix}-step-backward:before { content: $fa-var-step-backward; }
+.#{$fa-css-prefix}-fast-backward:before { content: $fa-var-fast-backward; }
+.#{$fa-css-prefix}-backward:before { content: $fa-var-backward; }
+.#{$fa-css-prefix}-play:before { content: $fa-var-play; }
+.#{$fa-css-prefix}-pause:before { content: $fa-var-pause; }
+.#{$fa-css-prefix}-stop:before { content: $fa-var-stop; }
+.#{$fa-css-prefix}-forward:before { content: $fa-var-forward; }
+.#{$fa-css-prefix}-fast-forward:before { content: $fa-var-fast-forward; }
+.#{$fa-css-prefix}-step-forward:before { content: $fa-var-step-forward; }
+.#{$fa-css-prefix}-eject:before { content: $fa-var-eject; }
+.#{$fa-css-prefix}-chevron-left:before { content: $fa-var-chevron-left; }
+.#{$fa-css-prefix}-chevron-right:before { content: $fa-var-chevron-right; }
+.#{$fa-css-prefix}-plus-circle:before { content: $fa-var-plus-circle; }
+.#{$fa-css-prefix}-minus-circle:before { content: $fa-var-minus-circle; }
+.#{$fa-css-prefix}-times-circle:before { content: $fa-var-times-circle; }
+.#{$fa-css-prefix}-check-circle:before { content: $fa-var-check-circle; }
+.#{$fa-css-prefix}-question-circle:before { content: $fa-var-question-circle; }
+.#{$fa-css-prefix}-info-circle:before { content: $fa-var-info-circle; }
+.#{$fa-css-prefix}-crosshairs:before { content: $fa-var-crosshairs; }
+.#{$fa-css-prefix}-times-circle-o:before { content: $fa-var-times-circle-o; }
+.#{$fa-css-prefix}-check-circle-o:before { content: $fa-var-check-circle-o; }
+.#{$fa-css-prefix}-ban:before { content: $fa-var-ban; }
+.#{$fa-css-prefix}-arrow-left:before { content: $fa-var-arrow-left; }
+.#{$fa-css-prefix}-arrow-right:before { content: $fa-var-arrow-right; }
+.#{$fa-css-prefix}-arrow-up:before { content: $fa-var-arrow-up; }
+.#{$fa-css-prefix}-arrow-down:before { content: $fa-var-arrow-down; }
+.#{$fa-css-prefix}-mail-forward:before,
+.#{$fa-css-prefix}-share:before { content: $fa-var-share; }
+.#{$fa-css-prefix}-expand:before { content: $fa-var-expand; }
+.#{$fa-css-prefix}-compress:before { content: $fa-var-compress; }
+.#{$fa-css-prefix}-plus:before { content: $fa-var-plus; }
+.#{$fa-css-prefix}-minus:before { content: $fa-var-minus; }
+.#{$fa-css-prefix}-asterisk:before { content: $fa-var-asterisk; }
+.#{$fa-css-prefix}-exclamation-circle:before { content: $fa-var-exclamation-circle; }
+.#{$fa-css-prefix}-gift:before { content: $fa-var-gift; }
+.#{$fa-css-prefix}-leaf:before { content: $fa-var-leaf; }
+.#{$fa-css-prefix}-fire:before { content: $fa-var-fire; }
+.#{$fa-css-prefix}-eye:before { content: $fa-var-eye; }
+.#{$fa-css-prefix}-eye-slash:before { content: $fa-var-eye-slash; }
+.#{$fa-css-prefix}-warning:before,
+.#{$fa-css-prefix}-exclamation-triangle:before { content: $fa-var-exclamation-triangle; }
+.#{$fa-css-prefix}-plane:before { content: $fa-var-plane; }
+.#{$fa-css-prefix}-calendar:before { content: $fa-var-calendar; }
+.#{$fa-css-prefix}-random:before { content: $fa-var-random; }
+.#{$fa-css-prefix}-comment:before { content: $fa-var-comment; }
+.#{$fa-css-prefix}-magnet:before { content: $fa-var-magnet; }
+.#{$fa-css-prefix}-chevron-up:before { content: $fa-var-chevron-up; }
+.#{$fa-css-prefix}-chevron-down:before { content: $fa-var-chevron-down; }
+.#{$fa-css-prefix}-retweet:before { content: $fa-var-retweet; }
+.#{$fa-css-prefix}-shopping-cart:before { content: $fa-var-shopping-cart; }
+.#{$fa-css-prefix}-folder:before { content: $fa-var-folder; }
+.#{$fa-css-prefix}-folder-open:before { content: $fa-var-folder-open; }
+.#{$fa-css-prefix}-arrows-v:before { content: $fa-var-arrows-v; }
+.#{$fa-css-prefix}-arrows-h:before { content: $fa-var-arrows-h; }
+.#{$fa-css-prefix}-bar-chart-o:before,
+.#{$fa-css-prefix}-bar-chart:before { content: $fa-var-bar-chart; }
+.#{$fa-css-prefix}-twitter-square:before { content: $fa-var-twitter-square; }
+.#{$fa-css-prefix}-facebook-square:before { content: $fa-var-facebook-square; }
+.#{$fa-css-prefix}-camera-retro:before { content: $fa-var-camera-retro; }
+.#{$fa-css-prefix}-key:before { content: $fa-var-key; }
+.#{$fa-css-prefix}-gears:before,
+.#{$fa-css-prefix}-cogs:before { content: $fa-var-cogs; }
+.#{$fa-css-prefix}-comments:before { content: $fa-var-comments; }
+.#{$fa-css-prefix}-thumbs-o-up:before { content: $fa-var-thumbs-o-up; }
+.#{$fa-css-prefix}-thumbs-o-down:before { content: $fa-var-thumbs-o-down; }
+.#{$fa-css-prefix}-star-half:before { content: $fa-var-star-half; }
+.#{$fa-css-prefix}-heart-o:before { content: $fa-var-heart-o; }
+.#{$fa-css-prefix}-sign-out:before { content: $fa-var-sign-out; }
+.#{$fa-css-prefix}-linkedin-square:before { content: $fa-var-linkedin-square; }
+.#{$fa-css-prefix}-thumb-tack:before { content: $fa-var-thumb-tack; }
+.#{$fa-css-prefix}-external-link:before { content: $fa-var-external-link; }
+.#{$fa-css-prefix}-sign-in:before { content: $fa-var-sign-in; }
+.#{$fa-css-prefix}-trophy:before { content: $fa-var-trophy; }
+.#{$fa-css-prefix}-github-square:before { content: $fa-var-github-square; }
+.#{$fa-css-prefix}-upload:before { content: $fa-var-upload; }
+.#{$fa-css-prefix}-lemon-o:before { content: $fa-var-lemon-o; }
+.#{$fa-css-prefix}-phone:before { content: $fa-var-phone; }
+.#{$fa-css-prefix}-square-o:before { content: $fa-var-square-o; }
+.#{$fa-css-prefix}-bookmark-o:before { content: $fa-var-bookmark-o; }
+.#{$fa-css-prefix}-phone-square:before { content: $fa-var-phone-square; }
+.#{$fa-css-prefix}-twitter:before { content: $fa-var-twitter; }
+.#{$fa-css-prefix}-facebook-f:before,
+.#{$fa-css-prefix}-facebook:before { content: $fa-var-facebook; }
+.#{$fa-css-prefix}-github:before { content: $fa-var-github; }
+.#{$fa-css-prefix}-unlock:before { content: $fa-var-unlock; }
+.#{$fa-css-prefix}-credit-card:before { content: $fa-var-credit-card; }
+.#{$fa-css-prefix}-feed:before,
+.#{$fa-css-prefix}-rss:before { content: $fa-var-rss; }
+.#{$fa-css-prefix}-hdd-o:before { content: $fa-var-hdd-o; }
+.#{$fa-css-prefix}-bullhorn:before { content: $fa-var-bullhorn; }
+.#{$fa-css-prefix}-bell:before { content: $fa-var-bell; }
+.#{$fa-css-prefix}-certificate:before { content: $fa-var-certificate; }
+.#{$fa-css-prefix}-hand-o-right:before { content: $fa-var-hand-o-right; }
+.#{$fa-css-prefix}-hand-o-left:before { content: $fa-var-hand-o-left; }
+.#{$fa-css-prefix}-hand-o-up:before { content: $fa-var-hand-o-up; }
+.#{$fa-css-prefix}-hand-o-down:before { content: $fa-var-hand-o-down; }
+.#{$fa-css-prefix}-arrow-circle-left:before { content: $fa-var-arrow-circle-left; }
+.#{$fa-css-prefix}-arrow-circle-right:before { content: $fa-var-arrow-circle-right; }
+.#{$fa-css-prefix}-arrow-circle-up:before { content: $fa-var-arrow-circle-up; }
+.#{$fa-css-prefix}-arrow-circle-down:before { content: $fa-var-arrow-circle-down; }
+.#{$fa-css-prefix}-globe:before { content: $fa-var-globe; }
+.#{$fa-css-prefix}-wrench:before { content: $fa-var-wrench; }
+.#{$fa-css-prefix}-tasks:before { content: $fa-var-tasks; }
+.#{$fa-css-prefix}-filter:before { content: $fa-var-filter; }
+.#{$fa-css-prefix}-briefcase:before { content: $fa-var-briefcase; }
+.#{$fa-css-prefix}-arrows-alt:before { content: $fa-var-arrows-alt; }
+.#{$fa-css-prefix}-group:before,
+.#{$fa-css-prefix}-users:before { content: $fa-var-users; }
+.#{$fa-css-prefix}-chain:before,
+.#{$fa-css-prefix}-link:before { content: $fa-var-link; }
+.#{$fa-css-prefix}-cloud:before { content: $fa-var-cloud; }
+.#{$fa-css-prefix}-flask:before { content: $fa-var-flask; }
+.#{$fa-css-prefix}-cut:before,
+.#{$fa-css-prefix}-scissors:before { content: $fa-var-scissors; }
+.#{$fa-css-prefix}-copy:before,
+.#{$fa-css-prefix}-files-o:before { content: $fa-var-files-o; }
+.#{$fa-css-prefix}-paperclip:before { content: $fa-var-paperclip; }
+.#{$fa-css-prefix}-save:before,
+.#{$fa-css-prefix}-floppy-o:before { content: $fa-var-floppy-o; }
+.#{$fa-css-prefix}-square:before { content: $fa-var-square; }
+.#{$fa-css-prefix}-navicon:before,
+.#{$fa-css-prefix}-reorder:before,
+.#{$fa-css-prefix}-bars:before { content: $fa-var-bars; }
+.#{$fa-css-prefix}-list-ul:before { content: $fa-var-list-ul; }
+.#{$fa-css-prefix}-list-ol:before { content: $fa-var-list-ol; }
+.#{$fa-css-prefix}-strikethrough:before { content: $fa-var-strikethrough; }
+.#{$fa-css-prefix}-underline:before { content: $fa-var-underline; }
+.#{$fa-css-prefix}-table:before { content: $fa-var-table; }
+.#{$fa-css-prefix}-magic:before { content: $fa-var-magic; }
+.#{$fa-css-prefix}-truck:before { content: $fa-var-truck; }
+.#{$fa-css-prefix}-pinterest:before { content: $fa-var-pinterest; }
+.#{$fa-css-prefix}-pinterest-square:before { content: $fa-var-pinterest-square; }
+.#{$fa-css-prefix}-google-plus-square:before { content: $fa-var-google-plus-square; }
+.#{$fa-css-prefix}-google-plus:before { content: $fa-var-google-plus; }
+.#{$fa-css-prefix}-money:before { content: $fa-var-money; }
+.#{$fa-css-prefix}-caret-down:before { content: $fa-var-caret-down; }
+.#{$fa-css-prefix}-caret-up:before { content: $fa-var-caret-up; }
+.#{$fa-css-prefix}-caret-left:before { content: $fa-var-caret-left; }
+.#{$fa-css-prefix}-caret-right:before { content: $fa-var-caret-right; }
+.#{$fa-css-prefix}-columns:before { content: $fa-var-columns; }
+.#{$fa-css-prefix}-unsorted:before,
+.#{$fa-css-prefix}-sort:before { content: $fa-var-sort; }
+.#{$fa-css-prefix}-sort-down:before,
+.#{$fa-css-prefix}-sort-desc:before { content: $fa-var-sort-desc; }
+.#{$fa-css-prefix}-sort-up:before,
+.#{$fa-css-prefix}-sort-asc:before { content: $fa-var-sort-asc; }
+.#{$fa-css-prefix}-envelope:before { content: $fa-var-envelope; }
+.#{$fa-css-prefix}-linkedin:before { content: $fa-var-linkedin; }
+.#{$fa-css-prefix}-rotate-left:before,
+.#{$fa-css-prefix}-undo:before { content: $fa-var-undo; }
+.#{$fa-css-prefix}-legal:before,
+.#{$fa-css-prefix}-gavel:before { content: $fa-var-gavel; }
+.#{$fa-css-prefix}-dashboard:before,
+.#{$fa-css-prefix}-tachometer:before { content: $fa-var-tachometer; }
+.#{$fa-css-prefix}-comment-o:before { content: $fa-var-comment-o; }
+.#{$fa-css-prefix}-comments-o:before { content: $fa-var-comments-o; }
+.#{$fa-css-prefix}-flash:before,
+.#{$fa-css-prefix}-bolt:before { content: $fa-var-bolt; }
+.#{$fa-css-prefix}-sitemap:before { content: $fa-var-sitemap; }
+.#{$fa-css-prefix}-umbrella:before { content: $fa-var-umbrella; }
+.#{$fa-css-prefix}-paste:before,
+.#{$fa-css-prefix}-clipboard:before { content: $fa-var-clipboard; }
+.#{$fa-css-prefix}-lightbulb-o:before { content: $fa-var-lightbulb-o; }
+.#{$fa-css-prefix}-exchange:before { content: $fa-var-exchange; }
+.#{$fa-css-prefix}-cloud-download:before { content: $fa-var-cloud-download; }
+.#{$fa-css-prefix}-cloud-upload:before { content: $fa-var-cloud-upload; }
+.#{$fa-css-prefix}-user-md:before { content: $fa-var-user-md; }
+.#{$fa-css-prefix}-stethoscope:before { content: $fa-var-stethoscope; }
+.#{$fa-css-prefix}-suitcase:before { content: $fa-var-suitcase; }
+.#{$fa-css-prefix}-bell-o:before { content: $fa-var-bell-o; }
+.#{$fa-css-prefix}-coffee:before { content: $fa-var-coffee; }
+.#{$fa-css-prefix}-cutlery:before { content: $fa-var-cutlery; }
+.#{$fa-css-prefix}-file-text-o:before { content: $fa-var-file-text-o; }
+.#{$fa-css-prefix}-building-o:before { content: $fa-var-building-o; }
+.#{$fa-css-prefix}-hospital-o:before { content: $fa-var-hospital-o; }
+.#{$fa-css-prefix}-ambulance:before { content: $fa-var-ambulance; }
+.#{$fa-css-prefix}-medkit:before { content: $fa-var-medkit; }
+.#{$fa-css-prefix}-fighter-jet:before { content: $fa-var-fighter-jet; }
+.#{$fa-css-prefix}-beer:before { content: $fa-var-beer; }
+.#{$fa-css-prefix}-h-square:before { content: $fa-var-h-square; }
+.#{$fa-css-prefix}-plus-square:before { content: $fa-var-plus-square; }
+.#{$fa-css-prefix}-angle-double-left:before { content: $fa-var-angle-double-left; }
+.#{$fa-css-prefix}-angle-double-right:before { content: $fa-var-angle-double-right; }
+.#{$fa-css-prefix}-angle-double-up:before { content: $fa-var-angle-double-up; }
+.#{$fa-css-prefix}-angle-double-down:before { content: $fa-var-angle-double-down; }
+.#{$fa-css-prefix}-angle-left:before { content: $fa-var-angle-left; }
+.#{$fa-css-prefix}-angle-right:before { content: $fa-var-angle-right; }
+.#{$fa-css-prefix}-angle-up:before { content: $fa-var-angle-up; }
+.#{$fa-css-prefix}-angle-down:before { content: $fa-var-angle-down; }
+.#{$fa-css-prefix}-desktop:before { content: $fa-var-desktop; }
+.#{$fa-css-prefix}-laptop:before { content: $fa-var-laptop; }
+.#{$fa-css-prefix}-tablet:before { content: $fa-var-tablet; }
+.#{$fa-css-prefix}-mobile-phone:before,
+.#{$fa-css-prefix}-mobile:before { content: $fa-var-mobile; }
+.#{$fa-css-prefix}-circle-o:before { content: $fa-var-circle-o; }
+.#{$fa-css-prefix}-quote-left:before { content: $fa-var-quote-left; }
+.#{$fa-css-prefix}-quote-right:before { content: $fa-var-quote-right; }
+.#{$fa-css-prefix}-spinner:before { content: $fa-var-spinner; }
+.#{$fa-css-prefix}-circle:before { content: $fa-var-circle; }
+.#{$fa-css-prefix}-mail-reply:before,
+.#{$fa-css-prefix}-reply:before { content: $fa-var-reply; }
+.#{$fa-css-prefix}-github-alt:before { content: $fa-var-github-alt; }
+.#{$fa-css-prefix}-folder-o:before { content: $fa-var-folder-o; }
+.#{$fa-css-prefix}-folder-open-o:before { content: $fa-var-folder-open-o; }
+.#{$fa-css-prefix}-smile-o:before { content: $fa-var-smile-o; }
+.#{$fa-css-prefix}-frown-o:before { content: $fa-var-frown-o; }
+.#{$fa-css-prefix}-meh-o:before { content: $fa-var-meh-o; }
+.#{$fa-css-prefix}-gamepad:before { content: $fa-var-gamepad; }
+.#{$fa-css-prefix}-keyboard-o:before { content: $fa-var-keyboard-o; }
+.#{$fa-css-prefix}-flag-o:before { content: $fa-var-flag-o; }
+.#{$fa-css-prefix}-flag-checkered:before { content: $fa-var-flag-checkered; }
+.#{$fa-css-prefix}-terminal:before { content: $fa-var-terminal; }
+.#{$fa-css-prefix}-code:before { content: $fa-var-code; }
+.#{$fa-css-prefix}-mail-reply-all:before,
+.#{$fa-css-prefix}-reply-all:before { content: $fa-var-reply-all; }
+.#{$fa-css-prefix}-star-half-empty:before,
+.#{$fa-css-prefix}-star-half-full:before,
+.#{$fa-css-prefix}-star-half-o:before { content: $fa-var-star-half-o; }
+.#{$fa-css-prefix}-location-arrow:before { content: $fa-var-location-arrow; }
+.#{$fa-css-prefix}-crop:before { content: $fa-var-crop; }
+.#{$fa-css-prefix}-code-fork:before { content: $fa-var-code-fork; }
+.#{$fa-css-prefix}-unlink:before,
+.#{$fa-css-prefix}-chain-broken:before { content: $fa-var-chain-broken; }
+.#{$fa-css-prefix}-question:before { content: $fa-var-question; }
+.#{$fa-css-prefix}-info:before { content: $fa-var-info; }
+.#{$fa-css-prefix}-exclamation:before { content: $fa-var-exclamation; }
+.#{$fa-css-prefix}-superscript:before { content: $fa-var-superscript; }
+.#{$fa-css-prefix}-subscript:before { content: $fa-var-subscript; }
+.#{$fa-css-prefix}-eraser:before { content: $fa-var-eraser; }
+.#{$fa-css-prefix}-puzzle-piece:before { content: $fa-var-puzzle-piece; }
+.#{$fa-css-prefix}-microphone:before { content: $fa-var-microphone; }
+.#{$fa-css-prefix}-microphone-slash:before { content: $fa-var-microphone-slash; }
+.#{$fa-css-prefix}-shield:before { content: $fa-var-shield; }
+.#{$fa-css-prefix}-calendar-o:before { content: $fa-var-calendar-o; }
+.#{$fa-css-prefix}-fire-extinguisher:before { content: $fa-var-fire-extinguisher; }
+.#{$fa-css-prefix}-rocket:before { content: $fa-var-rocket; }
+.#{$fa-css-prefix}-maxcdn:before { content: $fa-var-maxcdn; }
+.#{$fa-css-prefix}-chevron-circle-left:before { content: $fa-var-chevron-circle-left; }
+.#{$fa-css-prefix}-chevron-circle-right:before { content: $fa-var-chevron-circle-right; }
+.#{$fa-css-prefix}-chevron-circle-up:before { content: $fa-var-chevron-circle-up; }
+.#{$fa-css-prefix}-chevron-circle-down:before { content: $fa-var-chevron-circle-down; }
+.#{$fa-css-prefix}-html5:before { content: $fa-var-html5; }
+.#{$fa-css-prefix}-css3:before { content: $fa-var-css3; }
+.#{$fa-css-prefix}-anchor:before { content: $fa-var-anchor; }
+.#{$fa-css-prefix}-unlock-alt:before { content: $fa-var-unlock-alt; }
+.#{$fa-css-prefix}-bullseye:before { content: $fa-var-bullseye; }
+.#{$fa-css-prefix}-ellipsis-h:before { content: $fa-var-ellipsis-h; }
+.#{$fa-css-prefix}-ellipsis-v:before { content: $fa-var-ellipsis-v; }
+.#{$fa-css-prefix}-rss-square:before { content: $fa-var-rss-square; }
+.#{$fa-css-prefix}-play-circle:before { content: $fa-var-play-circle; }
+.#{$fa-css-prefix}-ticket:before { content: $fa-var-ticket; }
+.#{$fa-css-prefix}-minus-square:before { content: $fa-var-minus-square; }
+.#{$fa-css-prefix}-minus-square-o:before { content: $fa-var-minus-square-o; }
+.#{$fa-css-prefix}-level-up:before { content: $fa-var-level-up; }
+.#{$fa-css-prefix}-level-down:before { content: $fa-var-level-down; }
+.#{$fa-css-prefix}-check-square:before { content: $fa-var-check-square; }
+.#{$fa-css-prefix}-pencil-square:before { content: $fa-var-pencil-square; }
+.#{$fa-css-prefix}-external-link-square:before { content: $fa-var-external-link-square; }
+.#{$fa-css-prefix}-share-square:before { content: $fa-var-share-square; }
+.#{$fa-css-prefix}-compass:before { content: $fa-var-compass; }
+.#{$fa-css-prefix}-toggle-down:before,
+.#{$fa-css-prefix}-caret-square-o-down:before { content: $fa-var-caret-square-o-down; }
+.#{$fa-css-prefix}-toggle-up:before,
+.#{$fa-css-prefix}-caret-square-o-up:before { content: $fa-var-caret-square-o-up; }
+.#{$fa-css-prefix}-toggle-right:before,
+.#{$fa-css-prefix}-caret-square-o-right:before { content: $fa-var-caret-square-o-right; }
+.#{$fa-css-prefix}-euro:before,
+.#{$fa-css-prefix}-eur:before { content: $fa-var-eur; }
+.#{$fa-css-prefix}-gbp:before { content: $fa-var-gbp; }
+.#{$fa-css-prefix}-dollar:before,
+.#{$fa-css-prefix}-usd:before { content: $fa-var-usd; }
+.#{$fa-css-prefix}-rupee:before,
+.#{$fa-css-prefix}-inr:before { content: $fa-var-inr; }
+.#{$fa-css-prefix}-cny:before,
+.#{$fa-css-prefix}-rmb:before,
+.#{$fa-css-prefix}-yen:before,
+.#{$fa-css-prefix}-jpy:before { content: $fa-var-jpy; }
+.#{$fa-css-prefix}-ruble:before,
+.#{$fa-css-prefix}-rouble:before,
+.#{$fa-css-prefix}-rub:before { content: $fa-var-rub; }
+.#{$fa-css-prefix}-won:before,
+.#{$fa-css-prefix}-krw:before { content: $fa-var-krw; }
+.#{$fa-css-prefix}-bitcoin:before,
+.#{$fa-css-prefix}-btc:before { content: $fa-var-btc; }
+.#{$fa-css-prefix}-file:before { content: $fa-var-file; }
+.#{$fa-css-prefix}-file-text:before { content: $fa-var-file-text; }
+.#{$fa-css-prefix}-sort-alpha-asc:before { content: $fa-var-sort-alpha-asc; }
+.#{$fa-css-prefix}-sort-alpha-desc:before { content: $fa-var-sort-alpha-desc; }
+.#{$fa-css-prefix}-sort-amount-asc:before { content: $fa-var-sort-amount-asc; }
+.#{$fa-css-prefix}-sort-amount-desc:before { content: $fa-var-sort-amount-desc; }
+.#{$fa-css-prefix}-sort-numeric-asc:before { content: $fa-var-sort-numeric-asc; }
+.#{$fa-css-prefix}-sort-numeric-desc:before { content: $fa-var-sort-numeric-desc; }
+.#{$fa-css-prefix}-thumbs-up:before { content: $fa-var-thumbs-up; }
+.#{$fa-css-prefix}-thumbs-down:before { content: $fa-var-thumbs-down; }
+.#{$fa-css-prefix}-youtube-square:before { content: $fa-var-youtube-square; }
+.#{$fa-css-prefix}-youtube:before { content: $fa-var-youtube; }
+.#{$fa-css-prefix}-xing:before { content: $fa-var-xing; }
+.#{$fa-css-prefix}-xing-square:before { content: $fa-var-xing-square; }
+.#{$fa-css-prefix}-youtube-play:before { content: $fa-var-youtube-play; }
+.#{$fa-css-prefix}-dropbox:before { content: $fa-var-dropbox; }
+.#{$fa-css-prefix}-stack-overflow:before { content: $fa-var-stack-overflow; }
+.#{$fa-css-prefix}-instagram:before { content: $fa-var-instagram; }
+.#{$fa-css-prefix}-flickr:before { content: $fa-var-flickr; }
+.#{$fa-css-prefix}-adn:before { content: $fa-var-adn; }
+.#{$fa-css-prefix}-bitbucket:before { content: $fa-var-bitbucket; }
+.#{$fa-css-prefix}-bitbucket-square:before { content: $fa-var-bitbucket-square; }
+.#{$fa-css-prefix}-tumblr:before { content: $fa-var-tumblr; }
+.#{$fa-css-prefix}-tumblr-square:before { content: $fa-var-tumblr-square; }
+.#{$fa-css-prefix}-long-arrow-down:before { content: $fa-var-long-arrow-down; }
+.#{$fa-css-prefix}-long-arrow-up:before { content: $fa-var-long-arrow-up; }
+.#{$fa-css-prefix}-long-arrow-left:before { content: $fa-var-long-arrow-left; }
+.#{$fa-css-prefix}-long-arrow-right:before { content: $fa-var-long-arrow-right; }
+.#{$fa-css-prefix}-apple:before { content: $fa-var-apple; }
+.#{$fa-css-prefix}-windows:before { content: $fa-var-windows; }
+.#{$fa-css-prefix}-android:before { content: $fa-var-android; }
+.#{$fa-css-prefix}-linux:before { content: $fa-var-linux; }
+.#{$fa-css-prefix}-dribbble:before { content: $fa-var-dribbble; }
+.#{$fa-css-prefix}-skype:before { content: $fa-var-skype; }
+.#{$fa-css-prefix}-foursquare:before { content: $fa-var-foursquare; }
+.#{$fa-css-prefix}-trello:before { content: $fa-var-trello; }
+.#{$fa-css-prefix}-female:before { content: $fa-var-female; }
+.#{$fa-css-prefix}-male:before { content: $fa-var-male; }
+.#{$fa-css-prefix}-gittip:before,
+.#{$fa-css-prefix}-gratipay:before { content: $fa-var-gratipay; }
+.#{$fa-css-prefix}-sun-o:before { content: $fa-var-sun-o; }
+.#{$fa-css-prefix}-moon-o:before { content: $fa-var-moon-o; }
+.#{$fa-css-prefix}-archive:before { content: $fa-var-archive; }
+.#{$fa-css-prefix}-bug:before { content: $fa-var-bug; }
+.#{$fa-css-prefix}-vk:before { content: $fa-var-vk; }
+.#{$fa-css-prefix}-weibo:before { content: $fa-var-weibo; }
+.#{$fa-css-prefix}-renren:before { content: $fa-var-renren; }
+.#{$fa-css-prefix}-pagelines:before { content: $fa-var-pagelines; }
+.#{$fa-css-prefix}-stack-exchange:before { content: $fa-var-stack-exchange; }
+.#{$fa-css-prefix}-arrow-circle-o-right:before { content: $fa-var-arrow-circle-o-right; }
+.#{$fa-css-prefix}-arrow-circle-o-left:before { content: $fa-var-arrow-circle-o-left; }
+.#{$fa-css-prefix}-toggle-left:before,
+.#{$fa-css-prefix}-caret-square-o-left:before { content: $fa-var-caret-square-o-left; }
+.#{$fa-css-prefix}-dot-circle-o:before { content: $fa-var-dot-circle-o; }
+.#{$fa-css-prefix}-wheelchair:before { content: $fa-var-wheelchair; }
+.#{$fa-css-prefix}-vimeo-square:before { content: $fa-var-vimeo-square; }
+.#{$fa-css-prefix}-turkish-lira:before,
+.#{$fa-css-prefix}-try:before { content: $fa-var-try; }
+.#{$fa-css-prefix}-plus-square-o:before { content: $fa-var-plus-square-o; }
+.#{$fa-css-prefix}-space-shuttle:before { content: $fa-var-space-shuttle; }
+.#{$fa-css-prefix}-slack:before { content: $fa-var-slack; }
+.#{$fa-css-prefix}-envelope-square:before { content: $fa-var-envelope-square; }
+.#{$fa-css-prefix}-wordpress:before { content: $fa-var-wordpress; }
+.#{$fa-css-prefix}-openid:before { content: $fa-var-openid; }
+.#{$fa-css-prefix}-institution:before,
+.#{$fa-css-prefix}-bank:before,
+.#{$fa-css-prefix}-university:before { content: $fa-var-university; }
+.#{$fa-css-prefix}-mortar-board:before,
+.#{$fa-css-prefix}-graduation-cap:before { content: $fa-var-graduation-cap; }
+.#{$fa-css-prefix}-yahoo:before { content: $fa-var-yahoo; }
+.#{$fa-css-prefix}-google:before { content: $fa-var-google; }
+.#{$fa-css-prefix}-reddit:before { content: $fa-var-reddit; }
+.#{$fa-css-prefix}-reddit-square:before { content: $fa-var-reddit-square; }
+.#{$fa-css-prefix}-stumbleupon-circle:before { content: $fa-var-stumbleupon-circle; }
+.#{$fa-css-prefix}-stumbleupon:before { content: $fa-var-stumbleupon; }
+.#{$fa-css-prefix}-delicious:before { content: $fa-var-delicious; }
+.#{$fa-css-prefix}-digg:before { content: $fa-var-digg; }
+.#{$fa-css-prefix}-pied-piper:before { content: $fa-var-pied-piper; }
+.#{$fa-css-prefix}-pied-piper-alt:before { content: $fa-var-pied-piper-alt; }
+.#{$fa-css-prefix}-drupal:before { content: $fa-var-drupal; }
+.#{$fa-css-prefix}-joomla:before { content: $fa-var-joomla; }
+.#{$fa-css-prefix}-language:before { content: $fa-var-language; }
+.#{$fa-css-prefix}-fax:before { content: $fa-var-fax; }
+.#{$fa-css-prefix}-building:before { content: $fa-var-building; }
+.#{$fa-css-prefix}-child:before { content: $fa-var-child; }
+.#{$fa-css-prefix}-paw:before { content: $fa-var-paw; }
+.#{$fa-css-prefix}-spoon:before { content: $fa-var-spoon; }
+.#{$fa-css-prefix}-cube:before { content: $fa-var-cube; }
+.#{$fa-css-prefix}-cubes:before { content: $fa-var-cubes; }
+.#{$fa-css-prefix}-behance:before { content: $fa-var-behance; }
+.#{$fa-css-prefix}-behance-square:before { content: $fa-var-behance-square; }
+.#{$fa-css-prefix}-steam:before { content: $fa-var-steam; }
+.#{$fa-css-prefix}-steam-square:before { content: $fa-var-steam-square; }
+.#{$fa-css-prefix}-recycle:before { content: $fa-var-recycle; }
+.#{$fa-css-prefix}-automobile:before,
+.#{$fa-css-prefix}-car:before { content: $fa-var-car; }
+.#{$fa-css-prefix}-cab:before,
+.#{$fa-css-prefix}-taxi:before { content: $fa-var-taxi; }
+.#{$fa-css-prefix}-tree:before { content: $fa-var-tree; }
+.#{$fa-css-prefix}-spotify:before { content: $fa-var-spotify; }
+.#{$fa-css-prefix}-deviantart:before { content: $fa-var-deviantart; }
+.#{$fa-css-prefix}-soundcloud:before { content: $fa-var-soundcloud; }
+.#{$fa-css-prefix}-database:before { content: $fa-var-database; }
+.#{$fa-css-prefix}-file-pdf-o:before { content: $fa-var-file-pdf-o; }
+.#{$fa-css-prefix}-file-word-o:before { content: $fa-var-file-word-o; }
+.#{$fa-css-prefix}-file-excel-o:before { content: $fa-var-file-excel-o; }
+.#{$fa-css-prefix}-file-powerpoint-o:before { content: $fa-var-file-powerpoint-o; }
+.#{$fa-css-prefix}-file-photo-o:before,
+.#{$fa-css-prefix}-file-picture-o:before,
+.#{$fa-css-prefix}-file-image-o:before { content: $fa-var-file-image-o; }
+.#{$fa-css-prefix}-file-zip-o:before,
+.#{$fa-css-prefix}-file-archive-o:before { content: $fa-var-file-archive-o; }
+.#{$fa-css-prefix}-file-sound-o:before,
+.#{$fa-css-prefix}-file-audio-o:before { content: $fa-var-file-audio-o; }
+.#{$fa-css-prefix}-file-movie-o:before,
+.#{$fa-css-prefix}-file-video-o:before { content: $fa-var-file-video-o; }
+.#{$fa-css-prefix}-file-code-o:before { content: $fa-var-file-code-o; }
+.#{$fa-css-prefix}-vine:before { content: $fa-var-vine; }
+.#{$fa-css-prefix}-codepen:before { content: $fa-var-codepen; }
+.#{$fa-css-prefix}-jsfiddle:before { content: $fa-var-jsfiddle; }
+.#{$fa-css-prefix}-life-bouy:before,
+.#{$fa-css-prefix}-life-buoy:before,
+.#{$fa-css-prefix}-life-saver:before,
+.#{$fa-css-prefix}-support:before,
+.#{$fa-css-prefix}-life-ring:before { content: $fa-var-life-ring; }
+.#{$fa-css-prefix}-circle-o-notch:before { content: $fa-var-circle-o-notch; }
+.#{$fa-css-prefix}-ra:before,
+.#{$fa-css-prefix}-rebel:before { content: $fa-var-rebel; }
+.#{$fa-css-prefix}-ge:before,
+.#{$fa-css-prefix}-empire:before { content: $fa-var-empire; }
+.#{$fa-css-prefix}-git-square:before { content: $fa-var-git-square; }
+.#{$fa-css-prefix}-git:before { content: $fa-var-git; }
+.#{$fa-css-prefix}-y-combinator-square:before,
+.#{$fa-css-prefix}-yc-square:before,
+.#{$fa-css-prefix}-hacker-news:before { content: $fa-var-hacker-news; }
+.#{$fa-css-prefix}-tencent-weibo:before { content: $fa-var-tencent-weibo; }
+.#{$fa-css-prefix}-qq:before { content: $fa-var-qq; }
+.#{$fa-css-prefix}-wechat:before,
+.#{$fa-css-prefix}-weixin:before { content: $fa-var-weixin; }
+.#{$fa-css-prefix}-send:before,
+.#{$fa-css-prefix}-paper-plane:before { content: $fa-var-paper-plane; }
+.#{$fa-css-prefix}-send-o:before,
+.#{$fa-css-prefix}-paper-plane-o:before { content: $fa-var-paper-plane-o; }
+.#{$fa-css-prefix}-history:before { content: $fa-var-history; }
+.#{$fa-css-prefix}-circle-thin:before { content: $fa-var-circle-thin; }
+.#{$fa-css-prefix}-header:before { content: $fa-var-header; }
+.#{$fa-css-prefix}-paragraph:before { content: $fa-var-paragraph; }
+.#{$fa-css-prefix}-sliders:before { content: $fa-var-sliders; }
+.#{$fa-css-prefix}-share-alt:before { content: $fa-var-share-alt; }
+.#{$fa-css-prefix}-share-alt-square:before { content: $fa-var-share-alt-square; }
+.#{$fa-css-prefix}-bomb:before { content: $fa-var-bomb; }
+.#{$fa-css-prefix}-soccer-ball-o:before,
+.#{$fa-css-prefix}-futbol-o:before { content: $fa-var-futbol-o; }
+.#{$fa-css-prefix}-tty:before { content: $fa-var-tty; }
+.#{$fa-css-prefix}-binoculars:before { content: $fa-var-binoculars; }
+.#{$fa-css-prefix}-plug:before { content: $fa-var-plug; }
+.#{$fa-css-prefix}-slideshare:before { content: $fa-var-slideshare; }
+.#{$fa-css-prefix}-twitch:before { content: $fa-var-twitch; }
+.#{$fa-css-prefix}-yelp:before { content: $fa-var-yelp; }
+.#{$fa-css-prefix}-newspaper-o:before { content: $fa-var-newspaper-o; }
+.#{$fa-css-prefix}-wifi:before { content: $fa-var-wifi; }
+.#{$fa-css-prefix}-calculator:before { content: $fa-var-calculator; }
+.#{$fa-css-prefix}-paypal:before { content: $fa-var-paypal; }
+.#{$fa-css-prefix}-google-wallet:before { content: $fa-var-google-wallet; }
+.#{$fa-css-prefix}-cc-visa:before { content: $fa-var-cc-visa; }
+.#{$fa-css-prefix}-cc-mastercard:before { content: $fa-var-cc-mastercard; }
+.#{$fa-css-prefix}-cc-discover:before { content: $fa-var-cc-discover; }
+.#{$fa-css-prefix}-cc-amex:before { content: $fa-var-cc-amex; }
+.#{$fa-css-prefix}-cc-paypal:before { content: $fa-var-cc-paypal; }
+.#{$fa-css-prefix}-cc-stripe:before { content: $fa-var-cc-stripe; }
+.#{$fa-css-prefix}-bell-slash:before { content: $fa-var-bell-slash; }
+.#{$fa-css-prefix}-bell-slash-o:before { content: $fa-var-bell-slash-o; }
+.#{$fa-css-prefix}-trash:before { content: $fa-var-trash; }
+.#{$fa-css-prefix}-copyright:before { content: $fa-var-copyright; }
+.#{$fa-css-prefix}-at:before { content: $fa-var-at; }
+.#{$fa-css-prefix}-eyedropper:before { content: $fa-var-eyedropper; }
+.#{$fa-css-prefix}-paint-brush:before { content: $fa-var-paint-brush; }
+.#{$fa-css-prefix}-birthday-cake:before { content: $fa-var-birthday-cake; }
+.#{$fa-css-prefix}-area-chart:before { content: $fa-var-area-chart; }
+.#{$fa-css-prefix}-pie-chart:before { content: $fa-var-pie-chart; }
+.#{$fa-css-prefix}-line-chart:before { content: $fa-var-line-chart; }
+.#{$fa-css-prefix}-lastfm:before { content: $fa-var-lastfm; }
+.#{$fa-css-prefix}-lastfm-square:before { content: $fa-var-lastfm-square; }
+.#{$fa-css-prefix}-toggle-off:before { content: $fa-var-toggle-off; }
+.#{$fa-css-prefix}-toggle-on:before { content: $fa-var-toggle-on; }
+.#{$fa-css-prefix}-bicycle:before { content: $fa-var-bicycle; }
+.#{$fa-css-prefix}-bus:before { content: $fa-var-bus; }
+.#{$fa-css-prefix}-ioxhost:before { content: $fa-var-ioxhost; }
+.#{$fa-css-prefix}-angellist:before { content: $fa-var-angellist; }
+.#{$fa-css-prefix}-cc:before { content: $fa-var-cc; }
+.#{$fa-css-prefix}-shekel:before,
+.#{$fa-css-prefix}-sheqel:before,
+.#{$fa-css-prefix}-ils:before { content: $fa-var-ils; }
+.#{$fa-css-prefix}-meanpath:before { content: $fa-var-meanpath; }
+.#{$fa-css-prefix}-buysellads:before { content: $fa-var-buysellads; }
+.#{$fa-css-prefix}-connectdevelop:before { content: $fa-var-connectdevelop; }
+.#{$fa-css-prefix}-dashcube:before { content: $fa-var-dashcube; }
+.#{$fa-css-prefix}-forumbee:before { content: $fa-var-forumbee; }
+.#{$fa-css-prefix}-leanpub:before { content: $fa-var-leanpub; }
+.#{$fa-css-prefix}-sellsy:before { content: $fa-var-sellsy; }
+.#{$fa-css-prefix}-shirtsinbulk:before { content: $fa-var-shirtsinbulk; }
+.#{$fa-css-prefix}-simplybuilt:before { content: $fa-var-simplybuilt; }
+.#{$fa-css-prefix}-skyatlas:before { content: $fa-var-skyatlas; }
+.#{$fa-css-prefix}-cart-plus:before { content: $fa-var-cart-plus; }
+.#{$fa-css-prefix}-cart-arrow-down:before { content: $fa-var-cart-arrow-down; }
+.#{$fa-css-prefix}-diamond:before { content: $fa-var-diamond; }
+.#{$fa-css-prefix}-ship:before { content: $fa-var-ship; }
+.#{$fa-css-prefix}-user-secret:before { content: $fa-var-user-secret; }
+.#{$fa-css-prefix}-motorcycle:before { content: $fa-var-motorcycle; }
+.#{$fa-css-prefix}-street-view:before { content: $fa-var-street-view; }
+.#{$fa-css-prefix}-heartbeat:before { content: $fa-var-heartbeat; }
+.#{$fa-css-prefix}-venus:before { content: $fa-var-venus; }
+.#{$fa-css-prefix}-mars:before { content: $fa-var-mars; }
+.#{$fa-css-prefix}-mercury:before { content: $fa-var-mercury; }
+.#{$fa-css-prefix}-intersex:before,
+.#{$fa-css-prefix}-transgender:before { content: $fa-var-transgender; }
+.#{$fa-css-prefix}-transgender-alt:before { content: $fa-var-transgender-alt; }
+.#{$fa-css-prefix}-venus-double:before { content: $fa-var-venus-double; }
+.#{$fa-css-prefix}-mars-double:before { content: $fa-var-mars-double; }
+.#{$fa-css-prefix}-venus-mars:before { content: $fa-var-venus-mars; }
+.#{$fa-css-prefix}-mars-stroke:before { content: $fa-var-mars-stroke; }
+.#{$fa-css-prefix}-mars-stroke-v:before { content: $fa-var-mars-stroke-v; }
+.#{$fa-css-prefix}-mars-stroke-h:before { content: $fa-var-mars-stroke-h; }
+.#{$fa-css-prefix}-neuter:before { content: $fa-var-neuter; }
+.#{$fa-css-prefix}-genderless:before { content: $fa-var-genderless; }
+.#{$fa-css-prefix}-facebook-official:before { content: $fa-var-facebook-official; }
+.#{$fa-css-prefix}-pinterest-p:before { content: $fa-var-pinterest-p; }
+.#{$fa-css-prefix}-whatsapp:before { content: $fa-var-whatsapp; }
+.#{$fa-css-prefix}-server:before { content: $fa-var-server; }
+.#{$fa-css-prefix}-user-plus:before { content: $fa-var-user-plus; }
+.#{$fa-css-prefix}-user-times:before { content: $fa-var-user-times; }
+.#{$fa-css-prefix}-hotel:before,
+.#{$fa-css-prefix}-bed:before { content: $fa-var-bed; }
+.#{$fa-css-prefix}-viacoin:before { content: $fa-var-viacoin; }
+.#{$fa-css-prefix}-train:before { content: $fa-var-train; }
+.#{$fa-css-prefix}-subway:before { content: $fa-var-subway; }
+.#{$fa-css-prefix}-medium:before { content: $fa-var-medium; }
+.#{$fa-css-prefix}-yc:before,
+.#{$fa-css-prefix}-y-combinator:before { content: $fa-var-y-combinator; }
+.#{$fa-css-prefix}-optin-monster:before { content: $fa-var-optin-monster; }
+.#{$fa-css-prefix}-opencart:before { content: $fa-var-opencart; }
+.#{$fa-css-prefix}-expeditedssl:before { content: $fa-var-expeditedssl; }
+.#{$fa-css-prefix}-battery-4:before,
+.#{$fa-css-prefix}-battery-full:before { content: $fa-var-battery-full; }
+.#{$fa-css-prefix}-battery-3:before,
+.#{$fa-css-prefix}-battery-three-quarters:before { content: $fa-var-battery-three-quarters; }
+.#{$fa-css-prefix}-battery-2:before,
+.#{$fa-css-prefix}-battery-half:before { content: $fa-var-battery-half; }
+.#{$fa-css-prefix}-battery-1:before,
+.#{$fa-css-prefix}-battery-quarter:before { content: $fa-var-battery-quarter; }
+.#{$fa-css-prefix}-battery-0:before,
+.#{$fa-css-prefix}-battery-empty:before { content: $fa-var-battery-empty; }
+.#{$fa-css-prefix}-mouse-pointer:before { content: $fa-var-mouse-pointer; }
+.#{$fa-css-prefix}-i-cursor:before { content: $fa-var-i-cursor; }
+.#{$fa-css-prefix}-object-group:before { content: $fa-var-object-group; }
+.#{$fa-css-prefix}-object-ungroup:before { content: $fa-var-object-ungroup; }
+.#{$fa-css-prefix}-sticky-note:before { content: $fa-var-sticky-note; }
+.#{$fa-css-prefix}-sticky-note-o:before { content: $fa-var-sticky-note-o; }
+.#{$fa-css-prefix}-cc-jcb:before { content: $fa-var-cc-jcb; }
+.#{$fa-css-prefix}-cc-diners-club:before { content: $fa-var-cc-diners-club; }
+.#{$fa-css-prefix}-clone:before { content: $fa-var-clone; }
+.#{$fa-css-prefix}-balance-scale:before { content: $fa-var-balance-scale; }
+.#{$fa-css-prefix}-hourglass-o:before { content: $fa-var-hourglass-o; }
+.#{$fa-css-prefix}-hourglass-1:before,
+.#{$fa-css-prefix}-hourglass-start:before { content: $fa-var-hourglass-start; }
+.#{$fa-css-prefix}-hourglass-2:before,
+.#{$fa-css-prefix}-hourglass-half:before { content: $fa-var-hourglass-half; }
+.#{$fa-css-prefix}-hourglass-3:before,
+.#{$fa-css-prefix}-hourglass-end:before { content: $fa-var-hourglass-end; }
+.#{$fa-css-prefix}-hourglass:before { content: $fa-var-hourglass; }
+.#{$fa-css-prefix}-hand-grab-o:before,
+.#{$fa-css-prefix}-hand-rock-o:before { content: $fa-var-hand-rock-o; }
+.#{$fa-css-prefix}-hand-stop-o:before,
+.#{$fa-css-prefix}-hand-paper-o:before { content: $fa-var-hand-paper-o; }
+.#{$fa-css-prefix}-hand-scissors-o:before { content: $fa-var-hand-scissors-o; }
+.#{$fa-css-prefix}-hand-lizard-o:before { content: $fa-var-hand-lizard-o; }
+.#{$fa-css-prefix}-hand-spock-o:before { content: $fa-var-hand-spock-o; }
+.#{$fa-css-prefix}-hand-pointer-o:before { content: $fa-var-hand-pointer-o; }
+.#{$fa-css-prefix}-hand-peace-o:before { content: $fa-var-hand-peace-o; }
+.#{$fa-css-prefix}-trademark:before { content: $fa-var-trademark; }
+.#{$fa-css-prefix}-registered:before { content: $fa-var-registered; }
+.#{$fa-css-prefix}-creative-commons:before { content: $fa-var-creative-commons; }
+.#{$fa-css-prefix}-gg:before { content: $fa-var-gg; }
+.#{$fa-css-prefix}-gg-circle:before { content: $fa-var-gg-circle; }
+.#{$fa-css-prefix}-tripadvisor:before { content: $fa-var-tripadvisor; }
+.#{$fa-css-prefix}-odnoklassniki:before { content: $fa-var-odnoklassniki; }
+.#{$fa-css-prefix}-odnoklassniki-square:before { content: $fa-var-odnoklassniki-square; }
+.#{$fa-css-prefix}-get-pocket:before { content: $fa-var-get-pocket; }
+.#{$fa-css-prefix}-wikipedia-w:before { content: $fa-var-wikipedia-w; }
+.#{$fa-css-prefix}-safari:before { content: $fa-var-safari; }
+.#{$fa-css-prefix}-chrome:before { content: $fa-var-chrome; }
+.#{$fa-css-prefix}-firefox:before { content: $fa-var-firefox; }
+.#{$fa-css-prefix}-opera:before { content: $fa-var-opera; }
+.#{$fa-css-prefix}-internet-explorer:before { content: $fa-var-internet-explorer; }
+.#{$fa-css-prefix}-tv:before,
+.#{$fa-css-prefix}-television:before { content: $fa-var-television; }
+.#{$fa-css-prefix}-contao:before { content: $fa-var-contao; }
+.#{$fa-css-prefix}-500px:before { content: $fa-var-500px; }
+.#{$fa-css-prefix}-amazon:before { content: $fa-var-amazon; }
+.#{$fa-css-prefix}-calendar-plus-o:before { content: $fa-var-calendar-plus-o; }
+.#{$fa-css-prefix}-calendar-minus-o:before { content: $fa-var-calendar-minus-o; }
+.#{$fa-css-prefix}-calendar-times-o:before { content: $fa-var-calendar-times-o; }
+.#{$fa-css-prefix}-calendar-check-o:before { content: $fa-var-calendar-check-o; }
+.#{$fa-css-prefix}-industry:before { content: $fa-var-industry; }
+.#{$fa-css-prefix}-map-pin:before { content: $fa-var-map-pin; }
+.#{$fa-css-prefix}-map-signs:before { content: $fa-var-map-signs; }
+.#{$fa-css-prefix}-map-o:before { content: $fa-var-map-o; }
+.#{$fa-css-prefix}-map:before { content: $fa-var-map; }
+.#{$fa-css-prefix}-commenting:before { content: $fa-var-commenting; }
+.#{$fa-css-prefix}-commenting-o:before { content: $fa-var-commenting-o; }
+.#{$fa-css-prefix}-houzz:before { content: $fa-var-houzz; }
+.#{$fa-css-prefix}-vimeo:before { content: $fa-var-vimeo; }
+.#{$fa-css-prefix}-black-tie:before { content: $fa-var-black-tie; }
+.#{$fa-css-prefix}-fonticons:before { content: $fa-var-fonticons; }
+.#{$fa-css-prefix}-reddit-alien:before { content: $fa-var-reddit-alien; }
+.#{$fa-css-prefix}-edge:before { content: $fa-var-edge; }
+.#{$fa-css-prefix}-credit-card-alt:before { content: $fa-var-credit-card-alt; }
+.#{$fa-css-prefix}-codiepie:before { content: $fa-var-codiepie; }
+.#{$fa-css-prefix}-modx:before { content: $fa-var-modx; }
+.#{$fa-css-prefix}-fort-awesome:before { content: $fa-var-fort-awesome; }
+.#{$fa-css-prefix}-usb:before { content: $fa-var-usb; }
+.#{$fa-css-prefix}-product-hunt:before { content: $fa-var-product-hunt; }
+.#{$fa-css-prefix}-mixcloud:before { content: $fa-var-mixcloud; }
+.#{$fa-css-prefix}-scribd:before { content: $fa-var-scribd; }
+.#{$fa-css-prefix}-pause-circle:before { content: $fa-var-pause-circle; }
+.#{$fa-css-prefix}-pause-circle-o:before { content: $fa-var-pause-circle-o; }
+.#{$fa-css-prefix}-stop-circle:before { content: $fa-var-stop-circle; }
+.#{$fa-css-prefix}-stop-circle-o:before { content: $fa-var-stop-circle-o; }
+.#{$fa-css-prefix}-shopping-bag:before { content: $fa-var-shopping-bag; }
+.#{$fa-css-prefix}-shopping-basket:before { content: $fa-var-shopping-basket; }
+.#{$fa-css-prefix}-hashtag:before { content: $fa-var-hashtag; }
+.#{$fa-css-prefix}-bluetooth:before { content: $fa-var-bluetooth; }
+.#{$fa-css-prefix}-bluetooth-b:before { content: $fa-var-bluetooth-b; }
+.#{$fa-css-prefix}-percent:before { content: $fa-var-percent; }
diff --git a/Resources/public/sass/contrib/fontawesome/_larger.scss b/Resources/public/sass/contrib/fontawesome/_larger.scss
new file mode 100644
index 000000000..41e9a8184
--- /dev/null
+++ b/Resources/public/sass/contrib/fontawesome/_larger.scss
@@ -0,0 +1,13 @@
+// Icon Sizes
+// -------------------------
+
+/* makes the font 33% larger relative to the icon container */
+.#{$fa-css-prefix}-lg {
+ font-size: (4em / 3);
+ line-height: (3em / 4);
+ vertical-align: -15%;
+}
+.#{$fa-css-prefix}-2x { font-size: 2em; }
+.#{$fa-css-prefix}-3x { font-size: 3em; }
+.#{$fa-css-prefix}-4x { font-size: 4em; }
+.#{$fa-css-prefix}-5x { font-size: 5em; }
diff --git a/Resources/public/sass/contrib/fontawesome/_list.scss b/Resources/public/sass/contrib/fontawesome/_list.scss
new file mode 100644
index 000000000..7d1e4d54d
--- /dev/null
+++ b/Resources/public/sass/contrib/fontawesome/_list.scss
@@ -0,0 +1,19 @@
+// List Icons
+// -------------------------
+
+.#{$fa-css-prefix}-ul {
+ padding-left: 0;
+ margin-left: $fa-li-width;
+ list-style-type: none;
+ > li { position: relative; }
+}
+.#{$fa-css-prefix}-li {
+ position: absolute;
+ left: -$fa-li-width;
+ width: $fa-li-width;
+ top: (2em / 14);
+ text-align: center;
+ &.#{$fa-css-prefix}-lg {
+ left: -$fa-li-width + (4em / 14);
+ }
+}
diff --git a/Resources/public/sass/contrib/fontawesome/_mixins.scss b/Resources/public/sass/contrib/fontawesome/_mixins.scss
new file mode 100644
index 000000000..f96719b6a
--- /dev/null
+++ b/Resources/public/sass/contrib/fontawesome/_mixins.scss
@@ -0,0 +1,26 @@
+// Mixins
+// --------------------------
+
+@mixin fa-icon() {
+ display: inline-block;
+ font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration
+ font-size: inherit; // can't have font-size inherit on line above, so need to override
+ text-rendering: auto; // optimizelegibility throws things off #1094
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+
+}
+
+@mixin fa-icon-rotate($degrees, $rotation) {
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation});
+ -webkit-transform: rotate($degrees);
+ -ms-transform: rotate($degrees);
+ transform: rotate($degrees);
+}
+
+@mixin fa-icon-flip($horiz, $vert, $rotation) {
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation});
+ -webkit-transform: scale($horiz, $vert);
+ -ms-transform: scale($horiz, $vert);
+ transform: scale($horiz, $vert);
+}
diff --git a/Resources/public/sass/contrib/fontawesome/_path.scss b/Resources/public/sass/contrib/fontawesome/_path.scss
new file mode 100644
index 000000000..bb457c23a
--- /dev/null
+++ b/Resources/public/sass/contrib/fontawesome/_path.scss
@@ -0,0 +1,15 @@
+/* FONT PATH
+ * -------------------------- */
+
+@font-face {
+ font-family: 'FontAwesome';
+ src: url('#{$fa-font-path}/fontawesome-webfont.eot?v=#{$fa-version}');
+ src: url('#{$fa-font-path}/fontawesome-webfont.eot?#iefix&v=#{$fa-version}') format('embedded-opentype'),
+ url('#{$fa-font-path}/fontawesome-webfont.woff2?v=#{$fa-version}') format('woff2'),
+ url('#{$fa-font-path}/fontawesome-webfont.woff?v=#{$fa-version}') format('woff'),
+ url('#{$fa-font-path}/fontawesome-webfont.ttf?v=#{$fa-version}') format('truetype'),
+ url('#{$fa-font-path}/fontawesome-webfont.svg?v=#{$fa-version}#fontawesomeregular') format('svg');
+// src: url('#{$fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts
+ font-weight: normal;
+ font-style: normal;
+}
diff --git a/Resources/public/sass/contrib/fontawesome/_rotated-flipped.scss b/Resources/public/sass/contrib/fontawesome/_rotated-flipped.scss
new file mode 100644
index 000000000..a3558fd09
--- /dev/null
+++ b/Resources/public/sass/contrib/fontawesome/_rotated-flipped.scss
@@ -0,0 +1,20 @@
+// Rotated & Flipped Icons
+// -------------------------
+
+.#{$fa-css-prefix}-rotate-90 { @include fa-icon-rotate(90deg, 1); }
+.#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); }
+.#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); }
+
+.#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); }
+.#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(1, -1, 2); }
+
+// Hook for IE8-9
+// -------------------------
+
+:root .#{$fa-css-prefix}-rotate-90,
+:root .#{$fa-css-prefix}-rotate-180,
+:root .#{$fa-css-prefix}-rotate-270,
+:root .#{$fa-css-prefix}-flip-horizontal,
+:root .#{$fa-css-prefix}-flip-vertical {
+ filter: none;
+}
diff --git a/Resources/public/sass/contrib/fontawesome/_stacked.scss b/Resources/public/sass/contrib/fontawesome/_stacked.scss
new file mode 100644
index 000000000..aef740366
--- /dev/null
+++ b/Resources/public/sass/contrib/fontawesome/_stacked.scss
@@ -0,0 +1,20 @@
+// Stacked Icons
+// -------------------------
+
+.#{$fa-css-prefix}-stack {
+ position: relative;
+ display: inline-block;
+ width: 2em;
+ height: 2em;
+ line-height: 2em;
+ vertical-align: middle;
+}
+.#{$fa-css-prefix}-stack-1x, .#{$fa-css-prefix}-stack-2x {
+ position: absolute;
+ left: 0;
+ width: 100%;
+ text-align: center;
+}
+.#{$fa-css-prefix}-stack-1x { line-height: inherit; }
+.#{$fa-css-prefix}-stack-2x { font-size: 2em; }
+.#{$fa-css-prefix}-inverse { color: $fa-inverse; }
diff --git a/Resources/public/sass/contrib/fontawesome/_variables.scss b/Resources/public/sass/contrib/fontawesome/_variables.scss
new file mode 100644
index 000000000..0a471102c
--- /dev/null
+++ b/Resources/public/sass/contrib/fontawesome/_variables.scss
@@ -0,0 +1,708 @@
+// Variables
+// --------------------------
+
+$fa-font-path: "../fonts" !default;
+$fa-font-size-base: 14px !default;
+$fa-line-height-base: 1 !default;
+//$fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.5.0/fonts" !default; // for referencing Bootstrap CDN font files directly
+$fa-css-prefix: fa !default;
+$fa-version: "4.5.0" !default;
+$fa-border-color: #eee !default;
+$fa-inverse: #fff !default;
+$fa-li-width: (30em / 14) !default;
+
+$fa-var-500px: "\f26e";
+$fa-var-adjust: "\f042";
+$fa-var-adn: "\f170";
+$fa-var-align-center: "\f037";
+$fa-var-align-justify: "\f039";
+$fa-var-align-left: "\f036";
+$fa-var-align-right: "\f038";
+$fa-var-amazon: "\f270";
+$fa-var-ambulance: "\f0f9";
+$fa-var-anchor: "\f13d";
+$fa-var-android: "\f17b";
+$fa-var-angellist: "\f209";
+$fa-var-angle-double-down: "\f103";
+$fa-var-angle-double-left: "\f100";
+$fa-var-angle-double-right: "\f101";
+$fa-var-angle-double-up: "\f102";
+$fa-var-angle-down: "\f107";
+$fa-var-angle-left: "\f104";
+$fa-var-angle-right: "\f105";
+$fa-var-angle-up: "\f106";
+$fa-var-apple: "\f179";
+$fa-var-archive: "\f187";
+$fa-var-area-chart: "\f1fe";
+$fa-var-arrow-circle-down: "\f0ab";
+$fa-var-arrow-circle-left: "\f0a8";
+$fa-var-arrow-circle-o-down: "\f01a";
+$fa-var-arrow-circle-o-left: "\f190";
+$fa-var-arrow-circle-o-right: "\f18e";
+$fa-var-arrow-circle-o-up: "\f01b";
+$fa-var-arrow-circle-right: "\f0a9";
+$fa-var-arrow-circle-up: "\f0aa";
+$fa-var-arrow-down: "\f063";
+$fa-var-arrow-left: "\f060";
+$fa-var-arrow-right: "\f061";
+$fa-var-arrow-up: "\f062";
+$fa-var-arrows: "\f047";
+$fa-var-arrows-alt: "\f0b2";
+$fa-var-arrows-h: "\f07e";
+$fa-var-arrows-v: "\f07d";
+$fa-var-asterisk: "\f069";
+$fa-var-at: "\f1fa";
+$fa-var-automobile: "\f1b9";
+$fa-var-backward: "\f04a";
+$fa-var-balance-scale: "\f24e";
+$fa-var-ban: "\f05e";
+$fa-var-bank: "\f19c";
+$fa-var-bar-chart: "\f080";
+$fa-var-bar-chart-o: "\f080";
+$fa-var-barcode: "\f02a";
+$fa-var-bars: "\f0c9";
+$fa-var-battery-0: "\f244";
+$fa-var-battery-1: "\f243";
+$fa-var-battery-2: "\f242";
+$fa-var-battery-3: "\f241";
+$fa-var-battery-4: "\f240";
+$fa-var-battery-empty: "\f244";
+$fa-var-battery-full: "\f240";
+$fa-var-battery-half: "\f242";
+$fa-var-battery-quarter: "\f243";
+$fa-var-battery-three-quarters: "\f241";
+$fa-var-bed: "\f236";
+$fa-var-beer: "\f0fc";
+$fa-var-behance: "\f1b4";
+$fa-var-behance-square: "\f1b5";
+$fa-var-bell: "\f0f3";
+$fa-var-bell-o: "\f0a2";
+$fa-var-bell-slash: "\f1f6";
+$fa-var-bell-slash-o: "\f1f7";
+$fa-var-bicycle: "\f206";
+$fa-var-binoculars: "\f1e5";
+$fa-var-birthday-cake: "\f1fd";
+$fa-var-bitbucket: "\f171";
+$fa-var-bitbucket-square: "\f172";
+$fa-var-bitcoin: "\f15a";
+$fa-var-black-tie: "\f27e";
+$fa-var-bluetooth: "\f293";
+$fa-var-bluetooth-b: "\f294";
+$fa-var-bold: "\f032";
+$fa-var-bolt: "\f0e7";
+$fa-var-bomb: "\f1e2";
+$fa-var-book: "\f02d";
+$fa-var-bookmark: "\f02e";
+$fa-var-bookmark-o: "\f097";
+$fa-var-briefcase: "\f0b1";
+$fa-var-btc: "\f15a";
+$fa-var-bug: "\f188";
+$fa-var-building: "\f1ad";
+$fa-var-building-o: "\f0f7";
+$fa-var-bullhorn: "\f0a1";
+$fa-var-bullseye: "\f140";
+$fa-var-bus: "\f207";
+$fa-var-buysellads: "\f20d";
+$fa-var-cab: "\f1ba";
+$fa-var-calculator: "\f1ec";
+$fa-var-calendar: "\f073";
+$fa-var-calendar-check-o: "\f274";
+$fa-var-calendar-minus-o: "\f272";
+$fa-var-calendar-o: "\f133";
+$fa-var-calendar-plus-o: "\f271";
+$fa-var-calendar-times-o: "\f273";
+$fa-var-camera: "\f030";
+$fa-var-camera-retro: "\f083";
+$fa-var-car: "\f1b9";
+$fa-var-caret-down: "\f0d7";
+$fa-var-caret-left: "\f0d9";
+$fa-var-caret-right: "\f0da";
+$fa-var-caret-square-o-down: "\f150";
+$fa-var-caret-square-o-left: "\f191";
+$fa-var-caret-square-o-right: "\f152";
+$fa-var-caret-square-o-up: "\f151";
+$fa-var-caret-up: "\f0d8";
+$fa-var-cart-arrow-down: "\f218";
+$fa-var-cart-plus: "\f217";
+$fa-var-cc: "\f20a";
+$fa-var-cc-amex: "\f1f3";
+$fa-var-cc-diners-club: "\f24c";
+$fa-var-cc-discover: "\f1f2";
+$fa-var-cc-jcb: "\f24b";
+$fa-var-cc-mastercard: "\f1f1";
+$fa-var-cc-paypal: "\f1f4";
+$fa-var-cc-stripe: "\f1f5";
+$fa-var-cc-visa: "\f1f0";
+$fa-var-certificate: "\f0a3";
+$fa-var-chain: "\f0c1";
+$fa-var-chain-broken: "\f127";
+$fa-var-check: "\f00c";
+$fa-var-check-circle: "\f058";
+$fa-var-check-circle-o: "\f05d";
+$fa-var-check-square: "\f14a";
+$fa-var-check-square-o: "\f046";
+$fa-var-chevron-circle-down: "\f13a";
+$fa-var-chevron-circle-left: "\f137";
+$fa-var-chevron-circle-right: "\f138";
+$fa-var-chevron-circle-up: "\f139";
+$fa-var-chevron-down: "\f078";
+$fa-var-chevron-left: "\f053";
+$fa-var-chevron-right: "\f054";
+$fa-var-chevron-up: "\f077";
+$fa-var-child: "\f1ae";
+$fa-var-chrome: "\f268";
+$fa-var-circle: "\f111";
+$fa-var-circle-o: "\f10c";
+$fa-var-circle-o-notch: "\f1ce";
+$fa-var-circle-thin: "\f1db";
+$fa-var-clipboard: "\f0ea";
+$fa-var-clock-o: "\f017";
+$fa-var-clone: "\f24d";
+$fa-var-close: "\f00d";
+$fa-var-cloud: "\f0c2";
+$fa-var-cloud-download: "\f0ed";
+$fa-var-cloud-upload: "\f0ee";
+$fa-var-cny: "\f157";
+$fa-var-code: "\f121";
+$fa-var-code-fork: "\f126";
+$fa-var-codepen: "\f1cb";
+$fa-var-codiepie: "\f284";
+$fa-var-coffee: "\f0f4";
+$fa-var-cog: "\f013";
+$fa-var-cogs: "\f085";
+$fa-var-columns: "\f0db";
+$fa-var-comment: "\f075";
+$fa-var-comment-o: "\f0e5";
+$fa-var-commenting: "\f27a";
+$fa-var-commenting-o: "\f27b";
+$fa-var-comments: "\f086";
+$fa-var-comments-o: "\f0e6";
+$fa-var-compass: "\f14e";
+$fa-var-compress: "\f066";
+$fa-var-connectdevelop: "\f20e";
+$fa-var-contao: "\f26d";
+$fa-var-copy: "\f0c5";
+$fa-var-copyright: "\f1f9";
+$fa-var-creative-commons: "\f25e";
+$fa-var-credit-card: "\f09d";
+$fa-var-credit-card-alt: "\f283";
+$fa-var-crop: "\f125";
+$fa-var-crosshairs: "\f05b";
+$fa-var-css3: "\f13c";
+$fa-var-cube: "\f1b2";
+$fa-var-cubes: "\f1b3";
+$fa-var-cut: "\f0c4";
+$fa-var-cutlery: "\f0f5";
+$fa-var-dashboard: "\f0e4";
+$fa-var-dashcube: "\f210";
+$fa-var-database: "\f1c0";
+$fa-var-dedent: "\f03b";
+$fa-var-delicious: "\f1a5";
+$fa-var-desktop: "\f108";
+$fa-var-deviantart: "\f1bd";
+$fa-var-diamond: "\f219";
+$fa-var-digg: "\f1a6";
+$fa-var-dollar: "\f155";
+$fa-var-dot-circle-o: "\f192";
+$fa-var-download: "\f019";
+$fa-var-dribbble: "\f17d";
+$fa-var-dropbox: "\f16b";
+$fa-var-drupal: "\f1a9";
+$fa-var-edge: "\f282";
+$fa-var-edit: "\f044";
+$fa-var-eject: "\f052";
+$fa-var-ellipsis-h: "\f141";
+$fa-var-ellipsis-v: "\f142";
+$fa-var-empire: "\f1d1";
+$fa-var-envelope: "\f0e0";
+$fa-var-envelope-o: "\f003";
+$fa-var-envelope-square: "\f199";
+$fa-var-eraser: "\f12d";
+$fa-var-eur: "\f153";
+$fa-var-euro: "\f153";
+$fa-var-exchange: "\f0ec";
+$fa-var-exclamation: "\f12a";
+$fa-var-exclamation-circle: "\f06a";
+$fa-var-exclamation-triangle: "\f071";
+$fa-var-expand: "\f065";
+$fa-var-expeditedssl: "\f23e";
+$fa-var-external-link: "\f08e";
+$fa-var-external-link-square: "\f14c";
+$fa-var-eye: "\f06e";
+$fa-var-eye-slash: "\f070";
+$fa-var-eyedropper: "\f1fb";
+$fa-var-facebook: "\f09a";
+$fa-var-facebook-f: "\f09a";
+$fa-var-facebook-official: "\f230";
+$fa-var-facebook-square: "\f082";
+$fa-var-fast-backward: "\f049";
+$fa-var-fast-forward: "\f050";
+$fa-var-fax: "\f1ac";
+$fa-var-feed: "\f09e";
+$fa-var-female: "\f182";
+$fa-var-fighter-jet: "\f0fb";
+$fa-var-file: "\f15b";
+$fa-var-file-archive-o: "\f1c6";
+$fa-var-file-audio-o: "\f1c7";
+$fa-var-file-code-o: "\f1c9";
+$fa-var-file-excel-o: "\f1c3";
+$fa-var-file-image-o: "\f1c5";
+$fa-var-file-movie-o: "\f1c8";
+$fa-var-file-o: "\f016";
+$fa-var-file-pdf-o: "\f1c1";
+$fa-var-file-photo-o: "\f1c5";
+$fa-var-file-picture-o: "\f1c5";
+$fa-var-file-powerpoint-o: "\f1c4";
+$fa-var-file-sound-o: "\f1c7";
+$fa-var-file-text: "\f15c";
+$fa-var-file-text-o: "\f0f6";
+$fa-var-file-video-o: "\f1c8";
+$fa-var-file-word-o: "\f1c2";
+$fa-var-file-zip-o: "\f1c6";
+$fa-var-files-o: "\f0c5";
+$fa-var-film: "\f008";
+$fa-var-filter: "\f0b0";
+$fa-var-fire: "\f06d";
+$fa-var-fire-extinguisher: "\f134";
+$fa-var-firefox: "\f269";
+$fa-var-flag: "\f024";
+$fa-var-flag-checkered: "\f11e";
+$fa-var-flag-o: "\f11d";
+$fa-var-flash: "\f0e7";
+$fa-var-flask: "\f0c3";
+$fa-var-flickr: "\f16e";
+$fa-var-floppy-o: "\f0c7";
+$fa-var-folder: "\f07b";
+$fa-var-folder-o: "\f114";
+$fa-var-folder-open: "\f07c";
+$fa-var-folder-open-o: "\f115";
+$fa-var-font: "\f031";
+$fa-var-fonticons: "\f280";
+$fa-var-fort-awesome: "\f286";
+$fa-var-forumbee: "\f211";
+$fa-var-forward: "\f04e";
+$fa-var-foursquare: "\f180";
+$fa-var-frown-o: "\f119";
+$fa-var-futbol-o: "\f1e3";
+$fa-var-gamepad: "\f11b";
+$fa-var-gavel: "\f0e3";
+$fa-var-gbp: "\f154";
+$fa-var-ge: "\f1d1";
+$fa-var-gear: "\f013";
+$fa-var-gears: "\f085";
+$fa-var-genderless: "\f22d";
+$fa-var-get-pocket: "\f265";
+$fa-var-gg: "\f260";
+$fa-var-gg-circle: "\f261";
+$fa-var-gift: "\f06b";
+$fa-var-git: "\f1d3";
+$fa-var-git-square: "\f1d2";
+$fa-var-github: "\f09b";
+$fa-var-github-alt: "\f113";
+$fa-var-github-square: "\f092";
+$fa-var-gittip: "\f184";
+$fa-var-glass: "\f000";
+$fa-var-globe: "\f0ac";
+$fa-var-google: "\f1a0";
+$fa-var-google-plus: "\f0d5";
+$fa-var-google-plus-square: "\f0d4";
+$fa-var-google-wallet: "\f1ee";
+$fa-var-graduation-cap: "\f19d";
+$fa-var-gratipay: "\f184";
+$fa-var-group: "\f0c0";
+$fa-var-h-square: "\f0fd";
+$fa-var-hacker-news: "\f1d4";
+$fa-var-hand-grab-o: "\f255";
+$fa-var-hand-lizard-o: "\f258";
+$fa-var-hand-o-down: "\f0a7";
+$fa-var-hand-o-left: "\f0a5";
+$fa-var-hand-o-right: "\f0a4";
+$fa-var-hand-o-up: "\f0a6";
+$fa-var-hand-paper-o: "\f256";
+$fa-var-hand-peace-o: "\f25b";
+$fa-var-hand-pointer-o: "\f25a";
+$fa-var-hand-rock-o: "\f255";
+$fa-var-hand-scissors-o: "\f257";
+$fa-var-hand-spock-o: "\f259";
+$fa-var-hand-stop-o: "\f256";
+$fa-var-hashtag: "\f292";
+$fa-var-hdd-o: "\f0a0";
+$fa-var-header: "\f1dc";
+$fa-var-headphones: "\f025";
+$fa-var-heart: "\f004";
+$fa-var-heart-o: "\f08a";
+$fa-var-heartbeat: "\f21e";
+$fa-var-history: "\f1da";
+$fa-var-home: "\f015";
+$fa-var-hospital-o: "\f0f8";
+$fa-var-hotel: "\f236";
+$fa-var-hourglass: "\f254";
+$fa-var-hourglass-1: "\f251";
+$fa-var-hourglass-2: "\f252";
+$fa-var-hourglass-3: "\f253";
+$fa-var-hourglass-end: "\f253";
+$fa-var-hourglass-half: "\f252";
+$fa-var-hourglass-o: "\f250";
+$fa-var-hourglass-start: "\f251";
+$fa-var-houzz: "\f27c";
+$fa-var-html5: "\f13b";
+$fa-var-i-cursor: "\f246";
+$fa-var-ils: "\f20b";
+$fa-var-image: "\f03e";
+$fa-var-inbox: "\f01c";
+$fa-var-indent: "\f03c";
+$fa-var-industry: "\f275";
+$fa-var-info: "\f129";
+$fa-var-info-circle: "\f05a";
+$fa-var-inr: "\f156";
+$fa-var-instagram: "\f16d";
+$fa-var-institution: "\f19c";
+$fa-var-internet-explorer: "\f26b";
+$fa-var-intersex: "\f224";
+$fa-var-ioxhost: "\f208";
+$fa-var-italic: "\f033";
+$fa-var-joomla: "\f1aa";
+$fa-var-jpy: "\f157";
+$fa-var-jsfiddle: "\f1cc";
+$fa-var-key: "\f084";
+$fa-var-keyboard-o: "\f11c";
+$fa-var-krw: "\f159";
+$fa-var-language: "\f1ab";
+$fa-var-laptop: "\f109";
+$fa-var-lastfm: "\f202";
+$fa-var-lastfm-square: "\f203";
+$fa-var-leaf: "\f06c";
+$fa-var-leanpub: "\f212";
+$fa-var-legal: "\f0e3";
+$fa-var-lemon-o: "\f094";
+$fa-var-level-down: "\f149";
+$fa-var-level-up: "\f148";
+$fa-var-life-bouy: "\f1cd";
+$fa-var-life-buoy: "\f1cd";
+$fa-var-life-ring: "\f1cd";
+$fa-var-life-saver: "\f1cd";
+$fa-var-lightbulb-o: "\f0eb";
+$fa-var-line-chart: "\f201";
+$fa-var-link: "\f0c1";
+$fa-var-linkedin: "\f0e1";
+$fa-var-linkedin-square: "\f08c";
+$fa-var-linux: "\f17c";
+$fa-var-list: "\f03a";
+$fa-var-list-alt: "\f022";
+$fa-var-list-ol: "\f0cb";
+$fa-var-list-ul: "\f0ca";
+$fa-var-location-arrow: "\f124";
+$fa-var-lock: "\f023";
+$fa-var-long-arrow-down: "\f175";
+$fa-var-long-arrow-left: "\f177";
+$fa-var-long-arrow-right: "\f178";
+$fa-var-long-arrow-up: "\f176";
+$fa-var-magic: "\f0d0";
+$fa-var-magnet: "\f076";
+$fa-var-mail-forward: "\f064";
+$fa-var-mail-reply: "\f112";
+$fa-var-mail-reply-all: "\f122";
+$fa-var-male: "\f183";
+$fa-var-map: "\f279";
+$fa-var-map-marker: "\f041";
+$fa-var-map-o: "\f278";
+$fa-var-map-pin: "\f276";
+$fa-var-map-signs: "\f277";
+$fa-var-mars: "\f222";
+$fa-var-mars-double: "\f227";
+$fa-var-mars-stroke: "\f229";
+$fa-var-mars-stroke-h: "\f22b";
+$fa-var-mars-stroke-v: "\f22a";
+$fa-var-maxcdn: "\f136";
+$fa-var-meanpath: "\f20c";
+$fa-var-medium: "\f23a";
+$fa-var-medkit: "\f0fa";
+$fa-var-meh-o: "\f11a";
+$fa-var-mercury: "\f223";
+$fa-var-microphone: "\f130";
+$fa-var-microphone-slash: "\f131";
+$fa-var-minus: "\f068";
+$fa-var-minus-circle: "\f056";
+$fa-var-minus-square: "\f146";
+$fa-var-minus-square-o: "\f147";
+$fa-var-mixcloud: "\f289";
+$fa-var-mobile: "\f10b";
+$fa-var-mobile-phone: "\f10b";
+$fa-var-modx: "\f285";
+$fa-var-money: "\f0d6";
+$fa-var-moon-o: "\f186";
+$fa-var-mortar-board: "\f19d";
+$fa-var-motorcycle: "\f21c";
+$fa-var-mouse-pointer: "\f245";
+$fa-var-music: "\f001";
+$fa-var-navicon: "\f0c9";
+$fa-var-neuter: "\f22c";
+$fa-var-newspaper-o: "\f1ea";
+$fa-var-object-group: "\f247";
+$fa-var-object-ungroup: "\f248";
+$fa-var-odnoklassniki: "\f263";
+$fa-var-odnoklassniki-square: "\f264";
+$fa-var-opencart: "\f23d";
+$fa-var-openid: "\f19b";
+$fa-var-opera: "\f26a";
+$fa-var-optin-monster: "\f23c";
+$fa-var-outdent: "\f03b";
+$fa-var-pagelines: "\f18c";
+$fa-var-paint-brush: "\f1fc";
+$fa-var-paper-plane: "\f1d8";
+$fa-var-paper-plane-o: "\f1d9";
+$fa-var-paperclip: "\f0c6";
+$fa-var-paragraph: "\f1dd";
+$fa-var-paste: "\f0ea";
+$fa-var-pause: "\f04c";
+$fa-var-pause-circle: "\f28b";
+$fa-var-pause-circle-o: "\f28c";
+$fa-var-paw: "\f1b0";
+$fa-var-paypal: "\f1ed";
+$fa-var-pencil: "\f040";
+$fa-var-pencil-square: "\f14b";
+$fa-var-pencil-square-o: "\f044";
+$fa-var-percent: "\f295";
+$fa-var-phone: "\f095";
+$fa-var-phone-square: "\f098";
+$fa-var-photo: "\f03e";
+$fa-var-picture-o: "\f03e";
+$fa-var-pie-chart: "\f200";
+$fa-var-pied-piper: "\f1a7";
+$fa-var-pied-piper-alt: "\f1a8";
+$fa-var-pinterest: "\f0d2";
+$fa-var-pinterest-p: "\f231";
+$fa-var-pinterest-square: "\f0d3";
+$fa-var-plane: "\f072";
+$fa-var-play: "\f04b";
+$fa-var-play-circle: "\f144";
+$fa-var-play-circle-o: "\f01d";
+$fa-var-plug: "\f1e6";
+$fa-var-plus: "\f067";
+$fa-var-plus-circle: "\f055";
+$fa-var-plus-square: "\f0fe";
+$fa-var-plus-square-o: "\f196";
+$fa-var-power-off: "\f011";
+$fa-var-print: "\f02f";
+$fa-var-product-hunt: "\f288";
+$fa-var-puzzle-piece: "\f12e";
+$fa-var-qq: "\f1d6";
+$fa-var-qrcode: "\f029";
+$fa-var-question: "\f128";
+$fa-var-question-circle: "\f059";
+$fa-var-quote-left: "\f10d";
+$fa-var-quote-right: "\f10e";
+$fa-var-ra: "\f1d0";
+$fa-var-random: "\f074";
+$fa-var-rebel: "\f1d0";
+$fa-var-recycle: "\f1b8";
+$fa-var-reddit: "\f1a1";
+$fa-var-reddit-alien: "\f281";
+$fa-var-reddit-square: "\f1a2";
+$fa-var-refresh: "\f021";
+$fa-var-registered: "\f25d";
+$fa-var-remove: "\f00d";
+$fa-var-renren: "\f18b";
+$fa-var-reorder: "\f0c9";
+$fa-var-repeat: "\f01e";
+$fa-var-reply: "\f112";
+$fa-var-reply-all: "\f122";
+$fa-var-retweet: "\f079";
+$fa-var-rmb: "\f157";
+$fa-var-road: "\f018";
+$fa-var-rocket: "\f135";
+$fa-var-rotate-left: "\f0e2";
+$fa-var-rotate-right: "\f01e";
+$fa-var-rouble: "\f158";
+$fa-var-rss: "\f09e";
+$fa-var-rss-square: "\f143";
+$fa-var-rub: "\f158";
+$fa-var-ruble: "\f158";
+$fa-var-rupee: "\f156";
+$fa-var-safari: "\f267";
+$fa-var-save: "\f0c7";
+$fa-var-scissors: "\f0c4";
+$fa-var-scribd: "\f28a";
+$fa-var-search: "\f002";
+$fa-var-search-minus: "\f010";
+$fa-var-search-plus: "\f00e";
+$fa-var-sellsy: "\f213";
+$fa-var-send: "\f1d8";
+$fa-var-send-o: "\f1d9";
+$fa-var-server: "\f233";
+$fa-var-share: "\f064";
+$fa-var-share-alt: "\f1e0";
+$fa-var-share-alt-square: "\f1e1";
+$fa-var-share-square: "\f14d";
+$fa-var-share-square-o: "\f045";
+$fa-var-shekel: "\f20b";
+$fa-var-sheqel: "\f20b";
+$fa-var-shield: "\f132";
+$fa-var-ship: "\f21a";
+$fa-var-shirtsinbulk: "\f214";
+$fa-var-shopping-bag: "\f290";
+$fa-var-shopping-basket: "\f291";
+$fa-var-shopping-cart: "\f07a";
+$fa-var-sign-in: "\f090";
+$fa-var-sign-out: "\f08b";
+$fa-var-signal: "\f012";
+$fa-var-simplybuilt: "\f215";
+$fa-var-sitemap: "\f0e8";
+$fa-var-skyatlas: "\f216";
+$fa-var-skype: "\f17e";
+$fa-var-slack: "\f198";
+$fa-var-sliders: "\f1de";
+$fa-var-slideshare: "\f1e7";
+$fa-var-smile-o: "\f118";
+$fa-var-soccer-ball-o: "\f1e3";
+$fa-var-sort: "\f0dc";
+$fa-var-sort-alpha-asc: "\f15d";
+$fa-var-sort-alpha-desc: "\f15e";
+$fa-var-sort-amount-asc: "\f160";
+$fa-var-sort-amount-desc: "\f161";
+$fa-var-sort-asc: "\f0de";
+$fa-var-sort-desc: "\f0dd";
+$fa-var-sort-down: "\f0dd";
+$fa-var-sort-numeric-asc: "\f162";
+$fa-var-sort-numeric-desc: "\f163";
+$fa-var-sort-up: "\f0de";
+$fa-var-soundcloud: "\f1be";
+$fa-var-space-shuttle: "\f197";
+$fa-var-spinner: "\f110";
+$fa-var-spoon: "\f1b1";
+$fa-var-spotify: "\f1bc";
+$fa-var-square: "\f0c8";
+$fa-var-square-o: "\f096";
+$fa-var-stack-exchange: "\f18d";
+$fa-var-stack-overflow: "\f16c";
+$fa-var-star: "\f005";
+$fa-var-star-half: "\f089";
+$fa-var-star-half-empty: "\f123";
+$fa-var-star-half-full: "\f123";
+$fa-var-star-half-o: "\f123";
+$fa-var-star-o: "\f006";
+$fa-var-steam: "\f1b6";
+$fa-var-steam-square: "\f1b7";
+$fa-var-step-backward: "\f048";
+$fa-var-step-forward: "\f051";
+$fa-var-stethoscope: "\f0f1";
+$fa-var-sticky-note: "\f249";
+$fa-var-sticky-note-o: "\f24a";
+$fa-var-stop: "\f04d";
+$fa-var-stop-circle: "\f28d";
+$fa-var-stop-circle-o: "\f28e";
+$fa-var-street-view: "\f21d";
+$fa-var-strikethrough: "\f0cc";
+$fa-var-stumbleupon: "\f1a4";
+$fa-var-stumbleupon-circle: "\f1a3";
+$fa-var-subscript: "\f12c";
+$fa-var-subway: "\f239";
+$fa-var-suitcase: "\f0f2";
+$fa-var-sun-o: "\f185";
+$fa-var-superscript: "\f12b";
+$fa-var-support: "\f1cd";
+$fa-var-table: "\f0ce";
+$fa-var-tablet: "\f10a";
+$fa-var-tachometer: "\f0e4";
+$fa-var-tag: "\f02b";
+$fa-var-tags: "\f02c";
+$fa-var-tasks: "\f0ae";
+$fa-var-taxi: "\f1ba";
+$fa-var-television: "\f26c";
+$fa-var-tencent-weibo: "\f1d5";
+$fa-var-terminal: "\f120";
+$fa-var-text-height: "\f034";
+$fa-var-text-width: "\f035";
+$fa-var-th: "\f00a";
+$fa-var-th-large: "\f009";
+$fa-var-th-list: "\f00b";
+$fa-var-thumb-tack: "\f08d";
+$fa-var-thumbs-down: "\f165";
+$fa-var-thumbs-o-down: "\f088";
+$fa-var-thumbs-o-up: "\f087";
+$fa-var-thumbs-up: "\f164";
+$fa-var-ticket: "\f145";
+$fa-var-times: "\f00d";
+$fa-var-times-circle: "\f057";
+$fa-var-times-circle-o: "\f05c";
+$fa-var-tint: "\f043";
+$fa-var-toggle-down: "\f150";
+$fa-var-toggle-left: "\f191";
+$fa-var-toggle-off: "\f204";
+$fa-var-toggle-on: "\f205";
+$fa-var-toggle-right: "\f152";
+$fa-var-toggle-up: "\f151";
+$fa-var-trademark: "\f25c";
+$fa-var-train: "\f238";
+$fa-var-transgender: "\f224";
+$fa-var-transgender-alt: "\f225";
+$fa-var-trash: "\f1f8";
+$fa-var-trash-o: "\f014";
+$fa-var-tree: "\f1bb";
+$fa-var-trello: "\f181";
+$fa-var-tripadvisor: "\f262";
+$fa-var-trophy: "\f091";
+$fa-var-truck: "\f0d1";
+$fa-var-try: "\f195";
+$fa-var-tty: "\f1e4";
+$fa-var-tumblr: "\f173";
+$fa-var-tumblr-square: "\f174";
+$fa-var-turkish-lira: "\f195";
+$fa-var-tv: "\f26c";
+$fa-var-twitch: "\f1e8";
+$fa-var-twitter: "\f099";
+$fa-var-twitter-square: "\f081";
+$fa-var-umbrella: "\f0e9";
+$fa-var-underline: "\f0cd";
+$fa-var-undo: "\f0e2";
+$fa-var-university: "\f19c";
+$fa-var-unlink: "\f127";
+$fa-var-unlock: "\f09c";
+$fa-var-unlock-alt: "\f13e";
+$fa-var-unsorted: "\f0dc";
+$fa-var-upload: "\f093";
+$fa-var-usb: "\f287";
+$fa-var-usd: "\f155";
+$fa-var-user: "\f007";
+$fa-var-user-md: "\f0f0";
+$fa-var-user-plus: "\f234";
+$fa-var-user-secret: "\f21b";
+$fa-var-user-times: "\f235";
+$fa-var-users: "\f0c0";
+$fa-var-venus: "\f221";
+$fa-var-venus-double: "\f226";
+$fa-var-venus-mars: "\f228";
+$fa-var-viacoin: "\f237";
+$fa-var-video-camera: "\f03d";
+$fa-var-vimeo: "\f27d";
+$fa-var-vimeo-square: "\f194";
+$fa-var-vine: "\f1ca";
+$fa-var-vk: "\f189";
+$fa-var-volume-down: "\f027";
+$fa-var-volume-off: "\f026";
+$fa-var-volume-up: "\f028";
+$fa-var-warning: "\f071";
+$fa-var-wechat: "\f1d7";
+$fa-var-weibo: "\f18a";
+$fa-var-weixin: "\f1d7";
+$fa-var-whatsapp: "\f232";
+$fa-var-wheelchair: "\f193";
+$fa-var-wifi: "\f1eb";
+$fa-var-wikipedia-w: "\f266";
+$fa-var-windows: "\f17a";
+$fa-var-won: "\f159";
+$fa-var-wordpress: "\f19a";
+$fa-var-wrench: "\f0ad";
+$fa-var-xing: "\f168";
+$fa-var-xing-square: "\f169";
+$fa-var-y-combinator: "\f23b";
+$fa-var-y-combinator-square: "\f1d4";
+$fa-var-yahoo: "\f19e";
+$fa-var-yc: "\f23b";
+$fa-var-yc-square: "\f1d4";
+$fa-var-yelp: "\f1e9";
+$fa-var-yen: "\f157";
+$fa-var-youtube: "\f167";
+$fa-var-youtube-play: "\f16a";
+$fa-var-youtube-square: "\f166";
+
diff --git a/Resources/public/sass/contrib/fontawesome/font-awesome.scss b/Resources/public/sass/contrib/fontawesome/font-awesome.scss
new file mode 100644
index 000000000..f4668a53c
--- /dev/null
+++ b/Resources/public/sass/contrib/fontawesome/font-awesome.scss
@@ -0,0 +1,17 @@
+/*!
+ * Font Awesome 4.5.0 by @davegandy - http://fontawesome.io - @fontawesome
+ * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
+ */
+
+@import "variables";
+@import "mixins";
+@import "path";
+@import "core";
+@import "larger";
+@import "fixed-width";
+@import "list";
+@import "bordered-pulled";
+@import "animated";
+@import "rotated-flipped";
+@import "stacked";
+@import "icons";
diff --git a/Resources/public/sass/contrib/gridle/_grid-settings.scss b/Resources/public/sass/contrib/gridle/_grid-settings.scss
new file mode 100644
index 000000000..794343496
--- /dev/null
+++ b/Resources/public/sass/contrib/gridle/_grid-settings.scss
@@ -0,0 +1,23 @@
+// Import gridle :
+@import 'gridle/gridle';
+
+// setup the grid (required) :
+@include gridle_setup((
+ context : 12,
+ gutter-width : 20px,
+ debug : true
+));
+
+// register special columns :
+@include gridle_register_column("1on5", 1, 5);
+
+// clear each classes :
+@include gridle_register_clear_each(2, left);
+@include gridle_register_clear_each(12, both);
+
+// register states :
+@include gridle_register_default_states();
+@include gridle_register_state(ipad-landscape, (
+ query : "only screen and (min-device-width : 768px) and (max-device-width : 1024px) and (orientation : landscape)",
+ gutter-width : 0
+));
\ No newline at end of file
diff --git a/Resources/public/sass/contrib/gridle/grid-bootstrap.scss b/Resources/public/sass/contrib/gridle/grid-bootstrap.scss
new file mode 100644
index 000000000..101ee15cd
--- /dev/null
+++ b/Resources/public/sass/contrib/gridle/grid-bootstrap.scss
@@ -0,0 +1,48 @@
+// Import gridle :
+@import 'gridle/gridle';
+
+
+// basic configuration :
+@include gridle_setup( (
+ context : 12,
+ gutter-width : 30px,
+ html-states-classes : true
+) );
+
+// register states :
+@include gridle_register_default_mobile_first_states();
+
+/*
+ * Optional :
+ * Change generation class names pattern (for example to match bootstrap naming conventions or generate with your own names) :
+ * Check documentation (http://gridle.org/documentation#name-pattern) for full list
+ *
+ * %- = separator sign (configurable by $gridle-class-separator) (no need to add separators if you doesn't want them)
+ * %state = the state name (mobile, ipad, etc...)
+ * %count = the column count (1, 2, 3, 4, etc...)
+ */
+$gridle-grid-name-pattern : ('col','%-','%state','%-','%count');
+$gridle-parent-name-pattern : ('row','%-','%state');
+$gridle-prefix-name-pattern : ('col','%-','%state','%-','offset','%-','%count');
+$gridle-push-name-pattern : ('col','%-','%state','%-','push','%-','%count');
+$gridle-pull-name-pattern : ('col','%-','%state','%-','pull','%-','%count');
+$gridle-show-name-pattern : ('visible','%-','%state');
+$gridle-hide-name-pattern : ('hidden','%-','%state');
+
+
+/**
+ * Mobile first approach :
+ */
+[class*="col-"] {
+ width:100%; // 100% by default
+}
+
+
+// Generate classes :
+@include gridle_generate_classes();
+
+// Max size :
+.container {
+ margin:0 auto;
+ max-width:1200px;
+}
\ No newline at end of file
diff --git a/Resources/public/sass/contrib/gridle/grid.scss b/Resources/public/sass/contrib/gridle/grid.scss
new file mode 100644
index 000000000..d638093c6
--- /dev/null
+++ b/Resources/public/sass/contrib/gridle/grid.scss
@@ -0,0 +1,24 @@
+// Import grid settings :
+@import 'grid-settings';
+
+// Generate classes :
+@include gridle_generate_classes();
+
+// you can generate classes separately if you need :
+// @include gridle_generate_classes(default); // default is the base state always registered
+// @include gridle_generate_classes(mobile, (grid, push, pull)) // generate only the grid, push and pull classes for mobile
+// etc...
+
+// generate a center custom class for all the states :
+@include gridle_generate_custom_class( ('center','%-','%state') ) {
+ text-align:center;
+}
+// this will produces classes : center, center-mobile, center-tablet, center-ipad-landscape
+// for separators, you can use the %- (replaced by the $gridle-class-separator option), or -, --, _, __
+
+// Max size :
+.container {
+ margin:0 auto;
+ max-width:960px;
+ @include gridle_grid_background();
+}
\ No newline at end of file
diff --git a/Resources/public/sass/contrib/gridle/gridle/_common-mixins.scss b/Resources/public/sass/contrib/gridle/gridle/_common-mixins.scss
new file mode 100644
index 000000000..cd8d5ada0
--- /dev/null
+++ b/Resources/public/sass/contrib/gridle/gridle/_common-mixins.scss
@@ -0,0 +1,124 @@
+// |------------------------------------------------------
+// |------------------------------------------------------
+// | Common mixins
+// |------------------------------------------------------
+// |------------------------------------------------------
+
+@mixin _gridle_container_common(
+ $state : default
+) {
+ @extend %gridle-simple-clearfix;
+ @extend %gridle-container-common;
+ // debug part
+ $debug : _gridle_get_var_value(debug, $state);
+ @if ($debug == true) {
+ #{$gridle-debug-selector} {
+ @extend %gridle-container-debug-common;
+ }
+ }
+}
+$_gridle-already-generated : ();
+@mixin _gridle_grid_common() {
+ @extend %gridle-grid-common;
+
+ // default values
+ $default-gutter-width : _gridle_get_var_value(gutter-width, default);
+ $default-direction : _gridle_get_var_value(direction, default);
+
+ // loop on each states :
+ @each $stateName, $state in $_gridle-states
+ {
+ // selector key to be used in map
+ $key : "#{$stateName} #{&}";
+
+ // check if already generated classes
+ $already-generated : map-has-key($_gridle-already-generated, $key);
+
+ // vars
+ $direction : _gridle_get_var_value(direction, $state);
+ $classes : _gridle_get_var_value(classes, $state);
+ $gutter-width : _gridle_get_var_value(gutter-width, $state);
+ $debug : _gridle_get_var_value(debug, $state);
+
+ @if $already-generated != true and $classes and ( ($default-direction != $direction or $default-gutter-width != $gutter-width) or $stateName == default)
+ {
+ // set that we have already generated css for this selector
+ $_gridle-already-generated : map-set($_gridle-already-generated, $key, true) !global;
+
+ // generate the css for this element
+ @include gridle_state($state) {
+ @if $direction != $default-direction or $stateName == default {
+ // content : "#{$key}";
+ @if $direction == rtl {
+ float:right;
+ direction:rtl;
+ } @else {
+ float:left;
+ direction:ltr;
+ }
+ }
+ @if $gutter-width != $default-gutter-width or $stateName == default {
+ padding-left:$gutter-width/2;
+ padding-right:$gutter-width/2;
+ }
+ }
+
+ @if $debug == true {
+ #{$gridle-debug-selector} {
+ @extend %gridle-grid-debug-common;
+ }
+ }
+ }
+ }
+}
+@mixin _gridle_parent_common() {
+ @extend %gridle-clearfix;
+ @extend %gridle-parent-common;
+}
+@mixin _gridle_push_common(
+ $state : default
+) {
+ $debug : _gridle_get_var_value(debug, $state);
+
+ // extend common :
+ @extend %gridle-push-pull-common;
+ @if $debug == true {
+ #{$gridle-debug-selector} {
+ @extend %gridle-push-pull-debug-background-common;
+ background-color:#f4efdf !important;
+ }
+ }
+}
+@mixin _gridle_pull_common(
+ $state : default
+) {
+ $debug : _gridle_get_var_value(debug, $state);
+
+ @extend %gridle-push-pull-common;
+ @if $debug == true {
+ #{$gridle-debug-selector} {
+ @extend %gridle-push-pull-debug-background-common;
+ background-color:#cfe4d5 !important;
+ }
+ }
+}
+@mixin _gridle_prefix_common(
+ $state : default
+) {
+ $debug : _gridle_get_var_value(debug, $state);
+ @if $debug == true {
+ #{$gridle-debug-selector} {
+ @extend %gridle-prefix-debug-common;
+ }
+ }
+}
+@mixin _gridle_suffix_common(
+ $state : default
+) {
+ $debug : _gridle_get_var_value(debug, $state);
+ @if $debug == true {
+ #{$gridle-debug-selector} {
+ @extend %gridle-suffix-debug-common;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Resources/public/sass/contrib/gridle/gridle/_default-states.scss b/Resources/public/sass/contrib/gridle/gridle/_default-states.scss
new file mode 100644
index 000000000..aeb007cdf
--- /dev/null
+++ b/Resources/public/sass/contrib/gridle/gridle/_default-states.scss
@@ -0,0 +1,35 @@
+// |------------------------------------------------------
+// |------------------------------------------------------
+// | Default states
+// |------------------------------------------------------
+// |------------------------------------------------------
+
+// retina
+@include gridle_register_state("retina", (
+ query : "(-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi), (min-resolution: 2dppx)",
+ classes : false
+) );
+
+// tv
+@include gridle_register_state("tv", (
+ query : "only tv",
+ classes : false
+) );
+
+// print
+@include gridle_register_state("print", (
+ query : "only print",
+ classes : false
+) );
+
+// portrait
+@include gridle_register_state("portrait", (
+ query : "only screen and (orientation: portrait)",
+ classes : false
+) );
+
+// landscape
+@include gridle_register_state("landscape", (
+ query : "only screen and (orientation: landscape)",
+ classes : false
+) );
\ No newline at end of file
diff --git a/Resources/public/sass/contrib/gridle/gridle/_functions.scss b/Resources/public/sass/contrib/gridle/gridle/_functions.scss
new file mode 100644
index 000000000..9e6fc0e7e
--- /dev/null
+++ b/Resources/public/sass/contrib/gridle/gridle/_functions.scss
@@ -0,0 +1,387 @@
+// |------------------------------------------------------
+// |------------------------------------------------------
+// | Functions
+// |------------------------------------------------------
+// |------------------------------------------------------
+
+/**
+ * Str replace
+ *
+ * @param {string} $string String that you want to replace
+ * @param {string} $substr String that is to be replaced by `$newsubstr`
+ * @param {string} $newsubstr String that replaces `$substr`
+ * @param {number*} $all Flag for replaceing all (1+) or not (0)
+ * @return {string}
+ */
+@function str-replace($string, $substr, $newsubstr, $all: 0) {
+ $position-found: str-index($string, $substr);
+ $processed: ();
+
+ @while ($position-found and $position-found > 0) {
+ $length-substr: str-length($substr);
+ $processed: append($processed, str-slice($string, 0, $position-found - 1));
+ $processed: append($processed, $newsubstr);
+ $string: str-slice($string, $position-found + $length-substr);
+
+ $position-found: 0;
+
+ @if ($all > 0) {
+ $position-found: str-index($string, $substr);
+ }
+ }
+
+ $processed: append($processed, $string);
+ $string: "";
+
+ @each $s in $processed {
+ $string: #{$string}#{$s};
+ }
+
+ @return $string;
+}
+
+/**
+ * Map set
+ *
+ * @param Map $map The map to use
+ * @param String $key The key to update
+ * @param Mixed $value The new value
+ * @return Map The new map
+ */
+@function map-set($map, $key, $value) {
+ $new: ($key: $value);
+ @return map-merge($map, $new);
+}
+
+
+/**
+ * Get the column width in percent for the global or a specific context
+ *
+ * @param int $columns The number of columns to calculate
+ * @param int $context : $gridle-columns-count The context to use
+ * @return percentage The width in percent
+ */
+@function gridle_get_column_width(
+ $columns : 1,
+ $stateMap-or-stateName : null
+) {
+ @return percentage(1 / $context * $columns);
+}
+
+
+/**
+ * Get a state map
+ *
+ * @param string $name The name of the state to get
+ * @return map A state map object
+ */
+@function _gridle_get_state(
+ $stateMap-or-stateName
+) {
+ // check if has a state named like this
+ @if (type-of($stateMap-or-stateName) == string
+ and map-has-key($_gridle_states, unquote("#{$stateMap-or-stateName}")))
+ {
+ @return map-get($_gridle_states, unquote("#{$stateMap-or-stateName}"));
+ }
+
+ // a map is passed, so it's a state himself
+ @if $stateMap-or-stateName
+ and type-of($stateMap-or-stateName) == map
+ {
+ @return map-merge($_gridle-settings, $stateMap-or-stateName);
+ }
+
+ // return the default one if exist
+ @if map-has-key($_gridle_states, default)
+ {
+ @return map-get($_gridle_states, default);
+ }
+
+ // nothing finded, return the default state
+ @return $_gridle-settings;
+}
+
+
+/**
+ * Check if a state exist :
+ *
+ * @param string $name The name of the state to check
+ * @return Boolean true is exist
+ */
+@function _gridle_has_state(
+ $stateName
+) {
+ @if map-has-key($_gridle_states, unquote("#{$stateName}")) {
+ @return true;
+ } @else {
+ @return false;
+ }
+}
+
+
+/**
+ * Get the media queries variables :
+ *
+ * @param int $index The media query indes
+ * @param String $var The media query variable name
+ * @return String|int The variable value
+ */
+@function _gridle_get_state_var(
+ $stateName,
+ $var : "name"
+) {
+
+ // get the state :
+ $state : _gridle_get_state($stateName);
+
+ // check ig state and if has the variable :
+ @if $state
+ and map-has-key($state,unquote("#{$var}"))
+ {
+ @return map-get($state,unquote("#{$var}"));
+ }
+
+ // nothing getted :
+ @return null;
+}
+
+
+/**
+ * Get a variable
+ *
+ * @param String $varName The variable name
+ * @param String $stateMap-or-stateName The state name or a map state value
+ * @return Mixed The finded value
+ */
+@function _gridle_get_var_value(
+ $varName,
+ $stateMap-or-stateName : null
+) {
+ // if is a state :
+ $state : null;
+
+ // get the state (if no state find, return the default one) :
+ $state : _gridle_get_state($stateMap-or-stateName);
+
+ // extend default state with given state :
+ $props : map-merge($_gridle-settings, $state);
+
+ @if map-has-key($props, unquote("#{$varName}")) {
+ @return map-get($state, unquote("#{$varName}"));
+ }
+
+ // nothing finded :
+ @return null;
+}
+
+
+/**
+ * Set a variable in a state
+ * @param Mixed $stateName-or-stateIndex The state name of state index
+ * @param String $var Variable name to assign
+ * @param Mixed $newValue The new value to assign
+ * @return List The states list (full)
+ */
+@function _gridle_set_state_var(
+ $stateName,
+ $var,
+ $newValue
+) {
+ // get the state :
+ $state : _gridle_get_state($stateName);
+
+ // check ig state and if has the variable :
+ @if $state
+ and map-has-key($state,unquote("#{$var}"))
+ {
+ // set new value in state :
+ $state : map-set($state, unquote("#{$var}"), $newValue);
+
+ // set states :
+ $_gridle_states : map-set($_gridle_states, unquote("#{$stateName}"), $state);
+
+ // return new state :
+ @return $state;
+ }
+
+ // nothing getted :
+ @return null;
+}
+
+
+/**
+ * Generate a column
+ *
+ * @param String $name The column name (often count)
+ * @param int $columns The column count that the column will take
+ * @param int $context The context on witch the with will be calculed
+ * @param Boolean $generateClasses Set if the column has to be generated in css
+ */
+@function _gridle_create_column(
+ $name,
+ $columns,
+ $context,
+ $name-multiplicator : 1 // used to extend the state on custom registered columns
+) {
+ @return (
+ name : $name,
+ columns : $columns,
+ context : $context,
+ name-multiplicator : $name-multiplicator
+ );
+}
+
+
+/**
+ * Generate classname
+ *
+ * @param List $parrern The pattern to use to generate classname
+ * @param String $state The state
+ * @param int $count The column count
+ */
+@function _gridle_classname(
+ $pattern,
+ $state : null,
+ $count : null
+) {
+
+ // init selector :
+ $sel : ".";
+
+ // delete default :
+ @if unquote("#{$state}") == default {
+ $state : null;
+ }
+
+ // add class prefix :
+ @if $gridle-class-prefix and $gridle-class-prefix != '' {
+ $sel : "#{$sel}#{$gridle-class-prefix}";
+ @if $gridle-class-separator {
+ $sel : "#{$sel}#{$gridle-class-separator}";
+ }
+ }
+
+ // construct class name :
+ $i : 1;
+ @each $var in $pattern {
+
+ // replace tokens :
+ @if $var == '%state' and $state {
+ $sel : "#{$sel}#{$state}";
+ }
+ @if $var == '%count' and $count {
+ $sel : "#{$sel}#{$count}";
+ }
+ @if $var != '%state' and $var != '%count' and $var != '%-' and $var != '-' and $var != '--' and $var != '_' and $var != '__' and $var != '%prefix' {
+ $sel : "#{$sel}#{$var}";
+ }
+
+ // handle separators :
+ @if ($var == '%-' or $var == '-' or $var == '--' or $var == '_' or $var == '__') and $i < length($pattern) {
+ $index : $i + 1;
+ $value : nth($pattern, $index);
+ @if $value != '%state' and $value != '%count' and $value != '%-' and $value != '-' and $value != '--' and $value != '_' and $value != '__' and $value != '%prefix' {
+ @if $var == '%-' {
+ $sel : "#{$sel}#{$gridle-class-separator}";
+ } @else {
+ $sel : "#{$sel}#{$var}";
+ }
+ }
+ @if $value == '%state' and $state {
+ @if $var == '%-' {
+ $sel : "#{$sel}#{$gridle-class-separator}";
+ } @else {
+ $sel : "#{$sel}#{$var}";
+ }
+ }
+ @if $value == '%count' and $count {
+ @if $var == '%-' {
+ $sel : "#{$sel}#{$gridle-class-separator}";
+ } @else {
+ $sel : "#{$sel}#{$var}";
+ }
+ }
+ }
+
+ // update i :
+ $i : $i + 1;
+ }
+
+ // return generated class :
+ @return $sel;
+}
+
+
+/**
+ * Get the media query for a particular state, or with, etc...
+ *
+ * @param Mixed $state-or-min-width The state name of the min with
+ * @param Mixed $max-width The max width if first param is a min width
+ * @return String The media query string without the @media
+ */
+@function _gridle_get_media_query(
+ $state-or-settings
+) {
+ // check if is a string :
+ $state : null;
+ @if type-of($state-or-settings) == string
+ {
+ $state : _gridle_get_state($state-or-settings);
+ }
+ @else if $state-or-settings == null
+ {
+ $state : $_gridle-settings;
+ }
+ @else
+ {
+ $state : map-merge($_gridle-settings, $state-or-settings);
+ }
+
+ // if it's some settings or a state :
+ @if $state {
+
+ // get vars :
+ $name : map-get($state, name);
+ $min-width : map-get($state, min-width);
+ $max-width : map-get($state, max-width);
+ $query : map-get($state, query);
+
+ // direct query :
+ @if $query
+ {
+ @return $query;
+ }
+ @else if $min-width and $max-width
+ {
+ @return "screen and (min-width: #{$min-width}) and (max-width: #{$max-width})";
+ }
+ @else if $min-width
+ {
+ @return "screen and (min-width: #{$min-width})";
+ }
+ @else if $max-width
+ {
+ @return "screen and (max-width: #{$max-width})";
+ }
+ @else
+ {
+ @return null;
+ }
+
+ }
+ @else
+ {
+ @return null;
+ }
+}
+
+
+/**
+ * Get states count
+ *
+ * @return int The number of states defined
+ */
+@function _gridle_get_states_count() {
+ @return length($_gridle_states) / length($_gridle_states_vars_pattern);
+}
\ No newline at end of file
diff --git a/Resources/public/sass/contrib/gridle/gridle/_generate-mixins.scss b/Resources/public/sass/contrib/gridle/gridle/_generate-mixins.scss
new file mode 100644
index 000000000..d09a0e37c
--- /dev/null
+++ b/Resources/public/sass/contrib/gridle/gridle/_generate-mixins.scss
@@ -0,0 +1,624 @@
+// |------------------------------------------------------
+// |------------------------------------------------------
+// | Generate mixins
+// |------------------------------------------------------
+// |------------------------------------------------------
+
+
+/**
+ * Generate a custom class for all the states
+ *
+ * @param list $pattern The name pattern of the class
+ * @param list $statesNames The states names to generate
+ */
+@mixin gridle_generate_custom_class(
+ $pattern,
+ $statesNames : null
+) {
+ // manage states to generate :
+ $states : ();
+ @if $statesNames == null {
+ // loop on each states to generate names list :
+ @each $stateName, $state in $_gridle_states {
+ $states : append($states, $stateName);
+ }
+ } @else {
+ $states : $statesNames;
+ }
+
+ // loop on each states :
+ @each $stateName in $states
+ {
+ // manage statename :
+ @if type-of($stateName) != string {
+ $stateName : map-get($stateName, name);
+ }
+
+ // classes :
+ $classes : _gridle_get_var_value(classes, $stateName);
+
+ // genrate the classname :
+ @if $classes
+ {
+ @include gridle_state($stateName, false) {
+ #{_gridle_classname($pattern, $stateName)} {
+ @content;
+ }
+ }
+ }
+ }
+}
+
+// Generate all helpers classes
+// All the classes generated are not wrapper in gridle_state
+// in this mixin... Just the names are generated accordingly to the
+// requested state
+@mixin _gridle_generate_helper_classes (
+ $state : null,
+ $what : null
+) {
+ // helpers :
+ @if $what == null or index($what, float) or index($what, helpers) {
+ #{_gridle_classname($gridle-float-left-name-pattern, $state)} {
+ @include gridle_float(left);
+ }
+ #{_gridle_classname($gridle-float-right-name-pattern, $state)} {
+ @include gridle_float(right);
+ }
+ }
+
+ @if $what == null or index($what, clear) or index($what, helpers) {
+ #{_gridle_classname($gridle-clear-name-pattern, $state)} {
+ @include gridle_clear(both);
+ }
+ #{_gridle_classname($gridle-clear-left-name-pattern, $state)} {
+ @include gridle_clear(left);
+ }
+ #{_gridle_classname($gridle-clear-right-name-pattern, $state)} {
+ @include gridle_clear(right);
+ }
+ }
+
+ @if $what == null or index($what, no_gutter) or index($what, no_margin) or index($what, helpers) {
+ #{_gridle_classname($gridle-no-gutter-name-pattern, $state)},
+ #{_gridle_classname($gridle-no-margin-name-pattern, $state)} {
+ @include gridle_no_margin();
+ }
+ #{_gridle_classname($gridle-no-gutter-left-name-pattern, $state)},
+ #{_gridle_classname($gridle-no-margin-left-name-pattern, $state)} {
+ @include gridle_no_margin(left);
+ }
+ #{_gridle_classname($gridle-no-gutter-right-name-pattern, $state)},
+ #{_gridle_classname($gridle-no-margin-right-name-pattern, $state)} {
+ @include gridle_no_margin(right);
+ }
+ #{_gridle_classname($gridle-no-gutter-top-name-pattern, $state)},
+ #{_gridle_classname($gridle-no-margin-top-name-pattern, $state)} {
+ @include gridle_no_margin(top);
+ }
+ #{_gridle_classname($gridle-no-gutter-bottom-name-pattern, $state)},
+ #{_gridle_classname($gridle-no-margin-bottom-name-pattern, $state)} {
+ @include gridle_no_margin(bottom);
+ }
+ }
+
+ @if $what == null or index($what, gutter) or index($what, margin) or index($what, helpers) {
+ #{_gridle_classname($gridle-gutter-name-pattern, $state)},
+ #{_gridle_classname($gridle-margin-name-pattern, $state)} {
+ @include gridle_margin(left right);
+ }
+ #{_gridle_classname($gridle-gutter-left-name-pattern, $state)},
+ #{_gridle_classname($gridle-margin-left-name-pattern, $state)} {
+ @include gridle_margin(left);
+ }
+ #{_gridle_classname($gridle-gutter-right-name-pattern, $state)},
+ #{_gridle_classname($gridle-margin-right-name-pattern, $state)} {
+ @include gridle_margin(right);
+ }
+ #{_gridle_classname($gridle-gutter-top-name-pattern, $state)},
+ #{_gridle_classname($gridle-margin-top-name-pattern, $state)} {
+ @include gridle_margin(top);
+ }
+ #{_gridle_classname($gridle-gutter-bottom-name-pattern, $state)},
+ #{_gridle_classname($gridle-margin-bottom-name-pattern, $state)} {
+ @include gridle_margin(bottom);
+ }
+ }
+
+ @if $what == null or index($what, auto_height) or index($what, helpers) {
+ #{_gridle_classname($gridle-auto-height-name-pattern, $state)} {
+ height:inherit;
+ }
+ }
+
+ @if $what == null or index($what, centered) or index($what, helpers) {
+ #{_gridle_classname($gridle-centered-name-pattern, $state)} {
+ @include gridle_centered(null);
+ }
+ }
+
+ @if $what == null or index($what, parent) or index($what, helpers) {
+ #{_gridle_classname($gridle-parent-name-pattern, $state)} {
+ @include _gridle_parent();
+ }
+ }
+
+ @if $what == null or index($what, vertical_align) or index($what, helpers) {
+ #{_gridle_classname($gridle-vertical-align-middle-name-pattern, $state)} {
+ @include _gridle_vertical_align();
+ }
+ #{_gridle_classname($gridle-vertical-align-top-name-pattern, $state)} {
+ @include _gridle_vertical_align(top);
+ }
+ #{_gridle_classname($gridle-vertical-align-bottom-name-pattern, $state)} {
+ @include _gridle_vertical_align(bottom);
+ }
+ }
+
+ /**
+ * Visible, hide, etc...
+ */
+ @if $what == null or index($what, hide) or index($what, helpers) {
+ #{_gridle_classname($gridle-hide-name-pattern, $state)} {
+ @include gridle_hide(null);
+ }
+ }
+
+ @if $what == null or index($what, not_visible) or index($what, helpers) {
+ #{_gridle_classname($gridle-not-visible-name-pattern, $state)} {
+ @include gridle_not_visible(null);
+ }
+ }
+
+ @if $what == null or index($what, show) or index($what, helpers) {
+ #{_gridle_classname($gridle-show-name-pattern, $state)} {
+ @include gridle_show(null);
+ }
+ #{_gridle_classname($gridle-show-inline-name-pattern, $state)} {
+ @include gridle_show_inline(null);
+ }
+ }
+
+ @if $what == null or index($what, visible) or index($what, helpers) {
+ #{_gridle_classname($gridle-visible-name-pattern, $state)} {
+ @include gridle_visible(null);
+ }
+ }
+
+ /**
+ * Clear each class :
+ */
+ @if $what == null or index($what, clear_each) or index($what, helpers) {
+ @each $clearName, $clearMap in $_gridle_clear_classes {
+ // get count :
+ $clearCount : map-get($clearMap, clearEach);
+ // what to clear :
+ $clearWhat : map-get($clearMap, clearWhat);
+ // generate the class :
+ #{_gridle_classname($gridle-clear-each-pattern, $state, $clearCount)} {
+ @include _gridle_clear_each($clearCount, $clearWhat);
+ }
+ }
+ }
+
+ // debug colors :
+ $debug : _gridle_get_var_value(debug, $state);
+ @if $debug and ( $what == null or index($what, debug_colors) or index($what, helpers) ) {
+ // debug color classes :
+ #{_gridle_classname($gridle-debug-color-name-pattern, $state, 1)} {
+ #{$gridle-debug-selector} {
+ background-color : #edeeb2;
+ }
+ }
+ #{_gridle_classname($gridle-debug-color-name-pattern, $state, 2)} {
+ #{$gridle-debug-selector} {
+ background-color : #fae4a7;
+ }
+ }
+ #{_gridle_classname($gridle-debug-color-name-pattern, $state, 3)} {
+ #{$gridle-debug-selector} {
+ background-color : #f5eacc;
+ }
+ }
+ #{_gridle_classname($gridle-debug-color-name-pattern, $state, 4)} {
+ #{$gridle-debug-selector} {
+ background-color : #eebdb2;
+ }
+ }
+ #{_gridle_classname($gridle-debug-color-name-pattern, $state, 5)} {
+ #{$gridle-debug-selector} {
+ background-color : #d4b2ee;
+ }
+ }
+ #{_gridle_classname($gridle-debug-color-name-pattern, $state, 6)} {
+ #{$gridle-debug-selector} {
+ background-color : #b2d8ee;
+ }
+ }
+ }
+}
+
+
+// generate settings json :
+@mixin gridle_generate_json_settings() {
+
+ // settings content :
+ $gridle-settings-states : "{";
+
+ // generate all classes for differents media queries :
+ $statesCount : length($_gridle_states);
+ $i : 0;
+ @each $stateName, $state in $_gridle_states {
+
+ $name : $stateName;
+
+ $gridle-settings-states : "#{$gridle-settings-states} \"#{$name}\":{";
+
+ @each $varName, $var in $state {
+
+ $value : null;
+ @if $varName == "query" {
+ $value : _gridle_get_media_query($stateName);
+ } @else {
+ $value : map-get($state,$varName);
+ }
+
+ @if $value == null {
+ $gridle-settings-states : "#{$gridle-settings-states} \"#{$varName}\" : null,";
+ } @elseif type-of($value) == bool {
+ $gridle-settings-states : "#{$gridle-settings-states} \"#{$varName}\" : #{$value},";
+ } @else {
+ $gridle-settings-states : "#{$gridle-settings-states} \"#{$varName}\" : \"#{$value}\",";
+ }
+ }
+
+ $gridle-settings-states : "#{$gridle-settings-states} \"_gridle\" : true";
+
+ @if $i >= $statesCount - 1 {
+ $gridle-settings-states : "#{$gridle-settings-states} }";
+ } @else {
+ $gridle-settings-states : "#{$gridle-settings-states} },";
+ }
+
+ // update i :
+ $i : $i + 1;
+
+ }
+
+ // generate settings json :
+ $gridle-settings-states : "#{$gridle-settings-states}}";
+ $gridle-settings : "{";
+ $gridle-settings : "#{$gridle-settings} \"version\" : \"#{$_gridle-version}\"";
+
+ // states :
+ $gridle-settings : "#{$gridle-settings}, \"states\" : #{$gridle-settings-states}";
+
+ // debug devices :
+ $debug_devices : $_gridle_states_debug_devices;
+ @if length($_gridle_states_debug_devices) <= 0 {
+ $debug_devices : null;
+ }
+ // $gridle-settings : "#{$gridle-settings}, \"debugDevices\" : { #{$debug_devices} }";
+
+ // settings :
+ // $gridle-settings : "#{$gridle-settings}, \"classPrefix\" : \"#{$gridle-class-prefix}\"";
+ $gridle-settings : "#{$gridle-settings} }";
+ #gridle-settings {
+ content : $gridle-settings;
+ }
+}
+
+
+// gridle mixin :
+// Generate all the classes needed for a grid
+@mixin gridle_generate_classes(
+ $stateName : null,
+ $what : null,
+ $scope : null
+) {
+ // if the what parameter is not null, mean that we need to generate only certain classes in a certain order :
+ @if $what
+ {
+ // loop on each what item to generate the corresponding classes :
+ @each $w in $what
+ {
+ // check if a scope exist :
+ @if $scope {
+ // wrapp grid into scope :
+ .#{$scope} {
+ @include _gridle_generate_classes($stateName, ( $w ), true);
+ }
+ } @else {
+ // generate classes :
+ @include _gridle_generate_classes($stateName, ( $w ), false);
+ }
+ }
+ }
+ @else
+ {
+ // don't have any "what" parameter so generate all the classes
+ // check if a scope exist :
+ @if $scope {
+ // wrapp grid into scope :
+ .#{$scope} {
+ @include _gridle_generate_classes($stateName, null, true);
+ }
+ } @else {
+ // generate classes :
+ @include _gridle_generate_classes($stateName, null, false);
+ }
+ }
+}
+$_gridle_generateOnlyOnce : true; // keep track of generate once classes
+@mixin _gridle_generate_classes(
+ $stateName : null,
+ $what : null,
+ $has-parent : false
+) {
+
+ // generate these classes only once :
+ @if $_gridle_generateOnlyOnce
+ {
+
+ // update status :
+ $_gridle_generateOnlyOnce : false;
+
+ // | ------------------------
+ // | Windows 8 fix
+ // | ------------------------
+
+ // Windows 8 fix for snap mode :
+ @media screen and (max-width: 400px) {
+ @-ms-viewport { width: device-width; }
+ }
+
+
+ // | ------------------------
+ // | Container
+ // | ------------------------
+
+ // generate container class :
+ @if $what == null or index($what, container) or index($what, default)
+ {
+ $container-selector : ();
+ $container-selector : append( $container-selector, unquote("#{_gridle_classname($gridle-container-name-pattern)}"), comma);
+ #{$container-selector} {
+ @include gridle_container();
+ }
+ }
+
+
+ // | ------------------------
+ // | Parent selector
+ // | ------------------------
+
+ // parent common css :
+ @if $what == null or index($what, parent) or index($what, default)
+ {
+ $parentSelector : _gridle_classname($gridle-parent-name-pattern,null,null);
+ #{$parentSelector} {
+ @extend %gridle-clearfix;
+ @extend %gridle-parent-common;
+ }
+ }
+
+
+ // // | ------------------------
+ // // | JSON Settings
+ // // | ------------------------
+
+ // // generate json settings :
+ @if $gridle-generate-json-settings
+ {
+ @include gridle_generate_json_settings();
+ }
+
+ }
+
+
+ // | ------------------------
+ // | Set the list of states to generate
+ // | ------------------------
+ $states : $_gridle_states;
+ @if $stateName and _gridle_has_state($stateName) {
+ $states : map-set((), $stateName, _gridle_get_state($stateName));
+ }
+
+
+ // | ------------------------
+ // | Store all the generated common selectors
+ // | ------------------------
+
+ // generate all selector for extends :
+ $grid-common-selector : ();
+ $push-common-selector : ();
+ $pull-common-selector : ();
+ $prefix-common-selector : ();
+ $suffix-common-selector : ();
+
+
+ // | ------------------------
+ // | Media queries classes common selectors
+ // | ------------------------
+
+ // generate all classes for media queries :
+ @each $stateName, $state in $states {
+
+ // setup vars :
+ $media : $stateName;
+ $classes : map-get($state, classes);
+ $context : map-get($state, context);
+ $name-multiplicator : map-get($state, name-multiplicator);
+ $generate-push-classes : _gridle_get_var_value(generate-push-classes, $state);
+ $generate-pull-classes : _gridle_get_var_value(generate-pull-classes, $state);
+ $generate-prefix-classes : _gridle_get_var_value(generate-prefix-classes, $state);
+ $generate-suffix-classes : _gridle_get_var_value(generate-suffix-classes, $state);
+
+ // generate classes :
+ @if $classes == true and $context {
+
+ // get specials columns :
+ $columnsMap : map-merge((), $_gridle_columns);
+
+ // register each default columns :
+ @for $j from 0 through $context {
+
+ // name :
+ $columnName : "#{$j*$name-multiplicator}";
+ $columnWidth : $j * $name-multiplicator;
+
+ // // create a column :
+ $col : _gridle_create_column($columnName, $columnWidth, $context, $name-multiplicator);
+
+ // // add column in columns map :
+ $columnsMap : map-set($columnsMap, $columnName, $col);
+ }
+
+ // loop on each columns to generate common selector :
+ @each $columnName, $column in $columnsMap {
+
+ // add selector :
+ @if $what == null or index($what, grid) or index($what, default) {
+ $grid-common-selector : append( $grid-common-selector, unquote("#{_gridle_classname($gridle-grid-name-pattern, $media, $columnName)}"), comma );
+ }
+ @if $generate-push-classes and ($what == null or index($what, push) or index($what, default)) {
+ $push-common-selector : append( $push-common-selector, unquote("#{_gridle_classname($gridle-push-name-pattern, $media, $columnName)}"), comma );
+ }
+ @if $generate-pull-classes and ($what == null or index($what, pull) or index($what, default)) {
+ $pull-common-selector : append( $pull-common-selector, unquote("#{_gridle_classname($gridle-pull-name-pattern, $media, $columnName)}"), comma );
+ }
+ @if $generate-prefix-classes and ($what == null or index($what, prefix) or index($what, default)) {
+ $prefix-common-selector : append( $prefix-common-selector, unquote("#{_gridle_classname($gridle-prefix-name-pattern, $media, $columnName)}"), comma );
+ }
+ @if $generate-suffix-classes and ($what == null or index($what, suffix) or index($what, default)) {
+ $suffix-common-selector : append( $suffix-common-selector, unquote("#{_gridle_classname($gridle-suffix-name-pattern, $media, $columnName)}"), comma );
+ }
+ }
+ }
+ }
+
+ // common css :
+ @if $what == null or index($what, grid) or index($what, default) {
+ #{$grid-common-selector} {
+ @include _gridle_grid_common();
+ }
+ }
+ @if $what == null or index($what, push) or index($what, default) {
+ #{$push-common-selector} {
+ @include _gridle_push_common();
+ }
+ }
+ @if $what == null or index($what, pull) or index($what, default) {
+ #{$pull-common-selector} {
+ @include _gridle_pull_common();
+ }
+ }
+ @if $what == null or index($what, prefix) or index($what, default) {
+ #{$prefix-common-selector} {
+ @include _gridle_prefix_common();
+ }
+ }
+ @if $what == null or index($what, suffix) or index($what, default) {
+ #{$suffix-common-selector} {
+ @include _gridle_suffix_common();
+ }
+ }
+
+
+ // | ------------------------
+ // | Media queries classes
+ // | ------------------------
+
+ // generate all classes for differents media queries :
+ @each $stateName, $state in $states {
+
+ // setup vars :
+ $classes : _gridle_get_var_value(classes, $state);
+ $context : _gridle_get_var_value(context, $state);
+ $name-multiplicator : _gridle_get_var_value(name-multiplicator, $state);
+ $generate-push-classes : _gridle_get_var_value(generate-push-classes, $state);
+ $generate-pull-classes : _gridle_get_var_value(generate-pull-classes, $state);
+ $generate-prefix-classes : _gridle_get_var_value(generate-prefix-classes, $state);
+ $generate-suffix-classes : _gridle_get_var_value(generate-suffix-classes, $state);
+ $generate-helpers-classes : _gridle_get_var_value(generate-helpers-classes, $state);
+
+ // generate all media queries grid classes :
+ @if $classes == true {
+
+ // parent common css :
+ $parentSelector : _gridle_classname($gridle-parent-name-pattern,$stateName,null);
+ #{$parentSelector} {
+ @extend %gridle-clearfix;
+ @extend %gridle-parent-common;
+ }
+
+ // generate all the classes :
+ @include gridle_state($stateName, $has-parent) {
+
+ // get specials columns :
+ $columnsMap : map-merge((), $_gridle_columns);
+
+ // register each default columns :
+ @for $j from 0 through $context {
+
+ // name :
+ $columnName : "#{$j*$name-multiplicator}";
+ $columnWidth : $j * $name-multiplicator;
+
+ // // create a column :
+ $col : _gridle_create_column($columnName, $columnWidth, $context, $name-multiplicator);
+
+ // // add column in columns map :
+ $columnsMap : map-set($columnsMap, $columnName, $col);
+ }
+
+ // generate all classes for columns :
+ @each $columnName, $column in $columnsMap {
+
+ // variables :
+ $columnsCount : map-get($column, columns);
+ $columnsContext : map-get($column, context);
+ $columnsNameMultiplicator : map-get($column, name-multiplicator);
+
+ // extend context in state (for columns) :
+ $extendedState : map-merge($state, (
+ context : $columnsContext,
+ name-multiplicator : $columnsNameMultiplicator // inject the name multiplicator here getted from column to handle custom registered columns
+ ));
+
+ // classes :
+ @if $what == null or index($what, grid) or index($what, default) {
+ #{_gridle_classname($gridle-grid-name-pattern, $stateName, $columnName)} {
+ @include _gridle($columnsCount, $extendedState);
+ }
+ }
+ @if $generate-push-classes == true and ($what == null or index($what, push) or index($what, default)) {
+ #{_gridle_classname($gridle-push-name-pattern, $stateName, $columnName)} {
+ @include _gridle_push($columnsCount, $extendedState);
+ }
+ }
+ @if $generate-pull-classes == true and ($what == null or index($what, pull) or index($what, default)) {
+ #{_gridle_classname($gridle-pull-name-pattern, $stateName, $columnName)} {
+ @include _gridle_pull($columnsCount, $extendedState);
+ }
+ }
+ @if $generate-prefix-classes == true and ($what == null or index($what, prefix) or index($what, default)) {
+ #{_gridle_classname($gridle-prefix-name-pattern, $stateName, $columnName)} {
+ @include _gridle_prefix($columnsCount, $extendedState);
+ }
+ }
+ @if $generate-suffix-classes == true and ($what == null or index($what, suffix) or index($what, default)) {
+ #{_gridle_classname($gridle-suffix-name-pattern, $stateName, $columnName)} {
+ @include _gridle_suffix($columnsCount, $extendedState);
+ }
+ }
+ }
+
+ // media queries helpers classes :
+ @if $generate-helpers-classes == true {
+ @include _gridle_generate_helper_classes($stateName, $what);
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Resources/public/sass/contrib/gridle/gridle/_gridle.scss b/Resources/public/sass/contrib/gridle/gridle/_gridle.scss
new file mode 100644
index 000000000..cddbe1376
--- /dev/null
+++ b/Resources/public/sass/contrib/gridle/gridle/_gridle.scss
@@ -0,0 +1,141 @@
+// |------------------------------------------------------
+// |------------------------------------------------------
+// Gridle (.scss)
+// Gridle is an one and unique grid system file that allows you to generate almost all
+// grid you've ever dreamt about.
+// |------------------------------------------------------
+// |------------------------------------------------------
+
+// |------------------------------------------------------
+// |------------------------------------------------------
+// Copyright (c) 2014 Olivier Bossel
+
+// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
+// documentation files (the "Software"), to deal in the Software without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software,
+// and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+// The above copyright notice and this permission notice shall be included in all copies or substantial portions
+// of the Software.
+
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+// TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
+// CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+// IN THE SOFTWARE.
+// |------------------------------------------------------
+// |------------------------------------------------------
+
+// |------------------------------------------------------
+// |------------------------------------------------------
+// @created 25.03.13
+// @updated 09.06.15
+// @author Olivier Bossel
+// @version 1.3.40
+// |------------------------------------------------------
+// |------------------------------------------------------
+
+$_gridle-version : "1.3.40";
+
+
+
+
+// |------------------------------------------------------
+// |------------------------------------------------------
+// | Variables
+// |------------------------------------------------------
+// |------------------------------------------------------
+
+$_gridle_settings : (); // the default settings
+$_gridle_states : (); // the variable map for each states
+$_gridle_clear_classes :(); // store each automatic clear count
+$_gridle_columns : (); // store the registered special columns
+$_gridle_states_debug_devices : (); // save the debug states devices
+
+
+
+
+// |------------------------------------------------------
+// |------------------------------------------------------
+// | Settings
+// |------------------------------------------------------
+// |------------------------------------------------------
+
+@import 'settings';
+
+
+
+
+// |------------------------------------------------------
+// |------------------------------------------------------
+// | Silent classes
+// |------------------------------------------------------
+// |------------------------------------------------------
+
+@import 'silent-classes';
+
+
+
+
+// |------------------------------------------------------
+// |------------------------------------------------------
+// | Common mixins
+// |------------------------------------------------------
+// |------------------------------------------------------
+
+@import 'common-mixins';
+
+
+
+
+// |------------------------------------------------------
+// |------------------------------------------------------
+// | Functions
+// |------------------------------------------------------
+// |------------------------------------------------------
+
+@import 'functions';
+
+
+
+
+// |------------------------------------------------------
+// |------------------------------------------------------
+// | Settings mixins
+// |------------------------------------------------------
+// |------------------------------------------------------
+
+@import 'settings-mixins';
+
+
+
+
+// |------------------------------------------------------
+// |------------------------------------------------------
+// | Mixins
+// |------------------------------------------------------
+// |------------------------------------------------------
+
+@import 'mixins';
+
+
+
+
+// |------------------------------------------------------
+// |------------------------------------------------------
+// | Generate mixins
+// |------------------------------------------------------
+// |------------------------------------------------------
+
+@import 'generate-mixins';
+
+
+
+
+// |------------------------------------------------------
+// |------------------------------------------------------
+// | Default states
+// |------------------------------------------------------
+// |------------------------------------------------------
+
+@import 'default-states';
diff --git a/Resources/public/sass/contrib/gridle/gridle/_mixins.scss b/Resources/public/sass/contrib/gridle/gridle/_mixins.scss
new file mode 100644
index 000000000..b4e440443
--- /dev/null
+++ b/Resources/public/sass/contrib/gridle/gridle/_mixins.scss
@@ -0,0 +1,831 @@
+// |------------------------------------------------------
+// |------------------------------------------------------
+// | Mixins
+// |------------------------------------------------------
+// |------------------------------------------------------
+
+// Helper to apply multiple config for a certain state with one mixin
+@mixin gridle_set(
+ $settings,
+ $state : default
+) {
+
+ // loop on each settings
+ @each $settingName, $settingValue in $settings
+ {
+ $sn : unquote("#{$settingName}");
+ $sv : $settingValue;
+
+ // check if setting name is a state :
+ @if _gridle_has_state($sn) {
+ // process the state
+ @include gridle_set($sv, $sn);
+ } @else {
+ @if $sn == container {
+ @include gridle_container($state);
+ } @else if $sn == grid {
+ @include gridle($sv, $state);
+ } @else if $sn == push {
+ @include gridle_push($sv, $state);
+ } @else if $sn == pull {
+ @include gridle_pull($sv, $state);
+ } @else if $sn == prefix {
+ @include gridle_prefix($sv, $state);
+ } @else if $sn == suffix {
+ @include gridle_suffix($sv, $state);
+ } @else if $sn == pull {
+ @include gridle_pull($sv, $state);
+ } @else if $sn == clear_each {
+ @include gridle_clear_each(nth($sv,1), nth($sv,2), $state);
+ } @else if $sn == centered {
+ @include gridle_centered($state);
+ } @else if $sn == parent {
+ @include gridle_parent($state);
+ } @else if $sn == vertical_align {
+ @include gridle_vertical_align($sv, $state);
+ } @else if $sn == hide {
+ @if $sv == true {
+ @include gridle_hide($state);
+ } @else {
+ @include gridle_show($state);
+ }
+ } @else if $sn == show {
+ @if $sv == true {
+ @include gridle_show($state);
+ } @else {
+ @include gridle_hide($state);
+ }
+ } @else if $sn == visible {
+ @if $sv == true {
+ @include gridle_visible($state);
+ } @else {
+ @include gridle_not_visible($state);
+ }
+ } @else if $sn == not_visible {
+ @if $sv == true {
+ @include gridle_not_visible($state);
+ } @else {
+ @include gridle_visible($state);
+ }
+ } @else if $sn == show_inline {
+ @if $sv == true {
+ @include gridle_show_inline($state);
+ } @else {
+ @include gridle_hide($state);
+ }
+ } @else if $sn == float {
+ @include gridle_float($sv, $state);
+ } @else if $sn == clear {
+ @include gridle_clear($sv, $state);
+ } @else if $sn == no_gutter
+ or $sn == no_margin {
+ @include gridle_no_gutter($sv, $state);
+ } @else if $sn == gutter
+ or $sn == margin {
+ @include gridle_gutter($sv, $state);
+ } @else {
+ // we do nothing
+ }
+ }
+ }
+}
+
+// Responsive helpers mixins :
+@mixin gridle_state(
+ $states,
+ $has-parent : true
+) {
+
+ // check first param if is a state :
+ $firstState : nth($states,1);
+ @if _gridle_has_state($firstState) {
+
+ // loop on each states :
+ @each $state in $states
+ {
+ // variables :
+ $html-states-classes : _gridle_get_var_value(html-states-classes, $state);
+ $debug : _gridle_get_var_value(debug, $state);
+ $stateName : _gridle_get_var_value(name, $state);
+
+ // check if is a state :
+ @if ($html-states-classes or $debug)
+ and $stateName {
+ // html class :
+ @if $has-parent {
+ html#{_gridle_classname("#{$stateName}")} & { @content; }
+ } @else {
+ html#{_gridle_classname("#{$stateName}")} { @content; }
+ }
+ }
+
+ // get the media query :
+ $q : _gridle_get_media_query($state);
+
+ // make the media query if a query exist :
+ @if $q {
+ @media #{$q} {
+ @content;
+ }
+ }
+ @else
+ {
+ @content;
+ }
+ }
+
+ } @else {
+
+ // variables :
+ $html-states-classes : _gridle_get_var_value(html-states-classes, $states);
+ $debug : _gridle_get_var_value(debug, $states);
+ $stateName : _gridle_get_var_value(name, $states);
+
+ // check if is a state :
+ @if ($html-states-classes or $debug)
+ and $stateName {
+ // html class :
+ @if $has-parent {
+ html#{_gridle_classname("#{$stateName}")} & { @content; }
+ } @else {
+ html#{_gridle_classname("#{$stateName}")} { @content; }
+ }
+ }
+
+ // get the media query :
+ $q : _gridle_get_media_query($states);
+
+ // make the media query if a query exist :
+ @if $q {
+ @media #{$q} {
+ @content;
+ }
+ }
+ @else
+ {
+ @content;
+ }
+
+ }
+}
+
+
+
+// Container mixin :
+@mixin gridle_container(
+ $state : default
+) {
+ @include _gridle_container_common($state);
+}
+
+
+// Grid mixin :
+// Set the width of the specified grid column :
+@mixin gridle(
+ $columns,
+ $state-or-context : default,
+ $state : default
+) {
+ // manage state and context :
+ $context : null;
+ @if type-of($state-or-context) == number {
+ $context : $state-or-context;
+ } @else {
+ $state : $state-or-context;
+ }
+
+ // common :
+ @include _gridle_grid_common();
+ // check if need media query :
+ @if $state {
+ @include gridle_state($state) {
+ @include _gridle($columns, $state, $context);
+ }
+ } @else {
+ @include _gridle($columns, $state, $context);
+ }
+}
+@mixin _gridle(
+ $columns,
+ $state : default,
+ $context : null
+) {
+ // vars :
+ $name : _gridle_get_var_value(name, $state);
+ @if type-of($context) != number {
+ $context : _gridle_get_var_value(context, $state);
+ }
+ $name-multiplicator : _gridle_get_var_value(name-multiplicator, $state);
+ $gutter-width : _gridle_get_var_value(gutter-width, $state);
+ $ie7-support : _gridle_get_var_value(ie7-support, $state);
+ $debug : _gridle_get_var_value(debug, $state);
+ $debug-show-class-names : _gridle_get_var_value(debug-show-class-names, $state);
+
+ // manage columns
+ @if type-of($columns) != number and map-has-key($_gridle_columns, $columns) {
+ // the columns is a saved one, get the context and column value
+ $column : map-get($_gridle_columns, $columns);
+ $context : map-get($column, context);
+ $columns : map-get($column, columns);
+ } @else if type-of($columns) == number {
+ $columns : $columns / $name-multiplicator;
+ } @else {
+ @error "the column #{$columns} does not exist...";
+ }
+
+ // vars :
+ $width : percentage(1 / $context * $columns);
+
+ // set value :
+ width:$width;
+
+ // ie7 support :
+ @if $ie7-support == true {
+ *width: expression((this.parentNode.clientWidth/#{$context}*#{($columns / $name-multiplicator)} - parseInt(this.currentStyle['paddingLeft']) - parseInt(this.currentStyle['paddingRight'])) + 'px');
+ }
+
+ // debug :
+ @if $debug == true and $debug-show-class-names == true {
+ #{$gridle-debug-selector} {
+ &:before {
+ @if $name == default {
+ content:"grid-#{$name}-#{$columns}";
+ } @else {
+ content:"grid-#{$name}-#{$columns}" !important;
+ }
+ }
+ &.parent:before {
+ @if $name == default {
+ content:"grid-parent-#{$name}-#{$columns}";
+ } @else {
+ content:"grid-parent-#{$name}-#{$columns}" !important;
+ }
+ }
+ }
+ }
+}
+
+
+// push :
+// Push the element of the count of column wanted
+@mixin gridle_push(
+ $columns,
+ $state-or-context : default,
+ $state : default
+) {
+ // manage state and context
+ $context : null;
+ @if type-of($state-or-context) == number {
+ $context : $state-or-context;
+ } @else {
+ $state : $state-or-context;
+ }
+
+ // common :
+ @include _gridle_push_common($state);
+
+ // check if need media query :
+ @if $state {
+ @include gridle_state($state) {
+ @include _gridle_push($columns, $state, $context);
+ }
+ } @else {
+ @include _gridle_push($columns, $state, $context);
+ }
+}
+@mixin _gridle_push(
+ $columns,
+ $state : default,
+ $context : null
+) {
+ // variables :
+ $name : _gridle_get_var_value(name, $state);
+ @if type-of($context) != number {
+ $context : _gridle_get_var_value(context, $state);
+ }
+ $direction : _gridle_get_var_value(direction, $state);
+ $name-multiplicator : _gridle_get_var_value(name-multiplicator, $state);
+ $debug : _gridle_get_var_value(debug, $state);
+ $debug-show-class-names : _gridle_get_var_value(debug-show-class-names, $state);
+
+ // vars :
+ $width : percentage(1 / $context) * ($columns / $name-multiplicator);
+ @if $direction == rtl { $width : $width*-1; }
+ left:$width;
+
+ // debug css :
+ @if $debug == true and $debug-show-class-names == true {
+ #{$gridle-debug-selector} {
+ &:after {
+ @if $name == default {
+ content:"push-#{$name}-#{$columns}";
+ } @else {
+ content:"push-#{$name}-#{$columns}" !important;
+ }
+ }
+ }
+ }
+
+}
+
+
+// pull :
+// Pull the element of the count of column wanted
+@mixin gridle_pull(
+ $columns,
+ $state : default
+) {
+ // common :
+ @include _gridle_pull_common($state);
+
+ // check if need media query :
+ @if $state {
+ @include gridle_state($state) {
+ @include _gridle_pull($columns,$state);
+ }
+ } @else {
+ @include _gridle_pull($columns,$state);
+ }
+}
+@mixin _gridle_pull(
+ $columns,
+ $state : default
+) {
+ // vars :
+ $name : _gridle_get_var_value(name, $state);
+ $context : _gridle_get_var_value(context, $state);
+ $direction : _gridle_get_var_value(direction, $state);
+ $name-multiplicator : _gridle_get_var_value(name-multiplicator, $state);
+ $debug : _gridle_get_var_value(debug, $state);
+ $debug-show-class-names : _gridle_get_var_value(debug-show-class-names, $state);
+
+ // vars :
+ $width : percentage(1 / $context) * ($columns / $name-multiplicator);
+ @if $direction == rtl { $width : $width*-1; }
+ right:$width;
+
+ // debug css :
+ @if $debug == true and $debug-show-class-names == true {
+ #{$gridle-debug-selector} {
+ &:after {
+ @if $name == default {
+ content:"pull-#{$name}-#{$columns}";
+ } @else {
+ content:"pull-#{$name}-#{$columns}" !important;
+ }
+ }
+ }
+ }
+}
+
+
+// push :
+// Push the element of the count of column wanted
+@mixin gridle_prefix(
+ $columns,
+ $state : default
+) {
+ // common :
+ @include _gridle_prefix_common($state);
+
+ // check if need media query :
+ @if $state {
+ @include gridle_state($state) {
+ @include _gridle_prefix($columns,$state);
+ }
+ } @else {
+ @include _gridle_prefix($columns,$state);
+ }
+}
+@mixin _gridle_prefix(
+ $columns,
+ $state : default
+) {
+ // vars :
+ $name : _gridle_get_var_value(name, $state);
+ $context : _gridle_get_var_value(context, $state);
+ $direction : _gridle_get_var_value(direction, $state);
+ $gutter-width : _gridle_get_var_value(gutter-width, $state);
+ $name-multiplicator : _gridle_get_var_value(name-multiplicator, $state);
+ $debug : _gridle_get_var_value(debug, $state);
+ $debug-show-class-names : _gridle_get_var_value(debug-show-class-names, $state);
+
+ // vars :
+ $width : percentage(1 / $context) * ($columns / $name-multiplicator);
+
+ // set value :
+ @if $direction == rtl { margin-right:$width; }
+ @else { margin-left:$width; }
+
+ // debug css :
+ @if $debug == true and $debug-show-class-names == true {
+ #{$gridle-debug-selector} {
+ &:after {
+ @if $name == default {
+ content:"prefix-#{$name}-#{$columns}";
+ } @else {
+ content:"prefix-#{$name}-#{$columns}" !important;
+ }
+ }
+ }
+ }
+}
+
+
+// pull :
+// Pull the element of the count of column wanted
+@mixin gridle_suffix(
+ $columns,
+ $state : default
+) {
+ // common :
+ @include _gridle_suffix_common($state);
+
+ // check if need media query :
+ @if $state {
+ @include gridle_state($state) {
+ @include _gridle_suffix($columns,$state);
+ }
+ } @else {
+ @include _gridle_suffix($columns,$state);
+ }
+}
+@mixin _gridle_suffix(
+ $columns,
+ $state : default
+) {
+ // vars :
+ $name : _gridle_get_var_value(name, $state);
+ $context : _gridle_get_var_value(context, $state);
+ $direction : _gridle_get_var_value(direction, $state);
+ $gutter-width : _gridle_get_var_value(gutter-width, $state);
+ $name-multiplicator : _gridle_get_var_value(name-multiplicator, $state);
+ $debug : _gridle_get_var_value(debug, $state);
+ $debug-show-class-names : _gridle_get_var_value(debug-show-class-names, $state);
+
+ // vars :
+ $width : percentage(1 / $context) * ($columns / $name-multiplicator);
+
+ // set value :
+ @if $direction == rtl { margin-left:$width; }
+ @else { margin-right:$width; }
+
+ // debug css :
+ @if $debug == true and $debug-show-class-names == true {
+ #{$gridle-debug-selector} {
+ &:after {
+ @if $name == default {
+ content:"suffix-#{$name}-#{$columns}";
+ } @else {
+ content:"suffix-#{$name}-#{$columns}" !important;
+ }
+ }
+ }
+ }
+}
+
+
+// grid background :
+// Display the grid background debug
+@mixin gridle_grid_background(
+ $state : default
+) {
+ // check if need media query :
+ @if $state {
+ @include gridle_state($state) {
+ @include _gridle_grid_background($state);
+ }
+ } @else {
+ @include _gridle_grid_background($state);
+ }
+}
+@mixin _gridle_grid_background(
+ $state : default
+) {
+
+ // variables :
+ $context : _gridle_get_var_value(context, $state);
+
+ position:relative;
+ z-index:9999;
+ &:before {
+ content:'';
+ position:absolute;
+ top:0; left:0;
+ width:100%; height:100% !important;
+ // vars :
+ $width : percentage(1 / $context);
+ background: linear-gradient(to right, rgba(0,0,0,.01) 50% , rgba(0,0,0,.04) 50%); /* Standard syntax */
+ background-size:($width*2) 100%;
+ // background-position:$gridle-gutter-width/2 0;
+ }
+}
+
+
+/**
+ * Parent clear each
+ */
+// Grid mixin :
+// Set the width of the specified grid column :
+@mixin gridle_clear_each(
+ $clearEach,
+ $clearWhat : both,
+ $state : default
+) {
+ // check if need media query :
+ @if $state {
+ @include gridle_state($state) {
+ @include _gridle_clear_each($clearEach, $clearWhat);
+ }
+ } @else {
+ @include _gridle_clear_each($clearEach, $clearWhat);
+ }
+}
+@mixin _gridle_clear_each(
+ $clearEach,
+ $clearWhat
+) {
+ > *:nth-child(#{$clearEach}n+1) {
+ clear : $clearWhat;
+ }
+}
+
+
+// Grid centered :
+@mixin gridle_centered(
+ $state : default
+) {
+ // check if need media query :
+ @if $state {
+ @include gridle_state($state) {
+ @include _gridle_centered();
+ }
+ } @else {
+ @include _gridle_centered();
+ }
+}
+@mixin _gridle_centered() {
+ display:block !important;
+ float:none !important;
+ margin-left:auto !important;
+ margin-right:auto !important;
+ clear:both !important;
+}
+
+
+// Grid parent :
+@mixin gridle_parent(
+ $state : default
+) {
+ // common :
+ @include _gridle_parent_common();
+ // check if need media query :
+ @if $state {
+ @include gridle_state($state) {
+ @include _gridle_parent();
+ }
+ } @else {
+ @include _gridle_parent();
+ }
+}
+@mixin _gridle_parent() {
+ @include gridle_no_gutter();
+}
+
+
+/**
+ * Vertical align :
+ */
+@mixin gridle_vertical_align(
+ $align : middle,
+ $state : default
+) {
+ // check if need media query :
+ @if $state {
+ @include gridle_state($state) {
+ @include _gridle_vertical_align($align);
+ }
+ } @else {
+ @include _gridle_vertical_align($align);
+ }
+}
+@mixin _gridle_vertical_align(
+ $align : middle
+) {
+ font-size:0;
+ clear:both;
+
+ > * {
+ display:inline-block;
+ float:none !important;
+ vertical-align:$align;
+ font-size:1rem;
+ }
+}
+
+
+// Hide on :
+// @param String $media On what state
+@mixin gridle_hide(
+ $state : default
+) {
+ // check if need media query :
+ @if $state {
+ @include gridle_state($state) {
+ @include _gridle_hide();
+ }
+ } @else {
+ @include _gridle_hide();
+ }
+}
+@mixin _gridle_hide() {
+ display:none;
+}
+
+
+// Not visible on :
+// @param String $media What to hide (one of the 3 state classes name)
+@mixin gridle_not_visible(
+ $state : default
+) {
+ // check if need media query :
+ @if $state {
+ @include gridle_state($state) {
+ @include _gridle_not_visible();
+ }
+ } @else {
+ @include _gridle_not_visible();
+ }
+}
+@mixin _gridle_not_visible() {
+ visibility:hidden;
+}
+
+
+// Show on
+// @param String $media What to hide (one of the 3 state classes name)
+@mixin gridle_show(
+ $state : default
+) {
+ // check if need media query :
+ @if $state {
+ @include gridle_state($state) {
+ @include _gridle_show();
+ }
+ } @else {
+ @include _gridle_show();
+ }
+}
+@mixin _gridle_show() {
+ display:block;
+}
+
+
+/**
+ * Show inline
+ *
+ * @param String $state The state name
+ */
+@mixin gridle_show_inline(
+ $state : default
+) {
+ // check if need media query :
+ @if $state {
+ @include gridle_state($state) {
+ @include _gridle_show_inline();
+ }
+ } @else {
+ @include _gridle_show_inline();
+ }
+}
+@mixin _gridle_show_inline() {
+ display:inline-block;
+}
+
+
+// Visible on :
+// @param String $media On what state
+@mixin gridle_visible(
+ $state : default
+) {
+ // check if need media query :
+ @if $state {
+ @include gridle_state($state) {
+ @include _gridle_visible();
+ }
+ } @else {
+ @include _gridle_visible();
+ }
+}
+@mixin _gridle_visible() {
+ visibility:visible;
+}
+
+
+// Gridle Right :
+@mixin gridle_float(
+ $float-direction : left,
+ $state : default
+) {
+ // check if need media query :
+ @if $state {
+ @include gridle_state($state) {
+ @include _gridle_float($float-direction);
+ }
+ } @else {
+ @include _gridle_float($float-direction);
+ }
+}
+@mixin _gridle_float(
+ $float-direction : left
+) {
+ float:#{$float-direction};
+}
+
+
+// Gridle clear :
+// @param String $clear-direction The direction to clear
+// @param String $state The state
+@mixin gridle_clear(
+ $clear-direction : both,
+ $state : default
+) {
+ // check if need media query :
+ @if $state {
+ @include gridle_state($state) {
+ @include _gridle_clear($clear-direction);
+ }
+ } @else {
+ @include _gridle_clear($clear-direction);
+ }
+}
+@mixin _gridle_clear(
+ $clear-direction : both
+) {
+ clear:#{$clear-direction};
+}
+
+
+// Gridle no gutter :
+// @param String $side The side to clear
+// @param String $state The state
+@mixin gridle_no_gutter(
+ $side : left right,
+ $state : default
+) {
+ // check if need media query :
+ @if $state {
+ @include gridle_state($state) {
+ @include _gridle_no_gutter($side);
+ }
+ } @else {
+ @include _gridle_no_gutter($side);
+ }
+}
+@mixin gridle_no_margin(
+ $side : left right,
+ $state : default
+) {
+ @include gridle_no_gutter($side, $state);
+}
+@mixin _gridle_no_gutter(
+ $side : left right
+) {
+ @each $s in $side {
+ padding-#{$s} : 0;
+ }
+}
+
+
+// Gridle gutter :
+// @param String $side The side to clear
+// @param String $state The state
+@mixin gridle_gutter(
+ $side : left right,
+ $state : default
+) {
+ // check if need media query :
+ @if $state {
+ @include gridle_state($state) {
+ @include _gridle_gutter($side);
+ }
+ } @else {
+ @include _gridle_gutter($side);
+ }
+}
+// shortcut :
+@mixin gridle_margin(
+ $side : left right,
+ $state : default
+) {
+ @include gridle_gutter($side, $state);
+}
+@mixin _gridle_gutter(
+ $side : left right,
+ $state : default
+) {
+ $gutter-width : _gridle_get_var_value(gutter-width, $state);
+ @each $s in $side {
+ padding-#{$s} : $gutter-width / 2;
+ }
+}
\ No newline at end of file
diff --git a/Resources/public/sass/contrib/gridle/gridle/_settings-mixins.scss b/Resources/public/sass/contrib/gridle/gridle/_settings-mixins.scss
new file mode 100644
index 000000000..bfd2df859
--- /dev/null
+++ b/Resources/public/sass/contrib/gridle/gridle/_settings-mixins.scss
@@ -0,0 +1,139 @@
+// |------------------------------------------------------
+// |------------------------------------------------------
+// | Settings mixins
+// |------------------------------------------------------
+// |------------------------------------------------------
+
+/**
+ * Setup
+ */
+@mixin gridle_setup(
+ $settings : ()
+) {
+ $_gridle-settings : map-merge((
+ name : default,
+ min-width : null,
+ max-width : null,
+ query : null,
+ classes : true,
+ context : 12,
+ gutter-width : 20px,
+ direction : ltr,
+ name-multiplicator : 1,
+ debug : false,
+ debug-show-class-names : true,
+ ie7-support : false,
+ html-states-classes : false,
+ generate-push-classes : true,
+ generate-pull-classes : true,
+ generate-prefix-classes : true,
+ generate-suffix-classes : true,
+ generate-helpers-classes : true
+ ), $settings) !global;
+
+ // register default state :
+ @include gridle_register_state(default, $_gridle-settings);
+
+}
+
+// Register an state :
+@mixin gridle_register_state(
+ $name,
+ $settings
+) {
+ // settings :
+ $settings : map-merge($_gridle-settings, $settings);
+
+ // set name :
+ $settings : map-set($settings, name, $name);
+
+ // add state in maps :
+ $_gridle_states : map-set($_gridle_states, $name, $settings) !global;
+}
+
+
+/**
+ * Register a clear each class
+ */
+@mixin gridle_register_clear_each(
+ $count,
+ $clearWhat
+) {
+ // create the clear map :
+ $classMap : (
+ clearEach : $count,
+ clearWhat : $clearWhat
+ );
+
+ // append to map :
+ $_gridle_clear_classes : map-set($_gridle_clear_classes, $count, $classMap) !global;
+}
+
+
+/**
+ * Register a special class
+ */
+@mixin gridle_register_column(
+ $name,
+ $columns,
+ $context
+) {
+ // create a column :
+ $col : _gridle_create_column($name, $columns, $context);
+
+ // add column in maps :
+ $_gridle_columns : map-set($_gridle_columns, $name, $col) !global;
+}
+
+
+/**
+ * Register default states
+ */
+@mixin gridle_register_default_states() {
+ @include gridle_register_state(mobile, (
+ max-width : 480px
+ ));
+ @include gridle_register_state(tablet, (
+ min-width : 481px,
+ max-width : 1024px
+ ));
+}
+
+
+/**
+ * Register default mobile first states :
+ */
+@mixin gridle_register_default_mobile_first_states() {
+ @include gridle_register_state(xs, (
+ max-width : 768px
+ ));
+ @include gridle_register_state(sm, (
+ min-width : 768px
+ ));
+ @include gridle_register_state(md, (
+ min-width : 992px
+ ));
+ @include gridle_register_state(lg, (
+ min-width : 1200px
+ ));
+}
+
+
+/**
+ * Set the debug device (not used for now)
+ *
+ * @param String $state The state to update
+ * @para m String $device The device to use (iphone, etc...)
+ */
+@mixin gridle_set_debug_device(
+ $state : default,
+ $device : null
+) {
+
+ // check params :
+ @if $state and $device {
+ // set the state device :
+ $_gridle_states_debug_devices : append($_gridle_states_debug_devices, unquote("\"#{$state}\" : \"#{$device}\""), comma);
+ }
+
+}
\ No newline at end of file
diff --git a/Resources/public/sass/contrib/gridle/gridle/_settings.scss b/Resources/public/sass/contrib/gridle/gridle/_settings.scss
new file mode 100644
index 000000000..991c35154
--- /dev/null
+++ b/Resources/public/sass/contrib/gridle/gridle/_settings.scss
@@ -0,0 +1,69 @@
+// |------------------------------------------------------
+// |------------------------------------------------------
+// | Settings
+// |------------------------------------------------------
+// |------------------------------------------------------
+
+$gridle-generate-json-settings : true !default;
+
+$gridle-debug-selector : ".gridle-debug &, &.gridle-debug" !default;
+
+$gridle-class-prefix : '' !default;
+$gridle-class-separator : '-' !default;
+
+$gridle-container-name-pattern : ('container') !default;
+
+$gridle-grid-name-pattern : ('grid','%-','%state','%-','%count') !default;
+$gridle-push-name-pattern : ('push','%-','%state','%-','%count') !default;
+$gridle-pull-name-pattern : ('pull','%-','%state','%-','%count') !default;
+$gridle-prefix-name-pattern : ('prefix','%-','%state','%-','%count') !default;
+$gridle-suffix-name-pattern : ('suffix','%-','%state','%-','%count') !default;
+
+$gridle-parent-name-pattern : ('parent','%-','%state') !default;
+$gridle-centered-name-pattern : ('centered','%-','%state') !default;
+
+$gridle-vertical-align-middle-name-pattern : ('vertical','%-','align','%-','%state','%-','middle') !default;
+$gridle-vertical-align-top-name-pattern : ('vertical','%-','align','%-','%state','%-','top') !default;
+$gridle-vertical-align-bottom-name-pattern : ('vertical','%-','align','%-','%state','%-','bottom') !default;
+
+$gridle-hide-name-pattern : ('hide','%-','%state') !default;
+$gridle-show-name-pattern : ('show','%-','%state') !default;
+$gridle-show-inline-name-pattern : ('show','%-','inline','%-','%state') !default;
+$gridle-not-visible-name-pattern : ('not','%-','visible','%-','%state') !default;
+$gridle-visible-name-pattern : ('visible','%-','%state') !default;
+
+$gridle-float-left-name-pattern : ('float','%-','%state','%-','left') !default;
+$gridle-float-right-name-pattern : ('float','%-','%state','%-','right') !default;
+
+$gridle-clear-name-pattern : ('clear','%-','%state') !default;
+$gridle-clear-left-name-pattern : ('clear','%-','%state','%-','left') !default;
+$gridle-clear-right-name-pattern : ('clear','%-','%state','%-','right') !default;
+$gridle-clear-each-pattern : ('clear','%-','each','%-','%state','%-','%count') !default;
+
+$gridle-no-gutter-name-pattern : ('no','%-','gutter','%-','%state') !default;
+$gridle-no-gutter-left-name-pattern : ('no','%-','gutter','%-','%state','%-','left') !default;
+$gridle-no-gutter-right-name-pattern : ('no','%-','gutter','%-','%state','%-','right') !default;
+$gridle-no-gutter-top-name-pattern : ('no','%-','gutter','%-','%state','%-','top') !default;
+$gridle-no-gutter-bottom-name-pattern : ('no','%-','gutter','%-','%state','%-','bottom') !default;
+
+$gridle-no-margin-name-pattern : ('no','%-','margin','%-','%state') !default;
+$gridle-no-margin-left-name-pattern : ('no','%-','margin','%-','%state','%-','left') !default;
+$gridle-no-margin-right-name-pattern : ('no','%-','margin','%-','%state','%-','right') !default;
+$gridle-no-margin-top-name-pattern : ('no','%-','margin','%-','%state','%-','top') !default;
+$gridle-no-margin-bottom-name-pattern : ('no','%-','margin','%-','%state','%-','bottom') !default;
+
+$gridle-gutter-name-pattern : ('gutter','%-','%state') !default;
+$gridle-gutter-left-name-pattern : ('gutter','%-','%state','%-','left') !default;
+$gridle-gutter-right-name-pattern : ('gutter','%-','%state','%-','right') !default;
+$gridle-gutter-top-name-pattern : ('gutter','%-','%state','%-','top') !default;
+$gridle-gutter-bottom-name-pattern : ('gutter','%-','%state','%-','bottom') !default;
+
+$gridle-margin-name-pattern : ('margins','%-','%state') !default;
+$gridle-margin-left-name-pattern : ('margin','%-','%state','%-','left') !default;
+$gridle-margin-right-name-pattern : ('margin','%-','%state','%-','right') !default;
+$gridle-margin-top-name-pattern : ('margin','%-','%state','%-','top') !default;
+$gridle-margin-bottom-name-pattern : ('margin','%-','%state','%-','bottom') !default;
+
+$gridle-auto-height-name-pattern : ('auto','%-','height','%-','%state') !default;
+
+$gridle-debug-color-name-pattern : ('debug','%-','color','%-','%state','%-','%count') !default;
\ No newline at end of file
diff --git a/Resources/public/sass/contrib/gridle/gridle/_silent-classes.scss b/Resources/public/sass/contrib/gridle/gridle/_silent-classes.scss
new file mode 100644
index 000000000..da72abc58
--- /dev/null
+++ b/Resources/public/sass/contrib/gridle/gridle/_silent-classes.scss
@@ -0,0 +1,106 @@
+// |------------------------------------------------------
+// |------------------------------------------------------
+// | Silent classes
+// |------------------------------------------------------
+// |------------------------------------------------------
+
+%gridle-pie-clearfix {
+ &:after {
+ content: ".";
+ display: block;
+ clear: both;
+ visibility: hidden;
+ line-height: 0;
+ height: 0;
+ }
+
+ & {
+ display: inline-block;
+ }
+
+ html[xmlns] & {
+ display: block;
+ }
+
+ * html & {
+ height: 1%;
+ }
+}
+%gridle-simple-clearfix {
+ &:after {
+ content: "";
+ display: table;
+ clear: both;
+ border-spacing:0;
+ }
+}
+%gridle-clearfix {
+ // For modern browser
+ &:before,
+ &:after {
+ content:"";
+ display:table;
+ border-spacing:0;
+ }
+ &:after {
+ clear:both;
+ }
+ // For IE 6/7 (trigger hasLayout
+ & {
+ zoom:1;
+ }
+}
+%gridle-push-pull-debug-background-common {
+ background-size:50px 90%;
+ background-position:0 50%;
+ background-repeat:repeat-x;
+}
+%gridle-push-pull-common {
+ position:relative;
+}
+%gridle-container-common {
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+%gridle-parent-common {
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+%gridle-container-debug-common {
+ background-color:#f5f5f5;
+}
+%gridle-grid-debug-common {
+ &:before,
+ &:after {
+ content:"";
+ display:block;
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowRkEzNzVFNTg1NjgxMUUyOUI4RjhEMzg4QzM4QjZFOCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowRkEzNzVFNjg1NjgxMUUyOUI4RjhEMzg4QzM4QjZFOCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjBGQTM3NUUzODU2ODExRTI5QjhGOEQzODhDMzhCNkU4IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjBGQTM3NUU0ODU2ODExRTI5QjhGOEQzODhDMzhCNkU4Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8++5+BhQAAAA9JREFUeNpiYGBgkAIIMAAAHwAbZIBtGgAAAABJRU5ErkJggg==);
+ margin:10px 0;
+ padding:5px 0;
+ text-align:center;
+ color:white;
+ font-size:11px;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ display:block !important;
+ }
+ background-color:#daeff5;
+}
+%gridle-grid-common {
+ display:inline-block;
+ min-height:1px;
+
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+
+}
+%gridle-prefix-debug-common {
+ background-color:#dae7e9 !important;
+}
+%gridle-suffix-debug-common {
+ background-color:#dae7e9 !important;
+}
\ No newline at end of file
diff --git a/Resources/public/sass/contrib/gridle/style-bootstrap.scss b/Resources/public/sass/contrib/gridle/style-bootstrap.scss
new file mode 100644
index 000000000..f2536ae07
--- /dev/null
+++ b/Resources/public/sass/contrib/gridle/style-bootstrap.scss
@@ -0,0 +1,11 @@
+/**
+ * Bootstrap style :
+ */
+.row {
+ margin:20px 0; // adding margin to rows
+}
+.thumb {
+ background:#eee;
+ width:100%; height:0;
+ padding-bottom:56%;
+}
\ No newline at end of file
diff --git a/Resources/public/sass/contrib/gridle/style.scss b/Resources/public/sass/contrib/gridle/style.scss
new file mode 100644
index 000000000..6cc1f299b
--- /dev/null
+++ b/Resources/public/sass/contrib/gridle/style.scss
@@ -0,0 +1,76 @@
+/**
+ * Imports :
+ */
+@import 'compass/reset';
+
+/**
+ * Import grid settings :
+ * This to be able to use gridle mixins, etc...
+ */
+@import 'grid-settings';
+
+/**
+ * Medias :
+ */
+ul#medias {
+ background:black;
+ text-align:center;
+ margin-bottom:30px;
+
+ li {
+ display:inline-block;
+ height:50px;
+ line-height:50px;
+ padding:0 30px;
+ color:white;
+ font-size:16px;
+ cursor:pointer;
+ margin:0;
+
+ &.active,
+ &:hover {
+ background:white;
+ color:black;
+ }
+ }
+
+ @include gridle_state((
+ max-width : 620px
+ )) {
+ display:none;
+ }
+}
+
+/**
+ * Basic formatting :
+ */
+html {
+ font:11px/1.5 'Helvetica Neue', Verdana, sans-serif;
+}
+body {
+ @include gridle_state(mobile tablet) {
+ text-align:center;
+ }
+
+ @include gridle_state(ipad-landscape) {
+ font-size:16px;
+ }
+}
+
+
+/**
+ * Gridle set sample :
+ */
+#myCoolItem {
+ @include gridle_set((
+ grid : 8,
+ push : 2,
+ tablet : (
+ grid : 12,
+ push : 0
+ ),
+ mobile : (
+ visible : false
+ )
+ ));
+}
\ No newline at end of file
diff --git a/Resources/public/sass/contrib/gridle/tests.scss b/Resources/public/sass/contrib/gridle/tests.scss
new file mode 100644
index 000000000..970fca71b
--- /dev/null
+++ b/Resources/public/sass/contrib/gridle/tests.scss
@@ -0,0 +1,280 @@
+// Import grid settings :
+@import 'grid-settings';
+
+// standard grid mixins :
+.grid-12 {
+ @include gridle(12);
+}
+.grid-1on5 {
+ @include gridle("1on5");
+}
+.grid-12-on-100 {
+ @include gridle(12, 100);
+}
+.grid-15-on-100-on-mobile {
+ @include gridle(15, 100, mobile);
+}
+.grid-30-on-100-on-mobile-and-tablet {
+ @include gridle(30, 100);
+ @include gridle(30, 100, mobile tablet);
+}
+
+// parent
+.grid-parent {
+ @include gridle_parent();
+}
+.grid-parent-set {
+ @include gridle_set((
+ parent : true
+ ));
+}
+
+// clear each
+.clear-each-2 {
+ @include gridle_clear_each(2);
+}
+.clear-each-2-left {
+ @include gridle_clear_each(2, left);
+}
+.clear-each-2-left-mobile {
+ @include gridle_clear_each(2, left, mobile);
+}
+.clear-each-2-set {
+ @include gridle_set((
+ clear_each : ( 2, left )
+ ));
+}
+
+// centered
+.centered {
+ @include gridle_centered();
+}
+.centered-mobile {
+ @include gridle_centered(mobile);
+}
+
+// certical align
+.vertical-align {
+ @include gridle_vertical_align();
+}
+.vertical-align-bottom {
+ @include gridle_vertical_align(bottom);
+}
+.vertical-align-top-mobile {
+ @include gridle_vertical_align(top, mobile);
+}
+.vertical-align-set {
+ @include gridle_set((
+ vertical_align : middle
+ ));
+}
+
+// push
+.push-6 {
+ @include gridle_push(6);
+}
+.push-12-mobile {
+ @include gridle_push(12, mobile);
+}
+.push-set {
+ @include gridle_set((
+ push : 3
+ ));
+}
+
+// pull
+.pull-6 {
+ @include gridle_pull(6);
+}
+.pull-12-mobile {
+ @include gridle_pull(12, mobile);
+}
+.pull-set {
+ @include gridle_set((
+ pull : 3
+ ));
+}
+
+// prefix
+.prefix-6 {
+ @include gridle_prefix(6);
+}
+.prefix-12-mobile {
+ @include gridle_prefix(12, mobile);
+}
+.prefix-set {
+ @include gridle_set((
+ prefix : 3
+ ));
+}
+
+// suffix
+.suffix-6 {
+ @include gridle_suffix(6);
+}
+.suffix-12-mobile {
+ @include gridle_suffix(12, mobile);
+}
+.suffix-set {
+ @include gridle_set((
+ suffix : 3
+ ));
+}
+
+// hide
+.hide {
+ @include gridle_hide();
+}
+.hide-mobile {
+ @include gridle_hide(mobile);
+}
+.hide-set {
+ @include gridle_set((
+ hide : true
+ ));
+}
+
+// show
+.show {
+ @include gridle_show();
+}
+.show-mobile {
+ @include gridle_show(mobile);
+}
+.show-set {
+ @include gridle_set((
+ show : false
+ ));
+}
+
+// show_inline
+.show_inline {
+ @include gridle_show_inline();
+}
+.show_inline-mobile {
+ @include gridle_show_inline(mobile);
+}
+.show_inline-set {
+ @include gridle_set((
+ show_inline : true
+ ));
+}
+
+// not_visible
+.not_visible {
+ @include gridle_not_visible();
+}
+.not_visible-mobile {
+ @include gridle_not_visible(mobile);
+}
+.not_visible-set {
+ @include gridle_set((
+ not_visible : true
+ ));
+}
+
+// visible
+.visible {
+ @include gridle_visible();
+}
+.visible-mobile {
+ @include gridle_visible(mobile);
+}
+.visible-set {
+ @include gridle_set((
+ visible : false
+ ));
+}
+
+// gridle state
+.gridle-state {
+ background: red;
+
+ @include gridle_state(mobile tablet) {
+ background: pink;
+ }
+ @include gridle_state((
+ query : "only print"
+ )) {
+ background: yellow;
+ }
+ @include gridle_state((
+ max-width : 200px
+ )) {
+ background: green;
+ }
+}
+
+// gridle set
+.gridle-set {
+ @include gridle_set((
+ grid : 6,
+ push : 2,
+ tablet : (
+ grid : 8,
+ push : 0,
+ ),
+ clear : left,
+ mobile : (
+ grid : 12,
+ push : 0,
+ pull : 0
+ )
+ ));
+}
+.gridle-set-multiple {
+ @include gridle_set((
+ grid : 6
+ ));
+ @include gridle_set((
+ grid : 12
+ ), mobile tablet);
+}
+
+// float-right
+.float-right {
+ @include gridle_float(right);
+}
+.float-left-mobile {
+ @include gridle_float(left, mobile);
+}
+.float-set {
+ @include gridle_set((
+ float : right
+ ));
+}
+
+// clear
+.clear {
+ @include gridle_clear();
+}
+.clear-left-mobile {
+ @include gridle_clear(left, mobile);
+}
+.clear-set {
+ @include gridle_set((
+ clear : left
+ ));
+}
+
+// gutters
+.gutters {
+ @include gridle_gutter();
+}
+.gutters-left {
+ @include gridle_gutter(left);
+}
+.gutters-side-mobile {
+ @include gridle_gutter(left right, mobile);
+}
+
+// no-gutter
+.no-gutter {
+ @include gridle_no_gutter();
+}
+.no-gutter-left {
+ @include gridle_no_gutter(left);
+}
+.no-gutter-side-mobile {
+ @include gridle_no_gutter(left right, mobile);
+}
\ No newline at end of file
diff --git a/Resources/public/sass/contrib/normalize/_normalize.scss b/Resources/public/sass/contrib/normalize/_normalize.scss
new file mode 100644
index 000000000..5e5e3c898
--- /dev/null
+++ b/Resources/public/sass/contrib/normalize/_normalize.scss
@@ -0,0 +1,424 @@
+/*! 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: 80%;
+}
+
+/**
+ * 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;
+}
+
+/**
+ * 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;
+}
diff --git a/Resources/public/sass/mixins/_alerts.scss b/Resources/public/sass/mixins/_alerts.scss
new file mode 100644
index 000000000..d7d4d62ab
--- /dev/null
+++ b/Resources/public/sass/mixins/_alerts.scss
@@ -0,0 +1,7 @@
+@mixin alert($color) {
+ background: transparentize($color,0.8);
+ color: $color;
+ font-weight: bold;
+ margin-bottom: 0.75em;
+ padding: 0.75em;
+}
\ No newline at end of file
diff --git a/Resources/public/sass/mixins/_buttons.scss b/Resources/public/sass/mixins/_buttons.scss
new file mode 100644
index 000000000..603856e23
--- /dev/null
+++ b/Resources/public/sass/mixins/_buttons.scss
@@ -0,0 +1,34 @@
+@mixin button($button-background-color, $button-text-color) {
+ color: $button-text-color;
+ background: $button-background-color;
+ border: medium none;
+ box-shadow: none;
+ padding: $button-padding;
+ text-decoration: none;
+ text-align: center;
+ display: inline-block;
+ vertical-align: middle;
+ white-space: nowrap;
+ line-height: normal;
+ @include border-top-radius($base-border-radius);
+ @include border-bottom-radius($base-border-radius);
+
+ &:hover,
+ &:active {
+ background: darken($button-background-color, 5%);
+ color: $button-text-color; // force text color for anchor tags
+ text-decoration: none; // remove underline on anchor tags
+ }
+
+ &:focus {
+ background: darken($button-background-color, 5%);
+ }
+
+ &[disabled] {
+ background: transparentize($button-background-color,0.4);
+ color: darken($button-background-color, 10%);
+ &:hover {
+ box-shadow: none;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Resources/public/sass/modules/_alerts.scss b/Resources/public/sass/modules/_alerts.scss
new file mode 100644
index 000000000..03ed6b5cd
--- /dev/null
+++ b/Resources/public/sass/modules/_alerts.scss
@@ -0,0 +1,15 @@
+.success {
+ @include alert($green);
+}
+
+.error {
+ @include alert($red);
+}
+
+.alert {
+ @include alert($orange);
+}
+
+.notice {
+ @include alert($blue);
+}
\ No newline at end of file
diff --git a/Resources/public/sass/modules/_buttons.scss b/Resources/public/sass/modules/_buttons.scss
new file mode 100644
index 000000000..9e0036de5
--- /dev/null
+++ b/Resources/public/sass/modules/_buttons.scss
@@ -0,0 +1,12 @@
+.sc-button {
+ @include button($grey-15, $button-text-color);
+
+ &.blue { @include button($blue, $white); }
+ &.green { @include button($green, $white); }
+ &.orange { @include button($orange, $white); }
+ &.red { @include button($red, $white); }
+ &.black { @include button($grey-90, $white); }
+ &.white { @include button($white, $text-color); }
+}
+
+@import "../custom/modules/buttons";
\ No newline at end of file
diff --git a/Resources/public/sass/modules/_content.scss b/Resources/public/sass/modules/_content.scss
new file mode 100644
index 000000000..49be33d38
--- /dev/null
+++ b/Resources/public/sass/modules/_content.scss
@@ -0,0 +1,7 @@
+html, body {
+ height: 100%;
+}
+
+.content {
+ min-height: 85%;
+}
\ No newline at end of file
diff --git a/Resources/public/sass/modules/_footer.scss b/Resources/public/sass/modules/_footer.scss
new file mode 100644
index 000000000..1193f4c30
--- /dev/null
+++ b/Resources/public/sass/modules/_footer.scss
@@ -0,0 +1,65 @@
+.footer {
+ background: $footer-background;
+ padding-top: $footer-vertical-padding;
+ padding-bottom: $footer-vertical-padding;
+ width: 100%;
+
+ .footer-logo {
+ text-align: center;
+ margin-bottom: 2em;
+
+ img {
+ height: 3em;
+ }
+ }
+
+ .footer-links {
+ @include gridle_clear(both);
+
+ margin-bottom: $base-spacing;
+ @include gridle(8);
+ @include gridle_centered();
+ }
+
+ ul {
+ margin-bottom: $base-spacing*2;
+ @include gridle (4);
+ list-style-type: none;
+ }
+
+ li {
+ text-align: center;
+ }
+
+ li a {
+ color: $footer-link-color;
+
+ &:hover {
+ color: transparentize($footer-color, 0);
+ }
+ }
+
+ li h3 {
+ color: $footer-color;
+ font-size: 1em;
+ font-weight: 800;
+ margin-bottom: .4em;
+ }
+
+ hr {
+ @include gridle_clear(both);
+ border: 1px solid transparentize($footer-disclaimer-color, .3);
+ margin: 0 auto $base-spacing;
+ width: 12em;
+ }
+
+ p {
+ @include gridle_clear(both);
+ color: $footer-disclaimer-color;
+ font-size: .9em;
+ line-height: 1.5em;
+ margin: auto;
+ max-width: 35em;
+ text-align: center;
+ }
+}
\ No newline at end of file
diff --git a/Resources/public/sass/modules/_forms.scss b/Resources/public/sass/modules/_forms.scss
new file mode 100644
index 000000000..970d33a48
--- /dev/null
+++ b/Resources/public/sass/modules/_forms.scss
@@ -0,0 +1,145 @@
+fieldset {
+ border: none;
+ margin: 0 0 ($base-spacing / 2) 0;
+ padding: $base-spacing;
+}
+
+input,label, select {
+ display: block;
+ /* font-family: $form-font-family;
+ font-size: $form-font-size; */
+}
+
+label {
+ padding-top: $base-spacing / 3;
+ padding-bottom: $base-spacing / 3;
+ font-weight: bold;
+ margin-bottom: $base-spacing / 4;
+
+ &.required:after {
+ content: "*";
+ color: $red;
+ font-weight: 900;
+ }
+
+ abbr {
+ display: none;
+ }
+}
+
+.inline-choice {
+ white-space:nowrap;
+ label {
+ white-space:normal;
+ display: inline;
+ line-height: 1 + ((2 * $base-spacing) / 3);
+ margin-right: 1em;
+ font-weight: normal;
+ }
+}
+
+textarea,
+//input,
+#{$all-text-inputs},
+select[multiple=multiple] {
+ //@include box-sizing(border-box);
+ //@include transition(border-color);
+ background-color: white;
+ @include border-top-radius($form-border-radius);
+ @include border-bottom-radius($form-border-radius);
+ border: $form-border-size solid $form-border-color;
+ box-shadow: none;
+ //box-shadow: $form-box-shadow;
+ /*font-family: $form-font-family;
+ font-size: $form-font-size; */
+ margin-bottom: $base-spacing / 4;
+ padding: ($base-spacing / 3) ($base-spacing / 3);
+ width: 100%;
+
+ &:hover {
+ border-color: $form-border-color-hover;
+ }
+
+ &:focus {
+ border-color: $form-border-color-focus;
+ box-shadow: $form-box-shadow-focus;
+ outline: none;
+ }
+}
+
+textarea {
+ resize: vertical;
+}
+
+input[type="search"] {
+ //@include appearance(none);
+}
+
+input[type="checkbox"],
+input[type="radio"] {
+ display: inline;
+ margin-right: $base-spacing / 4;
+}
+
+input[type="file"] {
+ padding-bottom: $base-spacing / 2;
+ width: 100%;
+}
+
+select {
+ margin-bottom: $base-spacing / 4;
+ padding-top: ($base-spacing / 5);
+ padding-bottom: ($base-spacing / 5);
+ width: 100%;
+}
+
+form {
+ p {
+ &.tip {
+ font-size: .875em;
+ position: relative;
+ text-align: center;
+ margin-top: -.3em;
+ }
+
+ &.label {
+ padding: 0;
+ //margin: 0;
+ //color: $text-color;
+ white-space: normal;
+ }
+ }
+
+ fieldset {
+ border: none;
+ margin-bottom: 1.5em;
+ padding: 0;
+ margin: 0;
+
+ legend {
+ font-size: 1.438em;
+ font-weight: 700;
+ width: 100%;
+ border-bottom: 3px solid #ddd;
+ margin-bottom: 1em;
+
+ & + * {
+ -webkit-margin-top-collapse: separate; // webkit hack that makes the legend margins work like they should
+ }
+
+ h2 {
+ margin-bottom: 0;
+ }
+ }
+ }
+
+ li {
+ label {
+ display: inline-block;
+ font-weight: normal;
+ }
+ }
+}
+
+@import "../custom/modules/forms";
+
diff --git a/Resources/public/sass/modules/_navigation.scss b/Resources/public/sass/modules/_navigation.scss
new file mode 100644
index 000000000..789707f6a
--- /dev/null
+++ b/Resources/public/sass/modules/_navigation.scss
@@ -0,0 +1,299 @@
+.navigation {
+ //$navigation-nav-button-background: $base-accent-color;
+ //$navigation-nav-button-background-hover: lighten($navigation-background, 10);
+ //$navigation-nav-button-border: 1px solid lighten($navigation-nav-button-background, 20);
+ //$navigation-search-background: lighten($navigation-background, 5);
+ //$navigation-search-border: 1px solid darken($navigation-background, 5);
+ //$horizontal-bar-mode: $large-screen;
+
+ background-color: $navigation-background;
+ border-bottom: $navigation-border-bottom;
+ height: $navigation-height;
+ //width: 100%;
+ z-index: 999;
+
+ .logo-container {
+ height: $navigation-height;
+
+ &:before { /* create a full-height inline block pseudo=element */
+ content: ' ';
+ display: inline-block;
+ vertical-align: middle; /* vertical alignment of the inline element */
+ height: 100%;
+ }
+
+ img.logo {
+ max-width: 89%;
+ max-height: $navigation-height - 10px;
+ display: inline-block;
+ vertical-align: middle;
+ }
+ }
+
+ // Nav menu
+ .nav {
+ z-index: 9999999;
+ height: $navigation-height;
+ //float: none;
+ }
+
+ ul.navigation-menu {
+ -webkit-transform-style: preserve-3d; // stop webkit flicker
+ clear: both;
+ display: none;
+ margin: 0 auto;
+ overflow: visible;
+ padding: 0;
+ width: 100%;
+ z-index: 9999;
+
+ //@include media ($horizontal-bar-mode) {
+ display: inline-block;
+ margin: 0;
+ padding: 0;
+ //}
+ }
+
+ // The nav items
+ ul li.nav-link {
+ background: $navigation-background;
+ display: block;
+ line-height: $navigation-height;
+ overflow: hidden;
+ padding-right: .8em;
+ text-align: right;
+ width: 100%;
+ z-index: 9999;
+
+ // @include media ($horizontal-bar-mode) {
+ background: transparent;
+ display: inline;
+ line-height: $navigation-height;
+ text-decoration: none;
+ width: auto;
+ // }
+
+ a {
+ color: $navigation-color;
+ display: inline-block;
+ font-weight: 400;
+
+ //@include media ($horizontal-bar-mode) {
+ padding-right: 1em;
+ //}
+
+ &:hover {
+ color: $navigation-color-hover;
+ }
+ }
+ }
+
+ .active-nav-item a {
+ border-bottom: 1px solid $navigation-active-link-color;
+ padding-bottom: 3px;
+ }
+
+ // Sub menus
+ li.more.nav-link {
+ padding-right: 0;
+
+ // @include media($large-screen) {
+ padding-right: $navigation-submenu-padding;
+ // }
+
+ > ul > li:first-child a {
+ padding-top: $navigation-first-padding-top;
+ }
+
+ a {
+ margin-right: $navigation-submenu-padding;
+ }
+
+ > a {
+ padding-right: 0.6em;
+ }
+
+ > a:after {
+ @include position(absolute, auto -.4em auto auto);
+ content: $navigation-more-pin;
+ color: $navigation-more-pin-color;
+ }
+ }
+
+ li.more {
+ overflow: visible;
+ padding-right: 0;
+
+ a {
+ padding-right: .8em;
+ }
+
+ > a {
+ padding-right: 1.6em;
+ position: relative;
+
+ //@include media($large-screen) {
+ margin-right: $navigation-submenu-padding;
+ //}
+
+ &:after {
+ content: '›';
+ font-size: 1.2em;
+ position: absolute;
+ right: $navigation-submenu-padding / 2;
+ }
+ }
+
+ &:hover > .submenu {
+ display: block;
+ }
+
+ //@include media($horizontal-bar-mode) {
+ padding-right: .8em;
+ position: relative;
+ //}
+ }
+
+ ul.submenu {
+ display: none;
+ padding-left: $navigation-ul-submenu-padding-left;
+ //@include media($horizontal-bar-mode) {
+ left: -$navigation-submenu-padding;
+ position: absolute;
+ top: $navigation-ul-submenu-top;
+ //}
+
+ .submenu {
+ //@include media($horizontal-bar-mode) {
+ left: $navigation-submenu-width - .2em;
+ top: 0;
+ //}
+ }
+
+ li {
+ display: block;
+ padding-right: 0;
+
+ //@include media($horizontal-bar-mode) {
+ line-height: $navigation-height / 1.3;
+
+ &:first-child > a {
+ border-top-left-radius: $navigation-border-radius;
+ border-top-right-radius: $navigation-border-radius;
+ }
+
+ &:last-child > a {
+ border-bottom-left-radius: $navigation-border-radius;
+ border-bottom-right-radius: $navigation-border-radius;
+ padding-bottom: $navigation-last-padding-bottom;
+ }
+ //}
+
+ a {
+ background-color: darken($navigation-background, 3);
+ display: inline-block;
+ text-align: right;
+ width: 100%;
+
+ //@include media($horizontal-bar-mode) {
+ background-color: $navigation-background;
+ padding-left: $navigation-submenu-padding;
+ text-align: left;
+ //width: $navigation-submenu-width;
+ //}
+ }
+ }
+ }
+
+ // Elements on the far right
+ .navigation-search {
+ padding: $navigation-search-padding;
+ position: relative;
+
+ input[type=search] {
+ //background: $navigation-search-background;
+ //border: $navigation-search-border;
+ padding: .6em .55em;
+ padding-right: 3.5em;
+ width: calc(100% - 4.5em);
+ //padding: .6em .8em;
+ //padding: 0 30px 0 10px;
+ font-size: .9em;
+ //color: $navigation-color;
+ //border-radius: $navigation-border-radius * 2;
+ margin: 0;
+ }
+
+ button {
+ padding: 7px 12px;
+ position: absolute;
+ top: .99em;
+ right: 1em;
+ }
+ }
+
+ ul li.nav-link2 {
+ position: relative;
+ padding-right: 2em;
+ text-align: left;
+ line-height: $navigation-height;
+ z-index: 9999;
+ float: left;
+ list-style: none;
+
+ & div.li-content {
+ display: inline-block;
+ line-height: normal;
+ vertical-align: middle;
+
+ a.more:after {
+ content: $navigation-more-pin;
+ color: $navigation-more-pin-color;
+ padding-left: 0.4em;
+ font-size: 1.2em;
+ }
+ }
+
+ ul {
+ display: none;
+ position: absolute;
+ line-height: normal;
+ list-style: none;
+ background-color: #333;
+ padding-right: 1.5em;
+ padding-left: 1.5em;
+ width: 100%;
+ }
+
+ ul {
+ li {
+ padding-top:0.7em;
+ padding-bottom:0.7em;
+
+ &:first-child {
+ padding-top: $navigation-first-padding-top;
+ }
+
+ &:last-child {
+ padding-bottom: $navigation-first-padding-top;
+ }
+ }
+ }
+
+ &:hover ul {
+ display: block;
+ }
+
+ a {
+ width: 100%;
+ color: $navigation-color;
+ font-weight: 400;
+
+ &:hover {
+ color: $navigation-color-hover;
+ }
+ }
+ }
+}
+
+@import "../custom/modules/navigation";
\ No newline at end of file
diff --git a/Resources/public/sass/modules/_table.scss b/Resources/public/sass/modules/_table.scss
new file mode 100644
index 000000000..14389580a
--- /dev/null
+++ b/Resources/public/sass/modules/_table.scss
@@ -0,0 +1,33 @@
+table {
+ width: $table-width;
+
+ thead {
+ background-color: $table-head-bg-color;
+
+ tr th {
+ border: $table-head-td-border;
+ text-align: $table-head-td-text-align;
+ padding: $table-head-td-padding;
+ color: $table-head-text-color;
+ }
+ }
+
+ tbody {
+ tr {
+ td {
+ border: $table-body-td-border;
+ text-align: $table-body-td-text-align;
+ padding: $table-body-td-padding;
+ color: $table-body-text-color;
+ }
+
+ &:nth-of-type(even) {
+ background-color: $table-body-tr-bg-color-even;
+ }
+
+ &:nth-of-type(odd) {
+ background-color: $table-body-tr-bg-color-odd;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Resources/public/sass/modules/_tabs.scss b/Resources/public/sass/modules/_tabs.scss
new file mode 100644
index 000000000..75cbbd258
--- /dev/null
+++ b/Resources/public/sass/modules/_tabs.scss
@@ -0,0 +1,48 @@
+/* Tabs */
+$navigation-color: $red;
+$gutter : 4;
+$norm: 5;
+$body-font-color: $white;
+$default-color: $green;
+$global-bg-color: $yellow;
+
+.tab-nav {
+ margin: 0.5em 0;
+ padding: 0;
+
+ > li {
+ font-family: $tabs-nav-font-family;
+ display: inline-block;
+ width: 100%;
+ cursor: default;
+ @include border-top-radius($base-border-radius);
+ @include border-bottom-radius($base-border-radius);
+ margin-bottom: $tabs-nav-margin-bottom;
+
+ &.title {
+ padding: $tabs-nav-title-padding;
+ font-weight: 900;
+ background-color: $tabs-nav-title-bg-color;
+ color: $tabs-nav-title-text-color;
+ }
+
+ > a {
+ display: block;
+ width: auto;
+ padding: $tabs-nav-padding;
+ margin: 0;
+ color: $tabs-nav-text-color;
+ cursor: pointer;
+ border: $tabs-new-border;
+ background-color: $tabs-nav-bg-color;
+ @include border-top-radius($base-border-radius);
+ @include border-bottom-radius($base-border-radius);
+
+ &:hover, &:active {
+ border: $tabs-nav-hover-border;
+ color: $tabs-nav-hover-text-color;
+ text-decoration: none;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Resources/public/sass/modules/_typography.scss b/Resources/public/sass/modules/_typography.scss
new file mode 100644
index 000000000..dce6d75a6
--- /dev/null
+++ b/Resources/public/sass/modules/_typography.scss
@@ -0,0 +1,23 @@
+ul {
+ &.unstyled {
+ list-style: none;
+ padding-left: 0em;
+
+ ul {
+ list-style:disc outside;
+ }
+ }
+}
+
+a {
+ color: $base-link-color;
+ text-decoration: none;
+
+ &:hover {
+ color: $hover-link-color;
+ }
+}
+
+.text-right {
+ text-align: right;
+}
\ No newline at end of file
diff --git a/Resources/public/sass/scratch.scss b/Resources/public/sass/scratch.scss
new file mode 100644
index 000000000..5022bc7c7
--- /dev/null
+++ b/Resources/public/sass/scratch.scss
@@ -0,0 +1,47 @@
+@charset "UTF-8";
+
+@import "contrib/normalize/normalize";
+@import "contrib/fontawesome/font-awesome";
+@import "contrib/bourbon/bourbon";
+
+@import "config/colors";
+@import "config/variables";
+@import "config/buttons";
+
+/* etrange pour les forms */
+* { box-sizing: inherit; }
+html { box-sizing: border-box; }
+
+@import "mixins/buttons";
+@import "mixins/alerts";
+
+@import "contrib/gridle/gridle/gridle";
+
+@include gridle_setup((
+ context : 12,
+ gutter-width : 20px,
+ direction : ltr,
+));
+
+@include gridle_register_state(mobile , (
+ max-width : 400px
+));
+
+@include gridle_register_state(tablet, (
+ min-width : 401px,
+ max-width : 767px,
+));
+
+@include gridle_generate_classes();
+
+@import "modules/typography";
+@import "modules/navigation";
+@import "modules/content";
+@import "modules/footer";
+@import "modules/alerts";
+@import "modules/forms";
+@import "modules/buttons";
+@import "modules/tabs";
+@import "modules/table";
+
+@import "custom"
\ No newline at end of file