diff --git a/app/assets/less/vendor/bootstrap-framework.less b/app/assets/less/vendor/bootstrap-framework.less new file mode 100644 index 0000000..58d8446 --- /dev/null +++ b/app/assets/less/vendor/bootstrap-framework.less @@ -0,0 +1,38 @@ +@import "bootstrap/normalize.less"; +@import "bootstrap/print.less"; +@import "bootstrap/type.less"; +@import "bootstrap/code.less"; +@import "bootstrap/tables.less"; +@import "bootstrap/forms.less"; +@import "bootstrap/scaffolding.less"; + +@import "bootstrap/variables.less"; +@import "bootstrap/mixins.less"; +@import "bootstrap/grid.less"; +@import (reference) "bootstrap/buttons.less"; +@import "bootstrap/component-animations.less"; +@import (reference) "bootstrap/dropdowns.less"; +@import (reference) "bootstrap/button-groups.less"; +@import (reference) "bootstrap/input-groups.less"; +@import (reference) "bootstrap/navs.less"; +@import (reference) "bootstrap/navbar.less"; +@import (reference) "bootstrap/breadcrumbs.less"; +@import (reference) "bootstrap/pagination.less"; +@import (reference) "bootstrap/pager.less"; +@import (reference) "bootstrap/labels.less"; +@import (reference) "bootstrap/badges.less"; +@import (reference) "bootstrap/jumbotron.less"; +@import (reference) "bootstrap/thumbnails.less"; +@import "bootstrap/alerts.less"; +@import (reference) "bootstrap/progress-bars.less"; +@import (reference) "bootstrap/media.less"; +@import (reference) "bootstrap/list-group.less"; +@import (reference) "bootstrap/panels.less"; +@import (reference) "bootstrap/wells.less"; +@import "bootstrap/close.less"; +@import (reference) "bootstrap/modals.less"; +@import (reference) "bootstrap/tooltip.less"; +@import (reference) "bootstrap/popovers.less"; +@import (reference) "bootstrap/carousel.less"; +@import "bootstrap/utilities.less"; +@import (reference) "bootstrap/responsive-utilities.less"; diff --git a/app/assets/less/vendor/bootstrap/.csscomb.json b/app/assets/less/vendor/bootstrap/.csscomb.json new file mode 100644 index 0000000..40695a4 --- /dev/null +++ b/app/assets/less/vendor/bootstrap/.csscomb.json @@ -0,0 +1,304 @@ +{ + "always-semicolon": true, + "block-indent": 2, + "color-case": "lower", + "color-shorthand": true, + "element-case": "lower", + "eof-newline": true, + "leading-zero": false, + "remove-empty-rulesets": true, + "space-after-colon": 1, + "space-after-combinator": 1, + "space-before-selector-delimiter": 0, + "space-between-declarations": "\n", + "space-after-opening-brace": "\n", + "space-before-closing-brace": "\n", + "space-before-colon": 0, + "space-before-combinator": 1, + "space-before-opening-brace": 1, + "strip-spaces": true, + "unitless-zero": true, + "vendor-prefix-align": true, + "sort-order": [ + [ + "position", + "top", + "right", + "bottom", + "left", + "z-index", + "display", + "float", + "width", + "min-width", + "max-width", + "height", + "min-height", + "max-height", + "-webkit-box-sizing", + "-moz-box-sizing", + "box-sizing", + "-webkit-appearance", + "padding", + "padding-top", + "padding-right", + "padding-bottom", + "padding-left", + "margin", + "margin-top", + "margin-right", + "margin-bottom", + "margin-left", + "overflow", + "overflow-x", + "overflow-y", + "-webkit-overflow-scrolling", + "-ms-overflow-x", + "-ms-overflow-y", + "-ms-overflow-style", + "clip", + "clear", + "font", + "font-family", + "font-size", + "font-style", + "font-weight", + "font-variant", + "font-size-adjust", + "font-stretch", + "font-effect", + "font-emphasize", + "font-emphasize-position", + "font-emphasize-style", + "font-smooth", + "-webkit-hyphens", + "-moz-hyphens", + "hyphens", + "line-height", + "color", + "text-align", + "-webkit-text-align-last", + "-moz-text-align-last", + "-ms-text-align-last", + "text-align-last", + "text-emphasis", + "text-emphasis-color", + "text-emphasis-style", + "text-emphasis-position", + "text-decoration", + "text-indent", + "text-justify", + "text-outline", + "-ms-text-overflow", + "text-overflow", + "text-overflow-ellipsis", + "text-overflow-mode", + "text-shadow", + "text-transform", + "text-wrap", + "-webkit-text-size-adjust", + "-ms-text-size-adjust", + "letter-spacing", + "-ms-word-break", + "word-break", + "word-spacing", + "-ms-word-wrap", + "word-wrap", + "-moz-tab-size", + "-o-tab-size", + "tab-size", + "white-space", + "vertical-align", + "list-style", + "list-style-position", + "list-style-type", + "list-style-image", + "pointer-events", + "-ms-touch-action", + "touch-action", + "cursor", + "visibility", + "zoom", + "flex-direction", + "flex-order", + "flex-pack", + "flex-align", + "table-layout", + "empty-cells", + "caption-side", + "border-spacing", + "border-collapse", + "content", + "quotes", + "counter-reset", + "counter-increment", + "resize", + "-webkit-user-select", + "-moz-user-select", + "-ms-user-select", + "-o-user-select", + "user-select", + "nav-index", + "nav-up", + "nav-right", + "nav-down", + "nav-left", + "background", + "background-color", + "background-image", + "-ms-filter:\\'progid:DXImageTransform.Microsoft.gradient", + "filter:progid:DXImageTransform.Microsoft.gradient", + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader", + "filter", + "background-repeat", + "background-attachment", + "background-position", + "background-position-x", + "background-position-y", + "-webkit-background-clip", + "-moz-background-clip", + "background-clip", + "background-origin", + "-webkit-background-size", + "-moz-background-size", + "-o-background-size", + "background-size", + "border", + "border-color", + "border-style", + "border-width", + "border-top", + "border-top-color", + "border-top-style", + "border-top-width", + "border-right", + "border-right-color", + "border-right-style", + "border-right-width", + "border-bottom", + "border-bottom-color", + "border-bottom-style", + "border-bottom-width", + "border-left", + "border-left-color", + "border-left-style", + "border-left-width", + "border-radius", + "border-top-left-radius", + "border-top-right-radius", + "border-bottom-right-radius", + "border-bottom-left-radius", + "-webkit-border-image", + "-moz-border-image", + "-o-border-image", + "border-image", + "-webkit-border-image-source", + "-moz-border-image-source", + "-o-border-image-source", + "border-image-source", + "-webkit-border-image-slice", + "-moz-border-image-slice", + "-o-border-image-slice", + "border-image-slice", + "-webkit-border-image-width", + "-moz-border-image-width", + "-o-border-image-width", + "border-image-width", + "-webkit-border-image-outset", + "-moz-border-image-outset", + "-o-border-image-outset", + "border-image-outset", + "-webkit-border-image-repeat", + "-moz-border-image-repeat", + "-o-border-image-repeat", + "border-image-repeat", + "outline", + "outline-width", + "outline-style", + "outline-color", + "outline-offset", + "-webkit-box-shadow", + "-moz-box-shadow", + "box-shadow", + "filter:progid:DXImageTransform.Microsoft.Alpha(Opacity", + "-ms-filter:\\'progid:DXImageTransform.Microsoft.Alpha", + "opacity", + "-ms-interpolation-mode", + "-webkit-transition", + "-moz-transition", + "-ms-transition", + "-o-transition", + "transition", + "-webkit-transition-delay", + "-moz-transition-delay", + "-ms-transition-delay", + "-o-transition-delay", + "transition-delay", + "-webkit-transition-timing-function", + "-moz-transition-timing-function", + "-ms-transition-timing-function", + "-o-transition-timing-function", + "transition-timing-function", + "-webkit-transition-duration", + "-moz-transition-duration", + "-ms-transition-duration", + "-o-transition-duration", + "transition-duration", + "-webkit-transition-property", + "-moz-transition-property", + "-ms-transition-property", + "-o-transition-property", + "transition-property", + "-webkit-transform", + "-moz-transform", + "-ms-transform", + "-o-transform", + "transform", + "-webkit-transform-origin", + "-moz-transform-origin", + "-ms-transform-origin", + "-o-transform-origin", + "transform-origin", + "-webkit-animation", + "-moz-animation", + "-ms-animation", + "-o-animation", + "animation", + "-webkit-animation-name", + "-moz-animation-name", + "-ms-animation-name", + "-o-animation-name", + "animation-name", + "-webkit-animation-duration", + "-moz-animation-duration", + "-ms-animation-duration", + "-o-animation-duration", + "animation-duration", + "-webkit-animation-play-state", + "-moz-animation-play-state", + "-ms-animation-play-state", + "-o-animation-play-state", + "animation-play-state", + "-webkit-animation-timing-function", + "-moz-animation-timing-function", + "-ms-animation-timing-function", + "-o-animation-timing-function", + "animation-timing-function", + "-webkit-animation-delay", + "-moz-animation-delay", + "-ms-animation-delay", + "-o-animation-delay", + "animation-delay", + "-webkit-animation-iteration-count", + "-moz-animation-iteration-count", + "-ms-animation-iteration-count", + "-o-animation-iteration-count", + "animation-iteration-count", + "-webkit-animation-direction", + "-moz-animation-direction", + "-ms-animation-direction", + "-o-animation-direction", + "animation-direction" + ] + ] +} diff --git a/app/assets/less/vendor/bootstrap/.csslintrc b/app/assets/less/vendor/bootstrap/.csslintrc new file mode 100644 index 0000000..005b862 --- /dev/null +++ b/app/assets/less/vendor/bootstrap/.csslintrc @@ -0,0 +1,19 @@ +{ + "adjoining-classes": false, + "box-sizing": false, + "box-model": false, + "compatible-vendor-prefixes": false, + "floats": false, + "font-sizes": false, + "gradients": false, + "important": false, + "known-properties": false, + "outline-none": false, + "qualified-headings": false, + "regex-selectors": false, + "shorthand": false, + "text-indent": false, + "unique-headings": false, + "universal-selector": false, + "unqualified-attributes": false +} diff --git a/app/assets/less/vendor/bootstrap/alerts.less b/app/assets/less/vendor/bootstrap/alerts.less new file mode 100644 index 0000000..c4199db --- /dev/null +++ b/app/assets/less/vendor/bootstrap/alerts.less @@ -0,0 +1,73 @@ +// +// Alerts +// -------------------------------------------------- + + +// Base styles +// ------------------------- + +.alert { + padding: @alert-padding; + margin-bottom: @line-height-computed; + border: 1px solid transparent; + border-radius: @alert-border-radius; + + // Headings for larger alerts + h4 { + margin-top: 0; + // Specified for the h4 to prevent conflicts of changing @headings-color + color: inherit; + } + + // Provide class for links that match alerts + .alert-link { + font-weight: @alert-link-font-weight; + } + + // Improve alignment and spacing of inner content + > p, + > ul { + margin-bottom: 0; + } + + > p + p { + margin-top: 5px; + } +} + +// Dismissible alerts +// +// Expand the right padding and account for the close button's positioning. + +.alert-dismissable, // The misspelled .alert-dismissable was deprecated in 3.2.0. +.alert-dismissible { + padding-right: (@alert-padding + 20); + + // Adjust close link position + .close { + position: relative; + top: -2px; + right: -21px; + color: inherit; + } +} + +// Alternate styles +// +// Generate contextual modifier classes for colorizing the alert. + +.alert-success { + .alert-variant(@alert-success-bg; @alert-success-border; @alert-success-text); +} + +.alert-info { + .alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text); +} + +.alert-warning { + .alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text); +} + +.alert-danger { + .alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text); +} diff --git a/app/assets/less/vendor/bootstrap/badges.less b/app/assets/less/vendor/bootstrap/badges.less new file mode 100644 index 0000000..6ee16dc --- /dev/null +++ b/app/assets/less/vendor/bootstrap/badges.less @@ -0,0 +1,66 @@ +// +// Badges +// -------------------------------------------------- + + +// Base class +.badge { + display: inline-block; + min-width: 10px; + padding: 3px 7px; + font-size: @font-size-small; + font-weight: @badge-font-weight; + color: @badge-color; + line-height: @badge-line-height; + vertical-align: middle; + white-space: nowrap; + text-align: center; + background-color: @badge-bg; + border-radius: @badge-border-radius; + + // Empty badges collapse automatically (not available in IE8) + &:empty { + display: none; + } + + // Quick fix for badges in buttons + .btn & { + position: relative; + top: -1px; + } + + .btn-xs &, + .btn-group-xs > .btn & { + top: 0; + padding: 1px 5px; + } + + // Hover state, but only for links + a& { + &:hover, + &:focus { + color: @badge-link-hover-color; + text-decoration: none; + cursor: pointer; + } + } + + // Account for badges in navs + .list-group-item.active > &, + .nav-pills > .active > a > & { + color: @badge-active-color; + background-color: @badge-active-bg; + } + + .list-group-item > & { + float: right; + } + + .list-group-item > & + & { + margin-right: 5px; + } + + .nav-pills > li > a > & { + margin-left: 3px; + } +} diff --git a/app/assets/less/vendor/bootstrap/bootstrap.less b/app/assets/less/vendor/bootstrap/bootstrap.less new file mode 100644 index 0000000..1c04778 --- /dev/null +++ b/app/assets/less/vendor/bootstrap/bootstrap.less @@ -0,0 +1,56 @@ +/*! + * Bootstrap v3.3.6 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +// Core variables and mixins +@import "variables.less"; +@import "mixins.less"; + +// Reset and dependencies +@import "normalize.less"; +@import "print.less"; +@import "glyphicons.less"; + +// Core CSS +@import "scaffolding.less"; +@import "type.less"; +@import "code.less"; +@import "grid.less"; +@import "tables.less"; +@import "forms.less"; +@import "buttons.less"; + +// Components +@import "component-animations.less"; +@import "dropdowns.less"; +@import "button-groups.less"; +@import "input-groups.less"; +@import "navs.less"; +@import "navbar.less"; +@import "breadcrumbs.less"; +@import "pagination.less"; +@import "pager.less"; +@import "labels.less"; +@import "badges.less"; +@import "jumbotron.less"; +@import "thumbnails.less"; +@import "alerts.less"; +@import "progress-bars.less"; +@import "media.less"; +@import "list-group.less"; +@import "panels.less"; +@import "responsive-embed.less"; +@import "wells.less"; +@import "close.less"; + +// Components w/ JavaScript +@import "modals.less"; +@import "tooltip.less"; +@import "popovers.less"; +@import "carousel.less"; + +// Utility classes +@import "utilities.less"; +@import "responsive-utilities.less"; diff --git a/app/assets/less/vendor/bootstrap/breadcrumbs.less b/app/assets/less/vendor/bootstrap/breadcrumbs.less new file mode 100644 index 0000000..cb01d50 --- /dev/null +++ b/app/assets/less/vendor/bootstrap/breadcrumbs.less @@ -0,0 +1,26 @@ +// +// Breadcrumbs +// -------------------------------------------------- + + +.breadcrumb { + padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal; + margin-bottom: @line-height-computed; + list-style: none; + background-color: @breadcrumb-bg; + border-radius: @border-radius-base; + + > li { + display: inline-block; + + + li:before { + content: "@{breadcrumb-separator}\00a0"; // Unicode space added since inline-block means non-collapsing white-space + padding: 0 5px; + color: @breadcrumb-color; + } + } + + > .active { + color: @breadcrumb-active-color; + } +} diff --git a/app/assets/less/vendor/bootstrap/button-groups.less b/app/assets/less/vendor/bootstrap/button-groups.less new file mode 100644 index 0000000..293245a --- /dev/null +++ b/app/assets/less/vendor/bootstrap/button-groups.less @@ -0,0 +1,244 @@ +// +// Button groups +// -------------------------------------------------- + +// Make the div behave like a button +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-block; + vertical-align: middle; // match .btn alignment given font-size hack above + > .btn { + position: relative; + float: left; + // Bring the "active" button to the front + &:hover, + &:focus, + &:active, + &.active { + z-index: 2; + } + } +} + +// Prevent double borders when buttons are next to each other +.btn-group { + .btn + .btn, + .btn + .btn-group, + .btn-group + .btn, + .btn-group + .btn-group { + margin-left: -1px; + } +} + +// Optional: Group multiple button groups together for a toolbar +.btn-toolbar { + margin-left: -5px; // Offset the first child's margin + &:extend(.clearfix all); + + .btn, + .btn-group, + .input-group { + float: left; + } + > .btn, + > .btn-group, + > .input-group { + margin-left: 5px; + } +} + +.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { + border-radius: 0; +} + +// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match +.btn-group > .btn:first-child { + margin-left: 0; + &:not(:last-child):not(.dropdown-toggle) { + .border-right-radius(0); + } +} +// Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it +.btn-group > .btn:last-child:not(:first-child), +.btn-group > .dropdown-toggle:not(:first-child) { + .border-left-radius(0); +} + +// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group) +.btn-group > .btn-group { + float: left; +} +.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group > .btn-group:first-child:not(:last-child) { + > .btn:last-child, + > .dropdown-toggle { + .border-right-radius(0); + } +} +.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { + .border-left-radius(0); +} + +// On active and open, don't show outline +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} + + +// Sizing +// +// Remix the default button sizing classes into new ones for easier manipulation. + +.btn-group-xs > .btn { &:extend(.btn-xs); } +.btn-group-sm > .btn { &:extend(.btn-sm); } +.btn-group-lg > .btn { &:extend(.btn-lg); } + + +// Split button dropdowns +// ---------------------- + +// Give the line between buttons some depth +.btn-group > .btn + .dropdown-toggle { + padding-left: 8px; + padding-right: 8px; +} +.btn-group > .btn-lg + .dropdown-toggle { + padding-left: 12px; + padding-right: 12px; +} + +// The clickable button for toggling the menu +// Remove the gradient and set the same inset shadow as the :active state +.btn-group.open .dropdown-toggle { + .box-shadow(inset 0 3px 5px rgba(0,0,0,.125)); + + // Show no shadow for `.btn-link` since it has no other button styles. + &.btn-link { + .box-shadow(none); + } +} + + +// Reposition the caret +.btn .caret { + margin-left: 0; +} +// Carets in other button sizes +.btn-lg .caret { + border-width: @caret-width-large @caret-width-large 0; + border-bottom-width: 0; +} +// Upside down carets for .dropup +.dropup .btn-lg .caret { + border-width: 0 @caret-width-large @caret-width-large; +} + + +// Vertical button groups +// ---------------------- + +.btn-group-vertical { + > .btn, + > .btn-group, + > .btn-group > .btn { + display: block; + float: none; + width: 100%; + max-width: 100%; + } + + // Clear floats so dropdown menus can be properly placed + > .btn-group { + &:extend(.clearfix all); + > .btn { + float: none; + } + } + + > .btn + .btn, + > .btn + .btn-group, + > .btn-group + .btn, + > .btn-group + .btn-group { + margin-top: -1px; + margin-left: 0; + } +} + +.btn-group-vertical > .btn { + &:not(:first-child):not(:last-child) { + border-radius: 0; + } + &:first-child:not(:last-child) { + .border-top-radius(@btn-border-radius-base); + .border-bottom-radius(0); + } + &:last-child:not(:first-child) { + .border-top-radius(0); + .border-bottom-radius(@btn-border-radius-base); + } +} +.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group-vertical > .btn-group:first-child:not(:last-child) { + > .btn:last-child, + > .dropdown-toggle { + .border-bottom-radius(0); + } +} +.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { + .border-top-radius(0); +} + + +// Justified button groups +// ---------------------- + +.btn-group-justified { + display: table; + width: 100%; + table-layout: fixed; + border-collapse: separate; + > .btn, + > .btn-group { + float: none; + display: table-cell; + width: 1%; + } + > .btn-group .btn { + width: 100%; + } + + > .btn-group .dropdown-menu { + left: auto; + } +} + + +// Checkbox and radio options +// +// In order to support the browser's form validation feedback, powered by the +// `required` attribute, we have to "hide" the inputs via `clip`. We cannot use +// `display: none;` or `visibility: hidden;` as that also hides the popover. +// Simply visually hiding the inputs via `opacity` would leave them clickable in +// certain cases which is prevented by using `clip` and `pointer-events`. +// This way, we ensure a DOM element is visible to position the popover from. +// +// See https://github.com/twbs/bootstrap/pull/12794 and +// https://github.com/twbs/bootstrap/pull/14559 for more information. + +[data-toggle="buttons"] { + > .btn, + > .btn-group > .btn { + input[type="radio"], + input[type="checkbox"] { + position: absolute; + clip: rect(0,0,0,0); + pointer-events: none; + } + } +} diff --git a/app/assets/less/vendor/bootstrap/buttons.less b/app/assets/less/vendor/bootstrap/buttons.less new file mode 100644 index 0000000..9cbb8f4 --- /dev/null +++ b/app/assets/less/vendor/bootstrap/buttons.less @@ -0,0 +1,166 @@ +// +// Buttons +// -------------------------------------------------- + + +// Base styles +// -------------------------------------------------- + +.btn { + display: inline-block; + margin-bottom: 0; // For input.btn + font-weight: @btn-font-weight; + text-align: center; + vertical-align: middle; + touch-action: manipulation; + cursor: pointer; + background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214 + border: 1px solid transparent; + white-space: nowrap; + .button-size(@padding-base-vertical; @padding-base-horizontal; @font-size-base; @line-height-base; @btn-border-radius-base); + .user-select(none); + + &, + &:active, + &.active { + &:focus, + &.focus { + .tab-focus(); + } + } + + &:hover, + &:focus, + &.focus { + color: @btn-default-color; + text-decoration: none; + } + + &:active, + &.active { + outline: 0; + background-image: none; + .box-shadow(inset 0 3px 5px rgba(0,0,0,.125)); + } + + &.disabled, + &[disabled], + fieldset[disabled] & { + cursor: @cursor-disabled; + .opacity(.65); + .box-shadow(none); + } + + a& { + &.disabled, + fieldset[disabled] & { + pointer-events: none; // Future-proof disabling of clicks on `` elements + } + } +} + + +// Alternate buttons +// -------------------------------------------------- + +.btn-default { + .button-variant(@btn-default-color; @btn-default-bg; @btn-default-border); +} +.btn-primary { + .button-variant(@btn-primary-color; @btn-primary-bg; @btn-primary-border); +} +// Success appears as green +.btn-success { + .button-variant(@btn-success-color; @btn-success-bg; @btn-success-border); +} +// Info appears as blue-green +.btn-info { + .button-variant(@btn-info-color; @btn-info-bg; @btn-info-border); +} +// Warning appears as orange +.btn-warning { + .button-variant(@btn-warning-color; @btn-warning-bg; @btn-warning-border); +} +// Danger and error appear as red +.btn-danger { + .button-variant(@btn-danger-color; @btn-danger-bg; @btn-danger-border); +} + + +// Link buttons +// ------------------------- + +// Make a button look and behave like a link +.btn-link { + color: @link-color; + font-weight: normal; + border-radius: 0; + + &, + &:active, + &.active, + &[disabled], + fieldset[disabled] & { + background-color: transparent; + .box-shadow(none); + } + &, + &:hover, + &:focus, + &:active { + border-color: transparent; + } + &:hover, + &:focus { + color: @link-hover-color; + text-decoration: @link-hover-decoration; + background-color: transparent; + } + &[disabled], + fieldset[disabled] & { + &:hover, + &:focus { + color: @btn-link-disabled-color; + text-decoration: none; + } + } +} + + +// Button Sizes +// -------------------------------------------------- + +.btn-lg { + // line-height: ensure even-numbered height of button next to large input + .button-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @btn-border-radius-large); +} +.btn-sm { + // line-height: ensure proper height of button next to small input + .button-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small); +} +.btn-xs { + .button-size(@padding-xs-vertical; @padding-xs-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small); +} + + +// Block button +// -------------------------------------------------- + +.btn-block { + display: block; + width: 100%; +} + +// Vertically space out multiple block buttons +.btn-block + .btn-block { + margin-top: 5px; +} + +// Specificity overrides +input[type="submit"], +input[type="reset"], +input[type="button"] { + &.btn-block { + width: 100%; + } +} diff --git a/app/assets/less/vendor/bootstrap/carousel.less b/app/assets/less/vendor/bootstrap/carousel.less new file mode 100644 index 0000000..252011e --- /dev/null +++ b/app/assets/less/vendor/bootstrap/carousel.less @@ -0,0 +1,270 @@ +// +// Carousel +// -------------------------------------------------- + + +// Wrapper for the slide container and indicators +.carousel { + position: relative; +} + +.carousel-inner { + position: relative; + overflow: hidden; + width: 100%; + + > .item { + display: none; + position: relative; + .transition(.6s ease-in-out left); + + // Account for jankitude on images + > img, + > a > img { + &:extend(.img-responsive); + line-height: 1; + } + + // WebKit CSS3 transforms for supported devices + @media all and (transform-3d), (-webkit-transform-3d) { + .transition-transform(~'0.6s ease-in-out'); + .backface-visibility(~'hidden'); + .perspective(1000px); + + &.next, + &.active.right { + .translate3d(100%, 0, 0); + left: 0; + } + &.prev, + &.active.left { + .translate3d(-100%, 0, 0); + left: 0; + } + &.next.left, + &.prev.right, + &.active { + .translate3d(0, 0, 0); + left: 0; + } + } + } + + > .active, + > .next, + > .prev { + display: block; + } + + > .active { + left: 0; + } + + > .next, + > .prev { + position: absolute; + top: 0; + width: 100%; + } + + > .next { + left: 100%; + } + > .prev { + left: -100%; + } + > .next.left, + > .prev.right { + left: 0; + } + + > .active.left { + left: -100%; + } + > .active.right { + left: 100%; + } + +} + +// Left/right controls for nav +// --------------------------- + +.carousel-control { + position: absolute; + top: 0; + left: 0; + bottom: 0; + width: @carousel-control-width; + .opacity(@carousel-control-opacity); + font-size: @carousel-control-font-size; + color: @carousel-control-color; + text-align: center; + text-shadow: @carousel-text-shadow; + background-color: rgba(0, 0, 0, 0); // Fix IE9 click-thru bug + // We can't have this transition here because WebKit cancels the carousel + // animation if you trip this while in the middle of another animation. + + // Set gradients for backgrounds + &.left { + #gradient > .horizontal(@start-color: rgba(0,0,0,.5); @end-color: rgba(0,0,0,.0001)); + } + &.right { + left: auto; + right: 0; + #gradient > .horizontal(@start-color: rgba(0,0,0,.0001); @end-color: rgba(0,0,0,.5)); + } + + // Hover/focus state + &:hover, + &:focus { + outline: 0; + color: @carousel-control-color; + text-decoration: none; + .opacity(.9); + } + + // Toggles + .icon-prev, + .icon-next, + .glyphicon-chevron-left, + .glyphicon-chevron-right { + position: absolute; + top: 50%; + margin-top: -10px; + z-index: 5; + display: inline-block; + } + .icon-prev, + .glyphicon-chevron-left { + left: 50%; + margin-left: -10px; + } + .icon-next, + .glyphicon-chevron-right { + right: 50%; + margin-right: -10px; + } + .icon-prev, + .icon-next { + width: 20px; + height: 20px; + line-height: 1; + font-family: serif; + } + + + .icon-prev { + &:before { + content: '\2039';// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039) + } + } + .icon-next { + &:before { + content: '\203a';// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A) + } + } +} + +// Optional indicator pips +// +// Add an unordered list with the following class and add a list item for each +// slide your carousel holds. + +.carousel-indicators { + position: absolute; + bottom: 10px; + left: 50%; + z-index: 15; + width: 60%; + margin-left: -30%; + padding-left: 0; + list-style: none; + text-align: center; + + li { + display: inline-block; + width: 10px; + height: 10px; + margin: 1px; + text-indent: -999px; + border: 1px solid @carousel-indicator-border-color; + border-radius: 10px; + cursor: pointer; + + // IE8-9 hack for event handling + // + // Internet Explorer 8-9 does not support clicks on elements without a set + // `background-color`. We cannot use `filter` since that's not viewed as a + // background color by the browser. Thus, a hack is needed. + // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Internet_Explorer + // + // For IE8, we set solid black as it doesn't support `rgba()`. For IE9, we + // set alpha transparency for the best results possible. + background-color: #000 \9; // IE8 + background-color: rgba(0,0,0,0); // IE9 + } + .active { + margin: 0; + width: 12px; + height: 12px; + background-color: @carousel-indicator-active-bg; + } +} + +// Optional captions +// ----------------------------- +// Hidden by default for smaller viewports +.carousel-caption { + position: absolute; + left: 15%; + right: 15%; + bottom: 20px; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: @carousel-caption-color; + text-align: center; + text-shadow: @carousel-text-shadow; + & .btn { + text-shadow: none; // No shadow for button elements in carousel-caption + } +} + + +// Scale up controls for tablets and up +@media screen and (min-width: @screen-sm-min) { + + // Scale up the controls a smidge + .carousel-control { + .glyphicon-chevron-left, + .glyphicon-chevron-right, + .icon-prev, + .icon-next { + width: (@carousel-control-font-size * 1.5); + height: (@carousel-control-font-size * 1.5); + margin-top: (@carousel-control-font-size / -2); + font-size: (@carousel-control-font-size * 1.5); + } + .glyphicon-chevron-left, + .icon-prev { + margin-left: (@carousel-control-font-size / -2); + } + .glyphicon-chevron-right, + .icon-next { + margin-right: (@carousel-control-font-size / -2); + } + } + + // Show and left align the captions + .carousel-caption { + left: 20%; + right: 20%; + padding-bottom: 30px; + } + + // Move up the indicators + .carousel-indicators { + bottom: 20px; + } +} diff --git a/app/assets/less/vendor/bootstrap/close.less b/app/assets/less/vendor/bootstrap/close.less new file mode 100644 index 0000000..6d5bfe0 --- /dev/null +++ b/app/assets/less/vendor/bootstrap/close.less @@ -0,0 +1,34 @@ +// +// Close icons +// -------------------------------------------------- + + +.close { + float: right; + font-size: (@font-size-base * 1.5); + font-weight: @close-font-weight; + line-height: 1; + color: @close-color; + text-shadow: @close-text-shadow; + .opacity(.2); + + &:hover, + &:focus { + color: @close-color; + text-decoration: none; + cursor: pointer; + .opacity(.5); + } + + // Additional properties for button version + // iOS requires the button element instead of an anchor tag. + // If you want the anchor version, it requires `href="#"`. + // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile + button& { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; + } +} diff --git a/app/assets/less/vendor/bootstrap/code.less b/app/assets/less/vendor/bootstrap/code.less new file mode 100644 index 0000000..a08b4d4 --- /dev/null +++ b/app/assets/less/vendor/bootstrap/code.less @@ -0,0 +1,69 @@ +// +// Code (inline and block) +// -------------------------------------------------- + + +// Inline and block code styles +code, +kbd, +pre, +samp { + font-family: @font-family-monospace; +} + +// Inline code +code { + padding: 2px 4px; + font-size: 90%; + color: @code-color; + background-color: @code-bg; + border-radius: @border-radius-base; +} + +// User input typically entered via keyboard +kbd { + padding: 2px 4px; + font-size: 90%; + color: @kbd-color; + background-color: @kbd-bg; + border-radius: @border-radius-small; + box-shadow: inset 0 -1px 0 rgba(0,0,0,.25); + + kbd { + padding: 0; + font-size: 100%; + font-weight: bold; + box-shadow: none; + } +} + +// Blocks of code +pre { + display: block; + padding: ((@line-height-computed - 1) / 2); + margin: 0 0 (@line-height-computed / 2); + font-size: (@font-size-base - 1); // 14px to 13px + line-height: @line-height-base; + word-break: break-all; + word-wrap: break-word; + color: @pre-color; + background-color: @pre-bg; + border: 1px solid @pre-border-color; + border-radius: @border-radius-base; + + // Account for some code outputs that place code tags in pre tags + code { + padding: 0; + font-size: inherit; + color: inherit; + white-space: pre-wrap; + background-color: transparent; + border-radius: 0; + } +} + +// Enable scrollable blocks of code +.pre-scrollable { + max-height: @pre-scrollable-max-height; + overflow-y: scroll; +} diff --git a/app/assets/less/vendor/bootstrap/component-animations.less b/app/assets/less/vendor/bootstrap/component-animations.less new file mode 100644 index 0000000..0bcee91 --- /dev/null +++ b/app/assets/less/vendor/bootstrap/component-animations.less @@ -0,0 +1,33 @@ +// +// Component animations +// -------------------------------------------------- + +// Heads up! +// +// We don't use the `.opacity()` mixin here since it causes a bug with text +// fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552. + +.fade { + opacity: 0; + .transition(opacity .15s linear); + &.in { + opacity: 1; + } +} + +.collapse { + display: none; + + &.in { display: block; } + tr&.in { display: table-row; } + tbody&.in { display: table-row-group; } +} + +.collapsing { + position: relative; + height: 0; + overflow: hidden; + .transition-property(~"height, visibility"); + .transition-duration(.35s); + .transition-timing-function(ease); +} diff --git a/app/assets/less/vendor/bootstrap/dropdowns.less b/app/assets/less/vendor/bootstrap/dropdowns.less new file mode 100644 index 0000000..f6876c1 --- /dev/null +++ b/app/assets/less/vendor/bootstrap/dropdowns.less @@ -0,0 +1,216 @@ +// +// Dropdown menus +// -------------------------------------------------- + + +// Dropdown arrow/caret +.caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 2px; + vertical-align: middle; + border-top: @caret-width-base dashed; + border-top: @caret-width-base solid ~"\9"; // IE8 + border-right: @caret-width-base solid transparent; + border-left: @caret-width-base solid transparent; +} + +// The dropdown wrapper (div) +.dropup, +.dropdown { + position: relative; +} + +// Prevent the focus on the dropdown toggle when closing dropdowns +.dropdown-toggle:focus { + outline: 0; +} + +// The dropdown menu (ul) +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: @zindex-dropdown; + display: none; // none by default, but block on "open" of the menu + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; // override default ul + list-style: none; + font-size: @font-size-base; + text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer) + background-color: @dropdown-bg; + border: 1px solid @dropdown-fallback-border; // IE8 fallback + border: 1px solid @dropdown-border; + border-radius: @border-radius-base; + .box-shadow(0 6px 12px rgba(0,0,0,.175)); + background-clip: padding-box; + + // Aligns the dropdown menu to right + // + // Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]` + &.pull-right { + right: 0; + left: auto; + } + + // Dividers (basically an hr) within the dropdown + .divider { + .nav-divider(@dropdown-divider-bg); + } + + // Links within the dropdown menu + > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: @line-height-base; + color: @dropdown-link-color; + white-space: nowrap; // prevent links from randomly breaking onto new lines + } +} + +// Hover/Focus state +.dropdown-menu > li > a { + &:hover, + &:focus { + text-decoration: none; + color: @dropdown-link-hover-color; + background-color: @dropdown-link-hover-bg; + } +} + +// Active state +.dropdown-menu > .active > a { + &, + &:hover, + &:focus { + color: @dropdown-link-active-color; + text-decoration: none; + outline: 0; + background-color: @dropdown-link-active-bg; + } +} + +// Disabled state +// +// Gray out text and ensure the hover/focus state remains gray + +.dropdown-menu > .disabled > a { + &, + &:hover, + &:focus { + color: @dropdown-link-disabled-color; + } + + // Nuke hover/focus effects + &:hover, + &:focus { + text-decoration: none; + background-color: transparent; + background-image: none; // Remove CSS gradient + .reset-filter(); + cursor: @cursor-disabled; + } +} + +// Open state for the dropdown +.open { + // Show the menu + > .dropdown-menu { + display: block; + } + + // Remove the outline when :focus is triggered + > a { + outline: 0; + } +} + +// Menu positioning +// +// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown +// menu with the parent. +.dropdown-menu-right { + left: auto; // Reset the default from `.dropdown-menu` + right: 0; +} +// With v3, we enabled auto-flipping if you have a dropdown within a right +// aligned nav component. To enable the undoing of that, we provide an override +// to restore the default dropdown menu alignment. +// +// This is only for left-aligning a dropdown menu within a `.navbar-right` or +// `.pull-right` nav component. +.dropdown-menu-left { + left: 0; + right: auto; +} + +// Dropdown section headers +.dropdown-header { + display: block; + padding: 3px 20px; + font-size: @font-size-small; + line-height: @line-height-base; + color: @dropdown-header-color; + white-space: nowrap; // as with > li > a +} + +// Backdrop to catch body clicks on mobile, etc. +.dropdown-backdrop { + position: fixed; + left: 0; + right: 0; + bottom: 0; + top: 0; + z-index: (@zindex-dropdown - 10); +} + +// Right aligned dropdowns +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} + +// Allow for dropdowns to go bottom up (aka, dropup-menu) +// +// Just add .dropup after the standard .dropdown class and you're set, bro. +// TODO: abstract this so that the navbar fixed styles are not placed here? + +.dropup, +.navbar-fixed-bottom .dropdown { + // Reverse the caret + .caret { + border-top: 0; + border-bottom: @caret-width-base dashed; + border-bottom: @caret-width-base solid ~"\9"; // IE8 + content: ""; + } + // Different positioning for bottom up menu + .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 2px; + } +} + + +// Component alignment +// +// Reiterate per navbar.less and the modified component alignment there. + +@media (min-width: @grid-float-breakpoint) { + .navbar-right { + .dropdown-menu { + .dropdown-menu-right(); + } + // Necessary for overrides of the default right aligned menu. + // Will remove come v4 in all likelihood. + .dropdown-menu-left { + .dropdown-menu-left(); + } + } +} diff --git a/app/assets/less/vendor/bootstrap/forms.less b/app/assets/less/vendor/bootstrap/forms.less new file mode 100644 index 0000000..e8b071a --- /dev/null +++ b/app/assets/less/vendor/bootstrap/forms.less @@ -0,0 +1,613 @@ +// +// Forms +// -------------------------------------------------- + + +// Normalize non-controls +// +// Restyle and baseline non-control form elements. + +fieldset { + padding: 0; + margin: 0; + border: 0; + // Chrome and Firefox set a `min-width: min-content;` on fieldsets, + // so we reset that to ensure it behaves more like a standard block element. + // See https://github.com/twbs/bootstrap/issues/12359. + min-width: 0; +} + +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: @line-height-computed; + font-size: (@font-size-base * 1.5); + line-height: inherit; + color: @legend-color; + border: 0; + border-bottom: 1px solid @legend-border-color; +} + +label { + display: inline-block; + max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141) + margin-bottom: 5px; + font-weight: bold; +} + + +// Normalize form controls +// +// While most of our form styles require extra classes, some basic normalization +// is required to ensure optimum display with or without those classes to better +// address browser inconsistencies. + +// Override content-box in Normalize (* isn't specific enough) +input[type="search"] { + .box-sizing(border-box); +} + +// Position radios and checkboxes better +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; // IE8-9 + line-height: normal; +} + +input[type="file"] { + display: block; +} + +// Make range inputs behave like textual form controls +input[type="range"] { + display: block; + width: 100%; +} + +// Make multiple select elements height not fixed +select[multiple], +select[size] { + height: auto; +} + +// Focus for file, radio, and checkbox +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + .tab-focus(); +} + +// Adjust output element +output { + display: block; + padding-top: (@padding-base-vertical + 1); + font-size: @font-size-base; + line-height: @line-height-base; + color: @input-color; +} + + +// Common form controls +// +// Shared size and type resets for form controls. Apply `.form-control` to any +// of the following form controls: +// +// select +// textarea +// input[type="text"] +// input[type="password"] +// input[type="datetime"] +// input[type="datetime-local"] +// input[type="date"] +// input[type="month"] +// input[type="time"] +// input[type="week"] +// input[type="number"] +// input[type="email"] +// input[type="url"] +// input[type="search"] +// input[type="tel"] +// input[type="color"] + +.form-control { + display: block; + width: 100%; + height: @input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border) + padding: @padding-base-vertical @padding-base-horizontal; + font-size: @font-size-base; + line-height: @line-height-base; + color: @input-color; + background-color: @input-bg; + background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214 + border: 1px solid @input-border; + border-radius: @input-border-radius; // Note: This has no effect on s in CSS. + .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); + .transition(~"border-color ease-in-out .15s, box-shadow ease-in-out .15s"); + + // Customize the `:focus` state to imitate native WebKit styles. + .form-control-focus(); + + // Placeholder + .placeholder(); + + // Unstyle the caret on `` +// element gets special love because it's special, and that's a fact! +.input-size(@input-height; @padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) { + height: @input-height; + padding: @padding-vertical @padding-horizontal; + font-size: @font-size; + line-height: @line-height; + border-radius: @border-radius; + + select& { + height: @input-height; + line-height: @input-height; + } + + textarea&, + select[multiple]& { + height: auto; + } +} diff --git a/app/assets/less/vendor/bootstrap/mixins/gradients.less b/app/assets/less/vendor/bootstrap/mixins/gradients.less new file mode 100644 index 0000000..0b88a89 --- /dev/null +++ b/app/assets/less/vendor/bootstrap/mixins/gradients.less @@ -0,0 +1,59 @@ +// Gradients + +#gradient { + + // Horizontal gradient, from left to right + // + // Creates two color stops, start and end, by specifying a color and position for each color stop. + // Color stops are not available in IE9 and below. + .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) { + background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+ + background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12 + background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+ + background-repeat: repeat-x; + filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)",argb(@start-color),argb(@end-color))); // IE9 and down + } + + // Vertical gradient, from top to bottom + // + // Creates two color stops, start and end, by specifying a color and position for each color stop. + // Color stops are not available in IE9 and below. + .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) { + background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+ + background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12 + background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+ + background-repeat: repeat-x; + filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@start-color),argb(@end-color))); // IE9 and down + } + + .directional(@start-color: #555; @end-color: #333; @deg: 45deg) { + background-repeat: repeat-x; + background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+ + background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12 + background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+ + } + .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) { + background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color); + background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color); + background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color); + background-repeat: no-repeat; + filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback + } + .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) { + background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color); + background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color); + background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color); + background-repeat: no-repeat; + filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback + } + .radial(@inner-color: #555; @outer-color: #333) { + background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color); + background-image: radial-gradient(circle, @inner-color, @outer-color); + background-repeat: no-repeat; + } + .striped(@color: rgba(255,255,255,.15); @angle: 45deg) { + background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent); + background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent); + } +} diff --git a/app/assets/less/vendor/bootstrap/mixins/grid-framework.less b/app/assets/less/vendor/bootstrap/mixins/grid-framework.less new file mode 100644 index 0000000..8c23eed --- /dev/null +++ b/app/assets/less/vendor/bootstrap/mixins/grid-framework.less @@ -0,0 +1,91 @@ +// Framework grid generation +// +// Used only by Bootstrap to generate the correct number of grid classes given +// any value of `@grid-columns`. + +.make-grid-columns() { + // Common styles for all sizes of grid columns, widths 1-12 + .col(@index) { // initial + @item: ~".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}"; + .col((@index + 1), @item); + } + .col(@index, @list) when (@index =< @grid-columns) { // general; "=<" isn't a typo + @item: ~".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}"; + .col((@index + 1), ~"@{list}, @{item}"); + } + .col(@index, @list) when (@index > @grid-columns) { // terminal + @{list} { + position: relative; + // Prevent columns from collapsing when empty + min-height: 1px; + // Inner gutter via padding + padding-left: ceil((@grid-gutter-width / 2)); + padding-right: floor((@grid-gutter-width / 2)); + } + } + .col(1); // kickstart it +} + +.float-grid-columns(@class) { + .col(@index) { // initial + @item: ~".col-@{class}-@{index}"; + .col((@index + 1), @item); + } + .col(@index, @list) when (@index =< @grid-columns) { // general + @item: ~".col-@{class}-@{index}"; + .col((@index + 1), ~"@{list}, @{item}"); + } + .col(@index, @list) when (@index > @grid-columns) { // terminal + @{list} { + float: left; + } + } + .col(1); // kickstart it +} + +.calc-grid-column(@index, @class, @type) when (@type = width) and (@index > 0) { + .col-@{class}-@{index} { + width: percentage((@index / @grid-columns)); + } +} +.calc-grid-column(@index, @class, @type) when (@type = push) and (@index > 0) { + .col-@{class}-push-@{index} { + left: percentage((@index / @grid-columns)); + } +} +.calc-grid-column(@index, @class, @type) when (@type = push) and (@index = 0) { + .col-@{class}-push-0 { + left: auto; + } +} +.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index > 0) { + .col-@{class}-pull-@{index} { + right: percentage((@index / @grid-columns)); + } +} +.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index = 0) { + .col-@{class}-pull-0 { + right: auto; + } +} +.calc-grid-column(@index, @class, @type) when (@type = offset) { + .col-@{class}-offset-@{index} { + margin-left: percentage((@index / @grid-columns)); + } +} + +// Basic looping in LESS +.loop-grid-columns(@index, @class, @type) when (@index >= 0) { + .calc-grid-column(@index, @class, @type); + // next iteration + .loop-grid-columns((@index - 1), @class, @type); +} + +// Create grid for specific class +.make-grid(@class) { + .float-grid-columns(@class); + .loop-grid-columns(@grid-columns, @class, width); + .loop-grid-columns(@grid-columns, @class, pull); + .loop-grid-columns(@grid-columns, @class, push); + .loop-grid-columns(@grid-columns, @class, offset); +} diff --git a/app/assets/less/vendor/bootstrap/mixins/grid.less b/app/assets/less/vendor/bootstrap/mixins/grid.less new file mode 100644 index 0000000..df496d0 --- /dev/null +++ b/app/assets/less/vendor/bootstrap/mixins/grid.less @@ -0,0 +1,122 @@ +// Grid system +// +// Generate semantic grid columns with these mixins. + +// Centered container element +.container-fixed(@gutter: @grid-gutter-width) { + margin-right: auto; + margin-left: auto; + padding-left: floor((@gutter / 2)); + padding-right: ceil((@gutter / 2)); + &:extend(.clearfix all); +} + +// Creates a wrapper for a series of columns +.make-row(@gutter: @grid-gutter-width) { + margin-left: ceil((@gutter / -2)); + margin-right: floor((@gutter / -2)); + &:extend(.clearfix all); +} + +// Generate the extra small columns +.make-xs-column(@columns; @gutter: @grid-gutter-width) { + position: relative; + float: left; + width: percentage((@columns / @grid-columns)); + min-height: 1px; + padding-left: (@gutter / 2); + padding-right: (@gutter / 2); +} +.make-xs-column-offset(@columns) { + margin-left: percentage((@columns / @grid-columns)); +} +.make-xs-column-push(@columns) { + left: percentage((@columns / @grid-columns)); +} +.make-xs-column-pull(@columns) { + right: percentage((@columns / @grid-columns)); +} + +// Generate the small columns +.make-sm-column(@columns; @gutter: @grid-gutter-width) { + position: relative; + min-height: 1px; + padding-left: (@gutter / 2); + padding-right: (@gutter / 2); + + @media (min-width: @screen-sm-min) { + float: left; + width: percentage((@columns / @grid-columns)); + } +} +.make-sm-column-offset(@columns) { + @media (min-width: @screen-sm-min) { + margin-left: percentage((@columns / @grid-columns)); + } +} +.make-sm-column-push(@columns) { + @media (min-width: @screen-sm-min) { + left: percentage((@columns / @grid-columns)); + } +} +.make-sm-column-pull(@columns) { + @media (min-width: @screen-sm-min) { + right: percentage((@columns / @grid-columns)); + } +} + +// Generate the medium columns +.make-md-column(@columns; @gutter: @grid-gutter-width) { + position: relative; + min-height: 1px; + padding-left: (@gutter / 2); + padding-right: (@gutter / 2); + + @media (min-width: @screen-md-min) { + float: left; + width: percentage((@columns / @grid-columns)); + } +} +.make-md-column-offset(@columns) { + @media (min-width: @screen-md-min) { + margin-left: percentage((@columns / @grid-columns)); + } +} +.make-md-column-push(@columns) { + @media (min-width: @screen-md-min) { + left: percentage((@columns / @grid-columns)); + } +} +.make-md-column-pull(@columns) { + @media (min-width: @screen-md-min) { + right: percentage((@columns / @grid-columns)); + } +} + +// Generate the large columns +.make-lg-column(@columns; @gutter: @grid-gutter-width) { + position: relative; + min-height: 1px; + padding-left: (@gutter / 2); + padding-right: (@gutter / 2); + + @media (min-width: @screen-lg-min) { + float: left; + width: percentage((@columns / @grid-columns)); + } +} +.make-lg-column-offset(@columns) { + @media (min-width: @screen-lg-min) { + margin-left: percentage((@columns / @grid-columns)); + } +} +.make-lg-column-push(@columns) { + @media (min-width: @screen-lg-min) { + left: percentage((@columns / @grid-columns)); + } +} +.make-lg-column-pull(@columns) { + @media (min-width: @screen-lg-min) { + right: percentage((@columns / @grid-columns)); + } +} diff --git a/app/assets/less/vendor/bootstrap/mixins/hide-text.less b/app/assets/less/vendor/bootstrap/mixins/hide-text.less new file mode 100644 index 0000000..2bb84a3 --- /dev/null +++ b/app/assets/less/vendor/bootstrap/mixins/hide-text.less @@ -0,0 +1,21 @@ +// CSS image replacement +// +// Heads up! v3 launched with only `.hide-text()`, but per our pattern for +// mixins being reused as classes with the same name, this doesn't hold up. As +// of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`. +// +// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 + +// Deprecated as of v3.0.1 (has been removed in v4) +.hide-text() { + font: ~"0/0" a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} + +// New mixin to use as of v3.0.1 +.text-hide() { + .hide-text(); +} diff --git a/app/assets/less/vendor/bootstrap/mixins/image.less b/app/assets/less/vendor/bootstrap/mixins/image.less new file mode 100644 index 0000000..f233cb3 --- /dev/null +++ b/app/assets/less/vendor/bootstrap/mixins/image.less @@ -0,0 +1,33 @@ +// Image Mixins +// - Responsive image +// - Retina image + + +// Responsive image +// +// Keep images from scaling beyond the width of their parents. +.img-responsive(@display: block) { + display: @display; + max-width: 100%; // Part 1: Set a maximum relative to the parent + height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching +} + + +// Retina image +// +// Short retina mixin for setting background-image and -size. Note that the +// spelling of `min--moz-device-pixel-ratio` is intentional. +.img-retina(@file-1x; @file-2x; @width-1x; @height-1x) { + background-image: url("@{file-1x}"); + + @media + only screen and (-webkit-min-device-pixel-ratio: 2), + only screen and ( min--moz-device-pixel-ratio: 2), + only screen and ( -o-min-device-pixel-ratio: 2/1), + only screen and ( min-device-pixel-ratio: 2), + only screen and ( min-resolution: 192dpi), + only screen and ( min-resolution: 2dppx) { + background-image: url("@{file-2x}"); + background-size: @width-1x @height-1x; + } +} diff --git a/app/assets/less/vendor/bootstrap/mixins/labels.less b/app/assets/less/vendor/bootstrap/mixins/labels.less new file mode 100644 index 0000000..9f7a67e --- /dev/null +++ b/app/assets/less/vendor/bootstrap/mixins/labels.less @@ -0,0 +1,12 @@ +// Labels + +.label-variant(@color) { + background-color: @color; + + &[href] { + &:hover, + &:focus { + background-color: darken(@color, 10%); + } + } +} diff --git a/app/assets/less/vendor/bootstrap/mixins/list-group.less b/app/assets/less/vendor/bootstrap/mixins/list-group.less new file mode 100644 index 0000000..03aa190 --- /dev/null +++ b/app/assets/less/vendor/bootstrap/mixins/list-group.less @@ -0,0 +1,30 @@ +// List Groups + +.list-group-item-variant(@state; @background; @color) { + .list-group-item-@{state} { + color: @color; + background-color: @background; + + a&, + button& { + color: @color; + + .list-group-item-heading { + color: inherit; + } + + &:hover, + &:focus { + color: @color; + background-color: darken(@background, 5%); + } + &.active, + &.active:hover, + &.active:focus { + color: #fff; + background-color: @color; + border-color: @color; + } + } + } +} diff --git a/app/assets/less/vendor/bootstrap/mixins/nav-divider.less b/app/assets/less/vendor/bootstrap/mixins/nav-divider.less new file mode 100644 index 0000000..feb1e9e --- /dev/null +++ b/app/assets/less/vendor/bootstrap/mixins/nav-divider.less @@ -0,0 +1,10 @@ +// Horizontal dividers +// +// Dividers (basically an hr) within dropdowns and nav lists + +.nav-divider(@color: #e5e5e5) { + height: 1px; + margin: ((@line-height-computed / 2) - 1) 0; + overflow: hidden; + background-color: @color; +} diff --git a/app/assets/less/vendor/bootstrap/mixins/nav-vertical-align.less b/app/assets/less/vendor/bootstrap/mixins/nav-vertical-align.less new file mode 100644 index 0000000..d458c78 --- /dev/null +++ b/app/assets/less/vendor/bootstrap/mixins/nav-vertical-align.less @@ -0,0 +1,9 @@ +// Navbar vertical align +// +// Vertically center elements in the navbar. +// Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin. + +.navbar-vertical-align(@element-height) { + margin-top: ((@navbar-height - @element-height) / 2); + margin-bottom: ((@navbar-height - @element-height) / 2); +} diff --git a/app/assets/less/vendor/bootstrap/mixins/opacity.less b/app/assets/less/vendor/bootstrap/mixins/opacity.less new file mode 100644 index 0000000..33ed25c --- /dev/null +++ b/app/assets/less/vendor/bootstrap/mixins/opacity.less @@ -0,0 +1,8 @@ +// Opacity + +.opacity(@opacity) { + opacity: @opacity; + // IE8 filter + @opacity-ie: (@opacity * 100); + filter: ~"alpha(opacity=@{opacity-ie})"; +} diff --git a/app/assets/less/vendor/bootstrap/mixins/pagination.less b/app/assets/less/vendor/bootstrap/mixins/pagination.less new file mode 100644 index 0000000..618804f --- /dev/null +++ b/app/assets/less/vendor/bootstrap/mixins/pagination.less @@ -0,0 +1,24 @@ +// Pagination + +.pagination-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) { + > li { + > a, + > span { + padding: @padding-vertical @padding-horizontal; + font-size: @font-size; + line-height: @line-height; + } + &:first-child { + > a, + > span { + .border-left-radius(@border-radius); + } + } + &:last-child { + > a, + > span { + .border-right-radius(@border-radius); + } + } + } +} diff --git a/app/assets/less/vendor/bootstrap/mixins/panels.less b/app/assets/less/vendor/bootstrap/mixins/panels.less new file mode 100644 index 0000000..49ee10d --- /dev/null +++ b/app/assets/less/vendor/bootstrap/mixins/panels.less @@ -0,0 +1,24 @@ +// Panels + +.panel-variant(@border; @heading-text-color; @heading-bg-color; @heading-border) { + border-color: @border; + + & > .panel-heading { + color: @heading-text-color; + background-color: @heading-bg-color; + border-color: @heading-border; + + + .panel-collapse > .panel-body { + border-top-color: @border; + } + .badge { + color: @heading-bg-color; + background-color: @heading-text-color; + } + } + & > .panel-footer { + + .panel-collapse > .panel-body { + border-bottom-color: @border; + } + } +} diff --git a/app/assets/less/vendor/bootstrap/mixins/progress-bar.less b/app/assets/less/vendor/bootstrap/mixins/progress-bar.less new file mode 100644 index 0000000..f07996a --- /dev/null +++ b/app/assets/less/vendor/bootstrap/mixins/progress-bar.less @@ -0,0 +1,10 @@ +// Progress bars + +.progress-bar-variant(@color) { + background-color: @color; + + // Deprecated parent class requirement as of v3.2.0 + .progress-striped & { + #gradient > .striped(); + } +} diff --git a/app/assets/less/vendor/bootstrap/mixins/reset-filter.less b/app/assets/less/vendor/bootstrap/mixins/reset-filter.less new file mode 100644 index 0000000..68cdb5e --- /dev/null +++ b/app/assets/less/vendor/bootstrap/mixins/reset-filter.less @@ -0,0 +1,8 @@ +// Reset filters for IE +// +// When you need to remove a gradient background, do not forget to use this to reset +// the IE filter for IE9 and below. + +.reset-filter() { + filter: e(%("progid:DXImageTransform.Microsoft.gradient(enabled = false)")); +} diff --git a/app/assets/less/vendor/bootstrap/mixins/reset-text.less b/app/assets/less/vendor/bootstrap/mixins/reset-text.less new file mode 100644 index 0000000..58dd4d1 --- /dev/null +++ b/app/assets/less/vendor/bootstrap/mixins/reset-text.less @@ -0,0 +1,18 @@ +.reset-text() { + font-family: @font-family-base; + // We deliberately do NOT reset font-size. + font-style: normal; + font-weight: normal; + letter-spacing: normal; + line-break: auto; + line-height: @line-height-base; + text-align: left; // Fallback for where `start` is not supported + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + white-space: normal; + word-break: normal; + word-spacing: normal; + word-wrap: normal; +} diff --git a/app/assets/less/vendor/bootstrap/mixins/resize.less b/app/assets/less/vendor/bootstrap/mixins/resize.less new file mode 100644 index 0000000..3acd3af --- /dev/null +++ b/app/assets/less/vendor/bootstrap/mixins/resize.less @@ -0,0 +1,6 @@ +// Resize anything + +.resizable(@direction) { + resize: @direction; // Options: horizontal, vertical, both + overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible` +} diff --git a/app/assets/less/vendor/bootstrap/mixins/responsive-visibility.less b/app/assets/less/vendor/bootstrap/mixins/responsive-visibility.less new file mode 100644 index 0000000..ecf1e97 --- /dev/null +++ b/app/assets/less/vendor/bootstrap/mixins/responsive-visibility.less @@ -0,0 +1,15 @@ +// Responsive utilities + +// +// More easily include all the states for responsive-utilities.less. +.responsive-visibility() { + display: block !important; + table& { display: table !important; } + tr& { display: table-row !important; } + th&, + td& { display: table-cell !important; } +} + +.responsive-invisibility() { + display: none !important; +} diff --git a/app/assets/less/vendor/bootstrap/mixins/size.less b/app/assets/less/vendor/bootstrap/mixins/size.less new file mode 100644 index 0000000..a8be650 --- /dev/null +++ b/app/assets/less/vendor/bootstrap/mixins/size.less @@ -0,0 +1,10 @@ +// Sizing shortcuts + +.size(@width; @height) { + width: @width; + height: @height; +} + +.square(@size) { + .size(@size; @size); +} diff --git a/app/assets/less/vendor/bootstrap/mixins/tab-focus.less b/app/assets/less/vendor/bootstrap/mixins/tab-focus.less new file mode 100644 index 0000000..1f1f05a --- /dev/null +++ b/app/assets/less/vendor/bootstrap/mixins/tab-focus.less @@ -0,0 +1,9 @@ +// WebKit-style focus + +.tab-focus() { + // Default + outline: thin dotted; + // WebKit + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} diff --git a/app/assets/less/vendor/bootstrap/mixins/table-row.less b/app/assets/less/vendor/bootstrap/mixins/table-row.less new file mode 100644 index 0000000..0f287f1 --- /dev/null +++ b/app/assets/less/vendor/bootstrap/mixins/table-row.less @@ -0,0 +1,28 @@ +// Tables + +.table-row-variant(@state; @background) { + // Exact selectors below required to override `.table-striped` and prevent + // inheritance to nested tables. + .table > thead > tr, + .table > tbody > tr, + .table > tfoot > tr { + > td.@{state}, + > th.@{state}, + &.@{state} > td, + &.@{state} > th { + background-color: @background; + } + } + + // Hover states for `.table-hover` + // Note: this is not available for cells or rows within `thead` or `tfoot`. + .table-hover > tbody > tr { + > td.@{state}:hover, + > th.@{state}:hover, + &.@{state}:hover > td, + &:hover > .@{state}, + &.@{state}:hover > th { + background-color: darken(@background, 5%); + } + } +} diff --git a/app/assets/less/vendor/bootstrap/mixins/text-emphasis.less b/app/assets/less/vendor/bootstrap/mixins/text-emphasis.less new file mode 100644 index 0000000..9e8a77a --- /dev/null +++ b/app/assets/less/vendor/bootstrap/mixins/text-emphasis.less @@ -0,0 +1,9 @@ +// Typography + +.text-emphasis-variant(@color) { + color: @color; + a&:hover, + a&:focus { + color: darken(@color, 10%); + } +} diff --git a/app/assets/less/vendor/bootstrap/mixins/text-overflow.less b/app/assets/less/vendor/bootstrap/mixins/text-overflow.less new file mode 100644 index 0000000..c11ad2f --- /dev/null +++ b/app/assets/less/vendor/bootstrap/mixins/text-overflow.less @@ -0,0 +1,8 @@ +// Text overflow +// Requires inline-block or block for proper styling + +.text-overflow() { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} diff --git a/app/assets/less/vendor/bootstrap/mixins/vendor-prefixes.less b/app/assets/less/vendor/bootstrap/mixins/vendor-prefixes.less new file mode 100644 index 0000000..2b5e74b --- /dev/null +++ b/app/assets/less/vendor/bootstrap/mixins/vendor-prefixes.less @@ -0,0 +1,227 @@ +// Vendor Prefixes +// +// All vendor mixins are deprecated as of v3.2.0 due to the introduction of +// Autoprefixer in our Gruntfile. They have been removed in v4. + +// - Animations +// - Backface visibility +// - Box shadow +// - Box sizing +// - Content columns +// - Hyphens +// - Placeholder text +// - Transformations +// - Transitions +// - User Select + + +// Animations +.animation(@animation) { + -webkit-animation: @animation; + -o-animation: @animation; + animation: @animation; +} +.animation-name(@name) { + -webkit-animation-name: @name; + animation-name: @name; +} +.animation-duration(@duration) { + -webkit-animation-duration: @duration; + animation-duration: @duration; +} +.animation-timing-function(@timing-function) { + -webkit-animation-timing-function: @timing-function; + animation-timing-function: @timing-function; +} +.animation-delay(@delay) { + -webkit-animation-delay: @delay; + animation-delay: @delay; +} +.animation-iteration-count(@iteration-count) { + -webkit-animation-iteration-count: @iteration-count; + animation-iteration-count: @iteration-count; +} +.animation-direction(@direction) { + -webkit-animation-direction: @direction; + animation-direction: @direction; +} +.animation-fill-mode(@fill-mode) { + -webkit-animation-fill-mode: @fill-mode; + animation-fill-mode: @fill-mode; +} + +// Backface visibility +// Prevent browsers from flickering when using CSS 3D transforms. +// Default value is `visible`, but can be changed to `hidden` + +.backface-visibility(@visibility) { + -webkit-backface-visibility: @visibility; + -moz-backface-visibility: @visibility; + backface-visibility: @visibility; +} + +// Drop shadows +// +// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's +// supported browsers that have box shadow capabilities now support it. + +.box-shadow(@shadow) { + -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1 + box-shadow: @shadow; +} + +// Box sizing +.box-sizing(@boxmodel) { + -webkit-box-sizing: @boxmodel; + -moz-box-sizing: @boxmodel; + box-sizing: @boxmodel; +} + +// CSS3 Content Columns +.content-columns(@column-count; @column-gap: @grid-gutter-width) { + -webkit-column-count: @column-count; + -moz-column-count: @column-count; + column-count: @column-count; + -webkit-column-gap: @column-gap; + -moz-column-gap: @column-gap; + column-gap: @column-gap; +} + +// Optional hyphenation +.hyphens(@mode: auto) { + word-wrap: break-word; + -webkit-hyphens: @mode; + -moz-hyphens: @mode; + -ms-hyphens: @mode; // IE10+ + -o-hyphens: @mode; + hyphens: @mode; +} + +// Placeholder text +.placeholder(@color: @input-color-placeholder) { + // Firefox + &::-moz-placeholder { + color: @color; + opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526 + } + &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+ + &::-webkit-input-placeholder { color: @color; } // Safari and Chrome +} + +// Transformations +.scale(@ratio) { + -webkit-transform: scale(@ratio); + -ms-transform: scale(@ratio); // IE9 only + -o-transform: scale(@ratio); + transform: scale(@ratio); +} +.scale(@ratioX; @ratioY) { + -webkit-transform: scale(@ratioX, @ratioY); + -ms-transform: scale(@ratioX, @ratioY); // IE9 only + -o-transform: scale(@ratioX, @ratioY); + transform: scale(@ratioX, @ratioY); +} +.scaleX(@ratio) { + -webkit-transform: scaleX(@ratio); + -ms-transform: scaleX(@ratio); // IE9 only + -o-transform: scaleX(@ratio); + transform: scaleX(@ratio); +} +.scaleY(@ratio) { + -webkit-transform: scaleY(@ratio); + -ms-transform: scaleY(@ratio); // IE9 only + -o-transform: scaleY(@ratio); + transform: scaleY(@ratio); +} +.skew(@x; @y) { + -webkit-transform: skewX(@x) skewY(@y); + -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+ + -o-transform: skewX(@x) skewY(@y); + transform: skewX(@x) skewY(@y); +} +.translate(@x; @y) { + -webkit-transform: translate(@x, @y); + -ms-transform: translate(@x, @y); // IE9 only + -o-transform: translate(@x, @y); + transform: translate(@x, @y); +} +.translate3d(@x; @y; @z) { + -webkit-transform: translate3d(@x, @y, @z); + transform: translate3d(@x, @y, @z); +} +.rotate(@degrees) { + -webkit-transform: rotate(@degrees); + -ms-transform: rotate(@degrees); // IE9 only + -o-transform: rotate(@degrees); + transform: rotate(@degrees); +} +.rotateX(@degrees) { + -webkit-transform: rotateX(@degrees); + -ms-transform: rotateX(@degrees); // IE9 only + -o-transform: rotateX(@degrees); + transform: rotateX(@degrees); +} +.rotateY(@degrees) { + -webkit-transform: rotateY(@degrees); + -ms-transform: rotateY(@degrees); // IE9 only + -o-transform: rotateY(@degrees); + transform: rotateY(@degrees); +} +.perspective(@perspective) { + -webkit-perspective: @perspective; + -moz-perspective: @perspective; + perspective: @perspective; +} +.perspective-origin(@perspective) { + -webkit-perspective-origin: @perspective; + -moz-perspective-origin: @perspective; + perspective-origin: @perspective; +} +.transform-origin(@origin) { + -webkit-transform-origin: @origin; + -moz-transform-origin: @origin; + -ms-transform-origin: @origin; // IE9 only + transform-origin: @origin; +} + + +// Transitions + +.transition(@transition) { + -webkit-transition: @transition; + -o-transition: @transition; + transition: @transition; +} +.transition-property(@transition-property) { + -webkit-transition-property: @transition-property; + transition-property: @transition-property; +} +.transition-delay(@transition-delay) { + -webkit-transition-delay: @transition-delay; + transition-delay: @transition-delay; +} +.transition-duration(@transition-duration) { + -webkit-transition-duration: @transition-duration; + transition-duration: @transition-duration; +} +.transition-timing-function(@timing-function) { + -webkit-transition-timing-function: @timing-function; + transition-timing-function: @timing-function; +} +.transition-transform(@transition) { + -webkit-transition: -webkit-transform @transition; + -moz-transition: -moz-transform @transition; + -o-transition: -o-transform @transition; + transition: transform @transition; +} + + +// User select +// For selecting text on the page + +.user-select(@select) { + -webkit-user-select: @select; + -moz-user-select: @select; + -ms-user-select: @select; // IE10+ + user-select: @select; +} diff --git a/app/assets/less/vendor/bootstrap/modals.less b/app/assets/less/vendor/bootstrap/modals.less new file mode 100644 index 0000000..767ce36 --- /dev/null +++ b/app/assets/less/vendor/bootstrap/modals.less @@ -0,0 +1,150 @@ +// +// Modals +// -------------------------------------------------- + +// .modal-open - body class for killing the scroll +// .modal - container to scroll within +// .modal-dialog - positioning shell for the actual modal +// .modal-content - actual modal w/ bg and corners and shit + +// Kill the scroll on the body +.modal-open { + overflow: hidden; +} + +// Container that the modal scrolls within +.modal { + display: none; + overflow: hidden; + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: @zindex-modal; + -webkit-overflow-scrolling: touch; + + // Prevent Chrome on Windows from adding a focus outline. For details, see + // https://github.com/twbs/bootstrap/pull/10951. + outline: 0; + + // When fading in the modal, animate it to slide down + &.fade .modal-dialog { + .translate(0, -25%); + .transition-transform(~"0.3s ease-out"); + } + &.in .modal-dialog { .translate(0, 0) } +} +.modal-open .modal { + overflow-x: hidden; + overflow-y: auto; +} + +// Shell div to position the modal with bottom padding +.modal-dialog { + position: relative; + width: auto; + margin: 10px; +} + +// Actual modal +.modal-content { + position: relative; + background-color: @modal-content-bg; + border: 1px solid @modal-content-fallback-border-color; //old browsers fallback (ie8 etc) + border: 1px solid @modal-content-border-color; + border-radius: @border-radius-large; + .box-shadow(0 3px 9px rgba(0,0,0,.5)); + background-clip: padding-box; + // Remove focus outline from opened modal + outline: 0; +} + +// Modal background +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: @zindex-modal-background; + background-color: @modal-backdrop-bg; + // Fade for backdrop + &.fade { .opacity(0); } + &.in { .opacity(@modal-backdrop-opacity); } +} + +// Modal header +// Top section of the modal w/ title and dismiss +.modal-header { + padding: @modal-title-padding; + border-bottom: 1px solid @modal-header-border-color; + &:extend(.clearfix all); +} +// Close icon +.modal-header .close { + margin-top: -2px; +} + +// Title text within header +.modal-title { + margin: 0; + line-height: @modal-title-line-height; +} + +// Modal body +// Where all modal content resides (sibling of .modal-header and .modal-footer) +.modal-body { + position: relative; + padding: @modal-inner-padding; +} + +// Footer (for actions) +.modal-footer { + padding: @modal-inner-padding; + text-align: right; // right align buttons + border-top: 1px solid @modal-footer-border-color; + &:extend(.clearfix all); // clear it in case folks use .pull-* classes on buttons + + // Properly space out buttons + .btn + .btn { + margin-left: 5px; + margin-bottom: 0; // account for input[type="submit"] which gets the bottom margin like all other inputs + } + // but override that for button groups + .btn-group .btn + .btn { + margin-left: -1px; + } + // and override it for block buttons as well + .btn-block + .btn-block { + margin-left: 0; + } +} + +// Measure scrollbar width for padding body during modal show/hide +.modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll; +} + +// Scale up the modal +@media (min-width: @screen-sm-min) { + // Automatically set modal's width for larger viewports + .modal-dialog { + width: @modal-md; + margin: 30px auto; + } + .modal-content { + .box-shadow(0 5px 15px rgba(0,0,0,.5)); + } + + // Modal sizes + .modal-sm { width: @modal-sm; } +} + +@media (min-width: @screen-md-min) { + .modal-lg { width: @modal-lg; } +} diff --git a/app/assets/less/vendor/bootstrap/navbar.less b/app/assets/less/vendor/bootstrap/navbar.less new file mode 100644 index 0000000..6d751bb --- /dev/null +++ b/app/assets/less/vendor/bootstrap/navbar.less @@ -0,0 +1,660 @@ +// +// Navbars +// -------------------------------------------------- + + +// Wrapper and base class +// +// Provide a static navbar from which we expand to create full-width, fixed, and +// other navbar variations. + +.navbar { + position: relative; + min-height: @navbar-height; // Ensure a navbar always shows (e.g., without a .navbar-brand in collapsed mode) + margin-bottom: @navbar-margin-bottom; + border: 1px solid transparent; + + // Prevent floats from breaking the navbar + &:extend(.clearfix all); + + @media (min-width: @grid-float-breakpoint) { + border-radius: @navbar-border-radius; + } +} + + +// Navbar heading +// +// Groups `.navbar-brand` and `.navbar-toggle` into a single component for easy +// styling of responsive aspects. + +.navbar-header { + &:extend(.clearfix all); + + @media (min-width: @grid-float-breakpoint) { + float: left; + } +} + + +// Navbar collapse (body) +// +// Group your navbar content into this for easy collapsing and expanding across +// various device sizes. By default, this content is collapsed when <768px, but +// will expand past that for a horizontal display. +// +// To start (on mobile devices) the navbar links, forms, and buttons are stacked +// vertically and include a `max-height` to overflow in case you have too much +// content for the user's viewport. + +.navbar-collapse { + overflow-x: visible; + padding-right: @navbar-padding-horizontal; + padding-left: @navbar-padding-horizontal; + border-top: 1px solid transparent; + box-shadow: inset 0 1px 0 rgba(255,255,255,.1); + &:extend(.clearfix all); + -webkit-overflow-scrolling: touch; + + &.in { + overflow-y: auto; + } + + @media (min-width: @grid-float-breakpoint) { + width: auto; + border-top: 0; + box-shadow: none; + + &.collapse { + display: block !important; + height: auto !important; + padding-bottom: 0; // Override default setting + overflow: visible !important; + } + + &.in { + overflow-y: visible; + } + + // Undo the collapse side padding for navbars with containers to ensure + // alignment of right-aligned contents. + .navbar-fixed-top &, + .navbar-static-top &, + .navbar-fixed-bottom & { + padding-left: 0; + padding-right: 0; + } + } +} + +.navbar-fixed-top, +.navbar-fixed-bottom { + .navbar-collapse { + max-height: @navbar-collapse-max-height; + + @media (max-device-width: @screen-xs-min) and (orientation: landscape) { + max-height: 200px; + } + } +} + + +// Both navbar header and collapse +// +// When a container is present, change the behavior of the header and collapse. + +.container, +.container-fluid { + > .navbar-header, + > .navbar-collapse { + margin-right: -@navbar-padding-horizontal; + margin-left: -@navbar-padding-horizontal; + + @media (min-width: @grid-float-breakpoint) { + margin-right: 0; + margin-left: 0; + } + } +} + + +// +// Navbar alignment options +// +// Display the navbar across the entirety of the page or fixed it to the top or +// bottom of the page. + +// Static top (unfixed, but 100% wide) navbar +.navbar-static-top { + z-index: @zindex-navbar; + border-width: 0 0 1px; + + @media (min-width: @grid-float-breakpoint) { + border-radius: 0; + } +} + +// Fix the top/bottom navbars when screen real estate supports it +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: @zindex-navbar-fixed; + + // Undo the rounded corners + @media (min-width: @grid-float-breakpoint) { + border-radius: 0; + } +} +.navbar-fixed-top { + top: 0; + border-width: 0 0 1px; +} +.navbar-fixed-bottom { + bottom: 0; + margin-bottom: 0; // override .navbar defaults + border-width: 1px 0 0; +} + + +// Brand/project name + +.navbar-brand { + float: left; + padding: @navbar-padding-vertical @navbar-padding-horizontal; + font-size: @font-size-large; + line-height: @line-height-computed; + height: @navbar-height; + + &:hover, + &:focus { + text-decoration: none; + } + + > img { + display: block; + } + + @media (min-width: @grid-float-breakpoint) { + .navbar > .container &, + .navbar > .container-fluid & { + margin-left: -@navbar-padding-horizontal; + } + } +} + + +// Navbar toggle +// +// Custom button for toggling the `.navbar-collapse`, powered by the collapse +// JavaScript plugin. + +.navbar-toggle { + position: relative; + float: right; + margin-right: @navbar-padding-horizontal; + padding: 9px 10px; + .navbar-vertical-align(34px); + background-color: transparent; + background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214 + border: 1px solid transparent; + border-radius: @border-radius-base; + + // We remove the `outline` here, but later compensate by attaching `:hover` + // styles to `:focus`. + &:focus { + outline: 0; + } + + // Bars + .icon-bar { + display: block; + width: 22px; + height: 2px; + border-radius: 1px; + } + .icon-bar + .icon-bar { + margin-top: 4px; + } + + @media (min-width: @grid-float-breakpoint) { + display: none; + } +} + + +// Navbar nav links +// +// Builds on top of the `.nav` components with its own modifier class to make +// the nav the full height of the horizontal nav (above 768px). + +.navbar-nav { + margin: (@navbar-padding-vertical / 2) -@navbar-padding-horizontal; + + > li > a { + padding-top: 10px; + padding-bottom: 10px; + line-height: @line-height-computed; + } + + @media (max-width: @grid-float-breakpoint-max) { + // Dropdowns get custom display when collapsed + .open .dropdown-menu { + position: static; + float: none; + width: auto; + margin-top: 0; + background-color: transparent; + border: 0; + box-shadow: none; + > li > a, + .dropdown-header { + padding: 5px 15px 5px 25px; + } + > li > a { + line-height: @line-height-computed; + &:hover, + &:focus { + background-image: none; + } + } + } + } + + // Uncollapse the nav + @media (min-width: @grid-float-breakpoint) { + float: left; + margin: 0; + + > li { + float: left; + > a { + padding-top: @navbar-padding-vertical; + padding-bottom: @navbar-padding-vertical; + } + } + } +} + + +// Navbar form +// +// Extension of the `.form-inline` with some extra flavor for optimum display in +// our navbars. + +.navbar-form { + margin-left: -@navbar-padding-horizontal; + margin-right: -@navbar-padding-horizontal; + padding: 10px @navbar-padding-horizontal; + border-top: 1px solid transparent; + border-bottom: 1px solid transparent; + @shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1); + .box-shadow(@shadow); + + // Mixin behavior for optimum display + .form-inline(); + + .form-group { + @media (max-width: @grid-float-breakpoint-max) { + margin-bottom: 5px; + + &:last-child { + margin-bottom: 0; + } + } + } + + // Vertically center in expanded, horizontal navbar + .navbar-vertical-align(@input-height-base); + + // Undo 100% width for pull classes + @media (min-width: @grid-float-breakpoint) { + width: auto; + border: 0; + margin-left: 0; + margin-right: 0; + padding-top: 0; + padding-bottom: 0; + .box-shadow(none); + } +} + + +// Dropdown menus + +// Menu position and menu carets +.navbar-nav > li > .dropdown-menu { + margin-top: 0; + .border-top-radius(0); +} +// Menu position and menu caret support for dropups via extra dropup class +.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { + margin-bottom: 0; + .border-top-radius(@navbar-border-radius); + .border-bottom-radius(0); +} + + +// Buttons in navbars +// +// Vertically center a button within a navbar (when *not* in a form). + +.navbar-btn { + .navbar-vertical-align(@input-height-base); + + &.btn-sm { + .navbar-vertical-align(@input-height-small); + } + &.btn-xs { + .navbar-vertical-align(22); + } +} + + +// Text in navbars +// +// Add a class to make any element properly align itself vertically within the navbars. + +.navbar-text { + .navbar-vertical-align(@line-height-computed); + + @media (min-width: @grid-float-breakpoint) { + float: left; + margin-left: @navbar-padding-horizontal; + margin-right: @navbar-padding-horizontal; + } +} + + +// Component alignment +// +// Repurpose the pull utilities as their own navbar utilities to avoid specificity +// issues with parents and chaining. Only do this when the navbar is uncollapsed +// though so that navbar contents properly stack and align in mobile. +// +// Declared after the navbar components to ensure more specificity on the margins. + +@media (min-width: @grid-float-breakpoint) { + .navbar-left { .pull-left(); } + .navbar-right { + .pull-right(); + margin-right: -@navbar-padding-horizontal; + + ~ .navbar-right { + margin-right: 0; + } + } +} + + +// Alternate navbars +// -------------------------------------------------- + +// Default navbar +.navbar-default { + background-color: @navbar-default-bg; + border-color: @navbar-default-border; + + .navbar-brand { + color: @navbar-default-brand-color; + &:hover, + &:focus { + color: @navbar-default-brand-hover-color; + background-color: @navbar-default-brand-hover-bg; + } + } + + .navbar-text { + color: @navbar-default-color; + } + + .navbar-nav { + > li > a { + color: @navbar-default-link-color; + + &:hover, + &:focus { + color: @navbar-default-link-hover-color; + background-color: @navbar-default-link-hover-bg; + } + } + > .active > a { + &, + &:hover, + &:focus { + color: @navbar-default-link-active-color; + background-color: @navbar-default-link-active-bg; + } + } + > .disabled > a { + &, + &:hover, + &:focus { + color: @navbar-default-link-disabled-color; + background-color: @navbar-default-link-disabled-bg; + } + } + } + + .navbar-toggle { + border-color: @navbar-default-toggle-border-color; + &:hover, + &:focus { + background-color: @navbar-default-toggle-hover-bg; + } + .icon-bar { + background-color: @navbar-default-toggle-icon-bar-bg; + } + } + + .navbar-collapse, + .navbar-form { + border-color: @navbar-default-border; + } + + // Dropdown menu items + .navbar-nav { + // Remove background color from open dropdown + > .open > a { + &, + &:hover, + &:focus { + background-color: @navbar-default-link-active-bg; + color: @navbar-default-link-active-color; + } + } + + @media (max-width: @grid-float-breakpoint-max) { + // Dropdowns get custom display when collapsed + .open .dropdown-menu { + > li > a { + color: @navbar-default-link-color; + &:hover, + &:focus { + color: @navbar-default-link-hover-color; + background-color: @navbar-default-link-hover-bg; + } + } + > .active > a { + &, + &:hover, + &:focus { + color: @navbar-default-link-active-color; + background-color: @navbar-default-link-active-bg; + } + } + > .disabled > a { + &, + &:hover, + &:focus { + color: @navbar-default-link-disabled-color; + background-color: @navbar-default-link-disabled-bg; + } + } + } + } + } + + + // Links in navbars + // + // Add a class to ensure links outside the navbar nav are colored correctly. + + .navbar-link { + color: @navbar-default-link-color; + &:hover { + color: @navbar-default-link-hover-color; + } + } + + .btn-link { + color: @navbar-default-link-color; + &:hover, + &:focus { + color: @navbar-default-link-hover-color; + } + &[disabled], + fieldset[disabled] & { + &:hover, + &:focus { + color: @navbar-default-link-disabled-color; + } + } + } +} + +// Inverse navbar + +.navbar-inverse { + background-color: @navbar-inverse-bg; + border-color: @navbar-inverse-border; + + .navbar-brand { + color: @navbar-inverse-brand-color; + &:hover, + &:focus { + color: @navbar-inverse-brand-hover-color; + background-color: @navbar-inverse-brand-hover-bg; + } + } + + .navbar-text { + color: @navbar-inverse-color; + } + + .navbar-nav { + > li > a { + color: @navbar-inverse-link-color; + + &:hover, + &:focus { + color: @navbar-inverse-link-hover-color; + background-color: @navbar-inverse-link-hover-bg; + } + } + > .active > a { + &, + &:hover, + &:focus { + color: @navbar-inverse-link-active-color; + background-color: @navbar-inverse-link-active-bg; + } + } + > .disabled > a { + &, + &:hover, + &:focus { + color: @navbar-inverse-link-disabled-color; + background-color: @navbar-inverse-link-disabled-bg; + } + } + } + + // Darken the responsive nav toggle + .navbar-toggle { + border-color: @navbar-inverse-toggle-border-color; + &:hover, + &:focus { + background-color: @navbar-inverse-toggle-hover-bg; + } + .icon-bar { + background-color: @navbar-inverse-toggle-icon-bar-bg; + } + } + + .navbar-collapse, + .navbar-form { + border-color: darken(@navbar-inverse-bg, 7%); + } + + // Dropdowns + .navbar-nav { + > .open > a { + &, + &:hover, + &:focus { + background-color: @navbar-inverse-link-active-bg; + color: @navbar-inverse-link-active-color; + } + } + + @media (max-width: @grid-float-breakpoint-max) { + // Dropdowns get custom display + .open .dropdown-menu { + > .dropdown-header { + border-color: @navbar-inverse-border; + } + .divider { + background-color: @navbar-inverse-border; + } + > li > a { + color: @navbar-inverse-link-color; + &:hover, + &:focus { + color: @navbar-inverse-link-hover-color; + background-color: @navbar-inverse-link-hover-bg; + } + } + > .active > a { + &, + &:hover, + &:focus { + color: @navbar-inverse-link-active-color; + background-color: @navbar-inverse-link-active-bg; + } + } + > .disabled > a { + &, + &:hover, + &:focus { + color: @navbar-inverse-link-disabled-color; + background-color: @navbar-inverse-link-disabled-bg; + } + } + } + } + } + + .navbar-link { + color: @navbar-inverse-link-color; + &:hover { + color: @navbar-inverse-link-hover-color; + } + } + + .btn-link { + color: @navbar-inverse-link-color; + &:hover, + &:focus { + color: @navbar-inverse-link-hover-color; + } + &[disabled], + fieldset[disabled] & { + &:hover, + &:focus { + color: @navbar-inverse-link-disabled-color; + } + } + } +} diff --git a/app/assets/less/vendor/bootstrap/navs.less b/app/assets/less/vendor/bootstrap/navs.less new file mode 100644 index 0000000..a3d11b1 --- /dev/null +++ b/app/assets/less/vendor/bootstrap/navs.less @@ -0,0 +1,242 @@ +// +// Navs +// -------------------------------------------------- + + +// Base class +// -------------------------------------------------- + +.nav { + margin-bottom: 0; + padding-left: 0; // Override default ul/ol + list-style: none; + &:extend(.clearfix all); + + > li { + position: relative; + display: block; + + > a { + position: relative; + display: block; + padding: @nav-link-padding; + &:hover, + &:focus { + text-decoration: none; + background-color: @nav-link-hover-bg; + } + } + + // Disabled state sets text to gray and nukes hover/tab effects + &.disabled > a { + color: @nav-disabled-link-color; + + &:hover, + &:focus { + color: @nav-disabled-link-hover-color; + text-decoration: none; + background-color: transparent; + cursor: @cursor-disabled; + } + } + } + + // Open dropdowns + .open > a { + &, + &:hover, + &:focus { + background-color: @nav-link-hover-bg; + border-color: @link-color; + } + } + + // Nav dividers (deprecated with v3.0.1) + // + // This should have been removed in v3 with the dropping of `.nav-list`, but + // we missed it. We don't currently support this anywhere, but in the interest + // of maintaining backward compatibility in case you use it, it's deprecated. + .nav-divider { + .nav-divider(); + } + + // Prevent IE8 from misplacing imgs + // + // See https://github.com/h5bp/html5-boilerplate/issues/984#issuecomment-3985989 + > li > a > img { + max-width: none; + } +} + + +// Tabs +// ------------------------- + +// Give the tabs something to sit on +.nav-tabs { + border-bottom: 1px solid @nav-tabs-border-color; + > li { + float: left; + // Make the list-items overlay the bottom border + margin-bottom: -1px; + + // Actual tabs (as links) + > a { + margin-right: 2px; + line-height: @line-height-base; + border: 1px solid transparent; + border-radius: @border-radius-base @border-radius-base 0 0; + &:hover { + border-color: @nav-tabs-link-hover-border-color @nav-tabs-link-hover-border-color @nav-tabs-border-color; + } + } + + // Active state, and its :hover to override normal :hover + &.active > a { + &, + &:hover, + &:focus { + color: @nav-tabs-active-link-hover-color; + background-color: @nav-tabs-active-link-hover-bg; + border: 1px solid @nav-tabs-active-link-hover-border-color; + border-bottom-color: transparent; + cursor: default; + } + } + } + // pulling this in mainly for less shorthand + &.nav-justified { + .nav-justified(); + .nav-tabs-justified(); + } +} + + +// Pills +// ------------------------- +.nav-pills { + > li { + float: left; + + // Links rendered as pills + > a { + border-radius: @nav-pills-border-radius; + } + + li { + margin-left: 2px; + } + + // Active state + &.active > a { + &, + &:hover, + &:focus { + color: @nav-pills-active-link-hover-color; + background-color: @nav-pills-active-link-hover-bg; + } + } + } +} + + +// Stacked pills +.nav-stacked { + > li { + float: none; + + li { + margin-top: 2px; + margin-left: 0; // no need for this gap between nav items + } + } +} + + +// Nav variations +// -------------------------------------------------- + +// Justified nav links +// ------------------------- + +.nav-justified { + width: 100%; + + > li { + float: none; + > a { + text-align: center; + margin-bottom: 5px; + } + } + + > .dropdown .dropdown-menu { + top: auto; + left: auto; + } + + @media (min-width: @screen-sm-min) { + > li { + display: table-cell; + width: 1%; + > a { + margin-bottom: 0; + } + } + } +} + +// Move borders to anchors instead of bottom of list +// +// Mixin for adding on top the shared `.nav-justified` styles for our tabs +.nav-tabs-justified { + border-bottom: 0; + + > li > a { + // Override margin from .nav-tabs + margin-right: 0; + border-radius: @border-radius-base; + } + + > .active > a, + > .active > a:hover, + > .active > a:focus { + border: 1px solid @nav-tabs-justified-link-border-color; + } + + @media (min-width: @screen-sm-min) { + > li > a { + border-bottom: 1px solid @nav-tabs-justified-link-border-color; + border-radius: @border-radius-base @border-radius-base 0 0; + } + > .active > a, + > .active > a:hover, + > .active > a:focus { + border-bottom-color: @nav-tabs-justified-active-link-border-color; + } + } +} + + +// Tabbable tabs +// ------------------------- + +// Hide tabbable panes to start, show them when `.active` +.tab-content { + > .tab-pane { + display: none; + } + > .active { + display: block; + } +} + + +// Dropdowns +// ------------------------- + +// Specific dropdowns +.nav-tabs .dropdown-menu { + // make dropdown border overlap tab border + margin-top: -1px; + // Remove the top rounded corners here since there is a hard edge above the menu + .border-top-radius(0); +} diff --git a/app/assets/less/vendor/bootstrap/normalize.less b/app/assets/less/vendor/bootstrap/normalize.less new file mode 100644 index 0000000..9dddf73 --- /dev/null +++ b/app/assets/less/vendor/bootstrap/normalize.less @@ -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/app/assets/less/vendor/bootstrap/pager.less b/app/assets/less/vendor/bootstrap/pager.less new file mode 100644 index 0000000..41abaaa --- /dev/null +++ b/app/assets/less/vendor/bootstrap/pager.less @@ -0,0 +1,54 @@ +// +// Pager pagination +// -------------------------------------------------- + + +.pager { + padding-left: 0; + margin: @line-height-computed 0; + list-style: none; + text-align: center; + &:extend(.clearfix all); + li { + display: inline; + > a, + > span { + display: inline-block; + padding: 5px 14px; + background-color: @pager-bg; + border: 1px solid @pager-border; + border-radius: @pager-border-radius; + } + + > a:hover, + > a:focus { + text-decoration: none; + background-color: @pager-hover-bg; + } + } + + .next { + > a, + > span { + float: right; + } + } + + .previous { + > a, + > span { + float: left; + } + } + + .disabled { + > a, + > a:hover, + > a:focus, + > span { + color: @pager-disabled-color; + background-color: @pager-bg; + cursor: @cursor-disabled; + } + } +} diff --git a/app/assets/less/vendor/bootstrap/pagination.less b/app/assets/less/vendor/bootstrap/pagination.less new file mode 100644 index 0000000..31f77aa --- /dev/null +++ b/app/assets/less/vendor/bootstrap/pagination.less @@ -0,0 +1,89 @@ +// +// Pagination (multiple pages) +// -------------------------------------------------- +.pagination { + display: inline-block; + padding-left: 0; + margin: @line-height-computed 0; + border-radius: @border-radius-base; + + > li { + display: inline; // Remove list-style and block-level defaults + > a, + > span { + position: relative; + float: left; // Collapse white-space + padding: @padding-base-vertical @padding-base-horizontal; + line-height: @line-height-base; + text-decoration: none; + color: @pagination-color; + background-color: @pagination-bg; + border: 1px solid @pagination-border; + margin-left: -1px; + } + &:first-child { + > a, + > span { + margin-left: 0; + .border-left-radius(@border-radius-base); + } + } + &:last-child { + > a, + > span { + .border-right-radius(@border-radius-base); + } + } + } + + > li > a, + > li > span { + &:hover, + &:focus { + z-index: 2; + color: @pagination-hover-color; + background-color: @pagination-hover-bg; + border-color: @pagination-hover-border; + } + } + + > .active > a, + > .active > span { + &, + &:hover, + &:focus { + z-index: 3; + color: @pagination-active-color; + background-color: @pagination-active-bg; + border-color: @pagination-active-border; + cursor: default; + } + } + + > .disabled { + > span, + > span:hover, + > span:focus, + > a, + > a:hover, + > a:focus { + color: @pagination-disabled-color; + background-color: @pagination-disabled-bg; + border-color: @pagination-disabled-border; + cursor: @cursor-disabled; + } + } +} + +// Sizing +// -------------------------------------------------- + +// Large +.pagination-lg { + .pagination-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large); +} + +// Small +.pagination-sm { + .pagination-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small); +} diff --git a/app/assets/less/vendor/bootstrap/panels.less b/app/assets/less/vendor/bootstrap/panels.less new file mode 100644 index 0000000..425eb5e --- /dev/null +++ b/app/assets/less/vendor/bootstrap/panels.less @@ -0,0 +1,271 @@ +// +// Panels +// -------------------------------------------------- + + +// Base class +.panel { + margin-bottom: @line-height-computed; + background-color: @panel-bg; + border: 1px solid transparent; + border-radius: @panel-border-radius; + .box-shadow(0 1px 1px rgba(0,0,0,.05)); +} + +// Panel contents +.panel-body { + padding: @panel-body-padding; + &:extend(.clearfix all); +} + +// Optional heading +.panel-heading { + padding: @panel-heading-padding; + border-bottom: 1px solid transparent; + .border-top-radius((@panel-border-radius - 1)); + + > .dropdown .dropdown-toggle { + color: inherit; + } +} + +// Within heading, strip any `h*` tag of its default margins for spacing. +.panel-title { + margin-top: 0; + margin-bottom: 0; + font-size: ceil((@font-size-base * 1.125)); + color: inherit; + + > a, + > small, + > .small, + > small > a, + > .small > a { + color: inherit; + } +} + +// Optional footer (stays gray in every modifier class) +.panel-footer { + padding: @panel-footer-padding; + background-color: @panel-footer-bg; + border-top: 1px solid @panel-inner-border; + .border-bottom-radius((@panel-border-radius - 1)); +} + + +// List groups in panels +// +// By default, space out list group content from panel headings to account for +// any kind of custom content between the two. + +.panel { + > .list-group, + > .panel-collapse > .list-group { + margin-bottom: 0; + + .list-group-item { + border-width: 1px 0; + border-radius: 0; + } + + // Add border top radius for first one + &:first-child { + .list-group-item:first-child { + border-top: 0; + .border-top-radius((@panel-border-radius - 1)); + } + } + + // Add border bottom radius for last one + &:last-child { + .list-group-item:last-child { + border-bottom: 0; + .border-bottom-radius((@panel-border-radius - 1)); + } + } + } + > .panel-heading + .panel-collapse > .list-group { + .list-group-item:first-child { + .border-top-radius(0); + } + } +} +// Collapse space between when there's no additional content. +.panel-heading + .list-group { + .list-group-item:first-child { + border-top-width: 0; + } +} +.list-group + .panel-footer { + border-top-width: 0; +} + +// Tables in panels +// +// Place a non-bordered `.table` within a panel (not within a `.panel-body`) and +// watch it go full width. + +.panel { + > .table, + > .table-responsive > .table, + > .panel-collapse > .table { + margin-bottom: 0; + + caption { + padding-left: @panel-body-padding; + padding-right: @panel-body-padding; + } + } + // Add border top radius for first one + > .table:first-child, + > .table-responsive:first-child > .table:first-child { + .border-top-radius((@panel-border-radius - 1)); + + > thead:first-child, + > tbody:first-child { + > tr:first-child { + border-top-left-radius: (@panel-border-radius - 1); + border-top-right-radius: (@panel-border-radius - 1); + + td:first-child, + th:first-child { + border-top-left-radius: (@panel-border-radius - 1); + } + td:last-child, + th:last-child { + border-top-right-radius: (@panel-border-radius - 1); + } + } + } + } + // Add border bottom radius for last one + > .table:last-child, + > .table-responsive:last-child > .table:last-child { + .border-bottom-radius((@panel-border-radius - 1)); + + > tbody:last-child, + > tfoot:last-child { + > tr:last-child { + border-bottom-left-radius: (@panel-border-radius - 1); + border-bottom-right-radius: (@panel-border-radius - 1); + + td:first-child, + th:first-child { + border-bottom-left-radius: (@panel-border-radius - 1); + } + td:last-child, + th:last-child { + border-bottom-right-radius: (@panel-border-radius - 1); + } + } + } + } + > .panel-body + .table, + > .panel-body + .table-responsive, + > .table + .panel-body, + > .table-responsive + .panel-body { + border-top: 1px solid @table-border-color; + } + > .table > tbody:first-child > tr:first-child th, + > .table > tbody:first-child > tr:first-child td { + border-top: 0; + } + > .table-bordered, + > .table-responsive > .table-bordered { + border: 0; + > thead, + > tbody, + > tfoot { + > tr { + > th:first-child, + > td:first-child { + border-left: 0; + } + > th:last-child, + > td:last-child { + border-right: 0; + } + } + } + > thead, + > tbody { + > tr:first-child { + > td, + > th { + border-bottom: 0; + } + } + } + > tbody, + > tfoot { + > tr:last-child { + > td, + > th { + border-bottom: 0; + } + } + } + } + > .table-responsive { + border: 0; + margin-bottom: 0; + } +} + + +// Collapsable panels (aka, accordion) +// +// Wrap a series of panels in `.panel-group` to turn them into an accordion with +// the help of our collapse JavaScript plugin. + +.panel-group { + margin-bottom: @line-height-computed; + + // Tighten up margin so it's only between panels + .panel { + margin-bottom: 0; + border-radius: @panel-border-radius; + + + .panel { + margin-top: 5px; + } + } + + .panel-heading { + border-bottom: 0; + + + .panel-collapse > .panel-body, + + .panel-collapse > .list-group { + border-top: 1px solid @panel-inner-border; + } + } + + .panel-footer { + border-top: 0; + + .panel-collapse .panel-body { + border-bottom: 1px solid @panel-inner-border; + } + } +} + + +// Contextual variations +.panel-default { + .panel-variant(@panel-default-border; @panel-default-text; @panel-default-heading-bg; @panel-default-border); +} +.panel-primary { + .panel-variant(@panel-primary-border; @panel-primary-text; @panel-primary-heading-bg; @panel-primary-border); +} +.panel-success { + .panel-variant(@panel-success-border; @panel-success-text; @panel-success-heading-bg; @panel-success-border); +} +.panel-info { + .panel-variant(@panel-info-border; @panel-info-text; @panel-info-heading-bg; @panel-info-border); +} +.panel-warning { + .panel-variant(@panel-warning-border; @panel-warning-text; @panel-warning-heading-bg; @panel-warning-border); +} +.panel-danger { + .panel-variant(@panel-danger-border; @panel-danger-text; @panel-danger-heading-bg; @panel-danger-border); +} diff --git a/app/assets/less/vendor/bootstrap/popovers.less b/app/assets/less/vendor/bootstrap/popovers.less new file mode 100644 index 0000000..3a62a64 --- /dev/null +++ b/app/assets/less/vendor/bootstrap/popovers.less @@ -0,0 +1,131 @@ +// +// Popovers +// -------------------------------------------------- + + +.popover { + position: absolute; + top: 0; + left: 0; + z-index: @zindex-popover; + display: none; + max-width: @popover-max-width; + padding: 1px; + // Our parent element can be arbitrary since popovers are by default inserted as a sibling of their target element. + // So reset our font and text properties to avoid inheriting weird values. + .reset-text(); + font-size: @font-size-base; + + background-color: @popover-bg; + background-clip: padding-box; + border: 1px solid @popover-fallback-border-color; + border: 1px solid @popover-border-color; + border-radius: @border-radius-large; + .box-shadow(0 5px 10px rgba(0,0,0,.2)); + + // Offset the popover to account for the popover arrow + &.top { margin-top: -@popover-arrow-width; } + &.right { margin-left: @popover-arrow-width; } + &.bottom { margin-top: @popover-arrow-width; } + &.left { margin-left: -@popover-arrow-width; } +} + +.popover-title { + margin: 0; // reset heading margin + padding: 8px 14px; + font-size: @font-size-base; + background-color: @popover-title-bg; + border-bottom: 1px solid darken(@popover-title-bg, 5%); + border-radius: (@border-radius-large - 1) (@border-radius-large - 1) 0 0; +} + +.popover-content { + padding: 9px 14px; +} + +// Arrows +// +// .arrow is outer, .arrow:after is inner + +.popover > .arrow { + &, + &:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; + } +} +.popover > .arrow { + border-width: @popover-arrow-outer-width; +} +.popover > .arrow:after { + border-width: @popover-arrow-width; + content: ""; +} + +.popover { + &.top > .arrow { + left: 50%; + margin-left: -@popover-arrow-outer-width; + border-bottom-width: 0; + border-top-color: @popover-arrow-outer-fallback-color; // IE8 fallback + border-top-color: @popover-arrow-outer-color; + bottom: -@popover-arrow-outer-width; + &:after { + content: " "; + bottom: 1px; + margin-left: -@popover-arrow-width; + border-bottom-width: 0; + border-top-color: @popover-arrow-color; + } + } + &.right > .arrow { + top: 50%; + left: -@popover-arrow-outer-width; + margin-top: -@popover-arrow-outer-width; + border-left-width: 0; + border-right-color: @popover-arrow-outer-fallback-color; // IE8 fallback + border-right-color: @popover-arrow-outer-color; + &:after { + content: " "; + left: 1px; + bottom: -@popover-arrow-width; + border-left-width: 0; + border-right-color: @popover-arrow-color; + } + } + &.bottom > .arrow { + left: 50%; + margin-left: -@popover-arrow-outer-width; + border-top-width: 0; + border-bottom-color: @popover-arrow-outer-fallback-color; // IE8 fallback + border-bottom-color: @popover-arrow-outer-color; + top: -@popover-arrow-outer-width; + &:after { + content: " "; + top: 1px; + margin-left: -@popover-arrow-width; + border-top-width: 0; + border-bottom-color: @popover-arrow-color; + } + } + + &.left > .arrow { + top: 50%; + right: -@popover-arrow-outer-width; + margin-top: -@popover-arrow-outer-width; + border-right-width: 0; + border-left-color: @popover-arrow-outer-fallback-color; // IE8 fallback + border-left-color: @popover-arrow-outer-color; + &:after { + content: " "; + right: 1px; + border-right-width: 0; + border-left-color: @popover-arrow-color; + bottom: -@popover-arrow-width; + } + } +} diff --git a/app/assets/less/vendor/bootstrap/print.less b/app/assets/less/vendor/bootstrap/print.less new file mode 100644 index 0000000..66e54ab --- /dev/null +++ b/app/assets/less/vendor/bootstrap/print.less @@ -0,0 +1,101 @@ +/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ + +// ========================================================================== +// Print styles. +// Inlined to avoid the additional HTTP request: h5bp.com/r +// ========================================================================== + +@media print { + *, + *:before, + *:after { + background: transparent !important; + color: #000 !important; // Black prints faster: h5bp.com/s + box-shadow: none !important; + text-shadow: none !important; + } + + a, + a:visited { + text-decoration: underline; + } + + a[href]:after { + content: " (" attr(href) ")"; + } + + abbr[title]:after { + content: " (" attr(title) ")"; + } + + // Don't show links that are fragment identifiers, + // or use the `javascript:` pseudo protocol + a[href^="#"]:after, + a[href^="javascript:"]:after { + content: ""; + } + + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; + } + + thead { + display: table-header-group; // h5bp.com/t + } + + tr, + img { + page-break-inside: avoid; + } + + img { + max-width: 100% !important; + } + + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + + h2, + h3 { + page-break-after: avoid; + } + + // Bootstrap specific changes start + + // Bootstrap components + .navbar { + display: none; + } + .btn, + .dropup > .btn { + > .caret { + border-top-color: #000 !important; + } + } + .label { + border: 1px solid #000; + } + + .table { + border-collapse: collapse !important; + + td, + th { + background-color: #fff !important; + } + } + .table-bordered { + th, + td { + border: 1px solid #ddd !important; + } + } + + // Bootstrap specific changes end +} diff --git a/app/assets/less/vendor/bootstrap/progress-bars.less b/app/assets/less/vendor/bootstrap/progress-bars.less new file mode 100644 index 0000000..8868a1f --- /dev/null +++ b/app/assets/less/vendor/bootstrap/progress-bars.less @@ -0,0 +1,87 @@ +// +// Progress bars +// -------------------------------------------------- + + +// Bar animations +// ------------------------- + +// WebKit +@-webkit-keyframes progress-bar-stripes { + from { background-position: 40px 0; } + to { background-position: 0 0; } +} + +// Spec and IE10+ +@keyframes progress-bar-stripes { + from { background-position: 40px 0; } + to { background-position: 0 0; } +} + + +// Bar itself +// ------------------------- + +// Outer container +.progress { + overflow: hidden; + height: @line-height-computed; + margin-bottom: @line-height-computed; + background-color: @progress-bg; + border-radius: @progress-border-radius; + .box-shadow(inset 0 1px 2px rgba(0,0,0,.1)); +} + +// Bar of progress +.progress-bar { + float: left; + width: 0%; + height: 100%; + font-size: @font-size-small; + line-height: @line-height-computed; + color: @progress-bar-color; + text-align: center; + background-color: @progress-bar-bg; + .box-shadow(inset 0 -1px 0 rgba(0,0,0,.15)); + .transition(width .6s ease); +} + +// Striped bars +// +// `.progress-striped .progress-bar` is deprecated as of v3.2.0 in favor of the +// `.progress-bar-striped` class, which you just add to an existing +// `.progress-bar`. +.progress-striped .progress-bar, +.progress-bar-striped { + #gradient > .striped(); + background-size: 40px 40px; +} + +// Call animation for the active one +// +// `.progress.active .progress-bar` is deprecated as of v3.2.0 in favor of the +// `.progress-bar.active` approach. +.progress.active .progress-bar, +.progress-bar.active { + .animation(progress-bar-stripes 2s linear infinite); +} + + +// Variations +// ------------------------- + +.progress-bar-success { + .progress-bar-variant(@progress-bar-success-bg); +} + +.progress-bar-info { + .progress-bar-variant(@progress-bar-info-bg); +} + +.progress-bar-warning { + .progress-bar-variant(@progress-bar-warning-bg); +} + +.progress-bar-danger { + .progress-bar-variant(@progress-bar-danger-bg); +} diff --git a/app/assets/less/vendor/bootstrap/responsive-embed.less b/app/assets/less/vendor/bootstrap/responsive-embed.less new file mode 100644 index 0000000..080a511 --- /dev/null +++ b/app/assets/less/vendor/bootstrap/responsive-embed.less @@ -0,0 +1,35 @@ +// Embeds responsive +// +// Credit: Nicolas Gallagher and SUIT CSS. + +.embed-responsive { + position: relative; + display: block; + height: 0; + padding: 0; + overflow: hidden; + + .embed-responsive-item, + iframe, + embed, + object, + video { + position: absolute; + top: 0; + left: 0; + bottom: 0; + height: 100%; + width: 100%; + border: 0; + } +} + +// Modifier class for 16:9 aspect ratio +.embed-responsive-16by9 { + padding-bottom: 56.25%; +} + +// Modifier class for 4:3 aspect ratio +.embed-responsive-4by3 { + padding-bottom: 75%; +} diff --git a/app/assets/less/vendor/bootstrap/responsive-utilities.less b/app/assets/less/vendor/bootstrap/responsive-utilities.less new file mode 100644 index 0000000..b1db31d --- /dev/null +++ b/app/assets/less/vendor/bootstrap/responsive-utilities.less @@ -0,0 +1,194 @@ +// +// Responsive: Utility classes +// -------------------------------------------------- + + +// IE10 in Windows (Phone) 8 +// +// Support for responsive views via media queries is kind of borked in IE10, for +// Surface/desktop in split view and for Windows Phone 8. This particular fix +// must be accompanied by a snippet of JavaScript to sniff the user agent and +// apply some conditional CSS to *only* the Surface/desktop Windows 8. Look at +// our Getting Started page for more information on this bug. +// +// For more information, see the following: +// +// Issue: https://github.com/twbs/bootstrap/issues/10497 +// Docs: http://getbootstrap.com/getting-started/#support-ie10-width +// Source: http://timkadlec.com/2013/01/windows-phone-8-and-device-width/ +// Source: http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/ + +@-ms-viewport { + width: device-width; +} + + +// Visibility utilities +// Note: Deprecated .visible-xs, .visible-sm, .visible-md, and .visible-lg as of v3.2.0 +.visible-xs, +.visible-sm, +.visible-md, +.visible-lg { + .responsive-invisibility(); +} + +.visible-xs-block, +.visible-xs-inline, +.visible-xs-inline-block, +.visible-sm-block, +.visible-sm-inline, +.visible-sm-inline-block, +.visible-md-block, +.visible-md-inline, +.visible-md-inline-block, +.visible-lg-block, +.visible-lg-inline, +.visible-lg-inline-block { + display: none !important; +} + +.visible-xs { + @media (max-width: @screen-xs-max) { + .responsive-visibility(); + } +} +.visible-xs-block { + @media (max-width: @screen-xs-max) { + display: block !important; + } +} +.visible-xs-inline { + @media (max-width: @screen-xs-max) { + display: inline !important; + } +} +.visible-xs-inline-block { + @media (max-width: @screen-xs-max) { + display: inline-block !important; + } +} + +.visible-sm { + @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) { + .responsive-visibility(); + } +} +.visible-sm-block { + @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) { + display: block !important; + } +} +.visible-sm-inline { + @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) { + display: inline !important; + } +} +.visible-sm-inline-block { + @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) { + display: inline-block !important; + } +} + +.visible-md { + @media (min-width: @screen-md-min) and (max-width: @screen-md-max) { + .responsive-visibility(); + } +} +.visible-md-block { + @media (min-width: @screen-md-min) and (max-width: @screen-md-max) { + display: block !important; + } +} +.visible-md-inline { + @media (min-width: @screen-md-min) and (max-width: @screen-md-max) { + display: inline !important; + } +} +.visible-md-inline-block { + @media (min-width: @screen-md-min) and (max-width: @screen-md-max) { + display: inline-block !important; + } +} + +.visible-lg { + @media (min-width: @screen-lg-min) { + .responsive-visibility(); + } +} +.visible-lg-block { + @media (min-width: @screen-lg-min) { + display: block !important; + } +} +.visible-lg-inline { + @media (min-width: @screen-lg-min) { + display: inline !important; + } +} +.visible-lg-inline-block { + @media (min-width: @screen-lg-min) { + display: inline-block !important; + } +} + +.hidden-xs { + @media (max-width: @screen-xs-max) { + .responsive-invisibility(); + } +} +.hidden-sm { + @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) { + .responsive-invisibility(); + } +} +.hidden-md { + @media (min-width: @screen-md-min) and (max-width: @screen-md-max) { + .responsive-invisibility(); + } +} +.hidden-lg { + @media (min-width: @screen-lg-min) { + .responsive-invisibility(); + } +} + + +// Print utilities +// +// Media queries are placed on the inside to be mixin-friendly. + +// Note: Deprecated .visible-print as of v3.2.0 +.visible-print { + .responsive-invisibility(); + + @media print { + .responsive-visibility(); + } +} +.visible-print-block { + display: none !important; + + @media print { + display: block !important; + } +} +.visible-print-inline { + display: none !important; + + @media print { + display: inline !important; + } +} +.visible-print-inline-block { + display: none !important; + + @media print { + display: inline-block !important; + } +} + +.hidden-print { + @media print { + .responsive-invisibility(); + } +} diff --git a/app/assets/less/vendor/bootstrap/scaffolding.less b/app/assets/less/vendor/bootstrap/scaffolding.less new file mode 100644 index 0000000..1929bfc --- /dev/null +++ b/app/assets/less/vendor/bootstrap/scaffolding.less @@ -0,0 +1,161 @@ +// +// Scaffolding +// -------------------------------------------------- + + +// Reset the box-sizing +// +// Heads up! This reset may cause conflicts with some third-party widgets. +// For recommendations on resolving such conflicts, see +// http://getbootstrap.com/getting-started/#third-box-sizing +* { + .box-sizing(border-box); +} +*:before, +*:after { + .box-sizing(border-box); +} + + +// Body reset + +html { + font-size: 10px; + -webkit-tap-highlight-color: rgba(0,0,0,0); +} + +body { + font-family: @font-family-base; + font-size: @font-size-base; + line-height: @line-height-base; + color: @text-color; + background-color: @body-bg; +} + +// Reset fonts for relevant elements +input, +button, +select, +textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit; +} + + +// Links + +a { + color: @link-color; + text-decoration: none; + + &:hover, + &:focus { + color: @link-hover-color; + text-decoration: @link-hover-decoration; + } + + &:focus { + .tab-focus(); + } +} + + +// Figures +// +// We reset this here because previously Normalize had no `figure` margins. This +// ensures we don't break anyone's use of the element. + +figure { + margin: 0; +} + + +// Images + +img { + vertical-align: middle; +} + +// Responsive images (ensure images don't scale beyond their parents) +.img-responsive { + .img-responsive(); +} + +// Rounded corners +.img-rounded { + border-radius: @border-radius-large; +} + +// Image thumbnails +// +// Heads up! This is mixin-ed into thumbnails.less for `.thumbnail`. +.img-thumbnail { + padding: @thumbnail-padding; + line-height: @line-height-base; + background-color: @thumbnail-bg; + border: 1px solid @thumbnail-border; + border-radius: @thumbnail-border-radius; + .transition(all .2s ease-in-out); + + // Keep them at most 100% wide + .img-responsive(inline-block); +} + +// Perfect circle +.img-circle { + border-radius: 50%; // set radius in percents +} + + +// Horizontal rules + +hr { + margin-top: @line-height-computed; + margin-bottom: @line-height-computed; + border: 0; + border-top: 1px solid @hr-border; +} + + +// Only display content to screen readers +// +// See: http://a11yproject.com/posts/how-to-hide-content/ + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0,0,0,0); + border: 0; +} + +// Use in conjunction with .sr-only to only display content when it's focused. +// Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1 +// Credit: HTML5 Boilerplate + +.sr-only-focusable { + &:active, + &:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; + } +} + + +// iOS "clickable elements" fix for role="button" +// +// Fixes "clickability" issue (and more generally, the firing of events such as focus as well) +// for traditionally non-focusable elements with role="button" +// see https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile + +[role="button"] { + cursor: pointer; +} diff --git a/app/assets/less/vendor/bootstrap/tables.less b/app/assets/less/vendor/bootstrap/tables.less new file mode 100644 index 0000000..2242c03 --- /dev/null +++ b/app/assets/less/vendor/bootstrap/tables.less @@ -0,0 +1,234 @@ +// +// Tables +// -------------------------------------------------- + + +table { + background-color: @table-bg; +} +caption { + padding-top: @table-cell-padding; + padding-bottom: @table-cell-padding; + color: @text-muted; + text-align: left; +} +th { + text-align: left; +} + + +// Baseline styles + +.table { + width: 100%; + max-width: 100%; + margin-bottom: @line-height-computed; + // Cells + > thead, + > tbody, + > tfoot { + > tr { + > th, + > td { + padding: @table-cell-padding; + line-height: @line-height-base; + vertical-align: top; + border-top: 1px solid @table-border-color; + } + } + } + // Bottom align for column headings + > thead > tr > th { + vertical-align: bottom; + border-bottom: 2px solid @table-border-color; + } + // Remove top border from thead by default + > caption + thead, + > colgroup + thead, + > thead:first-child { + > tr:first-child { + > th, + > td { + border-top: 0; + } + } + } + // Account for multiple tbody instances + > tbody + tbody { + border-top: 2px solid @table-border-color; + } + + // Nesting + .table { + background-color: @body-bg; + } +} + + +// Condensed table w/ half padding + +.table-condensed { + > thead, + > tbody, + > tfoot { + > tr { + > th, + > td { + padding: @table-condensed-cell-padding; + } + } + } +} + + +// Bordered version +// +// Add borders all around the table and between all the columns. + +.table-bordered { + border: 1px solid @table-border-color; + > thead, + > tbody, + > tfoot { + > tr { + > th, + > td { + border: 1px solid @table-border-color; + } + } + } + > thead > tr { + > th, + > td { + border-bottom-width: 2px; + } + } +} + + +// Zebra-striping +// +// Default zebra-stripe styles (alternating gray and transparent backgrounds) + +.table-striped { + > tbody > tr:nth-of-type(odd) { + background-color: @table-bg-accent; + } +} + + +// Hover effect +// +// Placed here since it has to come after the potential zebra striping + +.table-hover { + > tbody > tr:hover { + background-color: @table-bg-hover; + } +} + + +// Table cell sizing +// +// Reset default table behavior + +table col[class*="col-"] { + position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623) + float: none; + display: table-column; +} +table { + td, + th { + &[class*="col-"] { + position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623) + float: none; + display: table-cell; + } + } +} + + +// Table backgrounds +// +// Exact selectors below required to override `.table-striped` and prevent +// inheritance to nested tables. + +// Generate the contextual variants +.table-row-variant(active; @table-bg-active); +.table-row-variant(success; @state-success-bg); +.table-row-variant(info; @state-info-bg); +.table-row-variant(warning; @state-warning-bg); +.table-row-variant(danger; @state-danger-bg); + + +// Responsive tables +// +// Wrap your tables in `.table-responsive` and we'll make them mobile friendly +// by enabling horizontal scrolling. Only applies <768px. Everything above that +// will display normally. + +.table-responsive { + overflow-x: auto; + min-height: 0.01%; // Workaround for IE9 bug (see https://github.com/twbs/bootstrap/issues/14837) + + @media screen and (max-width: @screen-xs-max) { + width: 100%; + margin-bottom: (@line-height-computed * 0.75); + overflow-y: hidden; + -ms-overflow-style: -ms-autohiding-scrollbar; + border: 1px solid @table-border-color; + + // Tighten up spacing + > .table { + margin-bottom: 0; + + // Ensure the content doesn't wrap + > thead, + > tbody, + > tfoot { + > tr { + > th, + > td { + white-space: nowrap; + } + } + } + } + + // Special overrides for the bordered tables + > .table-bordered { + border: 0; + + // Nuke the appropriate borders so that the parent can handle them + > thead, + > tbody, + > tfoot { + > tr { + > th:first-child, + > td:first-child { + border-left: 0; + } + > th:last-child, + > td:last-child { + border-right: 0; + } + } + } + + // Only nuke the last row's bottom-border in `tbody` and `tfoot` since + // chances are there will be only one `tr` in a `thead` and that would + // remove the border altogether. + > tbody, + > tfoot { + > tr:last-child { + > th, + > td { + border-bottom: 0; + } + } + } + + } + } +} diff --git a/app/assets/less/vendor/bootstrap/theme.less b/app/assets/less/vendor/bootstrap/theme.less new file mode 100644 index 0000000..8f51d91 --- /dev/null +++ b/app/assets/less/vendor/bootstrap/theme.less @@ -0,0 +1,291 @@ +/*! + * Bootstrap v3.3.6 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +// +// Load core variables and mixins +// -------------------------------------------------- + +@import "variables.less"; +@import "mixins.less"; + + +// +// Buttons +// -------------------------------------------------- + +// Common styles +.btn-default, +.btn-primary, +.btn-success, +.btn-info, +.btn-warning, +.btn-danger { + text-shadow: 0 -1px 0 rgba(0,0,0,.2); + @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.075); + .box-shadow(@shadow); + + // Reset the shadow + &:active, + &.active { + .box-shadow(inset 0 3px 5px rgba(0,0,0,.125)); + } + + &.disabled, + &[disabled], + fieldset[disabled] & { + .box-shadow(none); + } + + .badge { + text-shadow: none; + } +} + +// Mixin for generating new styles +.btn-styles(@btn-color: #555) { + #gradient > .vertical(@start-color: @btn-color; @end-color: darken(@btn-color, 12%)); + .reset-filter(); // Disable gradients for IE9 because filter bleeds through rounded corners; see https://github.com/twbs/bootstrap/issues/10620 + background-repeat: repeat-x; + border-color: darken(@btn-color, 14%); + + &:hover, + &:focus { + background-color: darken(@btn-color, 12%); + background-position: 0 -15px; + } + + &:active, + &.active { + background-color: darken(@btn-color, 12%); + border-color: darken(@btn-color, 14%); + } + + &.disabled, + &[disabled], + fieldset[disabled] & { + &, + &:hover, + &:focus, + &.focus, + &:active, + &.active { + background-color: darken(@btn-color, 12%); + background-image: none; + } + } +} + +// Common styles +.btn { + // Remove the gradient for the pressed/active state + &:active, + &.active { + background-image: none; + } +} + +// Apply the mixin to the buttons +.btn-default { .btn-styles(@btn-default-bg); text-shadow: 0 1px 0 #fff; border-color: #ccc; } +.btn-primary { .btn-styles(@btn-primary-bg); } +.btn-success { .btn-styles(@btn-success-bg); } +.btn-info { .btn-styles(@btn-info-bg); } +.btn-warning { .btn-styles(@btn-warning-bg); } +.btn-danger { .btn-styles(@btn-danger-bg); } + + +// +// Images +// -------------------------------------------------- + +.thumbnail, +.img-thumbnail { + .box-shadow(0 1px 2px rgba(0,0,0,.075)); +} + + +// +// Dropdowns +// -------------------------------------------------- + +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + #gradient > .vertical(@start-color: @dropdown-link-hover-bg; @end-color: darken(@dropdown-link-hover-bg, 5%)); + background-color: darken(@dropdown-link-hover-bg, 5%); +} +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%)); + background-color: darken(@dropdown-link-active-bg, 5%); +} + + +// +// Navbar +// -------------------------------------------------- + +// Default navbar +.navbar-default { + #gradient > .vertical(@start-color: lighten(@navbar-default-bg, 10%); @end-color: @navbar-default-bg); + .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered + border-radius: @navbar-border-radius; + @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 5px rgba(0,0,0,.075); + .box-shadow(@shadow); + + .navbar-nav > .open > a, + .navbar-nav > .active > a { + #gradient > .vertical(@start-color: darken(@navbar-default-link-active-bg, 5%); @end-color: darken(@navbar-default-link-active-bg, 2%)); + .box-shadow(inset 0 3px 9px rgba(0,0,0,.075)); + } +} +.navbar-brand, +.navbar-nav > li > a { + text-shadow: 0 1px 0 rgba(255,255,255,.25); +} + +// Inverted navbar +.navbar-inverse { + #gradient > .vertical(@start-color: lighten(@navbar-inverse-bg, 10%); @end-color: @navbar-inverse-bg); + .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered; see https://github.com/twbs/bootstrap/issues/10257 + border-radius: @navbar-border-radius; + .navbar-nav > .open > a, + .navbar-nav > .active > a { + #gradient > .vertical(@start-color: @navbar-inverse-link-active-bg; @end-color: lighten(@navbar-inverse-link-active-bg, 2.5%)); + .box-shadow(inset 0 3px 9px rgba(0,0,0,.25)); + } + + .navbar-brand, + .navbar-nav > li > a { + text-shadow: 0 -1px 0 rgba(0,0,0,.25); + } +} + +// Undo rounded corners in static and fixed navbars +.navbar-static-top, +.navbar-fixed-top, +.navbar-fixed-bottom { + border-radius: 0; +} + +// Fix active state of dropdown items in collapsed mode +@media (max-width: @grid-float-breakpoint-max) { + .navbar .navbar-nav .open .dropdown-menu > .active > a { + &, + &:hover, + &:focus { + color: #fff; + #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%)); + } + } +} + + +// +// Alerts +// -------------------------------------------------- + +// Common styles +.alert { + text-shadow: 0 1px 0 rgba(255,255,255,.2); + @shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 1px 2px rgba(0,0,0,.05); + .box-shadow(@shadow); +} + +// Mixin for generating new styles +.alert-styles(@color) { + #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 7.5%)); + border-color: darken(@color, 15%); +} + +// Apply the mixin to the alerts +.alert-success { .alert-styles(@alert-success-bg); } +.alert-info { .alert-styles(@alert-info-bg); } +.alert-warning { .alert-styles(@alert-warning-bg); } +.alert-danger { .alert-styles(@alert-danger-bg); } + + +// +// Progress bars +// -------------------------------------------------- + +// Give the progress background some depth +.progress { + #gradient > .vertical(@start-color: darken(@progress-bg, 4%); @end-color: @progress-bg) +} + +// Mixin for generating new styles +.progress-bar-styles(@color) { + #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 10%)); +} + +// Apply the mixin to the progress bars +.progress-bar { .progress-bar-styles(@progress-bar-bg); } +.progress-bar-success { .progress-bar-styles(@progress-bar-success-bg); } +.progress-bar-info { .progress-bar-styles(@progress-bar-info-bg); } +.progress-bar-warning { .progress-bar-styles(@progress-bar-warning-bg); } +.progress-bar-danger { .progress-bar-styles(@progress-bar-danger-bg); } + +// Reset the striped class because our mixins don't do multiple gradients and +// the above custom styles override the new `.progress-bar-striped` in v3.2.0. +.progress-bar-striped { + #gradient > .striped(); +} + + +// +// List groups +// -------------------------------------------------- + +.list-group { + border-radius: @border-radius-base; + .box-shadow(0 1px 2px rgba(0,0,0,.075)); +} +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { + text-shadow: 0 -1px 0 darken(@list-group-active-bg, 10%); + #gradient > .vertical(@start-color: @list-group-active-bg; @end-color: darken(@list-group-active-bg, 7.5%)); + border-color: darken(@list-group-active-border, 7.5%); + + .badge { + text-shadow: none; + } +} + + +// +// Panels +// -------------------------------------------------- + +// Common styles +.panel { + .box-shadow(0 1px 2px rgba(0,0,0,.05)); +} + +// Mixin for generating new styles +.panel-heading-styles(@color) { + #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 5%)); +} + +// Apply the mixin to the panel headings only +.panel-default > .panel-heading { .panel-heading-styles(@panel-default-heading-bg); } +.panel-primary > .panel-heading { .panel-heading-styles(@panel-primary-heading-bg); } +.panel-success > .panel-heading { .panel-heading-styles(@panel-success-heading-bg); } +.panel-info > .panel-heading { .panel-heading-styles(@panel-info-heading-bg); } +.panel-warning > .panel-heading { .panel-heading-styles(@panel-warning-heading-bg); } +.panel-danger > .panel-heading { .panel-heading-styles(@panel-danger-heading-bg); } + + +// +// Wells +// -------------------------------------------------- + +.well { + #gradient > .vertical(@start-color: darken(@well-bg, 5%); @end-color: @well-bg); + border-color: darken(@well-bg, 10%); + @shadow: inset 0 1px 3px rgba(0,0,0,.05), 0 1px 0 rgba(255,255,255,.1); + .box-shadow(@shadow); +} diff --git a/app/assets/less/vendor/bootstrap/thumbnails.less b/app/assets/less/vendor/bootstrap/thumbnails.less new file mode 100644 index 0000000..0713e67 --- /dev/null +++ b/app/assets/less/vendor/bootstrap/thumbnails.less @@ -0,0 +1,36 @@ +// +// Thumbnails +// -------------------------------------------------- + + +// Mixin and adjust the regular image class +.thumbnail { + display: block; + padding: @thumbnail-padding; + margin-bottom: @line-height-computed; + line-height: @line-height-base; + background-color: @thumbnail-bg; + border: 1px solid @thumbnail-border; + border-radius: @thumbnail-border-radius; + .transition(border .2s ease-in-out); + + > img, + a > img { + &:extend(.img-responsive); + margin-left: auto; + margin-right: auto; + } + + // Add a hover state for linked versions only + a&:hover, + a&:focus, + a&.active { + border-color: @link-color; + } + + // Image captions + .caption { + padding: @thumbnail-caption-padding; + color: @thumbnail-caption-color; + } +} diff --git a/app/assets/less/vendor/bootstrap/tooltip.less b/app/assets/less/vendor/bootstrap/tooltip.less new file mode 100644 index 0000000..b48d63e --- /dev/null +++ b/app/assets/less/vendor/bootstrap/tooltip.less @@ -0,0 +1,101 @@ +// +// Tooltips +// -------------------------------------------------- + + +// Base class +.tooltip { + position: absolute; + z-index: @zindex-tooltip; + display: block; + // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element. + // So reset our font and text properties to avoid inheriting weird values. + .reset-text(); + font-size: @font-size-small; + + .opacity(0); + + &.in { .opacity(@tooltip-opacity); } + &.top { margin-top: -3px; padding: @tooltip-arrow-width 0; } + &.right { margin-left: 3px; padding: 0 @tooltip-arrow-width; } + &.bottom { margin-top: 3px; padding: @tooltip-arrow-width 0; } + &.left { margin-left: -3px; padding: 0 @tooltip-arrow-width; } +} + +// Wrapper for the tooltip content +.tooltip-inner { + max-width: @tooltip-max-width; + padding: 3px 8px; + color: @tooltip-color; + text-align: center; + background-color: @tooltip-bg; + border-radius: @border-radius-base; +} + +// Arrows +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +// Note: Deprecated .top-left, .top-right, .bottom-left, and .bottom-right as of v3.3.1 +.tooltip { + &.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -@tooltip-arrow-width; + border-width: @tooltip-arrow-width @tooltip-arrow-width 0; + border-top-color: @tooltip-arrow-color; + } + &.top-left .tooltip-arrow { + bottom: 0; + right: @tooltip-arrow-width; + margin-bottom: -@tooltip-arrow-width; + border-width: @tooltip-arrow-width @tooltip-arrow-width 0; + border-top-color: @tooltip-arrow-color; + } + &.top-right .tooltip-arrow { + bottom: 0; + left: @tooltip-arrow-width; + margin-bottom: -@tooltip-arrow-width; + border-width: @tooltip-arrow-width @tooltip-arrow-width 0; + border-top-color: @tooltip-arrow-color; + } + &.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -@tooltip-arrow-width; + border-width: @tooltip-arrow-width @tooltip-arrow-width @tooltip-arrow-width 0; + border-right-color: @tooltip-arrow-color; + } + &.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -@tooltip-arrow-width; + border-width: @tooltip-arrow-width 0 @tooltip-arrow-width @tooltip-arrow-width; + border-left-color: @tooltip-arrow-color; + } + &.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -@tooltip-arrow-width; + border-width: 0 @tooltip-arrow-width @tooltip-arrow-width; + border-bottom-color: @tooltip-arrow-color; + } + &.bottom-left .tooltip-arrow { + top: 0; + right: @tooltip-arrow-width; + margin-top: -@tooltip-arrow-width; + border-width: 0 @tooltip-arrow-width @tooltip-arrow-width; + border-bottom-color: @tooltip-arrow-color; + } + &.bottom-right .tooltip-arrow { + top: 0; + left: @tooltip-arrow-width; + margin-top: -@tooltip-arrow-width; + border-width: 0 @tooltip-arrow-width @tooltip-arrow-width; + border-bottom-color: @tooltip-arrow-color; + } +} diff --git a/app/assets/less/vendor/bootstrap/type.less b/app/assets/less/vendor/bootstrap/type.less new file mode 100644 index 0000000..0d4fee4 --- /dev/null +++ b/app/assets/less/vendor/bootstrap/type.less @@ -0,0 +1,302 @@ +// +// Typography +// -------------------------------------------------- + + +// Headings +// ------------------------- + +h1, h2, h3, h4, h5, h6, +.h1, .h2, .h3, .h4, .h5, .h6 { + font-family: @headings-font-family; + font-weight: @headings-font-weight; + line-height: @headings-line-height; + color: @headings-color; + + small, + .small { + font-weight: normal; + line-height: 1; + color: @headings-small-color; + } +} + +h1, .h1, +h2, .h2, +h3, .h3 { + margin-top: @line-height-computed; + margin-bottom: (@line-height-computed / 2); + + small, + .small { + font-size: 65%; + } +} +h4, .h4, +h5, .h5, +h6, .h6 { + margin-top: (@line-height-computed / 2); + margin-bottom: (@line-height-computed / 2); + + small, + .small { + font-size: 75%; + } +} + +h1, .h1 { font-size: @font-size-h1; } +h2, .h2 { font-size: @font-size-h2; } +h3, .h3 { font-size: @font-size-h3; } +h4, .h4 { font-size: @font-size-h4; } +h5, .h5 { font-size: @font-size-h5; } +h6, .h6 { font-size: @font-size-h6; } + + +// Body text +// ------------------------- + +p { + margin: 0 0 (@line-height-computed / 2); +} + +.lead { + margin-bottom: @line-height-computed; + font-size: floor((@font-size-base * 1.15)); + font-weight: 300; + line-height: 1.4; + + @media (min-width: @screen-sm-min) { + font-size: (@font-size-base * 1.5); + } +} + + +// Emphasis & misc +// ------------------------- + +// Ex: (12px small font / 14px base font) * 100% = about 85% +small, +.small { + font-size: floor((100% * @font-size-small / @font-size-base)); +} + +mark, +.mark { + background-color: @state-warning-bg; + padding: .2em; +} + +// Alignment +.text-left { text-align: left; } +.text-right { text-align: right; } +.text-center { text-align: center; } +.text-justify { text-align: justify; } +.text-nowrap { white-space: nowrap; } + +// Transformation +.text-lowercase { text-transform: lowercase; } +.text-uppercase { text-transform: uppercase; } +.text-capitalize { text-transform: capitalize; } + +// Contextual colors +.text-muted { + color: @text-muted; +} +.text-primary { + .text-emphasis-variant(@brand-primary); +} +.text-success { + .text-emphasis-variant(@state-success-text); +} +.text-info { + .text-emphasis-variant(@state-info-text); +} +.text-warning { + .text-emphasis-variant(@state-warning-text); +} +.text-danger { + .text-emphasis-variant(@state-danger-text); +} + +// Contextual backgrounds +// For now we'll leave these alongside the text classes until v4 when we can +// safely shift things around (per SemVer rules). +.bg-primary { + // Given the contrast here, this is the only class to have its color inverted + // automatically. + color: #fff; + .bg-variant(@brand-primary); +} +.bg-success { + .bg-variant(@state-success-bg); +} +.bg-info { + .bg-variant(@state-info-bg); +} +.bg-warning { + .bg-variant(@state-warning-bg); +} +.bg-danger { + .bg-variant(@state-danger-bg); +} + + +// Page header +// ------------------------- + +.page-header { + padding-bottom: ((@line-height-computed / 2) - 1); + margin: (@line-height-computed * 2) 0 @line-height-computed; + border-bottom: 1px solid @page-header-border-color; +} + + +// Lists +// ------------------------- + +// Unordered and Ordered lists +ul, +ol { + margin-top: 0; + margin-bottom: (@line-height-computed / 2); + ul, + ol { + margin-bottom: 0; + } +} + +// List options + +// Unstyled keeps list items block level, just removes default browser padding and list-style +.list-unstyled { + padding-left: 0; + list-style: none; +} + +// Inline turns list items into inline-block +.list-inline { + .list-unstyled(); + margin-left: -5px; + + > li { + display: inline-block; + padding-left: 5px; + padding-right: 5px; + } +} + +// Description Lists +dl { + margin-top: 0; // Remove browser default + margin-bottom: @line-height-computed; +} +dt, +dd { + line-height: @line-height-base; +} +dt { + font-weight: bold; +} +dd { + margin-left: 0; // Undo browser default +} + +// Horizontal description lists +// +// Defaults to being stacked without any of the below styles applied, until the +// grid breakpoint is reached (default of ~768px). + +.dl-horizontal { + dd { + &:extend(.clearfix all); // Clear the floated `dt` if an empty `dd` is present + } + + @media (min-width: @dl-horizontal-breakpoint) { + dt { + float: left; + width: (@dl-horizontal-offset - 20); + clear: left; + text-align: right; + .text-overflow(); + } + dd { + margin-left: @dl-horizontal-offset; + } + } +} + + +// Misc +// ------------------------- + +// Abbreviations and acronyms +abbr[title], +// Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257 +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted @abbr-border-color; +} +.initialism { + font-size: 90%; + .text-uppercase(); +} + +// Blockquotes +blockquote { + padding: (@line-height-computed / 2) @line-height-computed; + margin: 0 0 @line-height-computed; + font-size: @blockquote-font-size; + border-left: 5px solid @blockquote-border-color; + + p, + ul, + ol { + &:last-child { + margin-bottom: 0; + } + } + + // Note: Deprecated small and .small as of v3.1.0 + // Context: https://github.com/twbs/bootstrap/issues/11660 + footer, + small, + .small { + display: block; + font-size: 80%; // back to default font-size + line-height: @line-height-base; + color: @blockquote-small-color; + + &:before { + content: '\2014 \00A0'; // em dash, nbsp + } + } +} + +// Opposite alignment of blockquote +// +// Heads up: `blockquote.pull-right` has been deprecated as of v3.1.0. +.blockquote-reverse, +blockquote.pull-right { + padding-right: 15px; + padding-left: 0; + border-right: 5px solid @blockquote-border-color; + border-left: 0; + text-align: right; + + // Account for citation + footer, + small, + .small { + &:before { content: ''; } + &:after { + content: '\00A0 \2014'; // nbsp, em dash + } + } +} + +// Addresses +address { + margin-bottom: @line-height-computed; + font-style: normal; + line-height: @line-height-base; +} diff --git a/app/assets/less/vendor/bootstrap/utilities.less b/app/assets/less/vendor/bootstrap/utilities.less new file mode 100644 index 0000000..7a8ca27 --- /dev/null +++ b/app/assets/less/vendor/bootstrap/utilities.less @@ -0,0 +1,55 @@ +// +// Utility classes +// -------------------------------------------------- + + +// Floats +// ------------------------- + +.clearfix { + .clearfix(); +} +.center-block { + .center-block(); +} +.pull-right { + float: right !important; +} +.pull-left { + float: left !important; +} + + +// Toggling content +// ------------------------- + +// Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1 +.hide { + display: none !important; +} +.show { + display: block !important; +} +.invisible { + visibility: hidden; +} +.text-hide { + .text-hide(); +} + + +// Hide from screenreaders and browsers +// +// Credit: HTML5 Boilerplate + +.hidden { + display: none !important; +} + + +// For Affix plugin +// ------------------------- + +.affix { + position: fixed; +} diff --git a/app/assets/less/vendor/bootstrap/variables.less b/app/assets/less/vendor/bootstrap/variables.less new file mode 100644 index 0000000..b057ef5 --- /dev/null +++ b/app/assets/less/vendor/bootstrap/variables.less @@ -0,0 +1,869 @@ +// +// Variables +// -------------------------------------------------- + + +//== Colors +// +//## Gray and brand colors for use across Bootstrap. + +@gray-base: #000; +@gray-darker: lighten(@gray-base, 13.5%); // #222 +@gray-dark: lighten(@gray-base, 20%); // #333 +@gray: lighten(@gray-base, 33.5%); // #555 +@gray-light: lighten(@gray-base, 46.7%); // #777 +@gray-lighter: lighten(@gray-base, 93.5%); // #eee + +@brand-primary: darken(#428bca, 6.5%); // #337ab7 +@brand-success: #5cb85c; +@brand-info: #5bc0de; +@brand-warning: #f0ad4e; +@brand-danger: #d9534f; + + +//== Scaffolding +// +//## Settings for some of the most global styles. + +//** Background color for ``. +@body-bg: #fff; +//** Global text color on ``. +@text-color: @gray-dark; + +//** Global textual link color. +@link-color: @brand-primary; +//** Link hover color set via `darken()` function. +@link-hover-color: darken(@link-color, 15%); +//** Link hover decoration. +@link-hover-decoration: underline; + + +//== Typography +// +//## Font, line-height, and color for body text, headings, and more. + +@font-family-sans-serif: "Helvetica Neue", Helvetica, Arial, sans-serif; +@font-family-serif: Georgia, "Times New Roman", Times, serif; +//** Default monospace fonts for ``, ``, and `
`.
+@font-family-monospace:   Menlo, Monaco, Consolas, "Courier New", monospace;
+@font-family-base:        @font-family-sans-serif;
+
+@font-size-base:          14px;
+@font-size-large:         ceil((@font-size-base * 1.25)); // ~18px
+@font-size-small:         ceil((@font-size-base * 0.85)); // ~12px
+
+@font-size-h1:            floor((@font-size-base * 2.6)); // ~36px
+@font-size-h2:            floor((@font-size-base * 2.15)); // ~30px
+@font-size-h3:            ceil((@font-size-base * 1.7)); // ~24px
+@font-size-h4:            ceil((@font-size-base * 1.25)); // ~18px
+@font-size-h5:            @font-size-base;
+@font-size-h6:            ceil((@font-size-base * 0.85)); // ~12px
+
+//** Unit-less `line-height` for use in components like buttons.
+@line-height-base:        1.428571429; // 20/14
+//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
+@line-height-computed:    floor((@font-size-base * @line-height-base)); // ~20px
+
+//** By default, this inherits from the ``.
+@headings-font-family:    inherit;
+@headings-font-weight:    500;
+@headings-line-height:    1.1;
+@headings-color:          inherit;
+
+
+//== Iconography
+//
+//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.
+
+//** Load fonts from this directory.
+@icon-font-path:          "../fonts/";
+//** File name for all font files.
+@icon-font-name:          "glyphicons-halflings-regular";
+//** Element ID within SVG icon file.
+@icon-font-svg-id:        "glyphicons_halflingsregular";
+
+
+//== Components
+//
+//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).
+
+@padding-base-vertical:     6px;
+@padding-base-horizontal:   12px;
+
+@padding-large-vertical:    10px;
+@padding-large-horizontal:  16px;
+
+@padding-small-vertical:    5px;
+@padding-small-horizontal:  10px;
+
+@padding-xs-vertical:       1px;
+@padding-xs-horizontal:     5px;
+
+@line-height-large:         1.3333333; // extra decimals for Win 8.1 Chrome
+@line-height-small:         1.5;
+
+@border-radius-base:        4px;
+@border-radius-large:       6px;
+@border-radius-small:       3px;
+
+//** Global color for active items (e.g., navs or dropdowns).
+@component-active-color:    #fff;
+//** Global background color for active items (e.g., navs or dropdowns).
+@component-active-bg:       @brand-primary;
+
+//** Width of the `border` for generating carets that indicator dropdowns.
+@caret-width-base:          4px;
+//** Carets increase slightly in size for larger components.
+@caret-width-large:         5px;
+
+
+//== Tables
+//
+//## Customizes the `.table` component with basic values, each used across all table variations.
+
+//** Padding for ``s and ``s.
+@table-cell-padding:            8px;
+//** Padding for cells in `.table-condensed`.
+@table-condensed-cell-padding:  5px;
+
+//** Default background color used for all tables.
+@table-bg:                      transparent;
+//** Background color used for `.table-striped`.
+@table-bg-accent:               #f9f9f9;
+//** Background color used for `.table-hover`.
+@table-bg-hover:                #f5f5f5;
+@table-bg-active:               @table-bg-hover;
+
+//** Border color for table and cell borders.
+@table-border-color:            #ddd;
+
+
+//== Buttons
+//
+//## For each of Bootstrap's buttons, define text, background and border color.
+
+@btn-font-weight:                normal;
+
+@btn-default-color:              #333;
+@btn-default-bg:                 #fff;
+@btn-default-border:             #ccc;
+
+@btn-primary-color:              #fff;
+@btn-primary-bg:                 @brand-primary;
+@btn-primary-border:             darken(@btn-primary-bg, 5%);
+
+@btn-success-color:              #fff;
+@btn-success-bg:                 @brand-success;
+@btn-success-border:             darken(@btn-success-bg, 5%);
+
+@btn-info-color:                 #fff;
+@btn-info-bg:                    @brand-info;
+@btn-info-border:                darken(@btn-info-bg, 5%);
+
+@btn-warning-color:              #fff;
+@btn-warning-bg:                 @brand-warning;
+@btn-warning-border:             darken(@btn-warning-bg, 5%);
+
+@btn-danger-color:               #fff;
+@btn-danger-bg:                  @brand-danger;
+@btn-danger-border:              darken(@btn-danger-bg, 5%);
+
+@btn-link-disabled-color:        @gray-light;
+
+// Allows for customizing button radius independently from global border radius
+@btn-border-radius-base:         @border-radius-base;
+@btn-border-radius-large:        @border-radius-large;
+@btn-border-radius-small:        @border-radius-small;
+
+
+//== Forms
+//
+//##
+
+//** `` background color
+@input-bg:                       #fff;
+//** `` background color
+@input-bg-disabled:              @gray-lighter;
+
+//** Text color for ``s
+@input-color:                    @gray;
+//** `` border color
+@input-border:                   #ccc;
+
+// TODO: Rename `@input-border-radius` to `@input-border-radius-base` in v4
+//** Default `.form-control` border radius
+// This has no effect on ``s in CSS.
+@input-border-radius:            @border-radius-base;
+//** Large `.form-control` border radius
+@input-border-radius-large:      @border-radius-large;
+//** Small `.form-control` border radius
+@input-border-radius-small:      @border-radius-small;
+
+//** Border color for inputs on focus
+@input-border-focus:             #66afe9;
+
+//** Placeholder text color
+@input-color-placeholder:        #999;
+
+//** Default `.form-control` height
+@input-height-base:              (@line-height-computed + (@padding-base-vertical * 2) + 2);
+//** Large `.form-control` height
+@input-height-large:             (ceil(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 2);
+//** Small `.form-control` height
+@input-height-small:             (floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) + 2);
+
+//** `.form-group` margin
+@form-group-margin-bottom:       15px;
+
+@legend-color:                   @gray-dark;
+@legend-border-color:            #e5e5e5;
+
+//** Background color for textual input addons
+@input-group-addon-bg:           @gray-lighter;
+//** Border color for textual input addons
+@input-group-addon-border-color: @input-border;
+
+//** Disabled cursor for form controls and buttons.
+@cursor-disabled:                not-allowed;
+
+
+//== Dropdowns
+//
+//## Dropdown menu container and contents.
+
+//** Background for the dropdown menu.
+@dropdown-bg:                    #fff;
+//** Dropdown menu `border-color`.
+@dropdown-border:                rgba(0,0,0,.15);
+//** Dropdown menu `border-color` **for IE8**.
+@dropdown-fallback-border:       #ccc;
+//** Divider color for between dropdown items.
+@dropdown-divider-bg:            #e5e5e5;
+
+//** Dropdown link text color.
+@dropdown-link-color:            @gray-dark;
+//** Hover color for dropdown links.
+@dropdown-link-hover-color:      darken(@gray-dark, 5%);
+//** Hover background for dropdown links.
+@dropdown-link-hover-bg:         #f5f5f5;
+
+//** Active dropdown menu item text color.
+@dropdown-link-active-color:     @component-active-color;
+//** Active dropdown menu item background color.
+@dropdown-link-active-bg:        @component-active-bg;
+
+//** Disabled dropdown menu item background color.
+@dropdown-link-disabled-color:   @gray-light;
+
+//** Text color for headers within dropdown menus.
+@dropdown-header-color:          @gray-light;
+
+//** Deprecated `@dropdown-caret-color` as of v3.1.0
+@dropdown-caret-color:           #000;
+
+
+//-- Z-index master list
+//
+// Warning: Avoid customizing these values. They're used for a bird's eye view
+// of components dependent on the z-axis and are designed to all work together.
+//
+// Note: These variables are not generated into the Customizer.
+
+@zindex-navbar:            1000;
+@zindex-dropdown:          1000;
+@zindex-popover:           1060;
+@zindex-tooltip:           1070;
+@zindex-navbar-fixed:      1030;
+@zindex-modal-background:  1040;
+@zindex-modal:             1050;
+
+
+//== Media queries breakpoints
+//
+//## Define the breakpoints at which your layout will change, adapting to different screen sizes.
+
+// Extra small screen / phone
+//** Deprecated `@screen-xs` as of v3.0.1
+@screen-xs:                  480px;
+//** Deprecated `@screen-xs-min` as of v3.2.0
+@screen-xs-min:              @screen-xs;
+//** Deprecated `@screen-phone` as of v3.0.1
+@screen-phone:               @screen-xs-min;
+
+// Small screen / tablet
+//** Deprecated `@screen-sm` as of v3.0.1
+@screen-sm:                  768px;
+@screen-sm-min:              @screen-sm;
+//** Deprecated `@screen-tablet` as of v3.0.1
+@screen-tablet:              @screen-sm-min;
+
+// Medium screen / desktop
+//** Deprecated `@screen-md` as of v3.0.1
+@screen-md:                  992px;
+@screen-md-min:              @screen-md;
+//** Deprecated `@screen-desktop` as of v3.0.1
+@screen-desktop:             @screen-md-min;
+
+// Large screen / wide desktop
+//** Deprecated `@screen-lg` as of v3.0.1
+@screen-lg:                  1200px;
+@screen-lg-min:              @screen-lg;
+//** Deprecated `@screen-lg-desktop` as of v3.0.1
+@screen-lg-desktop:          @screen-lg-min;
+
+// So media queries don't overlap when required, provide a maximum
+@screen-xs-max:              (@screen-sm-min - 1);
+@screen-sm-max:              (@screen-md-min - 1);
+@screen-md-max:              (@screen-lg-min - 1);
+
+
+//== Grid system
+//
+//## Define your custom responsive grid.
+
+//** Number of columns in the grid.
+@grid-columns:              12;
+//** Padding between columns. Gets divided in half for the left and right.
+@grid-gutter-width:         30px;
+// Navbar collapse
+//** Point at which the navbar becomes uncollapsed.
+@grid-float-breakpoint:     @screen-sm-min;
+//** Point at which the navbar begins collapsing.
+@grid-float-breakpoint-max: (@grid-float-breakpoint - 1);
+
+
+//== Container sizes
+//
+//## Define the maximum width of `.container` for different screen sizes.
+
+// Small screen / tablet
+@container-tablet:             (720px + @grid-gutter-width);
+//** For `@screen-sm-min` and up.
+@container-sm:                 @container-tablet;
+
+// Medium screen / desktop
+@container-desktop:            (940px + @grid-gutter-width);
+//** For `@screen-md-min` and up.
+@container-md:                 @container-desktop;
+
+// Large screen / wide desktop
+@container-large-desktop:      (1140px + @grid-gutter-width);
+//** For `@screen-lg-min` and up.
+@container-lg:                 @container-large-desktop;
+
+
+//== Navbar
+//
+//##
+
+// Basics of a navbar
+@navbar-height:                    50px;
+@navbar-margin-bottom:             @line-height-computed;
+@navbar-border-radius:             @border-radius-base;
+@navbar-padding-horizontal:        floor((@grid-gutter-width / 2));
+@navbar-padding-vertical:          ((@navbar-height - @line-height-computed) / 2);
+@navbar-collapse-max-height:       340px;
+
+@navbar-default-color:             #777;
+@navbar-default-bg:                #f8f8f8;
+@navbar-default-border:            darken(@navbar-default-bg, 6.5%);
+
+// Navbar links
+@navbar-default-link-color:                #777;
+@navbar-default-link-hover-color:          #333;
+@navbar-default-link-hover-bg:             transparent;
+@navbar-default-link-active-color:         #555;
+@navbar-default-link-active-bg:            darken(@navbar-default-bg, 6.5%);
+@navbar-default-link-disabled-color:       #ccc;
+@navbar-default-link-disabled-bg:          transparent;
+
+// Navbar brand label
+@navbar-default-brand-color:               @navbar-default-link-color;
+@navbar-default-brand-hover-color:         darken(@navbar-default-brand-color, 10%);
+@navbar-default-brand-hover-bg:            transparent;
+
+// Navbar toggle
+@navbar-default-toggle-hover-bg:           #ddd;
+@navbar-default-toggle-icon-bar-bg:        #888;
+@navbar-default-toggle-border-color:       #ddd;
+
+
+//=== Inverted navbar
+// Reset inverted navbar basics
+@navbar-inverse-color:                      lighten(@gray-light, 15%);
+@navbar-inverse-bg:                         #222;
+@navbar-inverse-border:                     darken(@navbar-inverse-bg, 10%);
+
+// Inverted navbar links
+@navbar-inverse-link-color:                 lighten(@gray-light, 15%);
+@navbar-inverse-link-hover-color:           #fff;
+@navbar-inverse-link-hover-bg:              transparent;
+@navbar-inverse-link-active-color:          @navbar-inverse-link-hover-color;
+@navbar-inverse-link-active-bg:             darken(@navbar-inverse-bg, 10%);
+@navbar-inverse-link-disabled-color:        #444;
+@navbar-inverse-link-disabled-bg:           transparent;
+
+// Inverted navbar brand label
+@navbar-inverse-brand-color:                @navbar-inverse-link-color;
+@navbar-inverse-brand-hover-color:          #fff;
+@navbar-inverse-brand-hover-bg:             transparent;
+
+// Inverted navbar toggle
+@navbar-inverse-toggle-hover-bg:            #333;
+@navbar-inverse-toggle-icon-bar-bg:         #fff;
+@navbar-inverse-toggle-border-color:        #333;
+
+
+//== Navs
+//
+//##
+
+//=== Shared nav styles
+@nav-link-padding:                          10px 15px;
+@nav-link-hover-bg:                         @gray-lighter;
+
+@nav-disabled-link-color:                   @gray-light;
+@nav-disabled-link-hover-color:             @gray-light;
+
+//== Tabs
+@nav-tabs-border-color:                     #ddd;
+
+@nav-tabs-link-hover-border-color:          @gray-lighter;
+
+@nav-tabs-active-link-hover-bg:             @body-bg;
+@nav-tabs-active-link-hover-color:          @gray;
+@nav-tabs-active-link-hover-border-color:   #ddd;
+
+@nav-tabs-justified-link-border-color:            #ddd;
+@nav-tabs-justified-active-link-border-color:     @body-bg;
+
+//== Pills
+@nav-pills-border-radius:                   @border-radius-base;
+@nav-pills-active-link-hover-bg:            @component-active-bg;
+@nav-pills-active-link-hover-color:         @component-active-color;
+
+
+//== Pagination
+//
+//##
+
+@pagination-color:                     @link-color;
+@pagination-bg:                        #fff;
+@pagination-border:                    #ddd;
+
+@pagination-hover-color:               @link-hover-color;
+@pagination-hover-bg:                  @gray-lighter;
+@pagination-hover-border:              #ddd;
+
+@pagination-active-color:              #fff;
+@pagination-active-bg:                 @brand-primary;
+@pagination-active-border:             @brand-primary;
+
+@pagination-disabled-color:            @gray-light;
+@pagination-disabled-bg:               #fff;
+@pagination-disabled-border:           #ddd;
+
+
+//== Pager
+//
+//##
+
+@pager-bg:                             @pagination-bg;
+@pager-border:                         @pagination-border;
+@pager-border-radius:                  15px;
+
+@pager-hover-bg:                       @pagination-hover-bg;
+
+@pager-active-bg:                      @pagination-active-bg;
+@pager-active-color:                   @pagination-active-color;
+
+@pager-disabled-color:                 @pagination-disabled-color;
+
+
+//== Jumbotron
+//
+//##
+
+@jumbotron-padding:              30px;
+@jumbotron-color:                inherit;
+@jumbotron-bg:                   @gray-lighter;
+@jumbotron-heading-color:        inherit;
+@jumbotron-font-size:            ceil((@font-size-base * 1.5));
+@jumbotron-heading-font-size:    ceil((@font-size-base * 4.5));
+
+
+//== Form states and alerts
+//
+//## Define colors for form feedback states and, by default, alerts.
+
+@state-success-text:             #3c763d;
+@state-success-bg:               #dff0d8;
+@state-success-border:           darken(spin(@state-success-bg, -10), 5%);
+
+@state-info-text:                #31708f;
+@state-info-bg:                  #d9edf7;
+@state-info-border:              darken(spin(@state-info-bg, -10), 7%);
+
+@state-warning-text:             #8a6d3b;
+@state-warning-bg:               #fcf8e3;
+@state-warning-border:           darken(spin(@state-warning-bg, -10), 5%);
+
+@state-danger-text:              #a94442;
+@state-danger-bg:                #f2dede;
+@state-danger-border:            darken(spin(@state-danger-bg, -10), 5%);
+
+
+//== Tooltips
+//
+//##
+
+//** Tooltip max width
+@tooltip-max-width:           200px;
+//** Tooltip text color
+@tooltip-color:               #fff;
+//** Tooltip background color
+@tooltip-bg:                  #000;
+@tooltip-opacity:             .9;
+
+//** Tooltip arrow width
+@tooltip-arrow-width:         5px;
+//** Tooltip arrow color
+@tooltip-arrow-color:         @tooltip-bg;
+
+
+//== Popovers
+//
+//##
+
+//** Popover body background color
+@popover-bg:                          #fff;
+//** Popover maximum width
+@popover-max-width:                   276px;
+//** Popover border color
+@popover-border-color:                rgba(0,0,0,.2);
+//** Popover fallback border color
+@popover-fallback-border-color:       #ccc;
+
+//** Popover title background color
+@popover-title-bg:                    darken(@popover-bg, 3%);
+
+//** Popover arrow width
+@popover-arrow-width:                 10px;
+//** Popover arrow color
+@popover-arrow-color:                 @popover-bg;
+
+//** Popover outer arrow width
+@popover-arrow-outer-width:           (@popover-arrow-width + 1);
+//** Popover outer arrow color
+@popover-arrow-outer-color:           fadein(@popover-border-color, 5%);
+//** Popover outer arrow fallback color
+@popover-arrow-outer-fallback-color:  darken(@popover-fallback-border-color, 20%);
+
+
+//== Labels
+//
+//##
+
+//** Default label background color
+@label-default-bg:            @gray-light;
+//** Primary label background color
+@label-primary-bg:            @brand-primary;
+//** Success label background color
+@label-success-bg:            @brand-success;
+//** Info label background color
+@label-info-bg:               @brand-info;
+//** Warning label background color
+@label-warning-bg:            @brand-warning;
+//** Danger label background color
+@label-danger-bg:             @brand-danger;
+
+//** Default label text color
+@label-color:                 #fff;
+//** Default text color of a linked label
+@label-link-hover-color:      #fff;
+
+
+//== Modals
+//
+//##
+
+//** Padding applied to the modal body
+@modal-inner-padding:         15px;
+
+//** Padding applied to the modal title
+@modal-title-padding:         15px;
+//** Modal title line-height
+@modal-title-line-height:     @line-height-base;
+
+//** Background color of modal content area
+@modal-content-bg:                             #fff;
+//** Modal content border color
+@modal-content-border-color:                   rgba(0,0,0,.2);
+//** Modal content border color **for IE8**
+@modal-content-fallback-border-color:          #999;
+
+//** Modal backdrop background color
+@modal-backdrop-bg:           #000;
+//** Modal backdrop opacity
+@modal-backdrop-opacity:      .5;
+//** Modal header border color
+@modal-header-border-color:   #e5e5e5;
+//** Modal footer border color
+@modal-footer-border-color:   @modal-header-border-color;
+
+@modal-lg:                    900px;
+@modal-md:                    600px;
+@modal-sm:                    300px;
+
+
+//== Alerts
+//
+//## Define alert colors, border radius, and padding.
+
+@alert-padding:               15px;
+@alert-border-radius:         @border-radius-base;
+@alert-link-font-weight:      bold;
+
+@alert-success-bg:            @state-success-bg;
+@alert-success-text:          @state-success-text;
+@alert-success-border:        @state-success-border;
+
+@alert-info-bg:               @state-info-bg;
+@alert-info-text:             @state-info-text;
+@alert-info-border:           @state-info-border;
+
+@alert-warning-bg:            @state-warning-bg;
+@alert-warning-text:          @state-warning-text;
+@alert-warning-border:        @state-warning-border;
+
+@alert-danger-bg:             @state-danger-bg;
+@alert-danger-text:           @state-danger-text;
+@alert-danger-border:         @state-danger-border;
+
+
+//== Progress bars
+//
+//##
+
+//** Background color of the whole progress component
+@progress-bg:                 #f5f5f5;
+//** Progress bar text color
+@progress-bar-color:          #fff;
+//** Variable for setting rounded corners on progress bar.
+@progress-border-radius:      @border-radius-base;
+
+//** Default progress bar color
+@progress-bar-bg:             @brand-primary;
+//** Success progress bar color
+@progress-bar-success-bg:     @brand-success;
+//** Warning progress bar color
+@progress-bar-warning-bg:     @brand-warning;
+//** Danger progress bar color
+@progress-bar-danger-bg:      @brand-danger;
+//** Info progress bar color
+@progress-bar-info-bg:        @brand-info;
+
+
+//== List group
+//
+//##
+
+//** Background color on `.list-group-item`
+@list-group-bg:                 #fff;
+//** `.list-group-item` border color
+@list-group-border:             #ddd;
+//** List group border radius
+@list-group-border-radius:      @border-radius-base;
+
+//** Background color of single list items on hover
+@list-group-hover-bg:           #f5f5f5;
+//** Text color of active list items
+@list-group-active-color:       @component-active-color;
+//** Background color of active list items
+@list-group-active-bg:          @component-active-bg;
+//** Border color of active list elements
+@list-group-active-border:      @list-group-active-bg;
+//** Text color for content within active list items
+@list-group-active-text-color:  lighten(@list-group-active-bg, 40%);
+
+//** Text color of disabled list items
+@list-group-disabled-color:      @gray-light;
+//** Background color of disabled list items
+@list-group-disabled-bg:         @gray-lighter;
+//** Text color for content within disabled list items
+@list-group-disabled-text-color: @list-group-disabled-color;
+
+@list-group-link-color:         #555;
+@list-group-link-hover-color:   @list-group-link-color;
+@list-group-link-heading-color: #333;
+
+
+//== Panels
+//
+//##
+
+@panel-bg:                    #fff;
+@panel-body-padding:          15px;
+@panel-heading-padding:       10px 15px;
+@panel-footer-padding:        @panel-heading-padding;
+@panel-border-radius:         @border-radius-base;
+
+//** Border color for elements within panels
+@panel-inner-border:          #ddd;
+@panel-footer-bg:             #f5f5f5;
+
+@panel-default-text:          @gray-dark;
+@panel-default-border:        #ddd;
+@panel-default-heading-bg:    #f5f5f5;
+
+@panel-primary-text:          #fff;
+@panel-primary-border:        @brand-primary;
+@panel-primary-heading-bg:    @brand-primary;
+
+@panel-success-text:          @state-success-text;
+@panel-success-border:        @state-success-border;
+@panel-success-heading-bg:    @state-success-bg;
+
+@panel-info-text:             @state-info-text;
+@panel-info-border:           @state-info-border;
+@panel-info-heading-bg:       @state-info-bg;
+
+@panel-warning-text:          @state-warning-text;
+@panel-warning-border:        @state-warning-border;
+@panel-warning-heading-bg:    @state-warning-bg;
+
+@panel-danger-text:           @state-danger-text;
+@panel-danger-border:         @state-danger-border;
+@panel-danger-heading-bg:     @state-danger-bg;
+
+
+//== Thumbnails
+//
+//##
+
+//** Padding around the thumbnail image
+@thumbnail-padding:           4px;
+//** Thumbnail background color
+@thumbnail-bg:                @body-bg;
+//** Thumbnail border color
+@thumbnail-border:            #ddd;
+//** Thumbnail border radius
+@thumbnail-border-radius:     @border-radius-base;
+
+//** Custom text color for thumbnail captions
+@thumbnail-caption-color:     @text-color;
+//** Padding around the thumbnail caption
+@thumbnail-caption-padding:   9px;
+
+
+//== Wells
+//
+//##
+
+@well-bg:                     #f5f5f5;
+@well-border:                 darken(@well-bg, 7%);
+
+
+//== Badges
+//
+//##
+
+@badge-color:                 #fff;
+//** Linked badge text color on hover
+@badge-link-hover-color:      #fff;
+@badge-bg:                    @gray-light;
+
+//** Badge text color in active nav link
+@badge-active-color:          @link-color;
+//** Badge background color in active nav link
+@badge-active-bg:             #fff;
+
+@badge-font-weight:           bold;
+@badge-line-height:           1;
+@badge-border-radius:         10px;
+
+
+//== Breadcrumbs
+//
+//##
+
+@breadcrumb-padding-vertical:   8px;
+@breadcrumb-padding-horizontal: 15px;
+//** Breadcrumb background color
+@breadcrumb-bg:                 #f5f5f5;
+//** Breadcrumb text color
+@breadcrumb-color:              #ccc;
+//** Text color of current page in the breadcrumb
+@breadcrumb-active-color:       @gray-light;
+//** Textual separator for between breadcrumb elements
+@breadcrumb-separator:          "/";
+
+
+//== Carousel
+//
+//##
+
+@carousel-text-shadow:                        0 1px 2px rgba(0,0,0,.6);
+
+@carousel-control-color:                      #fff;
+@carousel-control-width:                      15%;
+@carousel-control-opacity:                    .5;
+@carousel-control-font-size:                  20px;
+
+@carousel-indicator-active-bg:                #fff;
+@carousel-indicator-border-color:             #fff;
+
+@carousel-caption-color:                      #fff;
+
+
+//== Close
+//
+//##
+
+@close-font-weight:           bold;
+@close-color:                 #000;
+@close-text-shadow:           0 1px 0 #fff;
+
+
+//== Code
+//
+//##
+
+@code-color:                  #c7254e;
+@code-bg:                     #f9f2f4;
+
+@kbd-color:                   #fff;
+@kbd-bg:                      #333;
+
+@pre-bg:                      #f5f5f5;
+@pre-color:                   @gray-dark;
+@pre-border-color:            #ccc;
+@pre-scrollable-max-height:   340px;
+
+
+//== Type
+//
+//##
+
+//** Horizontal offset for forms and lists.
+@component-offset-horizontal: 180px;
+//** Text muted color
+@text-muted:                  @gray-light;
+//** Abbreviations and acronyms border color
+@abbr-border-color:           @gray-light;
+//** Headings small color
+@headings-small-color:        @gray-light;
+//** Blockquote small color
+@blockquote-small-color:      @gray-light;
+//** Blockquote font size
+@blockquote-font-size:        (@font-size-base * 1.25);
+//** Blockquote border color
+@blockquote-border-color:     @gray-lighter;
+//** Page header border color
+@page-header-border-color:    @gray-lighter;
+//** Width of horizontal description list titles
+@dl-horizontal-offset:        @component-offset-horizontal;
+//** Point at which .dl-horizontal becomes horizontal
+@dl-horizontal-breakpoint:    @grid-float-breakpoint;
+//** Horizontal line color.
+@hr-border:                   @gray-lighter;
diff --git a/app/assets/less/vendor/bootstrap/wells.less b/app/assets/less/vendor/bootstrap/wells.less
new file mode 100644
index 0000000..15d072b
--- /dev/null
+++ b/app/assets/less/vendor/bootstrap/wells.less
@@ -0,0 +1,29 @@
+//
+// Wells
+// --------------------------------------------------
+
+
+// Base class
+.well {
+  min-height: 20px;
+  padding: 19px;
+  margin-bottom: 20px;
+  background-color: @well-bg;
+  border: 1px solid @well-border;
+  border-radius: @border-radius-base;
+  .box-shadow(inset 0 1px 1px rgba(0,0,0,.05));
+  blockquote {
+    border-color: #ddd;
+    border-color: rgba(0,0,0,.15);
+  }
+}
+
+// Sizes
+.well-lg {
+  padding: 24px;
+  border-radius: @border-radius-large;
+}
+.well-sm {
+  padding: 9px;
+  border-radius: @border-radius-small;
+}
diff --git a/app/assets/less/vendor/ionicons/_ionicons-font.less b/app/assets/less/vendor/ionicons/_ionicons-font.less
new file mode 100644
index 0000000..1d9bf7e
--- /dev/null
+++ b/app/assets/less/vendor/ionicons/_ionicons-font.less
@@ -0,0 +1,27 @@
+// Ionicons Font Path
+// --------------------------
+
+@font-face {
+ font-family: @ionicons-font-family;
+ src:url("@{ionicons-font-path}/ionicons.eot?v=@{ionicons-version}");
+ src:url("@{ionicons-font-path}/ionicons.eot?v=@{ionicons-version}#iefix") format("embedded-opentype"),
+  url("@{ionicons-font-path}/ionicons.ttf?v=@{ionicons-version}") format("truetype"),
+  url("@{ionicons-font-path}/ionicons.woff?v=@{ionicons-version}") format("woff"),
+  url("@{ionicons-font-path}/ionicons.svg?v=@{ionicons-version}#Ionicons") format("svg");
+ font-weight: normal;
+ font-style: normal;
+}
+
+.ion {
+  display: inline-block;
+  font-family: @ionicons-font-family;
+  speak: none;
+  font-style: normal;
+  font-weight: normal;
+  font-variant: normal;
+  text-transform: none;
+  text-rendering: auto;
+  line-height: 1;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
\ No newline at end of file
diff --git a/app/assets/less/vendor/ionicons/_ionicons-icons.less b/app/assets/less/vendor/ionicons/_ionicons-icons.less
new file mode 100644
index 0000000..5e6052e
--- /dev/null
+++ b/app/assets/less/vendor/ionicons/_ionicons-icons.less
@@ -0,0 +1,1473 @@
+// Ionicons Icons
+// --------------------------
+
+.ionicons,
+.@{ionicons-prefix}alert:before,
+.@{ionicons-prefix}alert-circled:before,
+.@{ionicons-prefix}android-add:before,
+.@{ionicons-prefix}android-add-circle:before,
+.@{ionicons-prefix}android-alarm-clock:before,
+.@{ionicons-prefix}android-alert:before,
+.@{ionicons-prefix}android-apps:before,
+.@{ionicons-prefix}android-archive:before,
+.@{ionicons-prefix}android-arrow-back:before,
+.@{ionicons-prefix}android-arrow-down:before,
+.@{ionicons-prefix}android-arrow-dropdown:before,
+.@{ionicons-prefix}android-arrow-dropdown-circle:before,
+.@{ionicons-prefix}android-arrow-dropleft:before,
+.@{ionicons-prefix}android-arrow-dropleft-circle:before,
+.@{ionicons-prefix}android-arrow-dropright:before,
+.@{ionicons-prefix}android-arrow-dropright-circle:before,
+.@{ionicons-prefix}android-arrow-dropup:before,
+.@{ionicons-prefix}android-arrow-dropup-circle:before,
+.@{ionicons-prefix}android-arrow-forward:before,
+.@{ionicons-prefix}android-arrow-up:before,
+.@{ionicons-prefix}android-attach:before,
+.@{ionicons-prefix}android-bar:before,
+.@{ionicons-prefix}android-bicycle:before,
+.@{ionicons-prefix}android-boat:before,
+.@{ionicons-prefix}android-bookmark:before,
+.@{ionicons-prefix}android-bulb:before,
+.@{ionicons-prefix}android-bus:before,
+.@{ionicons-prefix}android-calendar:before,
+.@{ionicons-prefix}android-call:before,
+.@{ionicons-prefix}android-camera:before,
+.@{ionicons-prefix}android-cancel:before,
+.@{ionicons-prefix}android-car:before,
+.@{ionicons-prefix}android-cart:before,
+.@{ionicons-prefix}android-chat:before,
+.@{ionicons-prefix}android-checkbox:before,
+.@{ionicons-prefix}android-checkbox-blank:before,
+.@{ionicons-prefix}android-checkbox-outline:before,
+.@{ionicons-prefix}android-checkbox-outline-blank:before,
+.@{ionicons-prefix}android-checkmark-circle:before,
+.@{ionicons-prefix}android-clipboard:before,
+.@{ionicons-prefix}android-close:before,
+.@{ionicons-prefix}android-cloud:before,
+.@{ionicons-prefix}android-cloud-circle:before,
+.@{ionicons-prefix}android-cloud-done:before,
+.@{ionicons-prefix}android-cloud-outline:before,
+.@{ionicons-prefix}android-color-palette:before,
+.@{ionicons-prefix}android-compass:before,
+.@{ionicons-prefix}android-contact:before,
+.@{ionicons-prefix}android-contacts:before,
+.@{ionicons-prefix}android-contract:before,
+.@{ionicons-prefix}android-create:before,
+.@{ionicons-prefix}android-delete:before,
+.@{ionicons-prefix}android-desktop:before,
+.@{ionicons-prefix}android-document:before,
+.@{ionicons-prefix}android-done:before,
+.@{ionicons-prefix}android-done-all:before,
+.@{ionicons-prefix}android-download:before,
+.@{ionicons-prefix}android-drafts:before,
+.@{ionicons-prefix}android-exit:before,
+.@{ionicons-prefix}android-expand:before,
+.@{ionicons-prefix}android-favorite:before,
+.@{ionicons-prefix}android-favorite-outline:before,
+.@{ionicons-prefix}android-film:before,
+.@{ionicons-prefix}android-folder:before,
+.@{ionicons-prefix}android-folder-open:before,
+.@{ionicons-prefix}android-funnel:before,
+.@{ionicons-prefix}android-globe:before,
+.@{ionicons-prefix}android-hand:before,
+.@{ionicons-prefix}android-hangout:before,
+.@{ionicons-prefix}android-happy:before,
+.@{ionicons-prefix}android-home:before,
+.@{ionicons-prefix}android-image:before,
+.@{ionicons-prefix}android-laptop:before,
+.@{ionicons-prefix}android-list:before,
+.@{ionicons-prefix}android-locate:before,
+.@{ionicons-prefix}android-lock:before,
+.@{ionicons-prefix}android-mail:before,
+.@{ionicons-prefix}android-map:before,
+.@{ionicons-prefix}android-menu:before,
+.@{ionicons-prefix}android-microphone:before,
+.@{ionicons-prefix}android-microphone-off:before,
+.@{ionicons-prefix}android-more-horizontal:before,
+.@{ionicons-prefix}android-more-vertical:before,
+.@{ionicons-prefix}android-navigate:before,
+.@{ionicons-prefix}android-notifications:before,
+.@{ionicons-prefix}android-notifications-none:before,
+.@{ionicons-prefix}android-notifications-off:before,
+.@{ionicons-prefix}android-open:before,
+.@{ionicons-prefix}android-options:before,
+.@{ionicons-prefix}android-people:before,
+.@{ionicons-prefix}android-person:before,
+.@{ionicons-prefix}android-person-add:before,
+.@{ionicons-prefix}android-phone-landscape:before,
+.@{ionicons-prefix}android-phone-portrait:before,
+.@{ionicons-prefix}android-pin:before,
+.@{ionicons-prefix}android-plane:before,
+.@{ionicons-prefix}android-playstore:before,
+.@{ionicons-prefix}android-print:before,
+.@{ionicons-prefix}android-radio-button-off:before,
+.@{ionicons-prefix}android-radio-button-on:before,
+.@{ionicons-prefix}android-refresh:before,
+.@{ionicons-prefix}android-remove:before,
+.@{ionicons-prefix}android-remove-circle:before,
+.@{ionicons-prefix}android-restaurant:before,
+.@{ionicons-prefix}android-sad:before,
+.@{ionicons-prefix}android-search:before,
+.@{ionicons-prefix}android-send:before,
+.@{ionicons-prefix}android-settings:before,
+.@{ionicons-prefix}android-share:before,
+.@{ionicons-prefix}android-share-alt:before,
+.@{ionicons-prefix}android-star:before,
+.@{ionicons-prefix}android-star-half:before,
+.@{ionicons-prefix}android-star-outline:before,
+.@{ionicons-prefix}android-stopwatch:before,
+.@{ionicons-prefix}android-subway:before,
+.@{ionicons-prefix}android-sunny:before,
+.@{ionicons-prefix}android-sync:before,
+.@{ionicons-prefix}android-textsms:before,
+.@{ionicons-prefix}android-time:before,
+.@{ionicons-prefix}android-train:before,
+.@{ionicons-prefix}android-unlock:before,
+.@{ionicons-prefix}android-upload:before,
+.@{ionicons-prefix}android-volume-down:before,
+.@{ionicons-prefix}android-volume-mute:before,
+.@{ionicons-prefix}android-volume-off:before,
+.@{ionicons-prefix}android-volume-up:before,
+.@{ionicons-prefix}android-walk:before,
+.@{ionicons-prefix}android-warning:before,
+.@{ionicons-prefix}android-watch:before,
+.@{ionicons-prefix}android-wifi:before,
+.@{ionicons-prefix}aperture:before,
+.@{ionicons-prefix}archive:before,
+.@{ionicons-prefix}arrow-down-a:before,
+.@{ionicons-prefix}arrow-down-b:before,
+.@{ionicons-prefix}arrow-down-c:before,
+.@{ionicons-prefix}arrow-expand:before,
+.@{ionicons-prefix}arrow-graph-down-left:before,
+.@{ionicons-prefix}arrow-graph-down-right:before,
+.@{ionicons-prefix}arrow-graph-up-left:before,
+.@{ionicons-prefix}arrow-graph-up-right:before,
+.@{ionicons-prefix}arrow-left-a:before,
+.@{ionicons-prefix}arrow-left-b:before,
+.@{ionicons-prefix}arrow-left-c:before,
+.@{ionicons-prefix}arrow-move:before,
+.@{ionicons-prefix}arrow-resize:before,
+.@{ionicons-prefix}arrow-return-left:before,
+.@{ionicons-prefix}arrow-return-right:before,
+.@{ionicons-prefix}arrow-right-a:before,
+.@{ionicons-prefix}arrow-right-b:before,
+.@{ionicons-prefix}arrow-right-c:before,
+.@{ionicons-prefix}arrow-shrink:before,
+.@{ionicons-prefix}arrow-swap:before,
+.@{ionicons-prefix}arrow-up-a:before,
+.@{ionicons-prefix}arrow-up-b:before,
+.@{ionicons-prefix}arrow-up-c:before,
+.@{ionicons-prefix}asterisk:before,
+.@{ionicons-prefix}at:before,
+.@{ionicons-prefix}backspace:before,
+.@{ionicons-prefix}backspace-outline:before,
+.@{ionicons-prefix}bag:before,
+.@{ionicons-prefix}battery-charging:before,
+.@{ionicons-prefix}battery-empty:before,
+.@{ionicons-prefix}battery-full:before,
+.@{ionicons-prefix}battery-half:before,
+.@{ionicons-prefix}battery-low:before,
+.@{ionicons-prefix}beaker:before,
+.@{ionicons-prefix}beer:before,
+.@{ionicons-prefix}bluetooth:before,
+.@{ionicons-prefix}bonfire:before,
+.@{ionicons-prefix}bookmark:before,
+.@{ionicons-prefix}bowtie:before,
+.@{ionicons-prefix}briefcase:before,
+.@{ionicons-prefix}bug:before,
+.@{ionicons-prefix}calculator:before,
+.@{ionicons-prefix}calendar:before,
+.@{ionicons-prefix}camera:before,
+.@{ionicons-prefix}card:before,
+.@{ionicons-prefix}cash:before,
+.@{ionicons-prefix}chatbox:before,
+.@{ionicons-prefix}chatbox-working:before,
+.@{ionicons-prefix}chatboxes:before,
+.@{ionicons-prefix}chatbubble:before,
+.@{ionicons-prefix}chatbubble-working:before,
+.@{ionicons-prefix}chatbubbles:before,
+.@{ionicons-prefix}checkmark:before,
+.@{ionicons-prefix}checkmark-circled:before,
+.@{ionicons-prefix}checkmark-round:before,
+.@{ionicons-prefix}chevron-down:before,
+.@{ionicons-prefix}chevron-left:before,
+.@{ionicons-prefix}chevron-right:before,
+.@{ionicons-prefix}chevron-up:before,
+.@{ionicons-prefix}clipboard:before,
+.@{ionicons-prefix}clock:before,
+.@{ionicons-prefix}close:before,
+.@{ionicons-prefix}close-circled:before,
+.@{ionicons-prefix}close-round:before,
+.@{ionicons-prefix}closed-captioning:before,
+.@{ionicons-prefix}cloud:before,
+.@{ionicons-prefix}code:before,
+.@{ionicons-prefix}code-download:before,
+.@{ionicons-prefix}code-working:before,
+.@{ionicons-prefix}coffee:before,
+.@{ionicons-prefix}compass:before,
+.@{ionicons-prefix}compose:before,
+.@{ionicons-prefix}connection-bars:before,
+.@{ionicons-prefix}contrast:before,
+.@{ionicons-prefix}crop:before,
+.@{ionicons-prefix}cube:before,
+.@{ionicons-prefix}disc:before,
+.@{ionicons-prefix}document:before,
+.@{ionicons-prefix}document-text:before,
+.@{ionicons-prefix}drag:before,
+.@{ionicons-prefix}earth:before,
+.@{ionicons-prefix}easel:before,
+.@{ionicons-prefix}edit:before,
+.@{ionicons-prefix}egg:before,
+.@{ionicons-prefix}eject:before,
+.@{ionicons-prefix}email:before,
+.@{ionicons-prefix}email-unread:before,
+.@{ionicons-prefix}erlenmeyer-flask:before,
+.@{ionicons-prefix}erlenmeyer-flask-bubbles:before,
+.@{ionicons-prefix}eye:before,
+.@{ionicons-prefix}eye-disabled:before,
+.@{ionicons-prefix}female:before,
+.@{ionicons-prefix}filing:before,
+.@{ionicons-prefix}film-marker:before,
+.@{ionicons-prefix}fireball:before,
+.@{ionicons-prefix}flag:before,
+.@{ionicons-prefix}flame:before,
+.@{ionicons-prefix}flash:before,
+.@{ionicons-prefix}flash-off:before,
+.@{ionicons-prefix}folder:before,
+.@{ionicons-prefix}fork:before,
+.@{ionicons-prefix}fork-repo:before,
+.@{ionicons-prefix}forward:before,
+.@{ionicons-prefix}funnel:before,
+.@{ionicons-prefix}gear-a:before,
+.@{ionicons-prefix}gear-b:before,
+.@{ionicons-prefix}grid:before,
+.@{ionicons-prefix}hammer:before,
+.@{ionicons-prefix}happy:before,
+.@{ionicons-prefix}happy-outline:before,
+.@{ionicons-prefix}headphone:before,
+.@{ionicons-prefix}heart:before,
+.@{ionicons-prefix}heart-broken:before,
+.@{ionicons-prefix}help:before,
+.@{ionicons-prefix}help-buoy:before,
+.@{ionicons-prefix}help-circled:before,
+.@{ionicons-prefix}home:before,
+.@{ionicons-prefix}icecream:before,
+.@{ionicons-prefix}image:before,
+.@{ionicons-prefix}images:before,
+.@{ionicons-prefix}information:before,
+.@{ionicons-prefix}information-circled:before,
+.@{ionicons-prefix}ionic:before,
+.@{ionicons-prefix}ios-alarm:before,
+.@{ionicons-prefix}ios-alarm-outline:before,
+.@{ionicons-prefix}ios-albums:before,
+.@{ionicons-prefix}ios-albums-outline:before,
+.@{ionicons-prefix}ios-americanfootball:before,
+.@{ionicons-prefix}ios-americanfootball-outline:before,
+.@{ionicons-prefix}ios-analytics:before,
+.@{ionicons-prefix}ios-analytics-outline:before,
+.@{ionicons-prefix}ios-arrow-back:before,
+.@{ionicons-prefix}ios-arrow-down:before,
+.@{ionicons-prefix}ios-arrow-forward:before,
+.@{ionicons-prefix}ios-arrow-left:before,
+.@{ionicons-prefix}ios-arrow-right:before,
+.@{ionicons-prefix}ios-arrow-thin-down:before,
+.@{ionicons-prefix}ios-arrow-thin-left:before,
+.@{ionicons-prefix}ios-arrow-thin-right:before,
+.@{ionicons-prefix}ios-arrow-thin-up:before,
+.@{ionicons-prefix}ios-arrow-up:before,
+.@{ionicons-prefix}ios-at:before,
+.@{ionicons-prefix}ios-at-outline:before,
+.@{ionicons-prefix}ios-barcode:before,
+.@{ionicons-prefix}ios-barcode-outline:before,
+.@{ionicons-prefix}ios-baseball:before,
+.@{ionicons-prefix}ios-baseball-outline:before,
+.@{ionicons-prefix}ios-basketball:before,
+.@{ionicons-prefix}ios-basketball-outline:before,
+.@{ionicons-prefix}ios-bell:before,
+.@{ionicons-prefix}ios-bell-outline:before,
+.@{ionicons-prefix}ios-body:before,
+.@{ionicons-prefix}ios-body-outline:before,
+.@{ionicons-prefix}ios-bolt:before,
+.@{ionicons-prefix}ios-bolt-outline:before,
+.@{ionicons-prefix}ios-book:before,
+.@{ionicons-prefix}ios-book-outline:before,
+.@{ionicons-prefix}ios-bookmarks:before,
+.@{ionicons-prefix}ios-bookmarks-outline:before,
+.@{ionicons-prefix}ios-box:before,
+.@{ionicons-prefix}ios-box-outline:before,
+.@{ionicons-prefix}ios-briefcase:before,
+.@{ionicons-prefix}ios-briefcase-outline:before,
+.@{ionicons-prefix}ios-browsers:before,
+.@{ionicons-prefix}ios-browsers-outline:before,
+.@{ionicons-prefix}ios-calculator:before,
+.@{ionicons-prefix}ios-calculator-outline:before,
+.@{ionicons-prefix}ios-calendar:before,
+.@{ionicons-prefix}ios-calendar-outline:before,
+.@{ionicons-prefix}ios-camera:before,
+.@{ionicons-prefix}ios-camera-outline:before,
+.@{ionicons-prefix}ios-cart:before,
+.@{ionicons-prefix}ios-cart-outline:before,
+.@{ionicons-prefix}ios-chatboxes:before,
+.@{ionicons-prefix}ios-chatboxes-outline:before,
+.@{ionicons-prefix}ios-chatbubble:before,
+.@{ionicons-prefix}ios-chatbubble-outline:before,
+.@{ionicons-prefix}ios-checkmark:before,
+.@{ionicons-prefix}ios-checkmark-empty:before,
+.@{ionicons-prefix}ios-checkmark-outline:before,
+.@{ionicons-prefix}ios-circle-filled:before,
+.@{ionicons-prefix}ios-circle-outline:before,
+.@{ionicons-prefix}ios-clock:before,
+.@{ionicons-prefix}ios-clock-outline:before,
+.@{ionicons-prefix}ios-close:before,
+.@{ionicons-prefix}ios-close-empty:before,
+.@{ionicons-prefix}ios-close-outline:before,
+.@{ionicons-prefix}ios-cloud:before,
+.@{ionicons-prefix}ios-cloud-download:before,
+.@{ionicons-prefix}ios-cloud-download-outline:before,
+.@{ionicons-prefix}ios-cloud-outline:before,
+.@{ionicons-prefix}ios-cloud-upload:before,
+.@{ionicons-prefix}ios-cloud-upload-outline:before,
+.@{ionicons-prefix}ios-cloudy:before,
+.@{ionicons-prefix}ios-cloudy-night:before,
+.@{ionicons-prefix}ios-cloudy-night-outline:before,
+.@{ionicons-prefix}ios-cloudy-outline:before,
+.@{ionicons-prefix}ios-cog:before,
+.@{ionicons-prefix}ios-cog-outline:before,
+.@{ionicons-prefix}ios-color-filter:before,
+.@{ionicons-prefix}ios-color-filter-outline:before,
+.@{ionicons-prefix}ios-color-wand:before,
+.@{ionicons-prefix}ios-color-wand-outline:before,
+.@{ionicons-prefix}ios-compose:before,
+.@{ionicons-prefix}ios-compose-outline:before,
+.@{ionicons-prefix}ios-contact:before,
+.@{ionicons-prefix}ios-contact-outline:before,
+.@{ionicons-prefix}ios-copy:before,
+.@{ionicons-prefix}ios-copy-outline:before,
+.@{ionicons-prefix}ios-crop:before,
+.@{ionicons-prefix}ios-crop-strong:before,
+.@{ionicons-prefix}ios-download:before,
+.@{ionicons-prefix}ios-download-outline:before,
+.@{ionicons-prefix}ios-drag:before,
+.@{ionicons-prefix}ios-email:before,
+.@{ionicons-prefix}ios-email-outline:before,
+.@{ionicons-prefix}ios-eye:before,
+.@{ionicons-prefix}ios-eye-outline:before,
+.@{ionicons-prefix}ios-fastforward:before,
+.@{ionicons-prefix}ios-fastforward-outline:before,
+.@{ionicons-prefix}ios-filing:before,
+.@{ionicons-prefix}ios-filing-outline:before,
+.@{ionicons-prefix}ios-film:before,
+.@{ionicons-prefix}ios-film-outline:before,
+.@{ionicons-prefix}ios-flag:before,
+.@{ionicons-prefix}ios-flag-outline:before,
+.@{ionicons-prefix}ios-flame:before,
+.@{ionicons-prefix}ios-flame-outline:before,
+.@{ionicons-prefix}ios-flask:before,
+.@{ionicons-prefix}ios-flask-outline:before,
+.@{ionicons-prefix}ios-flower:before,
+.@{ionicons-prefix}ios-flower-outline:before,
+.@{ionicons-prefix}ios-folder:before,
+.@{ionicons-prefix}ios-folder-outline:before,
+.@{ionicons-prefix}ios-football:before,
+.@{ionicons-prefix}ios-football-outline:before,
+.@{ionicons-prefix}ios-game-controller-a:before,
+.@{ionicons-prefix}ios-game-controller-a-outline:before,
+.@{ionicons-prefix}ios-game-controller-b:before,
+.@{ionicons-prefix}ios-game-controller-b-outline:before,
+.@{ionicons-prefix}ios-gear:before,
+.@{ionicons-prefix}ios-gear-outline:before,
+.@{ionicons-prefix}ios-glasses:before,
+.@{ionicons-prefix}ios-glasses-outline:before,
+.@{ionicons-prefix}ios-grid-view:before,
+.@{ionicons-prefix}ios-grid-view-outline:before,
+.@{ionicons-prefix}ios-heart:before,
+.@{ionicons-prefix}ios-heart-outline:before,
+.@{ionicons-prefix}ios-help:before,
+.@{ionicons-prefix}ios-help-empty:before,
+.@{ionicons-prefix}ios-help-outline:before,
+.@{ionicons-prefix}ios-home:before,
+.@{ionicons-prefix}ios-home-outline:before,
+.@{ionicons-prefix}ios-infinite:before,
+.@{ionicons-prefix}ios-infinite-outline:before,
+.@{ionicons-prefix}ios-information:before,
+.@{ionicons-prefix}ios-information-empty:before,
+.@{ionicons-prefix}ios-information-outline:before,
+.@{ionicons-prefix}ios-ionic-outline:before,
+.@{ionicons-prefix}ios-keypad:before,
+.@{ionicons-prefix}ios-keypad-outline:before,
+.@{ionicons-prefix}ios-lightbulb:before,
+.@{ionicons-prefix}ios-lightbulb-outline:before,
+.@{ionicons-prefix}ios-list:before,
+.@{ionicons-prefix}ios-list-outline:before,
+.@{ionicons-prefix}ios-location:before,
+.@{ionicons-prefix}ios-location-outline:before,
+.@{ionicons-prefix}ios-locked:before,
+.@{ionicons-prefix}ios-locked-outline:before,
+.@{ionicons-prefix}ios-loop:before,
+.@{ionicons-prefix}ios-loop-strong:before,
+.@{ionicons-prefix}ios-medical:before,
+.@{ionicons-prefix}ios-medical-outline:before,
+.@{ionicons-prefix}ios-medkit:before,
+.@{ionicons-prefix}ios-medkit-outline:before,
+.@{ionicons-prefix}ios-mic:before,
+.@{ionicons-prefix}ios-mic-off:before,
+.@{ionicons-prefix}ios-mic-outline:before,
+.@{ionicons-prefix}ios-minus:before,
+.@{ionicons-prefix}ios-minus-empty:before,
+.@{ionicons-prefix}ios-minus-outline:before,
+.@{ionicons-prefix}ios-monitor:before,
+.@{ionicons-prefix}ios-monitor-outline:before,
+.@{ionicons-prefix}ios-moon:before,
+.@{ionicons-prefix}ios-moon-outline:before,
+.@{ionicons-prefix}ios-more:before,
+.@{ionicons-prefix}ios-more-outline:before,
+.@{ionicons-prefix}ios-musical-note:before,
+.@{ionicons-prefix}ios-musical-notes:before,
+.@{ionicons-prefix}ios-navigate:before,
+.@{ionicons-prefix}ios-navigate-outline:before,
+.@{ionicons-prefix}ios-nutrition:before,
+.@{ionicons-prefix}ios-nutrition-outline:before,
+.@{ionicons-prefix}ios-paper:before,
+.@{ionicons-prefix}ios-paper-outline:before,
+.@{ionicons-prefix}ios-paperplane:before,
+.@{ionicons-prefix}ios-paperplane-outline:before,
+.@{ionicons-prefix}ios-partlysunny:before,
+.@{ionicons-prefix}ios-partlysunny-outline:before,
+.@{ionicons-prefix}ios-pause:before,
+.@{ionicons-prefix}ios-pause-outline:before,
+.@{ionicons-prefix}ios-paw:before,
+.@{ionicons-prefix}ios-paw-outline:before,
+.@{ionicons-prefix}ios-people:before,
+.@{ionicons-prefix}ios-people-outline:before,
+.@{ionicons-prefix}ios-person:before,
+.@{ionicons-prefix}ios-person-outline:before,
+.@{ionicons-prefix}ios-personadd:before,
+.@{ionicons-prefix}ios-personadd-outline:before,
+.@{ionicons-prefix}ios-photos:before,
+.@{ionicons-prefix}ios-photos-outline:before,
+.@{ionicons-prefix}ios-pie:before,
+.@{ionicons-prefix}ios-pie-outline:before,
+.@{ionicons-prefix}ios-pint:before,
+.@{ionicons-prefix}ios-pint-outline:before,
+.@{ionicons-prefix}ios-play:before,
+.@{ionicons-prefix}ios-play-outline:before,
+.@{ionicons-prefix}ios-plus:before,
+.@{ionicons-prefix}ios-plus-empty:before,
+.@{ionicons-prefix}ios-plus-outline:before,
+.@{ionicons-prefix}ios-pricetag:before,
+.@{ionicons-prefix}ios-pricetag-outline:before,
+.@{ionicons-prefix}ios-pricetags:before,
+.@{ionicons-prefix}ios-pricetags-outline:before,
+.@{ionicons-prefix}ios-printer:before,
+.@{ionicons-prefix}ios-printer-outline:before,
+.@{ionicons-prefix}ios-pulse:before,
+.@{ionicons-prefix}ios-pulse-strong:before,
+.@{ionicons-prefix}ios-rainy:before,
+.@{ionicons-prefix}ios-rainy-outline:before,
+.@{ionicons-prefix}ios-recording:before,
+.@{ionicons-prefix}ios-recording-outline:before,
+.@{ionicons-prefix}ios-redo:before,
+.@{ionicons-prefix}ios-redo-outline:before,
+.@{ionicons-prefix}ios-refresh:before,
+.@{ionicons-prefix}ios-refresh-empty:before,
+.@{ionicons-prefix}ios-refresh-outline:before,
+.@{ionicons-prefix}ios-reload:before,
+.@{ionicons-prefix}ios-reverse-camera:before,
+.@{ionicons-prefix}ios-reverse-camera-outline:before,
+.@{ionicons-prefix}ios-rewind:before,
+.@{ionicons-prefix}ios-rewind-outline:before,
+.@{ionicons-prefix}ios-rose:before,
+.@{ionicons-prefix}ios-rose-outline:before,
+.@{ionicons-prefix}ios-search:before,
+.@{ionicons-prefix}ios-search-strong:before,
+.@{ionicons-prefix}ios-settings:before,
+.@{ionicons-prefix}ios-settings-strong:before,
+.@{ionicons-prefix}ios-shuffle:before,
+.@{ionicons-prefix}ios-shuffle-strong:before,
+.@{ionicons-prefix}ios-skipbackward:before,
+.@{ionicons-prefix}ios-skipbackward-outline:before,
+.@{ionicons-prefix}ios-skipforward:before,
+.@{ionicons-prefix}ios-skipforward-outline:before,
+.@{ionicons-prefix}ios-snowy:before,
+.@{ionicons-prefix}ios-speedometer:before,
+.@{ionicons-prefix}ios-speedometer-outline:before,
+.@{ionicons-prefix}ios-star:before,
+.@{ionicons-prefix}ios-star-half:before,
+.@{ionicons-prefix}ios-star-outline:before,
+.@{ionicons-prefix}ios-stopwatch:before,
+.@{ionicons-prefix}ios-stopwatch-outline:before,
+.@{ionicons-prefix}ios-sunny:before,
+.@{ionicons-prefix}ios-sunny-outline:before,
+.@{ionicons-prefix}ios-telephone:before,
+.@{ionicons-prefix}ios-telephone-outline:before,
+.@{ionicons-prefix}ios-tennisball:before,
+.@{ionicons-prefix}ios-tennisball-outline:before,
+.@{ionicons-prefix}ios-thunderstorm:before,
+.@{ionicons-prefix}ios-thunderstorm-outline:before,
+.@{ionicons-prefix}ios-time:before,
+.@{ionicons-prefix}ios-time-outline:before,
+.@{ionicons-prefix}ios-timer:before,
+.@{ionicons-prefix}ios-timer-outline:before,
+.@{ionicons-prefix}ios-toggle:before,
+.@{ionicons-prefix}ios-toggle-outline:before,
+.@{ionicons-prefix}ios-trash:before,
+.@{ionicons-prefix}ios-trash-outline:before,
+.@{ionicons-prefix}ios-undo:before,
+.@{ionicons-prefix}ios-undo-outline:before,
+.@{ionicons-prefix}ios-unlocked:before,
+.@{ionicons-prefix}ios-unlocked-outline:before,
+.@{ionicons-prefix}ios-upload:before,
+.@{ionicons-prefix}ios-upload-outline:before,
+.@{ionicons-prefix}ios-videocam:before,
+.@{ionicons-prefix}ios-videocam-outline:before,
+.@{ionicons-prefix}ios-volume-high:before,
+.@{ionicons-prefix}ios-volume-low:before,
+.@{ionicons-prefix}ios-wineglass:before,
+.@{ionicons-prefix}ios-wineglass-outline:before,
+.@{ionicons-prefix}ios-world:before,
+.@{ionicons-prefix}ios-world-outline:before,
+.@{ionicons-prefix}ipad:before,
+.@{ionicons-prefix}iphone:before,
+.@{ionicons-prefix}ipod:before,
+.@{ionicons-prefix}jet:before,
+.@{ionicons-prefix}key:before,
+.@{ionicons-prefix}knife:before,
+.@{ionicons-prefix}laptop:before,
+.@{ionicons-prefix}leaf:before,
+.@{ionicons-prefix}levels:before,
+.@{ionicons-prefix}lightbulb:before,
+.@{ionicons-prefix}link:before,
+.@{ionicons-prefix}load-a:before,
+.@{ionicons-prefix}load-b:before,
+.@{ionicons-prefix}load-c:before,
+.@{ionicons-prefix}load-d:before,
+.@{ionicons-prefix}location:before,
+.@{ionicons-prefix}lock-combination:before,
+.@{ionicons-prefix}locked:before,
+.@{ionicons-prefix}log-in:before,
+.@{ionicons-prefix}log-out:before,
+.@{ionicons-prefix}loop:before,
+.@{ionicons-prefix}magnet:before,
+.@{ionicons-prefix}male:before,
+.@{ionicons-prefix}man:before,
+.@{ionicons-prefix}map:before,
+.@{ionicons-prefix}medkit:before,
+.@{ionicons-prefix}merge:before,
+.@{ionicons-prefix}mic-a:before,
+.@{ionicons-prefix}mic-b:before,
+.@{ionicons-prefix}mic-c:before,
+.@{ionicons-prefix}minus:before,
+.@{ionicons-prefix}minus-circled:before,
+.@{ionicons-prefix}minus-round:before,
+.@{ionicons-prefix}model-s:before,
+.@{ionicons-prefix}monitor:before,
+.@{ionicons-prefix}more:before,
+.@{ionicons-prefix}mouse:before,
+.@{ionicons-prefix}music-note:before,
+.@{ionicons-prefix}navicon:before,
+.@{ionicons-prefix}navicon-round:before,
+.@{ionicons-prefix}navigate:before,
+.@{ionicons-prefix}network:before,
+.@{ionicons-prefix}no-smoking:before,
+.@{ionicons-prefix}nuclear:before,
+.@{ionicons-prefix}outlet:before,
+.@{ionicons-prefix}paintbrush:before,
+.@{ionicons-prefix}paintbucket:before,
+.@{ionicons-prefix}paper-airplane:before,
+.@{ionicons-prefix}paperclip:before,
+.@{ionicons-prefix}pause:before,
+.@{ionicons-prefix}person:before,
+.@{ionicons-prefix}person-add:before,
+.@{ionicons-prefix}person-stalker:before,
+.@{ionicons-prefix}pie-graph:before,
+.@{ionicons-prefix}pin:before,
+.@{ionicons-prefix}pinpoint:before,
+.@{ionicons-prefix}pizza:before,
+.@{ionicons-prefix}plane:before,
+.@{ionicons-prefix}planet:before,
+.@{ionicons-prefix}play:before,
+.@{ionicons-prefix}playstation:before,
+.@{ionicons-prefix}plus:before,
+.@{ionicons-prefix}plus-circled:before,
+.@{ionicons-prefix}plus-round:before,
+.@{ionicons-prefix}podium:before,
+.@{ionicons-prefix}pound:before,
+.@{ionicons-prefix}power:before,
+.@{ionicons-prefix}pricetag:before,
+.@{ionicons-prefix}pricetags:before,
+.@{ionicons-prefix}printer:before,
+.@{ionicons-prefix}pull-request:before,
+.@{ionicons-prefix}qr-scanner:before,
+.@{ionicons-prefix}quote:before,
+.@{ionicons-prefix}radio-waves:before,
+.@{ionicons-prefix}record:before,
+.@{ionicons-prefix}refresh:before,
+.@{ionicons-prefix}reply:before,
+.@{ionicons-prefix}reply-all:before,
+.@{ionicons-prefix}ribbon-a:before,
+.@{ionicons-prefix}ribbon-b:before,
+.@{ionicons-prefix}sad:before,
+.@{ionicons-prefix}sad-outline:before,
+.@{ionicons-prefix}scissors:before,
+.@{ionicons-prefix}search:before,
+.@{ionicons-prefix}settings:before,
+.@{ionicons-prefix}share:before,
+.@{ionicons-prefix}shuffle:before,
+.@{ionicons-prefix}skip-backward:before,
+.@{ionicons-prefix}skip-forward:before,
+.@{ionicons-prefix}social-android:before,
+.@{ionicons-prefix}social-android-outline:before,
+.@{ionicons-prefix}social-angular:before,
+.@{ionicons-prefix}social-angular-outline:before,
+.@{ionicons-prefix}social-apple:before,
+.@{ionicons-prefix}social-apple-outline:before,
+.@{ionicons-prefix}social-bitcoin:before,
+.@{ionicons-prefix}social-bitcoin-outline:before,
+.@{ionicons-prefix}social-buffer:before,
+.@{ionicons-prefix}social-buffer-outline:before,
+.@{ionicons-prefix}social-chrome:before,
+.@{ionicons-prefix}social-chrome-outline:before,
+.@{ionicons-prefix}social-codepen:before,
+.@{ionicons-prefix}social-codepen-outline:before,
+.@{ionicons-prefix}social-css3:before,
+.@{ionicons-prefix}social-css3-outline:before,
+.@{ionicons-prefix}social-designernews:before,
+.@{ionicons-prefix}social-designernews-outline:before,
+.@{ionicons-prefix}social-dribbble:before,
+.@{ionicons-prefix}social-dribbble-outline:before,
+.@{ionicons-prefix}social-dropbox:before,
+.@{ionicons-prefix}social-dropbox-outline:before,
+.@{ionicons-prefix}social-euro:before,
+.@{ionicons-prefix}social-euro-outline:before,
+.@{ionicons-prefix}social-facebook:before,
+.@{ionicons-prefix}social-facebook-outline:before,
+.@{ionicons-prefix}social-foursquare:before,
+.@{ionicons-prefix}social-foursquare-outline:before,
+.@{ionicons-prefix}social-freebsd-devil:before,
+.@{ionicons-prefix}social-github:before,
+.@{ionicons-prefix}social-github-outline:before,
+.@{ionicons-prefix}social-google:before,
+.@{ionicons-prefix}social-google-outline:before,
+.@{ionicons-prefix}social-googleplus:before,
+.@{ionicons-prefix}social-googleplus-outline:before,
+.@{ionicons-prefix}social-hackernews:before,
+.@{ionicons-prefix}social-hackernews-outline:before,
+.@{ionicons-prefix}social-html5:before,
+.@{ionicons-prefix}social-html5-outline:before,
+.@{ionicons-prefix}social-instagram:before,
+.@{ionicons-prefix}social-instagram-outline:before,
+.@{ionicons-prefix}social-javascript:before,
+.@{ionicons-prefix}social-javascript-outline:before,
+.@{ionicons-prefix}social-linkedin:before,
+.@{ionicons-prefix}social-linkedin-outline:before,
+.@{ionicons-prefix}social-markdown:before,
+.@{ionicons-prefix}social-nodejs:before,
+.@{ionicons-prefix}social-octocat:before,
+.@{ionicons-prefix}social-pinterest:before,
+.@{ionicons-prefix}social-pinterest-outline:before,
+.@{ionicons-prefix}social-python:before,
+.@{ionicons-prefix}social-reddit:before,
+.@{ionicons-prefix}social-reddit-outline:before,
+.@{ionicons-prefix}social-rss:before,
+.@{ionicons-prefix}social-rss-outline:before,
+.@{ionicons-prefix}social-sass:before,
+.@{ionicons-prefix}social-skype:before,
+.@{ionicons-prefix}social-skype-outline:before,
+.@{ionicons-prefix}social-snapchat:before,
+.@{ionicons-prefix}social-snapchat-outline:before,
+.@{ionicons-prefix}social-tumblr:before,
+.@{ionicons-prefix}social-tumblr-outline:before,
+.@{ionicons-prefix}social-tux:before,
+.@{ionicons-prefix}social-twitch:before,
+.@{ionicons-prefix}social-twitch-outline:before,
+.@{ionicons-prefix}social-twitter:before,
+.@{ionicons-prefix}social-twitter-outline:before,
+.@{ionicons-prefix}social-usd:before,
+.@{ionicons-prefix}social-usd-outline:before,
+.@{ionicons-prefix}social-vimeo:before,
+.@{ionicons-prefix}social-vimeo-outline:before,
+.@{ionicons-prefix}social-whatsapp:before,
+.@{ionicons-prefix}social-whatsapp-outline:before,
+.@{ionicons-prefix}social-windows:before,
+.@{ionicons-prefix}social-windows-outline:before,
+.@{ionicons-prefix}social-wordpress:before,
+.@{ionicons-prefix}social-wordpress-outline:before,
+.@{ionicons-prefix}social-yahoo:before,
+.@{ionicons-prefix}social-yahoo-outline:before,
+.@{ionicons-prefix}social-yen:before,
+.@{ionicons-prefix}social-yen-outline:before,
+.@{ionicons-prefix}social-youtube:before,
+.@{ionicons-prefix}social-youtube-outline:before,
+.@{ionicons-prefix}soup-can:before,
+.@{ionicons-prefix}soup-can-outline:before,
+.@{ionicons-prefix}speakerphone:before,
+.@{ionicons-prefix}speedometer:before,
+.@{ionicons-prefix}spoon:before,
+.@{ionicons-prefix}star:before,
+.@{ionicons-prefix}stats-bars:before,
+.@{ionicons-prefix}steam:before,
+.@{ionicons-prefix}stop:before,
+.@{ionicons-prefix}thermometer:before,
+.@{ionicons-prefix}thumbsdown:before,
+.@{ionicons-prefix}thumbsup:before,
+.@{ionicons-prefix}toggle:before,
+.@{ionicons-prefix}toggle-filled:before,
+.@{ionicons-prefix}transgender:before,
+.@{ionicons-prefix}trash-a:before,
+.@{ionicons-prefix}trash-b:before,
+.@{ionicons-prefix}trophy:before,
+.@{ionicons-prefix}tshirt:before,
+.@{ionicons-prefix}tshirt-outline:before,
+.@{ionicons-prefix}umbrella:before,
+.@{ionicons-prefix}university:before,
+.@{ionicons-prefix}unlocked:before,
+.@{ionicons-prefix}upload:before,
+.@{ionicons-prefix}usb:before,
+.@{ionicons-prefix}videocamera:before,
+.@{ionicons-prefix}volume-high:before,
+.@{ionicons-prefix}volume-low:before,
+.@{ionicons-prefix}volume-medium:before,
+.@{ionicons-prefix}volume-mute:before,
+.@{ionicons-prefix}wand:before,
+.@{ionicons-prefix}waterdrop:before,
+.@{ionicons-prefix}wifi:before,
+.@{ionicons-prefix}wineglass:before,
+.@{ionicons-prefix}woman:before,
+.@{ionicons-prefix}wrench:before,
+.@{ionicons-prefix}xbox:before
+{
+  &:extend(.ion);
+}
+.@{ionicons-prefix}alert:before { content: @ionicon-var-alert; }
+.@{ionicons-prefix}alert-circled:before { content: @ionicon-var-alert-circled; }
+.@{ionicons-prefix}android-add:before { content: @ionicon-var-android-add; }
+.@{ionicons-prefix}android-add-circle:before { content: @ionicon-var-android-add-circle; }
+.@{ionicons-prefix}android-alarm-clock:before { content: @ionicon-var-android-alarm-clock; }
+.@{ionicons-prefix}android-alert:before { content: @ionicon-var-android-alert; }
+.@{ionicons-prefix}android-apps:before { content: @ionicon-var-android-apps; }
+.@{ionicons-prefix}android-archive:before { content: @ionicon-var-android-archive; }
+.@{ionicons-prefix}android-arrow-back:before { content: @ionicon-var-android-arrow-back; }
+.@{ionicons-prefix}android-arrow-down:before { content: @ionicon-var-android-arrow-down; }
+.@{ionicons-prefix}android-arrow-dropdown:before { content: @ionicon-var-android-arrow-dropdown; }
+.@{ionicons-prefix}android-arrow-dropdown-circle:before { content: @ionicon-var-android-arrow-dropdown-circle; }
+.@{ionicons-prefix}android-arrow-dropleft:before { content: @ionicon-var-android-arrow-dropleft; }
+.@{ionicons-prefix}android-arrow-dropleft-circle:before { content: @ionicon-var-android-arrow-dropleft-circle; }
+.@{ionicons-prefix}android-arrow-dropright:before { content: @ionicon-var-android-arrow-dropright; }
+.@{ionicons-prefix}android-arrow-dropright-circle:before { content: @ionicon-var-android-arrow-dropright-circle; }
+.@{ionicons-prefix}android-arrow-dropup:before { content: @ionicon-var-android-arrow-dropup; }
+.@{ionicons-prefix}android-arrow-dropup-circle:before { content: @ionicon-var-android-arrow-dropup-circle; }
+.@{ionicons-prefix}android-arrow-forward:before { content: @ionicon-var-android-arrow-forward; }
+.@{ionicons-prefix}android-arrow-up:before { content: @ionicon-var-android-arrow-up; }
+.@{ionicons-prefix}android-attach:before { content: @ionicon-var-android-attach; }
+.@{ionicons-prefix}android-bar:before { content: @ionicon-var-android-bar; }
+.@{ionicons-prefix}android-bicycle:before { content: @ionicon-var-android-bicycle; }
+.@{ionicons-prefix}android-boat:before { content: @ionicon-var-android-boat; }
+.@{ionicons-prefix}android-bookmark:before { content: @ionicon-var-android-bookmark; }
+.@{ionicons-prefix}android-bulb:before { content: @ionicon-var-android-bulb; }
+.@{ionicons-prefix}android-bus:before { content: @ionicon-var-android-bus; }
+.@{ionicons-prefix}android-calendar:before { content: @ionicon-var-android-calendar; }
+.@{ionicons-prefix}android-call:before { content: @ionicon-var-android-call; }
+.@{ionicons-prefix}android-camera:before { content: @ionicon-var-android-camera; }
+.@{ionicons-prefix}android-cancel:before { content: @ionicon-var-android-cancel; }
+.@{ionicons-prefix}android-car:before { content: @ionicon-var-android-car; }
+.@{ionicons-prefix}android-cart:before { content: @ionicon-var-android-cart; }
+.@{ionicons-prefix}android-chat:before { content: @ionicon-var-android-chat; }
+.@{ionicons-prefix}android-checkbox:before { content: @ionicon-var-android-checkbox; }
+.@{ionicons-prefix}android-checkbox-blank:before { content: @ionicon-var-android-checkbox-blank; }
+.@{ionicons-prefix}android-checkbox-outline:before { content: @ionicon-var-android-checkbox-outline; }
+.@{ionicons-prefix}android-checkbox-outline-blank:before { content: @ionicon-var-android-checkbox-outline-blank; }
+.@{ionicons-prefix}android-checkmark-circle:before { content: @ionicon-var-android-checkmark-circle; }
+.@{ionicons-prefix}android-clipboard:before { content: @ionicon-var-android-clipboard; }
+.@{ionicons-prefix}android-close:before { content: @ionicon-var-android-close; }
+.@{ionicons-prefix}android-cloud:before { content: @ionicon-var-android-cloud; }
+.@{ionicons-prefix}android-cloud-circle:before { content: @ionicon-var-android-cloud-circle; }
+.@{ionicons-prefix}android-cloud-done:before { content: @ionicon-var-android-cloud-done; }
+.@{ionicons-prefix}android-cloud-outline:before { content: @ionicon-var-android-cloud-outline; }
+.@{ionicons-prefix}android-color-palette:before { content: @ionicon-var-android-color-palette; }
+.@{ionicons-prefix}android-compass:before { content: @ionicon-var-android-compass; }
+.@{ionicons-prefix}android-contact:before { content: @ionicon-var-android-contact; }
+.@{ionicons-prefix}android-contacts:before { content: @ionicon-var-android-contacts; }
+.@{ionicons-prefix}android-contract:before { content: @ionicon-var-android-contract; }
+.@{ionicons-prefix}android-create:before { content: @ionicon-var-android-create; }
+.@{ionicons-prefix}android-delete:before { content: @ionicon-var-android-delete; }
+.@{ionicons-prefix}android-desktop:before { content: @ionicon-var-android-desktop; }
+.@{ionicons-prefix}android-document:before { content: @ionicon-var-android-document; }
+.@{ionicons-prefix}android-done:before { content: @ionicon-var-android-done; }
+.@{ionicons-prefix}android-done-all:before { content: @ionicon-var-android-done-all; }
+.@{ionicons-prefix}android-download:before { content: @ionicon-var-android-download; }
+.@{ionicons-prefix}android-drafts:before { content: @ionicon-var-android-drafts; }
+.@{ionicons-prefix}android-exit:before { content: @ionicon-var-android-exit; }
+.@{ionicons-prefix}android-expand:before { content: @ionicon-var-android-expand; }
+.@{ionicons-prefix}android-favorite:before { content: @ionicon-var-android-favorite; }
+.@{ionicons-prefix}android-favorite-outline:before { content: @ionicon-var-android-favorite-outline; }
+.@{ionicons-prefix}android-film:before { content: @ionicon-var-android-film; }
+.@{ionicons-prefix}android-folder:before { content: @ionicon-var-android-folder; }
+.@{ionicons-prefix}android-folder-open:before { content: @ionicon-var-android-folder-open; }
+.@{ionicons-prefix}android-funnel:before { content: @ionicon-var-android-funnel; }
+.@{ionicons-prefix}android-globe:before { content: @ionicon-var-android-globe; }
+.@{ionicons-prefix}android-hand:before { content: @ionicon-var-android-hand; }
+.@{ionicons-prefix}android-hangout:before { content: @ionicon-var-android-hangout; }
+.@{ionicons-prefix}android-happy:before { content: @ionicon-var-android-happy; }
+.@{ionicons-prefix}android-home:before { content: @ionicon-var-android-home; }
+.@{ionicons-prefix}android-image:before { content: @ionicon-var-android-image; }
+.@{ionicons-prefix}android-laptop:before { content: @ionicon-var-android-laptop; }
+.@{ionicons-prefix}android-list:before { content: @ionicon-var-android-list; }
+.@{ionicons-prefix}android-locate:before { content: @ionicon-var-android-locate; }
+.@{ionicons-prefix}android-lock:before { content: @ionicon-var-android-lock; }
+.@{ionicons-prefix}android-mail:before { content: @ionicon-var-android-mail; }
+.@{ionicons-prefix}android-map:before { content: @ionicon-var-android-map; }
+.@{ionicons-prefix}android-menu:before { content: @ionicon-var-android-menu; }
+.@{ionicons-prefix}android-microphone:before { content: @ionicon-var-android-microphone; }
+.@{ionicons-prefix}android-microphone-off:before { content: @ionicon-var-android-microphone-off; }
+.@{ionicons-prefix}android-more-horizontal:before { content: @ionicon-var-android-more-horizontal; }
+.@{ionicons-prefix}android-more-vertical:before { content: @ionicon-var-android-more-vertical; }
+.@{ionicons-prefix}android-navigate:before { content: @ionicon-var-android-navigate; }
+.@{ionicons-prefix}android-notifications:before { content: @ionicon-var-android-notifications; }
+.@{ionicons-prefix}android-notifications-none:before { content: @ionicon-var-android-notifications-none; }
+.@{ionicons-prefix}android-notifications-off:before { content: @ionicon-var-android-notifications-off; }
+.@{ionicons-prefix}android-open:before { content: @ionicon-var-android-open; }
+.@{ionicons-prefix}android-options:before { content: @ionicon-var-android-options; }
+.@{ionicons-prefix}android-people:before { content: @ionicon-var-android-people; }
+.@{ionicons-prefix}android-person:before { content: @ionicon-var-android-person; }
+.@{ionicons-prefix}android-person-add:before { content: @ionicon-var-android-person-add; }
+.@{ionicons-prefix}android-phone-landscape:before { content: @ionicon-var-android-phone-landscape; }
+.@{ionicons-prefix}android-phone-portrait:before { content: @ionicon-var-android-phone-portrait; }
+.@{ionicons-prefix}android-pin:before { content: @ionicon-var-android-pin; }
+.@{ionicons-prefix}android-plane:before { content: @ionicon-var-android-plane; }
+.@{ionicons-prefix}android-playstore:before { content: @ionicon-var-android-playstore; }
+.@{ionicons-prefix}android-print:before { content: @ionicon-var-android-print; }
+.@{ionicons-prefix}android-radio-button-off:before { content: @ionicon-var-android-radio-button-off; }
+.@{ionicons-prefix}android-radio-button-on:before { content: @ionicon-var-android-radio-button-on; }
+.@{ionicons-prefix}android-refresh:before { content: @ionicon-var-android-refresh; }
+.@{ionicons-prefix}android-remove:before { content: @ionicon-var-android-remove; }
+.@{ionicons-prefix}android-remove-circle:before { content: @ionicon-var-android-remove-circle; }
+.@{ionicons-prefix}android-restaurant:before { content: @ionicon-var-android-restaurant; }
+.@{ionicons-prefix}android-sad:before { content: @ionicon-var-android-sad; }
+.@{ionicons-prefix}android-search:before { content: @ionicon-var-android-search; }
+.@{ionicons-prefix}android-send:before { content: @ionicon-var-android-send; }
+.@{ionicons-prefix}android-settings:before { content: @ionicon-var-android-settings; }
+.@{ionicons-prefix}android-share:before { content: @ionicon-var-android-share; }
+.@{ionicons-prefix}android-share-alt:before { content: @ionicon-var-android-share-alt; }
+.@{ionicons-prefix}android-star:before { content: @ionicon-var-android-star; }
+.@{ionicons-prefix}android-star-half:before { content: @ionicon-var-android-star-half; }
+.@{ionicons-prefix}android-star-outline:before { content: @ionicon-var-android-star-outline; }
+.@{ionicons-prefix}android-stopwatch:before { content: @ionicon-var-android-stopwatch; }
+.@{ionicons-prefix}android-subway:before { content: @ionicon-var-android-subway; }
+.@{ionicons-prefix}android-sunny:before { content: @ionicon-var-android-sunny; }
+.@{ionicons-prefix}android-sync:before { content: @ionicon-var-android-sync; }
+.@{ionicons-prefix}android-textsms:before { content: @ionicon-var-android-textsms; }
+.@{ionicons-prefix}android-time:before { content: @ionicon-var-android-time; }
+.@{ionicons-prefix}android-train:before { content: @ionicon-var-android-train; }
+.@{ionicons-prefix}android-unlock:before { content: @ionicon-var-android-unlock; }
+.@{ionicons-prefix}android-upload:before { content: @ionicon-var-android-upload; }
+.@{ionicons-prefix}android-volume-down:before { content: @ionicon-var-android-volume-down; }
+.@{ionicons-prefix}android-volume-mute:before { content: @ionicon-var-android-volume-mute; }
+.@{ionicons-prefix}android-volume-off:before { content: @ionicon-var-android-volume-off; }
+.@{ionicons-prefix}android-volume-up:before { content: @ionicon-var-android-volume-up; }
+.@{ionicons-prefix}android-walk:before { content: @ionicon-var-android-walk; }
+.@{ionicons-prefix}android-warning:before { content: @ionicon-var-android-warning; }
+.@{ionicons-prefix}android-watch:before { content: @ionicon-var-android-watch; }
+.@{ionicons-prefix}android-wifi:before { content: @ionicon-var-android-wifi; }
+.@{ionicons-prefix}aperture:before { content: @ionicon-var-aperture; }
+.@{ionicons-prefix}archive:before { content: @ionicon-var-archive; }
+.@{ionicons-prefix}arrow-down-a:before { content: @ionicon-var-arrow-down-a; }
+.@{ionicons-prefix}arrow-down-b:before { content: @ionicon-var-arrow-down-b; }
+.@{ionicons-prefix}arrow-down-c:before { content: @ionicon-var-arrow-down-c; }
+.@{ionicons-prefix}arrow-expand:before { content: @ionicon-var-arrow-expand; }
+.@{ionicons-prefix}arrow-graph-down-left:before { content: @ionicon-var-arrow-graph-down-left; }
+.@{ionicons-prefix}arrow-graph-down-right:before { content: @ionicon-var-arrow-graph-down-right; }
+.@{ionicons-prefix}arrow-graph-up-left:before { content: @ionicon-var-arrow-graph-up-left; }
+.@{ionicons-prefix}arrow-graph-up-right:before { content: @ionicon-var-arrow-graph-up-right; }
+.@{ionicons-prefix}arrow-left-a:before { content: @ionicon-var-arrow-left-a; }
+.@{ionicons-prefix}arrow-left-b:before { content: @ionicon-var-arrow-left-b; }
+.@{ionicons-prefix}arrow-left-c:before { content: @ionicon-var-arrow-left-c; }
+.@{ionicons-prefix}arrow-move:before { content: @ionicon-var-arrow-move; }
+.@{ionicons-prefix}arrow-resize:before { content: @ionicon-var-arrow-resize; }
+.@{ionicons-prefix}arrow-return-left:before { content: @ionicon-var-arrow-return-left; }
+.@{ionicons-prefix}arrow-return-right:before { content: @ionicon-var-arrow-return-right; }
+.@{ionicons-prefix}arrow-right-a:before { content: @ionicon-var-arrow-right-a; }
+.@{ionicons-prefix}arrow-right-b:before { content: @ionicon-var-arrow-right-b; }
+.@{ionicons-prefix}arrow-right-c:before { content: @ionicon-var-arrow-right-c; }
+.@{ionicons-prefix}arrow-shrink:before { content: @ionicon-var-arrow-shrink; }
+.@{ionicons-prefix}arrow-swap:before { content: @ionicon-var-arrow-swap; }
+.@{ionicons-prefix}arrow-up-a:before { content: @ionicon-var-arrow-up-a; }
+.@{ionicons-prefix}arrow-up-b:before { content: @ionicon-var-arrow-up-b; }
+.@{ionicons-prefix}arrow-up-c:before { content: @ionicon-var-arrow-up-c; }
+.@{ionicons-prefix}asterisk:before { content: @ionicon-var-asterisk; }
+.@{ionicons-prefix}at:before { content: @ionicon-var-at; }
+.@{ionicons-prefix}backspace:before { content: @ionicon-var-backspace; }
+.@{ionicons-prefix}backspace-outline:before { content: @ionicon-var-backspace-outline; }
+.@{ionicons-prefix}bag:before { content: @ionicon-var-bag; }
+.@{ionicons-prefix}battery-charging:before { content: @ionicon-var-battery-charging; }
+.@{ionicons-prefix}battery-empty:before { content: @ionicon-var-battery-empty; }
+.@{ionicons-prefix}battery-full:before { content: @ionicon-var-battery-full; }
+.@{ionicons-prefix}battery-half:before { content: @ionicon-var-battery-half; }
+.@{ionicons-prefix}battery-low:before { content: @ionicon-var-battery-low; }
+.@{ionicons-prefix}beaker:before { content: @ionicon-var-beaker; }
+.@{ionicons-prefix}beer:before { content: @ionicon-var-beer; }
+.@{ionicons-prefix}bluetooth:before { content: @ionicon-var-bluetooth; }
+.@{ionicons-prefix}bonfire:before { content: @ionicon-var-bonfire; }
+.@{ionicons-prefix}bookmark:before { content: @ionicon-var-bookmark; }
+.@{ionicons-prefix}bowtie:before { content: @ionicon-var-bowtie; }
+.@{ionicons-prefix}briefcase:before { content: @ionicon-var-briefcase; }
+.@{ionicons-prefix}bug:before { content: @ionicon-var-bug; }
+.@{ionicons-prefix}calculator:before { content: @ionicon-var-calculator; }
+.@{ionicons-prefix}calendar:before { content: @ionicon-var-calendar; }
+.@{ionicons-prefix}camera:before { content: @ionicon-var-camera; }
+.@{ionicons-prefix}card:before { content: @ionicon-var-card; }
+.@{ionicons-prefix}cash:before { content: @ionicon-var-cash; }
+.@{ionicons-prefix}chatbox:before { content: @ionicon-var-chatbox; }
+.@{ionicons-prefix}chatbox-working:before { content: @ionicon-var-chatbox-working; }
+.@{ionicons-prefix}chatboxes:before { content: @ionicon-var-chatboxes; }
+.@{ionicons-prefix}chatbubble:before { content: @ionicon-var-chatbubble; }
+.@{ionicons-prefix}chatbubble-working:before { content: @ionicon-var-chatbubble-working; }
+.@{ionicons-prefix}chatbubbles:before { content: @ionicon-var-chatbubbles; }
+.@{ionicons-prefix}checkmark:before { content: @ionicon-var-checkmark; }
+.@{ionicons-prefix}checkmark-circled:before { content: @ionicon-var-checkmark-circled; }
+.@{ionicons-prefix}checkmark-round:before { content: @ionicon-var-checkmark-round; }
+.@{ionicons-prefix}chevron-down:before { content: @ionicon-var-chevron-down; }
+.@{ionicons-prefix}chevron-left:before { content: @ionicon-var-chevron-left; }
+.@{ionicons-prefix}chevron-right:before { content: @ionicon-var-chevron-right; }
+.@{ionicons-prefix}chevron-up:before { content: @ionicon-var-chevron-up; }
+.@{ionicons-prefix}clipboard:before { content: @ionicon-var-clipboard; }
+.@{ionicons-prefix}clock:before { content: @ionicon-var-clock; }
+.@{ionicons-prefix}close:before { content: @ionicon-var-close; }
+.@{ionicons-prefix}close-circled:before { content: @ionicon-var-close-circled; }
+.@{ionicons-prefix}close-round:before { content: @ionicon-var-close-round; }
+.@{ionicons-prefix}closed-captioning:before { content: @ionicon-var-closed-captioning; }
+.@{ionicons-prefix}cloud:before { content: @ionicon-var-cloud; }
+.@{ionicons-prefix}code:before { content: @ionicon-var-code; }
+.@{ionicons-prefix}code-download:before { content: @ionicon-var-code-download; }
+.@{ionicons-prefix}code-working:before { content: @ionicon-var-code-working; }
+.@{ionicons-prefix}coffee:before { content: @ionicon-var-coffee; }
+.@{ionicons-prefix}compass:before { content: @ionicon-var-compass; }
+.@{ionicons-prefix}compose:before { content: @ionicon-var-compose; }
+.@{ionicons-prefix}connection-bars:before { content: @ionicon-var-connection-bars; }
+.@{ionicons-prefix}contrast:before { content: @ionicon-var-contrast; }
+.@{ionicons-prefix}crop:before { content: @ionicon-var-crop; }
+.@{ionicons-prefix}cube:before { content: @ionicon-var-cube; }
+.@{ionicons-prefix}disc:before { content: @ionicon-var-disc; }
+.@{ionicons-prefix}document:before { content: @ionicon-var-document; }
+.@{ionicons-prefix}document-text:before { content: @ionicon-var-document-text; }
+.@{ionicons-prefix}drag:before { content: @ionicon-var-drag; }
+.@{ionicons-prefix}earth:before { content: @ionicon-var-earth; }
+.@{ionicons-prefix}easel:before { content: @ionicon-var-easel; }
+.@{ionicons-prefix}edit:before { content: @ionicon-var-edit; }
+.@{ionicons-prefix}egg:before { content: @ionicon-var-egg; }
+.@{ionicons-prefix}eject:before { content: @ionicon-var-eject; }
+.@{ionicons-prefix}email:before { content: @ionicon-var-email; }
+.@{ionicons-prefix}email-unread:before { content: @ionicon-var-email-unread; }
+.@{ionicons-prefix}erlenmeyer-flask:before { content: @ionicon-var-erlenmeyer-flask; }
+.@{ionicons-prefix}erlenmeyer-flask-bubbles:before { content: @ionicon-var-erlenmeyer-flask-bubbles; }
+.@{ionicons-prefix}eye:before { content: @ionicon-var-eye; }
+.@{ionicons-prefix}eye-disabled:before { content: @ionicon-var-eye-disabled; }
+.@{ionicons-prefix}female:before { content: @ionicon-var-female; }
+.@{ionicons-prefix}filing:before { content: @ionicon-var-filing; }
+.@{ionicons-prefix}film-marker:before { content: @ionicon-var-film-marker; }
+.@{ionicons-prefix}fireball:before { content: @ionicon-var-fireball; }
+.@{ionicons-prefix}flag:before { content: @ionicon-var-flag; }
+.@{ionicons-prefix}flame:before { content: @ionicon-var-flame; }
+.@{ionicons-prefix}flash:before { content: @ionicon-var-flash; }
+.@{ionicons-prefix}flash-off:before { content: @ionicon-var-flash-off; }
+.@{ionicons-prefix}folder:before { content: @ionicon-var-folder; }
+.@{ionicons-prefix}fork:before { content: @ionicon-var-fork; }
+.@{ionicons-prefix}fork-repo:before { content: @ionicon-var-fork-repo; }
+.@{ionicons-prefix}forward:before { content: @ionicon-var-forward; }
+.@{ionicons-prefix}funnel:before { content: @ionicon-var-funnel; }
+.@{ionicons-prefix}gear-a:before { content: @ionicon-var-gear-a; }
+.@{ionicons-prefix}gear-b:before { content: @ionicon-var-gear-b; }
+.@{ionicons-prefix}grid:before { content: @ionicon-var-grid; }
+.@{ionicons-prefix}hammer:before { content: @ionicon-var-hammer; }
+.@{ionicons-prefix}happy:before { content: @ionicon-var-happy; }
+.@{ionicons-prefix}happy-outline:before { content: @ionicon-var-happy-outline; }
+.@{ionicons-prefix}headphone:before { content: @ionicon-var-headphone; }
+.@{ionicons-prefix}heart:before { content: @ionicon-var-heart; }
+.@{ionicons-prefix}heart-broken:before { content: @ionicon-var-heart-broken; }
+.@{ionicons-prefix}help:before { content: @ionicon-var-help; }
+.@{ionicons-prefix}help-buoy:before { content: @ionicon-var-help-buoy; }
+.@{ionicons-prefix}help-circled:before { content: @ionicon-var-help-circled; }
+.@{ionicons-prefix}home:before { content: @ionicon-var-home; }
+.@{ionicons-prefix}icecream:before { content: @ionicon-var-icecream; }
+.@{ionicons-prefix}image:before { content: @ionicon-var-image; }
+.@{ionicons-prefix}images:before { content: @ionicon-var-images; }
+.@{ionicons-prefix}information:before { content: @ionicon-var-information; }
+.@{ionicons-prefix}information-circled:before { content: @ionicon-var-information-circled; }
+.@{ionicons-prefix}ionic:before { content: @ionicon-var-ionic; }
+.@{ionicons-prefix}ios-alarm:before { content: @ionicon-var-ios-alarm; }
+.@{ionicons-prefix}ios-alarm-outline:before { content: @ionicon-var-ios-alarm-outline; }
+.@{ionicons-prefix}ios-albums:before { content: @ionicon-var-ios-albums; }
+.@{ionicons-prefix}ios-albums-outline:before { content: @ionicon-var-ios-albums-outline; }
+.@{ionicons-prefix}ios-americanfootball:before { content: @ionicon-var-ios-americanfootball; }
+.@{ionicons-prefix}ios-americanfootball-outline:before { content: @ionicon-var-ios-americanfootball-outline; }
+.@{ionicons-prefix}ios-analytics:before { content: @ionicon-var-ios-analytics; }
+.@{ionicons-prefix}ios-analytics-outline:before { content: @ionicon-var-ios-analytics-outline; }
+.@{ionicons-prefix}ios-arrow-back:before { content: @ionicon-var-ios-arrow-back; }
+.@{ionicons-prefix}ios-arrow-down:before { content: @ionicon-var-ios-arrow-down; }
+.@{ionicons-prefix}ios-arrow-forward:before { content: @ionicon-var-ios-arrow-forward; }
+.@{ionicons-prefix}ios-arrow-left:before { content: @ionicon-var-ios-arrow-left; }
+.@{ionicons-prefix}ios-arrow-right:before { content: @ionicon-var-ios-arrow-right; }
+.@{ionicons-prefix}ios-arrow-thin-down:before { content: @ionicon-var-ios-arrow-thin-down; }
+.@{ionicons-prefix}ios-arrow-thin-left:before { content: @ionicon-var-ios-arrow-thin-left; }
+.@{ionicons-prefix}ios-arrow-thin-right:before { content: @ionicon-var-ios-arrow-thin-right; }
+.@{ionicons-prefix}ios-arrow-thin-up:before { content: @ionicon-var-ios-arrow-thin-up; }
+.@{ionicons-prefix}ios-arrow-up:before { content: @ionicon-var-ios-arrow-up; }
+.@{ionicons-prefix}ios-at:before { content: @ionicon-var-ios-at; }
+.@{ionicons-prefix}ios-at-outline:before { content: @ionicon-var-ios-at-outline; }
+.@{ionicons-prefix}ios-barcode:before { content: @ionicon-var-ios-barcode; }
+.@{ionicons-prefix}ios-barcode-outline:before { content: @ionicon-var-ios-barcode-outline; }
+.@{ionicons-prefix}ios-baseball:before { content: @ionicon-var-ios-baseball; }
+.@{ionicons-prefix}ios-baseball-outline:before { content: @ionicon-var-ios-baseball-outline; }
+.@{ionicons-prefix}ios-basketball:before { content: @ionicon-var-ios-basketball; }
+.@{ionicons-prefix}ios-basketball-outline:before { content: @ionicon-var-ios-basketball-outline; }
+.@{ionicons-prefix}ios-bell:before { content: @ionicon-var-ios-bell; }
+.@{ionicons-prefix}ios-bell-outline:before { content: @ionicon-var-ios-bell-outline; }
+.@{ionicons-prefix}ios-body:before { content: @ionicon-var-ios-body; }
+.@{ionicons-prefix}ios-body-outline:before { content: @ionicon-var-ios-body-outline; }
+.@{ionicons-prefix}ios-bolt:before { content: @ionicon-var-ios-bolt; }
+.@{ionicons-prefix}ios-bolt-outline:before { content: @ionicon-var-ios-bolt-outline; }
+.@{ionicons-prefix}ios-book:before { content: @ionicon-var-ios-book; }
+.@{ionicons-prefix}ios-book-outline:before { content: @ionicon-var-ios-book-outline; }
+.@{ionicons-prefix}ios-bookmarks:before { content: @ionicon-var-ios-bookmarks; }
+.@{ionicons-prefix}ios-bookmarks-outline:before { content: @ionicon-var-ios-bookmarks-outline; }
+.@{ionicons-prefix}ios-box:before { content: @ionicon-var-ios-box; }
+.@{ionicons-prefix}ios-box-outline:before { content: @ionicon-var-ios-box-outline; }
+.@{ionicons-prefix}ios-briefcase:before { content: @ionicon-var-ios-briefcase; }
+.@{ionicons-prefix}ios-briefcase-outline:before { content: @ionicon-var-ios-briefcase-outline; }
+.@{ionicons-prefix}ios-browsers:before { content: @ionicon-var-ios-browsers; }
+.@{ionicons-prefix}ios-browsers-outline:before { content: @ionicon-var-ios-browsers-outline; }
+.@{ionicons-prefix}ios-calculator:before { content: @ionicon-var-ios-calculator; }
+.@{ionicons-prefix}ios-calculator-outline:before { content: @ionicon-var-ios-calculator-outline; }
+.@{ionicons-prefix}ios-calendar:before { content: @ionicon-var-ios-calendar; }
+.@{ionicons-prefix}ios-calendar-outline:before { content: @ionicon-var-ios-calendar-outline; }
+.@{ionicons-prefix}ios-camera:before { content: @ionicon-var-ios-camera; }
+.@{ionicons-prefix}ios-camera-outline:before { content: @ionicon-var-ios-camera-outline; }
+.@{ionicons-prefix}ios-cart:before { content: @ionicon-var-ios-cart; }
+.@{ionicons-prefix}ios-cart-outline:before { content: @ionicon-var-ios-cart-outline; }
+.@{ionicons-prefix}ios-chatboxes:before { content: @ionicon-var-ios-chatboxes; }
+.@{ionicons-prefix}ios-chatboxes-outline:before { content: @ionicon-var-ios-chatboxes-outline; }
+.@{ionicons-prefix}ios-chatbubble:before { content: @ionicon-var-ios-chatbubble; }
+.@{ionicons-prefix}ios-chatbubble-outline:before { content: @ionicon-var-ios-chatbubble-outline; }
+.@{ionicons-prefix}ios-checkmark:before { content: @ionicon-var-ios-checkmark; }
+.@{ionicons-prefix}ios-checkmark-empty:before { content: @ionicon-var-ios-checkmark-empty; }
+.@{ionicons-prefix}ios-checkmark-outline:before { content: @ionicon-var-ios-checkmark-outline; }
+.@{ionicons-prefix}ios-circle-filled:before { content: @ionicon-var-ios-circle-filled; }
+.@{ionicons-prefix}ios-circle-outline:before { content: @ionicon-var-ios-circle-outline; }
+.@{ionicons-prefix}ios-clock:before { content: @ionicon-var-ios-clock; }
+.@{ionicons-prefix}ios-clock-outline:before { content: @ionicon-var-ios-clock-outline; }
+.@{ionicons-prefix}ios-close:before { content: @ionicon-var-ios-close; }
+.@{ionicons-prefix}ios-close-empty:before { content: @ionicon-var-ios-close-empty; }
+.@{ionicons-prefix}ios-close-outline:before { content: @ionicon-var-ios-close-outline; }
+.@{ionicons-prefix}ios-cloud:before { content: @ionicon-var-ios-cloud; }
+.@{ionicons-prefix}ios-cloud-download:before { content: @ionicon-var-ios-cloud-download; }
+.@{ionicons-prefix}ios-cloud-download-outline:before { content: @ionicon-var-ios-cloud-download-outline; }
+.@{ionicons-prefix}ios-cloud-outline:before { content: @ionicon-var-ios-cloud-outline; }
+.@{ionicons-prefix}ios-cloud-upload:before { content: @ionicon-var-ios-cloud-upload; }
+.@{ionicons-prefix}ios-cloud-upload-outline:before { content: @ionicon-var-ios-cloud-upload-outline; }
+.@{ionicons-prefix}ios-cloudy:before { content: @ionicon-var-ios-cloudy; }
+.@{ionicons-prefix}ios-cloudy-night:before { content: @ionicon-var-ios-cloudy-night; }
+.@{ionicons-prefix}ios-cloudy-night-outline:before { content: @ionicon-var-ios-cloudy-night-outline; }
+.@{ionicons-prefix}ios-cloudy-outline:before { content: @ionicon-var-ios-cloudy-outline; }
+.@{ionicons-prefix}ios-cog:before { content: @ionicon-var-ios-cog; }
+.@{ionicons-prefix}ios-cog-outline:before { content: @ionicon-var-ios-cog-outline; }
+.@{ionicons-prefix}ios-color-filter:before { content: @ionicon-var-ios-color-filter; }
+.@{ionicons-prefix}ios-color-filter-outline:before { content: @ionicon-var-ios-color-filter-outline; }
+.@{ionicons-prefix}ios-color-wand:before { content: @ionicon-var-ios-color-wand; }
+.@{ionicons-prefix}ios-color-wand-outline:before { content: @ionicon-var-ios-color-wand-outline; }
+.@{ionicons-prefix}ios-compose:before { content: @ionicon-var-ios-compose; }
+.@{ionicons-prefix}ios-compose-outline:before { content: @ionicon-var-ios-compose-outline; }
+.@{ionicons-prefix}ios-contact:before { content: @ionicon-var-ios-contact; }
+.@{ionicons-prefix}ios-contact-outline:before { content: @ionicon-var-ios-contact-outline; }
+.@{ionicons-prefix}ios-copy:before { content: @ionicon-var-ios-copy; }
+.@{ionicons-prefix}ios-copy-outline:before { content: @ionicon-var-ios-copy-outline; }
+.@{ionicons-prefix}ios-crop:before { content: @ionicon-var-ios-crop; }
+.@{ionicons-prefix}ios-crop-strong:before { content: @ionicon-var-ios-crop-strong; }
+.@{ionicons-prefix}ios-download:before { content: @ionicon-var-ios-download; }
+.@{ionicons-prefix}ios-download-outline:before { content: @ionicon-var-ios-download-outline; }
+.@{ionicons-prefix}ios-drag:before { content: @ionicon-var-ios-drag; }
+.@{ionicons-prefix}ios-email:before { content: @ionicon-var-ios-email; }
+.@{ionicons-prefix}ios-email-outline:before { content: @ionicon-var-ios-email-outline; }
+.@{ionicons-prefix}ios-eye:before { content: @ionicon-var-ios-eye; }
+.@{ionicons-prefix}ios-eye-outline:before { content: @ionicon-var-ios-eye-outline; }
+.@{ionicons-prefix}ios-fastforward:before { content: @ionicon-var-ios-fastforward; }
+.@{ionicons-prefix}ios-fastforward-outline:before { content: @ionicon-var-ios-fastforward-outline; }
+.@{ionicons-prefix}ios-filing:before { content: @ionicon-var-ios-filing; }
+.@{ionicons-prefix}ios-filing-outline:before { content: @ionicon-var-ios-filing-outline; }
+.@{ionicons-prefix}ios-film:before { content: @ionicon-var-ios-film; }
+.@{ionicons-prefix}ios-film-outline:before { content: @ionicon-var-ios-film-outline; }
+.@{ionicons-prefix}ios-flag:before { content: @ionicon-var-ios-flag; }
+.@{ionicons-prefix}ios-flag-outline:before { content: @ionicon-var-ios-flag-outline; }
+.@{ionicons-prefix}ios-flame:before { content: @ionicon-var-ios-flame; }
+.@{ionicons-prefix}ios-flame-outline:before { content: @ionicon-var-ios-flame-outline; }
+.@{ionicons-prefix}ios-flask:before { content: @ionicon-var-ios-flask; }
+.@{ionicons-prefix}ios-flask-outline:before { content: @ionicon-var-ios-flask-outline; }
+.@{ionicons-prefix}ios-flower:before { content: @ionicon-var-ios-flower; }
+.@{ionicons-prefix}ios-flower-outline:before { content: @ionicon-var-ios-flower-outline; }
+.@{ionicons-prefix}ios-folder:before { content: @ionicon-var-ios-folder; }
+.@{ionicons-prefix}ios-folder-outline:before { content: @ionicon-var-ios-folder-outline; }
+.@{ionicons-prefix}ios-football:before { content: @ionicon-var-ios-football; }
+.@{ionicons-prefix}ios-football-outline:before { content: @ionicon-var-ios-football-outline; }
+.@{ionicons-prefix}ios-game-controller-a:before { content: @ionicon-var-ios-game-controller-a; }
+.@{ionicons-prefix}ios-game-controller-a-outline:before { content: @ionicon-var-ios-game-controller-a-outline; }
+.@{ionicons-prefix}ios-game-controller-b:before { content: @ionicon-var-ios-game-controller-b; }
+.@{ionicons-prefix}ios-game-controller-b-outline:before { content: @ionicon-var-ios-game-controller-b-outline; }
+.@{ionicons-prefix}ios-gear:before { content: @ionicon-var-ios-gear; }
+.@{ionicons-prefix}ios-gear-outline:before { content: @ionicon-var-ios-gear-outline; }
+.@{ionicons-prefix}ios-glasses:before { content: @ionicon-var-ios-glasses; }
+.@{ionicons-prefix}ios-glasses-outline:before { content: @ionicon-var-ios-glasses-outline; }
+.@{ionicons-prefix}ios-grid-view:before { content: @ionicon-var-ios-grid-view; }
+.@{ionicons-prefix}ios-grid-view-outline:before { content: @ionicon-var-ios-grid-view-outline; }
+.@{ionicons-prefix}ios-heart:before { content: @ionicon-var-ios-heart; }
+.@{ionicons-prefix}ios-heart-outline:before { content: @ionicon-var-ios-heart-outline; }
+.@{ionicons-prefix}ios-help:before { content: @ionicon-var-ios-help; }
+.@{ionicons-prefix}ios-help-empty:before { content: @ionicon-var-ios-help-empty; }
+.@{ionicons-prefix}ios-help-outline:before { content: @ionicon-var-ios-help-outline; }
+.@{ionicons-prefix}ios-home:before { content: @ionicon-var-ios-home; }
+.@{ionicons-prefix}ios-home-outline:before { content: @ionicon-var-ios-home-outline; }
+.@{ionicons-prefix}ios-infinite:before { content: @ionicon-var-ios-infinite; }
+.@{ionicons-prefix}ios-infinite-outline:before { content: @ionicon-var-ios-infinite-outline; }
+.@{ionicons-prefix}ios-information:before { content: @ionicon-var-ios-information; }
+.@{ionicons-prefix}ios-information-empty:before { content: @ionicon-var-ios-information-empty; }
+.@{ionicons-prefix}ios-information-outline:before { content: @ionicon-var-ios-information-outline; }
+.@{ionicons-prefix}ios-ionic-outline:before { content: @ionicon-var-ios-ionic-outline; }
+.@{ionicons-prefix}ios-keypad:before { content: @ionicon-var-ios-keypad; }
+.@{ionicons-prefix}ios-keypad-outline:before { content: @ionicon-var-ios-keypad-outline; }
+.@{ionicons-prefix}ios-lightbulb:before { content: @ionicon-var-ios-lightbulb; }
+.@{ionicons-prefix}ios-lightbulb-outline:before { content: @ionicon-var-ios-lightbulb-outline; }
+.@{ionicons-prefix}ios-list:before { content: @ionicon-var-ios-list; }
+.@{ionicons-prefix}ios-list-outline:before { content: @ionicon-var-ios-list-outline; }
+.@{ionicons-prefix}ios-location:before { content: @ionicon-var-ios-location; }
+.@{ionicons-prefix}ios-location-outline:before { content: @ionicon-var-ios-location-outline; }
+.@{ionicons-prefix}ios-locked:before { content: @ionicon-var-ios-locked; }
+.@{ionicons-prefix}ios-locked-outline:before { content: @ionicon-var-ios-locked-outline; }
+.@{ionicons-prefix}ios-loop:before { content: @ionicon-var-ios-loop; }
+.@{ionicons-prefix}ios-loop-strong:before { content: @ionicon-var-ios-loop-strong; }
+.@{ionicons-prefix}ios-medical:before { content: @ionicon-var-ios-medical; }
+.@{ionicons-prefix}ios-medical-outline:before { content: @ionicon-var-ios-medical-outline; }
+.@{ionicons-prefix}ios-medkit:before { content: @ionicon-var-ios-medkit; }
+.@{ionicons-prefix}ios-medkit-outline:before { content: @ionicon-var-ios-medkit-outline; }
+.@{ionicons-prefix}ios-mic:before { content: @ionicon-var-ios-mic; }
+.@{ionicons-prefix}ios-mic-off:before { content: @ionicon-var-ios-mic-off; }
+.@{ionicons-prefix}ios-mic-outline:before { content: @ionicon-var-ios-mic-outline; }
+.@{ionicons-prefix}ios-minus:before { content: @ionicon-var-ios-minus; }
+.@{ionicons-prefix}ios-minus-empty:before { content: @ionicon-var-ios-minus-empty; }
+.@{ionicons-prefix}ios-minus-outline:before { content: @ionicon-var-ios-minus-outline; }
+.@{ionicons-prefix}ios-monitor:before { content: @ionicon-var-ios-monitor; }
+.@{ionicons-prefix}ios-monitor-outline:before { content: @ionicon-var-ios-monitor-outline; }
+.@{ionicons-prefix}ios-moon:before { content: @ionicon-var-ios-moon; }
+.@{ionicons-prefix}ios-moon-outline:before { content: @ionicon-var-ios-moon-outline; }
+.@{ionicons-prefix}ios-more:before { content: @ionicon-var-ios-more; }
+.@{ionicons-prefix}ios-more-outline:before { content: @ionicon-var-ios-more-outline; }
+.@{ionicons-prefix}ios-musical-note:before { content: @ionicon-var-ios-musical-note; }
+.@{ionicons-prefix}ios-musical-notes:before { content: @ionicon-var-ios-musical-notes; }
+.@{ionicons-prefix}ios-navigate:before { content: @ionicon-var-ios-navigate; }
+.@{ionicons-prefix}ios-navigate-outline:before { content: @ionicon-var-ios-navigate-outline; }
+.@{ionicons-prefix}ios-nutrition:before { content: @ionicon-var-ios-nutrition; }
+.@{ionicons-prefix}ios-nutrition-outline:before { content: @ionicon-var-ios-nutrition-outline; }
+.@{ionicons-prefix}ios-paper:before { content: @ionicon-var-ios-paper; }
+.@{ionicons-prefix}ios-paper-outline:before { content: @ionicon-var-ios-paper-outline; }
+.@{ionicons-prefix}ios-paperplane:before { content: @ionicon-var-ios-paperplane; }
+.@{ionicons-prefix}ios-paperplane-outline:before { content: @ionicon-var-ios-paperplane-outline; }
+.@{ionicons-prefix}ios-partlysunny:before { content: @ionicon-var-ios-partlysunny; }
+.@{ionicons-prefix}ios-partlysunny-outline:before { content: @ionicon-var-ios-partlysunny-outline; }
+.@{ionicons-prefix}ios-pause:before { content: @ionicon-var-ios-pause; }
+.@{ionicons-prefix}ios-pause-outline:before { content: @ionicon-var-ios-pause-outline; }
+.@{ionicons-prefix}ios-paw:before { content: @ionicon-var-ios-paw; }
+.@{ionicons-prefix}ios-paw-outline:before { content: @ionicon-var-ios-paw-outline; }
+.@{ionicons-prefix}ios-people:before { content: @ionicon-var-ios-people; }
+.@{ionicons-prefix}ios-people-outline:before { content: @ionicon-var-ios-people-outline; }
+.@{ionicons-prefix}ios-person:before { content: @ionicon-var-ios-person; }
+.@{ionicons-prefix}ios-person-outline:before { content: @ionicon-var-ios-person-outline; }
+.@{ionicons-prefix}ios-personadd:before { content: @ionicon-var-ios-personadd; }
+.@{ionicons-prefix}ios-personadd-outline:before { content: @ionicon-var-ios-personadd-outline; }
+.@{ionicons-prefix}ios-photos:before { content: @ionicon-var-ios-photos; }
+.@{ionicons-prefix}ios-photos-outline:before { content: @ionicon-var-ios-photos-outline; }
+.@{ionicons-prefix}ios-pie:before { content: @ionicon-var-ios-pie; }
+.@{ionicons-prefix}ios-pie-outline:before { content: @ionicon-var-ios-pie-outline; }
+.@{ionicons-prefix}ios-pint:before { content: @ionicon-var-ios-pint; }
+.@{ionicons-prefix}ios-pint-outline:before { content: @ionicon-var-ios-pint-outline; }
+.@{ionicons-prefix}ios-play:before { content: @ionicon-var-ios-play; }
+.@{ionicons-prefix}ios-play-outline:before { content: @ionicon-var-ios-play-outline; }
+.@{ionicons-prefix}ios-plus:before { content: @ionicon-var-ios-plus; }
+.@{ionicons-prefix}ios-plus-empty:before { content: @ionicon-var-ios-plus-empty; }
+.@{ionicons-prefix}ios-plus-outline:before { content: @ionicon-var-ios-plus-outline; }
+.@{ionicons-prefix}ios-pricetag:before { content: @ionicon-var-ios-pricetag; }
+.@{ionicons-prefix}ios-pricetag-outline:before { content: @ionicon-var-ios-pricetag-outline; }
+.@{ionicons-prefix}ios-pricetags:before { content: @ionicon-var-ios-pricetags; }
+.@{ionicons-prefix}ios-pricetags-outline:before { content: @ionicon-var-ios-pricetags-outline; }
+.@{ionicons-prefix}ios-printer:before { content: @ionicon-var-ios-printer; }
+.@{ionicons-prefix}ios-printer-outline:before { content: @ionicon-var-ios-printer-outline; }
+.@{ionicons-prefix}ios-pulse:before { content: @ionicon-var-ios-pulse; }
+.@{ionicons-prefix}ios-pulse-strong:before { content: @ionicon-var-ios-pulse-strong; }
+.@{ionicons-prefix}ios-rainy:before { content: @ionicon-var-ios-rainy; }
+.@{ionicons-prefix}ios-rainy-outline:before { content: @ionicon-var-ios-rainy-outline; }
+.@{ionicons-prefix}ios-recording:before { content: @ionicon-var-ios-recording; }
+.@{ionicons-prefix}ios-recording-outline:before { content: @ionicon-var-ios-recording-outline; }
+.@{ionicons-prefix}ios-redo:before { content: @ionicon-var-ios-redo; }
+.@{ionicons-prefix}ios-redo-outline:before { content: @ionicon-var-ios-redo-outline; }
+.@{ionicons-prefix}ios-refresh:before { content: @ionicon-var-ios-refresh; }
+.@{ionicons-prefix}ios-refresh-empty:before { content: @ionicon-var-ios-refresh-empty; }
+.@{ionicons-prefix}ios-refresh-outline:before { content: @ionicon-var-ios-refresh-outline; }
+.@{ionicons-prefix}ios-reload:before { content: @ionicon-var-ios-reload; }
+.@{ionicons-prefix}ios-reverse-camera:before { content: @ionicon-var-ios-reverse-camera; }
+.@{ionicons-prefix}ios-reverse-camera-outline:before { content: @ionicon-var-ios-reverse-camera-outline; }
+.@{ionicons-prefix}ios-rewind:before { content: @ionicon-var-ios-rewind; }
+.@{ionicons-prefix}ios-rewind-outline:before { content: @ionicon-var-ios-rewind-outline; }
+.@{ionicons-prefix}ios-rose:before { content: @ionicon-var-ios-rose; }
+.@{ionicons-prefix}ios-rose-outline:before { content: @ionicon-var-ios-rose-outline; }
+.@{ionicons-prefix}ios-search:before { content: @ionicon-var-ios-search; }
+.@{ionicons-prefix}ios-search-strong:before { content: @ionicon-var-ios-search-strong; }
+.@{ionicons-prefix}ios-settings:before { content: @ionicon-var-ios-settings; }
+.@{ionicons-prefix}ios-settings-strong:before { content: @ionicon-var-ios-settings-strong; }
+.@{ionicons-prefix}ios-shuffle:before { content: @ionicon-var-ios-shuffle; }
+.@{ionicons-prefix}ios-shuffle-strong:before { content: @ionicon-var-ios-shuffle-strong; }
+.@{ionicons-prefix}ios-skipbackward:before { content: @ionicon-var-ios-skipbackward; }
+.@{ionicons-prefix}ios-skipbackward-outline:before { content: @ionicon-var-ios-skipbackward-outline; }
+.@{ionicons-prefix}ios-skipforward:before { content: @ionicon-var-ios-skipforward; }
+.@{ionicons-prefix}ios-skipforward-outline:before { content: @ionicon-var-ios-skipforward-outline; }
+.@{ionicons-prefix}ios-snowy:before { content: @ionicon-var-ios-snowy; }
+.@{ionicons-prefix}ios-speedometer:before { content: @ionicon-var-ios-speedometer; }
+.@{ionicons-prefix}ios-speedometer-outline:before { content: @ionicon-var-ios-speedometer-outline; }
+.@{ionicons-prefix}ios-star:before { content: @ionicon-var-ios-star; }
+.@{ionicons-prefix}ios-star-half:before { content: @ionicon-var-ios-star-half; }
+.@{ionicons-prefix}ios-star-outline:before { content: @ionicon-var-ios-star-outline; }
+.@{ionicons-prefix}ios-stopwatch:before { content: @ionicon-var-ios-stopwatch; }
+.@{ionicons-prefix}ios-stopwatch-outline:before { content: @ionicon-var-ios-stopwatch-outline; }
+.@{ionicons-prefix}ios-sunny:before { content: @ionicon-var-ios-sunny; }
+.@{ionicons-prefix}ios-sunny-outline:before { content: @ionicon-var-ios-sunny-outline; }
+.@{ionicons-prefix}ios-telephone:before { content: @ionicon-var-ios-telephone; }
+.@{ionicons-prefix}ios-telephone-outline:before { content: @ionicon-var-ios-telephone-outline; }
+.@{ionicons-prefix}ios-tennisball:before { content: @ionicon-var-ios-tennisball; }
+.@{ionicons-prefix}ios-tennisball-outline:before { content: @ionicon-var-ios-tennisball-outline; }
+.@{ionicons-prefix}ios-thunderstorm:before { content: @ionicon-var-ios-thunderstorm; }
+.@{ionicons-prefix}ios-thunderstorm-outline:before { content: @ionicon-var-ios-thunderstorm-outline; }
+.@{ionicons-prefix}ios-time:before { content: @ionicon-var-ios-time; }
+.@{ionicons-prefix}ios-time-outline:before { content: @ionicon-var-ios-time-outline; }
+.@{ionicons-prefix}ios-timer:before { content: @ionicon-var-ios-timer; }
+.@{ionicons-prefix}ios-timer-outline:before { content: @ionicon-var-ios-timer-outline; }
+.@{ionicons-prefix}ios-toggle:before { content: @ionicon-var-ios-toggle; }
+.@{ionicons-prefix}ios-toggle-outline:before { content: @ionicon-var-ios-toggle-outline; }
+.@{ionicons-prefix}ios-trash:before { content: @ionicon-var-ios-trash; }
+.@{ionicons-prefix}ios-trash-outline:before { content: @ionicon-var-ios-trash-outline; }
+.@{ionicons-prefix}ios-undo:before { content: @ionicon-var-ios-undo; }
+.@{ionicons-prefix}ios-undo-outline:before { content: @ionicon-var-ios-undo-outline; }
+.@{ionicons-prefix}ios-unlocked:before { content: @ionicon-var-ios-unlocked; }
+.@{ionicons-prefix}ios-unlocked-outline:before { content: @ionicon-var-ios-unlocked-outline; }
+.@{ionicons-prefix}ios-upload:before { content: @ionicon-var-ios-upload; }
+.@{ionicons-prefix}ios-upload-outline:before { content: @ionicon-var-ios-upload-outline; }
+.@{ionicons-prefix}ios-videocam:before { content: @ionicon-var-ios-videocam; }
+.@{ionicons-prefix}ios-videocam-outline:before { content: @ionicon-var-ios-videocam-outline; }
+.@{ionicons-prefix}ios-volume-high:before { content: @ionicon-var-ios-volume-high; }
+.@{ionicons-prefix}ios-volume-low:before { content: @ionicon-var-ios-volume-low; }
+.@{ionicons-prefix}ios-wineglass:before { content: @ionicon-var-ios-wineglass; }
+.@{ionicons-prefix}ios-wineglass-outline:before { content: @ionicon-var-ios-wineglass-outline; }
+.@{ionicons-prefix}ios-world:before { content: @ionicon-var-ios-world; }
+.@{ionicons-prefix}ios-world-outline:before { content: @ionicon-var-ios-world-outline; }
+.@{ionicons-prefix}ipad:before { content: @ionicon-var-ipad; }
+.@{ionicons-prefix}iphone:before { content: @ionicon-var-iphone; }
+.@{ionicons-prefix}ipod:before { content: @ionicon-var-ipod; }
+.@{ionicons-prefix}jet:before { content: @ionicon-var-jet; }
+.@{ionicons-prefix}key:before { content: @ionicon-var-key; }
+.@{ionicons-prefix}knife:before { content: @ionicon-var-knife; }
+.@{ionicons-prefix}laptop:before { content: @ionicon-var-laptop; }
+.@{ionicons-prefix}leaf:before { content: @ionicon-var-leaf; }
+.@{ionicons-prefix}levels:before { content: @ionicon-var-levels; }
+.@{ionicons-prefix}lightbulb:before { content: @ionicon-var-lightbulb; }
+.@{ionicons-prefix}link:before { content: @ionicon-var-link; }
+.@{ionicons-prefix}load-a:before { content: @ionicon-var-load-a; }
+.@{ionicons-prefix}load-b:before { content: @ionicon-var-load-b; }
+.@{ionicons-prefix}load-c:before { content: @ionicon-var-load-c; }
+.@{ionicons-prefix}load-d:before { content: @ionicon-var-load-d; }
+.@{ionicons-prefix}location:before { content: @ionicon-var-location; }
+.@{ionicons-prefix}lock-combination:before { content: @ionicon-var-lock-combination; }
+.@{ionicons-prefix}locked:before { content: @ionicon-var-locked; }
+.@{ionicons-prefix}log-in:before { content: @ionicon-var-log-in; }
+.@{ionicons-prefix}log-out:before { content: @ionicon-var-log-out; }
+.@{ionicons-prefix}loop:before { content: @ionicon-var-loop; }
+.@{ionicons-prefix}magnet:before { content: @ionicon-var-magnet; }
+.@{ionicons-prefix}male:before { content: @ionicon-var-male; }
+.@{ionicons-prefix}man:before { content: @ionicon-var-man; }
+.@{ionicons-prefix}map:before { content: @ionicon-var-map; }
+.@{ionicons-prefix}medkit:before { content: @ionicon-var-medkit; }
+.@{ionicons-prefix}merge:before { content: @ionicon-var-merge; }
+.@{ionicons-prefix}mic-a:before { content: @ionicon-var-mic-a; }
+.@{ionicons-prefix}mic-b:before { content: @ionicon-var-mic-b; }
+.@{ionicons-prefix}mic-c:before { content: @ionicon-var-mic-c; }
+.@{ionicons-prefix}minus:before { content: @ionicon-var-minus; }
+.@{ionicons-prefix}minus-circled:before { content: @ionicon-var-minus-circled; }
+.@{ionicons-prefix}minus-round:before { content: @ionicon-var-minus-round; }
+.@{ionicons-prefix}model-s:before { content: @ionicon-var-model-s; }
+.@{ionicons-prefix}monitor:before { content: @ionicon-var-monitor; }
+.@{ionicons-prefix}more:before { content: @ionicon-var-more; }
+.@{ionicons-prefix}mouse:before { content: @ionicon-var-mouse; }
+.@{ionicons-prefix}music-note:before { content: @ionicon-var-music-note; }
+.@{ionicons-prefix}navicon:before { content: @ionicon-var-navicon; }
+.@{ionicons-prefix}navicon-round:before { content: @ionicon-var-navicon-round; }
+.@{ionicons-prefix}navigate:before { content: @ionicon-var-navigate; }
+.@{ionicons-prefix}network:before { content: @ionicon-var-network; }
+.@{ionicons-prefix}no-smoking:before { content: @ionicon-var-no-smoking; }
+.@{ionicons-prefix}nuclear:before { content: @ionicon-var-nuclear; }
+.@{ionicons-prefix}outlet:before { content: @ionicon-var-outlet; }
+.@{ionicons-prefix}paintbrush:before { content: @ionicon-var-paintbrush; }
+.@{ionicons-prefix}paintbucket:before { content: @ionicon-var-paintbucket; }
+.@{ionicons-prefix}paper-airplane:before { content: @ionicon-var-paper-airplane; }
+.@{ionicons-prefix}paperclip:before { content: @ionicon-var-paperclip; }
+.@{ionicons-prefix}pause:before { content: @ionicon-var-pause; }
+.@{ionicons-prefix}person:before { content: @ionicon-var-person; }
+.@{ionicons-prefix}person-add:before { content: @ionicon-var-person-add; }
+.@{ionicons-prefix}person-stalker:before { content: @ionicon-var-person-stalker; }
+.@{ionicons-prefix}pie-graph:before { content: @ionicon-var-pie-graph; }
+.@{ionicons-prefix}pin:before { content: @ionicon-var-pin; }
+.@{ionicons-prefix}pinpoint:before { content: @ionicon-var-pinpoint; }
+.@{ionicons-prefix}pizza:before { content: @ionicon-var-pizza; }
+.@{ionicons-prefix}plane:before { content: @ionicon-var-plane; }
+.@{ionicons-prefix}planet:before { content: @ionicon-var-planet; }
+.@{ionicons-prefix}play:before { content: @ionicon-var-play; }
+.@{ionicons-prefix}playstation:before { content: @ionicon-var-playstation; }
+.@{ionicons-prefix}plus:before { content: @ionicon-var-plus; }
+.@{ionicons-prefix}plus-circled:before { content: @ionicon-var-plus-circled; }
+.@{ionicons-prefix}plus-round:before { content: @ionicon-var-plus-round; }
+.@{ionicons-prefix}podium:before { content: @ionicon-var-podium; }
+.@{ionicons-prefix}pound:before { content: @ionicon-var-pound; }
+.@{ionicons-prefix}power:before { content: @ionicon-var-power; }
+.@{ionicons-prefix}pricetag:before { content: @ionicon-var-pricetag; }
+.@{ionicons-prefix}pricetags:before { content: @ionicon-var-pricetags; }
+.@{ionicons-prefix}printer:before { content: @ionicon-var-printer; }
+.@{ionicons-prefix}pull-request:before { content: @ionicon-var-pull-request; }
+.@{ionicons-prefix}qr-scanner:before { content: @ionicon-var-qr-scanner; }
+.@{ionicons-prefix}quote:before { content: @ionicon-var-quote; }
+.@{ionicons-prefix}radio-waves:before { content: @ionicon-var-radio-waves; }
+.@{ionicons-prefix}record:before { content: @ionicon-var-record; }
+.@{ionicons-prefix}refresh:before { content: @ionicon-var-refresh; }
+.@{ionicons-prefix}reply:before { content: @ionicon-var-reply; }
+.@{ionicons-prefix}reply-all:before { content: @ionicon-var-reply-all; }
+.@{ionicons-prefix}ribbon-a:before { content: @ionicon-var-ribbon-a; }
+.@{ionicons-prefix}ribbon-b:before { content: @ionicon-var-ribbon-b; }
+.@{ionicons-prefix}sad:before { content: @ionicon-var-sad; }
+.@{ionicons-prefix}sad-outline:before { content: @ionicon-var-sad-outline; }
+.@{ionicons-prefix}scissors:before { content: @ionicon-var-scissors; }
+.@{ionicons-prefix}search:before { content: @ionicon-var-search; }
+.@{ionicons-prefix}settings:before { content: @ionicon-var-settings; }
+.@{ionicons-prefix}share:before { content: @ionicon-var-share; }
+.@{ionicons-prefix}shuffle:before { content: @ionicon-var-shuffle; }
+.@{ionicons-prefix}skip-backward:before { content: @ionicon-var-skip-backward; }
+.@{ionicons-prefix}skip-forward:before { content: @ionicon-var-skip-forward; }
+.@{ionicons-prefix}social-android:before { content: @ionicon-var-social-android; }
+.@{ionicons-prefix}social-android-outline:before { content: @ionicon-var-social-android-outline; }
+.@{ionicons-prefix}social-angular:before { content: @ionicon-var-social-angular; }
+.@{ionicons-prefix}social-angular-outline:before { content: @ionicon-var-social-angular-outline; }
+.@{ionicons-prefix}social-apple:before { content: @ionicon-var-social-apple; }
+.@{ionicons-prefix}social-apple-outline:before { content: @ionicon-var-social-apple-outline; }
+.@{ionicons-prefix}social-bitcoin:before { content: @ionicon-var-social-bitcoin; }
+.@{ionicons-prefix}social-bitcoin-outline:before { content: @ionicon-var-social-bitcoin-outline; }
+.@{ionicons-prefix}social-buffer:before { content: @ionicon-var-social-buffer; }
+.@{ionicons-prefix}social-buffer-outline:before { content: @ionicon-var-social-buffer-outline; }
+.@{ionicons-prefix}social-chrome:before { content: @ionicon-var-social-chrome; }
+.@{ionicons-prefix}social-chrome-outline:before { content: @ionicon-var-social-chrome-outline; }
+.@{ionicons-prefix}social-codepen:before { content: @ionicon-var-social-codepen; }
+.@{ionicons-prefix}social-codepen-outline:before { content: @ionicon-var-social-codepen-outline; }
+.@{ionicons-prefix}social-css3:before { content: @ionicon-var-social-css3; }
+.@{ionicons-prefix}social-css3-outline:before { content: @ionicon-var-social-css3-outline; }
+.@{ionicons-prefix}social-designernews:before { content: @ionicon-var-social-designernews; }
+.@{ionicons-prefix}social-designernews-outline:before { content: @ionicon-var-social-designernews-outline; }
+.@{ionicons-prefix}social-dribbble:before { content: @ionicon-var-social-dribbble; }
+.@{ionicons-prefix}social-dribbble-outline:before { content: @ionicon-var-social-dribbble-outline; }
+.@{ionicons-prefix}social-dropbox:before { content: @ionicon-var-social-dropbox; }
+.@{ionicons-prefix}social-dropbox-outline:before { content: @ionicon-var-social-dropbox-outline; }
+.@{ionicons-prefix}social-euro:before { content: @ionicon-var-social-euro; }
+.@{ionicons-prefix}social-euro-outline:before { content: @ionicon-var-social-euro-outline; }
+.@{ionicons-prefix}social-facebook:before { content: @ionicon-var-social-facebook; }
+.@{ionicons-prefix}social-facebook-outline:before { content: @ionicon-var-social-facebook-outline; }
+.@{ionicons-prefix}social-foursquare:before { content: @ionicon-var-social-foursquare; }
+.@{ionicons-prefix}social-foursquare-outline:before { content: @ionicon-var-social-foursquare-outline; }
+.@{ionicons-prefix}social-freebsd-devil:before { content: @ionicon-var-social-freebsd-devil; }
+.@{ionicons-prefix}social-github:before { content: @ionicon-var-social-github; }
+.@{ionicons-prefix}social-github-outline:before { content: @ionicon-var-social-github-outline; }
+.@{ionicons-prefix}social-google:before { content: @ionicon-var-social-google; }
+.@{ionicons-prefix}social-google-outline:before { content: @ionicon-var-social-google-outline; }
+.@{ionicons-prefix}social-googleplus:before { content: @ionicon-var-social-googleplus; }
+.@{ionicons-prefix}social-googleplus-outline:before { content: @ionicon-var-social-googleplus-outline; }
+.@{ionicons-prefix}social-hackernews:before { content: @ionicon-var-social-hackernews; }
+.@{ionicons-prefix}social-hackernews-outline:before { content: @ionicon-var-social-hackernews-outline; }
+.@{ionicons-prefix}social-html5:before { content: @ionicon-var-social-html5; }
+.@{ionicons-prefix}social-html5-outline:before { content: @ionicon-var-social-html5-outline; }
+.@{ionicons-prefix}social-instagram:before { content: @ionicon-var-social-instagram; }
+.@{ionicons-prefix}social-instagram-outline:before { content: @ionicon-var-social-instagram-outline; }
+.@{ionicons-prefix}social-javascript:before { content: @ionicon-var-social-javascript; }
+.@{ionicons-prefix}social-javascript-outline:before { content: @ionicon-var-social-javascript-outline; }
+.@{ionicons-prefix}social-linkedin:before { content: @ionicon-var-social-linkedin; }
+.@{ionicons-prefix}social-linkedin-outline:before { content: @ionicon-var-social-linkedin-outline; }
+.@{ionicons-prefix}social-markdown:before { content: @ionicon-var-social-markdown; }
+.@{ionicons-prefix}social-nodejs:before { content: @ionicon-var-social-nodejs; }
+.@{ionicons-prefix}social-octocat:before { content: @ionicon-var-social-octocat; }
+.@{ionicons-prefix}social-pinterest:before { content: @ionicon-var-social-pinterest; }
+.@{ionicons-prefix}social-pinterest-outline:before { content: @ionicon-var-social-pinterest-outline; }
+.@{ionicons-prefix}social-python:before { content: @ionicon-var-social-python; }
+.@{ionicons-prefix}social-reddit:before { content: @ionicon-var-social-reddit; }
+.@{ionicons-prefix}social-reddit-outline:before { content: @ionicon-var-social-reddit-outline; }
+.@{ionicons-prefix}social-rss:before { content: @ionicon-var-social-rss; }
+.@{ionicons-prefix}social-rss-outline:before { content: @ionicon-var-social-rss-outline; }
+.@{ionicons-prefix}social-sass:before { content: @ionicon-var-social-sass; }
+.@{ionicons-prefix}social-skype:before { content: @ionicon-var-social-skype; }
+.@{ionicons-prefix}social-skype-outline:before { content: @ionicon-var-social-skype-outline; }
+.@{ionicons-prefix}social-snapchat:before { content: @ionicon-var-social-snapchat; }
+.@{ionicons-prefix}social-snapchat-outline:before { content: @ionicon-var-social-snapchat-outline; }
+.@{ionicons-prefix}social-tumblr:before { content: @ionicon-var-social-tumblr; }
+.@{ionicons-prefix}social-tumblr-outline:before { content: @ionicon-var-social-tumblr-outline; }
+.@{ionicons-prefix}social-tux:before { content: @ionicon-var-social-tux; }
+.@{ionicons-prefix}social-twitch:before { content: @ionicon-var-social-twitch; }
+.@{ionicons-prefix}social-twitch-outline:before { content: @ionicon-var-social-twitch-outline; }
+.@{ionicons-prefix}social-twitter:before { content: @ionicon-var-social-twitter; }
+.@{ionicons-prefix}social-twitter-outline:before { content: @ionicon-var-social-twitter-outline; }
+.@{ionicons-prefix}social-usd:before { content: @ionicon-var-social-usd; }
+.@{ionicons-prefix}social-usd-outline:before { content: @ionicon-var-social-usd-outline; }
+.@{ionicons-prefix}social-vimeo:before { content: @ionicon-var-social-vimeo; }
+.@{ionicons-prefix}social-vimeo-outline:before { content: @ionicon-var-social-vimeo-outline; }
+.@{ionicons-prefix}social-whatsapp:before { content: @ionicon-var-social-whatsapp; }
+.@{ionicons-prefix}social-whatsapp-outline:before { content: @ionicon-var-social-whatsapp-outline; }
+.@{ionicons-prefix}social-windows:before { content: @ionicon-var-social-windows; }
+.@{ionicons-prefix}social-windows-outline:before { content: @ionicon-var-social-windows-outline; }
+.@{ionicons-prefix}social-wordpress:before { content: @ionicon-var-social-wordpress; }
+.@{ionicons-prefix}social-wordpress-outline:before { content: @ionicon-var-social-wordpress-outline; }
+.@{ionicons-prefix}social-yahoo:before { content: @ionicon-var-social-yahoo; }
+.@{ionicons-prefix}social-yahoo-outline:before { content: @ionicon-var-social-yahoo-outline; }
+.@{ionicons-prefix}social-yen:before { content: @ionicon-var-social-yen; }
+.@{ionicons-prefix}social-yen-outline:before { content: @ionicon-var-social-yen-outline; }
+.@{ionicons-prefix}social-youtube:before { content: @ionicon-var-social-youtube; }
+.@{ionicons-prefix}social-youtube-outline:before { content: @ionicon-var-social-youtube-outline; }
+.@{ionicons-prefix}soup-can:before { content: @ionicon-var-soup-can; }
+.@{ionicons-prefix}soup-can-outline:before { content: @ionicon-var-soup-can-outline; }
+.@{ionicons-prefix}speakerphone:before { content: @ionicon-var-speakerphone; }
+.@{ionicons-prefix}speedometer:before { content: @ionicon-var-speedometer; }
+.@{ionicons-prefix}spoon:before { content: @ionicon-var-spoon; }
+.@{ionicons-prefix}star:before { content: @ionicon-var-star; }
+.@{ionicons-prefix}stats-bars:before { content: @ionicon-var-stats-bars; }
+.@{ionicons-prefix}steam:before { content: @ionicon-var-steam; }
+.@{ionicons-prefix}stop:before { content: @ionicon-var-stop; }
+.@{ionicons-prefix}thermometer:before { content: @ionicon-var-thermometer; }
+.@{ionicons-prefix}thumbsdown:before { content: @ionicon-var-thumbsdown; }
+.@{ionicons-prefix}thumbsup:before { content: @ionicon-var-thumbsup; }
+.@{ionicons-prefix}toggle:before { content: @ionicon-var-toggle; }
+.@{ionicons-prefix}toggle-filled:before { content: @ionicon-var-toggle-filled; }
+.@{ionicons-prefix}transgender:before { content: @ionicon-var-transgender; }
+.@{ionicons-prefix}trash-a:before { content: @ionicon-var-trash-a; }
+.@{ionicons-prefix}trash-b:before { content: @ionicon-var-trash-b; }
+.@{ionicons-prefix}trophy:before { content: @ionicon-var-trophy; }
+.@{ionicons-prefix}tshirt:before { content: @ionicon-var-tshirt; }
+.@{ionicons-prefix}tshirt-outline:before { content: @ionicon-var-tshirt-outline; }
+.@{ionicons-prefix}umbrella:before { content: @ionicon-var-umbrella; }
+.@{ionicons-prefix}university:before { content: @ionicon-var-university; }
+.@{ionicons-prefix}unlocked:before { content: @ionicon-var-unlocked; }
+.@{ionicons-prefix}upload:before { content: @ionicon-var-upload; }
+.@{ionicons-prefix}usb:before { content: @ionicon-var-usb; }
+.@{ionicons-prefix}videocamera:before { content: @ionicon-var-videocamera; }
+.@{ionicons-prefix}volume-high:before { content: @ionicon-var-volume-high; }
+.@{ionicons-prefix}volume-low:before { content: @ionicon-var-volume-low; }
+.@{ionicons-prefix}volume-medium:before { content: @ionicon-var-volume-medium; }
+.@{ionicons-prefix}volume-mute:before { content: @ionicon-var-volume-mute; }
+.@{ionicons-prefix}wand:before { content: @ionicon-var-wand; }
+.@{ionicons-prefix}waterdrop:before { content: @ionicon-var-waterdrop; }
+.@{ionicons-prefix}wifi:before { content: @ionicon-var-wifi; }
+.@{ionicons-prefix}wineglass:before { content: @ionicon-var-wineglass; }
+.@{ionicons-prefix}woman:before { content: @ionicon-var-woman; }
+.@{ionicons-prefix}wrench:before { content: @ionicon-var-wrench; }
+.@{ionicons-prefix}xbox:before { content: @ionicon-var-xbox; }
\ No newline at end of file
diff --git a/app/assets/less/vendor/ionicons/_ionicons-variables.less b/app/assets/less/vendor/ionicons/_ionicons-variables.less
new file mode 100644
index 0000000..9119527
--- /dev/null
+++ b/app/assets/less/vendor/ionicons/_ionicons-variables.less
@@ -0,0 +1,747 @@
+/*!
+Ionicons, v2.0.0
+Created by Ben Sperry for the Ionic Framework, http://ionicons.com/
+https://twitter.com/benjsperry  https://twitter.com/ionicframework
+MIT License: https://github.com/driftyco/ionicons
+*/
+// Ionicons Variables
+// --------------------------
+
+@ionicons-font-path: "../fonts";
+@ionicons-font-family: "Ionicons";
+@ionicons-version: "2.0.0";
+@ionicons-prefix: ion-;
+
+@ionicon-var-alert: "\f101";
+@ionicon-var-alert-circled: "\f100";
+@ionicon-var-android-add: "\f2c7";
+@ionicon-var-android-add-circle: "\f359";
+@ionicon-var-android-alarm-clock: "\f35a";
+@ionicon-var-android-alert: "\f35b";
+@ionicon-var-android-apps: "\f35c";
+@ionicon-var-android-archive: "\f2c9";
+@ionicon-var-android-arrow-back: "\f2ca";
+@ionicon-var-android-arrow-down: "\f35d";
+@ionicon-var-android-arrow-dropdown: "\f35f";
+@ionicon-var-android-arrow-dropdown-circle: "\f35e";
+@ionicon-var-android-arrow-dropleft: "\f361";
+@ionicon-var-android-arrow-dropleft-circle: "\f360";
+@ionicon-var-android-arrow-dropright: "\f363";
+@ionicon-var-android-arrow-dropright-circle: "\f362";
+@ionicon-var-android-arrow-dropup: "\f365";
+@ionicon-var-android-arrow-dropup-circle: "\f364";
+@ionicon-var-android-arrow-forward: "\f30f";
+@ionicon-var-android-arrow-up: "\f366";
+@ionicon-var-android-attach: "\f367";
+@ionicon-var-android-bar: "\f368";
+@ionicon-var-android-bicycle: "\f369";
+@ionicon-var-android-boat: "\f36a";
+@ionicon-var-android-bookmark: "\f36b";
+@ionicon-var-android-bulb: "\f36c";
+@ionicon-var-android-bus: "\f36d";
+@ionicon-var-android-calendar: "\f2d1";
+@ionicon-var-android-call: "\f2d2";
+@ionicon-var-android-camera: "\f2d3";
+@ionicon-var-android-cancel: "\f36e";
+@ionicon-var-android-car: "\f36f";
+@ionicon-var-android-cart: "\f370";
+@ionicon-var-android-chat: "\f2d4";
+@ionicon-var-android-checkbox: "\f374";
+@ionicon-var-android-checkbox-blank: "\f371";
+@ionicon-var-android-checkbox-outline: "\f373";
+@ionicon-var-android-checkbox-outline-blank: "\f372";
+@ionicon-var-android-checkmark-circle: "\f375";
+@ionicon-var-android-clipboard: "\f376";
+@ionicon-var-android-close: "\f2d7";
+@ionicon-var-android-cloud: "\f37a";
+@ionicon-var-android-cloud-circle: "\f377";
+@ionicon-var-android-cloud-done: "\f378";
+@ionicon-var-android-cloud-outline: "\f379";
+@ionicon-var-android-color-palette: "\f37b";
+@ionicon-var-android-compass: "\f37c";
+@ionicon-var-android-contact: "\f2d8";
+@ionicon-var-android-contacts: "\f2d9";
+@ionicon-var-android-contract: "\f37d";
+@ionicon-var-android-create: "\f37e";
+@ionicon-var-android-delete: "\f37f";
+@ionicon-var-android-desktop: "\f380";
+@ionicon-var-android-document: "\f381";
+@ionicon-var-android-done: "\f383";
+@ionicon-var-android-done-all: "\f382";
+@ionicon-var-android-download: "\f2dd";
+@ionicon-var-android-drafts: "\f384";
+@ionicon-var-android-exit: "\f385";
+@ionicon-var-android-expand: "\f386";
+@ionicon-var-android-favorite: "\f388";
+@ionicon-var-android-favorite-outline: "\f387";
+@ionicon-var-android-film: "\f389";
+@ionicon-var-android-folder: "\f2e0";
+@ionicon-var-android-folder-open: "\f38a";
+@ionicon-var-android-funnel: "\f38b";
+@ionicon-var-android-globe: "\f38c";
+@ionicon-var-android-hand: "\f2e3";
+@ionicon-var-android-hangout: "\f38d";
+@ionicon-var-android-happy: "\f38e";
+@ionicon-var-android-home: "\f38f";
+@ionicon-var-android-image: "\f2e4";
+@ionicon-var-android-laptop: "\f390";
+@ionicon-var-android-list: "\f391";
+@ionicon-var-android-locate: "\f2e9";
+@ionicon-var-android-lock: "\f392";
+@ionicon-var-android-mail: "\f2eb";
+@ionicon-var-android-map: "\f393";
+@ionicon-var-android-menu: "\f394";
+@ionicon-var-android-microphone: "\f2ec";
+@ionicon-var-android-microphone-off: "\f395";
+@ionicon-var-android-more-horizontal: "\f396";
+@ionicon-var-android-more-vertical: "\f397";
+@ionicon-var-android-navigate: "\f398";
+@ionicon-var-android-notifications: "\f39b";
+@ionicon-var-android-notifications-none: "\f399";
+@ionicon-var-android-notifications-off: "\f39a";
+@ionicon-var-android-open: "\f39c";
+@ionicon-var-android-options: "\f39d";
+@ionicon-var-android-people: "\f39e";
+@ionicon-var-android-person: "\f3a0";
+@ionicon-var-android-person-add: "\f39f";
+@ionicon-var-android-phone-landscape: "\f3a1";
+@ionicon-var-android-phone-portrait: "\f3a2";
+@ionicon-var-android-pin: "\f3a3";
+@ionicon-var-android-plane: "\f3a4";
+@ionicon-var-android-playstore: "\f2f0";
+@ionicon-var-android-print: "\f3a5";
+@ionicon-var-android-radio-button-off: "\f3a6";
+@ionicon-var-android-radio-button-on: "\f3a7";
+@ionicon-var-android-refresh: "\f3a8";
+@ionicon-var-android-remove: "\f2f4";
+@ionicon-var-android-remove-circle: "\f3a9";
+@ionicon-var-android-restaurant: "\f3aa";
+@ionicon-var-android-sad: "\f3ab";
+@ionicon-var-android-search: "\f2f5";
+@ionicon-var-android-send: "\f2f6";
+@ionicon-var-android-settings: "\f2f7";
+@ionicon-var-android-share: "\f2f8";
+@ionicon-var-android-share-alt: "\f3ac";
+@ionicon-var-android-star: "\f2fc";
+@ionicon-var-android-star-half: "\f3ad";
+@ionicon-var-android-star-outline: "\f3ae";
+@ionicon-var-android-stopwatch: "\f2fd";
+@ionicon-var-android-subway: "\f3af";
+@ionicon-var-android-sunny: "\f3b0";
+@ionicon-var-android-sync: "\f3b1";
+@ionicon-var-android-textsms: "\f3b2";
+@ionicon-var-android-time: "\f3b3";
+@ionicon-var-android-train: "\f3b4";
+@ionicon-var-android-unlock: "\f3b5";
+@ionicon-var-android-upload: "\f3b6";
+@ionicon-var-android-volume-down: "\f3b7";
+@ionicon-var-android-volume-mute: "\f3b8";
+@ionicon-var-android-volume-off: "\f3b9";
+@ionicon-var-android-volume-up: "\f3ba";
+@ionicon-var-android-walk: "\f3bb";
+@ionicon-var-android-warning: "\f3bc";
+@ionicon-var-android-watch: "\f3bd";
+@ionicon-var-android-wifi: "\f305";
+@ionicon-var-aperture: "\f313";
+@ionicon-var-archive: "\f102";
+@ionicon-var-arrow-down-a: "\f103";
+@ionicon-var-arrow-down-b: "\f104";
+@ionicon-var-arrow-down-c: "\f105";
+@ionicon-var-arrow-expand: "\f25e";
+@ionicon-var-arrow-graph-down-left: "\f25f";
+@ionicon-var-arrow-graph-down-right: "\f260";
+@ionicon-var-arrow-graph-up-left: "\f261";
+@ionicon-var-arrow-graph-up-right: "\f262";
+@ionicon-var-arrow-left-a: "\f106";
+@ionicon-var-arrow-left-b: "\f107";
+@ionicon-var-arrow-left-c: "\f108";
+@ionicon-var-arrow-move: "\f263";
+@ionicon-var-arrow-resize: "\f264";
+@ionicon-var-arrow-return-left: "\f265";
+@ionicon-var-arrow-return-right: "\f266";
+@ionicon-var-arrow-right-a: "\f109";
+@ionicon-var-arrow-right-b: "\f10a";
+@ionicon-var-arrow-right-c: "\f10b";
+@ionicon-var-arrow-shrink: "\f267";
+@ionicon-var-arrow-swap: "\f268";
+@ionicon-var-arrow-up-a: "\f10c";
+@ionicon-var-arrow-up-b: "\f10d";
+@ionicon-var-arrow-up-c: "\f10e";
+@ionicon-var-asterisk: "\f314";
+@ionicon-var-at: "\f10f";
+@ionicon-var-backspace: "\f3bf";
+@ionicon-var-backspace-outline: "\f3be";
+@ionicon-var-bag: "\f110";
+@ionicon-var-battery-charging: "\f111";
+@ionicon-var-battery-empty: "\f112";
+@ionicon-var-battery-full: "\f113";
+@ionicon-var-battery-half: "\f114";
+@ionicon-var-battery-low: "\f115";
+@ionicon-var-beaker: "\f269";
+@ionicon-var-beer: "\f26a";
+@ionicon-var-bluetooth: "\f116";
+@ionicon-var-bonfire: "\f315";
+@ionicon-var-bookmark: "\f26b";
+@ionicon-var-bowtie: "\f3c0";
+@ionicon-var-briefcase: "\f26c";
+@ionicon-var-bug: "\f2be";
+@ionicon-var-calculator: "\f26d";
+@ionicon-var-calendar: "\f117";
+@ionicon-var-camera: "\f118";
+@ionicon-var-card: "\f119";
+@ionicon-var-cash: "\f316";
+@ionicon-var-chatbox: "\f11b";
+@ionicon-var-chatbox-working: "\f11a";
+@ionicon-var-chatboxes: "\f11c";
+@ionicon-var-chatbubble: "\f11e";
+@ionicon-var-chatbubble-working: "\f11d";
+@ionicon-var-chatbubbles: "\f11f";
+@ionicon-var-checkmark: "\f122";
+@ionicon-var-checkmark-circled: "\f120";
+@ionicon-var-checkmark-round: "\f121";
+@ionicon-var-chevron-down: "\f123";
+@ionicon-var-chevron-left: "\f124";
+@ionicon-var-chevron-right: "\f125";
+@ionicon-var-chevron-up: "\f126";
+@ionicon-var-clipboard: "\f127";
+@ionicon-var-clock: "\f26e";
+@ionicon-var-close: "\f12a";
+@ionicon-var-close-circled: "\f128";
+@ionicon-var-close-round: "\f129";
+@ionicon-var-closed-captioning: "\f317";
+@ionicon-var-cloud: "\f12b";
+@ionicon-var-code: "\f271";
+@ionicon-var-code-download: "\f26f";
+@ionicon-var-code-working: "\f270";
+@ionicon-var-coffee: "\f272";
+@ionicon-var-compass: "\f273";
+@ionicon-var-compose: "\f12c";
+@ionicon-var-connection-bars: "\f274";
+@ionicon-var-contrast: "\f275";
+@ionicon-var-crop: "\f3c1";
+@ionicon-var-cube: "\f318";
+@ionicon-var-disc: "\f12d";
+@ionicon-var-document: "\f12f";
+@ionicon-var-document-text: "\f12e";
+@ionicon-var-drag: "\f130";
+@ionicon-var-earth: "\f276";
+@ionicon-var-easel: "\f3c2";
+@ionicon-var-edit: "\f2bf";
+@ionicon-var-egg: "\f277";
+@ionicon-var-eject: "\f131";
+@ionicon-var-email: "\f132";
+@ionicon-var-email-unread: "\f3c3";
+@ionicon-var-erlenmeyer-flask: "\f3c5";
+@ionicon-var-erlenmeyer-flask-bubbles: "\f3c4";
+@ionicon-var-eye: "\f133";
+@ionicon-var-eye-disabled: "\f306";
+@ionicon-var-female: "\f278";
+@ionicon-var-filing: "\f134";
+@ionicon-var-film-marker: "\f135";
+@ionicon-var-fireball: "\f319";
+@ionicon-var-flag: "\f279";
+@ionicon-var-flame: "\f31a";
+@ionicon-var-flash: "\f137";
+@ionicon-var-flash-off: "\f136";
+@ionicon-var-folder: "\f139";
+@ionicon-var-fork: "\f27a";
+@ionicon-var-fork-repo: "\f2c0";
+@ionicon-var-forward: "\f13a";
+@ionicon-var-funnel: "\f31b";
+@ionicon-var-gear-a: "\f13d";
+@ionicon-var-gear-b: "\f13e";
+@ionicon-var-grid: "\f13f";
+@ionicon-var-hammer: "\f27b";
+@ionicon-var-happy: "\f31c";
+@ionicon-var-happy-outline: "\f3c6";
+@ionicon-var-headphone: "\f140";
+@ionicon-var-heart: "\f141";
+@ionicon-var-heart-broken: "\f31d";
+@ionicon-var-help: "\f143";
+@ionicon-var-help-buoy: "\f27c";
+@ionicon-var-help-circled: "\f142";
+@ionicon-var-home: "\f144";
+@ionicon-var-icecream: "\f27d";
+@ionicon-var-image: "\f147";
+@ionicon-var-images: "\f148";
+@ionicon-var-information: "\f14a";
+@ionicon-var-information-circled: "\f149";
+@ionicon-var-ionic: "\f14b";
+@ionicon-var-ios-alarm: "\f3c8";
+@ionicon-var-ios-alarm-outline: "\f3c7";
+@ionicon-var-ios-albums: "\f3ca";
+@ionicon-var-ios-albums-outline: "\f3c9";
+@ionicon-var-ios-americanfootball: "\f3cc";
+@ionicon-var-ios-americanfootball-outline: "\f3cb";
+@ionicon-var-ios-analytics: "\f3ce";
+@ionicon-var-ios-analytics-outline: "\f3cd";
+@ionicon-var-ios-arrow-back: "\f3cf";
+@ionicon-var-ios-arrow-down: "\f3d0";
+@ionicon-var-ios-arrow-forward: "\f3d1";
+@ionicon-var-ios-arrow-left: "\f3d2";
+@ionicon-var-ios-arrow-right: "\f3d3";
+@ionicon-var-ios-arrow-thin-down: "\f3d4";
+@ionicon-var-ios-arrow-thin-left: "\f3d5";
+@ionicon-var-ios-arrow-thin-right: "\f3d6";
+@ionicon-var-ios-arrow-thin-up: "\f3d7";
+@ionicon-var-ios-arrow-up: "\f3d8";
+@ionicon-var-ios-at: "\f3da";
+@ionicon-var-ios-at-outline: "\f3d9";
+@ionicon-var-ios-barcode: "\f3dc";
+@ionicon-var-ios-barcode-outline: "\f3db";
+@ionicon-var-ios-baseball: "\f3de";
+@ionicon-var-ios-baseball-outline: "\f3dd";
+@ionicon-var-ios-basketball: "\f3e0";
+@ionicon-var-ios-basketball-outline: "\f3df";
+@ionicon-var-ios-bell: "\f3e2";
+@ionicon-var-ios-bell-outline: "\f3e1";
+@ionicon-var-ios-body: "\f3e4";
+@ionicon-var-ios-body-outline: "\f3e3";
+@ionicon-var-ios-bolt: "\f3e6";
+@ionicon-var-ios-bolt-outline: "\f3e5";
+@ionicon-var-ios-book: "\f3e8";
+@ionicon-var-ios-book-outline: "\f3e7";
+@ionicon-var-ios-bookmarks: "\f3ea";
+@ionicon-var-ios-bookmarks-outline: "\f3e9";
+@ionicon-var-ios-box: "\f3ec";
+@ionicon-var-ios-box-outline: "\f3eb";
+@ionicon-var-ios-briefcase: "\f3ee";
+@ionicon-var-ios-briefcase-outline: "\f3ed";
+@ionicon-var-ios-browsers: "\f3f0";
+@ionicon-var-ios-browsers-outline: "\f3ef";
+@ionicon-var-ios-calculator: "\f3f2";
+@ionicon-var-ios-calculator-outline: "\f3f1";
+@ionicon-var-ios-calendar: "\f3f4";
+@ionicon-var-ios-calendar-outline: "\f3f3";
+@ionicon-var-ios-camera: "\f3f6";
+@ionicon-var-ios-camera-outline: "\f3f5";
+@ionicon-var-ios-cart: "\f3f8";
+@ionicon-var-ios-cart-outline: "\f3f7";
+@ionicon-var-ios-chatboxes: "\f3fa";
+@ionicon-var-ios-chatboxes-outline: "\f3f9";
+@ionicon-var-ios-chatbubble: "\f3fc";
+@ionicon-var-ios-chatbubble-outline: "\f3fb";
+@ionicon-var-ios-checkmark: "\f3ff";
+@ionicon-var-ios-checkmark-empty: "\f3fd";
+@ionicon-var-ios-checkmark-outline: "\f3fe";
+@ionicon-var-ios-circle-filled: "\f400";
+@ionicon-var-ios-circle-outline: "\f401";
+@ionicon-var-ios-clock: "\f403";
+@ionicon-var-ios-clock-outline: "\f402";
+@ionicon-var-ios-close: "\f406";
+@ionicon-var-ios-close-empty: "\f404";
+@ionicon-var-ios-close-outline: "\f405";
+@ionicon-var-ios-cloud: "\f40c";
+@ionicon-var-ios-cloud-download: "\f408";
+@ionicon-var-ios-cloud-download-outline: "\f407";
+@ionicon-var-ios-cloud-outline: "\f409";
+@ionicon-var-ios-cloud-upload: "\f40b";
+@ionicon-var-ios-cloud-upload-outline: "\f40a";
+@ionicon-var-ios-cloudy: "\f410";
+@ionicon-var-ios-cloudy-night: "\f40e";
+@ionicon-var-ios-cloudy-night-outline: "\f40d";
+@ionicon-var-ios-cloudy-outline: "\f40f";
+@ionicon-var-ios-cog: "\f412";
+@ionicon-var-ios-cog-outline: "\f411";
+@ionicon-var-ios-color-filter: "\f414";
+@ionicon-var-ios-color-filter-outline: "\f413";
+@ionicon-var-ios-color-wand: "\f416";
+@ionicon-var-ios-color-wand-outline: "\f415";
+@ionicon-var-ios-compose: "\f418";
+@ionicon-var-ios-compose-outline: "\f417";
+@ionicon-var-ios-contact: "\f41a";
+@ionicon-var-ios-contact-outline: "\f419";
+@ionicon-var-ios-copy: "\f41c";
+@ionicon-var-ios-copy-outline: "\f41b";
+@ionicon-var-ios-crop: "\f41e";
+@ionicon-var-ios-crop-strong: "\f41d";
+@ionicon-var-ios-download: "\f420";
+@ionicon-var-ios-download-outline: "\f41f";
+@ionicon-var-ios-drag: "\f421";
+@ionicon-var-ios-email: "\f423";
+@ionicon-var-ios-email-outline: "\f422";
+@ionicon-var-ios-eye: "\f425";
+@ionicon-var-ios-eye-outline: "\f424";
+@ionicon-var-ios-fastforward: "\f427";
+@ionicon-var-ios-fastforward-outline: "\f426";
+@ionicon-var-ios-filing: "\f429";
+@ionicon-var-ios-filing-outline: "\f428";
+@ionicon-var-ios-film: "\f42b";
+@ionicon-var-ios-film-outline: "\f42a";
+@ionicon-var-ios-flag: "\f42d";
+@ionicon-var-ios-flag-outline: "\f42c";
+@ionicon-var-ios-flame: "\f42f";
+@ionicon-var-ios-flame-outline: "\f42e";
+@ionicon-var-ios-flask: "\f431";
+@ionicon-var-ios-flask-outline: "\f430";
+@ionicon-var-ios-flower: "\f433";
+@ionicon-var-ios-flower-outline: "\f432";
+@ionicon-var-ios-folder: "\f435";
+@ionicon-var-ios-folder-outline: "\f434";
+@ionicon-var-ios-football: "\f437";
+@ionicon-var-ios-football-outline: "\f436";
+@ionicon-var-ios-game-controller-a: "\f439";
+@ionicon-var-ios-game-controller-a-outline: "\f438";
+@ionicon-var-ios-game-controller-b: "\f43b";
+@ionicon-var-ios-game-controller-b-outline: "\f43a";
+@ionicon-var-ios-gear: "\f43d";
+@ionicon-var-ios-gear-outline: "\f43c";
+@ionicon-var-ios-glasses: "\f43f";
+@ionicon-var-ios-glasses-outline: "\f43e";
+@ionicon-var-ios-grid-view: "\f441";
+@ionicon-var-ios-grid-view-outline: "\f440";
+@ionicon-var-ios-heart: "\f443";
+@ionicon-var-ios-heart-outline: "\f442";
+@ionicon-var-ios-help: "\f446";
+@ionicon-var-ios-help-empty: "\f444";
+@ionicon-var-ios-help-outline: "\f445";
+@ionicon-var-ios-home: "\f448";
+@ionicon-var-ios-home-outline: "\f447";
+@ionicon-var-ios-infinite: "\f44a";
+@ionicon-var-ios-infinite-outline: "\f449";
+@ionicon-var-ios-information: "\f44d";
+@ionicon-var-ios-information-empty: "\f44b";
+@ionicon-var-ios-information-outline: "\f44c";
+@ionicon-var-ios-ionic-outline: "\f44e";
+@ionicon-var-ios-keypad: "\f450";
+@ionicon-var-ios-keypad-outline: "\f44f";
+@ionicon-var-ios-lightbulb: "\f452";
+@ionicon-var-ios-lightbulb-outline: "\f451";
+@ionicon-var-ios-list: "\f454";
+@ionicon-var-ios-list-outline: "\f453";
+@ionicon-var-ios-location: "\f456";
+@ionicon-var-ios-location-outline: "\f455";
+@ionicon-var-ios-locked: "\f458";
+@ionicon-var-ios-locked-outline: "\f457";
+@ionicon-var-ios-loop: "\f45a";
+@ionicon-var-ios-loop-strong: "\f459";
+@ionicon-var-ios-medical: "\f45c";
+@ionicon-var-ios-medical-outline: "\f45b";
+@ionicon-var-ios-medkit: "\f45e";
+@ionicon-var-ios-medkit-outline: "\f45d";
+@ionicon-var-ios-mic: "\f461";
+@ionicon-var-ios-mic-off: "\f45f";
+@ionicon-var-ios-mic-outline: "\f460";
+@ionicon-var-ios-minus: "\f464";
+@ionicon-var-ios-minus-empty: "\f462";
+@ionicon-var-ios-minus-outline: "\f463";
+@ionicon-var-ios-monitor: "\f466";
+@ionicon-var-ios-monitor-outline: "\f465";
+@ionicon-var-ios-moon: "\f468";
+@ionicon-var-ios-moon-outline: "\f467";
+@ionicon-var-ios-more: "\f46a";
+@ionicon-var-ios-more-outline: "\f469";
+@ionicon-var-ios-musical-note: "\f46b";
+@ionicon-var-ios-musical-notes: "\f46c";
+@ionicon-var-ios-navigate: "\f46e";
+@ionicon-var-ios-navigate-outline: "\f46d";
+@ionicon-var-ios-nutrition: "\f470";
+@ionicon-var-ios-nutrition-outline: "\f46f";
+@ionicon-var-ios-paper: "\f472";
+@ionicon-var-ios-paper-outline: "\f471";
+@ionicon-var-ios-paperplane: "\f474";
+@ionicon-var-ios-paperplane-outline: "\f473";
+@ionicon-var-ios-partlysunny: "\f476";
+@ionicon-var-ios-partlysunny-outline: "\f475";
+@ionicon-var-ios-pause: "\f478";
+@ionicon-var-ios-pause-outline: "\f477";
+@ionicon-var-ios-paw: "\f47a";
+@ionicon-var-ios-paw-outline: "\f479";
+@ionicon-var-ios-people: "\f47c";
+@ionicon-var-ios-people-outline: "\f47b";
+@ionicon-var-ios-person: "\f47e";
+@ionicon-var-ios-person-outline: "\f47d";
+@ionicon-var-ios-personadd: "\f480";
+@ionicon-var-ios-personadd-outline: "\f47f";
+@ionicon-var-ios-photos: "\f482";
+@ionicon-var-ios-photos-outline: "\f481";
+@ionicon-var-ios-pie: "\f484";
+@ionicon-var-ios-pie-outline: "\f483";
+@ionicon-var-ios-pint: "\f486";
+@ionicon-var-ios-pint-outline: "\f485";
+@ionicon-var-ios-play: "\f488";
+@ionicon-var-ios-play-outline: "\f487";
+@ionicon-var-ios-plus: "\f48b";
+@ionicon-var-ios-plus-empty: "\f489";
+@ionicon-var-ios-plus-outline: "\f48a";
+@ionicon-var-ios-pricetag: "\f48d";
+@ionicon-var-ios-pricetag-outline: "\f48c";
+@ionicon-var-ios-pricetags: "\f48f";
+@ionicon-var-ios-pricetags-outline: "\f48e";
+@ionicon-var-ios-printer: "\f491";
+@ionicon-var-ios-printer-outline: "\f490";
+@ionicon-var-ios-pulse: "\f493";
+@ionicon-var-ios-pulse-strong: "\f492";
+@ionicon-var-ios-rainy: "\f495";
+@ionicon-var-ios-rainy-outline: "\f494";
+@ionicon-var-ios-recording: "\f497";
+@ionicon-var-ios-recording-outline: "\f496";
+@ionicon-var-ios-redo: "\f499";
+@ionicon-var-ios-redo-outline: "\f498";
+@ionicon-var-ios-refresh: "\f49c";
+@ionicon-var-ios-refresh-empty: "\f49a";
+@ionicon-var-ios-refresh-outline: "\f49b";
+@ionicon-var-ios-reload: "\f49d";
+@ionicon-var-ios-reverse-camera: "\f49f";
+@ionicon-var-ios-reverse-camera-outline: "\f49e";
+@ionicon-var-ios-rewind: "\f4a1";
+@ionicon-var-ios-rewind-outline: "\f4a0";
+@ionicon-var-ios-rose: "\f4a3";
+@ionicon-var-ios-rose-outline: "\f4a2";
+@ionicon-var-ios-search: "\f4a5";
+@ionicon-var-ios-search-strong: "\f4a4";
+@ionicon-var-ios-settings: "\f4a7";
+@ionicon-var-ios-settings-strong: "\f4a6";
+@ionicon-var-ios-shuffle: "\f4a9";
+@ionicon-var-ios-shuffle-strong: "\f4a8";
+@ionicon-var-ios-skipbackward: "\f4ab";
+@ionicon-var-ios-skipbackward-outline: "\f4aa";
+@ionicon-var-ios-skipforward: "\f4ad";
+@ionicon-var-ios-skipforward-outline: "\f4ac";
+@ionicon-var-ios-snowy: "\f4ae";
+@ionicon-var-ios-speedometer: "\f4b0";
+@ionicon-var-ios-speedometer-outline: "\f4af";
+@ionicon-var-ios-star: "\f4b3";
+@ionicon-var-ios-star-half: "\f4b1";
+@ionicon-var-ios-star-outline: "\f4b2";
+@ionicon-var-ios-stopwatch: "\f4b5";
+@ionicon-var-ios-stopwatch-outline: "\f4b4";
+@ionicon-var-ios-sunny: "\f4b7";
+@ionicon-var-ios-sunny-outline: "\f4b6";
+@ionicon-var-ios-telephone: "\f4b9";
+@ionicon-var-ios-telephone-outline: "\f4b8";
+@ionicon-var-ios-tennisball: "\f4bb";
+@ionicon-var-ios-tennisball-outline: "\f4ba";
+@ionicon-var-ios-thunderstorm: "\f4bd";
+@ionicon-var-ios-thunderstorm-outline: "\f4bc";
+@ionicon-var-ios-time: "\f4bf";
+@ionicon-var-ios-time-outline: "\f4be";
+@ionicon-var-ios-timer: "\f4c1";
+@ionicon-var-ios-timer-outline: "\f4c0";
+@ionicon-var-ios-toggle: "\f4c3";
+@ionicon-var-ios-toggle-outline: "\f4c2";
+@ionicon-var-ios-trash: "\f4c5";
+@ionicon-var-ios-trash-outline: "\f4c4";
+@ionicon-var-ios-undo: "\f4c7";
+@ionicon-var-ios-undo-outline: "\f4c6";
+@ionicon-var-ios-unlocked: "\f4c9";
+@ionicon-var-ios-unlocked-outline: "\f4c8";
+@ionicon-var-ios-upload: "\f4cb";
+@ionicon-var-ios-upload-outline: "\f4ca";
+@ionicon-var-ios-videocam: "\f4cd";
+@ionicon-var-ios-videocam-outline: "\f4cc";
+@ionicon-var-ios-volume-high: "\f4ce";
+@ionicon-var-ios-volume-low: "\f4cf";
+@ionicon-var-ios-wineglass: "\f4d1";
+@ionicon-var-ios-wineglass-outline: "\f4d0";
+@ionicon-var-ios-world: "\f4d3";
+@ionicon-var-ios-world-outline: "\f4d2";
+@ionicon-var-ipad: "\f1f9";
+@ionicon-var-iphone: "\f1fa";
+@ionicon-var-ipod: "\f1fb";
+@ionicon-var-jet: "\f295";
+@ionicon-var-key: "\f296";
+@ionicon-var-knife: "\f297";
+@ionicon-var-laptop: "\f1fc";
+@ionicon-var-leaf: "\f1fd";
+@ionicon-var-levels: "\f298";
+@ionicon-var-lightbulb: "\f299";
+@ionicon-var-link: "\f1fe";
+@ionicon-var-load-a: "\f29a";
+@ionicon-var-load-b: "\f29b";
+@ionicon-var-load-c: "\f29c";
+@ionicon-var-load-d: "\f29d";
+@ionicon-var-location: "\f1ff";
+@ionicon-var-lock-combination: "\f4d4";
+@ionicon-var-locked: "\f200";
+@ionicon-var-log-in: "\f29e";
+@ionicon-var-log-out: "\f29f";
+@ionicon-var-loop: "\f201";
+@ionicon-var-magnet: "\f2a0";
+@ionicon-var-male: "\f2a1";
+@ionicon-var-man: "\f202";
+@ionicon-var-map: "\f203";
+@ionicon-var-medkit: "\f2a2";
+@ionicon-var-merge: "\f33f";
+@ionicon-var-mic-a: "\f204";
+@ionicon-var-mic-b: "\f205";
+@ionicon-var-mic-c: "\f206";
+@ionicon-var-minus: "\f209";
+@ionicon-var-minus-circled: "\f207";
+@ionicon-var-minus-round: "\f208";
+@ionicon-var-model-s: "\f2c1";
+@ionicon-var-monitor: "\f20a";
+@ionicon-var-more: "\f20b";
+@ionicon-var-mouse: "\f340";
+@ionicon-var-music-note: "\f20c";
+@ionicon-var-navicon: "\f20e";
+@ionicon-var-navicon-round: "\f20d";
+@ionicon-var-navigate: "\f2a3";
+@ionicon-var-network: "\f341";
+@ionicon-var-no-smoking: "\f2c2";
+@ionicon-var-nuclear: "\f2a4";
+@ionicon-var-outlet: "\f342";
+@ionicon-var-paintbrush: "\f4d5";
+@ionicon-var-paintbucket: "\f4d6";
+@ionicon-var-paper-airplane: "\f2c3";
+@ionicon-var-paperclip: "\f20f";
+@ionicon-var-pause: "\f210";
+@ionicon-var-person: "\f213";
+@ionicon-var-person-add: "\f211";
+@ionicon-var-person-stalker: "\f212";
+@ionicon-var-pie-graph: "\f2a5";
+@ionicon-var-pin: "\f2a6";
+@ionicon-var-pinpoint: "\f2a7";
+@ionicon-var-pizza: "\f2a8";
+@ionicon-var-plane: "\f214";
+@ionicon-var-planet: "\f343";
+@ionicon-var-play: "\f215";
+@ionicon-var-playstation: "\f30a";
+@ionicon-var-plus: "\f218";
+@ionicon-var-plus-circled: "\f216";
+@ionicon-var-plus-round: "\f217";
+@ionicon-var-podium: "\f344";
+@ionicon-var-pound: "\f219";
+@ionicon-var-power: "\f2a9";
+@ionicon-var-pricetag: "\f2aa";
+@ionicon-var-pricetags: "\f2ab";
+@ionicon-var-printer: "\f21a";
+@ionicon-var-pull-request: "\f345";
+@ionicon-var-qr-scanner: "\f346";
+@ionicon-var-quote: "\f347";
+@ionicon-var-radio-waves: "\f2ac";
+@ionicon-var-record: "\f21b";
+@ionicon-var-refresh: "\f21c";
+@ionicon-var-reply: "\f21e";
+@ionicon-var-reply-all: "\f21d";
+@ionicon-var-ribbon-a: "\f348";
+@ionicon-var-ribbon-b: "\f349";
+@ionicon-var-sad: "\f34a";
+@ionicon-var-sad-outline: "\f4d7";
+@ionicon-var-scissors: "\f34b";
+@ionicon-var-search: "\f21f";
+@ionicon-var-settings: "\f2ad";
+@ionicon-var-share: "\f220";
+@ionicon-var-shuffle: "\f221";
+@ionicon-var-skip-backward: "\f222";
+@ionicon-var-skip-forward: "\f223";
+@ionicon-var-social-android: "\f225";
+@ionicon-var-social-android-outline: "\f224";
+@ionicon-var-social-angular: "\f4d9";
+@ionicon-var-social-angular-outline: "\f4d8";
+@ionicon-var-social-apple: "\f227";
+@ionicon-var-social-apple-outline: "\f226";
+@ionicon-var-social-bitcoin: "\f2af";
+@ionicon-var-social-bitcoin-outline: "\f2ae";
+@ionicon-var-social-buffer: "\f229";
+@ionicon-var-social-buffer-outline: "\f228";
+@ionicon-var-social-chrome: "\f4db";
+@ionicon-var-social-chrome-outline: "\f4da";
+@ionicon-var-social-codepen: "\f4dd";
+@ionicon-var-social-codepen-outline: "\f4dc";
+@ionicon-var-social-css3: "\f4df";
+@ionicon-var-social-css3-outline: "\f4de";
+@ionicon-var-social-designernews: "\f22b";
+@ionicon-var-social-designernews-outline: "\f22a";
+@ionicon-var-social-dribbble: "\f22d";
+@ionicon-var-social-dribbble-outline: "\f22c";
+@ionicon-var-social-dropbox: "\f22f";
+@ionicon-var-social-dropbox-outline: "\f22e";
+@ionicon-var-social-euro: "\f4e1";
+@ionicon-var-social-euro-outline: "\f4e0";
+@ionicon-var-social-facebook: "\f231";
+@ionicon-var-social-facebook-outline: "\f230";
+@ionicon-var-social-foursquare: "\f34d";
+@ionicon-var-social-foursquare-outline: "\f34c";
+@ionicon-var-social-freebsd-devil: "\f2c4";
+@ionicon-var-social-github: "\f233";
+@ionicon-var-social-github-outline: "\f232";
+@ionicon-var-social-google: "\f34f";
+@ionicon-var-social-google-outline: "\f34e";
+@ionicon-var-social-googleplus: "\f235";
+@ionicon-var-social-googleplus-outline: "\f234";
+@ionicon-var-social-hackernews: "\f237";
+@ionicon-var-social-hackernews-outline: "\f236";
+@ionicon-var-social-html5: "\f4e3";
+@ionicon-var-social-html5-outline: "\f4e2";
+@ionicon-var-social-instagram: "\f351";
+@ionicon-var-social-instagram-outline: "\f350";
+@ionicon-var-social-javascript: "\f4e5";
+@ionicon-var-social-javascript-outline: "\f4e4";
+@ionicon-var-social-linkedin: "\f239";
+@ionicon-var-social-linkedin-outline: "\f238";
+@ionicon-var-social-markdown: "\f4e6";
+@ionicon-var-social-nodejs: "\f4e7";
+@ionicon-var-social-octocat: "\f4e8";
+@ionicon-var-social-pinterest: "\f2b1";
+@ionicon-var-social-pinterest-outline: "\f2b0";
+@ionicon-var-social-python: "\f4e9";
+@ionicon-var-social-reddit: "\f23b";
+@ionicon-var-social-reddit-outline: "\f23a";
+@ionicon-var-social-rss: "\f23d";
+@ionicon-var-social-rss-outline: "\f23c";
+@ionicon-var-social-sass: "\f4ea";
+@ionicon-var-social-skype: "\f23f";
+@ionicon-var-social-skype-outline: "\f23e";
+@ionicon-var-social-snapchat: "\f4ec";
+@ionicon-var-social-snapchat-outline: "\f4eb";
+@ionicon-var-social-tumblr: "\f241";
+@ionicon-var-social-tumblr-outline: "\f240";
+@ionicon-var-social-tux: "\f2c5";
+@ionicon-var-social-twitch: "\f4ee";
+@ionicon-var-social-twitch-outline: "\f4ed";
+@ionicon-var-social-twitter: "\f243";
+@ionicon-var-social-twitter-outline: "\f242";
+@ionicon-var-social-usd: "\f353";
+@ionicon-var-social-usd-outline: "\f352";
+@ionicon-var-social-vimeo: "\f245";
+@ionicon-var-social-vimeo-outline: "\f244";
+@ionicon-var-social-whatsapp: "\f4f0";
+@ionicon-var-social-whatsapp-outline: "\f4ef";
+@ionicon-var-social-windows: "\f247";
+@ionicon-var-social-windows-outline: "\f246";
+@ionicon-var-social-wordpress: "\f249";
+@ionicon-var-social-wordpress-outline: "\f248";
+@ionicon-var-social-yahoo: "\f24b";
+@ionicon-var-social-yahoo-outline: "\f24a";
+@ionicon-var-social-yen: "\f4f2";
+@ionicon-var-social-yen-outline: "\f4f1";
+@ionicon-var-social-youtube: "\f24d";
+@ionicon-var-social-youtube-outline: "\f24c";
+@ionicon-var-soup-can: "\f4f4";
+@ionicon-var-soup-can-outline: "\f4f3";
+@ionicon-var-speakerphone: "\f2b2";
+@ionicon-var-speedometer: "\f2b3";
+@ionicon-var-spoon: "\f2b4";
+@ionicon-var-star: "\f24e";
+@ionicon-var-stats-bars: "\f2b5";
+@ionicon-var-steam: "\f30b";
+@ionicon-var-stop: "\f24f";
+@ionicon-var-thermometer: "\f2b6";
+@ionicon-var-thumbsdown: "\f250";
+@ionicon-var-thumbsup: "\f251";
+@ionicon-var-toggle: "\f355";
+@ionicon-var-toggle-filled: "\f354";
+@ionicon-var-transgender: "\f4f5";
+@ionicon-var-trash-a: "\f252";
+@ionicon-var-trash-b: "\f253";
+@ionicon-var-trophy: "\f356";
+@ionicon-var-tshirt: "\f4f7";
+@ionicon-var-tshirt-outline: "\f4f6";
+@ionicon-var-umbrella: "\f2b7";
+@ionicon-var-university: "\f357";
+@ionicon-var-unlocked: "\f254";
+@ionicon-var-upload: "\f255";
+@ionicon-var-usb: "\f2b8";
+@ionicon-var-videocamera: "\f256";
+@ionicon-var-volume-high: "\f257";
+@ionicon-var-volume-low: "\f258";
+@ionicon-var-volume-medium: "\f259";
+@ionicon-var-volume-mute: "\f25a";
+@ionicon-var-wand: "\f358";
+@ionicon-var-waterdrop: "\f25b";
+@ionicon-var-wifi: "\f25c";
+@ionicon-var-wineglass: "\f2b9";
+@ionicon-var-woman: "\f25d";
+@ionicon-var-wrench: "\f2ba";
+@ionicon-var-xbox: "\f30c";
\ No newline at end of file
diff --git a/app/assets/less/vendor/ionicons/ionicons.less b/app/assets/less/vendor/ionicons/ionicons.less
new file mode 100644
index 0000000..163b80e
--- /dev/null
+++ b/app/assets/less/vendor/ionicons/ionicons.less
@@ -0,0 +1,3 @@
+@import "_ionicons-variables";
+@import "_ionicons-font";
+@import "_ionicons-icons";