diff --git a/.babelrc b/.babelrc
index bb75829cb..62c3ee729 100644
--- a/.babelrc
+++ b/.babelrc
@@ -1,5 +1,6 @@
{
"compact":false,
"presets":
-["babel-preset-env"]
+["babel-preset-env"],
+"plugins": ["babel-plugin-transform-object-rest-spread"]
}
diff --git a/.bootstraprc b/.bootstraprc
index 1327a743f..12541e08d 100644
--- a/.bootstraprc
+++ b/.bootstraprc
@@ -4,6 +4,7 @@
"extractStyles": true,
"styles": {
"mixins": true,
+ "glyphicons": true,
"grid": true,
"forms": true,
"input-groups": true,
diff --git a/.browserslistrc b/.browserslistrc
new file mode 100644
index 000000000..83f304afb
--- /dev/null
+++ b/.browserslistrc
@@ -0,0 +1,5 @@
+ie 11
+> 0.25%
+last 2 chrome version
+last 2 firefox version
+last 2 safari version
diff --git a/.dockerignore b/.dockerignore
deleted file mode 100644
index 6e57e57fa..000000000
--- a/.dockerignore
+++ /dev/null
@@ -1,9 +0,0 @@
-*
-!Gemfile
-!Gemfile.lock
-!package.json
-!package-lock.json
-!script/build/debian/*.sh
-!Rakefile
-!config/*
-!gems/*
\ No newline at end of file
diff --git a/.env.template b/.env.template
index b6128da65..73dafc3b7 100644
--- a/.env.template
+++ b/.env.template
@@ -1,5 +1,7 @@
export DEVISE_SECRET_KEY='-- secret string --' #bundle exec rake secret
export SECRET_TOKEN='-- secret string --' #bundle exec rake secret
+export SECRET_KEY_BASE='-- secret string --'
+
export STRIPE_API_KEY='REPLACE' # use your test private key from your stripe account
export STRIPE_API_PUBLIC='REPLACE' # use your test public key from your stripe account
export S3_BUCKET_NAME='REPLACE'
diff --git a/.env.test b/.env.test
index 99aee4972..ddd2ccd49 100644
--- a/.env.test
+++ b/.env.test
@@ -1,5 +1,6 @@
export DEVISE_SECRET_KEY='0696452e54b14758b8534437d8cf418ea920ff23bb9c3a061a9ab2827bab4685710e89b899ebd4457df600cb5f2e04adb6a0fdef09a6a45558ecae1d6906f4a6' #bundle exec rake secret
export SECRET_TOKEN='0696452e54b14758b8534437d8cf418ea920ff23bb9c3a061a9ab2827bab4685710e89b899ebd4457df600cb5f2e04adb6a0fdef09a6a45558ecae1d6906f4a6' #bundle exec rake secret
+export SECRET_KEY_BASE='0696452e54b14758b8534437d8cf418ea920ff23bb9c3a061a9ab2827bab4685710e89b899ebd4457df600cb5f2e04adb6a0fdef09a6a45558ecae1d6906f4a6' #bundle exec rake secret
export STRIPE_API_KEY='REPLACE' # use your test private key from your stripe account
export STRIPE_API_PUBLIC='REPLACE' # use your test public key from your stripe account
diff --git a/.foreman b/.foreman
new file mode 100644
index 000000000..443487920
--- /dev/null
+++ b/.foreman
@@ -0,0 +1,2 @@
+port: 5000
+procfile: Procfile.dev
diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs
new file mode 100644
index 000000000..5dbfd7fce
--- /dev/null
+++ b/.git-blame-ignore-revs
@@ -0,0 +1,3 @@
+# make tabs uniform
+2a321748229282e853bd979e7b73f16c04a0283a
+
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 000000000..0c81edbeb
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,24 @@
+# To get started with Dependabot version updates, you'll need to specify which
+# package ecosystems to update and where the package manifests are located.
+# Please see the documentation for all configuration options:
+# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
+
+version: 2
+updates:
+ - package-ecosystem: "github-actions" # See documentation for possible values
+ directory: "/" # Location of package manifests
+ schedule:
+ interval: "weekly"
+
+ - package-ecosystem: "bundler"
+ directory: "/"
+ allow:
+ - dependency-type: "development"
+ schedule:
+ interval: "weekly"
+ groups:
+ development-dependencies:
+ dependency-type: "development"
+ update-types:
+ - "minor"
+ - "patch"
diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
new file mode 100644
index 000000000..eb3571edd
--- /dev/null
+++ b/.github/pull_request_template.md
@@ -0,0 +1,2 @@
+**NOTE: DO NOT discuss internal CommitChange information in your PR; this PR will be public.
+Link back to the issue in the Tix repo when you need to do that.**
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
new file mode 100644
index 000000000..a3f567809
--- /dev/null
+++ b/.github/workflows/build.yml
@@ -0,0 +1,80 @@
+
+name: Main build
+on:
+ pull_request:
+ types: [opened, reopened, synchronize]
+ push:
+ branches: ["supporter_level_goal"]
+concurrency:
+ group: build--${{ github.head_ref }}
+ cancel-in-progress: true
+jobs:
+ build:
+ runs-on: ${{ matrix.os }}
+ strategy:
+ matrix:
+ os: [ubuntu-20.04]
+ node: [14.19.1]
+ ruby: ['2.6.10']
+ fail-fast: false
+ steps:
+ - uses: actions/checkout@v4
+ - uses: dorny/paths-filter@v2
+ id: changes
+ with:
+ filters: |
+ ruby:
+ - 'app/**'
+ - 'bin/**'
+ - 'config/**'
+ - 'db/**'
+ - 'gems/**'
+ - 'lib/**'
+ - 'public/**'
+ - 'script/**'
+ - 'spec/**'
+ - '.ruby-version'
+ - '.rspec'
+ - 'config.ru'
+ - 'Gemfile'
+ - 'Gemfile.lock'
+ - 'Rakefile'
+ js:
+ - '**/*.js*'
+ - '**/*.es6'
+ - '**/*.ts*'
+ - '**/*.json'
+ - package.json
+ - yarn.lock
+ - '.nvmrc'
+ - '.babelrc'
+ - '.bootstraprc'
+ - '.browserlistrc'
+
+ - name: Setup PostgreSQL with PostgreSQL extensions and unprivileged user
+ uses: Daniel-Marynicz/postgresql-action@1.0.0
+ with:
+ postgres_image_tag: 12-alpine
+ postgres_user: admin
+ postgres_password: password
+ - uses: actions/setup-node@v4
+ with:
+ node-version: ${{ matrix.node }}
+ cache: 'yarn'
+ - name: set CUSTOM_RUBY_VERSION environment variable
+ run: echo "CUSTOM_RUBY_VERSION=${{ matrix.ruby }}" >> $GITHUB_ENV
+ - uses: ruby/setup-ruby@v1
+ with:
+ ruby-version: ${{ matrix.ruby }}
+ bundler-cache: true
+
+ - run: bin/setup
+ - if: steps.changes.outputs.ruby == 'true'
+ name: run spec
+ run: bin/rake spec
+ - if: steps.changes.outputs.ruby == 'true'
+ run: script/compile-assets.sh
+ - if: steps.changes.outputs.js == 'true'
+ run: yarn build
+ - if: steps.changes.outputs.js == 'true'
+ run: yarn jest
diff --git a/.github/workflows/dependent-issues.yml b/.github/workflows/dependent-issues.yml
new file mode 100644
index 000000000..d273e897b
--- /dev/null
+++ b/.github/workflows/dependent-issues.yml
@@ -0,0 +1,53 @@
+# License: LGPL-3.0-or-later
+name: Dependent Issues
+
+on:
+ issues:
+ types:
+ - opened
+ - edited
+ - reopened
+ pull_request_target:
+ types:
+ - opened
+ - edited
+ - reopened
+ # Makes sure we always add status check for PRs. Useful only if
+ # this action is required to pass before merging. Can be removed
+ # otherwise.
+ - synchronize
+
+
+jobs:
+ check:
+ runs-on: ubuntu-latest
+ permissions:
+ actions: none
+ checks: none
+ contents: none
+ deployments: none
+ issues: write
+ discussions: none
+ packages: none
+ pull-requests: write
+ repository-projects: none
+ security-events: none
+ statuses: write
+ steps:
+ - uses: z0al/dependent-issues@v1.5.2
+ env:
+ # (Required) The token to use to make API calls to GitHub.
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ # (Optional) The token to use to make API calls to GitHub for remote repos.
+ GITHUB_READ_TOKEN: ${{ secrets.GITHUB_READ_TOKEN }}
+ with:
+ # (Optional) The label to use to mark dependent issues
+ label: dependent
+
+ # (Optional) Enable checking for dependencies in issues.
+ # Enable by setting the value to "on". Default "off"
+ check_issues: off
+
+ # (Optional) A comma-separated list of keywords. Default
+ # "depends on, blocked by"
+ keywords: depends on, blocked by
\ No newline at end of file
diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
new file mode 100644
index 000000000..3fc1e0a78
--- /dev/null
+++ b/.github/workflows/deploy.yml
@@ -0,0 +1,74 @@
+name: Deploy
+on:
+ workflow_dispatch:
+ # Inputs the workflow accepts.
+ inputs:
+ mode:
+ description: Mode to build
+ required: true
+ default: 'staging'
+ type: choice
+ options:
+ - staging
+ version_tag:
+ description: New Version To Create
+ required: true
+ commit_being_built:
+ description: SHA of the original git version being built
+ required: true
+concurrency:
+ group: deploy--${{ github.head_ref }}
+ cancel-in-progress: true
+jobs:
+ build:
+ runs-on: ${{ matrix.os }}
+ strategy:
+ matrix:
+ os: [ubuntu-20.04]
+ node: [14.19.1]
+ ruby: ['2.6.10']
+ fail-fast: false
+ steps:
+ - name: 'Checkout our repo'
+ uses: actions/checkout@v4
+ with:
+ token: ${{ secrets.PAT_TO_RUN_AS_ERIC }}
+
+ - name: Setup PostgreSQL with PostgreSQL extensions and unprivileged user
+ uses: Daniel-Marynicz/postgresql-action@1.0.0
+ with:
+ postgres_image_tag: 12-alpine
+ postgres_user: admin
+ postgres_password: password
+ - uses: actions/setup-node@v4
+ with:
+ node-version: ${{ matrix.node }}
+ cache: 'yarn'
+ - name: set environment variables
+ run: echo "CUSTOM_RUBY_VERSION=${{ matrix.ruby }}" >> $GITHUB_ENV
+ - uses: ruby/setup-ruby@v1
+ with:
+ ruby-version: ${{ matrix.ruby }}
+ bundler-cache: true
+
+ - run: bin/setup
+ - env:
+ mode: ${{ github.event.inputs.mode }}
+ ORG_NAME: commitchange
+ run: yarn build-all-${mode}
+ - name: "Push deploy"
+ env:
+ mode: ${{ github.event.inputs.mode }}
+ NewVersionTag: ${{ github.event.inputs.version_tag }}
+ commit_being_built: ${{github.event.inputs.commit_being_built}}
+ run: |
+
+ git add public -f
+ git config --global user.email "robot@commitchange.com"
+ git config --global user.name "Robot"
+ git commit -m "Deployed version of $commit_being_built"
+
+ git tag $NewVersionTag-$mode-release-deploy
+ git push origin $NewVersionTag-$mode-release-deploy
+
+ git push origin HEAD:staging_deploy -f
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index 2a4f41ce8..355eb68c0 100755
--- a/.gitignore
+++ b/.gitignore
@@ -64,3 +64,15 @@ javascripts/api
!public/css/donate-button.v2.css
!public/svgs
!public/svgs/*
+
+/database
+.byebug_history
+
+/payouts
+
+# yard related directories
+/ruby_docs
+/.yardoc
+
+# Data files you wouldn't want to push
+*.csv
\ No newline at end of file
diff --git a/.jshintrc b/.jshintrc
deleted file mode 100644
index a83d20d30..000000000
--- a/.jshintrc
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-"esversion":6,
-"asi" : true,
-"laxcomma": true
-}
diff --git a/.nvmrc b/.nvmrc
new file mode 100644
index 000000000..49319ad46
--- /dev/null
+++ b/.nvmrc
@@ -0,0 +1,2 @@
+14.19.1
+
diff --git a/.ruby-version b/.ruby-version
index 00355e29d..a04abec91 100644
--- a/.ruby-version
+++ b/.ruby-version
@@ -1 +1 @@
-2.3.7
+2.6.10
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 0545e24a4..000000000
--- a/.travis.yml
+++ /dev/null
@@ -1,13 +0,0 @@
-sudo: required
-
-language: minimal
-
-services:
-- docker
-
-before_install:
-- docker-compose -f docker/build/docker-compose.yml build
-- cp .env.test .env
-
-script:
-- docker-compose -f docker/build/docker-compose.yml run -e RACK_ENV=ci -e RAILS_ENV=ci -e BUILD_DATABASE_URL=postgres://admin:password@db/commitchange_development build script/test.sh
diff --git a/.yardopts b/.yardopts
new file mode 100644
index 000000000..7081e3806
--- /dev/null
+++ b/.yardopts
@@ -0,0 +1 @@
+-m markdown -o ./ruby_docs
\ No newline at end of file
diff --git a/CCS_HASH b/CCS_HASH
new file mode 100644
index 000000000..cebfb6ae2
--- /dev/null
+++ b/CCS_HASH
@@ -0,0 +1 @@
+ee1902e3b97d7dbec341371b24749ba0e17c069a
diff --git a/Gemfile b/Gemfile
old mode 100755
new mode 100644
index abe7d29aa..6f73f9fc2
--- a/Gemfile
+++ b/Gemfile
@@ -1,50 +1,50 @@
source 'https://rubygems.org'
-ruby '2.3.7'
+ruby ENV['CUSTOM_RUBY_VERSION'] || '2.6.10' # heroku needs a specific ruby version in the Gemfile
+
gem 'rake'
-gem 'rails', '3.2.22.5'
-gem 'rails_12factor'
-# https://stripe.com/docs/api
-gem 'stripe'
+gem 'rails', '~> 4.0'
+
+gem 'rack', git: "https://github.com/CommitChange/rack.git", branch: "1-6-stable"
-# Compression of assets on heroku
-# https://github.com/romanbsd/heroku-deflater
-gem 'heroku-deflater', :group => :production
+gem 'date', '~> 2.0.3'
+
+# https://stripe.com/docs/api
+gem 'stripe', '~> 4'
# json serialization
# https://github.com/nesquena/rabl
gem 'rabl'
-gem 'parallel'
+gem 'jbuilder'
+
+gem "puma", "~> 5.6"
+
+gem 'kaminari'
-gem 'puma'
gem 'bootsnap', require: false
gem 'rack-timeout'
gem 'puma_worker_killer'
-gem 'test-unit', '~> 3.0'
+gem 'test-unit'
gem 'hamster'
-gem 'aws-ses'
-gem 'aws-sdk'
+gem 'aws-sdk-s3'
+gem 'aws-sdk-rails'
+
+gem 'json', '>= 2.3.0'
+
# for blocking ip addressses
gem 'rack-attack'
-# For modularizing javascript
-# https://github.com/browserify-rails/browserify-rails
-gem 'browserify-rails'
-gem 'sprockets'
-
-# for serving fonts on cdn
-# https://github.com/ericallam/font_assets
-gem 'font_assets', '~> 0.1.14'
+# to find middleware thread safety bugs
+gem 'rack-freeze'
# Database (postgres)
-gem 'pg' # Postgresql
+gem 'pg', "< 1" # Postgresql, must be under 1 because 1.0 and later don't work on Rails 4
gem 'qx', path: 'gems/ruby-qx'
gem 'dalli'
-gem 'memcachier'
gem 'param_validation', path: 'gems/ruby-param-validation'
@@ -55,16 +55,12 @@ gem 'colorize'
# https://github.com/collectiveidea/delayed_job_active_record
gem 'delayed_job_active_record'
-# for styling emails
-# https://github.com/Mange/roadie-rails
-gem 'roadie-rails'
-
# For nat lang parsing of dates
gem 'chronic'
# Images
# https://github.com/carrierwaveuploader/carrierwave
-gem 'carrierwave'
+gem 'carrierwave', '~> 1', '< 2'
gem 'carrierwave-aws' # for uploading images to amazon s3
gem 'mini_magick'
@@ -73,8 +69,10 @@ gem 'httparty'
# User authentication
# https://github.com/plataformatec/devise
-gem 'devise'
-gem 'devise-async'
+gem 'devise', '~> 4.1'
+
+# https://github.com/airbrake/airbrake
+gem 'airbrake'
# http://www.rubygeocoder.com/
gem 'geocoder' # for adding latitude and longitude to location-based tables
@@ -82,51 +80,56 @@ gem 'geocoder' # for adding latitude and longitude to location-based tables
# https://github.com/buytruckload/nearest_time_zone
gem 'nearest_time_zone' # for detecting timezone from lat/lng
-gem 'mail_view'
+gem 'rest-client' # recommended for fullcontact
-gem 'fullcontact' # Full Contact API; includes #Hashie::Mash
+# https://github.com/fphilipe/premailer-rails
+# for stylizing emails
+gem 'premailer-rails'
# Nice table printing of data for the console
gem 'table_print'
-gem 'bunny', '>= 2.6.3'
-
-gem 'rails-i18n', '~> 3.0.0' # For 3.x
+gem 'rails-i18n' # For 4.0.x
gem 'i18n-js'
gem 'countries'
group :development, :ci do
gem 'traceroute'
- gem 'debase'
- gem 'ruby-debug-ide'
end
group :development, :ci, :test do
gem 'timecop'
gem 'pry'
- #gem 'pry-byebug'
+ gem 'pry-byebug'
gem 'binding_of_caller'
- gem 'rspec'
- gem 'rspec-rails'
+ gem 'rspec', "~> 3"
+ gem 'rspec-rails', "~> 4"
gem 'database_cleaner'
gem 'dotenv-rails'
- gem 'ruby-prof', '0.15.9'
- gem 'stripe-ruby-mock', '~> 2.4.1', :require => 'stripe_mock', git: 'https://github.com/commitchange/stripe-ruby-mock.git', :branch => '2.4.1'
+ gem 'stripe-ruby-mock', '~> 2.5.1', :require => 'stripe_mock'
gem 'factory_bot'
gem 'factory_bot_rails'
- gem 'action_mailer_matchers'
+ gem 'action_mailer_matchers', '~> 1.2.0'
gem 'simplecov', '~> 0.16.1', require: false
+ gem 'byebug'
+ gem 'shoulda-matchers'
+ gem 'rspec-json_expectations'
+ gem 'yard'
+ gem 'faker' # test data generation
end
+
+gem 'nokogiri', '~> 1.13.11', require: false, git:"https://github.com/commitchange/nokogiri.git", tag: "v1.13.11"
+
+
group :test do
gem 'webmock'
end
# Gems used for asset compilation
-gem 'sass', '3.2.19'
-gem 'sass-rails', '3.2.6'
-gem 'uglifier'
+gem 'sassc'
+gem 'sassc-rails'
# make logging less terrible in rails
gem 'lograge'
@@ -136,10 +139,49 @@ gem 'dry-validation' # used only for config validation
gem 'foreman'
+
+
+group :production do
+ gem 'rails_autoscale_agent', '>= 0.9.1'
+ gem 'tunemygc'
+end
+
+
+group :production, :staging do
+ gem 'heroku_rails_deflate'
+ gem "hiredis", "~> 0.6.0"
+ gem "redis", ">= 3.2.0"
+ gem 'redis-actionpack'
+ gem 'rails_12factor'
+end
+
gem 'grape', '~> 1.1.0'
gem 'grape-entity', git: 'https://github.com/ruby-grape/grape-entity.git', ref: '0e04aa561373b510c2486282979085eaef2ae663'
gem 'grape-swagger'
gem 'grape-swagger-entity'
gem 'grape_url_validator'
gem 'grape_logging'
-gem 'grape_devise', path: 'gems/grape_devise'
+
+gem 'recaptcha', '~> 5.8.1'
+
+gem 'hashie'
+
+gem 'connection_pool'
+
+gem "barnes"
+
+gem 'protected_attributes' # because we upgraded from 3
+
+gem 'actionpack-action_caching' # because we use action caching
+
+gem 'rack-cors'
+
+gem 'ruby2_keywords' # needed because we're backporting code from Rails 6.2
+
+gem 'securerandom' # needed becuase we're on a pre-2.5 Ruby version
+
+gem 'fx', git: 'https://github.com/teoljungberg/fx.git', ref: '946cdccbd12333deb8f4566c9852b49c0231a618'
+
+gem 'has_scope'
+
+gem 'globalid', git: "https://github.com/CommitChange/globalid.git", tag: "0.4.2.1"
\ No newline at end of file
diff --git a/Gemfile.lock b/Gemfile.lock
index 113acbf75..932cab738 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -1,12 +1,26 @@
GIT
- remote: https://github.com/commitchange/stripe-ruby-mock.git
- revision: ee4471a8f654672d5596218c2b68a2913ea3f4cc
- branch: 2.4.1
+ remote: https://github.com/CommitChange/globalid.git
+ revision: add4f61a0ccf49704ab03dc7505a8727655720a7
+ tag: 0.4.2.1
specs:
- stripe-ruby-mock (2.4.1)
- dante (>= 0.2.0)
- multi_json (~> 1.0)
- stripe (>= 1.31.0, <= 1.58.0)
+ globalid (0.4.2.1)
+ activesupport (>= 4.2.0)
+
+GIT
+ remote: https://github.com/CommitChange/rack.git
+ revision: d48d04ed52ed3f196906c2e1c988879b8361c939
+ branch: 1-6-stable
+ specs:
+ rack (1.6.13)
+
+GIT
+ remote: https://github.com/commitchange/nokogiri.git
+ revision: 845f33399b3063f8f1f6e73a3035ff265ae3965b
+ tag: v1.13.11
+ specs:
+ nokogiri (1.13.11)
+ mini_portile2 (~> 2.8.0)
+ racc (~> 1.4)
GIT
remote: https://github.com/ruby-grape/grape-entity.git
@@ -17,13 +31,14 @@ GIT
activesupport (>= 3.0.0)
multi_json (>= 1.3.2)
-PATH
- remote: gems/grape_devise
+GIT
+ remote: https://github.com/teoljungberg/fx.git
+ revision: 946cdccbd12333deb8f4566c9852b49c0231a618
+ ref: 946cdccbd12333deb8f4566c9852b49c0231a618
specs:
- grape_devise (0.1.1)
- devise (>= 2.2.8, < 5)
- grape (> 0.7)
- rails (> 3.2, < 6)
+ fx (0.6.2)
+ activerecord (>= 4.0.0)
+ railties (>= 4.0.0)
PATH
remote: gems/ruby-param-validation
@@ -41,80 +56,106 @@ PATH
GEM
remote: https://rubygems.org/
specs:
- action_mailer_matchers (1.0.0)
- actionmailer (3.2.22.5)
- actionpack (= 3.2.22.5)
- mail (~> 2.5.4)
- actionpack (3.2.22.5)
- activemodel (= 3.2.22.5)
- activesupport (= 3.2.22.5)
- builder (~> 3.0.0)
+ action_mailer_matchers (1.2.0)
+ actionmailer (4.2.11.3)
+ actionpack (= 4.2.11.3)
+ actionview (= 4.2.11.3)
+ activejob (= 4.2.11.3)
+ mail (~> 2.5, >= 2.5.4)
+ rails-dom-testing (~> 1.0, >= 1.0.5)
+ actionpack (4.2.11.3)
+ actionview (= 4.2.11.3)
+ activesupport (= 4.2.11.3)
+ rack (~> 1.6)
+ rack-test (~> 0.6.2)
+ rails-dom-testing (~> 1.0, >= 1.0.5)
+ rails-html-sanitizer (~> 1.0, >= 1.0.2)
+ actionpack-action_caching (1.2.1)
+ actionpack (>= 4.0.0)
+ actionview (4.2.11.3)
+ activesupport (= 4.2.11.3)
+ builder (~> 3.1)
erubis (~> 2.7.0)
- journey (~> 1.0.4)
- rack (~> 1.4.5)
- rack-cache (~> 1.2)
- rack-test (~> 0.6.1)
- sprockets (~> 2.2.1)
- activemodel (3.2.22.5)
- activesupport (= 3.2.22.5)
- builder (~> 3.0.0)
- activerecord (3.2.22.5)
- activemodel (= 3.2.22.5)
- activesupport (= 3.2.22.5)
- arel (~> 3.0.2)
- tzinfo (~> 0.3.29)
- activeresource (3.2.22.5)
- activemodel (= 3.2.22.5)
- activesupport (= 3.2.22.5)
- activesupport (3.2.22.5)
- i18n (~> 0.6, >= 0.6.4)
- multi_json (~> 1.0)
- addressable (2.3.8)
- amq-protocol (2.2.0)
+ rails-dom-testing (~> 1.0, >= 1.0.5)
+ rails-html-sanitizer (~> 1.0, >= 1.0.3)
+ activejob (4.2.11.3)
+ activesupport (= 4.2.11.3)
+ globalid (>= 0.3.0)
+ activemodel (4.2.11.3)
+ activesupport (= 4.2.11.3)
+ builder (~> 3.1)
+ activerecord (4.2.11.3)
+ activemodel (= 4.2.11.3)
+ activesupport (= 4.2.11.3)
+ arel (~> 6.0)
+ activesupport (4.2.11.3)
+ i18n (~> 0.7)
+ minitest (~> 5.1)
+ thread_safe (~> 0.3, >= 0.3.4)
+ tzinfo (~> 1.1)
+ addressable (2.8.0)
+ public_suffix (>= 2.0.2, < 5.0)
+ airbrake (10.0.2)
+ airbrake-ruby (~> 4.13)
+ airbrake-ruby (4.13.3)
+ rbtree3 (~> 0.5)
andand (1.3.3)
- arel (3.0.3)
- aws-sdk (1.66.0)
- aws-sdk-v1 (= 1.66.0)
- aws-sdk-v1 (1.66.0)
- json (~> 1.4)
- nokogiri (>= 1.4.4)
- aws-ses (0.6.0)
- builder
- mail (> 2.2.5)
- mime-types
- xml-simple
+ arel (6.0.4)
+ aws-eventstream (1.2.0)
+ aws-partitions (1.579.0)
+ aws-sdk-core (3.130.1)
+ aws-eventstream (~> 1, >= 1.0.2)
+ aws-partitions (~> 1, >= 1.525.0)
+ aws-sigv4 (~> 1.1)
+ jmespath (~> 1.0)
+ aws-sdk-kms (1.56.0)
+ aws-sdk-core (~> 3, >= 3.127.0)
+ aws-sigv4 (~> 1.1)
+ aws-sdk-rails (2.1.0)
+ aws-sdk-ses (~> 1)
+ railties (>= 3)
+ aws-sdk-s3 (1.113.0)
+ aws-sdk-core (~> 3, >= 3.127.0)
+ aws-sdk-kms (~> 1)
+ aws-sigv4 (~> 1.4)
+ aws-sdk-ses (1.47.0)
+ aws-sdk-core (~> 3, >= 3.127.0)
+ aws-sigv4 (~> 1.1)
+ aws-sigv4 (1.5.0)
+ aws-eventstream (~> 1, >= 1.0.2)
axiom-types (0.1.1)
descendants_tracker (~> 0.0.4)
ice_nine (~> 0.11.0)
thread_safe (~> 0.3, >= 0.3.1)
- bcrypt (3.1.11)
+ barnes (0.0.8)
+ multi_json (~> 1)
+ statsd-ruby (~> 1.1)
+ bcrypt (3.1.16)
binding_of_caller (0.7.2)
debug_inspector (>= 0.0.1)
bootsnap (1.1.7)
msgpack (~> 1.0)
- browserify-rails (0.9.3)
- sprockets (~> 2.2)
- builder (3.0.4)
- bunny (2.7.1)
- amq-protocol (>= 2.2.0)
- carrierwave (0.10.0)
- activemodel (>= 3.2.0)
- activesupport (>= 3.2.0)
- json (>= 1.7)
+ builder (3.2.4)
+ byebug (11.1.3)
+ carrierwave (1.3.2)
+ activemodel (>= 4.0.0)
+ activesupport (>= 4.0.0)
mime-types (>= 1.16)
- carrierwave-aws (0.5.0)
- aws-sdk (~> 1.58)
- carrierwave (~> 0.7)
+ ssrf_filter (~> 1.0)
+ carrierwave-aws (1.4.0)
+ aws-sdk-s3 (~> 1.0)
+ carrierwave (>= 0.7, < 2.1)
chronic (0.10.2)
- coderay (1.1.2)
+ coderay (1.1.3)
coercible (1.0.0)
descendants_tracker (~> 0.0.1)
colorize (0.8.1)
- concurrent-ruby (1.0.5)
+ concurrent-ruby (1.2.2)
config (1.7.0)
activesupport (>= 3.0)
deep_merge (~> 1.2.1)
dry-validation (>= 0.10.4)
+ connection_pool (2.2.2)
countries (2.1.2)
i18n_data (~> 0.8.0)
money (~> 6.9)
@@ -122,35 +163,31 @@ GEM
unicode_utils (~> 1.4)
crack (0.4.2)
safe_yaml (~> 1.0.0)
- css_parser (1.3.6)
+ crass (1.0.6)
+ css_parser (1.9.0)
addressable
- dalli (2.7.6)
+ dalli (3.2.3)
dante (0.2.0)
database_cleaner (1.6.1)
- debase (0.2.2)
- debase-ruby_core_source (>= 0.10.2)
- debase-ruby_core_source (0.10.3)
+ date (2.0.3)
debug_inspector (0.0.2)
deep_merge (1.2.1)
- delayed_job (4.1.2)
- activesupport (>= 3.0, < 5.1)
+ delayed_job (4.1.10)
+ activesupport (>= 3.0, < 8.0)
delayed_job_active_record (4.1.1)
activerecord (>= 3.0, < 5.1)
delayed_job (>= 3.0, < 5)
descendants_tracker (0.0.4)
thread_safe (~> 0.3, >= 0.3.1)
- devise (3.5.10)
+ devise (4.7.3)
bcrypt (~> 3.0)
orm_adapter (~> 0.1)
- railties (>= 3.2.6, < 5)
+ railties (>= 4.1.0)
responders
- thread_safe (~> 0.1)
warden (~> 1.2.3)
- devise-async (0.9.0)
- devise (~> 3.2)
- diff-lcs (1.2.5)
+ diff-lcs (1.5.0)
docile (1.3.1)
- domain_name (0.5.20160615)
+ domain_name (0.5.20190701)
unf (>= 0.0.5, < 1.0.0)
dotenv (2.0.1)
dotenv-rails (2.0.1)
@@ -184,27 +221,20 @@ GEM
dry-types (~> 0.12.0)
equalizer (0.0.11)
erubis (2.7.0)
- execjs (2.5.2)
- factory_bot (4.8.2)
- activesupport (>= 3.0.0)
- factory_bot_rails (4.8.2)
- factory_bot (~> 4.8.2)
- railties (>= 3.0.0)
- faraday (0.9.1)
+ factory_bot (5.2.0)
+ activesupport (>= 4.2.0)
+ factory_bot_rails (5.2.0)
+ factory_bot (~> 5.2.0)
+ railties (>= 4.2.0)
+ faker (2.2.1)
+ i18n (>= 0.8)
+ faraday (0.17.3)
multipart-post (>= 1.2, < 3)
- faraday_middleware (0.9.1)
- faraday (>= 0.7.4, < 0.10)
- font_assets (0.1.14)
- rack
- foreman (0.84.0)
- thor (~> 0.19.1)
- fullcontact (0.9.0)
- faraday (~> 0.9.0)
- faraday_middleware (>= 0.9)
- hashie (>= 2.0, < 4.0)
- plissken
+ ffi (1.11.3)
+ foreman (0.87.2)
geocoder (1.2.11)
- get_process_mem (0.2.1)
+ get_process_mem (0.2.7)
+ ffi (~> 1.0)
grape (1.1.0)
activesupport
builder
@@ -224,14 +254,21 @@ GEM
grape (>= 0.12.0)
hamster (3.0.0)
concurrent-ruby (~> 1.0)
- hashie (3.4.1)
- heroku-deflater (0.5.3)
+ has_scope (0.7.2)
+ actionpack (>= 4.1)
+ activesupport (>= 4.1)
+ hashie (4.0.0)
+ heroku_rails_deflate (1.0.3)
+ actionpack (>= 3.2.13)
+ activesupport (>= 3.2.13)
rack (>= 1.4.5)
- hike (1.2.3)
- http-cookie (1.0.2)
+ hiredis (0.6.3)
+ htmlentities (4.3.4)
+ http-accept (1.7.0)
+ http-cookie (1.0.3)
domain_name (~> 0.5)
- httparty (0.13.3)
- json (~> 1.8)
+ httparty (0.21.0)
+ mini_mime (>= 1.0.0)
multi_xml (>= 0.5.2)
i18n (0.9.5)
concurrent-ruby (~> 1.0)
@@ -240,29 +277,46 @@ GEM
i18n_data (0.8.0)
ice_nine (0.11.2)
inflecto (0.0.2)
- journey (1.0.4)
- json (1.8.6)
+ jbuilder (2.9.1)
+ activesupport (>= 4.2.0)
+ jmespath (1.6.1)
+ json (2.6.1)
+ kaminari (1.2.1)
+ activesupport (>= 4.1.0)
+ kaminari-actionview (= 1.2.1)
+ kaminari-activerecord (= 1.2.1)
+ kaminari-core (= 1.2.1)
+ kaminari-actionview (1.2.1)
+ actionview
+ kaminari-core (= 1.2.1)
+ kaminari-activerecord (1.2.1)
+ activerecord
+ kaminari-core (= 1.2.1)
+ kaminari-core (1.2.1)
kdtree (0.3)
lograge (0.3.6)
actionpack (>= 3)
activesupport (>= 3)
railties (>= 3)
- mail (2.5.5)
- mime-types (~> 1.16)
- treetop (~> 1.4.8)
- mail_view (2.0.4)
- tilt
- memcachier (0.0.2)
- method_source (0.9.0)
- mime-types (1.25.1)
+ loofah (2.21.3)
+ crass (~> 1.0.2)
+ nokogiri (>= 1.12.0)
+ mail (2.7.1)
+ mini_mime (>= 0.1.1)
+ method_source (1.0.0)
+ mime-types (3.4.1)
+ mime-types-data (~> 3.2015)
+ mime-types-data (3.2022.0105)
mini_magick (4.9.5)
- mini_portile2 (2.1.0)
+ mini_mime (1.1.0)
+ mini_portile2 (2.8.2)
+ minitest (5.18.0)
money (6.10.0)
i18n (>= 0.6.4, < 1.0)
msgpack (1.2.0)
- multi_json (1.13.1)
- multi_xml (0.5.5)
- multipart-post (2.0.0)
+ multi_json (1.15.0)
+ multi_xml (0.6.0)
+ multipart-post (2.1.1)
mustermann (1.0.3)
mustermann-grape (1.0.0)
mustermann (~> 1.0.0)
@@ -270,142 +324,175 @@ GEM
andand
kdtree
require_all
+ net-http-persistent (3.1.0)
+ connection_pool (~> 2.2)
netrc (0.11.0)
- nokogiri (1.6.8.1)
- mini_portile2 (~> 2.1.0)
+ nio4r (2.5.9)
orm_adapter (0.5.0)
- parallel (1.6.1)
- pg (0.18.3)
- plissken (0.2.0)
- symbolize (~> 4.2)
- polyglot (0.3.5)
+ pg (0.21.0)
power_assert (1.1.1)
- pry (0.11.3)
- coderay (~> 1.1.0)
- method_source (~> 0.9.0)
- puma (3.11.2)
- puma_worker_killer (0.1.0)
+ premailer (1.12.1)
+ addressable
+ css_parser (>= 1.6.0)
+ htmlentities (>= 4.0.0)
+ premailer-rails (1.11.1)
+ actionmailer (>= 3)
+ premailer (~> 1.7, >= 1.7.9)
+ protected_attributes (1.1.4)
+ activemodel (>= 4.0.1, < 5.0)
+ pry (0.13.1)
+ coderay (~> 1.1)
+ method_source (~> 1.0)
+ pry-byebug (3.9.0)
+ byebug (~> 11.0)
+ pry (~> 0.13.0)
+ public_suffix (4.0.6)
+ puma (5.6.7)
+ nio4r (~> 2.0)
+ puma_worker_killer (0.3.1)
get_process_mem (~> 0.2)
- puma (>= 2.7, < 4)
+ puma (>= 2.7)
rabl (0.11.6)
activesupport (>= 2.3.14)
- rack (1.4.7)
+ racc (1.6.2)
rack-accept (0.4.5)
rack (>= 0.4)
- rack-attack (4.2.0)
- rack
- rack-cache (1.7.2)
- rack (>= 0.4)
- rack-ssl (1.3.4)
- rack
+ rack-attack (6.5.0)
+ rack (>= 1.0, < 3)
+ rack-cors (1.0.6)
+ rack (>= 1.6.0)
+ rack-freeze (1.0.0)
rack-test (0.6.3)
rack (>= 1.0)
rack-timeout (0.4.2)
- rails (3.2.22.5)
- actionmailer (= 3.2.22.5)
- actionpack (= 3.2.22.5)
- activerecord (= 3.2.22.5)
- activeresource (= 3.2.22.5)
- activesupport (= 3.2.22.5)
- bundler (~> 1.0)
- railties (= 3.2.22.5)
- rails-i18n (3.0.1)
- i18n (~> 0.5)
- rails (>= 3.0.0, < 4.0.0)
+ rails (4.2.11.3)
+ actionmailer (= 4.2.11.3)
+ actionpack (= 4.2.11.3)
+ actionview (= 4.2.11.3)
+ activejob (= 4.2.11.3)
+ activemodel (= 4.2.11.3)
+ activerecord (= 4.2.11.3)
+ activesupport (= 4.2.11.3)
+ bundler (>= 1.3.0, < 2.0)
+ railties (= 4.2.11.3)
+ sprockets-rails
+ rails-deprecated_sanitizer (1.0.4)
+ activesupport (>= 4.2.0.alpha)
+ rails-dom-testing (1.0.9)
+ activesupport (>= 4.2.0, < 5.0)
+ nokogiri (~> 1.6)
+ rails-deprecated_sanitizer (>= 1.0.1)
+ rails-html-sanitizer (1.5.0)
+ loofah (~> 2.19, >= 2.19.1)
+ rails-i18n (4.0.9)
+ i18n (~> 0.7)
+ railties (~> 4.0)
rails_12factor (0.0.3)
rails_serve_static_assets
rails_stdout_logging
- rails_serve_static_assets (0.0.4)
- rails_stdout_logging (0.0.3)
- railties (3.2.22.5)
- actionpack (= 3.2.22.5)
- activesupport (= 3.2.22.5)
- rack-ssl (~> 1.3.2)
+ rails_autoscale_agent (0.9.1)
+ rails_serve_static_assets (0.0.5)
+ rails_stdout_logging (0.0.5)
+ railties (4.2.11.3)
+ actionpack (= 4.2.11.3)
+ activesupport (= 4.2.11.3)
rake (>= 0.8.7)
- rdoc (~> 3.4)
- thor (>= 0.14.6, < 2.0)
- rake (12.3.1)
- rdoc (3.12.2)
- json (~> 1.4)
+ thor (>= 0.18.1, < 2.0)
+ rake (13.0.6)
+ rbtree3 (0.6.0)
+ recaptcha (5.8.1)
+ json
+ redis (4.2.5)
+ redis-actionpack (5.1.0)
+ actionpack (>= 4.0, < 7)
+ redis-rack (>= 1, < 3)
+ redis-store (>= 1.1.0, < 2)
+ redis-rack (2.0.6)
+ rack (>= 1.5, < 3)
+ redis-store (>= 1.2, < 2)
+ redis-store (1.9.0)
+ redis (>= 4, < 5)
require_all (1.3.2)
- responders (1.1.2)
- railties (>= 3.2, < 4.2)
- rest-client (1.8.0)
+ responders (2.4.1)
+ actionpack (>= 4.2.0, < 6.0)
+ railties (>= 4.2.0, < 6.0)
+ rest-client (2.1.0)
+ http-accept (>= 1.7.0, < 2.0)
http-cookie (>= 1.0.2, < 2.0)
- mime-types (>= 1.16, < 3.0)
- netrc (~> 0.7)
- roadie (3.0.4)
- css_parser (~> 1.3.4)
- nokogiri (~> 1.6.0)
- roadie-rails (1.0.5)
- railties (>= 3.0, < 4.3)
- roadie (~> 3.0)
- rspec (3.5.0)
- rspec-core (~> 3.5.0)
- rspec-expectations (~> 3.5.0)
- rspec-mocks (~> 3.5.0)
- rspec-core (3.5.1)
- rspec-support (~> 3.5.0)
- rspec-expectations (3.5.0)
+ mime-types (>= 1.16, < 4.0)
+ netrc (~> 0.8)
+ rspec (3.12.0)
+ rspec-core (~> 3.12.0)
+ rspec-expectations (~> 3.12.0)
+ rspec-mocks (~> 3.12.0)
+ rspec-core (3.12.2)
+ rspec-support (~> 3.12.0)
+ rspec-expectations (3.12.3)
diff-lcs (>= 1.2.0, < 2.0)
- rspec-support (~> 3.5.0)
- rspec-mocks (3.5.0)
+ rspec-support (~> 3.12.0)
+ rspec-json_expectations (2.2.0)
+ rspec-mocks (3.12.5)
diff-lcs (>= 1.2.0, < 2.0)
- rspec-support (~> 3.5.0)
- rspec-rails (3.5.0)
- actionpack (>= 3.0)
- activesupport (>= 3.0)
- railties (>= 3.0)
- rspec-core (~> 3.5.0)
- rspec-expectations (~> 3.5.0)
- rspec-mocks (~> 3.5.0)
- rspec-support (~> 3.5.0)
- rspec-support (3.5.0)
- ruby-debug-ide (0.6.1)
- rake (>= 0.8.1)
- ruby-prof (0.15.9)
+ rspec-support (~> 3.12.0)
+ rspec-rails (4.1.2)
+ actionpack (>= 4.2)
+ activesupport (>= 4.2)
+ railties (>= 4.2)
+ rspec-core (~> 3.10)
+ rspec-expectations (~> 3.10)
+ rspec-mocks (~> 3.10)
+ rspec-support (~> 3.10)
+ rspec-support (3.12.0)
+ ruby2_keywords (0.0.5)
safe_yaml (1.0.4)
- sass (3.2.19)
- sass-rails (3.2.6)
- railties (~> 3.2.0)
- sass (>= 3.1.10)
- tilt (~> 1.3)
+ sassc (2.4.0)
+ ffi (~> 1.9)
+ sassc-rails (2.1.2)
+ railties (>= 4.0.0)
+ sassc (>= 2.0)
+ sprockets (> 3.0)
+ sprockets-rails
+ tilt
+ securerandom (0.1.1)
+ shoulda-matchers (4.5.1)
+ activesupport (>= 4.2.0)
simplecov (0.16.1)
docile (~> 1.1)
json (>= 1.8, < 3)
simplecov-html (~> 0.10.0)
simplecov-html (0.10.2)
sixarm_ruby_unaccent (1.2.0)
- sprockets (2.2.3)
- hike (~> 1.2)
+ sprockets (3.7.2)
+ concurrent-ruby (~> 1.0)
+ rack (> 1, < 3)
+ sprockets-rails (3.2.2)
+ actionpack (>= 4.0)
+ activesupport (>= 4.0)
+ sprockets (>= 3.0.0)
+ ssrf_filter (1.0.7)
+ statsd-ruby (1.4.0)
+ stripe (4.24.0)
+ faraday (~> 0.13)
+ net-http-persistent (~> 3.0)
+ stripe-ruby-mock (2.5.8)
+ dante (>= 0.2.0)
multi_json (~> 1.0)
- rack (~> 1.0)
- tilt (~> 1.1, != 1.3.0)
- stripe (1.49.0)
- rest-client (>= 1.4, < 3.0)
- symbolize (4.5.2)
- activemodel (>= 3.2, < 5)
- activesupport (>= 3.2, < 5)
- i18n
+ stripe (>= 2.0.3)
table_print (1.5.4)
test-unit (3.2.7)
power_assert
- thor (0.19.4)
+ thor (1.2.2)
thread_safe (0.3.6)
- tilt (1.4.1)
+ tilt (2.0.10)
timecop (0.7.3)
traceroute (0.5.0)
rails (>= 3.0.0)
- treetop (1.4.15)
- polyglot
- polyglot (>= 0.3.1)
- tzinfo (0.3.54)
- uglifier (2.7.1)
- execjs (>= 0.3.0)
- json (>= 1.8.0)
+ tunemygc (1.0.71)
+ tzinfo (1.2.11)
+ thread_safe (~> 0.1)
unf (0.1.4)
unf_ext
- unf_ext (0.0.7.2)
+ unf_ext (0.0.7.7)
unicode_utils (1.4.0)
virtus (1.0.5)
axiom-types (~> 0.1)
@@ -417,89 +504,109 @@ GEM
webmock (1.21.0)
addressable (>= 2.3.6)
crack (>= 0.3.2)
- xml-simple (1.1.5)
+ webrick (1.7.0)
+ yard (0.9.27)
+ webrick (~> 1.7.0)
PLATFORMS
ruby
DEPENDENCIES
- action_mailer_matchers
- aws-sdk
- aws-ses
+ action_mailer_matchers (~> 1.2.0)
+ actionpack-action_caching
+ airbrake
+ aws-sdk-rails
+ aws-sdk-s3
+ barnes
binding_of_caller
bootsnap
- browserify-rails
- bunny (>= 2.6.3)
- carrierwave
+ byebug
+ carrierwave (~> 1, < 2)
carrierwave-aws
chronic
colorize
config (> 1.5)
+ connection_pool
countries
dalli
database_cleaner
- debase
+ date (~> 2.0.3)
delayed_job_active_record
- devise
- devise-async
+ devise (~> 4.1)
dotenv-rails
dry-validation
factory_bot
factory_bot_rails
- font_assets (~> 0.1.14)
+ faker
foreman
- fullcontact
+ fx!
geocoder
+ globalid!
grape (~> 1.1.0)
grape-entity!
grape-swagger
grape-swagger-entity
- grape_devise!
grape_logging
grape_url_validator
hamster
- heroku-deflater
+ has_scope
+ hashie
+ heroku_rails_deflate
+ hiredis (~> 0.6.0)
httparty
i18n-js
+ jbuilder
+ json (>= 2.3.0)
+ kaminari
lograge
- mail_view
- memcachier
mini_magick
nearest_time_zone
- parallel
+ nokogiri (~> 1.13.11)!
param_validation!
- pg
+ pg (< 1)
+ premailer-rails
+ protected_attributes
pry
- puma
+ pry-byebug
+ puma (~> 5.6)
puma_worker_killer
qx!
rabl
+ rack!
rack-attack
+ rack-cors
+ rack-freeze
rack-timeout
- rails (= 3.2.22.5)
- rails-i18n (~> 3.0.0)
+ rails (~> 4.0)
+ rails-i18n
rails_12factor
+ rails_autoscale_agent (>= 0.9.1)
rake
- roadie-rails
- rspec
- rspec-rails
- ruby-debug-ide
- ruby-prof (= 0.15.9)
- sass (= 3.2.19)
- sass-rails (= 3.2.6)
+ recaptcha (~> 5.8.1)
+ redis (>= 3.2.0)
+ redis-actionpack
+ rest-client
+ rspec (~> 3)
+ rspec-json_expectations
+ rspec-rails (~> 4)
+ ruby2_keywords
+ sassc
+ sassc-rails
+ securerandom
+ shoulda-matchers
simplecov (~> 0.16.1)
- sprockets
- stripe
- stripe-ruby-mock (~> 2.4.1)!
+ stripe (~> 4)
+ stripe-ruby-mock (~> 2.5.1)
table_print
- test-unit (~> 3.0)
+ test-unit
timecop
traceroute
- uglifier
+ tunemygc
webmock
+ yard
RUBY VERSION
- ruby 2.3.7p456
+ ruby 2.6.10p210
BUNDLED WITH
1.17.3
diff --git a/Procfile b/Procfile
index d6f090039..948e54291 100644
--- a/Procfile
+++ b/Procfile
@@ -1,3 +1,3 @@
web: bundle exec puma -C ./config/puma.rb
worker: bundle exec rake jobs:work
-
+full_contact_worker: bundle exec rake work_full_contact_queue
diff --git a/Procfile.dev b/Procfile.dev
new file mode 100644
index 000000000..3c19bca79
--- /dev/null
+++ b/Procfile.dev
@@ -0,0 +1,3 @@
+web: bin/rails server -p $PORT
+worker: bin/rake jobs:work
+webpack: yarn watch
diff --git a/README.md b/README.md
index 72937dcda..bc62d74b2 100644
--- a/README.md
+++ b/README.md
@@ -1,159 +1,177 @@
-[![](https://img.shields.io/badge/zulip-join_chat-brightgreen.svg)](https://houdini.zulipchat.com) [![Build Status](https://travis-ci.com/houdiniproject/houdini.svg?branch=master)](https://travis-ci.com/houdiniproject/houdini)
+# CommitChange's version of Houdini
-The Houdini Project is free and open source fundraising infrastructure. It includes...
-- Crowdfunding campaigns
-- Donate widget page and generator
-- Fundraising events
-- Nonprofit Profiles
-- Nonprofit payment history and payouts dashboard
-- Nonprofit recurring donation management dashboard
-- Nonprofit metrics overview / business intelligence dashboard
-- Nonprofit supporter relationship management dashboard (CRM)
-- Nonprofit org user account management
-- Simple donation management for donors
+This is a Rails 4.2 app.
-This is a Rails 3.2 app; [we want to upgrade](https://github.com/houdiniproject/houdini/issues/47).
-
-Much of the business logic is in `/lib`.
-
-The frontend is written in a few custom frameworks, the largest of which is called Flimflam.
+The frontend is written in a few custom frameworks, the largest of which is called Flimflam.
We endeavor to migrate to React as quickly as possible to increase development
comfort and speed.
-All backend code and React components should be TDD.
+All backend code and React components should be well-tested
+
-## Get involved
-Houdini's success depends on you!
+## Prerequisites
-### Join our Zulip chat
-https://houdini.zulipchat.com
+Houdini is designed and tested to run with the following:
+
+* Ruby 2.6
+* Node 14
+* PostgreSQL 12
+* run on Heroku-20
-### Help with translations
-Visit the Internationalization channel on Houdini Zulip and discuss
## Dev Setup
-#### Get the code
-`git clone https://github.com/HoudiniProject/houdini`
+#### Get the code
+```bash
+git clone https://github.com/Commitchange/houdini
+git checkout supporter_level_goal
+```
+
+#### One-time setup (Ubuntu)
-#### Docker install (if you don't have docker and docker-compose installed)
-##### install Docker and Docker compose
-You need to install Docker and Docker Compose.
-* *Note:* Docker and Docker Compose binaries from Docker itself are proprietary software based entirely upon
-free software. If you feel more comfortable, you may build them from source.
+You'll want to run the next commands as root or via sudo (for Ubuntu 18.04 users or anyone running ProgresSQL 10, change "postgresql-12" below to "postgresql-10"). You could do this by typing `sudo /bin/sh` running the commands from there.
-* *Note 2:* For Debian, the Docker package is simply too out of date to be usable.
-Even the version for latest Ubuntu LTS is too old. For reliability, we strongly
-recommend using the Docker debian feed from docker itself OR making sure you keep your
-own build up to date.
+```bash
+apt update
+apt install curl -yy
+curl -sL https://deb.nodesource.com/setup_14.x | bash -
+curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
+echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
+apt update
+apt install git postgresql-12 libpq-dev libjemalloc-dev libvips42 yarn -yy
+```
+
+You'll run the next commands as your normal user.
+
+> *Note*: in the case of a production instance, this might be
+> your web server's user.
-##### Add yourself to the docker group
-Adding yourself as a Docker group user as follows:
+> *Note*: We use [rbenv](https://github.com/rbenv/rbenv) to have more control over the exact version of
+> Ruby. This tool is useful for switching between multiple Ruby versions on the same machine and for
+> ensuring that each project you are working on always runs on the correct Ruby version. You could also
+> build ruby from source.
-`sudo usermod -aG docker $USER`
+> *Note*: We recommend building Ruby with jemalloc support as we
+> do in these instructions. In practice, it manages memory far
+> more efficiently in Rails-based projects.
-You will likely need to logout and log back in again.
-
-#### Build your docker-container and start it up for initial set up.
-We'll keep this running in the console we'll call **console 1**
+> *Tip*: To get out of the root shell, run `exit`
+
+Get the latest rbenv
+```bash
+git clone https://github.com/rbenv/rbenv.git ~/.rbenv
```
-./dc build
-./dc up
+Add rbenv to bashrc:
+```bash
+echo 'eval "$(~/.rbenv/bin/rbenv init - bash)"' >> ~/.bashrc
```
-#### System configuration
-There are a number of steps for configuring your Houdini instance for startup
-##### Start a new console we'll call **console 2**.
-
-##### In console 2, copy the env template to your .env file
- ```
- cp .env.template .env
- ```
-##### In console 2, run the following and copy the output to you .env file to set you `DEVISE_SECRET_KEY` environment variable.
-`./run rake secret # copy this result into your DEVISE_SECRET_KEY`
+> *Note:* close and reopen your terminal.
-##### In console 2, , run the following and copy the output to you .env file to set you `SECRET_TOKEN` environment variable.
+Download the rbenv install feature:
+```bash
+git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build
```
-./run rake secret # copy this result into your SECRET_TOKEN
+Ruby install
+```bash
+cd houdini
+rbenv install 2.6
```
-##### Set the following secrets in your .env file with your Stripe account information
-- `STRIPE_API_KEY` with your Stripe PRIVATE key
-- `STRIPE_API_PUBLIC` with your Stripe PUBLIC key
+Run the following command as the `postgres` user and then enter your admin
+password at the prompt.
-##### You SHOULD set your AMAZON s3 information (optional but STRONGLY recommended)
-If you don't, file uploads WILL NOT WORK but it's not required.
+> *Note*: For development, Houdini expects the password to be 'password'. This would be terrible
+for production but for development, it's likely not a huge issue.
-##### In console 2, install npm packages
-`./run npm install`
+> *Tip*: To run this, add `sudo -u postgres ` to the beginning of the following command.
-##### In console 2, fill the db
-`./run rake db:create db:structure:load db:seed test:prepare`
+`createuser admin -s -d -P`
-##### Set up mailer info
-You can set this in `config/default_organization.yml` or better yet, make a copy with your own org name and add that to your .env file as `ORG_NAME`
-If you need help setting up your mailer, visit `config/environment.rb` where the settings schema is verified and documented.
+#### One-time setup (Mac)
-#### Startup
-##### Switch back to console 1 and run `Ctrl-c` to end the session.
+Set your Ruby version with `rbenv`.
+
+```bash
+brew install rbenv
+rbenv versions # see which ruby versions are already installed
+rbenv install # the app currently uses version 2.6.10
+rbenv local # rbenv local --unset reverses the action
+
+# To switch between rbenv versions installed locally, use the following command:
+rbenv shell 2.6.10
+
+```
+
+Set your Node version with `NVM`.
-##### In console 1, restart the containers
-`./dc up`
+```bash
+brew install nvm
+brew info nvm # command that shows the remaining steps to complete to install nvm properly
+mkdir ~/.nvm
+nvm install 14
+nvm use 14
+# Add the following lines to your ~/.bashprofile or ~/.zshrc:
+echo 'export NVM_DIR="$HOME/.nvm"' >> ~/.zshrc
+echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm' >> ~/.zshrc
+echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion' >> ~/.zshrc
-##### In console 2, run:
-`./run npm run watch`
+# Reference Stack Overflow post: https://stackoverflow.com/questions/53118850/brew-install-nvm-nvm-command-not-found
+```
-##### You can go to http://localhost:5000
+Set your Postgres version with homebrew.
-To get started, register your nonprofit using the "Get Started" link.
+```bash
+brew install postgresql@12
+brew switch postgres@12
-## Additional info
+# To start postgres locally run:
+brew services start postgresql@12
-##### Super admin
-There is a way to set your user as a super_admin. This role lets you access any of the nonprofits
-on your Houdini instance. Additionally, it gives you access to the super admin control panel to search all supporters and
-nonprofits, which is located at `/admin` url.
-
-To create the super user, go to the rails console by calling:
+```
-`./dc run web rails console`
+Create necessary postgres users in the `psql` console.
-In the console, run the following:
-
+```bash
+psql postgres # if this doesn't work, make sure postgres is running
+CREATE ROLE admin WITH SUPERUSER CREATEDB LOGIN PASSWORD 'password';
+CREATE ROLE postgres WITH SUPERUSER CREATEDB LOGIN PASSWORD 'password';
```
-admin=User.find(1) #or the id of the user you want to add the role
-role=Role.create(user:admin,name: "super_admin")
+
+#### System configuration (all)
+There are a number of steps for configuring your Houdini instance for startup
+##### Run bin/setup
+```sh
+bin/setup
```
+##### Get your .env file
+If you don't already have access to the CommitChange 1Password vault, ask to be added. Then
+download the .env file in 1Password and place it in the root directory.
-## To run in production
+> *Note:* Double check that your .env file has the '.' in front of the file name.
-##### Docker
-While Docker should be very possible to use for production, the current Docker solution
-is optimized heavily for dev purposes. If you know more about creating a solid production Docker setup, please do
-contribute!
+#### Startup
+##### run foreman for development
-(To be continued)
-- rake assets:precompile
-- if production: make sure memcached is running.
+When you run foreman in dev, you start up the server, the job runner and webpack.
+```sh
+foreman start
+```
+If you get `ActiveRecord::NoDatabaseError` errors, run `bin/rake db:create:all` to make sure all the databases are built.
## Frontend
Assets get compiled from `/client` to `/public/client`
-## React Generators
-If creating new React or Typescript code, please use the Rails generators with the 'react:' prefix. This include:
+## Documentation
-### react:packroot
-This generator creates a new entry for Webpack. This is a place where Webpack will start
-when packing a new javascript output file. It also creates a corresponding component for the entry.
-Usually, you will have one of these per page.
+You can get generate documentation for the Ruby source by running:
-### react:component
-This generator creates a React component along with a test file for testing with Jest.
-Each component should have its own file.
+`bundle exec yard doc`
-### react:lib
-This generator creates a basic Typescript module along with a test file.
+Alternatively, you can have it run in local webserver and autoupdate by running:
+
+`bundle exec yard server -r`
### Providing the complete corresponding source code
@@ -179,7 +197,7 @@ For this to work though, the following characteristics must be true:
- 2 spaces for tabs
#### New frontend code
-- All new front end code should be written in Typescript
+- All new front end code should be written in Typescript
and React (using TSX files). Please use the React Generators for creation.
- 2 spaces for tabs
@@ -191,3 +209,88 @@ and React (using TSX files). Please use the React Generators for creation.
#### Git
- No need to rebase, just merge
+
+
+## How to build releases at CommitChange
+
+### Build for production
+
+* Make your changes on `supporter_level_goal` (or any branch in the public houdini repo) and commit
+* Push your changes to remote
+* Run `./create_new_release.sh`. This moves you to `PRIVATE_MASTER` (ask Eric for the remote and access) and merges the changes.
+* Push to remote for `PRIVATE_MASTER`
+* Checkout `PRIVATE_PROD_DEPLOY`
+*`git merge PRIVATE_PROD_MASTER`
+* If you have changes on assets or on javascript, then run: `./run_production yarn build-all`. After that finishes, run `git add public` and then `git commit`
+* If no changes on assets or javascript, don’t do the last step
+* Push to the remote for `PRIVATE_PROD_DEPLOY` (ask Eric for the remote and access)
+* Push to heroku production using `git commit production PRIVATE_PROD_DEPLOY:master` ( ask Eric for access to `production`)
+
+## (Mac Setup) Build for Production
+# In order to get prod env set, you need to download Github CLI and Heroku CLI.
+
+# Github CLI setup
+```
+gh # to check if GH CLI has been downloaded
+brew install gh # if GH CLI has not been downloaded
+gh
+gh auth
+gh auth login
+```
+# Answer the following questions:
+—? What account do you want to log into? GitHub.com
+? What is your preferred protocol for Git operations? HTTPS
+? Authenticate Git with your GitHub credentials? Yes
+? How would you like to authenticate GitHub CLI? Login with a web browser
+—copy one time code, and enter into browser
+
+
+# Heroku CLI setup
+```
+brew tap heroku/brew && brew install heroku
+heroku login
+heroku git:remote —remote=production -a commitchange
+git branch
+git push production HEAD:master
+```
+
+# One-time setup to build for production
+```
+git checkout supporter_level_goal
+git pull
+git remote add private https://github.com/commitchange/deploy-houdini.git
+git branch -u private/master PRIVATE_MASTER
+git fetch private
+git checkout private/master
+git switch -c PRIVATE_MASTER
+git branch -u private/master PRIVATE_MASTER
+git checkout private/prod_deploy
+git switch -c PRIVATE_PROD_DEPLOY
+git branch -u private/prod_deploy PRIVATE_PROD_DEPLOY
+```
+
+```
+git checkout supporter_level_goal
+./create_new_release.sh
+git push private HEAD:master
+git checkout PRIVATE_PROD_DEPLOY
+git merge PRIVATE_MASTER
+git push private HEAD:prod_deploy
+npm run build-all-production
+git add public
+git commit -m ""
+git push private HEAD:prod_deploy
+git push production HEAD:master
+```
+### Build for staging
+
+* Run the workflow at https://github.com/CommitChange/deploy-houdini/actions/workflows/create-release.yml.
+* Once the deploy finishes, increase ASSET_VERSION in https://dashboard.heroku.com/apps/commitchange-test/settings by 1
+
+## Creating issues
+
+* *I'm a community member* - You should file an issue upstream in https://github.com/houdiniproject/houdini
+
+* *I work for CommitChange and...*
+ * *this is a CommitChange issue* - create an issue in https://github.com/commitchange/tix
+ * *this may be an issue upstream* - create an issue in https://github.com/commitchange/tix and maybe upstream. If you do file upstream, link to it the upstream issue in the tix issue.
diff --git a/app/api/houdini.rb b/app/api/houdini.rb
new file mode 100644
index 000000000..70110a238
--- /dev/null
+++ b/app/api/houdini.rb
@@ -0,0 +1,2 @@
+module Houdini
+end
\ No newline at end of file
diff --git a/app/api/houdini/v1/api.rb b/app/api/houdini/v1/api.rb
index d0e3a9216..642b7cb22 100644
--- a/app/api/houdini/v1/api.rb
+++ b/app/api/houdini/v1/api.rb
@@ -14,6 +14,7 @@ class Houdini::V1::API < Grape::API
mount Houdini::V1::Nonprofit => '/nonprofit'
# Additional mounts are added via generators above this line
# DON'T REMOVE THIS OR THE PREVIOUS LINES!!!
+
uri_for_host = URI.parse(Settings.api_domain&.url || Settings.cdn.url)
add_swagger_documentation \
host: "#{uri_for_host.host}#{uri_for_host.port ? ":#{uri_for_host.port}" : ""}",
diff --git a/app/api/houdini/v1/helpers/application_helper.rb b/app/api/houdini/v1/helpers/application_helper.rb
index 0c1345d61..194be8677 100644
--- a/app/api/houdini/v1/helpers/application_helper.rb
+++ b/app/api/houdini/v1/helpers/application_helper.rb
@@ -28,18 +28,5 @@ def protect_against_forgery?
allow_forgery_protection.nil? || allow_forgery_protection
end
-
- # def rescue_ar_invalid( *class_to_hash)
- # rescue_with ActiveRecord::RecordInvalid do |error|
- # output = []
- # error.record.errors do |attr,message|
- # output.push({params: "#{class_to_hash[error.record.class]}['#{attr}']",
- # message: message})
- # end
- # raise Grape::Exceptions::ValidationErrors.new(output)
- #
- # end
- # end
-
end
diff --git a/app/api/houdini/v1/nonprofit.rb b/app/api/houdini/v1/nonprofit.rb
index e01bc7cc5..665386946 100644
--- a/app/api/houdini/v1/nonprofit.rb
+++ b/app/api/houdini/v1/nonprofit.rb
@@ -3,7 +3,6 @@ class Houdini::V1::Nonprofit < Houdini::V1::BaseAPI
helpers Houdini::V1::Helpers::ApplicationHelper, Houdini::V1::Helpers::RescueHelper
before do
- protect_against_forgery
end
desc 'Return a nonprofit.' do
@@ -59,14 +58,14 @@ class Houdini::V1::Nonprofit < Houdini::V1::BaseAPI
u = nil
Qx.transaction do
begin
- np = Nonprofit.new(OnboardAccounts.set_nonprofit_defaults(declared_params[:nonprofit]))
+ np = ::Nonprofit.new(OnboardAccounts.set_nonprofit_defaults(declared_params[:nonprofit]))
begin
np.save!
rescue ActiveRecord::RecordInvalid => e
if (e.record.errors[:slug])
begin
- slug = SlugNonprofitNamingAlgorithm.new(np.state_code_slug, np.city_slug).create_copy_name(np.slug)
+ slug = ::SlugNonprofitNamingAlgorithm.new(np.state_code_slug, np.city_slug).create_copy_name(np.slug)
np.slug = slug
np.save!
rescue UnableToCreateNameCopyError
@@ -81,15 +80,21 @@ class Houdini::V1::Nonprofit < Houdini::V1::BaseAPI
end
end
- u = User.new(declared_params[:user])
+ u = ::User.new(declared_params[:user])
u.save!
role = u.roles.build(host: np, name: 'nonprofit_admin')
role.save!
-
- billing_plan = BillingPlan.find(Settings.default_bp.id)
+
+ MailchimpNonprofitUserAddJob.perform_later( u, np)
+
+ billing_plan = ::BillingPlan.find(Settings.default_bp.id)
b_sub = np.build_billing_subscription(billing_plan: billing_plan, status: 'active')
b_sub.save!
+ ::StripeAccountUtils.find_or_create(np.id)
+ np.reload
+
+ ::Delayed::Job.enqueue ::JobTypes::NonprofitCreateJob.new(np.id)
rescue ActiveRecord::RecordInvalid => e
class_to_name = {Nonprofit => 'nonprofit', User => 'user'}
if class_to_name[e.record.class]
diff --git a/app/assets/fonts/Bitter/Bitter-Bold.eot b/app/assets/fonts/Bitter/Bitter-Bold.eot
deleted file mode 100644
index 533502da5..000000000
Binary files a/app/assets/fonts/Bitter/Bitter-Bold.eot and /dev/null differ
diff --git a/app/assets/fonts/Bitter/Bitter-Bold.svg b/app/assets/fonts/Bitter/Bitter-Bold.svg
deleted file mode 100644
index ec5b943fd..000000000
--- a/app/assets/fonts/Bitter/Bitter-Bold.svg
+++ /dev/null
@@ -1,248 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/app/assets/fonts/Bitter/Bitter-Bold.ttf b/app/assets/fonts/Bitter/Bitter-Bold.ttf
deleted file mode 100644
index 1390173b3..000000000
Binary files a/app/assets/fonts/Bitter/Bitter-Bold.ttf and /dev/null differ
diff --git a/app/assets/fonts/Bitter/Bitter-Regular.eot b/app/assets/fonts/Bitter/Bitter-Regular.eot
deleted file mode 100644
index 46a2fc129..000000000
Binary files a/app/assets/fonts/Bitter/Bitter-Regular.eot and /dev/null differ
diff --git a/app/assets/fonts/Bitter/Bitter-Regular.svg b/app/assets/fonts/Bitter/Bitter-Regular.svg
deleted file mode 100644
index 8293c82f8..000000000
--- a/app/assets/fonts/Bitter/Bitter-Regular.svg
+++ /dev/null
@@ -1,274 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/app/assets/fonts/Bitter/Bitter-Regular.ttf b/app/assets/fonts/Bitter/Bitter-Regular.ttf
deleted file mode 100644
index 3b66905ad..000000000
Binary files a/app/assets/fonts/Bitter/Bitter-Regular.ttf and /dev/null differ
diff --git a/app/assets/fonts/FontAwesome/fontawesome-webfont.eot b/app/assets/fonts/FontAwesome/fontawesome-webfont.eot
deleted file mode 100755
index 6cfd56609..000000000
Binary files a/app/assets/fonts/FontAwesome/fontawesome-webfont.eot and /dev/null differ
diff --git a/app/assets/fonts/FontAwesome/fontawesome-webfont.svg b/app/assets/fonts/FontAwesome/fontawesome-webfont.svg
deleted file mode 100755
index a9f846950..000000000
--- a/app/assets/fonts/FontAwesome/fontawesome-webfont.svg
+++ /dev/null
@@ -1,504 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/app/assets/fonts/FontAwesome/fontawesome-webfont.ttf b/app/assets/fonts/FontAwesome/fontawesome-webfont.ttf
deleted file mode 100755
index 5cd6cff6d..000000000
Binary files a/app/assets/fonts/FontAwesome/fontawesome-webfont.ttf and /dev/null differ
diff --git a/app/assets/fonts/Open_Sans/opensans-bold-webfont.eot b/app/assets/fonts/Open_Sans/opensans-bold-webfont.eot
deleted file mode 100644
index e23a5d3af..000000000
Binary files a/app/assets/fonts/Open_Sans/opensans-bold-webfont.eot and /dev/null differ
diff --git a/app/assets/fonts/Open_Sans/opensans-bold-webfont.svg b/app/assets/fonts/Open_Sans/opensans-bold-webfont.svg
deleted file mode 100644
index 063afd04f..000000000
--- a/app/assets/fonts/Open_Sans/opensans-bold-webfont.svg
+++ /dev/null
@@ -1,1825 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/app/assets/fonts/Open_Sans/opensans-bold-webfont.ttf b/app/assets/fonts/Open_Sans/opensans-bold-webfont.ttf
deleted file mode 100644
index 711174458..000000000
Binary files a/app/assets/fonts/Open_Sans/opensans-bold-webfont.ttf and /dev/null differ
diff --git a/app/assets/fonts/Open_Sans/opensans-light-webfont.eot b/app/assets/fonts/Open_Sans/opensans-light-webfont.eot
deleted file mode 100644
index 77dc71d6d..000000000
Binary files a/app/assets/fonts/Open_Sans/opensans-light-webfont.eot and /dev/null differ
diff --git a/app/assets/fonts/Open_Sans/opensans-light-webfont.svg b/app/assets/fonts/Open_Sans/opensans-light-webfont.svg
deleted file mode 100644
index 2419d92fb..000000000
--- a/app/assets/fonts/Open_Sans/opensans-light-webfont.svg
+++ /dev/null
@@ -1,1825 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/app/assets/fonts/Open_Sans/opensans-light-webfont.ttf b/app/assets/fonts/Open_Sans/opensans-light-webfont.ttf
deleted file mode 100644
index 209e05248..000000000
Binary files a/app/assets/fonts/Open_Sans/opensans-light-webfont.ttf and /dev/null differ
diff --git a/app/assets/fonts/Open_Sans/opensans-regular-webfont.eot b/app/assets/fonts/Open_Sans/opensans-regular-webfont.eot
deleted file mode 100644
index 17e309450..000000000
Binary files a/app/assets/fonts/Open_Sans/opensans-regular-webfont.eot and /dev/null differ
diff --git a/app/assets/fonts/Open_Sans/opensans-regular-webfont.svg b/app/assets/fonts/Open_Sans/opensans-regular-webfont.svg
deleted file mode 100644
index 800a03a34..000000000
--- a/app/assets/fonts/Open_Sans/opensans-regular-webfont.svg
+++ /dev/null
@@ -1,1825 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/app/assets/fonts/Open_Sans/opensans-regular-webfont.ttf b/app/assets/fonts/Open_Sans/opensans-regular-webfont.ttf
deleted file mode 100644
index c6413c2a7..000000000
Binary files a/app/assets/fonts/Open_Sans/opensans-regular-webfont.ttf and /dev/null differ
diff --git a/app/assets/fonts/Open_Sans_Condensed/opensans-condbold-webfont.eot b/app/assets/fonts/Open_Sans_Condensed/opensans-condbold-webfont.eot
deleted file mode 100644
index 781275130..000000000
Binary files a/app/assets/fonts/Open_Sans_Condensed/opensans-condbold-webfont.eot and /dev/null differ
diff --git a/app/assets/fonts/Open_Sans_Condensed/opensans-condbold-webfont.svg b/app/assets/fonts/Open_Sans_Condensed/opensans-condbold-webfont.svg
deleted file mode 100644
index a65a2fd3d..000000000
--- a/app/assets/fonts/Open_Sans_Condensed/opensans-condbold-webfont.svg
+++ /dev/null
@@ -1,1398 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/app/assets/fonts/Open_Sans_Condensed/opensans-condbold-webfont.ttf b/app/assets/fonts/Open_Sans_Condensed/opensans-condbold-webfont.ttf
deleted file mode 100644
index 384a91c99..000000000
Binary files a/app/assets/fonts/Open_Sans_Condensed/opensans-condbold-webfont.ttf and /dev/null differ
diff --git a/app/assets/fonts/Streamline/streamline-30px.eot b/app/assets/fonts/Streamline/streamline-30px.eot
deleted file mode 100644
index a16a50ce9..000000000
Binary files a/app/assets/fonts/Streamline/streamline-30px.eot and /dev/null differ
diff --git a/app/assets/fonts/Streamline/streamline-30px.svg b/app/assets/fonts/Streamline/streamline-30px.svg
deleted file mode 100644
index d457189c3..000000000
--- a/app/assets/fonts/Streamline/streamline-30px.svg
+++ /dev/null
@@ -1,1652 +0,0 @@
-
-
-
diff --git a/app/assets/fonts/Streamline/streamline-30px.ttf b/app/assets/fonts/Streamline/streamline-30px.ttf
deleted file mode 100644
index c5375dedb..000000000
Binary files a/app/assets/fonts/Streamline/streamline-30px.ttf and /dev/null differ
diff --git a/app/assets/images/favicon.ico b/app/assets/images/favicon.ico
new file mode 100755
index 000000000..24bf09f7b
Binary files /dev/null and b/app/assets/images/favicon.ico differ
diff --git a/app/assets/images/graphics/half-circle-bottom.svg b/app/assets/images/graphics/half-circle-bottom.svg
index 35c349919..89a629e2e 100644
--- a/app/assets/images/graphics/half-circle-bottom.svg
+++ b/app/assets/images/graphics/half-circle-bottom.svg
@@ -1,22 +1 @@
-
-
-
-
+
\ No newline at end of file
diff --git a/app/assets/images/graphics/half-circle-left.svg b/app/assets/images/graphics/half-circle-left.svg
index 99ddd772e..28a1c8023 100644
--- a/app/assets/images/graphics/half-circle-left.svg
+++ b/app/assets/images/graphics/half-circle-left.svg
@@ -1,18 +1 @@
-
-
-
+
\ No newline at end of file
diff --git a/app/assets/images/graphics/half-circle-right.svg b/app/assets/images/graphics/half-circle-right.svg
index 5e5483f91..46d624713 100644
--- a/app/assets/images/graphics/half-circle-right.svg
+++ b/app/assets/images/graphics/half-circle-right.svg
@@ -1,18 +1 @@
-
-
-
+
\ No newline at end of file
diff --git a/app/assets/images/graphics/half-circle-top.svg b/app/assets/images/graphics/half-circle-top.svg
index 4473582a7..b3a7921d3 100644
--- a/app/assets/images/graphics/half-circle-top.svg
+++ b/app/assets/images/graphics/half-circle-top.svg
@@ -1,22 +1 @@
-
-
-
-
+
\ No newline at end of file
diff --git a/app/assets/images/graphics/icon-grip.svg b/app/assets/images/graphics/icon-grip.svg
index 50ac0eafb..53ed6dcde 100644
--- a/app/assets/images/graphics/icon-grip.svg
+++ b/app/assets/images/graphics/icon-grip.svg
@@ -1,15 +1 @@
-
-
-
-
+
\ No newline at end of file
diff --git a/app/assets/images/graphics/one-time.svg b/app/assets/images/graphics/one-time.svg
index 5e2c30334..52e628a4e 100644
--- a/app/assets/images/graphics/one-time.svg
+++ b/app/assets/images/graphics/one-time.svg
@@ -1,14 +1 @@
-
-
-
+
\ No newline at end of file
diff --git a/app/assets/images/graphics/recurring.svg b/app/assets/images/graphics/recurring.svg
index 8185a76f2..e7fc820d1 100644
--- a/app/assets/images/graphics/recurring.svg
+++ b/app/assets/images/graphics/recurring.svg
@@ -1,25 +1 @@
-
-
-
+
\ No newline at end of file
diff --git a/app/assets/images/logos/commitchange-logo-rectangle-color-150.png b/app/assets/images/logos/commitchange-logo-rectangle-color-150.png
new file mode 100644
index 000000000..5c32a2b13
Binary files /dev/null and b/app/assets/images/logos/commitchange-logo-rectangle-color-150.png differ
diff --git a/app/assets/images/logos/commitchange_logo_bug.svg b/app/assets/images/logos/commitchange_logo_bug.svg
new file mode 100644
index 000000000..1b2022495
--- /dev/null
+++ b/app/assets/images/logos/commitchange_logo_bug.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/assets/images/logos/commitchange_logo_full.svg b/app/assets/images/logos/commitchange_logo_full.svg
new file mode 100644
index 000000000..0eae27b89
--- /dev/null
+++ b/app/assets/images/logos/commitchange_logo_full.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/assets/images/logos/houdini_project_border_64.svg b/app/assets/images/logos/houdini_project_border_64.svg
index 106021d0b..6f93ac594 100644
--- a/app/assets/images/logos/houdini_project_border_64.svg
+++ b/app/assets/images/logos/houdini_project_border_64.svg
@@ -1,139 +1 @@
-
-
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/app/assets/images/logos/houdini_project_bug.svg b/app/assets/images/logos/houdini_project_bug.svg
index 6ba6614c8..6ccb503b4 100644
--- a/app/assets/images/logos/houdini_project_bug.svg
+++ b/app/assets/images/logos/houdini_project_bug.svg
@@ -1,11 +1 @@
-
-
-
+
\ No newline at end of file
diff --git a/app/assets/images/logos/houdini_project_full.svg b/app/assets/images/logos/houdini_project_full.svg
index 36c71d971..e99cbe66a 100644
--- a/app/assets/images/logos/houdini_project_full.svg
+++ b/app/assets/images/logos/houdini_project_full.svg
@@ -1,54 +1 @@
-
-
-
+
\ No newline at end of file
diff --git a/app/assets/images/ui_components/close.svg b/app/assets/images/ui_components/close.svg
index 455e7061f..96ed15ca1 100644
--- a/app/assets/images/ui_components/close.svg
+++ b/app/assets/images/ui_components/close.svg
@@ -1,14 +1 @@
-
-
-
-
+
\ No newline at end of file
diff --git a/app/assets/stylesheets/body.css.scss b/app/assets/stylesheets/body.scss
similarity index 100%
rename from app/assets/stylesheets/body.css.scss
rename to app/assets/stylesheets/body.scss
diff --git a/app/assets/stylesheets/boot/editor.css.scss.erb b/app/assets/stylesheets/boot/editor.css.scss.erb
deleted file mode 100644
index bcf1e7c13..000000000
--- a/app/assets/stylesheets/boot/editor.css.scss.erb
+++ /dev/null
@@ -1,3 +0,0 @@
-<% # License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later %>
-@import 'common/vendor/froala_editor';
-@import 'common/vendor/quill.bubble';
diff --git a/app/assets/stylesheets/boot/editor.scss.erb b/app/assets/stylesheets/boot/editor.scss.erb
new file mode 100644
index 000000000..b9828d28c
--- /dev/null
+++ b/app/assets/stylesheets/boot/editor.scss.erb
@@ -0,0 +1,2 @@
+<% # License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later %>
+@import 'common/vendor/froala_editor';
diff --git a/app/assets/stylesheets/boot/font-awesome.css.scss.erb b/app/assets/stylesheets/boot/font-awesome.css.scss.erb
deleted file mode 100644
index 85fbe4974..000000000
--- a/app/assets/stylesheets/boot/font-awesome.css.scss.erb
+++ /dev/null
@@ -1,1568 +0,0 @@
-<% # License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later %>
-/*!
- * Font Awesome 4.1.0 by @davegandy - http://fontawesome.io - @fontawesome
- * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
- */
-
-$path: "<%= asset_path('FontAwesome') %>";
-
-@font-face {
- font-family: 'FontAwesome';
- src: url($path + '/fontawesome-webfont.eot?v=4.1.0');
- src: url($path + '/fontawesome-webfont.eot?#iefix&v=4.1.0') format('embedded-opentype'), url($path + '/fontawesome-webfont.woff?v=4.1.0') format('woff'), url($path + '/fontawesome-webfont.ttf?v=4.1.0') format('truetype'), url($path + '/fontawesome-webfont.svg?v=4.1.0#fontawesomeregular') format('svg');
- font-weight: normal;
- font-style: normal;
-}
-.fa {
- display: inline-block;
- font-family: FontAwesome;
- font-style: normal;
- font-weight: normal;
- line-height: 1;
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
-}
-/* makes the font 33% larger relative to the icon container */
-.fa-lg {
- font-size: 1.33333333em;
- line-height: 0.75em;
- vertical-align: -15%;
-}
-.fa-2x {
- font-size: 2em;
-}
-.fa-3x {
- font-size: 3em;
-}
-.fa-4x {
- font-size: 4em;
-}
-.fa-5x {
- font-size: 5em;
-}
-.fa-fw {
- width: 1.28571429em;
- text-align: center;
-}
-.fa-ul {
- padding-left: 0;
- margin-left: 2.14285714em;
- list-style-type: none;
-}
-.fa-ul > li {
- position: relative;
-}
-.fa-li {
- position: absolute;
- left: -2.14285714em;
- width: 2.14285714em;
- top: 0.14285714em;
- text-align: center;
-}
-.fa-li.fa-lg {
- left: -1.85714286em;
-}
-.fa-border {
- padding: .2em .25em .15em;
- border: solid 0.08em #eeeeee;
- border-radius: .1em;
-}
-.pull-right {
- float: right;
-}
-.pull-left {
- float: left;
-}
-.fa.pull-left {
- margin-right: .3em;
-}
-.fa.pull-right {
- margin-left: .3em;
-}
-.fa-spin {
- -webkit-animation: spin 2s infinite linear;
- -moz-animation: spin 2s infinite linear;
- -o-animation: spin 2s infinite linear;
- animation: spin 2s infinite linear;
-}
-@-moz-keyframes spin {
- 0% {
- -moz-transform: rotate(0deg);
- }
- 100% {
- -moz-transform: rotate(359deg);
- }
-}
-@-webkit-keyframes spin {
- 0% {
- -webkit-transform: rotate(0deg);
- }
- 100% {
- -webkit-transform: rotate(359deg);
- }
-}
-@-o-keyframes spin {
- 0% {
- -o-transform: rotate(0deg);
- }
- 100% {
- -o-transform: rotate(359deg);
- }
-}
-@keyframes spin {
- 0% {
- -webkit-transform: rotate(0deg);
- transform: rotate(0deg);
- }
- 100% {
- -webkit-transform: rotate(359deg);
- transform: rotate(359deg);
- }
-}
-.fa-rotate-90 {
- filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
- -webkit-transform: rotate(90deg);
- -moz-transform: rotate(90deg);
- -ms-transform: rotate(90deg);
- -o-transform: rotate(90deg);
- transform: rotate(90deg);
-}
-.fa-rotate-180 {
- filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
- -webkit-transform: rotate(180deg);
- -moz-transform: rotate(180deg);
- -ms-transform: rotate(180deg);
- -o-transform: rotate(180deg);
- transform: rotate(180deg);
-}
-.fa-rotate-270 {
- filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
- -webkit-transform: rotate(270deg);
- -moz-transform: rotate(270deg);
- -ms-transform: rotate(270deg);
- -o-transform: rotate(270deg);
- transform: rotate(270deg);
-}
-.fa-flip-horizontal {
- filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);
- -webkit-transform: scale(-1, 1);
- -moz-transform: scale(-1, 1);
- -ms-transform: scale(-1, 1);
- -o-transform: scale(-1, 1);
- transform: scale(-1, 1);
-}
-.fa-flip-vertical {
- filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);
- -webkit-transform: scale(1, -1);
- -moz-transform: scale(1, -1);
- -ms-transform: scale(1, -1);
- -o-transform: scale(1, -1);
- transform: scale(1, -1);
-}
-.fa-stack {
- position: relative;
- display: inline-block;
- width: 2em;
- height: 2em;
- line-height: 2em;
- vertical-align: middle;
-}
-.fa-stack-1x,
-.fa-stack-2x {
- position: absolute;
- left: 0;
- width: 100%;
- text-align: center;
-}
-.fa-stack-1x {
- line-height: inherit;
-}
-.fa-stack-2x {
- font-size: 2em;
-}
-.fa-inverse {
- color: #ffffff;
-}
-/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
- readers do not read off random characters that represent icons */
-.fa-glass:before {
- content: "\f000";
-}
-.fa-music:before {
- content: "\f001";
-}
-.fa-search:before {
- content: "\f002";
-}
-.fa-envelope-o:before {
- content: "\f003";
-}
-.fa-heart:before {
- content: "\f004";
-}
-.fa-star:before {
- content: "\f005";
-}
-.fa-star-o:before {
- content: "\f006";
-}
-.fa-user:before {
- content: "\f007";
-}
-.fa-film:before {
- content: "\f008";
-}
-.fa-th-large:before {
- content: "\f009";
-}
-.fa-th:before {
- content: "\f00a";
-}
-.fa-th-list:before {
- content: "\f00b";
-}
-.fa-check:before {
- content: "\f00c";
-}
-.fa-times:before {
- content: "\f00d";
-}
-.fa-search-plus:before {
- content: "\f00e";
-}
-.fa-search-minus:before {
- content: "\f010";
-}
-.fa-power-off:before {
- content: "\f011";
-}
-.fa-signal:before {
- content: "\f012";
-}
-.fa-gear:before,
-.fa-cog:before {
- content: "\f013";
-}
-.fa-trash-o:before {
- content: "\f014";
-}
-.fa-home:before {
- content: "\f015";
-}
-.fa-file-o:before {
- content: "\f016";
-}
-.fa-clock-o:before {
- content: "\f017";
-}
-.fa-road:before {
- content: "\f018";
-}
-.fa-download:before {
- content: "\f019";
-}
-.fa-arrow-circle-o-down:before {
- content: "\f01a";
-}
-.fa-arrow-circle-o-up:before {
- content: "\f01b";
-}
-.fa-inbox:before {
- content: "\f01c";
-}
-.fa-play-circle-o:before {
- content: "\f01d";
-}
-.fa-rotate-right:before,
-.fa-repeat:before {
- content: "\f01e";
-}
-.fa-refresh:before {
- content: "\f021";
-}
-.fa-list-alt:before {
- content: "\f022";
-}
-.fa-lock:before {
- content: "\f023";
-}
-.fa-flag:before {
- content: "\f024";
-}
-.fa-headphones:before {
- content: "\f025";
-}
-.fa-volume-off:before {
- content: "\f026";
-}
-.fa-volume-down:before {
- content: "\f027";
-}
-.fa-volume-up:before {
- content: "\f028";
-}
-.fa-qrcode:before {
- content: "\f029";
-}
-.fa-barcode:before {
- content: "\f02a";
-}
-.fa-tag:before {
- content: "\f02b";
-}
-.fa-tags:before {
- content: "\f02c";
-}
-.fa-book:before {
- content: "\f02d";
-}
-.fa-bookmark:before {
- content: "\f02e";
-}
-.fa-print:before {
- content: "\f02f";
-}
-.fa-camera:before {
- content: "\f030";
-}
-.fa-font:before {
- content: "\f031";
-}
-.fa-bold:before {
- content: "\f032";
-}
-.fa-italic:before {
- content: "\f033";
-}
-.fa-text-height:before {
- content: "\f034";
-}
-.fa-text-width:before {
- content: "\f035";
-}
-.fa-align-left:before {
- content: "\f036";
-}
-.fa-align-center:before {
- content: "\f037";
-}
-.fa-align-right:before {
- content: "\f038";
-}
-.fa-align-justify:before {
- content: "\f039";
-}
-.fa-list:before {
- content: "\f03a";
-}
-.fa-dedent:before,
-.fa-outdent:before {
- content: "\f03b";
-}
-.fa-indent:before {
- content: "\f03c";
-}
-.fa-video-camera:before {
- content: "\f03d";
-}
-.fa-photo:before,
-.fa-image:before,
-.fa-picture-o:before {
- content: "\f03e";
-}
-.fa-pencil:before {
- content: "\f040";
-}
-.fa-map-marker:before {
- content: "\f041";
-}
-.fa-adjust:before {
- content: "\f042";
-}
-.fa-tint:before {
- content: "\f043";
-}
-.fa-edit:before,
-.fa-pencil-square-o:before {
- content: "\f044";
-}
-.fa-share-square-o:before {
- content: "\f045";
-}
-.fa-check-square-o:before {
- content: "\f046";
-}
-.fa-arrows:before {
- content: "\f047";
-}
-.fa-step-backward:before {
- content: "\f048";
-}
-.fa-fast-backward:before {
- content: "\f049";
-}
-.fa-backward:before {
- content: "\f04a";
-}
-.fa-play:before {
- content: "\f04b";
-}
-.fa-pause:before {
- content: "\f04c";
-}
-.fa-stop:before {
- content: "\f04d";
-}
-.fa-forward:before {
- content: "\f04e";
-}
-.fa-fast-forward:before {
- content: "\f050";
-}
-.fa-step-forward:before {
- content: "\f051";
-}
-.fa-eject:before {
- content: "\f052";
-}
-.fa-chevron-left:before {
- content: "\f053";
-}
-.fa-chevron-right:before {
- content: "\f054";
-}
-.fa-plus-circle:before {
- content: "\f055";
-}
-.fa-minus-circle:before {
- content: "\f056";
-}
-.fa-times-circle:before {
- content: "\f057";
-}
-.fa-check-circle:before {
- content: "\f058";
-}
-.fa-question-circle:before {
- content: "\f059";
-}
-.fa-info-circle:before {
- content: "\f05a";
-}
-.fa-crosshairs:before {
- content: "\f05b";
-}
-.fa-times-circle-o:before {
- content: "\f05c";
-}
-.fa-check-circle-o:before {
- content: "\f05d";
-}
-.fa-ban:before {
- content: "\f05e";
-}
-.fa-arrow-left:before {
- content: "\f060";
-}
-.fa-arrow-right:before {
- content: "\f061";
-}
-.fa-arrow-up:before {
- content: "\f062";
-}
-.fa-arrow-down:before {
- content: "\f063";
-}
-.fa-mail-forward:before,
-.fa-share:before {
- content: "\f064";
-}
-.fa-expand:before {
- content: "\f065";
-}
-.fa-compress:before {
- content: "\f066";
-}
-.fa-plus:before {
- content: "\f067";
-}
-.fa-minus:before {
- content: "\f068";
-}
-.fa-asterisk:before {
- content: "\f069";
-}
-.fa-exclamation-circle:before {
- content: "\f06a";
-}
-.fa-gift:before {
- content: "\f06b";
-}
-.fa-leaf:before {
- content: "\f06c";
-}
-.fa-fire:before {
- content: "\f06d";
-}
-.fa-eye:before {
- content: "\f06e";
-}
-.fa-eye-slash:before {
- content: "\f070";
-}
-.fa-warning:before,
-.fa-exclamation-triangle:before {
- content: "\f071";
-}
-.fa-plane:before {
- content: "\f072";
-}
-.fa-calendar:before {
- content: "\f073";
-}
-.fa-random:before {
- content: "\f074";
-}
-.fa-comment:before {
- content: "\f075";
-}
-.fa-magnet:before {
- content: "\f076";
-}
-.fa-chevron-up:before {
- content: "\f077";
-}
-.fa-chevron-down:before {
- content: "\f078";
-}
-.fa-retweet:before {
- content: "\f079";
-}
-.fa-shopping-cart:before {
- content: "\f07a";
-}
-.fa-folder:before {
- content: "\f07b";
-}
-.fa-folder-open:before {
- content: "\f07c";
-}
-.fa-arrows-v:before {
- content: "\f07d";
-}
-.fa-arrows-h:before {
- content: "\f07e";
-}
-.fa-bar-chart-o:before {
- content: "\f080";
-}
-.fa-twitter-square:before {
- content: "\f081";
-}
-.fa-facebook-square:before {
- content: "\f082";
-}
-.fa-camera-retro:before {
- content: "\f083";
-}
-.fa-key:before {
- content: "\f084";
-}
-.fa-gears:before,
-.fa-cogs:before {
- content: "\f085";
-}
-.fa-comments:before {
- content: "\f086";
-}
-.fa-thumbs-o-up:before {
- content: "\f087";
-}
-.fa-thumbs-o-down:before {
- content: "\f088";
-}
-.fa-star-half:before {
- content: "\f089";
-}
-.fa-heart-o:before {
- content: "\f08a";
-}
-.fa-sign-out:before {
- content: "\f08b";
-}
-.fa-linkedin-square:before {
- content: "\f08c";
-}
-.fa-thumb-tack:before {
- content: "\f08d";
-}
-.fa-external-link:before {
- content: "\f08e";
-}
-.fa-sign-in:before {
- content: "\f090";
-}
-.fa-trophy:before {
- content: "\f091";
-}
-.fa-github-square:before {
- content: "\f092";
-}
-.fa-upload:before {
- content: "\f093";
-}
-.fa-lemon-o:before {
- content: "\f094";
-}
-.fa-phone:before {
- content: "\f095";
-}
-.fa-square-o:before {
- content: "\f096";
-}
-.fa-bookmark-o:before {
- content: "\f097";
-}
-.fa-phone-square:before {
- content: "\f098";
-}
-.fa-twitter:before {
- content: "\f099";
-}
-.fa-facebook:before {
- content: "\f09a";
-}
-.fa-github:before {
- content: "\f09b";
-}
-.fa-unlock:before {
- content: "\f09c";
-}
-.fa-credit-card:before {
- content: "\f09d";
-}
-.fa-rss:before {
- content: "\f09e";
-}
-.fa-hdd-o:before {
- content: "\f0a0";
-}
-.fa-bullhorn:before {
- content: "\f0a1";
-}
-.fa-bell:before {
- content: "\f0f3";
-}
-.fa-certificate:before {
- content: "\f0a3";
-}
-.fa-hand-o-right:before {
- content: "\f0a4";
-}
-.fa-hand-o-left:before {
- content: "\f0a5";
-}
-.fa-hand-o-up:before {
- content: "\f0a6";
-}
-.fa-hand-o-down:before {
- content: "\f0a7";
-}
-.fa-arrow-circle-left:before {
- content: "\f0a8";
-}
-.fa-arrow-circle-right:before {
- content: "\f0a9";
-}
-.fa-arrow-circle-up:before {
- content: "\f0aa";
-}
-.fa-arrow-circle-down:before {
- content: "\f0ab";
-}
-.fa-globe:before {
- content: "\f0ac";
-}
-.fa-wrench:before {
- content: "\f0ad";
-}
-.fa-tasks:before {
- content: "\f0ae";
-}
-.fa-filter:before {
- content: "\f0b0";
-}
-.fa-briefcase:before {
- content: "\f0b1";
-}
-.fa-arrows-alt:before {
- content: "\f0b2";
-}
-.fa-group:before,
-.fa-users:before {
- content: "\f0c0";
-}
-.fa-chain:before,
-.fa-link:before {
- content: "\f0c1";
-}
-.fa-cloud:before {
- content: "\f0c2";
-}
-.fa-flask:before {
- content: "\f0c3";
-}
-.fa-cut:before,
-.fa-scissors:before {
- content: "\f0c4";
-}
-.fa-copy:before,
-.fa-files-o:before {
- content: "\f0c5";
-}
-.fa-paperclip:before {
- content: "\f0c6";
-}
-.fa-save:before,
-.fa-floppy-o:before {
- content: "\f0c7";
-}
-.fa-square:before {
- content: "\f0c8";
-}
-.fa-navicon:before,
-.fa-reorder:before,
-.fa-bars:before {
- content: "\f0c9";
-}
-.fa-list-ul:before {
- content: "\f0ca";
-}
-.fa-list-ol:before {
- content: "\f0cb";
-}
-.fa-strikethrough:before {
- content: "\f0cc";
-}
-.fa-underline:before {
- content: "\f0cd";
-}
-.fa-table:before {
- content: "\f0ce";
-}
-.fa-magic:before {
- content: "\f0d0";
-}
-.fa-truck:before {
- content: "\f0d1";
-}
-.fa-pinterest:before {
- content: "\f0d2";
-}
-.fa-pinterest-square:before {
- content: "\f0d3";
-}
-.fa-google-plus-square:before {
- content: "\f0d4";
-}
-.fa-google-plus:before {
- content: "\f0d5";
-}
-.fa-money:before {
- content: "\f0d6";
-}
-.fa-caret-down:before {
- content: "\f0d7";
-}
-.fa-caret-up:before {
- content: "\f0d8";
-}
-.fa-caret-left:before {
- content: "\f0d9";
-}
-.fa-caret-right:before {
- content: "\f0da";
-}
-.fa-columns:before {
- content: "\f0db";
-}
-.fa-unsorted:before,
-.fa-sort:before {
- content: "\f0dc";
-}
-.fa-sort-down:before,
-.fa-sort-desc:before {
- content: "\f0dd";
-}
-.fa-sort-up:before,
-.fa-sort-asc:before {
- content: "\f0de";
-}
-.fa-envelope:before {
- content: "\f0e0";
-}
-.fa-linkedin:before {
- content: "\f0e1";
-}
-.fa-rotate-left:before,
-.fa-undo:before {
- content: "\f0e2";
-}
-.fa-legal:before,
-.fa-gavel:before {
- content: "\f0e3";
-}
-.fa-dashboard:before,
-.fa-tachometer:before {
- content: "\f0e4";
-}
-.fa-comment-o:before {
- content: "\f0e5";
-}
-.fa-comments-o:before {
- content: "\f0e6";
-}
-.fa-flash:before,
-.fa-bolt:before {
- content: "\f0e7";
-}
-.fa-sitemap:before {
- content: "\f0e8";
-}
-.fa-umbrella:before {
- content: "\f0e9";
-}
-.fa-paste:before,
-.fa-clipboard:before {
- content: "\f0ea";
-}
-.fa-lightbulb-o:before {
- content: "\f0eb";
-}
-.fa-exchange:before {
- content: "\f0ec";
-}
-.fa-cloud-download:before {
- content: "\f0ed";
-}
-.fa-cloud-upload:before {
- content: "\f0ee";
-}
-.fa-user-md:before {
- content: "\f0f0";
-}
-.fa-stethoscope:before {
- content: "\f0f1";
-}
-.fa-suitcase:before {
- content: "\f0f2";
-}
-.fa-bell-o:before {
- content: "\f0a2";
-}
-.fa-coffee:before {
- content: "\f0f4";
-}
-.fa-cutlery:before {
- content: "\f0f5";
-}
-.fa-file-text-o:before {
- content: "\f0f6";
-}
-.fa-building-o:before {
- content: "\f0f7";
-}
-.fa-hospital-o:before {
- content: "\f0f8";
-}
-.fa-ambulance:before {
- content: "\f0f9";
-}
-.fa-medkit:before {
- content: "\f0fa";
-}
-.fa-fighter-jet:before {
- content: "\f0fb";
-}
-.fa-beer:before {
- content: "\f0fc";
-}
-.fa-h-square:before {
- content: "\f0fd";
-}
-.fa-plus-square:before {
- content: "\f0fe";
-}
-.fa-angle-double-left:before {
- content: "\f100";
-}
-.fa-angle-double-right:before {
- content: "\f101";
-}
-.fa-angle-double-up:before {
- content: "\f102";
-}
-.fa-angle-double-down:before {
- content: "\f103";
-}
-.fa-angle-left:before {
- content: "\f104";
-}
-.fa-angle-right:before {
- content: "\f105";
-}
-.fa-angle-up:before {
- content: "\f106";
-}
-.fa-angle-down:before {
- content: "\f107";
-}
-.fa-desktop:before {
- content: "\f108";
-}
-.fa-laptop:before {
- content: "\f109";
-}
-.fa-tablet:before {
- content: "\f10a";
-}
-.fa-mobile-phone:before,
-.fa-mobile:before {
- content: "\f10b";
-}
-.fa-circle-o:before {
- content: "\f10c";
-}
-.fa-quote-left:before {
- content: "\f10d";
-}
-.fa-quote-right:before {
- content: "\f10e";
-}
-.fa-spinner:before {
- content: "\f110";
-}
-.fa-circle:before {
- content: "\f111";
-}
-.fa-mail-reply:before,
-.fa-reply:before {
- content: "\f112";
-}
-.fa-github-alt:before {
- content: "\f113";
-}
-.fa-folder-o:before {
- content: "\f114";
-}
-.fa-folder-open-o:before {
- content: "\f115";
-}
-.fa-smile-o:before {
- content: "\f118";
-}
-.fa-frown-o:before {
- content: "\f119";
-}
-.fa-meh-o:before {
- content: "\f11a";
-}
-.fa-gamepad:before {
- content: "\f11b";
-}
-.fa-keyboard-o:before {
- content: "\f11c";
-}
-.fa-flag-o:before {
- content: "\f11d";
-}
-.fa-flag-checkered:before {
- content: "\f11e";
-}
-.fa-terminal:before {
- content: "\f120";
-}
-.fa-code:before {
- content: "\f121";
-}
-.fa-mail-reply-all:before,
-.fa-reply-all:before {
- content: "\f122";
-}
-.fa-star-half-empty:before,
-.fa-star-half-full:before,
-.fa-star-half-o:before {
- content: "\f123";
-}
-.fa-location-arrow:before {
- content: "\f124";
-}
-.fa-crop:before {
- content: "\f125";
-}
-.fa-code-fork:before {
- content: "\f126";
-}
-.fa-unlink:before,
-.fa-chain-broken:before {
- content: "\f127";
-}
-.fa-question:before {
- content: "\f128";
-}
-.fa-info:before {
- content: "\f129";
-}
-.fa-exclamation:before {
- content: "\f12a";
-}
-.fa-superscript:before {
- content: "\f12b";
-}
-.fa-subscript:before {
- content: "\f12c";
-}
-.fa-eraser:before {
- content: "\f12d";
-}
-.fa-puzzle-piece:before {
- content: "\f12e";
-}
-.fa-microphone:before {
- content: "\f130";
-}
-.fa-microphone-slash:before {
- content: "\f131";
-}
-.fa-shield:before {
- content: "\f132";
-}
-.fa-calendar-o:before {
- content: "\f133";
-}
-.fa-fire-extinguisher:before {
- content: "\f134";
-}
-.fa-rocket:before {
- content: "\f135";
-}
-.fa-maxcdn:before {
- content: "\f136";
-}
-.fa-chevron-circle-left:before {
- content: "\f137";
-}
-.fa-chevron-circle-right:before {
- content: "\f138";
-}
-.fa-chevron-circle-up:before {
- content: "\f139";
-}
-.fa-chevron-circle-down:before {
- content: "\f13a";
-}
-.fa-html5:before {
- content: "\f13b";
-}
-.fa-css3:before {
- content: "\f13c";
-}
-.fa-anchor:before {
- content: "\f13d";
-}
-.fa-unlock-alt:before {
- content: "\f13e";
-}
-.fa-bullseye:before {
- content: "\f140";
-}
-.fa-ellipsis-h:before {
- content: "\f141";
-}
-.fa-ellipsis-v:before {
- content: "\f142";
-}
-.fa-rss-square:before {
- content: "\f143";
-}
-.fa-play-circle:before {
- content: "\f144";
-}
-.fa-ticket:before {
- content: "\f145";
-}
-.fa-minus-square:before {
- content: "\f146";
-}
-.fa-minus-square-o:before {
- content: "\f147";
-}
-.fa-level-up:before {
- content: "\f148";
-}
-.fa-level-down:before {
- content: "\f149";
-}
-.fa-check-square:before {
- content: "\f14a";
-}
-.fa-pencil-square:before {
- content: "\f14b";
-}
-.fa-external-link-square:before {
- content: "\f14c";
-}
-.fa-share-square:before {
- content: "\f14d";
-}
-.fa-compass:before {
- content: "\f14e";
-}
-.fa-toggle-down:before,
-.fa-caret-square-o-down:before {
- content: "\f150";
-}
-.fa-toggle-up:before,
-.fa-caret-square-o-up:before {
- content: "\f151";
-}
-.fa-toggle-right:before,
-.fa-caret-square-o-right:before {
- content: "\f152";
-}
-.fa-euro:before,
-.fa-eur:before {
- content: "\f153";
-}
-.fa-gbp:before {
- content: "\f154";
-}
-.fa-dollar:before,
-.fa-usd:before {
- content: "\f155";
-}
-.fa-rupee:before,
-.fa-inr:before {
- content: "\f156";
-}
-.fa-cny:before,
-.fa-rmb:before,
-.fa-yen:before,
-.fa-jpy:before {
- content: "\f157";
-}
-.fa-ruble:before,
-.fa-rouble:before,
-.fa-rub:before {
- content: "\f158";
-}
-.fa-won:before,
-.fa-krw:before {
- content: "\f159";
-}
-.fa-bitcoin:before,
-.fa-btc:before {
- content: "\f15a";
-}
-.fa-file:before {
- content: "\f15b";
-}
-.fa-file-text:before {
- content: "\f15c";
-}
-.fa-sort-alpha-asc:before {
- content: "\f15d";
-}
-.fa-sort-alpha-desc:before {
- content: "\f15e";
-}
-.fa-sort-amount-asc:before {
- content: "\f160";
-}
-.fa-sort-amount-desc:before {
- content: "\f161";
-}
-.fa-sort-numeric-asc:before {
- content: "\f162";
-}
-.fa-sort-numeric-desc:before {
- content: "\f163";
-}
-.fa-thumbs-up:before {
- content: "\f164";
-}
-.fa-thumbs-down:before {
- content: "\f165";
-}
-.fa-youtube-square:before {
- content: "\f166";
-}
-.fa-youtube:before {
- content: "\f167";
-}
-.fa-xing:before {
- content: "\f168";
-}
-.fa-xing-square:before {
- content: "\f169";
-}
-.fa-youtube-play:before {
- content: "\f16a";
-}
-.fa-dropbox:before {
- content: "\f16b";
-}
-.fa-stack-overflow:before {
- content: "\f16c";
-}
-.fa-instagram:before {
- content: "\f16d";
-}
-.fa-flickr:before {
- content: "\f16e";
-}
-.fa-adn:before {
- content: "\f170";
-}
-.fa-bitbucket:before {
- content: "\f171";
-}
-.fa-bitbucket-square:before {
- content: "\f172";
-}
-.fa-tumblr:before {
- content: "\f173";
-}
-.fa-tumblr-square:before {
- content: "\f174";
-}
-.fa-long-arrow-down:before {
- content: "\f175";
-}
-.fa-long-arrow-up:before {
- content: "\f176";
-}
-.fa-long-arrow-left:before {
- content: "\f177";
-}
-.fa-long-arrow-right:before {
- content: "\f178";
-}
-.fa-apple:before {
- content: "\f179";
-}
-.fa-windows:before {
- content: "\f17a";
-}
-.fa-android:before {
- content: "\f17b";
-}
-.fa-linux:before {
- content: "\f17c";
-}
-.fa-dribbble:before {
- content: "\f17d";
-}
-.fa-skype:before {
- content: "\f17e";
-}
-.fa-foursquare:before {
- content: "\f180";
-}
-.fa-trello:before {
- content: "\f181";
-}
-.fa-female:before {
- content: "\f182";
-}
-.fa-male:before {
- content: "\f183";
-}
-.fa-gittip:before {
- content: "\f184";
-}
-.fa-sun-o:before {
- content: "\f185";
-}
-.fa-moon-o:before {
- content: "\f186";
-}
-.fa-archive:before {
- content: "\f187";
-}
-.fa-bug:before {
- content: "\f188";
-}
-.fa-vk:before {
- content: "\f189";
-}
-.fa-weibo:before {
- content: "\f18a";
-}
-.fa-renren:before {
- content: "\f18b";
-}
-.fa-pagelines:before {
- content: "\f18c";
-}
-.fa-stack-exchange:before {
- content: "\f18d";
-}
-.fa-arrow-circle-o-right:before {
- content: "\f18e";
-}
-.fa-arrow-circle-o-left:before {
- content: "\f190";
-}
-.fa-toggle-left:before,
-.fa-caret-square-o-left:before {
- content: "\f191";
-}
-.fa-dot-circle-o:before {
- content: "\f192";
-}
-.fa-wheelchair:before {
- content: "\f193";
-}
-.fa-vimeo-square:before {
- content: "\f194";
-}
-.fa-turkish-lira:before,
-.fa-try:before {
- content: "\f195";
-}
-.fa-plus-square-o:before {
- content: "\f196";
-}
-.fa-space-shuttle:before {
- content: "\f197";
-}
-.fa-slack:before {
- content: "\f198";
-}
-.fa-envelope-square:before {
- content: "\f199";
-}
-.fa-wordpress:before {
- content: "\f19a";
-}
-.fa-openid:before {
- content: "\f19b";
-}
-.fa-institution:before,
-.fa-bank:before,
-.fa-university:before {
- content: "\f19c";
-}
-.fa-mortar-board:before,
-.fa-graduation-cap:before {
- content: "\f19d";
-}
-.fa-yahoo:before {
- content: "\f19e";
-}
-.fa-google:before {
- content: "\f1a0";
-}
-.fa-reddit:before {
- content: "\f1a1";
-}
-.fa-reddit-square:before {
- content: "\f1a2";
-}
-.fa-stumbleupon-circle:before {
- content: "\f1a3";
-}
-.fa-stumbleupon:before {
- content: "\f1a4";
-}
-.fa-delicious:before {
- content: "\f1a5";
-}
-.fa-digg:before {
- content: "\f1a6";
-}
-.fa-pied-piper-square:before,
-.fa-pied-piper:before {
- content: "\f1a7";
-}
-.fa-pied-piper-alt:before {
- content: "\f1a8";
-}
-.fa-drupal:before {
- content: "\f1a9";
-}
-.fa-joomla:before {
- content: "\f1aa";
-}
-.fa-language:before {
- content: "\f1ab";
-}
-.fa-fax:before {
- content: "\f1ac";
-}
-.fa-building:before {
- content: "\f1ad";
-}
-.fa-child:before {
- content: "\f1ae";
-}
-.fa-paw:before {
- content: "\f1b0";
-}
-.fa-spoon:before {
- content: "\f1b1";
-}
-.fa-cube:before {
- content: "\f1b2";
-}
-.fa-cubes:before {
- content: "\f1b3";
-}
-.fa-behance:before {
- content: "\f1b4";
-}
-.fa-behance-square:before {
- content: "\f1b5";
-}
-.fa-steam:before {
- content: "\f1b6";
-}
-.fa-steam-square:before {
- content: "\f1b7";
-}
-.fa-recycle:before {
- content: "\f1b8";
-}
-.fa-automobile:before,
-.fa-car:before {
- content: "\f1b9";
-}
-.fa-cab:before,
-.fa-taxi:before {
- content: "\f1ba";
-}
-.fa-tree:before {
- content: "\f1bb";
-}
-.fa-spotify:before {
- content: "\f1bc";
-}
-.fa-deviantart:before {
- content: "\f1bd";
-}
-.fa-soundcloud:before {
- content: "\f1be";
-}
-.fa-database:before {
- content: "\f1c0";
-}
-.fa-file-pdf-o:before {
- content: "\f1c1";
-}
-.fa-file-word-o:before {
- content: "\f1c2";
-}
-.fa-file-excel-o:before {
- content: "\f1c3";
-}
-.fa-file-powerpoint-o:before {
- content: "\f1c4";
-}
-.fa-file-photo-o:before,
-.fa-file-picture-o:before,
-.fa-file-image-o:before {
- content: "\f1c5";
-}
-.fa-file-zip-o:before,
-.fa-file-archive-o:before {
- content: "\f1c6";
-}
-.fa-file-sound-o:before,
-.fa-file-audio-o:before {
- content: "\f1c7";
-}
-.fa-file-movie-o:before,
-.fa-file-video-o:before {
- content: "\f1c8";
-}
-.fa-file-code-o:before {
- content: "\f1c9";
-}
-.fa-vine:before {
- content: "\f1ca";
-}
-.fa-codepen:before {
- content: "\f1cb";
-}
-.fa-jsfiddle:before {
- content: "\f1cc";
-}
-.fa-life-bouy:before,
-.fa-life-saver:before,
-.fa-support:before,
-.fa-life-ring:before {
- content: "\f1cd";
-}
-.fa-circle-o-notch:before {
- content: "\f1ce";
-}
-.fa-ra:before,
-.fa-rebel:before {
- content: "\f1d0";
-}
-.fa-ge:before,
-.fa-empire:before {
- content: "\f1d1";
-}
-.fa-git-square:before {
- content: "\f1d2";
-}
-.fa-git:before {
- content: "\f1d3";
-}
-.fa-hacker-news:before {
- content: "\f1d4";
-}
-.fa-tencent-weibo:before {
- content: "\f1d5";
-}
-.fa-qq:before {
- content: "\f1d6";
-}
-.fa-wechat:before,
-.fa-weixin:before {
- content: "\f1d7";
-}
-.fa-send:before,
-.fa-paper-plane:before {
- content: "\f1d8";
-}
-.fa-send-o:before,
-.fa-paper-plane-o:before {
- content: "\f1d9";
-}
-.fa-history:before {
- content: "\f1da";
-}
-.fa-circle-thin:before {
- content: "\f1db";
-}
-.fa-header:before {
- content: "\f1dc";
-}
-.fa-paragraph:before {
- content: "\f1dd";
-}
-.fa-sliders:before {
- content: "\f1de";
-}
-.fa-share-alt:before {
- content: "\f1e0";
-}
-.fa-share-alt-square:before {
- content: "\f1e1";
-}
-.fa-bomb:before {
- content: "\f1e2";
-}
diff --git a/app/assets/stylesheets/boot/font-awesome.scss.erb b/app/assets/stylesheets/boot/font-awesome.scss.erb
new file mode 100644
index 000000000..dee65784c
--- /dev/null
+++ b/app/assets/stylesheets/boot/font-awesome.scss.erb
@@ -0,0 +1,1544 @@
+<% # License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later %>
+/*!
+ * Font Awesome 4.1.0 by @davegandy - http://fontawesome.io - @fontawesome
+ * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
+ */
+
+$path: "/assets/FontAwesome";
+
+@font-face {
+ font-family: 'FontAwesome';
+ src: url('<%= asset_path("FontAwesome/fontawesome-webfont.woff") %>');
+ font-weight: normal;
+ font-style: normal;
+}
+.fa {
+ display: inline-block;
+ font-family: FontAwesome;
+ font-style: normal;
+ font-weight: normal;
+ line-height: 1;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+/* makes the font 33% larger relative to the icon container */
+.fa-lg {
+ font-size: 1.33333333em;
+ line-height: 0.75em;
+ vertical-align: -15%;
+}
+.fa-2x {
+ font-size: 2em;
+}
+.fa-3x {
+ font-size: 3em;
+}
+.fa-4x {
+ font-size: 4em;
+}
+.fa-5x {
+ font-size: 5em;
+}
+.fa-fw {
+ width: 1.28571429em;
+ text-align: center;
+}
+.fa-ul {
+ padding-left: 0;
+ margin-left: 2.14285714em;
+ list-style-type: none;
+}
+.fa-ul > li {
+ position: relative;
+}
+.fa-li {
+ position: absolute;
+ left: -2.14285714em;
+ width: 2.14285714em;
+ top: 0.14285714em;
+ text-align: center;
+}
+.fa-li.fa-lg {
+ left: -1.85714286em;
+}
+.fa-border {
+ padding: .2em .25em .15em;
+ border: solid 0.08em #eeeeee;
+ border-radius: .1em;
+}
+.pull-right {
+ float: right;
+}
+.pull-left {
+ float: left;
+}
+.fa.pull-left {
+ margin-right: .3em;
+}
+.fa.pull-right {
+ margin-left: .3em;
+}
+.fa-spin {
+ -webkit-animation: spin 2s infinite linear;
+ -moz-animation: spin 2s infinite linear;
+ -o-animation: spin 2s infinite linear;
+ animation: spin 2s infinite linear;
+}
+
+@keyframes spin {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+ 100% {
+ -webkit-transform: rotate(359deg);
+ transform: rotate(359deg);
+ }
+}
+.fa-rotate-90 {
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
+ -webkit-transform: rotate(90deg);
+ -moz-transform: rotate(90deg);
+ -ms-transform: rotate(90deg);
+ -o-transform: rotate(90deg);
+ transform: rotate(90deg);
+}
+.fa-rotate-180 {
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
+ -webkit-transform: rotate(180deg);
+ -moz-transform: rotate(180deg);
+ -ms-transform: rotate(180deg);
+ -o-transform: rotate(180deg);
+ transform: rotate(180deg);
+}
+.fa-rotate-270 {
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
+ -webkit-transform: rotate(270deg);
+ -moz-transform: rotate(270deg);
+ -ms-transform: rotate(270deg);
+ -o-transform: rotate(270deg);
+ transform: rotate(270deg);
+}
+.fa-flip-horizontal {
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);
+ -webkit-transform: scale(-1, 1);
+ -moz-transform: scale(-1, 1);
+ -ms-transform: scale(-1, 1);
+ -o-transform: scale(-1, 1);
+ transform: scale(-1, 1);
+}
+.fa-flip-vertical {
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);
+ -webkit-transform: scale(1, -1);
+ -moz-transform: scale(1, -1);
+ -ms-transform: scale(1, -1);
+ -o-transform: scale(1, -1);
+ transform: scale(1, -1);
+}
+.fa-stack {
+ position: relative;
+ display: inline-block;
+ width: 2em;
+ height: 2em;
+ line-height: 2em;
+ vertical-align: middle;
+}
+.fa-stack-1x,
+.fa-stack-2x {
+ position: absolute;
+ left: 0;
+ width: 100%;
+ text-align: center;
+}
+.fa-stack-1x {
+ line-height: inherit;
+}
+.fa-stack-2x {
+ font-size: 2em;
+}
+.fa-inverse {
+ color: #ffffff;
+}
+/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
+ readers do not read off random characters that represent icons */
+.fa-glass:before {
+ content: "\f000";
+}
+.fa-music:before {
+ content: "\f001";
+}
+.fa-search:before {
+ content: "\f002";
+}
+.fa-envelope-o:before {
+ content: "\f003";
+}
+.fa-heart:before {
+ content: "\f004";
+}
+.fa-star:before {
+ content: "\f005";
+}
+.fa-star-o:before {
+ content: "\f006";
+}
+.fa-user:before {
+ content: "\f007";
+}
+.fa-film:before {
+ content: "\f008";
+}
+.fa-th-large:before {
+ content: "\f009";
+}
+.fa-th:before {
+ content: "\f00a";
+}
+.fa-th-list:before {
+ content: "\f00b";
+}
+.fa-check:before {
+ content: "\f00c";
+}
+.fa-times:before {
+ content: "\f00d";
+}
+.fa-search-plus:before {
+ content: "\f00e";
+}
+.fa-search-minus:before {
+ content: "\f010";
+}
+.fa-power-off:before {
+ content: "\f011";
+}
+.fa-signal:before {
+ content: "\f012";
+}
+.fa-gear:before,
+.fa-cog:before {
+ content: "\f013";
+}
+.fa-trash-o:before {
+ content: "\f014";
+}
+.fa-home:before {
+ content: "\f015";
+}
+.fa-file-o:before {
+ content: "\f016";
+}
+.fa-clock-o:before {
+ content: "\f017";
+}
+.fa-road:before {
+ content: "\f018";
+}
+.fa-download:before {
+ content: "\f019";
+}
+.fa-arrow-circle-o-down:before {
+ content: "\f01a";
+}
+.fa-arrow-circle-o-up:before {
+ content: "\f01b";
+}
+.fa-inbox:before {
+ content: "\f01c";
+}
+.fa-play-circle-o:before {
+ content: "\f01d";
+}
+.fa-rotate-right:before,
+.fa-repeat:before {
+ content: "\f01e";
+}
+.fa-refresh:before {
+ content: "\f021";
+}
+.fa-list-alt:before {
+ content: "\f022";
+}
+.fa-lock:before {
+ content: "\f023";
+}
+.fa-flag:before {
+ content: "\f024";
+}
+.fa-headphones:before {
+ content: "\f025";
+}
+.fa-volume-off:before {
+ content: "\f026";
+}
+.fa-volume-down:before {
+ content: "\f027";
+}
+.fa-volume-up:before {
+ content: "\f028";
+}
+.fa-qrcode:before {
+ content: "\f029";
+}
+.fa-barcode:before {
+ content: "\f02a";
+}
+.fa-tag:before {
+ content: "\f02b";
+}
+.fa-tags:before {
+ content: "\f02c";
+}
+.fa-book:before {
+ content: "\f02d";
+}
+.fa-bookmark:before {
+ content: "\f02e";
+}
+.fa-print:before {
+ content: "\f02f";
+}
+.fa-camera:before {
+ content: "\f030";
+}
+.fa-font:before {
+ content: "\f031";
+}
+.fa-bold:before {
+ content: "\f032";
+}
+.fa-italic:before {
+ content: "\f033";
+}
+.fa-text-height:before {
+ content: "\f034";
+}
+.fa-text-width:before {
+ content: "\f035";
+}
+.fa-align-left:before {
+ content: "\f036";
+}
+.fa-align-center:before {
+ content: "\f037";
+}
+.fa-align-right:before {
+ content: "\f038";
+}
+.fa-align-justify:before {
+ content: "\f039";
+}
+.fa-list:before {
+ content: "\f03a";
+}
+.fa-dedent:before,
+.fa-outdent:before {
+ content: "\f03b";
+}
+.fa-indent:before {
+ content: "\f03c";
+}
+.fa-video-camera:before {
+ content: "\f03d";
+}
+.fa-photo:before,
+.fa-image:before,
+.fa-picture-o:before {
+ content: "\f03e";
+}
+.fa-pencil:before {
+ content: "\f040";
+}
+.fa-map-marker:before {
+ content: "\f041";
+}
+.fa-adjust:before {
+ content: "\f042";
+}
+.fa-tint:before {
+ content: "\f043";
+}
+.fa-edit:before,
+.fa-pencil-square-o:before {
+ content: "\f044";
+}
+.fa-share-square-o:before {
+ content: "\f045";
+}
+.fa-check-square-o:before {
+ content: "\f046";
+}
+.fa-arrows:before {
+ content: "\f047";
+}
+.fa-step-backward:before {
+ content: "\f048";
+}
+.fa-fast-backward:before {
+ content: "\f049";
+}
+.fa-backward:before {
+ content: "\f04a";
+}
+.fa-play:before {
+ content: "\f04b";
+}
+.fa-pause:before {
+ content: "\f04c";
+}
+.fa-stop:before {
+ content: "\f04d";
+}
+.fa-forward:before {
+ content: "\f04e";
+}
+.fa-fast-forward:before {
+ content: "\f050";
+}
+.fa-step-forward:before {
+ content: "\f051";
+}
+.fa-eject:before {
+ content: "\f052";
+}
+.fa-chevron-left:before {
+ content: "\f053";
+}
+.fa-chevron-right:before {
+ content: "\f054";
+}
+.fa-plus-circle:before {
+ content: "\f055";
+}
+.fa-minus-circle:before {
+ content: "\f056";
+}
+.fa-times-circle:before {
+ content: "\f057";
+}
+.fa-check-circle:before {
+ content: "\f058";
+}
+.fa-question-circle:before {
+ content: "\f059";
+}
+.fa-info-circle:before {
+ content: "\f05a";
+}
+.fa-crosshairs:before {
+ content: "\f05b";
+}
+.fa-times-circle-o:before {
+ content: "\f05c";
+}
+.fa-check-circle-o:before {
+ content: "\f05d";
+}
+.fa-ban:before {
+ content: "\f05e";
+}
+.fa-arrow-left:before {
+ content: "\f060";
+}
+.fa-arrow-right:before {
+ content: "\f061";
+}
+.fa-arrow-up:before {
+ content: "\f062";
+}
+.fa-arrow-down:before {
+ content: "\f063";
+}
+.fa-mail-forward:before,
+.fa-share:before {
+ content: "\f064";
+}
+.fa-expand:before {
+ content: "\f065";
+}
+.fa-compress:before {
+ content: "\f066";
+}
+.fa-plus:before {
+ content: "\f067";
+}
+.fa-minus:before {
+ content: "\f068";
+}
+.fa-asterisk:before {
+ content: "\f069";
+}
+.fa-exclamation-circle:before {
+ content: "\f06a";
+}
+.fa-gift:before {
+ content: "\f06b";
+}
+.fa-leaf:before {
+ content: "\f06c";
+}
+.fa-fire:before {
+ content: "\f06d";
+}
+.fa-eye:before {
+ content: "\f06e";
+}
+.fa-eye-slash:before {
+ content: "\f070";
+}
+.fa-warning:before,
+.fa-exclamation-triangle:before {
+ content: "\f071";
+}
+.fa-plane:before {
+ content: "\f072";
+}
+.fa-calendar:before {
+ content: "\f073";
+}
+.fa-random:before {
+ content: "\f074";
+}
+.fa-comment:before {
+ content: "\f075";
+}
+.fa-magnet:before {
+ content: "\f076";
+}
+.fa-chevron-up:before {
+ content: "\f077";
+}
+.fa-chevron-down:before {
+ content: "\f078";
+}
+.fa-retweet:before {
+ content: "\f079";
+}
+.fa-shopping-cart:before {
+ content: "\f07a";
+}
+.fa-folder:before {
+ content: "\f07b";
+}
+.fa-folder-open:before {
+ content: "\f07c";
+}
+.fa-arrows-v:before {
+ content: "\f07d";
+}
+.fa-arrows-h:before {
+ content: "\f07e";
+}
+.fa-bar-chart-o:before {
+ content: "\f080";
+}
+.fa-twitter-square:before {
+ content: "\f081";
+}
+.fa-facebook-square:before {
+ content: "\f082";
+}
+.fa-camera-retro:before {
+ content: "\f083";
+}
+.fa-key:before {
+ content: "\f084";
+}
+.fa-gears:before,
+.fa-cogs:before {
+ content: "\f085";
+}
+.fa-comments:before {
+ content: "\f086";
+}
+.fa-thumbs-o-up:before {
+ content: "\f087";
+}
+.fa-thumbs-o-down:before {
+ content: "\f088";
+}
+.fa-star-half:before {
+ content: "\f089";
+}
+.fa-heart-o:before {
+ content: "\f08a";
+}
+.fa-sign-out:before {
+ content: "\f08b";
+}
+.fa-linkedin-square:before {
+ content: "\f08c";
+}
+.fa-thumb-tack:before {
+ content: "\f08d";
+}
+.fa-external-link:before {
+ content: "\f08e";
+}
+.fa-sign-in:before {
+ content: "\f090";
+}
+.fa-trophy:before {
+ content: "\f091";
+}
+.fa-github-square:before {
+ content: "\f092";
+}
+.fa-upload:before {
+ content: "\f093";
+}
+.fa-lemon-o:before {
+ content: "\f094";
+}
+.fa-phone:before {
+ content: "\f095";
+}
+.fa-square-o:before {
+ content: "\f096";
+}
+.fa-bookmark-o:before {
+ content: "\f097";
+}
+.fa-phone-square:before {
+ content: "\f098";
+}
+.fa-twitter:before {
+ content: "\f099";
+}
+.fa-facebook:before {
+ content: "\f09a";
+}
+.fa-github:before {
+ content: "\f09b";
+}
+.fa-unlock:before {
+ content: "\f09c";
+}
+.fa-credit-card:before {
+ content: "\f09d";
+}
+.fa-rss:before {
+ content: "\f09e";
+}
+.fa-hdd-o:before {
+ content: "\f0a0";
+}
+.fa-bullhorn:before {
+ content: "\f0a1";
+}
+.fa-bell:before {
+ content: "\f0f3";
+}
+.fa-certificate:before {
+ content: "\f0a3";
+}
+.fa-hand-o-right:before {
+ content: "\f0a4";
+}
+.fa-hand-o-left:before {
+ content: "\f0a5";
+}
+.fa-hand-o-up:before {
+ content: "\f0a6";
+}
+.fa-hand-o-down:before {
+ content: "\f0a7";
+}
+.fa-arrow-circle-left:before {
+ content: "\f0a8";
+}
+.fa-arrow-circle-right:before {
+ content: "\f0a9";
+}
+.fa-arrow-circle-up:before {
+ content: "\f0aa";
+}
+.fa-arrow-circle-down:before {
+ content: "\f0ab";
+}
+.fa-globe:before {
+ content: "\f0ac";
+}
+.fa-wrench:before {
+ content: "\f0ad";
+}
+.fa-tasks:before {
+ content: "\f0ae";
+}
+.fa-filter:before {
+ content: "\f0b0";
+}
+.fa-briefcase:before {
+ content: "\f0b1";
+}
+.fa-arrows-alt:before {
+ content: "\f0b2";
+}
+.fa-group:before,
+.fa-users:before {
+ content: "\f0c0";
+}
+.fa-chain:before,
+.fa-link:before {
+ content: "\f0c1";
+}
+.fa-cloud:before {
+ content: "\f0c2";
+}
+.fa-flask:before {
+ content: "\f0c3";
+}
+.fa-cut:before,
+.fa-scissors:before {
+ content: "\f0c4";
+}
+.fa-copy:before,
+.fa-files-o:before {
+ content: "\f0c5";
+}
+.fa-paperclip:before {
+ content: "\f0c6";
+}
+.fa-save:before,
+.fa-floppy-o:before {
+ content: "\f0c7";
+}
+.fa-square:before {
+ content: "\f0c8";
+}
+.fa-navicon:before,
+.fa-reorder:before,
+.fa-bars:before {
+ content: "\f0c9";
+}
+.fa-list-ul:before {
+ content: "\f0ca";
+}
+.fa-list-ol:before {
+ content: "\f0cb";
+}
+.fa-strikethrough:before {
+ content: "\f0cc";
+}
+.fa-underline:before {
+ content: "\f0cd";
+}
+.fa-table:before {
+ content: "\f0ce";
+}
+.fa-magic:before {
+ content: "\f0d0";
+}
+.fa-truck:before {
+ content: "\f0d1";
+}
+.fa-pinterest:before {
+ content: "\f0d2";
+}
+.fa-pinterest-square:before {
+ content: "\f0d3";
+}
+.fa-google-plus-square:before {
+ content: "\f0d4";
+}
+.fa-google-plus:before {
+ content: "\f0d5";
+}
+.fa-money:before {
+ content: "\f0d6";
+}
+.fa-caret-down:before {
+ content: "\f0d7";
+}
+.fa-caret-up:before {
+ content: "\f0d8";
+}
+.fa-caret-left:before {
+ content: "\f0d9";
+}
+.fa-caret-right:before {
+ content: "\f0da";
+}
+.fa-columns:before {
+ content: "\f0db";
+}
+.fa-unsorted:before,
+.fa-sort:before {
+ content: "\f0dc";
+}
+.fa-sort-down:before,
+.fa-sort-desc:before {
+ content: "\f0dd";
+}
+.fa-sort-up:before,
+.fa-sort-asc:before {
+ content: "\f0de";
+}
+.fa-envelope:before {
+ content: "\f0e0";
+}
+.fa-linkedin:before {
+ content: "\f0e1";
+}
+.fa-rotate-left:before,
+.fa-undo:before {
+ content: "\f0e2";
+}
+.fa-legal:before,
+.fa-gavel:before {
+ content: "\f0e3";
+}
+.fa-dashboard:before,
+.fa-tachometer:before {
+ content: "\f0e4";
+}
+.fa-comment-o:before {
+ content: "\f0e5";
+}
+.fa-comments-o:before {
+ content: "\f0e6";
+}
+.fa-flash:before,
+.fa-bolt:before {
+ content: "\f0e7";
+}
+.fa-sitemap:before {
+ content: "\f0e8";
+}
+.fa-umbrella:before {
+ content: "\f0e9";
+}
+.fa-paste:before,
+.fa-clipboard:before {
+ content: "\f0ea";
+}
+.fa-lightbulb-o:before {
+ content: "\f0eb";
+}
+.fa-exchange:before {
+ content: "\f0ec";
+}
+.fa-cloud-download:before {
+ content: "\f0ed";
+}
+.fa-cloud-upload:before {
+ content: "\f0ee";
+}
+.fa-user-md:before {
+ content: "\f0f0";
+}
+.fa-stethoscope:before {
+ content: "\f0f1";
+}
+.fa-suitcase:before {
+ content: "\f0f2";
+}
+.fa-bell-o:before {
+ content: "\f0a2";
+}
+.fa-coffee:before {
+ content: "\f0f4";
+}
+.fa-cutlery:before {
+ content: "\f0f5";
+}
+.fa-file-text-o:before {
+ content: "\f0f6";
+}
+.fa-building-o:before {
+ content: "\f0f7";
+}
+.fa-hospital-o:before {
+ content: "\f0f8";
+}
+.fa-ambulance:before {
+ content: "\f0f9";
+}
+.fa-medkit:before {
+ content: "\f0fa";
+}
+.fa-fighter-jet:before {
+ content: "\f0fb";
+}
+.fa-beer:before {
+ content: "\f0fc";
+}
+.fa-h-square:before {
+ content: "\f0fd";
+}
+.fa-plus-square:before {
+ content: "\f0fe";
+}
+.fa-angle-double-left:before {
+ content: "\f100";
+}
+.fa-angle-double-right:before {
+ content: "\f101";
+}
+.fa-angle-double-up:before {
+ content: "\f102";
+}
+.fa-angle-double-down:before {
+ content: "\f103";
+}
+.fa-angle-left:before {
+ content: "\f104";
+}
+.fa-angle-right:before {
+ content: "\f105";
+}
+.fa-angle-up:before {
+ content: "\f106";
+}
+.fa-angle-down:before {
+ content: "\f107";
+}
+.fa-desktop:before {
+ content: "\f108";
+}
+.fa-laptop:before {
+ content: "\f109";
+}
+.fa-tablet:before {
+ content: "\f10a";
+}
+.fa-mobile-phone:before,
+.fa-mobile:before {
+ content: "\f10b";
+}
+.fa-circle-o:before {
+ content: "\f10c";
+}
+.fa-quote-left:before {
+ content: "\f10d";
+}
+.fa-quote-right:before {
+ content: "\f10e";
+}
+.fa-spinner:before {
+ content: "\f110";
+}
+.fa-circle:before {
+ content: "\f111";
+}
+.fa-mail-reply:before,
+.fa-reply:before {
+ content: "\f112";
+}
+.fa-github-alt:before {
+ content: "\f113";
+}
+.fa-folder-o:before {
+ content: "\f114";
+}
+.fa-folder-open-o:before {
+ content: "\f115";
+}
+.fa-smile-o:before {
+ content: "\f118";
+}
+.fa-frown-o:before {
+ content: "\f119";
+}
+.fa-meh-o:before {
+ content: "\f11a";
+}
+.fa-gamepad:before {
+ content: "\f11b";
+}
+.fa-keyboard-o:before {
+ content: "\f11c";
+}
+.fa-flag-o:before {
+ content: "\f11d";
+}
+.fa-flag-checkered:before {
+ content: "\f11e";
+}
+.fa-terminal:before {
+ content: "\f120";
+}
+.fa-code:before {
+ content: "\f121";
+}
+.fa-mail-reply-all:before,
+.fa-reply-all:before {
+ content: "\f122";
+}
+.fa-star-half-empty:before,
+.fa-star-half-full:before,
+.fa-star-half-o:before {
+ content: "\f123";
+}
+.fa-location-arrow:before {
+ content: "\f124";
+}
+.fa-crop:before {
+ content: "\f125";
+}
+.fa-code-fork:before {
+ content: "\f126";
+}
+.fa-unlink:before,
+.fa-chain-broken:before {
+ content: "\f127";
+}
+.fa-question:before {
+ content: "\f128";
+}
+.fa-info:before {
+ content: "\f129";
+}
+.fa-exclamation:before {
+ content: "\f12a";
+}
+.fa-superscript:before {
+ content: "\f12b";
+}
+.fa-subscript:before {
+ content: "\f12c";
+}
+.fa-eraser:before {
+ content: "\f12d";
+}
+.fa-puzzle-piece:before {
+ content: "\f12e";
+}
+.fa-microphone:before {
+ content: "\f130";
+}
+.fa-microphone-slash:before {
+ content: "\f131";
+}
+.fa-shield:before {
+ content: "\f132";
+}
+.fa-calendar-o:before {
+ content: "\f133";
+}
+.fa-fire-extinguisher:before {
+ content: "\f134";
+}
+.fa-rocket:before {
+ content: "\f135";
+}
+.fa-maxcdn:before {
+ content: "\f136";
+}
+.fa-chevron-circle-left:before {
+ content: "\f137";
+}
+.fa-chevron-circle-right:before {
+ content: "\f138";
+}
+.fa-chevron-circle-up:before {
+ content: "\f139";
+}
+.fa-chevron-circle-down:before {
+ content: "\f13a";
+}
+.fa-html5:before {
+ content: "\f13b";
+}
+.fa-css3:before {
+ content: "\f13c";
+}
+.fa-anchor:before {
+ content: "\f13d";
+}
+.fa-unlock-alt:before {
+ content: "\f13e";
+}
+.fa-bullseye:before {
+ content: "\f140";
+}
+.fa-ellipsis-h:before {
+ content: "\f141";
+}
+.fa-ellipsis-v:before {
+ content: "\f142";
+}
+.fa-rss-square:before {
+ content: "\f143";
+}
+.fa-play-circle:before {
+ content: "\f144";
+}
+.fa-ticket:before {
+ content: "\f145";
+}
+.fa-minus-square:before {
+ content: "\f146";
+}
+.fa-minus-square-o:before {
+ content: "\f147";
+}
+.fa-level-up:before {
+ content: "\f148";
+}
+.fa-level-down:before {
+ content: "\f149";
+}
+.fa-check-square:before {
+ content: "\f14a";
+}
+.fa-pencil-square:before {
+ content: "\f14b";
+}
+.fa-external-link-square:before {
+ content: "\f14c";
+}
+.fa-share-square:before {
+ content: "\f14d";
+}
+.fa-compass:before {
+ content: "\f14e";
+}
+.fa-toggle-down:before,
+.fa-caret-square-o-down:before {
+ content: "\f150";
+}
+.fa-toggle-up:before,
+.fa-caret-square-o-up:before {
+ content: "\f151";
+}
+.fa-toggle-right:before,
+.fa-caret-square-o-right:before {
+ content: "\f152";
+}
+.fa-euro:before,
+.fa-eur:before {
+ content: "\f153";
+}
+.fa-gbp:before {
+ content: "\f154";
+}
+.fa-dollar:before,
+.fa-usd:before {
+ content: "\f155";
+}
+.fa-rupee:before,
+.fa-inr:before {
+ content: "\f156";
+}
+.fa-cny:before,
+.fa-rmb:before,
+.fa-yen:before,
+.fa-jpy:before {
+ content: "\f157";
+}
+.fa-ruble:before,
+.fa-rouble:before,
+.fa-rub:before {
+ content: "\f158";
+}
+.fa-won:before,
+.fa-krw:before {
+ content: "\f159";
+}
+.fa-bitcoin:before,
+.fa-btc:before {
+ content: "\f15a";
+}
+.fa-file:before {
+ content: "\f15b";
+}
+.fa-file-text:before {
+ content: "\f15c";
+}
+.fa-sort-alpha-asc:before {
+ content: "\f15d";
+}
+.fa-sort-alpha-desc:before {
+ content: "\f15e";
+}
+.fa-sort-amount-asc:before {
+ content: "\f160";
+}
+.fa-sort-amount-desc:before {
+ content: "\f161";
+}
+.fa-sort-numeric-asc:before {
+ content: "\f162";
+}
+.fa-sort-numeric-desc:before {
+ content: "\f163";
+}
+.fa-thumbs-up:before {
+ content: "\f164";
+}
+.fa-thumbs-down:before {
+ content: "\f165";
+}
+.fa-youtube-square:before {
+ content: "\f166";
+}
+.fa-youtube:before {
+ content: "\f167";
+}
+.fa-xing:before {
+ content: "\f168";
+}
+.fa-xing-square:before {
+ content: "\f169";
+}
+.fa-youtube-play:before {
+ content: "\f16a";
+}
+.fa-dropbox:before {
+ content: "\f16b";
+}
+.fa-stack-overflow:before {
+ content: "\f16c";
+}
+.fa-instagram:before {
+ content: "\f16d";
+}
+.fa-flickr:before {
+ content: "\f16e";
+}
+.fa-adn:before {
+ content: "\f170";
+}
+.fa-bitbucket:before {
+ content: "\f171";
+}
+.fa-bitbucket-square:before {
+ content: "\f172";
+}
+.fa-tumblr:before {
+ content: "\f173";
+}
+.fa-tumblr-square:before {
+ content: "\f174";
+}
+.fa-long-arrow-down:before {
+ content: "\f175";
+}
+.fa-long-arrow-up:before {
+ content: "\f176";
+}
+.fa-long-arrow-left:before {
+ content: "\f177";
+}
+.fa-long-arrow-right:before {
+ content: "\f178";
+}
+.fa-apple:before {
+ content: "\f179";
+}
+.fa-windows:before {
+ content: "\f17a";
+}
+.fa-android:before {
+ content: "\f17b";
+}
+.fa-linux:before {
+ content: "\f17c";
+}
+.fa-dribbble:before {
+ content: "\f17d";
+}
+.fa-skype:before {
+ content: "\f17e";
+}
+.fa-foursquare:before {
+ content: "\f180";
+}
+.fa-trello:before {
+ content: "\f181";
+}
+.fa-female:before {
+ content: "\f182";
+}
+.fa-male:before {
+ content: "\f183";
+}
+.fa-gittip:before {
+ content: "\f184";
+}
+.fa-sun-o:before {
+ content: "\f185";
+}
+.fa-moon-o:before {
+ content: "\f186";
+}
+.fa-archive:before {
+ content: "\f187";
+}
+.fa-bug:before {
+ content: "\f188";
+}
+.fa-vk:before {
+ content: "\f189";
+}
+.fa-weibo:before {
+ content: "\f18a";
+}
+.fa-renren:before {
+ content: "\f18b";
+}
+.fa-pagelines:before {
+ content: "\f18c";
+}
+.fa-stack-exchange:before {
+ content: "\f18d";
+}
+.fa-arrow-circle-o-right:before {
+ content: "\f18e";
+}
+.fa-arrow-circle-o-left:before {
+ content: "\f190";
+}
+.fa-toggle-left:before,
+.fa-caret-square-o-left:before {
+ content: "\f191";
+}
+.fa-dot-circle-o:before {
+ content: "\f192";
+}
+.fa-wheelchair:before {
+ content: "\f193";
+}
+.fa-vimeo-square:before {
+ content: "\f194";
+}
+.fa-turkish-lira:before,
+.fa-try:before {
+ content: "\f195";
+}
+.fa-plus-square-o:before {
+ content: "\f196";
+}
+.fa-space-shuttle:before {
+ content: "\f197";
+}
+.fa-slack:before {
+ content: "\f198";
+}
+.fa-envelope-square:before {
+ content: "\f199";
+}
+.fa-wordpress:before {
+ content: "\f19a";
+}
+.fa-openid:before {
+ content: "\f19b";
+}
+.fa-institution:before,
+.fa-bank:before,
+.fa-university:before {
+ content: "\f19c";
+}
+.fa-mortar-board:before,
+.fa-graduation-cap:before {
+ content: "\f19d";
+}
+.fa-yahoo:before {
+ content: "\f19e";
+}
+.fa-google:before {
+ content: "\f1a0";
+}
+.fa-reddit:before {
+ content: "\f1a1";
+}
+.fa-reddit-square:before {
+ content: "\f1a2";
+}
+.fa-stumbleupon-circle:before {
+ content: "\f1a3";
+}
+.fa-stumbleupon:before {
+ content: "\f1a4";
+}
+.fa-delicious:before {
+ content: "\f1a5";
+}
+.fa-digg:before {
+ content: "\f1a6";
+}
+.fa-pied-piper-square:before,
+.fa-pied-piper:before {
+ content: "\f1a7";
+}
+.fa-pied-piper-alt:before {
+ content: "\f1a8";
+}
+.fa-drupal:before {
+ content: "\f1a9";
+}
+.fa-joomla:before {
+ content: "\f1aa";
+}
+.fa-language:before {
+ content: "\f1ab";
+}
+.fa-fax:before {
+ content: "\f1ac";
+}
+.fa-building:before {
+ content: "\f1ad";
+}
+.fa-child:before {
+ content: "\f1ae";
+}
+.fa-paw:before {
+ content: "\f1b0";
+}
+.fa-spoon:before {
+ content: "\f1b1";
+}
+.fa-cube:before {
+ content: "\f1b2";
+}
+.fa-cubes:before {
+ content: "\f1b3";
+}
+.fa-behance:before {
+ content: "\f1b4";
+}
+.fa-behance-square:before {
+ content: "\f1b5";
+}
+.fa-steam:before {
+ content: "\f1b6";
+}
+.fa-steam-square:before {
+ content: "\f1b7";
+}
+.fa-recycle:before {
+ content: "\f1b8";
+}
+.fa-automobile:before,
+.fa-car:before {
+ content: "\f1b9";
+}
+.fa-cab:before,
+.fa-taxi:before {
+ content: "\f1ba";
+}
+.fa-tree:before {
+ content: "\f1bb";
+}
+.fa-spotify:before {
+ content: "\f1bc";
+}
+.fa-deviantart:before {
+ content: "\f1bd";
+}
+.fa-soundcloud:before {
+ content: "\f1be";
+}
+.fa-database:before {
+ content: "\f1c0";
+}
+.fa-file-pdf-o:before {
+ content: "\f1c1";
+}
+.fa-file-word-o:before {
+ content: "\f1c2";
+}
+.fa-file-excel-o:before {
+ content: "\f1c3";
+}
+.fa-file-powerpoint-o:before {
+ content: "\f1c4";
+}
+.fa-file-photo-o:before,
+.fa-file-picture-o:before,
+.fa-file-image-o:before {
+ content: "\f1c5";
+}
+.fa-file-zip-o:before,
+.fa-file-archive-o:before {
+ content: "\f1c6";
+}
+.fa-file-sound-o:before,
+.fa-file-audio-o:before {
+ content: "\f1c7";
+}
+.fa-file-movie-o:before,
+.fa-file-video-o:before {
+ content: "\f1c8";
+}
+.fa-file-code-o:before {
+ content: "\f1c9";
+}
+.fa-vine:before {
+ content: "\f1ca";
+}
+.fa-codepen:before {
+ content: "\f1cb";
+}
+.fa-jsfiddle:before {
+ content: "\f1cc";
+}
+.fa-life-bouy:before,
+.fa-life-saver:before,
+.fa-support:before,
+.fa-life-ring:before {
+ content: "\f1cd";
+}
+.fa-circle-o-notch:before {
+ content: "\f1ce";
+}
+.fa-ra:before,
+.fa-rebel:before {
+ content: "\f1d0";
+}
+.fa-ge:before,
+.fa-empire:before {
+ content: "\f1d1";
+}
+.fa-git-square:before {
+ content: "\f1d2";
+}
+.fa-git:before {
+ content: "\f1d3";
+}
+.fa-hacker-news:before {
+ content: "\f1d4";
+}
+.fa-tencent-weibo:before {
+ content: "\f1d5";
+}
+.fa-qq:before {
+ content: "\f1d6";
+}
+.fa-wechat:before,
+.fa-weixin:before {
+ content: "\f1d7";
+}
+.fa-send:before,
+.fa-paper-plane:before {
+ content: "\f1d8";
+}
+.fa-send-o:before,
+.fa-paper-plane-o:before {
+ content: "\f1d9";
+}
+.fa-history:before {
+ content: "\f1da";
+}
+.fa-circle-thin:before {
+ content: "\f1db";
+}
+.fa-header:before {
+ content: "\f1dc";
+}
+.fa-paragraph:before {
+ content: "\f1dd";
+}
+.fa-sliders:before {
+ content: "\f1de";
+}
+.fa-share-alt:before {
+ content: "\f1e0";
+}
+.fa-share-alt-square:before {
+ content: "\f1e1";
+}
+.fa-bomb:before {
+ content: "\f1e2";
+}
diff --git a/app/assets/stylesheets/boot/google-webfonts.css.scss.erb b/app/assets/stylesheets/boot/google-webfonts.css.scss.erb
deleted file mode 100644
index 31ef30d05..000000000
--- a/app/assets/stylesheets/boot/google-webfonts.css.scss.erb
+++ /dev/null
@@ -1,77 +0,0 @@
-<% # License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later %>
-
-/* Open Sans */
-
-@font-face {
- font-family: 'Open Sans';
- src: url('<%= asset_path('Open_Sans/opensans-regular-webfont.eot') %>');
- src: url('<%= asset_path('Open_Sans/opensans-regular-webfont.eot?#iefix') %>') format('embedded-opentype'),
- url('<%= asset_path('Open_Sans/opensans-regular-webfont.woff') %>') format('woff'),
- url('<%= asset_path('Open_Sans/opensans-regular-webfont.ttf') %>') format('truetype'),
- url('<%= asset_path('Open_Sans/opensans-regular-webfont.svg#open_sansregular') %>') format('svg');
- font-weight: normal;
- font-style: normal;
-}
-
-@font-face {
- font-family: 'Open Sans';
- src: url('<%= asset_path('Open_Sans/opensans-light-webfont.eot') %>');
- src: url('<%= asset_path('Open_Sans/opensans-light-webfont.eot?#iefix') %>') format('embedded-opentype'),
- url('<%= asset_path('Open_Sans/opensans-light-webfont.woff') %>') format('woff'),
- url('<%= asset_path('Open_Sans/opensans-light-webfont.ttf') %>') format('truetype'),
- url('<%= asset_path('Open_Sans/opensans-light-webfont.svg#open_sanslight') %>') format('svg');
- font-weight: 200;
- font-style: normal;
-}
-
-@font-face {
- font-family: 'Open Sans';
- src: url('<%= asset_path('Open_Sans/opensans-bold-webfont.eot') %>');
- src: url('<%= asset_path('Open_Sans/opensans-bold-webfont.eot?#iefix') %>') format('embedded-opentype'),
- url('<%= asset_path('Open_Sans/opensans-bold-webfont.woff') %>') format('woff'),
- url('<%= asset_path('Open_Sans/opensans-bold-webfont.ttf') %>') format('truetype'),
- url('<%= asset_path('Open_Sans/opensans-bold-webfont.svg#open_sansbold') %>') format('svg');
- font-weight: bold;
- font-style: normal;
-}
-
-
-/* Bitter */
-
-$condensed: '<%= asset_path('Open_Sans_Condensed') %>';
-
-@font-face {
- font-family: 'OpenSansCondensed';
- src: url($condensed + '/opensans-condbold-webfont.eot');
- src: url($condensed + '/opensans-condbold-webfont.eot?#iefix') format('embedded-opentype'),
- url($condensed + '/opensans-condbold-webfont.woff') format('woff'),
- url($condensed + '/opensans-condbold-webfont.ttf') format('truetype'),
- url($condensed + '/opensans-condbold-webfont.svg') format('svg');
- font-weight: normal;
- font-style: normal;
-}
-
-
-@font-face {
- font-family: 'Bitter';
- src: url('<%= asset_path('Bitter/Bitter-Regular.eot') %>');
- src: url('<%= asset_path('Bitter/Bitter-Regular.eot?#iefix') %>') format('embedded-opentype'),
- url('<%= asset_path('Bitter/Bitter-Regular.woff') %>') format('woff'),
- url('<%= asset_path('Bitter/Bitter-Regular.ttf') %>') format('truetype'),
- url('<%= asset_path('Bitter/Bitter-Regular.svg#bitterregular') %>') format('svg');
- font-weight: normal;
- font-style: normal;
-}
-
-@font-face {
- font-family: 'Bitter';
- src: url('<%= asset_path('Bitter/Bitter-Bold.eot') %>');
- src: url('<%= asset_path('Bitter/Bitter-Bold.eot?#iefix') %>') format('embedded-opentype'),
- url('<%= asset_path('Bitter/Bitter-Bold.woff') %>') format('woff'),
- url('<%= asset_path('Bitter/Bitter-Bold.ttf') %>') format('truetype'),
- url('<%= asset_path('Bitter/Bitter-Bold.svg#bitterbold') %>') format('svg');
- font-weight: bold;
- font-style: normal;
-}
-
-
diff --git a/app/assets/stylesheets/boot/google-webfonts.scss.erb b/app/assets/stylesheets/boot/google-webfonts.scss.erb
new file mode 100644
index 000000000..7d409cbe5
--- /dev/null
+++ b/app/assets/stylesheets/boot/google-webfonts.scss.erb
@@ -0,0 +1,54 @@
+<% # License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later %>
+
+/* Open Sans */
+
+@font-face {
+ font-family: 'Open Sans';
+ src: url('<%= asset_path("Open_Sans/opensans-regular-webfont.woff") %>');
+
+ font-weight: normal;
+ font-style: normal;
+}
+
+@font-face {
+ font-family: 'Open Sans';
+ src: url('<%= asset_path("Open_Sans/opensans-light-webfont.woff") %>');
+ font-weight: 200;
+ font-style: normal;
+}
+
+@font-face {
+ font-family: 'Open Sans';
+ src: url('<%= asset_path("Open_Sans/opensans-bold-webfont.woff") %>');
+ font-weight: bold;
+ font-style: normal;
+}
+
+
+/* Bitter */
+
+
+
+@font-face {
+ font-family: 'OpenSansCondensed';
+ src: url('<%= asset_path("Open_Sans_Condensed/opensans-condbold-webfont.woff") %>');
+ font-weight: normal;
+ font-style: normal;
+}
+
+
+@font-face {
+ font-family: 'Bitter';
+ src: url('<%= asset_path("Bitter/Bitter-Regular.woff") %>');
+ font-weight: normal;
+ font-style: normal;
+}
+
+@font-face {
+ font-family: 'Bitter';
+ src: url('<%= asset_path("Bitter/Bitter-Bold.woff") %>');
+ font-weight: bold;
+ font-style: normal;
+}
+
+
diff --git a/app/assets/stylesheets/boot/streamline-icons.css.scss.erb b/app/assets/stylesheets/boot/streamline-icons.css.scss.erb
deleted file mode 100644
index 36a5ea78f..000000000
--- a/app/assets/stylesheets/boot/streamline-icons.css.scss.erb
+++ /dev/null
@@ -1,4968 +0,0 @@
-<% # License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later %>
-@charset "UTF-8";
-
-$path: "<%= asset_path('Streamline') %>";
-
-@font-face {
- font-family: "streamline-30px";
- src:url($path + "/streamline-30px.eot");
- src:url($path + "/streamline-30px.eot?#iefix") format("embedded-opentype"),
- url($path + "/streamline-30px.woff") format("woff"),
- url($path + "/streamline-30px.ttf") format("truetype"),
- url($path + "/streamline-30px.svg#streamline-30px") format("svg");
- font-weight: normal;
- font-style: normal;
-}
-
-[data-icon]:before {
- font-family: "streamline-30px" !important;
- content: attr(data-icon);
- font-style: normal !important;
- font-weight: normal !important;
- font-variant: normal !important;
- text-transform: none !important;
- speak: none;
- line-height: 1;
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
-}
-
-[class^="icon-"]:before,
-[class*=" icon-"]:before {
- font-family: "streamline-30px" !important;
- font-style: normal !important;
- font-weight: normal !important;
- font-variant: normal !important;
- text-transform: none !important;
- speak: none;
- line-height: 1;
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
-}
-
-.icon-aim-1:before {
- content: "\e000";
-}
-.icon-aim-2:before {
- content: "\e001";
-}
-.icon-aim-3:before {
- content: "\e002";
-}
-.icon-bin-1:before {
- content: "\e003";
-}
-.icon-bin-2:before {
- content: "\e004";
-}
-.icon-binocular:before {
- content: "\e005";
-}
-.icon-bomb:before {
- content: "\e006";
-}
-.icon-clip-1:before {
- content: "\e007";
-}
-.icon-clip-2:before {
- content: "\e008";
-}
-.icon-cutter:before {
- content: "\e009";
-}
-.icon-delete-1:before {
- content: "\e00a";
-}
-.icon-delete-2:before {
- content: "\e00b";
-}
-.icon-edit-1:before {
- content: "\e00c";
-}
-.icon-edit-2:before {
- content: "\e00d";
-}
-.icon-edit-3:before {
- content: "\e00e";
-}
-.icon-hide:before {
- content: "\e00f";
-}
-.icon-ink:before {
- content: "\e010";
-}
-.icon-key-1:before {
- content: "\e011";
-}
-.icon-key-2:before {
- content: "\e012";
-}
-.icon-link-1:before {
- content: "\e013";
-}
-.icon-link-2:before {
- content: "\e014";
-}
-.icon-link-3:before {
- content: "\e015";
-}
-.icon-link-broken-1:before {
- content: "\e016";
-}
-.icon-link-broken-2:before {
- content: "\e017";
-}
-.icon-lock-1:before {
- content: "\e018";
-}
-.icon-lock-2:before {
- content: "\e019";
-}
-.icon-lock-3:before {
- content: "\e01a";
-}
-.icon-lock-4:before {
- content: "\e01b";
-}
-.icon-lock-5:before {
- content: "\e01c";
-}
-.icon-lock-unlock-1:before {
- content: "\e01d";
-}
-.icon-lock-unlock-2:before {
- content: "\e01e";
-}
-.icon-magnifier:before {
- content: "\e01f";
-}
-.icon-pen-1:before {
- content: "\e020";
-}
-.icon-pen-2:before {
- content: "\e021";
-}
-.icon-pen-3:before {
- content: "\e022";
-}
-.icon-pen-4:before {
- content: "\e023";
-}
-.icon-pencil-1:before {
- content: "\e024";
-}
-.icon-pencil-2:before {
- content: "\e025";
-}
-.icon-pencil-3:before {
- content: "\e026";
-}
-.icon-pin-1:before {
- content: "\e027";
-}
-.icon-pin-2:before {
- content: "\e028";
-}
-.icon-power-1:before {
- content: "\e029";
-}
-.icon-power-2:before {
- content: "\e02a";
-}
-.icon-preview-1:before {
- content: "\e02b";
-}
-.icon-preview-2:before {
- content: "\e02c";
-}
-.icon-scissor-1:before {
- content: "\e02d";
-}
-.icon-scissor-2:before {
- content: "\e02e";
-}
-.icon-skull-1:before {
- content: "\e02f";
-}
-.icon-skull-2:before {
- content: "\e030";
-}
-.icon-type-1:before {
- content: "\e031";
-}
-.icon-type-2:before {
- content: "\e032";
-}
-.icon-type-3:before {
- content: "\e033";
-}
-.icon-type-4:before {
- content: "\e034";
-}
-.icon-zoom-area:before {
- content: "\e035";
-}
-.icon-zoom-in:before {
- content: "\e036";
-}
-.icon-zoom-out:before {
- content: "\e037";
-}
-.icon-cursor-1:before {
- content: "\e038";
-}
-.icon-cursor-2:before {
- content: "\e039";
-}
-.icon-cursor-3:before {
- content: "\e03a";
-}
-.icon-cursor-6:before {
- content: "\e03b";
-}
-.icon-cursor-move:before {
- content: "\e03c";
-}
-.icon-cursor-select-area:before {
- content: "\e03d";
-}
-.icon-cursors:before {
- content: "\e03e";
-}
-.icon-hand:before {
- content: "\e03f";
-}
-.icon-hand-block:before {
- content: "\e040";
-}
-.icon-hand-grab-1:before {
- content: "\e041";
-}
-.icon-hand-grab-2:before {
- content: "\e042";
-}
-.icon-hand-point:before {
- content: "\e043";
-}
-.icon-hand-touch-1:before {
- content: "\e044";
-}
-.icon-hand-touch-2:before {
- content: "\e045";
-}
-.icon-hand-touch-3:before {
- content: "\e046";
-}
-.icon-hand-touch-4:before {
- content: "\e047";
-}
-.icon-bookmark-1:before {
- content: "\e048";
-}
-.icon-bookmark-2:before {
- content: "\e049";
-}
-.icon-bookmark-3:before {
- content: "\e04a";
-}
-.icon-bookmark-4:before {
- content: "\e04b";
-}
-.icon-tag-1:before {
- content: "\e04c";
-}
-.icon-tag-2:before {
- content: "\e04d";
-}
-.icon-tag-add:before {
- content: "\e04e";
-}
-.icon-tag-delete:before {
- content: "\e04f";
-}
-.icon-tags-1:before {
- content: "\e050";
-}
-.icon-tags-2:before {
- content: "\e051";
-}
-.icon-anchor-point-1:before {
- content: "\e052";
-}
-.icon-anchor-point-2:before {
- content: "\e053";
-}
-.icon-arrange-1:before {
- content: "\e054";
-}
-.icon-arrange-2:before {
- content: "\e055";
-}
-.icon-board:before {
- content: "\e056";
-}
-.icon-brush-1:before {
- content: "\e057";
-}
-.icon-brush-2:before {
- content: "\e058";
-}
-.icon-bucket:before {
- content: "\e059";
-}
-.icon-crop:before {
- content: "\e05a";
-}
-.icon-dropper-1:before {
- content: "\e05b";
-}
-.icon-dropper-2:before {
- content: "\e05c";
-}
-.icon-dropper-3:before {
- content: "\e05d";
-}
-.icon-glue:before {
- content: "\e05e";
-}
-.icon-grid:before {
- content: "\e05f";
-}
-.icon-layers:before {
- content: "\e060";
-}
-.icon-magic-wand-1:before {
- content: "\e061";
-}
-.icon-magic-wand-2:before {
- content: "\e062";
-}
-.icon-magnet:before {
- content: "\e063";
-}
-.icon-marker:before {
- content: "\e064";
-}
-.icon-palette:before {
- content: "\e065";
-}
-.icon-pen-5:before {
- content: "\e066";
-}
-.icon-pen-6:before {
- content: "\e067";
-}
-.icon-quill:before {
- content: "\e068";
-}
-.icon-reflect:before {
- content: "\e069";
-}
-.icon-roller:before {
- content: "\e06a";
-}
-.icon-ruler-1:before {
- content: "\e06b";
-}
-.icon-ruler-2:before {
- content: "\e06c";
-}
-.icon-scale-diagonal-1:before {
- content: "\e06d";
-}
-.icon-scale-diagonal-2:before {
- content: "\e06e";
-}
-.icon-scale-horizontal:before {
- content: "\e06f";
-}
-.icon-scale-tool-1:before {
- content: "\e070";
-}
-.icon-scale-tool-2:before {
- content: "\e071";
-}
-.icon-scale-tool-3:before {
- content: "\e072";
-}
-.icon-scale-vertical:before {
- content: "\e073";
-}
-.icon-shear-tool:before {
- content: "\e074";
-}
-.icon-spray:before {
- content: "\e075";
-}
-.icon-stamp:before {
- content: "\e076";
-}
-.icon-stationery-1:before {
- content: "\e077";
-}
-.icon-stationery-2:before {
- content: "\e078";
-}
-.icon-stationery-3:before {
- content: "\e079";
-}
-.icon-vector:before {
- content: "\e07a";
-}
-.icon-award-1:before {
- content: "\e07b";
-}
-.icon-award-2:before {
- content: "\e07c";
-}
-.icon-award-3:before {
- content: "\e07d";
-}
-.icon-award-4:before {
- content: "\e07e";
-}
-.icon-award-5:before {
- content: "\e07f";
-}
-.icon-award-6:before {
- content: "\e080";
-}
-.icon-crown-1:before {
- content: "\e081";
-}
-.icon-crown-2:before {
- content: "\e082";
-}
-.icon-crown-3:before {
- content: "\e083";
-}
-.icon-fire:before {
- content: "\e084";
-}
-.icon-flag-1:before {
- content: "\e085";
-}
-.icon-flag-2:before {
- content: "\e086";
-}
-.icon-flag-3:before {
- content: "\e087";
-}
-.icon-flag-4:before {
- content: "\e088";
-}
-.icon-flag-5:before {
- content: "\e089";
-}
-.icon-flag-6:before {
- content: "\e08a";
-}
-.icon-flag-7:before {
- content: "\e08b";
-}
-.icon-flag-8:before {
- content: "\e08c";
-}
-.icon-google-plus-1:before {
- content: "\e08d";
-}
-.icon-google-plus-2:before {
- content: "\e08e";
-}
-.icon-hand-like-1:before {
- content: "\e08f";
-}
-.icon-hand-like-2:before {
- content: "\e090";
-}
-.icon-hand-unlike-1:before {
- content: "\e091";
-}
-.icon-hand-unlike-2:before {
- content: "\e092";
-}
-.icon-heart-1:before {
- content: "\e093";
-}
-.icon-heart-2:before {
- content: "\e094";
-}
-.icon-heart-angel:before {
- content: "\e095";
-}
-.icon-heart-broken:before {
- content: "\e096";
-}
-.icon-heart-minus:before {
- content: "\e097";
-}
-.icon-heart-plus:before {
- content: "\e098";
-}
-.icon-present:before {
- content: "\e099";
-}
-.icon-rank-1:before {
- content: "\e09a";
-}
-.icon-rank-2:before {
- content: "\e09b";
-}
-.icon-ribbon:before {
- content: "\e09c";
-}
-.icon-star-1:before {
- content: "\e09d";
-}
-.icon-star-2:before {
- content: "\e09e";
-}
-.icon-star-3:before {
- content: "\e09f";
-}
-.icon-star-4:before {
- content: "\e0a0";
-}
-.icon-star-5:before {
- content: "\e0a1";
-}
-.icon-star-6:before {
- content: "\e0a2";
-}
-.icon-star-7:before {
- content: "\e0a3";
-}
-.icon-star-8:before {
- content: "\e0a4";
-}
-.icon-star-9:before {
- content: "\e0a5";
-}
-.icon-star-10:before {
- content: "\e0a6";
-}
-.icon-trophy:before {
- content: "\e0a7";
-}
-.icon-baloon:before {
- content: "\e0a8";
-}
-.icon-bubble-1:before {
- content: "\e0a9";
-}
-.icon-bubble-2:before {
- content: "\e0aa";
-}
-.icon-bubble-add-1:before {
- content: "\e0ab";
-}
-.icon-bubble-add-2:before {
- content: "\e0ac";
-}
-.icon-bubble-add-3:before {
- content: "\e0ad";
-}
-.icon-bubble-ask-1:before {
- content: "\e0ae";
-}
-.icon-bubble-ask-2:before {
- content: "\e0af";
-}
-.icon-bubble-attention-2:before {
- content: "\e0b0";
-}
-.icon-bubble-attention-3:before {
- content: "\e0b1";
-}
-.icon-bubble-attention-4:before {
- content: "\e0b2";
-}
-.icon-bubble-attention-6:before {
- content: "\e0b3";
-}
-.icon-bubble-attention-7:before {
- content: "\e0b4";
-}
-.icon-bubble-block-1:before {
- content: "\e0b5";
-}
-.icon-bubble-block-2:before {
- content: "\e0b6";
-}
-.icon-bubble-block-3:before {
- content: "\e0b7";
-}
-.icon-bubble-chat-1:before {
- content: "\e0b8";
-}
-.icon-bubble-chat-2:before {
- content: "\e0b9";
-}
-.icon-bubble-check-1:before {
- content: "\e0ba";
-}
-.icon-bubble-check-2:before {
- content: "\e0bb";
-}
-.icon-bubble-check-3:before {
- content: "\e0bc";
-}
-.icon-bubble-comment-1:before {
- content: "\e0bd";
-}
-.icon-bubble-comment-2:before {
- content: "\e0be";
-}
-.icon-bubble-conversation-1:before {
- content: "\e0bf";
-}
-.icon-bubble-conversation-2:before {
- content: "\e0c0";
-}
-.icon-bubble-conversation-3:before {
- content: "\e0c1";
-}
-.icon-bubble-conversation-4:before {
- content: "\e0c2";
-}
-.icon-bubble-conversation-5:before {
- content: "\e0c3";
-}
-.icon-bubble-conversation-6:before {
- content: "\e0c4";
-}
-.icon-bubble-delete-1:before {
- content: "\e0c5";
-}
-.icon-bubble-delete-2:before {
- content: "\e0c6";
-}
-.icon-bubble-delete-3:before {
- content: "\e0c7";
-}
-.icon-bubble-edit-1:before {
- content: "\e0c8";
-}
-.icon-bubble-edit-2:before {
- content: "\e0c9";
-}
-.icon-bubble-edit-3:before {
- content: "\e0ca";
-}
-.icon-bubble-heart-1:before {
- content: "\e0cb";
-}
-.icon-bubble-heart-2:before {
- content: "\e0cc";
-}
-.icon-bubble-information:before {
- content: "\e0cd";
-}
-.icon-bubble-information-1:before {
- content: "\e0ce";
-}
-.icon-bubble-minus-1:before {
- content: "\e0cf";
-}
-.icon-bubble-minus-2:before {
- content: "\e0d0";
-}
-.icon-bubble-minus-3:before {
- content: "\e0d1";
-}
-.icon-bubble-quote-1:before {
- content: "\e0d2";
-}
-.icon-bubble-quote-2:before {
- content: "\e0d3";
-}
-.icon-bubble-smiley-1:before {
- content: "\e0d4";
-}
-.icon-bubble-smiley-2:before {
- content: "\e0d5";
-}
-.icon-bubble-smiley-3:before {
- content: "\e0d6";
-}
-.icon-bubble-smiley-4:before {
- content: "\e0d7";
-}
-.icon-bubble-star-1:before {
- content: "\e0d8";
-}
-.icon-bubble-star-2:before {
- content: "\e0d9";
-}
-.icon-bubble-star-3:before {
- content: "\e0da";
-}
-.icon-chat-1:before {
- content: "\e0db";
-}
-.icon-chat-2:before {
- content: "\e0dc";
-}
-.icon-chat-3:before {
- content: "\e0dd";
-}
-.icon-chat-4:before {
- content: "\e0de";
-}
-.icon-chat-5:before {
- content: "\e0df";
-}
-.icon-chat-6:before {
- content: "\e0e0";
-}
-.icon-chat-7:before {
- content: "\e0e1";
-}
-.icon-smiley-happy-1:before {
- content: "\e0e2";
-}
-.icon-smiley-happy-2:before {
- content: "\e0e3";
-}
-.icon-smiley-happy-3:before {
- content: "\e0e4";
-}
-.icon-smiley-happy-4:before {
- content: "\e0e5";
-}
-.icon-smiley-happy-5:before {
- content: "\e0e6";
-}
-.icon-smiley-sad-1:before {
- content: "\e0e7";
-}
-.icon-smiley-surprise:before {
- content: "\e0e8";
-}
-.icon-smiley-wink:before {
- content: "\e0e9";
-}
-.icon-call-1:before {
- content: "\e0ea";
-}
-.icon-call-2:before {
- content: "\e0eb";
-}
-.icon-call-3:before {
- content: "\e0ec";
-}
-.icon-call-4:before {
- content: "\e0ed";
-}
-.icon-call-add:before {
- content: "\e0ee";
-}
-.icon-call-block:before {
- content: "\e0ef";
-}
-.icon-call-delete:before {
- content: "\e0f0";
-}
-.icon-call-in:before {
- content: "\e0f1";
-}
-.icon-call-minus:before {
- content: "\e0f2";
-}
-.icon-call-out:before {
- content: "\e0f3";
-}
-.icon-contact:before {
- content: "\e0f4";
-}
-.icon-fax:before {
- content: "\e0f5";
-}
-.icon-hang-up:before {
- content: "\e0f6";
-}
-.icon-message:before {
- content: "\e0f7";
-}
-.icon-mobile-phone-1:before {
- content: "\e0f8";
-}
-.icon-mobile-phone-2:before {
- content: "\e0f9";
-}
-.icon-phone-1:before {
- content: "\e0fa";
-}
-.icon-phone-2:before {
- content: "\e0fb";
-}
-.icon-phone-3:before {
- content: "\e0fc";
-}
-.icon-phone-4:before {
- content: "\e0fd";
-}
-.icon-phone-vibration:before {
- content: "\e0fe";
-}
-.icon-signal-fine:before {
- content: "\e0ff";
-}
-.icon-signal-full:before {
- content: "\e100";
-}
-.icon-signal-high:before {
- content: "\e101";
-}
-.icon-signal-no:before {
- content: "\e102";
-}
-.icon-signal-poor:before {
- content: "\e103";
-}
-.icon-signal-weak:before {
- content: "\e104";
-}
-.icon-smartphone:before {
- content: "\e105";
-}
-.icon-tape:before {
- content: "\e106";
-}
-.icon-camera-symbol-1:before {
- content: "\e107";
-}
-.icon-camera-symbol-2:before {
- content: "\e108";
-}
-.icon-camera-symbol-3:before {
- content: "\e109";
-}
-.icon-headphone:before {
- content: "\e10a";
-}
-.icon-antenna-1:before {
- content: "\e10b";
-}
-.icon-antenna-2:before {
- content: "\e10c";
-}
-.icon-antenna-3:before {
- content: "\e10d";
-}
-.icon-hotspot-1:before {
- content: "\e10e";
-}
-.icon-hotspot-2:before {
- content: "\e10f";
-}
-.icon-link:before {
- content: "\e110";
-}
-.icon-megaphone-1:before {
- content: "\e111";
-}
-.icon-megaphone-2:before {
- content: "\e112";
-}
-.icon-radar:before {
- content: "\e113";
-}
-.icon-rss-1:before {
- content: "\e114";
-}
-.icon-rss-2:before {
- content: "\e115";
-}
-.icon-satellite:before {
- content: "\e116";
-}
-.icon-address-1:before {
- content: "\e117";
-}
-.icon-address-2:before {
- content: "\e118";
-}
-.icon-address-3:before {
- content: "\e119";
-}
-.icon-forward:before {
- content: "\e11a";
-}
-.icon-inbox-1:before {
- content: "\e11b";
-}
-.icon-inbox-2:before {
- content: "\e11c";
-}
-.icon-inbox-3:before {
- content: "\e11d";
-}
-.icon-inbox-4:before {
- content: "\e11e";
-}
-.icon-letter-1:before {
- content: "\e11f";
-}
-.icon-letter-2:before {
- content: "\e120";
-}
-.icon-letter-3:before {
- content: "\e121";
-}
-.icon-letter-4:before {
- content: "\e122";
-}
-.icon-letter-5:before {
- content: "\e123";
-}
-.icon-mail-1:before {
- content: "\e124";
-}
-.icon-mail-2:before {
- content: "\e125";
-}
-.icon-mail-add:before {
- content: "\e126";
-}
-.icon-mail-attention:before {
- content: "\e127";
-}
-.icon-mail-block:before {
- content: "\e128";
-}
-.icon-mail-box-1:before {
- content: "\e129";
-}
-.icon-mail-box-2:before {
- content: "\e12a";
-}
-.icon-mail-box-3:before {
- content: "\e12b";
-}
-.icon-mail-checked:before {
- content: "\e12c";
-}
-.icon-mail-compose:before {
- content: "\e12d";
-}
-.icon-mail-delete:before {
- content: "\e12e";
-}
-.icon-mail-favorite:before {
- content: "\e12f";
-}
-.icon-mail-inbox:before {
- content: "\e130";
-}
-.icon-mail-lock:before {
- content: "\e131";
-}
-.icon-mail-minus:before {
- content: "\e132";
-}
-.icon-mail-read:before {
- content: "\e133";
-}
-.icon-mail-recieved-1:before {
- content: "\e134";
-}
-.icon-mail-recieved-2:before {
- content: "\e135";
-}
-.icon-mail-search-1:before {
- content: "\e136";
-}
-.icon-mail-search-2:before {
- content: "\e137";
-}
-.icon-mail-sent-1:before {
- content: "\e138";
-}
-.icon-mail-sent-2:before {
- content: "\e139";
-}
-.icon-mail-setting:before {
- content: "\e13a";
-}
-.icon-mail-star:before {
- content: "\e13b";
-}
-.icon-mail-sync:before {
- content: "\e13c";
-}
-.icon-mail-time:before {
- content: "\e13d";
-}
-.icon-outbox-1:before {
- content: "\e13e";
-}
-.icon-outbox-2:before {
- content: "\e13f";
-}
-.icon-plane-paper-1:before {
- content: "\e140";
-}
-.icon-plane-paper-2:before {
- content: "\e141";
-}
-.icon-reply-mail-1:before {
- content: "\e142";
-}
-.icon-reply-mail-2:before {
- content: "\e143";
-}
-.icon-connection-1:before {
- content: "\e144";
-}
-.icon-connection-2:before {
- content: "\e145";
-}
-.icon-connection-3:before {
- content: "\e146";
-}
-.icon-contacts-1:before {
- content: "\e147";
-}
-.icon-contacts-2:before {
- content: "\e148";
-}
-.icon-contacts-3:before {
- content: "\e149";
-}
-.icon-contacts-4:before {
- content: "\e14a";
-}
-.icon-female:before {
- content: "\e14b";
-}
-.icon-gender:before {
- content: "\e14c";
-}
-.icon-gender-female:before {
- content: "\e14d";
-}
-.icon-gender-male:before {
- content: "\e14e";
-}
-.icon-id-1:before {
- content: "\e14f";
-}
-.icon-id-2:before {
- content: "\e150";
-}
-.icon-id-3:before {
- content: "\e151";
-}
-.icon-id-4:before {
- content: "\e152";
-}
-.icon-id-5:before {
- content: "\e153";
-}
-.icon-id-6:before {
- content: "\e154";
-}
-.icon-id-7:before {
- content: "\e155";
-}
-.icon-id-8:before {
- content: "\e156";
-}
-.icon-male:before {
- content: "\e157";
-}
-.icon-profile-1:before {
- content: "\e158";
-}
-.icon-profile-2:before {
- content: "\e159";
-}
-.icon-profile-3:before {
- content: "\e15a";
-}
-.icon-profile-4:before {
- content: "\e15b";
-}
-.icon-profile-5:before {
- content: "\e15c";
-}
-.icon-profile-6:before {
- content: "\e15d";
-}
-.icon-profile-athlete:before {
- content: "\e15e";
-}
-.icon-profile-bussiness-man:before {
- content: "\e15f";
-}
-.icon-profile-cook:before {
- content: "\e160";
-}
-.icon-profile-cop:before {
- content: "\e161";
-}
-.icon-profile-doctor-1:before {
- content: "\e162";
-}
-.icon-profile-doctor-2:before {
- content: "\e163";
-}
-.icon-profile-gentleman-1:before {
- content: "\e164";
-}
-.icon-profile-gentleman-2:before {
- content: "\e165";
-}
-.icon-profile-graduate:before {
- content: "\e166";
-}
-.icon-profile-king:before {
- content: "\e167";
-}
-.icon-profile-lady-1:before {
- content: "\e168";
-}
-.icon-profile-lady-2:before {
- content: "\e169";
-}
-.icon-profile-man:before {
- content: "\e16a";
-}
-.icon-profile-nurse-1:before {
- content: "\e16b";
-}
-.icon-profile-nurse-2:before {
- content: "\e16c";
-}
-.icon-profile-prisoner:before {
- content: "\e16d";
-}
-.icon-profile-serviceman-1:before {
- content: "\e16e";
-}
-.icon-profile-serviceman-2:before {
- content: "\e16f";
-}
-.icon-profile-spy:before {
- content: "\e170";
-}
-.icon-profile-teacher:before {
- content: "\e171";
-}
-.icon-profile-thief:before {
- content: "\e172";
-}
-.icon-user-1:before {
- content: "\e173";
-}
-.icon-user-2:before {
- content: "\e174";
-}
-.icon-user-add-1:before {
- content: "\e175";
-}
-.icon-user-add-2:before {
- content: "\e176";
-}
-.icon-user-block-1:before {
- content: "\e177";
-}
-.icon-user-block-2:before {
- content: "\e178";
-}
-.icon-user-checked-1:before {
- content: "\e179";
-}
-.icon-user-checked-2:before {
- content: "\e17a";
-}
-.icon-user-delete-1:before {
- content: "\e17b";
-}
-.icon-user-delete-2:before {
- content: "\e17c";
-}
-.icon-user-edit-1:before {
- content: "\e17d";
-}
-.icon-user-edit-2:before {
- content: "\e17e";
-}
-.icon-user-heart-1:before {
- content: "\e17f";
-}
-.icon-user-heart-2:before {
- content: "\e180";
-}
-.icon-user-lock:before {
- content: "\e181";
-}
-.icon-user-lock-1:before {
- content: "\e182";
-}
-.icon-user-minus-1:before {
- content: "\e183";
-}
-.icon-user-minus-2:before {
- content: "\e184";
-}
-.icon-user-search-1:before {
- content: "\e185";
-}
-.icon-user-search-2:before {
- content: "\e186";
-}
-.icon-user-setting-1:before {
- content: "\e187";
-}
-.icon-user-setting-2:before {
- content: "\e188";
-}
-.icon-user-star-1:before {
- content: "\e189";
-}
-.icon-user-star-2:before {
- content: "\e18a";
-}
-.icon-basket-1:before {
- content: "\e18b";
-}
-.icon-basket-2:before {
- content: "\e18c";
-}
-.icon-basket-3:before {
- content: "\e18d";
-}
-.icon-basket-add:before {
- content: "\e18e";
-}
-.icon-basket-minus:before {
- content: "\e18f";
-}
-.icon-briefcase-2:before {
- content: "\e190";
-}
-.icon-cart-1:before {
- content: "\e191";
-}
-.icon-cart-2:before {
- content: "\e192";
-}
-.icon-cart-3:before {
- content: "\e193";
-}
-.icon-cart-4:before {
- content: "\e194";
-}
-.icon-cut:before {
- content: "\e195";
-}
-.icon-hand-bag-1:before {
- content: "\e196";
-}
-.icon-hand-bag-2:before {
- content: "\e197";
-}
-.icon-purse-1:before {
- content: "\e198";
-}
-.icon-purse-2:before {
- content: "\e199";
-}
-.icon-qr-code:before {
- content: "\e19a";
-}
-.icon-receipt-1:before {
- content: "\e19b";
-}
-.icon-receipt-2:before {
- content: "\e19c";
-}
-.icon-receipt-3:before {
- content: "\e19d";
-}
-.icon-receipt-4:before {
- content: "\e19e";
-}
-.icon-shopping-1:before {
- content: "\e19f";
-}
-.icon-shopping-bag-1:before {
- content: "\e1a0";
-}
-.icon-shopping-bag-2:before {
- content: "\e1a1";
-}
-.icon-shopping-bag-3:before {
- content: "\e1a2";
-}
-.icon-sign-new-1:before {
- content: "\e1a3";
-}
-.icon-sign-new-2:before {
- content: "\e1a4";
-}
-.icon-sign-park:before {
- content: "\e1a5";
-}
-.icon-sign-star:before {
- content: "\e1a6";
-}
-.icon-trolley-1:before {
- content: "\e1a7";
-}
-.icon-trolley-2:before {
- content: "\e1a8";
-}
-.icon-trolley-3:before {
- content: "\e1a9";
-}
-.icon-trolley-load:before {
- content: "\e1aa";
-}
-.icon-trolley-off:before {
- content: "\e1ab";
-}
-.icon-wallet-1:before {
- content: "\e1ac";
-}
-.icon-wallet-2:before {
- content: "\e1ad";
-}
-.icon-wallet-3:before {
- content: "\e1ae";
-}
-.icon-camera-1:before {
- content: "\e1af";
-}
-.icon-camera-2:before {
- content: "\e1b0";
-}
-.icon-camera-3:before {
- content: "\e1b1";
-}
-.icon-camera-4:before {
- content: "\e1b2";
-}
-.icon-camera-5:before {
- content: "\e1b3";
-}
-.icon-camera-back:before {
- content: "\e1b4";
-}
-.icon-camera-focus:before {
- content: "\e1b5";
-}
-.icon-camera-frames:before {
- content: "\e1b6";
-}
-.icon-camera-front:before {
- content: "\e1b7";
-}
-.icon-camera-graph-1:before {
- content: "\e1b8";
-}
-.icon-camera-graph-2:before {
- content: "\e1b9";
-}
-.icon-camera-landscape:before {
- content: "\e1ba";
-}
-.icon-camera-lens-1:before {
- content: "\e1bb";
-}
-.icon-camera-lens-2:before {
- content: "\e1bc";
-}
-.icon-camera-light:before {
- content: "\e1bd";
-}
-.icon-camera-portrait:before {
- content: "\e1be";
-}
-.icon-camera-view:before {
- content: "\e1bf";
-}
-.icon-film-1:before {
- content: "\e1c0";
-}
-.icon-film-2:before {
- content: "\e1c1";
-}
-.icon-photo-1:before {
- content: "\e1c2";
-}
-.icon-photo-2:before {
- content: "\e1c3";
-}
-.icon-photo-frame:before {
- content: "\e1c4";
-}
-.icon-photos-1:before {
- content: "\e1c5";
-}
-.icon-photos-2:before {
- content: "\e1c6";
-}
-.icon-polaroid:before {
- content: "\e1c7";
-}
-.icon-signal-camera-1:before {
- content: "\e1c8";
-}
-.icon-signal-camera-2:before {
- content: "\e1c9";
-}
-.icon-user-photo:before {
- content: "\e1ca";
-}
-.icon-backward-1:before {
- content: "\e1cb";
-}
-.icon-dvd-player:before {
- content: "\e1cc";
-}
-.icon-eject-1:before {
- content: "\e1cd";
-}
-.icon-film-3:before {
- content: "\e1ce";
-}
-.icon-forward-1:before {
- content: "\e1cf";
-}
-.icon-handy-cam:before {
- content: "\e1d0";
-}
-.icon-movie-play-1:before {
- content: "\e1d1";
-}
-.icon-movie-play-2:before {
- content: "\e1d2";
-}
-.icon-movie-play-3:before {
- content: "\e1d3";
-}
-.icon-next-1:before {
- content: "\e1d4";
-}
-.icon-pause-1:before {
- content: "\e1d5";
-}
-.icon-play-1:before {
- content: "\e1d6";
-}
-.icon-player:before {
- content: "\e1d7";
-}
-.icon-previous-1:before {
- content: "\e1d8";
-}
-.icon-record-1:before {
- content: "\e1d9";
-}
-.icon-slate:before {
- content: "\e1da";
-}
-.icon-stop-1:before {
- content: "\e1db";
-}
-.icon-television:before {
- content: "\e1dc";
-}
-.icon-video-camera-1:before {
- content: "\e1dd";
-}
-.icon-video-camera-2:before {
- content: "\e1de";
-}
-.icon-backward-2:before {
- content: "\e1df";
-}
-.icon-cd:before {
- content: "\e1e0";
-}
-.icon-eject-2:before {
- content: "\e1e1";
-}
-.icon-equalizer-1:before {
- content: "\e1e2";
-}
-.icon-equalizer-2:before {
- content: "\e1e3";
-}
-.icon-forward-2:before {
- content: "\e1e4";
-}
-.icon-gramophone:before {
- content: "\e1e5";
-}
-.icon-gramophone-record:before {
- content: "\e1e6";
-}
-.icon-guitar:before {
- content: "\e1e7";
-}
-.icon-headphone-1:before {
- content: "\e1e8";
-}
-.icon-headphone-2:before {
- content: "\e1e9";
-}
-.icon-microphone-1:before {
- content: "\e1ea";
-}
-.icon-microphone-2:before {
- content: "\e1eb";
-}
-.icon-microphone-3:before {
- content: "\e1ec";
-}
-.icon-movie-play-4:before {
- content: "\e1ed";
-}
-.icon-music-note-1:before {
- content: "\e1ee";
-}
-.icon-music-note-3:before {
- content: "\e1ef";
-}
-.icon-music-note-4:before {
- content: "\e1f0";
-}
-.icon-music-note-5:before {
- content: "\e1f1";
-}
-.icon-next-2:before {
- content: "\e1f2";
-}
-.icon-notes-1:before {
- content: "\e1f3";
-}
-.icon-notes-2:before {
- content: "\e1f4";
-}
-.icon-pause-2:before {
- content: "\e1f5";
-}
-.icon-piano:before {
- content: "\e1f6";
-}
-.icon-play-2:before {
- content: "\e1f7";
-}
-.icon-playlist:before {
- content: "\e1f8";
-}
-.icon-previous-2:before {
- content: "\e1f9";
-}
-.icon-radio-1:before {
- content: "\e1fa";
-}
-.icon-radio-2:before {
- content: "\e1fb";
-}
-.icon-record-2:before {
- content: "\e1fc";
-}
-.icon-recorder:before {
- content: "\e1fd";
-}
-.icon-saxophone:before {
- content: "\e1fe";
-}
-.icon-speaker-1:before {
- content: "\e1ff";
-}
-.icon-speaker-2:before {
- content: "\e200";
-}
-.icon-speaker-3:before {
- content: "\e201";
-}
-.icon-stop-2:before {
- content: "\e202";
-}
-.icon-tape-1:before {
- content: "\e203";
-}
-.icon-trumpet:before {
- content: "\e204";
-}
-.icon-volume-down-1:before {
- content: "\e205";
-}
-.icon-volume-down-2:before {
- content: "\e206";
-}
-.icon-volume-loud-1:before {
- content: "\e207";
-}
-.icon-volume-loud-2:before {
- content: "\e208";
-}
-.icon-volume-low-1:before {
- content: "\e209";
-}
-.icon-volume-low-2:before {
- content: "\e20a";
-}
-.icon-volume-medium-1:before {
- content: "\e20b";
-}
-.icon-volume-medium-2:before {
- content: "\e20c";
-}
-.icon-volume-mute-1:before {
- content: "\e20d";
-}
-.icon-volume-mute-2:before {
- content: "\e20e";
-}
-.icon-volume-mute-3:before {
- content: "\e20f";
-}
-.icon-volume-up-1:before {
- content: "\e210";
-}
-.icon-volume-up-2:before {
- content: "\e211";
-}
-.icon-walkman:before {
- content: "\e212";
-}
-.icon-cloud:before {
- content: "\e213";
-}
-.icon-cloud-add:before {
- content: "\e214";
-}
-.icon-cloud-checked:before {
- content: "\e215";
-}
-.icon-cloud-delete:before {
- content: "\e216";
-}
-.icon-cloud-download:before {
- content: "\e217";
-}
-.icon-cloud-minus:before {
- content: "\e218";
-}
-.icon-cloud-refresh:before {
- content: "\e219";
-}
-.icon-cloud-sync:before {
- content: "\e21a";
-}
-.icon-cloud-upload:before {
- content: "\e21b";
-}
-.icon-download-1:before {
- content: "\e21c";
-}
-.icon-download-2:before {
- content: "\e21d";
-}
-.icon-download-3:before {
- content: "\e21e";
-}
-.icon-download-4:before {
- content: "\e21f";
-}
-.icon-download-5:before {
- content: "\e220";
-}
-.icon-download-6:before {
- content: "\e221";
-}
-.icon-download-7:before {
- content: "\e222";
-}
-.icon-download-8:before {
- content: "\e223";
-}
-.icon-download-9:before {
- content: "\e224";
-}
-.icon-download-10:before {
- content: "\e225";
-}
-.icon-download-11:before {
- content: "\e226";
-}
-.icon-download-12:before {
- content: "\e227";
-}
-.icon-download-13:before {
- content: "\e228";
-}
-.icon-download-14:before {
- content: "\e229";
-}
-.icon-download-15:before {
- content: "\e22a";
-}
-.icon-download-file:before {
- content: "\e22b";
-}
-.icon-download-folder:before {
- content: "\e22c";
-}
-.icon-goal-1:before {
- content: "\e22d";
-}
-.icon-goal-2:before {
- content: "\e22e";
-}
-.icon-transfer-1:before {
- content: "\e22f";
-}
-.icon-transfer-2:before {
- content: "\e230";
-}
-.icon-transfer-3:before {
- content: "\e231";
-}
-.icon-transfer-4:before {
- content: "\e232";
-}
-.icon-transfer-5:before {
- content: "\e233";
-}
-.icon-transfer-6:before {
- content: "\e234";
-}
-.icon-transfer-7:before {
- content: "\e235";
-}
-.icon-transfer-8:before {
- content: "\e236";
-}
-.icon-transfer-9:before {
- content: "\e237";
-}
-.icon-transfer-10:before {
- content: "\e238";
-}
-.icon-transfer-11:before {
- content: "\e239";
-}
-.icon-transfer-12:before {
- content: "\e23a";
-}
-.icon-upload-1:before {
- content: "\e23b";
-}
-.icon-upload-2:before {
- content: "\e23c";
-}
-.icon-upload-3:before {
- content: "\e23d";
-}
-.icon-upload-4:before {
- content: "\e23e";
-}
-.icon-upload-5:before {
- content: "\e23f";
-}
-.icon-upload-6:before {
- content: "\e240";
-}
-.icon-upload-7:before {
- content: "\e241";
-}
-.icon-upload-8:before {
- content: "\e242";
-}
-.icon-upload-9:before {
- content: "\e243";
-}
-.icon-upload-10:before {
- content: "\e244";
-}
-.icon-upload-11:before {
- content: "\e245";
-}
-.icon-upload-12:before {
- content: "\e246";
-}
-.icon-clipboard-1:before {
- content: "\e247";
-}
-.icon-clipboard-2:before {
- content: "\e248";
-}
-.icon-clipboard-3:before {
- content: "\e249";
-}
-.icon-clipboard-add:before {
- content: "\e24a";
-}
-.icon-clipboard-block:before {
- content: "\e24b";
-}
-.icon-clipboard-checked:before {
- content: "\e24c";
-}
-.icon-clipboard-delete:before {
- content: "\e24d";
-}
-.icon-clipboard-edit:before {
- content: "\e24e";
-}
-.icon-clipboard-minus:before {
- content: "\e24f";
-}
-.icon-document-1:before {
- content: "\e250";
-}
-.icon-document-2:before {
- content: "\e251";
-}
-.icon-file-1:before {
- content: "\e252";
-}
-.icon-file-2:before {
- content: "\e253";
-}
-.icon-file-add:before {
- content: "\e254";
-}
-.icon-file-attention:before {
- content: "\e255";
-}
-.icon-file-block:before {
- content: "\e256";
-}
-.icon-file-bookmark:before {
- content: "\e257";
-}
-.icon-file-checked:before {
- content: "\e258";
-}
-.icon-file-code:before {
- content: "\e259";
-}
-.icon-file-delete:before {
- content: "\e25a";
-}
-.icon-file-download:before {
- content: "\e25b";
-}
-.icon-file-edit:before {
- content: "\e25c";
-}
-.icon-file-favorite-1:before {
- content: "\e25d";
-}
-.icon-file-favorite-2:before {
- content: "\e25e";
-}
-.icon-file-graph-1:before {
- content: "\e25f";
-}
-.icon-file-graph-2:before {
- content: "\e260";
-}
-.icon-file-home:before {
- content: "\e261";
-}
-.icon-file-image-1:before {
- content: "\e262";
-}
-.icon-file-image-2:before {
- content: "\e263";
-}
-.icon-file-list:before {
- content: "\e264";
-}
-.icon-file-lock:before {
- content: "\e265";
-}
-.icon-file-media:before {
- content: "\e266";
-}
-.icon-file-minus:before {
- content: "\e267";
-}
-.icon-file-music:before {
- content: "\e268";
-}
-.icon-file-new:before {
- content: "\e269";
-}
-.icon-file-registry:before {
- content: "\e26a";
-}
-.icon-file-search:before {
- content: "\e26b";
-}
-.icon-file-setting:before {
- content: "\e26c";
-}
-.icon-file-sync:before {
- content: "\e26d";
-}
-.icon-file-table:before {
- content: "\e26e";
-}
-.icon-file-thumbnail:before {
- content: "\e26f";
-}
-.icon-file-time:before {
- content: "\e270";
-}
-.icon-file-transfer:before {
- content: "\e271";
-}
-.icon-file-upload:before {
- content: "\e272";
-}
-.icon-file-zip:before {
- content: "\e273";
-}
-.icon-files-1:before {
- content: "\e274";
-}
-.icon-files-2:before {
- content: "\e275";
-}
-.icon-files-3:before {
- content: "\e276";
-}
-.icon-files-4:before {
- content: "\e277";
-}
-.icon-files-5:before {
- content: "\e278";
-}
-.icon-files-6:before {
- content: "\e279";
-}
-.icon-hand-file-1:before {
- content: "\e27a";
-}
-.icon-hand-file-2:before {
- content: "\e27b";
-}
-.icon-note-paper-1:before {
- content: "\e27c";
-}
-.icon-note-paper-2:before {
- content: "\e27d";
-}
-.icon-note-paper-add:before {
- content: "\e27e";
-}
-.icon-note-paper-attention:before {
- content: "\e27f";
-}
-.icon-note-paper-block:before {
- content: "\e280";
-}
-.icon-note-paper-checked:before {
- content: "\e281";
-}
-.icon-note-paper-delete:before {
- content: "\e282";
-}
-.icon-note-paper-download:before {
- content: "\e283";
-}
-.icon-note-paper-edit:before {
- content: "\e284";
-}
-.icon-note-paper-favorite:before {
- content: "\e285";
-}
-.icon-note-paper-lock:before {
- content: "\e286";
-}
-.icon-note-paper-minus:before {
- content: "\e287";
-}
-.icon-note-paper-search:before {
- content: "\e288";
-}
-.icon-note-paper-sync:before {
- content: "\e289";
-}
-.icon-note-paper-upload:before {
- content: "\e28a";
-}
-.icon-print:before {
- content: "\e28b";
-}
-.icon-folder-1:before {
- content: "\e28c";
-}
-.icon-folder-2:before {
- content: "\e28d";
-}
-.icon-folder-3:before {
- content: "\e28e";
-}
-.icon-folder-4:before {
- content: "\e28f";
-}
-.icon-folder-add:before {
- content: "\e290";
-}
-.icon-folder-attention:before {
- content: "\e291";
-}
-.icon-folder-block:before {
- content: "\e292";
-}
-.icon-folder-bookmark:before {
- content: "\e293";
-}
-.icon-folder-checked:before {
- content: "\e294";
-}
-.icon-folder-code:before {
- content: "\e295";
-}
-.icon-folder-delete:before {
- content: "\e296";
-}
-.icon-folder-download:before {
- content: "\e297";
-}
-.icon-folder-edit:before {
- content: "\e298";
-}
-.icon-folder-favorite:before {
- content: "\e299";
-}
-.icon-folder-home:before {
- content: "\e29a";
-}
-.icon-folder-image:before {
- content: "\e29b";
-}
-.icon-folder-lock:before {
- content: "\e29c";
-}
-.icon-folder-media:before {
- content: "\e29d";
-}
-.icon-folder-minus:before {
- content: "\e29e";
-}
-.icon-folder-music:before {
- content: "\e29f";
-}
-.icon-folder-new:before {
- content: "\e2a0";
-}
-.icon-folder-search:before {
- content: "\e2a1";
-}
-.icon-folder-setting:before {
- content: "\e2a2";
-}
-.icon-folder-share-1:before {
- content: "\e2a3";
-}
-.icon-folder-share-2:before {
- content: "\e2a4";
-}
-.icon-folder-sync:before {
- content: "\e2a5";
-}
-.icon-folder-transfer:before {
- content: "\e2a6";
-}
-.icon-folder-upload:before {
- content: "\e2a7";
-}
-.icon-folder-zip:before {
- content: "\e2a8";
-}
-.icon-add-1:before {
- content: "\e2a9";
-}
-.icon-add-2:before {
- content: "\e2aa";
-}
-.icon-add-3:before {
- content: "\e2ab";
-}
-.icon-add-4:before {
- content: "\e2ac";
-}
-.icon-add-tag:before {
- content: "\e2ad";
-}
-.icon-arrow-1:before {
- content: "\e2ae";
-}
-.icon-arrow-2:before {
- content: "\e2af";
-}
-.icon-arrow-down-1:before {
- content: "\e2b0";
-}
-.icon-arrow-down-2:before {
- content: "\e2b1";
-}
-.icon-arrow-left-1:before {
- content: "\e2b2";
-}
-.icon-arrow-left-2:before {
- content: "\e2b3";
-}
-.icon-arrow-move-1:before {
- content: "\e2b4";
-}
-.icon-arrow-move-down:before {
- content: "\e2b5";
-}
-.icon-arrow-move-left:before {
- content: "\e2b6";
-}
-.icon-arrow-move-right:before {
- content: "\e2b7";
-}
-.icon-arrow-move-up:before {
- content: "\e2b8";
-}
-.icon-arrow-right-1:before {
- content: "\e2b9";
-}
-.icon-arrow-right-2:before {
- content: "\e2ba";
-}
-.icon-arrow-up-1:before {
- content: "\e2bb";
-}
-.icon-arrow-up-2:before {
- content: "\e2bc";
-}
-.icon-back:before {
- content: "\e2bd";
-}
-.icon-center-expand:before {
- content: "\e2be";
-}
-.icon-center-reduce:before {
- content: "\e2bf";
-}
-.icon-delete-1-1:before {
- content: "\e2c0";
-}
-.icon-delete-2-1:before {
- content: "\e2c1";
-}
-.icon-delete-3:before {
- content: "\e2c2";
-}
-.icon-delete-4:before {
- content: "\e2c3";
-}
-.icon-delete-tag:before {
- content: "\e2c4";
-}
-.icon-expand-horizontal:before {
- content: "\e2c5";
-}
-.icon-expand-vertical:before {
- content: "\e2c6";
-}
-.icon-forward-3:before {
- content: "\e2c7";
-}
-.icon-infinity:before {
- content: "\e2c8";
-}
-.icon-loading:before {
- content: "\e2c9";
-}
-.icon-log-out-1:before {
- content: "\e2ca";
-}
-.icon-loop-1:before {
- content: "\e2cb";
-}
-.icon-loop-2:before {
- content: "\e2cc";
-}
-.icon-loop-3:before {
- content: "\e2cd";
-}
-.icon-minus-1:before {
- content: "\e2ce";
-}
-.icon-minus-2:before {
- content: "\e2cf";
-}
-.icon-minus-3:before {
- content: "\e2d0";
-}
-.icon-minus-4:before {
- content: "\e2d1";
-}
-.icon-minus-tag:before {
- content: "\e2d2";
-}
-.icon-move-diagonal-1:before {
- content: "\e2d3";
-}
-.icon-move-diagonal-2:before {
- content: "\e2d4";
-}
-.icon-move-horizontal-1:before {
- content: "\e2d5";
-}
-.icon-move-horizontal-2:before {
- content: "\e2d6";
-}
-.icon-move-vertical-1:before {
- content: "\e2d7";
-}
-.icon-move-vertical-2:before {
- content: "\e2d8";
-}
-.icon-next-1-1:before {
- content: "\e2d9";
-}
-.icon-next-2-1:before {
- content: "\e2da";
-}
-.icon-power-1-1:before {
- content: "\e2db";
-}
-.icon-power-2-1:before {
- content: "\e2dc";
-}
-.icon-power-3:before {
- content: "\e2dd";
-}
-.icon-power-4:before {
- content: "\e2de";
-}
-.icon-power-5:before {
- content: "\e2df";
-}
-.icon-recycle:before {
- content: "\e2e0";
-}
-.icon-refresh:before {
- content: "\e2e1";
-}
-.icon-repeat:before {
- content: "\e2e2";
-}
-.icon-return:before {
- content: "\e2e3";
-}
-.icon-scale-all-1:before {
- content: "\e2e4";
-}
-.icon-scale-center:before {
- content: "\e2e5";
-}
-.icon-scale-horizontal-1:before {
- content: "\e2e6";
-}
-.icon-scale-horizontal-2:before {
- content: "\e2e7";
-}
-.icon-scale-reduce-1:before {
- content: "\e2e8";
-}
-.icon-scale-reduce-2:before {
- content: "\e2e9";
-}
-.icon-scale-reduce-3:before {
- content: "\e2ea";
-}
-.icon-scale-spread-1:before {
- content: "\e2eb";
-}
-.icon-scale-spread-2:before {
- content: "\e2ec";
-}
-.icon-scale-spread-3:before {
- content: "\e2ed";
-}
-.icon-scale-vertical-1:before {
- content: "\e2ee";
-}
-.icon-scale-vertical-2:before {
- content: "\e2ef";
-}
-.icon-scroll-horizontal-1:before {
- content: "\e2f0";
-}
-.icon-scroll-horizontal-2:before {
- content: "\e2f1";
-}
-.icon-scroll-omnidirectional-1:before {
- content: "\e2f2";
-}
-.icon-scroll-omnidirectional-2:before {
- content: "\e2f3";
-}
-.icon-scroll-vertical-1:before {
- content: "\e2f4";
-}
-.icon-scroll-vertical-2:before {
- content: "\e2f5";
-}
-.icon-shuffle:before {
- content: "\e2f6";
-}
-.icon-split:before {
- content: "\e2f7";
-}
-.icon-sync-1:before {
- content: "\e2f8";
-}
-.icon-sync-2:before {
- content: "\e2f9";
-}
-.icon-timer:before {
- content: "\e2fa";
-}
-.icon-transfer:before {
- content: "\e2fb";
-}
-.icon-transfer-1-1:before {
- content: "\e2fc";
-}
-.icon-chat-1-1:before {
- content: "\e2fd";
-}
-.icon-chat-2-1:before {
- content: "\e2fe";
-}
-.icon-check-1:before {
- content: "\e2ff";
-}
-.icon-check-2:before {
- content: "\e300";
-}
-.icon-check-3:before {
- content: "\e301";
-}
-.icon-check-4:before {
- content: "\e302";
-}
-.icon-check-bubble:before {
- content: "\e303";
-}
-.icon-check-list:before {
- content: "\e304";
-}
-.icon-check-shield:before {
- content: "\e305";
-}
-.icon-cross-1:before {
- content: "\e306";
-}
-.icon-cross-bubble:before {
- content: "\e307";
-}
-.icon-cross-shield:before {
- content: "\e308";
-}
-.icon-briefcase:before {
- content: "\e309";
-}
-.icon-brightness-high:before {
- content: "\e30a";
-}
-.icon-brightness-low:before {
- content: "\e30b";
-}
-.icon-hammer-1:before {
- content: "\e30c";
-}
-.icon-hammer-2:before {
- content: "\e30d";
-}
-.icon-pulse:before {
- content: "\e30e";
-}
-.icon-scale:before {
- content: "\e30f";
-}
-.icon-screw-driver:before {
- content: "\e310";
-}
-.icon-setting-adjustment:before {
- content: "\e311";
-}
-.icon-setting-gear:before {
- content: "\e312";
-}
-.icon-setting-gears-1:before {
- content: "\e313";
-}
-.icon-setting-gears-2:before {
- content: "\e314";
-}
-.icon-setting-wrenches:before {
- content: "\e315";
-}
-.icon-switch-1:before {
- content: "\e316";
-}
-.icon-switch-2:before {
- content: "\e317";
-}
-.icon-wrench:before {
- content: "\e318";
-}
-.icon-alarm-1:before {
- content: "\e319";
-}
-.icon-alarm-clock:before {
- content: "\e31a";
-}
-.icon-alarm-no:before {
- content: "\e31b";
-}
-.icon-alarm-snooze:before {
- content: "\e31c";
-}
-.icon-bell:before {
- content: "\e31d";
-}
-.icon-calendar-1:before {
- content: "\e31e";
-}
-.icon-calendar-2:before {
- content: "\e31f";
-}
-.icon-clock-1:before {
- content: "\e320";
-}
-.icon-clock-2:before {
- content: "\e321";
-}
-.icon-clock-3:before {
- content: "\e322";
-}
-.icon-hourglass-1:before {
- content: "\e323";
-}
-.icon-hourglass-2:before {
- content: "\e324";
-}
-.icon-timer-1:before {
- content: "\e325";
-}
-.icon-timer-3-quarter-1:before {
- content: "\e326";
-}
-.icon-timer-3-quarter-2:before {
- content: "\e327";
-}
-.icon-timer-full-1:before {
- content: "\e328";
-}
-.icon-timer-full-2:before {
- content: "\e329";
-}
-.icon-timer-half-1:before {
- content: "\e32a";
-}
-.icon-timer-half-2:before {
- content: "\e32b";
-}
-.icon-timer-half-3:before {
- content: "\e32c";
-}
-.icon-timer-half-4:before {
- content: "\e32d";
-}
-.icon-timer-quarter-1:before {
- content: "\e32e";
-}
-.icon-timer-quarter-2:before {
- content: "\e32f";
-}
-.icon-watch-1:before {
- content: "\e330";
-}
-.icon-watch-2:before {
- content: "\e331";
-}
-.icon-alert-1:before {
- content: "\e332";
-}
-.icon-alert-2:before {
- content: "\e333";
-}
-.icon-alert-3:before {
- content: "\e334";
-}
-.icon-information:before {
- content: "\e335";
-}
-.icon-nuclear-1:before {
- content: "\e336";
-}
-.icon-nuclear-2:before {
- content: "\e337";
-}
-.icon-question-mark:before {
- content: "\e338";
-}
-.icon-abacus:before {
- content: "\e339";
-}
-.icon-amex-card:before {
- content: "\e33a";
-}
-.icon-atm:before {
- content: "\e33b";
-}
-.icon-balance:before {
- content: "\e33c";
-}
-.icon-bank-1:before {
- content: "\e33d";
-}
-.icon-bank-2:before {
- content: "\e33e";
-}
-.icon-bank-note:before {
- content: "\e33f";
-}
-.icon-bank-notes-1:before {
- content: "\e340";
-}
-.icon-bank-notes-2:before {
- content: "\e341";
-}
-.icon-bitcoins:before {
- content: "\e342";
-}
-.icon-board-1:before {
- content: "\e343";
-}
-.icon-box-1:before {
- content: "\e344";
-}
-.icon-box-2:before {
- content: "\e345";
-}
-.icon-box-3:before {
- content: "\e346";
-}
-.icon-box-download:before {
- content: "\e347";
-}
-.icon-box-shipping:before {
- content: "\e348";
-}
-.icon-box-upload:before {
- content: "\e349";
-}
-.icon-business-chart-1:before {
- content: "\e34a";
-}
-.icon-business-chart-2:before {
- content: "\e34b";
-}
-.icon-calculator-1:before {
- content: "\e34c";
-}
-.icon-calculator-2:before {
- content: "\e34d";
-}
-.icon-calculator-3:before {
- content: "\e34e";
-}
-.icon-cash-register:before {
- content: "\e34f";
-}
-.icon-chart-board:before {
- content: "\e350";
-}
-.icon-chart-down:before {
- content: "\e351";
-}
-.icon-chart-up:before {
- content: "\e352";
-}
-.icon-check:before {
- content: "\e353";
-}
-.icon-coins-1:before {
- content: "\e354";
-}
-.icon-coins-2:before {
- content: "\e355";
-}
-.icon-court:before {
- content: "\e356";
-}
-.icon-credit-card:before {
- content: "\e357";
-}
-.icon-credit-card-lock:before {
- content: "\e358";
-}
-.icon-delivery:before {
- content: "\e359";
-}
-.icon-dollar-bag:before {
- content: "\e35a";
-}
-.icon-dollar-currency-1:before {
- content: "\e35b";
-}
-.icon-dollar-currency-2:before {
- content: "\e35c";
-}
-.icon-dollar-currency-3:before {
- content: "\e35d";
-}
-.icon-dollar-currency-4:before {
- content: "\e35e";
-}
-.icon-euro-bag:before {
- content: "\e35f";
-}
-.icon-euro-currency-1:before {
- content: "\e360";
-}
-.icon-euro-currency-2:before {
- content: "\e361";
-}
-.icon-euro-currency-3:before {
- content: "\e362";
-}
-.icon-euro-currency-4:before {
- content: "\e363";
-}
-.icon-forklift:before {
- content: "\e364";
-}
-.icon-hand-card:before {
- content: "\e365";
-}
-.icon-hand-coin:before {
- content: "\e366";
-}
-.icon-keynote:before {
- content: "\e367";
-}
-.icon-master-card:before {
- content: "\e368";
-}
-.icon-money:before {
- content: "\e369";
-}
-.icon-parking-meter:before {
- content: "\e36a";
-}
-.icon-percent-1:before {
- content: "\e36b";
-}
-.icon-percent-2:before {
- content: "\e36c";
-}
-.icon-percent-3:before {
- content: "\e36d";
-}
-.icon-percent-4:before {
- content: "\e36e";
-}
-.icon-percent-5:before {
- content: "\e36f";
-}
-.icon-percent-up:before {
- content: "\e370";
-}
-.icon-pie-chart-1:before {
- content: "\e371";
-}
-.icon-pie-chart-2:before {
- content: "\e372";
-}
-.icon-piggy-bank:before {
- content: "\e373";
-}
-.icon-pound-currency-1:before {
- content: "\e374";
-}
-.icon-pound-currency-2:before {
- content: "\e375";
-}
-.icon-pound-currency-3:before {
- content: "\e376";
-}
-.icon-pound-currency-4:before {
- content: "\e377";
-}
-.icon-safe-1:before {
- content: "\e378";
-}
-.icon-safe-2:before {
- content: "\e379";
-}
-.icon-shop:before {
- content: "\e37a";
-}
-.icon-sign:before {
- content: "\e37b";
-}
-.icon-trolley:before {
- content: "\e37c";
-}
-.icon-truck-1:before {
- content: "\e37d";
-}
-.icon-truck-2:before {
- content: "\e37e";
-}
-.icon-visa-card:before {
- content: "\e37f";
-}
-.icon-yen-currency-1:before {
- content: "\e380";
-}
-.icon-yen-currency-2:before {
- content: "\e381";
-}
-.icon-yen-currency-3:before {
- content: "\e382";
-}
-.icon-yen-currency-4:before {
- content: "\e383";
-}
-.icon-add-marker-1:before {
- content: "\e384";
-}
-.icon-add-marker-2:before {
- content: "\e385";
-}
-.icon-add-marker-3:before {
- content: "\e386";
-}
-.icon-add-marker-4:before {
- content: "\e387";
-}
-.icon-add-marker-5:before {
- content: "\e388";
-}
-.icon-compass-1:before {
- content: "\e389";
-}
-.icon-compass-2:before {
- content: "\e38a";
-}
-.icon-compass-3:before {
- content: "\e38b";
-}
-.icon-delete-marker-1:before {
- content: "\e38c";
-}
-.icon-delete-marker-2:before {
- content: "\e38d";
-}
-.icon-delete-marker-3:before {
- content: "\e38e";
-}
-.icon-delete-marker-4:before {
- content: "\e38f";
-}
-.icon-delete-marker-5:before {
- content: "\e390";
-}
-.icon-favorite-marker:before {
- content: "\e391";
-}
-.icon-favorite-marker-1:before {
- content: "\e392";
-}
-.icon-favorite-marker-2:before {
- content: "\e393";
-}
-.icon-favorite-marker-3:before {
- content: "\e394";
-}
-.icon-globe:before {
- content: "\e395";
-}
-.icon-location:before {
- content: "\e396";
-}
-.icon-map-1:before {
- content: "\e397";
-}
-.icon-map-location:before {
- content: "\e398";
-}
-.icon-map-marker-1:before {
- content: "\e399";
-}
-.icon-map-marker-2:before {
- content: "\e39a";
-}
-.icon-map-marker-3:before {
- content: "\e39b";
-}
-.icon-map-marker-4:before {
- content: "\e39c";
-}
-.icon-map-pin:before {
- content: "\e39d";
-}
-.icon-map-pin-marker:before {
- content: "\e39e";
-}
-.icon-marker-1:before {
- content: "\e39f";
-}
-.icon-marker-2:before {
- content: "\e3a0";
-}
-.icon-marker-3:before {
- content: "\e3a1";
-}
-.icon-marker-4:before {
- content: "\e3a2";
-}
-.icon-minus-marker-1:before {
- content: "\e3a3";
-}
-.icon-minus-marker-2:before {
- content: "\e3a4";
-}
-.icon-minus-marker-3:before {
- content: "\e3a5";
-}
-.icon-minus-marker-4:before {
- content: "\e3a6";
-}
-.icon-pin-1-1:before {
- content: "\e3a7";
-}
-.icon-pin-2-1:before {
- content: "\e3a8";
-}
-.icon-pin-location:before {
- content: "\e3a9";
-}
-.icon-anchor:before {
- content: "\e3aa";
-}
-.icon-bank:before {
- content: "\e3ab";
-}
-.icon-beach:before {
- content: "\e3ac";
-}
-.icon-boat:before {
- content: "\e3ad";
-}
-.icon-building-1:before {
- content: "\e3ae";
-}
-.icon-building-2:before {
- content: "\e3af";
-}
-.icon-building-3:before {
- content: "\e3b0";
-}
-.icon-buildings-1:before {
- content: "\e3b1";
-}
-.icon-buildings-2:before {
- content: "\e3b2";
-}
-.icon-buildings-3:before {
- content: "\e3b3";
-}
-.icon-buildings-4:before {
- content: "\e3b4";
-}
-.icon-castle:before {
- content: "\e3b5";
-}
-.icon-column:before {
- content: "\e3b6";
-}
-.icon-direction-sign:before {
- content: "\e3b7";
-}
-.icon-factory:before {
- content: "\e3b8";
-}
-.icon-fence:before {
- content: "\e3b9";
-}
-.icon-garage:before {
- content: "\e3ba";
-}
-.icon-globe-1:before {
- content: "\e3bb";
-}
-.icon-globe-2:before {
- content: "\e3bc";
-}
-.icon-house-1:before {
- content: "\e3bd";
-}
-.icon-house-2:before {
- content: "\e3be";
-}
-.icon-house-3:before {
- content: "\e3bf";
-}
-.icon-house-4:before {
- content: "\e3c0";
-}
-.icon-library:before {
- content: "\e3c1";
-}
-.icon-light-house:before {
- content: "\e3c2";
-}
-.icon-pine-tree:before {
- content: "\e3c3";
-}
-.icon-pisa:before {
- content: "\e3c4";
-}
-.icon-skyscraper:before {
- content: "\e3c5";
-}
-.icon-temple:before {
- content: "\e3c6";
-}
-.icon-treasure-map:before {
- content: "\e3c7";
-}
-.icon-tree:before {
- content: "\e3c8";
-}
-.icon-attention:before {
- content: "\e3c9";
-}
-.icon-bug-1:before {
- content: "\e3ca";
-}
-.icon-bug-2:before {
- content: "\e3cb";
-}
-.icon-css3:before {
- content: "\e3cc";
-}
-.icon-firewall:before {
- content: "\e3cd";
-}
-.icon-html5:before {
- content: "\e3ce";
-}
-.icon-plugin-1:before {
- content: "\e3cf";
-}
-.icon-plugin-2:before {
- content: "\e3d0";
-}
-.icon-script:before {
- content: "\e3d1";
-}
-.icon-new-window:before {
- content: "\e3d2";
-}
-.icon-window-1:before {
- content: "\e3d3";
-}
-.icon-window-2:before {
- content: "\e3d4";
-}
-.icon-window-3:before {
- content: "\e3d5";
-}
-.icon-window-add:before {
- content: "\e3d6";
-}
-.icon-window-alert:before {
- content: "\e3d7";
-}
-.icon-window-check:before {
- content: "\e3d8";
-}
-.icon-window-code-1:before {
- content: "\e3d9";
-}
-.icon-window-code-2:before {
- content: "\e3da";
-}
-.icon-window-code-3:before {
- content: "\e3db";
-}
-.icon-window-column:before {
- content: "\e3dc";
-}
-.icon-window-delete:before {
- content: "\e3dd";
-}
-.icon-window-denied:before {
- content: "\e3de";
-}
-.icon-window-download-1:before {
- content: "\e3df";
-}
-.icon-window-download-2:before {
- content: "\e3e0";
-}
-.icon-window-edit:before {
- content: "\e3e1";
-}
-.icon-window-favorite-1:before {
- content: "\e3e2";
-}
-.icon-window-favorite-2:before {
- content: "\e3e3";
-}
-.icon-window-graph-1:before {
- content: "\e3e4";
-}
-.icon-window-graph-2:before {
- content: "\e3e5";
-}
-.icon-window-hand:before {
- content: "\e3e6";
-}
-.icon-window-home:before {
- content: "\e3e7";
-}
-.icon-window-list-1:before {
- content: "\e3e8";
-}
-.icon-window-list-2:before {
- content: "\e3e9";
-}
-.icon-window-lock:before {
- content: "\e3ea";
-}
-.icon-window-minimize:before {
- content: "\e3eb";
-}
-.icon-window-minus:before {
- content: "\e3ec";
-}
-.icon-window-refresh:before {
- content: "\e3ed";
-}
-.icon-window-registry:before {
- content: "\e3ee";
-}
-.icon-window-search:before {
- content: "\e3ef";
-}
-.icon-window-selection-1:before {
- content: "\e3f0";
-}
-.icon-window-selection-2:before {
- content: "\e3f1";
-}
-.icon-window-setting:before {
- content: "\e3f2";
-}
-.icon-window-sync:before {
- content: "\e3f3";
-}
-.icon-window-thumbnail-1:before {
- content: "\e3f4";
-}
-.icon-window-thumbnail-2:before {
- content: "\e3f5";
-}
-.icon-window-time:before {
- content: "\e3f6";
-}
-.icon-window-upload-1:before {
- content: "\e3f7";
-}
-.icon-window-upload-2:before {
- content: "\e3f8";
-}
-.icon-database:before {
- content: "\e3f9";
-}
-.icon-database-alert:before {
- content: "\e3fa";
-}
-.icon-database-block:before {
- content: "\e3fb";
-}
-.icon-database-check:before {
- content: "\e3fc";
-}
-.icon-database-delete:before {
- content: "\e3fd";
-}
-.icon-database-download:before {
- content: "\e3fe";
-}
-.icon-database-editor:before {
- content: "\e3ff";
-}
-.icon-database-lock:before {
- content: "\e400";
-}
-.icon-database-minus:before {
- content: "\e401";
-}
-.icon-database-network:before {
- content: "\e402";
-}
-.icon-database-plus:before {
- content: "\e403";
-}
-.icon-database-refresh:before {
- content: "\e404";
-}
-.icon-database-search:before {
- content: "\e405";
-}
-.icon-database-setting:before {
- content: "\e406";
-}
-.icon-database-sync:before {
- content: "\e407";
-}
-.icon-database-time:before {
- content: "\e408";
-}
-.icon-database-upload:before {
- content: "\e409";
-}
-.icon-battery-charging:before {
- content: "\e40a";
-}
-.icon-battery-full:before {
- content: "\e40b";
-}
-.icon-battery-high:before {
- content: "\e40c";
-}
-.icon-battery-low:before {
- content: "\e40d";
-}
-.icon-battery-medium:before {
- content: "\e40e";
-}
-.icon-cd-1:before {
- content: "\e40f";
-}
-.icon-cd-2:before {
- content: "\e410";
-}
-.icon-chip:before {
- content: "\e411";
-}
-.icon-computer:before {
- content: "\e412";
-}
-.icon-disc:before {
- content: "\e413";
-}
-.icon-filter:before {
- content: "\e414";
-}
-.icon-floppy-disk:before {
- content: "\e415";
-}
-.icon-gameboy:before {
- content: "\e416";
-}
-.icon-harddisk-1:before {
- content: "\e417";
-}
-.icon-harddisk-2:before {
- content: "\e418";
-}
-.icon-imac:before {
- content: "\e419";
-}
-.icon-ipad-1:before {
- content: "\e41a";
-}
-.icon-ipad-2:before {
- content: "\e41b";
-}
-.icon-ipod:before {
- content: "\e41c";
-}
-.icon-joystick-1:before {
- content: "\e41d";
-}
-.icon-joystick-2:before {
- content: "\e41e";
-}
-.icon-joystick-3:before {
- content: "\e41f";
-}
-.icon-keyboard-1:before {
- content: "\e420";
-}
-.icon-keyboard-2:before {
- content: "\e421";
-}
-.icon-kindle-1:before {
- content: "\e422";
-}
-.icon-kindle-2:before {
- content: "\e423";
-}
-.icon-laptop-1:before {
- content: "\e424";
-}
-.icon-laptop-2:before {
- content: "\e425";
-}
-.icon-memory-card:before {
- content: "\e426";
-}
-.icon-mobile-phone:before {
- content: "\e427";
-}
-.icon-mouse-1:before {
- content: "\e428";
-}
-.icon-mouse-2:before {
- content: "\e429";
-}
-.icon-mp3player:before {
- content: "\e42a";
-}
-.icon-plug-1:before {
- content: "\e42b";
-}
-.icon-plug-2:before {
- content: "\e42c";
-}
-.icon-plug-slot:before {
- content: "\e42d";
-}
-.icon-printer:before {
- content: "\e42e";
-}
-.icon-projector:before {
- content: "\e42f";
-}
-.icon-remote:before {
- content: "\e430";
-}
-.icon-router:before {
- content: "\e431";
-}
-.icon-screen-1:before {
- content: "\e432";
-}
-.icon-screen-2:before {
- content: "\e433";
-}
-.icon-screen-3:before {
- content: "\e434";
-}
-.icon-screen-4:before {
- content: "\e435";
-}
-.icon-smartphone-1:before {
- content: "\e436";
-}
-.icon-television-1:before {
- content: "\e437";
-}
-.icon-typewriter-1:before {
- content: "\e438";
-}
-.icon-typewriter-2:before {
- content: "\e439";
-}
-.icon-usb-1:before {
- content: "\e43a";
-}
-.icon-usb-2:before {
- content: "\e43b";
-}
-.icon-webcam:before {
- content: "\e43c";
-}
-.icon-wireless-router-1:before {
- content: "\e43d";
-}
-.icon-wireless-router-2:before {
- content: "\e43e";
-}
-.icon-bluetooth:before {
- content: "\e43f";
-}
-.icon-ethernet:before {
- content: "\e440";
-}
-.icon-ethernet-slot:before {
- content: "\e441";
-}
-.icon-firewire-1:before {
- content: "\e442";
-}
-.icon-firewire-2:before {
- content: "\e443";
-}
-.icon-network-1:before {
- content: "\e444";
-}
-.icon-network-2:before {
- content: "\e445";
-}
-.icon-server-1:before {
- content: "\e446";
-}
-.icon-server-2:before {
- content: "\e447";
-}
-.icon-server-3:before {
- content: "\e448";
-}
-.icon-usb:before {
- content: "\e449";
-}
-.icon-wireless-signal:before {
- content: "\e44a";
-}
-.icon-book:before {
- content: "\e44b";
-}
-.icon-book-1:before {
- content: "\e44c";
-}
-.icon-book-2:before {
- content: "\e44d";
-}
-.icon-book-3:before {
- content: "\e44e";
-}
-.icon-book-4:before {
- content: "\e44f";
-}
-.icon-book-5:before {
- content: "\e450";
-}
-.icon-book-6:before {
- content: "\e451";
-}
-.icon-book-7:before {
- content: "\e452";
-}
-.icon-book-download-1:before {
- content: "\e453";
-}
-.icon-book-download-2:before {
- content: "\e454";
-}
-.icon-book-favorite-1:before {
- content: "\e455";
-}
-.icon-bookmark-1-1:before {
- content: "\e456";
-}
-.icon-bookmark-2-1:before {
- content: "\e457";
-}
-.icon-bookmark-3-1:before {
- content: "\e458";
-}
-.icon-bookmark-4-1:before {
- content: "\e459";
-}
-.icon-books-1:before {
- content: "\e45a";
-}
-.icon-books-2:before {
- content: "\e45b";
-}
-.icon-books-3:before {
- content: "\e45c";
-}
-.icon-briefcase-1:before {
- content: "\e45d";
-}
-.icon-contact-book-1:before {
- content: "\e45e";
-}
-.icon-contact-book-2:before {
- content: "\e45f";
-}
-.icon-contact-book-3:before {
- content: "\e460";
-}
-.icon-contact-book-4:before {
- content: "\e461";
-}
-.icon-copyright:before {
- content: "\e462";
-}
-.icon-creative-commons:before {
- content: "\e463";
-}
-.icon-cube:before {
- content: "\e464";
-}
-.icon-data-filter:before {
- content: "\e465";
-}
-.icon-document-box-1:before {
- content: "\e466";
-}
-.icon-document-box-2:before {
- content: "\e467";
-}
-.icon-document-box-3:before {
- content: "\e468";
-}
-.icon-drawer-1:before {
- content: "\e469";
-}
-.icon-drawer-2:before {
- content: "\e46a";
-}
-.icon-drawer-3:before {
- content: "\e46b";
-}
-.icon-envelope:before {
- content: "\e46c";
-}
-.icon-favortie-book-2:before {
- content: "\e46d";
-}
-.icon-file:before {
- content: "\e46e";
-}
-.icon-files:before {
- content: "\e46f";
-}
-.icon-filter-1:before {
- content: "\e470";
-}
-.icon-filter-2:before {
- content: "\e471";
-}
-.icon-layers-1:before {
- content: "\e472";
-}
-.icon-list-1:before {
- content: "\e473";
-}
-.icon-list-2:before {
- content: "\e474";
-}
-.icon-newspaper-1:before {
- content: "\e475";
-}
-.icon-newspaper-2:before {
- content: "\e476";
-}
-.icon-registry-1:before {
- content: "\e477";
-}
-.icon-registry-2:before {
- content: "\e478";
-}
-.icon-shield-1:before {
- content: "\e479";
-}
-.icon-shield-2:before {
- content: "\e47a";
-}
-.icon-shield-3:before {
- content: "\e47b";
-}
-.icon-sketchbook:before {
- content: "\e47c";
-}
-.icon-sound-book:before {
- content: "\e47d";
-}
-.icon-thumbnails-1:before {
- content: "\e47e";
-}
-.icon-thumbnails-2:before {
- content: "\e47f";
-}
-.icon-hierarchy-1:before {
- content: "\e480";
-}
-.icon-hierarchy-2:before {
- content: "\e481";
-}
-.icon-hierarchy-3:before {
- content: "\e482";
-}
-.icon-hierarchy-4:before {
- content: "\e483";
-}
-.icon-hierarchy-5:before {
- content: "\e484";
-}
-.icon-hierarchy-6:before {
- content: "\e485";
-}
-.icon-hierarchy-7:before {
- content: "\e486";
-}
-.icon-hierarchy-8:before {
- content: "\e487";
-}
-.icon-network-1-1:before {
- content: "\e488";
-}
-.icon-network-2-1:before {
- content: "\e489";
-}
-.icon-backpack:before {
- content: "\e48a";
-}
-.icon-balance-1:before {
- content: "\e48b";
-}
-.icon-bed:before {
- content: "\e48c";
-}
-.icon-bench:before {
- content: "\e48d";
-}
-.icon-bomb-1:before {
- content: "\e48e";
-}
-.icon-bricks:before {
- content: "\e48f";
-}
-.icon-bullets:before {
- content: "\e490";
-}
-.icon-buoy-ring:before {
- content: "\e491";
-}
-.icon-campfire:before {
- content: "\e492";
-}
-.icon-can:before {
- content: "\e493";
-}
-.icon-candle:before {
- content: "\e494";
-}
-.icon-canon:before {
- content: "\e495";
-}
-.icon-cctv-1:before {
- content: "\e496";
-}
-.icon-cctv-2:before {
- content: "\e497";
-}
-.icon-chair:before {
- content: "\e498";
-}
-.icon-chair-director:before {
- content: "\e499";
-}
-.icon-cigarette:before {
- content: "\e49a";
-}
-.icon-construction-sign:before {
- content: "\e49b";
-}
-.icon-diamond:before {
- content: "\e49c";
-}
-.icon-disabled:before {
- content: "\e49d";
-}
-.icon-door:before {
- content: "\e49e";
-}
-.icon-drawer:before {
- content: "\e49f";
-}
-.icon-driller:before {
- content: "\e4a0";
-}
-.icon-dumbbell:before {
- content: "\e4a1";
-}
-.icon-fire-extinguisher:before {
- content: "\e4a2";
-}
-.icon-flashlight:before {
- content: "\e4a3";
-}
-.icon-gas-station:before {
- content: "\e4a4";
-}
-.icon-gun:before {
- content: "\e4a5";
-}
-.icon-lamp-1:before {
- content: "\e4a6";
-}
-.icon-lamp-2:before {
- content: "\e4a7";
-}
-.icon-lamp-3:before {
- content: "\e4a8";
-}
-.icon-lamp-4:before {
- content: "\e4a9";
-}
-.icon-lightbulb-1:before {
- content: "\e4aa";
-}
-.icon-lightbulb-2:before {
- content: "\e4ab";
-}
-.icon-measuring-tape:before {
- content: "\e4ac";
-}
-.icon-mine-cart:before {
- content: "\e4ad";
-}
-.icon-missile:before {
- content: "\e4ae";
-}
-.icon-ring:before {
- content: "\e4af";
-}
-.icon-scale-1:before {
- content: "\e4b0";
-}
-.icon-shovel:before {
- content: "\e4b1";
-}
-.icon-smoke-no:before {
- content: "\e4b2";
-}
-.icon-sofa-1:before {
- content: "\e4b3";
-}
-.icon-sofa-2:before {
- content: "\e4b4";
-}
-.icon-sofa-3:before {
- content: "\e4b5";
-}
-.icon-target:before {
- content: "\e4b6";
-}
-.icon-torch:before {
- content: "\e4b7";
-}
-.icon-traffic-cone:before {
- content: "\e4b8";
-}
-.icon-traffic-light-1:before {
- content: "\e4b9";
-}
-.icon-traffic-light-2:before {
- content: "\e4ba";
-}
-.icon-treasure-1:before {
- content: "\e4bb";
-}
-.icon-treasure-2:before {
- content: "\e4bc";
-}
-.icon-trowel:before {
- content: "\e4bd";
-}
-.icon-watering-can:before {
- content: "\e4be";
-}
-.icon-weigh:before {
- content: "\e4bf";
-}
-.icon-academic-cap:before {
- content: "\e4c0";
-}
-.icon-baseball-helmet:before {
- content: "\e4c1";
-}
-.icon-beanie:before {
- content: "\e4c2";
-}
-.icon-bike-helmet:before {
- content: "\e4c3";
-}
-.icon-bow:before {
- content: "\e4c4";
-}
-.icon-cap:before {
- content: "\e4c5";
-}
-.icon-chaplin:before {
- content: "\e4c6";
-}
-.icon-chef-hat:before {
- content: "\e4c7";
-}
-.icon-cloth-hanger:before {
- content: "\e4c8";
-}
-.icon-fins:before {
- content: "\e4c9";
-}
-.icon-football-helmet:before {
- content: "\e4ca";
-}
-.icon-glasses:before {
- content: "\e4cb";
-}
-.icon-glasses-1:before {
- content: "\e4cc";
-}
-.icon-glasses-2:before {
- content: "\e4cd";
-}
-.icon-magician-hat:before {
- content: "\e4ce";
-}
-.icon-monocle-1:before {
- content: "\e4cf";
-}
-.icon-monocle-2:before {
- content: "\e4d0";
-}
-.icon-necktie:before {
- content: "\e4d1";
-}
-.icon-polo-shirt:before {
- content: "\e4d2";
-}
-.icon-safety-helmet:before {
- content: "\e4d3";
-}
-.icon-scuba-tank:before {
- content: "\e4d4";
-}
-.icon-shirt-1:before {
- content: "\e4d5";
-}
-.icon-shirt-2:before {
- content: "\e4d6";
-}
-.icon-sneakers:before {
- content: "\e4d7";
-}
-.icon-snorkel:before {
- content: "\e4d8";
-}
-.icon-sombrero:before {
- content: "\e4d9";
-}
-.icon-sunglasses:before {
- content: "\e4da";
-}
-.icon-tall-hat:before {
- content: "\e4db";
-}
-.icon-trousers:before {
- content: "\e4dc";
-}
-.icon-walking-stick:before {
- content: "\e4dd";
-}
-.icon-arrow-redo:before {
- content: "\e4de";
-}
-.icon-arrow-undo:before {
- content: "\e4df";
-}
-.icon-bold:before {
- content: "\e4e0";
-}
-.icon-columns:before {
- content: "\e4e1";
-}
-.icon-eraser:before {
- content: "\e4e2";
-}
-.icon-font-color:before {
- content: "\e4e3";
-}
-.icon-html:before {
- content: "\e4e4";
-}
-.icon-italic:before {
- content: "\e4e5";
-}
-.icon-list-1-1:before {
- content: "\e4e6";
-}
-.icon-list-2-1:before {
- content: "\e4e7";
-}
-.icon-list-3:before {
- content: "\e4e8";
-}
-.icon-list-4:before {
- content: "\e4e9";
-}
-.icon-paragraph:before {
- content: "\e4ea";
-}
-.icon-paste:before {
- content: "\e4eb";
-}
-.icon-print-preview:before {
- content: "\e4ec";
-}
-.icon-quote:before {
- content: "\e4ed";
-}
-.icon-strikethrough:before {
- content: "\e4ee";
-}
-.icon-text:before {
- content: "\e4ef";
-}
-.icon-text-wrapping-1:before {
- content: "\e4f0";
-}
-.icon-text-wrapping-2:before {
- content: "\e4f1";
-}
-.icon-text-wrapping-3:before {
- content: "\e4f2";
-}
-.icon-underline:before {
- content: "\e4f3";
-}
-.icon-align-center:before {
- content: "\e4f4";
-}
-.icon-align-left:before {
- content: "\e4f5";
-}
-.icon-align-right:before {
- content: "\e4f6";
-}
-.icon-all-caps:before {
- content: "\e4f7";
-}
-.icon-arrange-2-1:before {
- content: "\e4f8";
-}
-.icon-arrange-2-2:before {
- content: "\e4f9";
-}
-.icon-arrange-2-3:before {
- content: "\e4fa";
-}
-.icon-arrange-2-4:before {
- content: "\e4fb";
-}
-.icon-arrange-3-1:before {
- content: "\e4fc";
-}
-.icon-arrange-3-2:before {
- content: "\e4fd";
-}
-.icon-arrange-3-3:before {
- content: "\e4fe";
-}
-.icon-arrange-3-4:before {
- content: "\e4ff";
-}
-.icon-arrange-3-5:before {
- content: "\e500";
-}
-.icon-arrange-4-1:before {
- content: "\e501";
-}
-.icon-arrange-4-2:before {
- content: "\e502";
-}
-.icon-arrange-4-3:before {
- content: "\e503";
-}
-.icon-arrange-5:before {
- content: "\e504";
-}
-.icon-consolidate-all:before {
- content: "\e505";
-}
-.icon-decrease-indent-1:before {
- content: "\e506";
-}
-.icon-decrease-indent-2:before {
- content: "\e507";
-}
-.icon-horizontal-page:before {
- content: "\e508";
-}
-.icon-increase-indent-1:before {
- content: "\e509";
-}
-.icon-increase-indent-2:before {
- content: "\e50a";
-}
-.icon-justify:before {
- content: "\e50b";
-}
-.icon-leading-1:before {
- content: "\e50c";
-}
-.icon-leading-2:before {
- content: "\e50d";
-}
-.icon-left-indent:before {
- content: "\e50e";
-}
-.icon-right-indent:before {
- content: "\e50f";
-}
-.icon-small-caps:before {
- content: "\e510";
-}
-.icon-vertical-page:before {
- content: "\e511";
-}
-.icon-alt-mac:before {
- content: "\e512";
-}
-.icon-alt-windows:before {
- content: "\e513";
-}
-.icon-arrow-down:before {
- content: "\e514";
-}
-.icon-arrow-down-left:before {
- content: "\e515";
-}
-.icon-arrow-down-right:before {
- content: "\e516";
-}
-.icon-arrow-left:before {
- content: "\e517";
-}
-.icon-arrow-right:before {
- content: "\e518";
-}
-.icon-arrow-up:before {
- content: "\e519";
-}
-.icon-arrow-up-left:before {
- content: "\e51a";
-}
-.icon-arrow-up-right:before {
- content: "\e51b";
-}
-.icon-asterisk-1:before {
- content: "\e51c";
-}
-.icon-asterisk-2:before {
- content: "\e51d";
-}
-.icon-back-tab-1:before {
- content: "\e51e";
-}
-.icon-back-tab-2:before {
- content: "\e51f";
-}
-.icon-backward-delete:before {
- content: "\e520";
-}
-.icon-blank:before {
- content: "\e521";
-}
-.icon-eject:before {
- content: "\e522";
-}
-.icon-enter-1:before {
- content: "\e523";
-}
-.icon-enter-2:before {
- content: "\e524";
-}
-.icon-escape:before {
- content: "\e525";
-}
-.icon-page-down:before {
- content: "\e526";
-}
-.icon-page-up:before {
- content: "\e527";
-}
-.icon-return-1:before {
- content: "\e528";
-}
-.icon-shift:before {
- content: "\e529";
-}
-.icon-shift-2:before {
- content: "\e52a";
-}
-.icon-tab:before {
- content: "\e52b";
-}
-.icon-apple:before {
- content: "\e52c";
-}
-.icon-beer:before {
- content: "\e52d";
-}
-.icon-boil:before {
- content: "\e52e";
-}
-.icon-bottle-1:before {
- content: "\e52f";
-}
-.icon-bottle-2:before {
- content: "\e530";
-}
-.icon-bottle-3:before {
- content: "\e531";
-}
-.icon-bottle-4:before {
- content: "\e532";
-}
-.icon-bread:before {
- content: "\e533";
-}
-.icon-burger-1:before {
- content: "\e534";
-}
-.icon-burger-2:before {
- content: "\e535";
-}
-.icon-cake-1:before {
- content: "\e536";
-}
-.icon-cake-2:before {
- content: "\e537";
-}
-.icon-champagne:before {
- content: "\e538";
-}
-.icon-cheese:before {
- content: "\e539";
-}
-.icon-cocktail-1:before {
- content: "\e53a";
-}
-.icon-cocktail-2:before {
- content: "\e53b";
-}
-.icon-cocktail-3:before {
- content: "\e53c";
-}
-.icon-coffee-cup:before {
- content: "\e53d";
-}
-.icon-coffee-cup-1:before {
- content: "\e53e";
-}
-.icon-coffee-pot:before {
- content: "\e53f";
-}
-.icon-deep-fry:before {
- content: "\e540";
-}
-.icon-energy-drink:before {
- content: "\e541";
-}
-.icon-espresso-machine:before {
- content: "\e542";
-}
-.icon-food-dome:before {
- content: "\e543";
-}
-.icon-fork-and-knife:before {
- content: "\e544";
-}
-.icon-fork-and-spoon:before {
- content: "\e545";
-}
-.icon-grape:before {
- content: "\e546";
-}
-.icon-grater:before {
- content: "\e547";
-}
-.icon-grill:before {
- content: "\e548";
-}
-.icon-hot-drinks-glass:before {
- content: "\e549";
-}
-.icon-hotdog:before {
- content: "\e54a";
-}
-.icon-ice-cream-1:before {
- content: "\e54b";
-}
-.icon-ice-cream-2:before {
- content: "\e54c";
-}
-.icon-ice-cream-3:before {
- content: "\e54d";
-}
-.icon-ice-drinks-glass:before {
- content: "\e54e";
-}
-.icon-juicer:before {
- content: "\e54f";
-}
-.icon-kitchen-timer:before {
- content: "\e550";
-}
-.icon-milk:before {
- content: "\e551";
-}
-.icon-orange:before {
- content: "\e552";
-}
-.icon-oven:before {
- content: "\e553";
-}
-.icon-pan-fry:before {
- content: "\e554";
-}
-.icon-pepper-salt:before {
- content: "\e555";
-}
-.icon-pizza:before {
- content: "\e556";
-}
-.icon-pop-corn:before {
- content: "\e557";
-}
-.icon-serving:before {
- content: "\e558";
-}
-.icon-soda:before {
- content: "\e559";
-}
-.icon-soda-can-1:before {
- content: "\e55a";
-}
-.icon-soda-can-2:before {
- content: "\e55b";
-}
-.icon-steam:before {
- content: "\e55c";
-}
-.icon-tea-pot:before {
- content: "\e55d";
-}
-.icon-thermometer-high:before {
- content: "\e55e";
-}
-.icon-thermometer-low:before {
- content: "\e55f";
-}
-.icon-thermometer-medium:before {
- content: "\e560";
-}
-.icon-water:before {
- content: "\e561";
-}
-.icon-wine:before {
- content: "\e562";
-}
-.icon-ambulance:before {
- content: "\e563";
-}
-.icon-beaker-1:before {
- content: "\e564";
-}
-.icon-beaker-2:before {
- content: "\e565";
-}
-.icon-blood:before {
- content: "\e566";
-}
-.icon-drug:before {
- content: "\e567";
-}
-.icon-first-aid:before {
- content: "\e568";
-}
-.icon-hashish:before {
- content: "\e569";
-}
-.icon-heart-pulse:before {
- content: "\e56a";
-}
-.icon-hospital-1:before {
- content: "\e56b";
-}
-.icon-hospital-2:before {
- content: "\e56c";
-}
-.icon-hospital-sign-1:before {
- content: "\e56d";
-}
-.icon-hospital-sign-2:before {
- content: "\e56e";
-}
-.icon-hospital-sign-3:before {
- content: "\e56f";
-}
-.icon-medicine:before {
- content: "\e570";
-}
-.icon-microscope:before {
- content: "\e571";
-}
-.icon-mortar-and-pestle:before {
- content: "\e572";
-}
-.icon-plaster:before {
- content: "\e573";
-}
-.icon-pulse-graph-1:before {
- content: "\e574";
-}
-.icon-pulse-graph-2:before {
- content: "\e575";
-}
-.icon-pulse-graph-3:before {
- content: "\e576";
-}
-.icon-red-cross:before {
- content: "\e577";
-}
-.icon-stethoscope:before {
- content: "\e578";
-}
-.icon-syringe:before {
- content: "\e579";
-}
-.icon-yin-yang:before {
- content: "\e57a";
-}
-.icon-balloon:before {
- content: "\e57b";
-}
-.icon-briefcase-lock:before {
- content: "\e57c";
-}
-.icon-card:before {
- content: "\e57d";
-}
-.icon-cards-1:before {
- content: "\e57e";
-}
-.icon-cards-2:before {
- content: "\e57f";
-}
-.icon-curtain:before {
- content: "\e580";
-}
-.icon-dice-1:before {
- content: "\e581";
-}
-.icon-dice-2:before {
- content: "\e582";
-}
-.icon-pacman:before {
- content: "\e583";
-}
-.icon-pacman-ghost:before {
- content: "\e584";
-}
-.icon-sign-1:before {
- content: "\e585";
-}
-.icon-smiley-happy:before {
- content: "\e586";
-}
-.icon-smiley-sad:before {
- content: "\e587";
-}
-.icon-smileys:before {
- content: "\e588";
-}
-.icon-suitcase-1:before {
- content: "\e589";
-}
-.icon-suitcase-2:before {
- content: "\e58a";
-}
-.icon-tetris:before {
- content: "\e58b";
-}
-.icon-ticket-1:before {
- content: "\e58c";
-}
-.icon-ticket-2:before {
- content: "\e58d";
-}
-.icon-ticket-3:before {
- content: "\e58e";
-}
-.icon-virus:before {
- content: "\e58f";
-}
-.icon-cloud-1:before {
- content: "\e590";
-}
-.icon-cloud-lightning:before {
- content: "\e591";
-}
-.icon-clouds:before {
- content: "\e592";
-}
-.icon-first-quarter-half-moon:before {
- content: "\e593";
-}
-.icon-full-moon:before {
- content: "\e594";
-}
-.icon-hail:before {
- content: "\e595";
-}
-.icon-heavy-rain:before {
- content: "\e596";
-}
-.icon-moon-cloud:before {
- content: "\e597";
-}
-.icon-rain:before {
- content: "\e598";
-}
-.icon-rain-lightning:before {
- content: "\e599";
-}
-.icon-snow:before {
- content: "\e59a";
-}
-.icon-sun:before {
- content: "\e59b";
-}
-.icon-sun-cloud:before {
- content: "\e59c";
-}
-.icon-thermometer:before {
- content: "\e59d";
-}
-.icon-third-quarter-half-moon:before {
- content: "\e59e";
-}
-.icon-umbrella:before {
- content: "\e59f";
-}
-.icon-waning-crescent-moon:before {
- content: "\e5a0";
-}
-.icon-waning-gibbous-moon:before {
- content: "\e5a1";
-}
-.icon-waxing-crescent-moon:before {
- content: "\e5a2";
-}
-.icon-waxing-gibbous-moon:before {
- content: "\e5a3";
-}
-.icon-bicycle:before {
- content: "\e5a4";
-}
-.icon-bus-1:before {
- content: "\e5a5";
-}
-.icon-bus-2:before {
- content: "\e5a6";
-}
-.icon-car-1:before {
- content: "\e5a7";
-}
-.icon-car-2:before {
- content: "\e5a8";
-}
-.icon-car-3:before {
- content: "\e5a9";
-}
-.icon-car-4:before {
- content: "\e5aa";
-}
-.icon-helicopter:before {
- content: "\e5ab";
-}
-.icon-mountain-bike:before {
- content: "\e5ac";
-}
-.icon-pickup:before {
- content: "\e5ad";
-}
-.icon-plane-1:before {
- content: "\e5ae";
-}
-.icon-plane-2:before {
- content: "\e5af";
-}
-.icon-plane-landing:before {
- content: "\e5b0";
-}
-.icon-plane-takeoff:before {
- content: "\e5b1";
-}
-.icon-road:before {
- content: "\e5b2";
-}
-.icon-road-bike:before {
- content: "\e5b3";
-}
-.icon-rocket:before {
- content: "\e5b4";
-}
-.icon-scooter:before {
- content: "\e5b5";
-}
-.icon-ship:before {
- content: "\e5b6";
-}
-.icon-train:before {
- content: "\e5b7";
-}
-.icon-tram:before {
- content: "\e5b8";
-}
-.icon-cactus:before {
- content: "\e5b9";
-}
-.icon-clover:before {
- content: "\e5ba";
-}
-.icon-flower:before {
- content: "\e5bb";
-}
-.icon-hand-eco:before {
- content: "\e5bc";
-}
-.icon-hand-globe:before {
- content: "\e5bd";
-}
-.icon-leaf:before {
- content: "\e5be";
-}
-.icon-light-eco:before {
- content: "\e5bf";
-}
-.icon-potted-plant-1:before {
- content: "\e5c0";
-}
-.icon-potted-plant-2:before {
- content: "\e5c1";
-}
-.icon-2-fingers-down-swipe:before {
- content: "\e5c2";
-}
-.icon-2-fingers-horizontal-swipe:before {
- content: "\e5c3";
-}
-.icon-2-fingers-left-swipe:before {
- content: "\e5c4";
-}
-.icon-2-fingers-omnidirectional-swipe:before {
- content: "\e5c5";
-}
-.icon-2-fingers-right-swipe:before {
- content: "\e5c6";
-}
-.icon-2-fingers-tab-hold:before {
- content: "\e5c7";
-}
-.icon-2-fingers-tap:before {
- content: "\e5c8";
-}
-.icon-2-fingers-up-swipe:before {
- content: "\e5c9";
-}
-.icon-2-fingers-vertical-swipe:before {
- content: "\e5ca";
-}
-.icon-2finger-double-tap:before {
- content: "\e5cb";
-}
-.icon-double-tap:before {
- content: "\e5cc";
-}
-.icon-drag-down:before {
- content: "\e5cd";
-}
-.icon-drag-horizontal:before {
- content: "\e5ce";
-}
-.icon-drag-left:before {
- content: "\e5cf";
-}
-.icon-drag-right:before {
- content: "\e5d0";
-}
-.icon-drag-up:before {
- content: "\e5d1";
-}
-.icon-drag-vertical:before {
- content: "\e5d2";
-}
-.icon-filck-down:before {
- content: "\e5d3";
-}
-.icon-flick-up:before {
- content: "\e5d4";
-}
-.icon-horizontal-flick:before {
- content: "\e5d5";
-}
-.icon-left-flick:before {
- content: "\e5d6";
-}
-.icon-omnidirectional-drag:before {
- content: "\e5d7";
-}
-.icon-omnidirectional-flick:before {
- content: "\e5d8";
-}
-.icon-omnidirectional-swipe:before {
- content: "\e5d9";
-}
-.icon-pinch:before {
- content: "\e5da";
-}
-.icon-right-flick:before {
- content: "\e5db";
-}
-.icon-rotate-clockwise:before {
- content: "\e5dc";
-}
-.icon-rotate-counterclockwise:before {
- content: "\e5dd";
-}
-.icon-spread:before {
- content: "\e5de";
-}
-.icon-swipe-down:before {
- content: "\e5df";
-}
-.icon-swipe-horizontal:before {
- content: "\e5e0";
-}
-.icon-swipe-left:before {
- content: "\e5e1";
-}
-.icon-swipe-right:before {
- content: "\e5e2";
-}
-.icon-swipe-up:before {
- content: "\e5e3";
-}
-.icon-swipe-vertical:before {
- content: "\e5e4";
-}
-.icon-tap:before {
- content: "\e5e5";
-}
-.icon-tap-hold:before {
- content: "\e5e6";
-}
-.icon-vertical-flick:before {
- content: "\e5e7";
-}
-.icon-arrow-1-1:before {
- content: "\e5e8";
-}
-.icon-arrow-2-1:before {
- content: "\e5e9";
-}
-.icon-arrow-3:before {
- content: "\e5ea";
-}
-.icon-arrow-4:before {
- content: "\e5eb";
-}
-.icon-arrow-5:before {
- content: "\e5ec";
-}
-.icon-arrow-6:before {
- content: "\e5ed";
-}
-.icon-arrow-7:before {
- content: "\e5ee";
-}
-.icon-arrow-8:before {
- content: "\e5ef";
-}
-.icon-arrow-9:before {
- content: "\e5f0";
-}
-.icon-arrow-10:before {
- content: "\e5f1";
-}
-.icon-arrow-11:before {
- content: "\e5f2";
-}
-.icon-arrow-12:before {
- content: "\e5f3";
-}
-.icon-arrow-13:before {
- content: "\e5f4";
-}
-.icon-arrow-14:before {
- content: "\e5f5";
-}
-.icon-arrow-15:before {
- content: "\e5f6";
-}
-.icon-arrow-16:before {
- content: "\e5f7";
-}
-.icon-arrow-17:before {
- content: "\e5f8";
-}
-.icon-arrow-18:before {
- content: "\e5f9";
-}
-.icon-arrow-19:before {
- content: "\e5fa";
-}
-.icon-arrow-20:before {
- content: "\e5fb";
-}
-.icon-arrow-21:before {
- content: "\e5fc";
-}
-.icon-arrow-22:before {
- content: "\e5fd";
-}
-.icon-arrow-23:before {
- content: "\e5fe";
-}
-.icon-arrow-24:before {
- content: "\e5ff";
-}
-.icon-arrow-25:before {
- content: "\e600";
-}
-.icon-arrow-26:before {
- content: "\e601";
-}
-.icon-arrow-27:before {
- content: "\e602";
-}
-.icon-arrow-28:before {
- content: "\e603";
-}
-.icon-arrow-29:before {
- content: "\e604";
-}
-.icon-arrow-30:before {
- content: "\e605";
-}
-.icon-arrow-31:before {
- content: "\e606";
-}
-.icon-arrow-32:before {
- content: "\e607";
-}
-.icon-arrow-33:before {
- content: "\e608";
-}
-.icon-arrow-34:before {
- content: "\e609";
-}
-.icon-arrow-35:before {
- content: "\e60a";
-}
-.icon-arrow-36:before {
- content: "\e60b";
-}
-.icon-arrow-37:before {
- content: "\e60c";
-}
-.icon-arrow-38:before {
- content: "\e60d";
-}
-.icon-arrow-39:before {
- content: "\e60e";
-}
-.icon-arrow-40:before {
- content: "\e60f";
-}
-.icon-arrow-41:before {
- content: "\e610";
-}
-.icon-arrow-42:before {
- content: "\e611";
-}
-.icon-arrow-43:before {
- content: "\e612";
-}
-.icon-arrow-44:before {
- content: "\e613";
-}
-.icon-arrow-45:before {
- content: "\e614";
-}
-.icon-arrow-46:before {
- content: "\e615";
-}
-.icon-arrow-47:before {
- content: "\e616";
-}
-.icon-arrow-48:before {
- content: "\e617";
-}
-.icon-arrow-49:before {
- content: "\e618";
-}
-.icon-arrow-50:before {
- content: "\e619";
-}
-.icon-arrow-51:before {
- content: "\e61a";
-}
-.icon-arrow-52:before {
- content: "\e61b";
-}
-.icon-arrow-53:before {
- content: "\e61c";
-}
-.icon-arrow-54:before {
- content: "\e61d";
-}
-.icon-arrow-55:before {
- content: "\e61e";
-}
-.icon-arrow-56:before {
- content: "\e61f";
-}
-.icon-arrow-57:before {
- content: "\e620";
-}
-.icon-arrow-58:before {
- content: "\e621";
-}
-.icon-arrow-59:before {
- content: "\e622";
-}
-.icon-arrow-60:before {
- content: "\e623";
-}
-.icon-arrow-61:before {
- content: "\e624";
-}
-.icon-arrow-62:before {
- content: "\e625";
-}
-.icon-arrow-63:before {
- content: "\e626";
-}
-.icon-arrow-64:before {
- content: "\e627";
-}
-.icon-arrow-65:before {
- content: "\e628";
-}
-.icon-arrow-66:before {
- content: "\e629";
-}
-.icon-arrow-67:before {
- content: "\e62a";
-}
-.icon-arrow-68:before {
- content: "\e62b";
-}
-.icon-arrow-69:before {
- content: "\e62c";
-}
-.icon-arrow-70:before {
- content: "\e62d";
-}
-.icon-arrow-71:before {
- content: "\e62e";
-}
-.icon-arrow-72:before {
- content: "\e62f";
-}
-.icon-arrow-circle-1:before {
- content: "\e630";
-}
-.icon-arrow-circle-2:before {
- content: "\e631";
-}
-.icon-arrow-circle-3:before {
- content: "\e632";
-}
-.icon-arrow-circle-4:before {
- content: "\e633";
-}
-.icon-arrow-circle-5:before {
- content: "\e634";
-}
-.icon-arrow-circle-6:before {
- content: "\e635";
-}
-.icon-arrow-circle-7:before {
- content: "\e636";
-}
-.icon-arrow-circle-8:before {
- content: "\e637";
-}
-.icon-arrow-circle-9:before {
- content: "\e638";
-}
-.icon-arrow-circle-10:before {
- content: "\e639";
-}
-.icon-arrow-circle-11:before {
- content: "\e63a";
-}
-.icon-arrow-circle-12:before {
- content: "\e63b";
-}
-.icon-arrow-circle-13:before {
- content: "\e63c";
-}
-.icon-arrow-circle-14:before {
- content: "\e63d";
-}
-.icon-arrow-circle-15:before {
- content: "\e63e";
-}
-.icon-arrow-circle-16:before {
- content: "\e63f";
-}
-.icon-arrow-circle-17:before {
- content: "\e640";
-}
-.icon-arrow-circle-18:before {
- content: "\e641";
-}
-.icon-arrow-circle-19:before {
- content: "\e642";
-}
-.icon-arrow-circle-20:before {
- content: "\e643";
-}
-.icon-arrow-circle-21:before {
- content: "\e644";
-}
-.icon-arrow-circle-22:before {
- content: "\e645";
-}
-.icon-arrow-circle-23:before {
- content: "\e646";
-}
-.icon-arrow-circle-24:before {
- content: "\e647";
-}
-.icon-arrow-circle-25:before {
- content: "\e648";
-}
-.icon-arrow-circle-26:before {
- content: "\e649";
-}
-.icon-arrow-circle-27:before {
- content: "\e64a";
-}
-.icon-arrow-circle-28:before {
- content: "\e64b";
-}
-.icon-arrow-circle-29:before {
- content: "\e64c";
-}
-.icon-arrow-circle-30:before {
- content: "\e64d";
-}
-.icon-arrow-delete-1:before {
- content: "\e64e";
-}
-.icon-arrow-delete-2:before {
- content: "\e64f";
-}
-.icon-arrow-dot-1:before {
- content: "\e650";
-}
-.icon-arrow-dot-2:before {
- content: "\e651";
-}
-.icon-arrow-dot-3:before {
- content: "\e652";
-}
-.icon-arrow-dot-4:before {
- content: "\e653";
-}
-.icon-arrow-dot-5:before {
- content: "\e654";
-}
-.icon-arrow-dot-6:before {
- content: "\e655";
-}
-.icon-arrow-rectangle-1:before {
- content: "\e656";
-}
-.icon-arrow-rectangle-2:before {
- content: "\e657";
-}
-.icon-arrow-rectangle-3:before {
- content: "\e658";
-}
-.icon-arrow-rectangle-4:before {
- content: "\e659";
-}
-.icon-arrow-rectangle-5:before {
- content: "\e65a";
-}
-.icon-arrow-rectangle-6:before {
- content: "\e65b";
-}
-.icon-arrow-rectangle-7:before {
- content: "\e65c";
-}
-.icon-arrow-rectangle-8:before {
- content: "\e65d";
-}
-.icon-arrow-rectangle-9:before {
- content: "\e65e";
-}
-.icon-arrow-rectangle-10:before {
- content: "\e65f";
-}
-.icon-arrow-rectangle-11:before {
- content: "\e660";
-}
-.icon-arrow-rectangle-12:before {
- content: "\e661";
-}
-.icon-arrow-rectangle-13:before {
- content: "\e662";
-}
-.icon-arrow-rectangle-14:before {
- content: "\e663";
-}
-.icon-arrow-rectangle-15:before {
- content: "\e664";
-}
-.icon-arrow-rectangle-16:before {
- content: "\e665";
-}
-.icon-arrow-rectangle-17:before {
- content: "\e666";
-}
-.icon-arrow-rectangle-18:before {
- content: "\e667";
-}
-.icon-arrow-rectangle-19:before {
- content: "\e668";
-}
-.icon-arrow-rectangle-20:before {
- content: "\e669";
-}
diff --git a/app/assets/stylesheets/boot/streamline-icons.scss.erb b/app/assets/stylesheets/boot/streamline-icons.scss.erb
new file mode 100644
index 000000000..680509025
--- /dev/null
+++ b/app/assets/stylesheets/boot/streamline-icons.scss.erb
@@ -0,0 +1,4964 @@
+<% # License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later %>
+@charset "UTF-8";
+
+$path: "/assets/Streamline";
+
+@font-face {
+ font-family: "streamline-30px";
+ src:url('<%= asset_path("Streamline/streamline-30px.woff") %>');
+ font-weight: normal;
+ font-style: normal;
+}
+
+[data-icon]:before {
+ font-family: "streamline-30px" !important;
+ content: attr(data-icon);
+ font-style: normal !important;
+ font-weight: normal !important;
+ font-variant: normal !important;
+ text-transform: none !important;
+ speak: none;
+ line-height: 1;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+[class^="icon-"]:before,
+[class*=" icon-"]:before {
+ font-family: "streamline-30px" !important;
+ font-style: normal !important;
+ font-weight: normal !important;
+ font-variant: normal !important;
+ text-transform: none !important;
+ speak: none;
+ line-height: 1;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+.icon-aim-1:before {
+ content: "\e000";
+}
+.icon-aim-2:before {
+ content: "\e001";
+}
+.icon-aim-3:before {
+ content: "\e002";
+}
+.icon-bin-1:before {
+ content: "\e003";
+}
+.icon-bin-2:before {
+ content: "\e004";
+}
+.icon-binocular:before {
+ content: "\e005";
+}
+.icon-bomb:before {
+ content: "\e006";
+}
+.icon-clip-1:before {
+ content: "\e007";
+}
+.icon-clip-2:before {
+ content: "\e008";
+}
+.icon-cutter:before {
+ content: "\e009";
+}
+.icon-delete-1:before {
+ content: "\e00a";
+}
+.icon-delete-2:before {
+ content: "\e00b";
+}
+.icon-edit-1:before {
+ content: "\e00c";
+}
+.icon-edit-2:before {
+ content: "\e00d";
+}
+.icon-edit-3:before {
+ content: "\e00e";
+}
+.icon-hide:before {
+ content: "\e00f";
+}
+.icon-ink:before {
+ content: "\e010";
+}
+.icon-key-1:before {
+ content: "\e011";
+}
+.icon-key-2:before {
+ content: "\e012";
+}
+.icon-link-1:before {
+ content: "\e013";
+}
+.icon-link-2:before {
+ content: "\e014";
+}
+.icon-link-3:before {
+ content: "\e015";
+}
+.icon-link-broken-1:before {
+ content: "\e016";
+}
+.icon-link-broken-2:before {
+ content: "\e017";
+}
+.icon-lock-1:before {
+ content: "\e018";
+}
+.icon-lock-2:before {
+ content: "\e019";
+}
+.icon-lock-3:before {
+ content: "\e01a";
+}
+.icon-lock-4:before {
+ content: "\e01b";
+}
+.icon-lock-5:before {
+ content: "\e01c";
+}
+.icon-lock-unlock-1:before {
+ content: "\e01d";
+}
+.icon-lock-unlock-2:before {
+ content: "\e01e";
+}
+.icon-magnifier:before {
+ content: "\e01f";
+}
+.icon-pen-1:before {
+ content: "\e020";
+}
+.icon-pen-2:before {
+ content: "\e021";
+}
+.icon-pen-3:before {
+ content: "\e022";
+}
+.icon-pen-4:before {
+ content: "\e023";
+}
+.icon-pencil-1:before {
+ content: "\e024";
+}
+.icon-pencil-2:before {
+ content: "\e025";
+}
+.icon-pencil-3:before {
+ content: "\e026";
+}
+.icon-pin-1:before {
+ content: "\e027";
+}
+.icon-pin-2:before {
+ content: "\e028";
+}
+.icon-power-1:before {
+ content: "\e029";
+}
+.icon-power-2:before {
+ content: "\e02a";
+}
+.icon-preview-1:before {
+ content: "\e02b";
+}
+.icon-preview-2:before {
+ content: "\e02c";
+}
+.icon-scissor-1:before {
+ content: "\e02d";
+}
+.icon-scissor-2:before {
+ content: "\e02e";
+}
+.icon-skull-1:before {
+ content: "\e02f";
+}
+.icon-skull-2:before {
+ content: "\e030";
+}
+.icon-type-1:before {
+ content: "\e031";
+}
+.icon-type-2:before {
+ content: "\e032";
+}
+.icon-type-3:before {
+ content: "\e033";
+}
+.icon-type-4:before {
+ content: "\e034";
+}
+.icon-zoom-area:before {
+ content: "\e035";
+}
+.icon-zoom-in:before {
+ content: "\e036";
+}
+.icon-zoom-out:before {
+ content: "\e037";
+}
+.icon-cursor-1:before {
+ content: "\e038";
+}
+.icon-cursor-2:before {
+ content: "\e039";
+}
+.icon-cursor-3:before {
+ content: "\e03a";
+}
+.icon-cursor-6:before {
+ content: "\e03b";
+}
+.icon-cursor-move:before {
+ content: "\e03c";
+}
+.icon-cursor-select-area:before {
+ content: "\e03d";
+}
+.icon-cursors:before {
+ content: "\e03e";
+}
+.icon-hand:before {
+ content: "\e03f";
+}
+.icon-hand-block:before {
+ content: "\e040";
+}
+.icon-hand-grab-1:before {
+ content: "\e041";
+}
+.icon-hand-grab-2:before {
+ content: "\e042";
+}
+.icon-hand-point:before {
+ content: "\e043";
+}
+.icon-hand-touch-1:before {
+ content: "\e044";
+}
+.icon-hand-touch-2:before {
+ content: "\e045";
+}
+.icon-hand-touch-3:before {
+ content: "\e046";
+}
+.icon-hand-touch-4:before {
+ content: "\e047";
+}
+.icon-bookmark-1:before {
+ content: "\e048";
+}
+.icon-bookmark-2:before {
+ content: "\e049";
+}
+.icon-bookmark-3:before {
+ content: "\e04a";
+}
+.icon-bookmark-4:before {
+ content: "\e04b";
+}
+.icon-tag-1:before {
+ content: "\e04c";
+}
+.icon-tag-2:before {
+ content: "\e04d";
+}
+.icon-tag-add:before {
+ content: "\e04e";
+}
+.icon-tag-delete:before {
+ content: "\e04f";
+}
+.icon-tags-1:before {
+ content: "\e050";
+}
+.icon-tags-2:before {
+ content: "\e051";
+}
+.icon-anchor-point-1:before {
+ content: "\e052";
+}
+.icon-anchor-point-2:before {
+ content: "\e053";
+}
+.icon-arrange-1:before {
+ content: "\e054";
+}
+.icon-arrange-2:before {
+ content: "\e055";
+}
+.icon-board:before {
+ content: "\e056";
+}
+.icon-brush-1:before {
+ content: "\e057";
+}
+.icon-brush-2:before {
+ content: "\e058";
+}
+.icon-bucket:before {
+ content: "\e059";
+}
+.icon-crop:before {
+ content: "\e05a";
+}
+.icon-dropper-1:before {
+ content: "\e05b";
+}
+.icon-dropper-2:before {
+ content: "\e05c";
+}
+.icon-dropper-3:before {
+ content: "\e05d";
+}
+.icon-glue:before {
+ content: "\e05e";
+}
+.icon-grid:before {
+ content: "\e05f";
+}
+.icon-layers:before {
+ content: "\e060";
+}
+.icon-magic-wand-1:before {
+ content: "\e061";
+}
+.icon-magic-wand-2:before {
+ content: "\e062";
+}
+.icon-magnet:before {
+ content: "\e063";
+}
+.icon-marker:before {
+ content: "\e064";
+}
+.icon-palette:before {
+ content: "\e065";
+}
+.icon-pen-5:before {
+ content: "\e066";
+}
+.icon-pen-6:before {
+ content: "\e067";
+}
+.icon-quill:before {
+ content: "\e068";
+}
+.icon-reflect:before {
+ content: "\e069";
+}
+.icon-roller:before {
+ content: "\e06a";
+}
+.icon-ruler-1:before {
+ content: "\e06b";
+}
+.icon-ruler-2:before {
+ content: "\e06c";
+}
+.icon-scale-diagonal-1:before {
+ content: "\e06d";
+}
+.icon-scale-diagonal-2:before {
+ content: "\e06e";
+}
+.icon-scale-horizontal:before {
+ content: "\e06f";
+}
+.icon-scale-tool-1:before {
+ content: "\e070";
+}
+.icon-scale-tool-2:before {
+ content: "\e071";
+}
+.icon-scale-tool-3:before {
+ content: "\e072";
+}
+.icon-scale-vertical:before {
+ content: "\e073";
+}
+.icon-shear-tool:before {
+ content: "\e074";
+}
+.icon-spray:before {
+ content: "\e075";
+}
+.icon-stamp:before {
+ content: "\e076";
+}
+.icon-stationery-1:before {
+ content: "\e077";
+}
+.icon-stationery-2:before {
+ content: "\e078";
+}
+.icon-stationery-3:before {
+ content: "\e079";
+}
+.icon-vector:before {
+ content: "\e07a";
+}
+.icon-award-1:before {
+ content: "\e07b";
+}
+.icon-award-2:before {
+ content: "\e07c";
+}
+.icon-award-3:before {
+ content: "\e07d";
+}
+.icon-award-4:before {
+ content: "\e07e";
+}
+.icon-award-5:before {
+ content: "\e07f";
+}
+.icon-award-6:before {
+ content: "\e080";
+}
+.icon-crown-1:before {
+ content: "\e081";
+}
+.icon-crown-2:before {
+ content: "\e082";
+}
+.icon-crown-3:before {
+ content: "\e083";
+}
+.icon-fire:before {
+ content: "\e084";
+}
+.icon-flag-1:before {
+ content: "\e085";
+}
+.icon-flag-2:before {
+ content: "\e086";
+}
+.icon-flag-3:before {
+ content: "\e087";
+}
+.icon-flag-4:before {
+ content: "\e088";
+}
+.icon-flag-5:before {
+ content: "\e089";
+}
+.icon-flag-6:before {
+ content: "\e08a";
+}
+.icon-flag-7:before {
+ content: "\e08b";
+}
+.icon-flag-8:before {
+ content: "\e08c";
+}
+.icon-google-plus-1:before {
+ content: "\e08d";
+}
+.icon-google-plus-2:before {
+ content: "\e08e";
+}
+.icon-hand-like-1:before {
+ content: "\e08f";
+}
+.icon-hand-like-2:before {
+ content: "\e090";
+}
+.icon-hand-unlike-1:before {
+ content: "\e091";
+}
+.icon-hand-unlike-2:before {
+ content: "\e092";
+}
+.icon-heart-1:before {
+ content: "\e093";
+}
+.icon-heart-2:before {
+ content: "\e094";
+}
+.icon-heart-angel:before {
+ content: "\e095";
+}
+.icon-heart-broken:before {
+ content: "\e096";
+}
+.icon-heart-minus:before {
+ content: "\e097";
+}
+.icon-heart-plus:before {
+ content: "\e098";
+}
+.icon-present:before {
+ content: "\e099";
+}
+.icon-rank-1:before {
+ content: "\e09a";
+}
+.icon-rank-2:before {
+ content: "\e09b";
+}
+.icon-ribbon:before {
+ content: "\e09c";
+}
+.icon-star-1:before {
+ content: "\e09d";
+}
+.icon-star-2:before {
+ content: "\e09e";
+}
+.icon-star-3:before {
+ content: "\e09f";
+}
+.icon-star-4:before {
+ content: "\e0a0";
+}
+.icon-star-5:before {
+ content: "\e0a1";
+}
+.icon-star-6:before {
+ content: "\e0a2";
+}
+.icon-star-7:before {
+ content: "\e0a3";
+}
+.icon-star-8:before {
+ content: "\e0a4";
+}
+.icon-star-9:before {
+ content: "\e0a5";
+}
+.icon-star-10:before {
+ content: "\e0a6";
+}
+.icon-trophy:before {
+ content: "\e0a7";
+}
+.icon-baloon:before {
+ content: "\e0a8";
+}
+.icon-bubble-1:before {
+ content: "\e0a9";
+}
+.icon-bubble-2:before {
+ content: "\e0aa";
+}
+.icon-bubble-add-1:before {
+ content: "\e0ab";
+}
+.icon-bubble-add-2:before {
+ content: "\e0ac";
+}
+.icon-bubble-add-3:before {
+ content: "\e0ad";
+}
+.icon-bubble-ask-1:before {
+ content: "\e0ae";
+}
+.icon-bubble-ask-2:before {
+ content: "\e0af";
+}
+.icon-bubble-attention-2:before {
+ content: "\e0b0";
+}
+.icon-bubble-attention-3:before {
+ content: "\e0b1";
+}
+.icon-bubble-attention-4:before {
+ content: "\e0b2";
+}
+.icon-bubble-attention-6:before {
+ content: "\e0b3";
+}
+.icon-bubble-attention-7:before {
+ content: "\e0b4";
+}
+.icon-bubble-block-1:before {
+ content: "\e0b5";
+}
+.icon-bubble-block-2:before {
+ content: "\e0b6";
+}
+.icon-bubble-block-3:before {
+ content: "\e0b7";
+}
+.icon-bubble-chat-1:before {
+ content: "\e0b8";
+}
+.icon-bubble-chat-2:before {
+ content: "\e0b9";
+}
+.icon-bubble-check-1:before {
+ content: "\e0ba";
+}
+.icon-bubble-check-2:before {
+ content: "\e0bb";
+}
+.icon-bubble-check-3:before {
+ content: "\e0bc";
+}
+.icon-bubble-comment-1:before {
+ content: "\e0bd";
+}
+.icon-bubble-comment-2:before {
+ content: "\e0be";
+}
+.icon-bubble-conversation-1:before {
+ content: "\e0bf";
+}
+.icon-bubble-conversation-2:before {
+ content: "\e0c0";
+}
+.icon-bubble-conversation-3:before {
+ content: "\e0c1";
+}
+.icon-bubble-conversation-4:before {
+ content: "\e0c2";
+}
+.icon-bubble-conversation-5:before {
+ content: "\e0c3";
+}
+.icon-bubble-conversation-6:before {
+ content: "\e0c4";
+}
+.icon-bubble-delete-1:before {
+ content: "\e0c5";
+}
+.icon-bubble-delete-2:before {
+ content: "\e0c6";
+}
+.icon-bubble-delete-3:before {
+ content: "\e0c7";
+}
+.icon-bubble-edit-1:before {
+ content: "\e0c8";
+}
+.icon-bubble-edit-2:before {
+ content: "\e0c9";
+}
+.icon-bubble-edit-3:before {
+ content: "\e0ca";
+}
+.icon-bubble-heart-1:before {
+ content: "\e0cb";
+}
+.icon-bubble-heart-2:before {
+ content: "\e0cc";
+}
+.icon-bubble-information:before {
+ content: "\e0cd";
+}
+.icon-bubble-information-1:before {
+ content: "\e0ce";
+}
+.icon-bubble-minus-1:before {
+ content: "\e0cf";
+}
+.icon-bubble-minus-2:before {
+ content: "\e0d0";
+}
+.icon-bubble-minus-3:before {
+ content: "\e0d1";
+}
+.icon-bubble-quote-1:before {
+ content: "\e0d2";
+}
+.icon-bubble-quote-2:before {
+ content: "\e0d3";
+}
+.icon-bubble-smiley-1:before {
+ content: "\e0d4";
+}
+.icon-bubble-smiley-2:before {
+ content: "\e0d5";
+}
+.icon-bubble-smiley-3:before {
+ content: "\e0d6";
+}
+.icon-bubble-smiley-4:before {
+ content: "\e0d7";
+}
+.icon-bubble-star-1:before {
+ content: "\e0d8";
+}
+.icon-bubble-star-2:before {
+ content: "\e0d9";
+}
+.icon-bubble-star-3:before {
+ content: "\e0da";
+}
+.icon-chat-1:before {
+ content: "\e0db";
+}
+.icon-chat-2:before {
+ content: "\e0dc";
+}
+.icon-chat-3:before {
+ content: "\e0dd";
+}
+.icon-chat-4:before {
+ content: "\e0de";
+}
+.icon-chat-5:before {
+ content: "\e0df";
+}
+.icon-chat-6:before {
+ content: "\e0e0";
+}
+.icon-chat-7:before {
+ content: "\e0e1";
+}
+.icon-smiley-happy-1:before {
+ content: "\e0e2";
+}
+.icon-smiley-happy-2:before {
+ content: "\e0e3";
+}
+.icon-smiley-happy-3:before {
+ content: "\e0e4";
+}
+.icon-smiley-happy-4:before {
+ content: "\e0e5";
+}
+.icon-smiley-happy-5:before {
+ content: "\e0e6";
+}
+.icon-smiley-sad-1:before {
+ content: "\e0e7";
+}
+.icon-smiley-surprise:before {
+ content: "\e0e8";
+}
+.icon-smiley-wink:before {
+ content: "\e0e9";
+}
+.icon-call-1:before {
+ content: "\e0ea";
+}
+.icon-call-2:before {
+ content: "\e0eb";
+}
+.icon-call-3:before {
+ content: "\e0ec";
+}
+.icon-call-4:before {
+ content: "\e0ed";
+}
+.icon-call-add:before {
+ content: "\e0ee";
+}
+.icon-call-block:before {
+ content: "\e0ef";
+}
+.icon-call-delete:before {
+ content: "\e0f0";
+}
+.icon-call-in:before {
+ content: "\e0f1";
+}
+.icon-call-minus:before {
+ content: "\e0f2";
+}
+.icon-call-out:before {
+ content: "\e0f3";
+}
+.icon-contact:before {
+ content: "\e0f4";
+}
+.icon-fax:before {
+ content: "\e0f5";
+}
+.icon-hang-up:before {
+ content: "\e0f6";
+}
+.icon-message:before {
+ content: "\e0f7";
+}
+.icon-mobile-phone-1:before {
+ content: "\e0f8";
+}
+.icon-mobile-phone-2:before {
+ content: "\e0f9";
+}
+.icon-phone-1:before {
+ content: "\e0fa";
+}
+.icon-phone-2:before {
+ content: "\e0fb";
+}
+.icon-phone-3:before {
+ content: "\e0fc";
+}
+.icon-phone-4:before {
+ content: "\e0fd";
+}
+.icon-phone-vibration:before {
+ content: "\e0fe";
+}
+.icon-signal-fine:before {
+ content: "\e0ff";
+}
+.icon-signal-full:before {
+ content: "\e100";
+}
+.icon-signal-high:before {
+ content: "\e101";
+}
+.icon-signal-no:before {
+ content: "\e102";
+}
+.icon-signal-poor:before {
+ content: "\e103";
+}
+.icon-signal-weak:before {
+ content: "\e104";
+}
+.icon-smartphone:before {
+ content: "\e105";
+}
+.icon-tape:before {
+ content: "\e106";
+}
+.icon-camera-symbol-1:before {
+ content: "\e107";
+}
+.icon-camera-symbol-2:before {
+ content: "\e108";
+}
+.icon-camera-symbol-3:before {
+ content: "\e109";
+}
+.icon-headphone:before {
+ content: "\e10a";
+}
+.icon-antenna-1:before {
+ content: "\e10b";
+}
+.icon-antenna-2:before {
+ content: "\e10c";
+}
+.icon-antenna-3:before {
+ content: "\e10d";
+}
+.icon-hotspot-1:before {
+ content: "\e10e";
+}
+.icon-hotspot-2:before {
+ content: "\e10f";
+}
+.icon-link:before {
+ content: "\e110";
+}
+.icon-megaphone-1:before {
+ content: "\e111";
+}
+.icon-megaphone-2:before {
+ content: "\e112";
+}
+.icon-radar:before {
+ content: "\e113";
+}
+.icon-rss-1:before {
+ content: "\e114";
+}
+.icon-rss-2:before {
+ content: "\e115";
+}
+.icon-satellite:before {
+ content: "\e116";
+}
+.icon-address-1:before {
+ content: "\e117";
+}
+.icon-address-2:before {
+ content: "\e118";
+}
+.icon-address-3:before {
+ content: "\e119";
+}
+.icon-forward:before {
+ content: "\e11a";
+}
+.icon-inbox-1:before {
+ content: "\e11b";
+}
+.icon-inbox-2:before {
+ content: "\e11c";
+}
+.icon-inbox-3:before {
+ content: "\e11d";
+}
+.icon-inbox-4:before {
+ content: "\e11e";
+}
+.icon-letter-1:before {
+ content: "\e11f";
+}
+.icon-letter-2:before {
+ content: "\e120";
+}
+.icon-letter-3:before {
+ content: "\e121";
+}
+.icon-letter-4:before {
+ content: "\e122";
+}
+.icon-letter-5:before {
+ content: "\e123";
+}
+.icon-mail-1:before {
+ content: "\e124";
+}
+.icon-mail-2:before {
+ content: "\e125";
+}
+.icon-mail-add:before {
+ content: "\e126";
+}
+.icon-mail-attention:before {
+ content: "\e127";
+}
+.icon-mail-block:before {
+ content: "\e128";
+}
+.icon-mail-box-1:before {
+ content: "\e129";
+}
+.icon-mail-box-2:before {
+ content: "\e12a";
+}
+.icon-mail-box-3:before {
+ content: "\e12b";
+}
+.icon-mail-checked:before {
+ content: "\e12c";
+}
+.icon-mail-compose:before {
+ content: "\e12d";
+}
+.icon-mail-delete:before {
+ content: "\e12e";
+}
+.icon-mail-favorite:before {
+ content: "\e12f";
+}
+.icon-mail-inbox:before {
+ content: "\e130";
+}
+.icon-mail-lock:before {
+ content: "\e131";
+}
+.icon-mail-minus:before {
+ content: "\e132";
+}
+.icon-mail-read:before {
+ content: "\e133";
+}
+.icon-mail-recieved-1:before {
+ content: "\e134";
+}
+.icon-mail-recieved-2:before {
+ content: "\e135";
+}
+.icon-mail-search-1:before {
+ content: "\e136";
+}
+.icon-mail-search-2:before {
+ content: "\e137";
+}
+.icon-mail-sent-1:before {
+ content: "\e138";
+}
+.icon-mail-sent-2:before {
+ content: "\e139";
+}
+.icon-mail-setting:before {
+ content: "\e13a";
+}
+.icon-mail-star:before {
+ content: "\e13b";
+}
+.icon-mail-sync:before {
+ content: "\e13c";
+}
+.icon-mail-time:before {
+ content: "\e13d";
+}
+.icon-outbox-1:before {
+ content: "\e13e";
+}
+.icon-outbox-2:before {
+ content: "\e13f";
+}
+.icon-plane-paper-1:before {
+ content: "\e140";
+}
+.icon-plane-paper-2:before {
+ content: "\e141";
+}
+.icon-reply-mail-1:before {
+ content: "\e142";
+}
+.icon-reply-mail-2:before {
+ content: "\e143";
+}
+.icon-connection-1:before {
+ content: "\e144";
+}
+.icon-connection-2:before {
+ content: "\e145";
+}
+.icon-connection-3:before {
+ content: "\e146";
+}
+.icon-contacts-1:before {
+ content: "\e147";
+}
+.icon-contacts-2:before {
+ content: "\e148";
+}
+.icon-contacts-3:before {
+ content: "\e149";
+}
+.icon-contacts-4:before {
+ content: "\e14a";
+}
+.icon-female:before {
+ content: "\e14b";
+}
+.icon-gender:before {
+ content: "\e14c";
+}
+.icon-gender-female:before {
+ content: "\e14d";
+}
+.icon-gender-male:before {
+ content: "\e14e";
+}
+.icon-id-1:before {
+ content: "\e14f";
+}
+.icon-id-2:before {
+ content: "\e150";
+}
+.icon-id-3:before {
+ content: "\e151";
+}
+.icon-id-4:before {
+ content: "\e152";
+}
+.icon-id-5:before {
+ content: "\e153";
+}
+.icon-id-6:before {
+ content: "\e154";
+}
+.icon-id-7:before {
+ content: "\e155";
+}
+.icon-id-8:before {
+ content: "\e156";
+}
+.icon-male:before {
+ content: "\e157";
+}
+.icon-profile-1:before {
+ content: "\e158";
+}
+.icon-profile-2:before {
+ content: "\e159";
+}
+.icon-profile-3:before {
+ content: "\e15a";
+}
+.icon-profile-4:before {
+ content: "\e15b";
+}
+.icon-profile-5:before {
+ content: "\e15c";
+}
+.icon-profile-6:before {
+ content: "\e15d";
+}
+.icon-profile-athlete:before {
+ content: "\e15e";
+}
+.icon-profile-bussiness-man:before {
+ content: "\e15f";
+}
+.icon-profile-cook:before {
+ content: "\e160";
+}
+.icon-profile-cop:before {
+ content: "\e161";
+}
+.icon-profile-doctor-1:before {
+ content: "\e162";
+}
+.icon-profile-doctor-2:before {
+ content: "\e163";
+}
+.icon-profile-gentleman-1:before {
+ content: "\e164";
+}
+.icon-profile-gentleman-2:before {
+ content: "\e165";
+}
+.icon-profile-graduate:before {
+ content: "\e166";
+}
+.icon-profile-king:before {
+ content: "\e167";
+}
+.icon-profile-lady-1:before {
+ content: "\e168";
+}
+.icon-profile-lady-2:before {
+ content: "\e169";
+}
+.icon-profile-man:before {
+ content: "\e16a";
+}
+.icon-profile-nurse-1:before {
+ content: "\e16b";
+}
+.icon-profile-nurse-2:before {
+ content: "\e16c";
+}
+.icon-profile-prisoner:before {
+ content: "\e16d";
+}
+.icon-profile-serviceman-1:before {
+ content: "\e16e";
+}
+.icon-profile-serviceman-2:before {
+ content: "\e16f";
+}
+.icon-profile-spy:before {
+ content: "\e170";
+}
+.icon-profile-teacher:before {
+ content: "\e171";
+}
+.icon-profile-thief:before {
+ content: "\e172";
+}
+.icon-user-1:before {
+ content: "\e173";
+}
+.icon-user-2:before {
+ content: "\e174";
+}
+.icon-user-add-1:before {
+ content: "\e175";
+}
+.icon-user-add-2:before {
+ content: "\e176";
+}
+.icon-user-block-1:before {
+ content: "\e177";
+}
+.icon-user-block-2:before {
+ content: "\e178";
+}
+.icon-user-checked-1:before {
+ content: "\e179";
+}
+.icon-user-checked-2:before {
+ content: "\e17a";
+}
+.icon-user-delete-1:before {
+ content: "\e17b";
+}
+.icon-user-delete-2:before {
+ content: "\e17c";
+}
+.icon-user-edit-1:before {
+ content: "\e17d";
+}
+.icon-user-edit-2:before {
+ content: "\e17e";
+}
+.icon-user-heart-1:before {
+ content: "\e17f";
+}
+.icon-user-heart-2:before {
+ content: "\e180";
+}
+.icon-user-lock:before {
+ content: "\e181";
+}
+.icon-user-lock-1:before {
+ content: "\e182";
+}
+.icon-user-minus-1:before {
+ content: "\e183";
+}
+.icon-user-minus-2:before {
+ content: "\e184";
+}
+.icon-user-search-1:before {
+ content: "\e185";
+}
+.icon-user-search-2:before {
+ content: "\e186";
+}
+.icon-user-setting-1:before {
+ content: "\e187";
+}
+.icon-user-setting-2:before {
+ content: "\e188";
+}
+.icon-user-star-1:before {
+ content: "\e189";
+}
+.icon-user-star-2:before {
+ content: "\e18a";
+}
+.icon-basket-1:before {
+ content: "\e18b";
+}
+.icon-basket-2:before {
+ content: "\e18c";
+}
+.icon-basket-3:before {
+ content: "\e18d";
+}
+.icon-basket-add:before {
+ content: "\e18e";
+}
+.icon-basket-minus:before {
+ content: "\e18f";
+}
+.icon-briefcase-2:before {
+ content: "\e190";
+}
+.icon-cart-1:before {
+ content: "\e191";
+}
+.icon-cart-2:before {
+ content: "\e192";
+}
+.icon-cart-3:before {
+ content: "\e193";
+}
+.icon-cart-4:before {
+ content: "\e194";
+}
+.icon-cut:before {
+ content: "\e195";
+}
+.icon-hand-bag-1:before {
+ content: "\e196";
+}
+.icon-hand-bag-2:before {
+ content: "\e197";
+}
+.icon-purse-1:before {
+ content: "\e198";
+}
+.icon-purse-2:before {
+ content: "\e199";
+}
+.icon-qr-code:before {
+ content: "\e19a";
+}
+.icon-receipt-1:before {
+ content: "\e19b";
+}
+.icon-receipt-2:before {
+ content: "\e19c";
+}
+.icon-receipt-3:before {
+ content: "\e19d";
+}
+.icon-receipt-4:before {
+ content: "\e19e";
+}
+.icon-shopping-1:before {
+ content: "\e19f";
+}
+.icon-shopping-bag-1:before {
+ content: "\e1a0";
+}
+.icon-shopping-bag-2:before {
+ content: "\e1a1";
+}
+.icon-shopping-bag-3:before {
+ content: "\e1a2";
+}
+.icon-sign-new-1:before {
+ content: "\e1a3";
+}
+.icon-sign-new-2:before {
+ content: "\e1a4";
+}
+.icon-sign-park:before {
+ content: "\e1a5";
+}
+.icon-sign-star:before {
+ content: "\e1a6";
+}
+.icon-trolley-1:before {
+ content: "\e1a7";
+}
+.icon-trolley-2:before {
+ content: "\e1a8";
+}
+.icon-trolley-3:before {
+ content: "\e1a9";
+}
+.icon-trolley-load:before {
+ content: "\e1aa";
+}
+.icon-trolley-off:before {
+ content: "\e1ab";
+}
+.icon-wallet-1:before {
+ content: "\e1ac";
+}
+.icon-wallet-2:before {
+ content: "\e1ad";
+}
+.icon-wallet-3:before {
+ content: "\e1ae";
+}
+.icon-camera-1:before {
+ content: "\e1af";
+}
+.icon-camera-2:before {
+ content: "\e1b0";
+}
+.icon-camera-3:before {
+ content: "\e1b1";
+}
+.icon-camera-4:before {
+ content: "\e1b2";
+}
+.icon-camera-5:before {
+ content: "\e1b3";
+}
+.icon-camera-back:before {
+ content: "\e1b4";
+}
+.icon-camera-focus:before {
+ content: "\e1b5";
+}
+.icon-camera-frames:before {
+ content: "\e1b6";
+}
+.icon-camera-front:before {
+ content: "\e1b7";
+}
+.icon-camera-graph-1:before {
+ content: "\e1b8";
+}
+.icon-camera-graph-2:before {
+ content: "\e1b9";
+}
+.icon-camera-landscape:before {
+ content: "\e1ba";
+}
+.icon-camera-lens-1:before {
+ content: "\e1bb";
+}
+.icon-camera-lens-2:before {
+ content: "\e1bc";
+}
+.icon-camera-light:before {
+ content: "\e1bd";
+}
+.icon-camera-portrait:before {
+ content: "\e1be";
+}
+.icon-camera-view:before {
+ content: "\e1bf";
+}
+.icon-film-1:before {
+ content: "\e1c0";
+}
+.icon-film-2:before {
+ content: "\e1c1";
+}
+.icon-photo-1:before {
+ content: "\e1c2";
+}
+.icon-photo-2:before {
+ content: "\e1c3";
+}
+.icon-photo-frame:before {
+ content: "\e1c4";
+}
+.icon-photos-1:before {
+ content: "\e1c5";
+}
+.icon-photos-2:before {
+ content: "\e1c6";
+}
+.icon-polaroid:before {
+ content: "\e1c7";
+}
+.icon-signal-camera-1:before {
+ content: "\e1c8";
+}
+.icon-signal-camera-2:before {
+ content: "\e1c9";
+}
+.icon-user-photo:before {
+ content: "\e1ca";
+}
+.icon-backward-1:before {
+ content: "\e1cb";
+}
+.icon-dvd-player:before {
+ content: "\e1cc";
+}
+.icon-eject-1:before {
+ content: "\e1cd";
+}
+.icon-film-3:before {
+ content: "\e1ce";
+}
+.icon-forward-1:before {
+ content: "\e1cf";
+}
+.icon-handy-cam:before {
+ content: "\e1d0";
+}
+.icon-movie-play-1:before {
+ content: "\e1d1";
+}
+.icon-movie-play-2:before {
+ content: "\e1d2";
+}
+.icon-movie-play-3:before {
+ content: "\e1d3";
+}
+.icon-next-1:before {
+ content: "\e1d4";
+}
+.icon-pause-1:before {
+ content: "\e1d5";
+}
+.icon-play-1:before {
+ content: "\e1d6";
+}
+.icon-player:before {
+ content: "\e1d7";
+}
+.icon-previous-1:before {
+ content: "\e1d8";
+}
+.icon-record-1:before {
+ content: "\e1d9";
+}
+.icon-slate:before {
+ content: "\e1da";
+}
+.icon-stop-1:before {
+ content: "\e1db";
+}
+.icon-television:before {
+ content: "\e1dc";
+}
+.icon-video-camera-1:before {
+ content: "\e1dd";
+}
+.icon-video-camera-2:before {
+ content: "\e1de";
+}
+.icon-backward-2:before {
+ content: "\e1df";
+}
+.icon-cd:before {
+ content: "\e1e0";
+}
+.icon-eject-2:before {
+ content: "\e1e1";
+}
+.icon-equalizer-1:before {
+ content: "\e1e2";
+}
+.icon-equalizer-2:before {
+ content: "\e1e3";
+}
+.icon-forward-2:before {
+ content: "\e1e4";
+}
+.icon-gramophone:before {
+ content: "\e1e5";
+}
+.icon-gramophone-record:before {
+ content: "\e1e6";
+}
+.icon-guitar:before {
+ content: "\e1e7";
+}
+.icon-headphone-1:before {
+ content: "\e1e8";
+}
+.icon-headphone-2:before {
+ content: "\e1e9";
+}
+.icon-microphone-1:before {
+ content: "\e1ea";
+}
+.icon-microphone-2:before {
+ content: "\e1eb";
+}
+.icon-microphone-3:before {
+ content: "\e1ec";
+}
+.icon-movie-play-4:before {
+ content: "\e1ed";
+}
+.icon-music-note-1:before {
+ content: "\e1ee";
+}
+.icon-music-note-3:before {
+ content: "\e1ef";
+}
+.icon-music-note-4:before {
+ content: "\e1f0";
+}
+.icon-music-note-5:before {
+ content: "\e1f1";
+}
+.icon-next-2:before {
+ content: "\e1f2";
+}
+.icon-notes-1:before {
+ content: "\e1f3";
+}
+.icon-notes-2:before {
+ content: "\e1f4";
+}
+.icon-pause-2:before {
+ content: "\e1f5";
+}
+.icon-piano:before {
+ content: "\e1f6";
+}
+.icon-play-2:before {
+ content: "\e1f7";
+}
+.icon-playlist:before {
+ content: "\e1f8";
+}
+.icon-previous-2:before {
+ content: "\e1f9";
+}
+.icon-radio-1:before {
+ content: "\e1fa";
+}
+.icon-radio-2:before {
+ content: "\e1fb";
+}
+.icon-record-2:before {
+ content: "\e1fc";
+}
+.icon-recorder:before {
+ content: "\e1fd";
+}
+.icon-saxophone:before {
+ content: "\e1fe";
+}
+.icon-speaker-1:before {
+ content: "\e1ff";
+}
+.icon-speaker-2:before {
+ content: "\e200";
+}
+.icon-speaker-3:before {
+ content: "\e201";
+}
+.icon-stop-2:before {
+ content: "\e202";
+}
+.icon-tape-1:before {
+ content: "\e203";
+}
+.icon-trumpet:before {
+ content: "\e204";
+}
+.icon-volume-down-1:before {
+ content: "\e205";
+}
+.icon-volume-down-2:before {
+ content: "\e206";
+}
+.icon-volume-loud-1:before {
+ content: "\e207";
+}
+.icon-volume-loud-2:before {
+ content: "\e208";
+}
+.icon-volume-low-1:before {
+ content: "\e209";
+}
+.icon-volume-low-2:before {
+ content: "\e20a";
+}
+.icon-volume-medium-1:before {
+ content: "\e20b";
+}
+.icon-volume-medium-2:before {
+ content: "\e20c";
+}
+.icon-volume-mute-1:before {
+ content: "\e20d";
+}
+.icon-volume-mute-2:before {
+ content: "\e20e";
+}
+.icon-volume-mute-3:before {
+ content: "\e20f";
+}
+.icon-volume-up-1:before {
+ content: "\e210";
+}
+.icon-volume-up-2:before {
+ content: "\e211";
+}
+.icon-walkman:before {
+ content: "\e212";
+}
+.icon-cloud:before {
+ content: "\e213";
+}
+.icon-cloud-add:before {
+ content: "\e214";
+}
+.icon-cloud-checked:before {
+ content: "\e215";
+}
+.icon-cloud-delete:before {
+ content: "\e216";
+}
+.icon-cloud-download:before {
+ content: "\e217";
+}
+.icon-cloud-minus:before {
+ content: "\e218";
+}
+.icon-cloud-refresh:before {
+ content: "\e219";
+}
+.icon-cloud-sync:before {
+ content: "\e21a";
+}
+.icon-cloud-upload:before {
+ content: "\e21b";
+}
+.icon-download-1:before {
+ content: "\e21c";
+}
+.icon-download-2:before {
+ content: "\e21d";
+}
+.icon-download-3:before {
+ content: "\e21e";
+}
+.icon-download-4:before {
+ content: "\e21f";
+}
+.icon-download-5:before {
+ content: "\e220";
+}
+.icon-download-6:before {
+ content: "\e221";
+}
+.icon-download-7:before {
+ content: "\e222";
+}
+.icon-download-8:before {
+ content: "\e223";
+}
+.icon-download-9:before {
+ content: "\e224";
+}
+.icon-download-10:before {
+ content: "\e225";
+}
+.icon-download-11:before {
+ content: "\e226";
+}
+.icon-download-12:before {
+ content: "\e227";
+}
+.icon-download-13:before {
+ content: "\e228";
+}
+.icon-download-14:before {
+ content: "\e229";
+}
+.icon-download-15:before {
+ content: "\e22a";
+}
+.icon-download-file:before {
+ content: "\e22b";
+}
+.icon-download-folder:before {
+ content: "\e22c";
+}
+.icon-goal-1:before {
+ content: "\e22d";
+}
+.icon-goal-2:before {
+ content: "\e22e";
+}
+.icon-transfer-1:before {
+ content: "\e22f";
+}
+.icon-transfer-2:before {
+ content: "\e230";
+}
+.icon-transfer-3:before {
+ content: "\e231";
+}
+.icon-transfer-4:before {
+ content: "\e232";
+}
+.icon-transfer-5:before {
+ content: "\e233";
+}
+.icon-transfer-6:before {
+ content: "\e234";
+}
+.icon-transfer-7:before {
+ content: "\e235";
+}
+.icon-transfer-8:before {
+ content: "\e236";
+}
+.icon-transfer-9:before {
+ content: "\e237";
+}
+.icon-transfer-10:before {
+ content: "\e238";
+}
+.icon-transfer-11:before {
+ content: "\e239";
+}
+.icon-transfer-12:before {
+ content: "\e23a";
+}
+.icon-upload-1:before {
+ content: "\e23b";
+}
+.icon-upload-2:before {
+ content: "\e23c";
+}
+.icon-upload-3:before {
+ content: "\e23d";
+}
+.icon-upload-4:before {
+ content: "\e23e";
+}
+.icon-upload-5:before {
+ content: "\e23f";
+}
+.icon-upload-6:before {
+ content: "\e240";
+}
+.icon-upload-7:before {
+ content: "\e241";
+}
+.icon-upload-8:before {
+ content: "\e242";
+}
+.icon-upload-9:before {
+ content: "\e243";
+}
+.icon-upload-10:before {
+ content: "\e244";
+}
+.icon-upload-11:before {
+ content: "\e245";
+}
+.icon-upload-12:before {
+ content: "\e246";
+}
+.icon-clipboard-1:before {
+ content: "\e247";
+}
+.icon-clipboard-2:before {
+ content: "\e248";
+}
+.icon-clipboard-3:before {
+ content: "\e249";
+}
+.icon-clipboard-add:before {
+ content: "\e24a";
+}
+.icon-clipboard-block:before {
+ content: "\e24b";
+}
+.icon-clipboard-checked:before {
+ content: "\e24c";
+}
+.icon-clipboard-delete:before {
+ content: "\e24d";
+}
+.icon-clipboard-edit:before {
+ content: "\e24e";
+}
+.icon-clipboard-minus:before {
+ content: "\e24f";
+}
+.icon-document-1:before {
+ content: "\e250";
+}
+.icon-document-2:before {
+ content: "\e251";
+}
+.icon-file-1:before {
+ content: "\e252";
+}
+.icon-file-2:before {
+ content: "\e253";
+}
+.icon-file-add:before {
+ content: "\e254";
+}
+.icon-file-attention:before {
+ content: "\e255";
+}
+.icon-file-block:before {
+ content: "\e256";
+}
+.icon-file-bookmark:before {
+ content: "\e257";
+}
+.icon-file-checked:before {
+ content: "\e258";
+}
+.icon-file-code:before {
+ content: "\e259";
+}
+.icon-file-delete:before {
+ content: "\e25a";
+}
+.icon-file-download:before {
+ content: "\e25b";
+}
+.icon-file-edit:before {
+ content: "\e25c";
+}
+.icon-file-favorite-1:before {
+ content: "\e25d";
+}
+.icon-file-favorite-2:before {
+ content: "\e25e";
+}
+.icon-file-graph-1:before {
+ content: "\e25f";
+}
+.icon-file-graph-2:before {
+ content: "\e260";
+}
+.icon-file-home:before {
+ content: "\e261";
+}
+.icon-file-image-1:before {
+ content: "\e262";
+}
+.icon-file-image-2:before {
+ content: "\e263";
+}
+.icon-file-list:before {
+ content: "\e264";
+}
+.icon-file-lock:before {
+ content: "\e265";
+}
+.icon-file-media:before {
+ content: "\e266";
+}
+.icon-file-minus:before {
+ content: "\e267";
+}
+.icon-file-music:before {
+ content: "\e268";
+}
+.icon-file-new:before {
+ content: "\e269";
+}
+.icon-file-registry:before {
+ content: "\e26a";
+}
+.icon-file-search:before {
+ content: "\e26b";
+}
+.icon-file-setting:before {
+ content: "\e26c";
+}
+.icon-file-sync:before {
+ content: "\e26d";
+}
+.icon-file-table:before {
+ content: "\e26e";
+}
+.icon-file-thumbnail:before {
+ content: "\e26f";
+}
+.icon-file-time:before {
+ content: "\e270";
+}
+.icon-file-transfer:before {
+ content: "\e271";
+}
+.icon-file-upload:before {
+ content: "\e272";
+}
+.icon-file-zip:before {
+ content: "\e273";
+}
+.icon-files-1:before {
+ content: "\e274";
+}
+.icon-files-2:before {
+ content: "\e275";
+}
+.icon-files-3:before {
+ content: "\e276";
+}
+.icon-files-4:before {
+ content: "\e277";
+}
+.icon-files-5:before {
+ content: "\e278";
+}
+.icon-files-6:before {
+ content: "\e279";
+}
+.icon-hand-file-1:before {
+ content: "\e27a";
+}
+.icon-hand-file-2:before {
+ content: "\e27b";
+}
+.icon-note-paper-1:before {
+ content: "\e27c";
+}
+.icon-note-paper-2:before {
+ content: "\e27d";
+}
+.icon-note-paper-add:before {
+ content: "\e27e";
+}
+.icon-note-paper-attention:before {
+ content: "\e27f";
+}
+.icon-note-paper-block:before {
+ content: "\e280";
+}
+.icon-note-paper-checked:before {
+ content: "\e281";
+}
+.icon-note-paper-delete:before {
+ content: "\e282";
+}
+.icon-note-paper-download:before {
+ content: "\e283";
+}
+.icon-note-paper-edit:before {
+ content: "\e284";
+}
+.icon-note-paper-favorite:before {
+ content: "\e285";
+}
+.icon-note-paper-lock:before {
+ content: "\e286";
+}
+.icon-note-paper-minus:before {
+ content: "\e287";
+}
+.icon-note-paper-search:before {
+ content: "\e288";
+}
+.icon-note-paper-sync:before {
+ content: "\e289";
+}
+.icon-note-paper-upload:before {
+ content: "\e28a";
+}
+.icon-print:before {
+ content: "\e28b";
+}
+.icon-folder-1:before {
+ content: "\e28c";
+}
+.icon-folder-2:before {
+ content: "\e28d";
+}
+.icon-folder-3:before {
+ content: "\e28e";
+}
+.icon-folder-4:before {
+ content: "\e28f";
+}
+.icon-folder-add:before {
+ content: "\e290";
+}
+.icon-folder-attention:before {
+ content: "\e291";
+}
+.icon-folder-block:before {
+ content: "\e292";
+}
+.icon-folder-bookmark:before {
+ content: "\e293";
+}
+.icon-folder-checked:before {
+ content: "\e294";
+}
+.icon-folder-code:before {
+ content: "\e295";
+}
+.icon-folder-delete:before {
+ content: "\e296";
+}
+.icon-folder-download:before {
+ content: "\e297";
+}
+.icon-folder-edit:before {
+ content: "\e298";
+}
+.icon-folder-favorite:before {
+ content: "\e299";
+}
+.icon-folder-home:before {
+ content: "\e29a";
+}
+.icon-folder-image:before {
+ content: "\e29b";
+}
+.icon-folder-lock:before {
+ content: "\e29c";
+}
+.icon-folder-media:before {
+ content: "\e29d";
+}
+.icon-folder-minus:before {
+ content: "\e29e";
+}
+.icon-folder-music:before {
+ content: "\e29f";
+}
+.icon-folder-new:before {
+ content: "\e2a0";
+}
+.icon-folder-search:before {
+ content: "\e2a1";
+}
+.icon-folder-setting:before {
+ content: "\e2a2";
+}
+.icon-folder-share-1:before {
+ content: "\e2a3";
+}
+.icon-folder-share-2:before {
+ content: "\e2a4";
+}
+.icon-folder-sync:before {
+ content: "\e2a5";
+}
+.icon-folder-transfer:before {
+ content: "\e2a6";
+}
+.icon-folder-upload:before {
+ content: "\e2a7";
+}
+.icon-folder-zip:before {
+ content: "\e2a8";
+}
+.icon-add-1:before {
+ content: "\e2a9";
+}
+.icon-add-2:before {
+ content: "\e2aa";
+}
+.icon-add-3:before {
+ content: "\e2ab";
+}
+.icon-add-4:before {
+ content: "\e2ac";
+}
+.icon-add-tag:before {
+ content: "\e2ad";
+}
+.icon-arrow-1:before {
+ content: "\e2ae";
+}
+.icon-arrow-2:before {
+ content: "\e2af";
+}
+.icon-arrow-down-1:before {
+ content: "\e2b0";
+}
+.icon-arrow-down-2:before {
+ content: "\e2b1";
+}
+.icon-arrow-left-1:before {
+ content: "\e2b2";
+}
+.icon-arrow-left-2:before {
+ content: "\e2b3";
+}
+.icon-arrow-move-1:before {
+ content: "\e2b4";
+}
+.icon-arrow-move-down:before {
+ content: "\e2b5";
+}
+.icon-arrow-move-left:before {
+ content: "\e2b6";
+}
+.icon-arrow-move-right:before {
+ content: "\e2b7";
+}
+.icon-arrow-move-up:before {
+ content: "\e2b8";
+}
+.icon-arrow-right-1:before {
+ content: "\e2b9";
+}
+.icon-arrow-right-2:before {
+ content: "\e2ba";
+}
+.icon-arrow-up-1:before {
+ content: "\e2bb";
+}
+.icon-arrow-up-2:before {
+ content: "\e2bc";
+}
+.icon-back:before {
+ content: "\e2bd";
+}
+.icon-center-expand:before {
+ content: "\e2be";
+}
+.icon-center-reduce:before {
+ content: "\e2bf";
+}
+.icon-delete-1-1:before {
+ content: "\e2c0";
+}
+.icon-delete-2-1:before {
+ content: "\e2c1";
+}
+.icon-delete-3:before {
+ content: "\e2c2";
+}
+.icon-delete-4:before {
+ content: "\e2c3";
+}
+.icon-delete-tag:before {
+ content: "\e2c4";
+}
+.icon-expand-horizontal:before {
+ content: "\e2c5";
+}
+.icon-expand-vertical:before {
+ content: "\e2c6";
+}
+.icon-forward-3:before {
+ content: "\e2c7";
+}
+.icon-infinity:before {
+ content: "\e2c8";
+}
+.icon-loading:before {
+ content: "\e2c9";
+}
+.icon-log-out-1:before {
+ content: "\e2ca";
+}
+.icon-loop-1:before {
+ content: "\e2cb";
+}
+.icon-loop-2:before {
+ content: "\e2cc";
+}
+.icon-loop-3:before {
+ content: "\e2cd";
+}
+.icon-minus-1:before {
+ content: "\e2ce";
+}
+.icon-minus-2:before {
+ content: "\e2cf";
+}
+.icon-minus-3:before {
+ content: "\e2d0";
+}
+.icon-minus-4:before {
+ content: "\e2d1";
+}
+.icon-minus-tag:before {
+ content: "\e2d2";
+}
+.icon-move-diagonal-1:before {
+ content: "\e2d3";
+}
+.icon-move-diagonal-2:before {
+ content: "\e2d4";
+}
+.icon-move-horizontal-1:before {
+ content: "\e2d5";
+}
+.icon-move-horizontal-2:before {
+ content: "\e2d6";
+}
+.icon-move-vertical-1:before {
+ content: "\e2d7";
+}
+.icon-move-vertical-2:before {
+ content: "\e2d8";
+}
+.icon-next-1-1:before {
+ content: "\e2d9";
+}
+.icon-next-2-1:before {
+ content: "\e2da";
+}
+.icon-power-1-1:before {
+ content: "\e2db";
+}
+.icon-power-2-1:before {
+ content: "\e2dc";
+}
+.icon-power-3:before {
+ content: "\e2dd";
+}
+.icon-power-4:before {
+ content: "\e2de";
+}
+.icon-power-5:before {
+ content: "\e2df";
+}
+.icon-recycle:before {
+ content: "\e2e0";
+}
+.icon-refresh:before {
+ content: "\e2e1";
+}
+.icon-repeat:before {
+ content: "\e2e2";
+}
+.icon-return:before {
+ content: "\e2e3";
+}
+.icon-scale-all-1:before {
+ content: "\e2e4";
+}
+.icon-scale-center:before {
+ content: "\e2e5";
+}
+.icon-scale-horizontal-1:before {
+ content: "\e2e6";
+}
+.icon-scale-horizontal-2:before {
+ content: "\e2e7";
+}
+.icon-scale-reduce-1:before {
+ content: "\e2e8";
+}
+.icon-scale-reduce-2:before {
+ content: "\e2e9";
+}
+.icon-scale-reduce-3:before {
+ content: "\e2ea";
+}
+.icon-scale-spread-1:before {
+ content: "\e2eb";
+}
+.icon-scale-spread-2:before {
+ content: "\e2ec";
+}
+.icon-scale-spread-3:before {
+ content: "\e2ed";
+}
+.icon-scale-vertical-1:before {
+ content: "\e2ee";
+}
+.icon-scale-vertical-2:before {
+ content: "\e2ef";
+}
+.icon-scroll-horizontal-1:before {
+ content: "\e2f0";
+}
+.icon-scroll-horizontal-2:before {
+ content: "\e2f1";
+}
+.icon-scroll-omnidirectional-1:before {
+ content: "\e2f2";
+}
+.icon-scroll-omnidirectional-2:before {
+ content: "\e2f3";
+}
+.icon-scroll-vertical-1:before {
+ content: "\e2f4";
+}
+.icon-scroll-vertical-2:before {
+ content: "\e2f5";
+}
+.icon-shuffle:before {
+ content: "\e2f6";
+}
+.icon-split:before {
+ content: "\e2f7";
+}
+.icon-sync-1:before {
+ content: "\e2f8";
+}
+.icon-sync-2:before {
+ content: "\e2f9";
+}
+.icon-timer:before {
+ content: "\e2fa";
+}
+.icon-transfer:before {
+ content: "\e2fb";
+}
+.icon-transfer-1-1:before {
+ content: "\e2fc";
+}
+.icon-chat-1-1:before {
+ content: "\e2fd";
+}
+.icon-chat-2-1:before {
+ content: "\e2fe";
+}
+.icon-check-1:before {
+ content: "\e2ff";
+}
+.icon-check-2:before {
+ content: "\e300";
+}
+.icon-check-3:before {
+ content: "\e301";
+}
+.icon-check-4:before {
+ content: "\e302";
+}
+.icon-check-bubble:before {
+ content: "\e303";
+}
+.icon-check-list:before {
+ content: "\e304";
+}
+.icon-check-shield:before {
+ content: "\e305";
+}
+.icon-cross-1:before {
+ content: "\e306";
+}
+.icon-cross-bubble:before {
+ content: "\e307";
+}
+.icon-cross-shield:before {
+ content: "\e308";
+}
+.icon-briefcase:before {
+ content: "\e309";
+}
+.icon-brightness-high:before {
+ content: "\e30a";
+}
+.icon-brightness-low:before {
+ content: "\e30b";
+}
+.icon-hammer-1:before {
+ content: "\e30c";
+}
+.icon-hammer-2:before {
+ content: "\e30d";
+}
+.icon-pulse:before {
+ content: "\e30e";
+}
+.icon-scale:before {
+ content: "\e30f";
+}
+.icon-screw-driver:before {
+ content: "\e310";
+}
+.icon-setting-adjustment:before {
+ content: "\e311";
+}
+.icon-setting-gear:before {
+ content: "\e312";
+}
+.icon-setting-gears-1:before {
+ content: "\e313";
+}
+.icon-setting-gears-2:before {
+ content: "\e314";
+}
+.icon-setting-wrenches:before {
+ content: "\e315";
+}
+.icon-switch-1:before {
+ content: "\e316";
+}
+.icon-switch-2:before {
+ content: "\e317";
+}
+.icon-wrench:before {
+ content: "\e318";
+}
+.icon-alarm-1:before {
+ content: "\e319";
+}
+.icon-alarm-clock:before {
+ content: "\e31a";
+}
+.icon-alarm-no:before {
+ content: "\e31b";
+}
+.icon-alarm-snooze:before {
+ content: "\e31c";
+}
+.icon-bell:before {
+ content: "\e31d";
+}
+.icon-calendar-1:before {
+ content: "\e31e";
+}
+.icon-calendar-2:before {
+ content: "\e31f";
+}
+.icon-clock-1:before {
+ content: "\e320";
+}
+.icon-clock-2:before {
+ content: "\e321";
+}
+.icon-clock-3:before {
+ content: "\e322";
+}
+.icon-hourglass-1:before {
+ content: "\e323";
+}
+.icon-hourglass-2:before {
+ content: "\e324";
+}
+.icon-timer-1:before {
+ content: "\e325";
+}
+.icon-timer-3-quarter-1:before {
+ content: "\e326";
+}
+.icon-timer-3-quarter-2:before {
+ content: "\e327";
+}
+.icon-timer-full-1:before {
+ content: "\e328";
+}
+.icon-timer-full-2:before {
+ content: "\e329";
+}
+.icon-timer-half-1:before {
+ content: "\e32a";
+}
+.icon-timer-half-2:before {
+ content: "\e32b";
+}
+.icon-timer-half-3:before {
+ content: "\e32c";
+}
+.icon-timer-half-4:before {
+ content: "\e32d";
+}
+.icon-timer-quarter-1:before {
+ content: "\e32e";
+}
+.icon-timer-quarter-2:before {
+ content: "\e32f";
+}
+.icon-watch-1:before {
+ content: "\e330";
+}
+.icon-watch-2:before {
+ content: "\e331";
+}
+.icon-alert-1:before {
+ content: "\e332";
+}
+.icon-alert-2:before {
+ content: "\e333";
+}
+.icon-alert-3:before {
+ content: "\e334";
+}
+.icon-information:before {
+ content: "\e335";
+}
+.icon-nuclear-1:before {
+ content: "\e336";
+}
+.icon-nuclear-2:before {
+ content: "\e337";
+}
+.icon-question-mark:before {
+ content: "\e338";
+}
+.icon-abacus:before {
+ content: "\e339";
+}
+.icon-amex-card:before {
+ content: "\e33a";
+}
+.icon-atm:before {
+ content: "\e33b";
+}
+.icon-balance:before {
+ content: "\e33c";
+}
+.icon-bank-1:before {
+ content: "\e33d";
+}
+.icon-bank-2:before {
+ content: "\e33e";
+}
+.icon-bank-note:before {
+ content: "\e33f";
+}
+.icon-bank-notes-1:before {
+ content: "\e340";
+}
+.icon-bank-notes-2:before {
+ content: "\e341";
+}
+.icon-bitcoins:before {
+ content: "\e342";
+}
+.icon-board-1:before {
+ content: "\e343";
+}
+.icon-box-1:before {
+ content: "\e344";
+}
+.icon-box-2:before {
+ content: "\e345";
+}
+.icon-box-3:before {
+ content: "\e346";
+}
+.icon-box-download:before {
+ content: "\e347";
+}
+.icon-box-shipping:before {
+ content: "\e348";
+}
+.icon-box-upload:before {
+ content: "\e349";
+}
+.icon-business-chart-1:before {
+ content: "\e34a";
+}
+.icon-business-chart-2:before {
+ content: "\e34b";
+}
+.icon-calculator-1:before {
+ content: "\e34c";
+}
+.icon-calculator-2:before {
+ content: "\e34d";
+}
+.icon-calculator-3:before {
+ content: "\e34e";
+}
+.icon-cash-register:before {
+ content: "\e34f";
+}
+.icon-chart-board:before {
+ content: "\e350";
+}
+.icon-chart-down:before {
+ content: "\e351";
+}
+.icon-chart-up:before {
+ content: "\e352";
+}
+.icon-check:before {
+ content: "\e353";
+}
+.icon-coins-1:before {
+ content: "\e354";
+}
+.icon-coins-2:before {
+ content: "\e355";
+}
+.icon-court:before {
+ content: "\e356";
+}
+.icon-credit-card:before {
+ content: "\e357";
+}
+.icon-credit-card-lock:before {
+ content: "\e358";
+}
+.icon-delivery:before {
+ content: "\e359";
+}
+.icon-dollar-bag:before {
+ content: "\e35a";
+}
+.icon-dollar-currency-1:before {
+ content: "\e35b";
+}
+.icon-dollar-currency-2:before {
+ content: "\e35c";
+}
+.icon-dollar-currency-3:before {
+ content: "\e35d";
+}
+.icon-dollar-currency-4:before {
+ content: "\e35e";
+}
+.icon-euro-bag:before {
+ content: "\e35f";
+}
+.icon-euro-currency-1:before {
+ content: "\e360";
+}
+.icon-euro-currency-2:before {
+ content: "\e361";
+}
+.icon-euro-currency-3:before {
+ content: "\e362";
+}
+.icon-euro-currency-4:before {
+ content: "\e363";
+}
+.icon-forklift:before {
+ content: "\e364";
+}
+.icon-hand-card:before {
+ content: "\e365";
+}
+.icon-hand-coin:before {
+ content: "\e366";
+}
+.icon-keynote:before {
+ content: "\e367";
+}
+.icon-master-card:before {
+ content: "\e368";
+}
+.icon-money:before {
+ content: "\e369";
+}
+.icon-parking-meter:before {
+ content: "\e36a";
+}
+.icon-percent-1:before {
+ content: "\e36b";
+}
+.icon-percent-2:before {
+ content: "\e36c";
+}
+.icon-percent-3:before {
+ content: "\e36d";
+}
+.icon-percent-4:before {
+ content: "\e36e";
+}
+.icon-percent-5:before {
+ content: "\e36f";
+}
+.icon-percent-up:before {
+ content: "\e370";
+}
+.icon-pie-chart-1:before {
+ content: "\e371";
+}
+.icon-pie-chart-2:before {
+ content: "\e372";
+}
+.icon-piggy-bank:before {
+ content: "\e373";
+}
+.icon-pound-currency-1:before {
+ content: "\e374";
+}
+.icon-pound-currency-2:before {
+ content: "\e375";
+}
+.icon-pound-currency-3:before {
+ content: "\e376";
+}
+.icon-pound-currency-4:before {
+ content: "\e377";
+}
+.icon-safe-1:before {
+ content: "\e378";
+}
+.icon-safe-2:before {
+ content: "\e379";
+}
+.icon-shop:before {
+ content: "\e37a";
+}
+.icon-sign:before {
+ content: "\e37b";
+}
+.icon-trolley:before {
+ content: "\e37c";
+}
+.icon-truck-1:before {
+ content: "\e37d";
+}
+.icon-truck-2:before {
+ content: "\e37e";
+}
+.icon-visa-card:before {
+ content: "\e37f";
+}
+.icon-yen-currency-1:before {
+ content: "\e380";
+}
+.icon-yen-currency-2:before {
+ content: "\e381";
+}
+.icon-yen-currency-3:before {
+ content: "\e382";
+}
+.icon-yen-currency-4:before {
+ content: "\e383";
+}
+.icon-add-marker-1:before {
+ content: "\e384";
+}
+.icon-add-marker-2:before {
+ content: "\e385";
+}
+.icon-add-marker-3:before {
+ content: "\e386";
+}
+.icon-add-marker-4:before {
+ content: "\e387";
+}
+.icon-add-marker-5:before {
+ content: "\e388";
+}
+.icon-compass-1:before {
+ content: "\e389";
+}
+.icon-compass-2:before {
+ content: "\e38a";
+}
+.icon-compass-3:before {
+ content: "\e38b";
+}
+.icon-delete-marker-1:before {
+ content: "\e38c";
+}
+.icon-delete-marker-2:before {
+ content: "\e38d";
+}
+.icon-delete-marker-3:before {
+ content: "\e38e";
+}
+.icon-delete-marker-4:before {
+ content: "\e38f";
+}
+.icon-delete-marker-5:before {
+ content: "\e390";
+}
+.icon-favorite-marker:before {
+ content: "\e391";
+}
+.icon-favorite-marker-1:before {
+ content: "\e392";
+}
+.icon-favorite-marker-2:before {
+ content: "\e393";
+}
+.icon-favorite-marker-3:before {
+ content: "\e394";
+}
+.icon-globe:before {
+ content: "\e395";
+}
+.icon-location:before {
+ content: "\e396";
+}
+.icon-map-1:before {
+ content: "\e397";
+}
+.icon-map-location:before {
+ content: "\e398";
+}
+.icon-map-marker-1:before {
+ content: "\e399";
+}
+.icon-map-marker-2:before {
+ content: "\e39a";
+}
+.icon-map-marker-3:before {
+ content: "\e39b";
+}
+.icon-map-marker-4:before {
+ content: "\e39c";
+}
+.icon-map-pin:before {
+ content: "\e39d";
+}
+.icon-map-pin-marker:before {
+ content: "\e39e";
+}
+.icon-marker-1:before {
+ content: "\e39f";
+}
+.icon-marker-2:before {
+ content: "\e3a0";
+}
+.icon-marker-3:before {
+ content: "\e3a1";
+}
+.icon-marker-4:before {
+ content: "\e3a2";
+}
+.icon-minus-marker-1:before {
+ content: "\e3a3";
+}
+.icon-minus-marker-2:before {
+ content: "\e3a4";
+}
+.icon-minus-marker-3:before {
+ content: "\e3a5";
+}
+.icon-minus-marker-4:before {
+ content: "\e3a6";
+}
+.icon-pin-1-1:before {
+ content: "\e3a7";
+}
+.icon-pin-2-1:before {
+ content: "\e3a8";
+}
+.icon-pin-location:before {
+ content: "\e3a9";
+}
+.icon-anchor:before {
+ content: "\e3aa";
+}
+.icon-bank:before {
+ content: "\e3ab";
+}
+.icon-beach:before {
+ content: "\e3ac";
+}
+.icon-boat:before {
+ content: "\e3ad";
+}
+.icon-building-1:before {
+ content: "\e3ae";
+}
+.icon-building-2:before {
+ content: "\e3af";
+}
+.icon-building-3:before {
+ content: "\e3b0";
+}
+.icon-buildings-1:before {
+ content: "\e3b1";
+}
+.icon-buildings-2:before {
+ content: "\e3b2";
+}
+.icon-buildings-3:before {
+ content: "\e3b3";
+}
+.icon-buildings-4:before {
+ content: "\e3b4";
+}
+.icon-castle:before {
+ content: "\e3b5";
+}
+.icon-column:before {
+ content: "\e3b6";
+}
+.icon-direction-sign:before {
+ content: "\e3b7";
+}
+.icon-factory:before {
+ content: "\e3b8";
+}
+.icon-fence:before {
+ content: "\e3b9";
+}
+.icon-garage:before {
+ content: "\e3ba";
+}
+.icon-globe-1:before {
+ content: "\e3bb";
+}
+.icon-globe-2:before {
+ content: "\e3bc";
+}
+.icon-house-1:before {
+ content: "\e3bd";
+}
+.icon-house-2:before {
+ content: "\e3be";
+}
+.icon-house-3:before {
+ content: "\e3bf";
+}
+.icon-house-4:before {
+ content: "\e3c0";
+}
+.icon-library:before {
+ content: "\e3c1";
+}
+.icon-light-house:before {
+ content: "\e3c2";
+}
+.icon-pine-tree:before {
+ content: "\e3c3";
+}
+.icon-pisa:before {
+ content: "\e3c4";
+}
+.icon-skyscraper:before {
+ content: "\e3c5";
+}
+.icon-temple:before {
+ content: "\e3c6";
+}
+.icon-treasure-map:before {
+ content: "\e3c7";
+}
+.icon-tree:before {
+ content: "\e3c8";
+}
+.icon-attention:before {
+ content: "\e3c9";
+}
+.icon-bug-1:before {
+ content: "\e3ca";
+}
+.icon-bug-2:before {
+ content: "\e3cb";
+}
+.icon-css3:before {
+ content: "\e3cc";
+}
+.icon-firewall:before {
+ content: "\e3cd";
+}
+.icon-html5:before {
+ content: "\e3ce";
+}
+.icon-plugin-1:before {
+ content: "\e3cf";
+}
+.icon-plugin-2:before {
+ content: "\e3d0";
+}
+.icon-script:before {
+ content: "\e3d1";
+}
+.icon-new-window:before {
+ content: "\e3d2";
+}
+.icon-window-1:before {
+ content: "\e3d3";
+}
+.icon-window-2:before {
+ content: "\e3d4";
+}
+.icon-window-3:before {
+ content: "\e3d5";
+}
+.icon-window-add:before {
+ content: "\e3d6";
+}
+.icon-window-alert:before {
+ content: "\e3d7";
+}
+.icon-window-check:before {
+ content: "\e3d8";
+}
+.icon-window-code-1:before {
+ content: "\e3d9";
+}
+.icon-window-code-2:before {
+ content: "\e3da";
+}
+.icon-window-code-3:before {
+ content: "\e3db";
+}
+.icon-window-column:before {
+ content: "\e3dc";
+}
+.icon-window-delete:before {
+ content: "\e3dd";
+}
+.icon-window-denied:before {
+ content: "\e3de";
+}
+.icon-window-download-1:before {
+ content: "\e3df";
+}
+.icon-window-download-2:before {
+ content: "\e3e0";
+}
+.icon-window-edit:before {
+ content: "\e3e1";
+}
+.icon-window-favorite-1:before {
+ content: "\e3e2";
+}
+.icon-window-favorite-2:before {
+ content: "\e3e3";
+}
+.icon-window-graph-1:before {
+ content: "\e3e4";
+}
+.icon-window-graph-2:before {
+ content: "\e3e5";
+}
+.icon-window-hand:before {
+ content: "\e3e6";
+}
+.icon-window-home:before {
+ content: "\e3e7";
+}
+.icon-window-list-1:before {
+ content: "\e3e8";
+}
+.icon-window-list-2:before {
+ content: "\e3e9";
+}
+.icon-window-lock:before {
+ content: "\e3ea";
+}
+.icon-window-minimize:before {
+ content: "\e3eb";
+}
+.icon-window-minus:before {
+ content: "\e3ec";
+}
+.icon-window-refresh:before {
+ content: "\e3ed";
+}
+.icon-window-registry:before {
+ content: "\e3ee";
+}
+.icon-window-search:before {
+ content: "\e3ef";
+}
+.icon-window-selection-1:before {
+ content: "\e3f0";
+}
+.icon-window-selection-2:before {
+ content: "\e3f1";
+}
+.icon-window-setting:before {
+ content: "\e3f2";
+}
+.icon-window-sync:before {
+ content: "\e3f3";
+}
+.icon-window-thumbnail-1:before {
+ content: "\e3f4";
+}
+.icon-window-thumbnail-2:before {
+ content: "\e3f5";
+}
+.icon-window-time:before {
+ content: "\e3f6";
+}
+.icon-window-upload-1:before {
+ content: "\e3f7";
+}
+.icon-window-upload-2:before {
+ content: "\e3f8";
+}
+.icon-database:before {
+ content: "\e3f9";
+}
+.icon-database-alert:before {
+ content: "\e3fa";
+}
+.icon-database-block:before {
+ content: "\e3fb";
+}
+.icon-database-check:before {
+ content: "\e3fc";
+}
+.icon-database-delete:before {
+ content: "\e3fd";
+}
+.icon-database-download:before {
+ content: "\e3fe";
+}
+.icon-database-editor:before {
+ content: "\e3ff";
+}
+.icon-database-lock:before {
+ content: "\e400";
+}
+.icon-database-minus:before {
+ content: "\e401";
+}
+.icon-database-network:before {
+ content: "\e402";
+}
+.icon-database-plus:before {
+ content: "\e403";
+}
+.icon-database-refresh:before {
+ content: "\e404";
+}
+.icon-database-search:before {
+ content: "\e405";
+}
+.icon-database-setting:before {
+ content: "\e406";
+}
+.icon-database-sync:before {
+ content: "\e407";
+}
+.icon-database-time:before {
+ content: "\e408";
+}
+.icon-database-upload:before {
+ content: "\e409";
+}
+.icon-battery-charging:before {
+ content: "\e40a";
+}
+.icon-battery-full:before {
+ content: "\e40b";
+}
+.icon-battery-high:before {
+ content: "\e40c";
+}
+.icon-battery-low:before {
+ content: "\e40d";
+}
+.icon-battery-medium:before {
+ content: "\e40e";
+}
+.icon-cd-1:before {
+ content: "\e40f";
+}
+.icon-cd-2:before {
+ content: "\e410";
+}
+.icon-chip:before {
+ content: "\e411";
+}
+.icon-computer:before {
+ content: "\e412";
+}
+.icon-disc:before {
+ content: "\e413";
+}
+.icon-filter:before {
+ content: "\e414";
+}
+.icon-floppy-disk:before {
+ content: "\e415";
+}
+.icon-gameboy:before {
+ content: "\e416";
+}
+.icon-harddisk-1:before {
+ content: "\e417";
+}
+.icon-harddisk-2:before {
+ content: "\e418";
+}
+.icon-imac:before {
+ content: "\e419";
+}
+.icon-ipad-1:before {
+ content: "\e41a";
+}
+.icon-ipad-2:before {
+ content: "\e41b";
+}
+.icon-ipod:before {
+ content: "\e41c";
+}
+.icon-joystick-1:before {
+ content: "\e41d";
+}
+.icon-joystick-2:before {
+ content: "\e41e";
+}
+.icon-joystick-3:before {
+ content: "\e41f";
+}
+.icon-keyboard-1:before {
+ content: "\e420";
+}
+.icon-keyboard-2:before {
+ content: "\e421";
+}
+.icon-kindle-1:before {
+ content: "\e422";
+}
+.icon-kindle-2:before {
+ content: "\e423";
+}
+.icon-laptop-1:before {
+ content: "\e424";
+}
+.icon-laptop-2:before {
+ content: "\e425";
+}
+.icon-memory-card:before {
+ content: "\e426";
+}
+.icon-mobile-phone:before {
+ content: "\e427";
+}
+.icon-mouse-1:before {
+ content: "\e428";
+}
+.icon-mouse-2:before {
+ content: "\e429";
+}
+.icon-mp3player:before {
+ content: "\e42a";
+}
+.icon-plug-1:before {
+ content: "\e42b";
+}
+.icon-plug-2:before {
+ content: "\e42c";
+}
+.icon-plug-slot:before {
+ content: "\e42d";
+}
+.icon-printer:before {
+ content: "\e42e";
+}
+.icon-projector:before {
+ content: "\e42f";
+}
+.icon-remote:before {
+ content: "\e430";
+}
+.icon-router:before {
+ content: "\e431";
+}
+.icon-screen-1:before {
+ content: "\e432";
+}
+.icon-screen-2:before {
+ content: "\e433";
+}
+.icon-screen-3:before {
+ content: "\e434";
+}
+.icon-screen-4:before {
+ content: "\e435";
+}
+.icon-smartphone-1:before {
+ content: "\e436";
+}
+.icon-television-1:before {
+ content: "\e437";
+}
+.icon-typewriter-1:before {
+ content: "\e438";
+}
+.icon-typewriter-2:before {
+ content: "\e439";
+}
+.icon-usb-1:before {
+ content: "\e43a";
+}
+.icon-usb-2:before {
+ content: "\e43b";
+}
+.icon-webcam:before {
+ content: "\e43c";
+}
+.icon-wireless-router-1:before {
+ content: "\e43d";
+}
+.icon-wireless-router-2:before {
+ content: "\e43e";
+}
+.icon-bluetooth:before {
+ content: "\e43f";
+}
+.icon-ethernet:before {
+ content: "\e440";
+}
+.icon-ethernet-slot:before {
+ content: "\e441";
+}
+.icon-firewire-1:before {
+ content: "\e442";
+}
+.icon-firewire-2:before {
+ content: "\e443";
+}
+.icon-network-1:before {
+ content: "\e444";
+}
+.icon-network-2:before {
+ content: "\e445";
+}
+.icon-server-1:before {
+ content: "\e446";
+}
+.icon-server-2:before {
+ content: "\e447";
+}
+.icon-server-3:before {
+ content: "\e448";
+}
+.icon-usb:before {
+ content: "\e449";
+}
+.icon-wireless-signal:before {
+ content: "\e44a";
+}
+.icon-book:before {
+ content: "\e44b";
+}
+.icon-book-1:before {
+ content: "\e44c";
+}
+.icon-book-2:before {
+ content: "\e44d";
+}
+.icon-book-3:before {
+ content: "\e44e";
+}
+.icon-book-4:before {
+ content: "\e44f";
+}
+.icon-book-5:before {
+ content: "\e450";
+}
+.icon-book-6:before {
+ content: "\e451";
+}
+.icon-book-7:before {
+ content: "\e452";
+}
+.icon-book-download-1:before {
+ content: "\e453";
+}
+.icon-book-download-2:before {
+ content: "\e454";
+}
+.icon-book-favorite-1:before {
+ content: "\e455";
+}
+.icon-bookmark-1-1:before {
+ content: "\e456";
+}
+.icon-bookmark-2-1:before {
+ content: "\e457";
+}
+.icon-bookmark-3-1:before {
+ content: "\e458";
+}
+.icon-bookmark-4-1:before {
+ content: "\e459";
+}
+.icon-books-1:before {
+ content: "\e45a";
+}
+.icon-books-2:before {
+ content: "\e45b";
+}
+.icon-books-3:before {
+ content: "\e45c";
+}
+.icon-briefcase-1:before {
+ content: "\e45d";
+}
+.icon-contact-book-1:before {
+ content: "\e45e";
+}
+.icon-contact-book-2:before {
+ content: "\e45f";
+}
+.icon-contact-book-3:before {
+ content: "\e460";
+}
+.icon-contact-book-4:before {
+ content: "\e461";
+}
+.icon-copyright:before {
+ content: "\e462";
+}
+.icon-creative-commons:before {
+ content: "\e463";
+}
+.icon-cube:before {
+ content: "\e464";
+}
+.icon-data-filter:before {
+ content: "\e465";
+}
+.icon-document-box-1:before {
+ content: "\e466";
+}
+.icon-document-box-2:before {
+ content: "\e467";
+}
+.icon-document-box-3:before {
+ content: "\e468";
+}
+.icon-drawer-1:before {
+ content: "\e469";
+}
+.icon-drawer-2:before {
+ content: "\e46a";
+}
+.icon-drawer-3:before {
+ content: "\e46b";
+}
+.icon-envelope:before {
+ content: "\e46c";
+}
+.icon-favortie-book-2:before {
+ content: "\e46d";
+}
+.icon-file:before {
+ content: "\e46e";
+}
+.icon-files:before {
+ content: "\e46f";
+}
+.icon-filter-1:before {
+ content: "\e470";
+}
+.icon-filter-2:before {
+ content: "\e471";
+}
+.icon-layers-1:before {
+ content: "\e472";
+}
+.icon-list-1:before {
+ content: "\e473";
+}
+.icon-list-2:before {
+ content: "\e474";
+}
+.icon-newspaper-1:before {
+ content: "\e475";
+}
+.icon-newspaper-2:before {
+ content: "\e476";
+}
+.icon-registry-1:before {
+ content: "\e477";
+}
+.icon-registry-2:before {
+ content: "\e478";
+}
+.icon-shield-1:before {
+ content: "\e479";
+}
+.icon-shield-2:before {
+ content: "\e47a";
+}
+.icon-shield-3:before {
+ content: "\e47b";
+}
+.icon-sketchbook:before {
+ content: "\e47c";
+}
+.icon-sound-book:before {
+ content: "\e47d";
+}
+.icon-thumbnails-1:before {
+ content: "\e47e";
+}
+.icon-thumbnails-2:before {
+ content: "\e47f";
+}
+.icon-hierarchy-1:before {
+ content: "\e480";
+}
+.icon-hierarchy-2:before {
+ content: "\e481";
+}
+.icon-hierarchy-3:before {
+ content: "\e482";
+}
+.icon-hierarchy-4:before {
+ content: "\e483";
+}
+.icon-hierarchy-5:before {
+ content: "\e484";
+}
+.icon-hierarchy-6:before {
+ content: "\e485";
+}
+.icon-hierarchy-7:before {
+ content: "\e486";
+}
+.icon-hierarchy-8:before {
+ content: "\e487";
+}
+.icon-network-1-1:before {
+ content: "\e488";
+}
+.icon-network-2-1:before {
+ content: "\e489";
+}
+.icon-backpack:before {
+ content: "\e48a";
+}
+.icon-balance-1:before {
+ content: "\e48b";
+}
+.icon-bed:before {
+ content: "\e48c";
+}
+.icon-bench:before {
+ content: "\e48d";
+}
+.icon-bomb-1:before {
+ content: "\e48e";
+}
+.icon-bricks:before {
+ content: "\e48f";
+}
+.icon-bullets:before {
+ content: "\e490";
+}
+.icon-buoy-ring:before {
+ content: "\e491";
+}
+.icon-campfire:before {
+ content: "\e492";
+}
+.icon-can:before {
+ content: "\e493";
+}
+.icon-candle:before {
+ content: "\e494";
+}
+.icon-canon:before {
+ content: "\e495";
+}
+.icon-cctv-1:before {
+ content: "\e496";
+}
+.icon-cctv-2:before {
+ content: "\e497";
+}
+.icon-chair:before {
+ content: "\e498";
+}
+.icon-chair-director:before {
+ content: "\e499";
+}
+.icon-cigarette:before {
+ content: "\e49a";
+}
+.icon-construction-sign:before {
+ content: "\e49b";
+}
+.icon-diamond:before {
+ content: "\e49c";
+}
+.icon-disabled:before {
+ content: "\e49d";
+}
+.icon-door:before {
+ content: "\e49e";
+}
+.icon-drawer:before {
+ content: "\e49f";
+}
+.icon-driller:before {
+ content: "\e4a0";
+}
+.icon-dumbbell:before {
+ content: "\e4a1";
+}
+.icon-fire-extinguisher:before {
+ content: "\e4a2";
+}
+.icon-flashlight:before {
+ content: "\e4a3";
+}
+.icon-gas-station:before {
+ content: "\e4a4";
+}
+.icon-gun:before {
+ content: "\e4a5";
+}
+.icon-lamp-1:before {
+ content: "\e4a6";
+}
+.icon-lamp-2:before {
+ content: "\e4a7";
+}
+.icon-lamp-3:before {
+ content: "\e4a8";
+}
+.icon-lamp-4:before {
+ content: "\e4a9";
+}
+.icon-lightbulb-1:before {
+ content: "\e4aa";
+}
+.icon-lightbulb-2:before {
+ content: "\e4ab";
+}
+.icon-measuring-tape:before {
+ content: "\e4ac";
+}
+.icon-mine-cart:before {
+ content: "\e4ad";
+}
+.icon-missile:before {
+ content: "\e4ae";
+}
+.icon-ring:before {
+ content: "\e4af";
+}
+.icon-scale-1:before {
+ content: "\e4b0";
+}
+.icon-shovel:before {
+ content: "\e4b1";
+}
+.icon-smoke-no:before {
+ content: "\e4b2";
+}
+.icon-sofa-1:before {
+ content: "\e4b3";
+}
+.icon-sofa-2:before {
+ content: "\e4b4";
+}
+.icon-sofa-3:before {
+ content: "\e4b5";
+}
+.icon-target:before {
+ content: "\e4b6";
+}
+.icon-torch:before {
+ content: "\e4b7";
+}
+.icon-traffic-cone:before {
+ content: "\e4b8";
+}
+.icon-traffic-light-1:before {
+ content: "\e4b9";
+}
+.icon-traffic-light-2:before {
+ content: "\e4ba";
+}
+.icon-treasure-1:before {
+ content: "\e4bb";
+}
+.icon-treasure-2:before {
+ content: "\e4bc";
+}
+.icon-trowel:before {
+ content: "\e4bd";
+}
+.icon-watering-can:before {
+ content: "\e4be";
+}
+.icon-weigh:before {
+ content: "\e4bf";
+}
+.icon-academic-cap:before {
+ content: "\e4c0";
+}
+.icon-baseball-helmet:before {
+ content: "\e4c1";
+}
+.icon-beanie:before {
+ content: "\e4c2";
+}
+.icon-bike-helmet:before {
+ content: "\e4c3";
+}
+.icon-bow:before {
+ content: "\e4c4";
+}
+.icon-cap:before {
+ content: "\e4c5";
+}
+.icon-chaplin:before {
+ content: "\e4c6";
+}
+.icon-chef-hat:before {
+ content: "\e4c7";
+}
+.icon-cloth-hanger:before {
+ content: "\e4c8";
+}
+.icon-fins:before {
+ content: "\e4c9";
+}
+.icon-football-helmet:before {
+ content: "\e4ca";
+}
+.icon-glasses:before {
+ content: "\e4cb";
+}
+.icon-glasses-1:before {
+ content: "\e4cc";
+}
+.icon-glasses-2:before {
+ content: "\e4cd";
+}
+.icon-magician-hat:before {
+ content: "\e4ce";
+}
+.icon-monocle-1:before {
+ content: "\e4cf";
+}
+.icon-monocle-2:before {
+ content: "\e4d0";
+}
+.icon-necktie:before {
+ content: "\e4d1";
+}
+.icon-polo-shirt:before {
+ content: "\e4d2";
+}
+.icon-safety-helmet:before {
+ content: "\e4d3";
+}
+.icon-scuba-tank:before {
+ content: "\e4d4";
+}
+.icon-shirt-1:before {
+ content: "\e4d5";
+}
+.icon-shirt-2:before {
+ content: "\e4d6";
+}
+.icon-sneakers:before {
+ content: "\e4d7";
+}
+.icon-snorkel:before {
+ content: "\e4d8";
+}
+.icon-sombrero:before {
+ content: "\e4d9";
+}
+.icon-sunglasses:before {
+ content: "\e4da";
+}
+.icon-tall-hat:before {
+ content: "\e4db";
+}
+.icon-trousers:before {
+ content: "\e4dc";
+}
+.icon-walking-stick:before {
+ content: "\e4dd";
+}
+.icon-arrow-redo:before {
+ content: "\e4de";
+}
+.icon-arrow-undo:before {
+ content: "\e4df";
+}
+.icon-bold:before {
+ content: "\e4e0";
+}
+.icon-columns:before {
+ content: "\e4e1";
+}
+.icon-eraser:before {
+ content: "\e4e2";
+}
+.icon-font-color:before {
+ content: "\e4e3";
+}
+.icon-html:before {
+ content: "\e4e4";
+}
+.icon-italic:before {
+ content: "\e4e5";
+}
+.icon-list-1-1:before {
+ content: "\e4e6";
+}
+.icon-list-2-1:before {
+ content: "\e4e7";
+}
+.icon-list-3:before {
+ content: "\e4e8";
+}
+.icon-list-4:before {
+ content: "\e4e9";
+}
+.icon-paragraph:before {
+ content: "\e4ea";
+}
+.icon-paste:before {
+ content: "\e4eb";
+}
+.icon-print-preview:before {
+ content: "\e4ec";
+}
+.icon-quote:before {
+ content: "\e4ed";
+}
+.icon-strikethrough:before {
+ content: "\e4ee";
+}
+.icon-text:before {
+ content: "\e4ef";
+}
+.icon-text-wrapping-1:before {
+ content: "\e4f0";
+}
+.icon-text-wrapping-2:before {
+ content: "\e4f1";
+}
+.icon-text-wrapping-3:before {
+ content: "\e4f2";
+}
+.icon-underline:before {
+ content: "\e4f3";
+}
+.icon-align-center:before {
+ content: "\e4f4";
+}
+.icon-align-left:before {
+ content: "\e4f5";
+}
+.icon-align-right:before {
+ content: "\e4f6";
+}
+.icon-all-caps:before {
+ content: "\e4f7";
+}
+.icon-arrange-2-1:before {
+ content: "\e4f8";
+}
+.icon-arrange-2-2:before {
+ content: "\e4f9";
+}
+.icon-arrange-2-3:before {
+ content: "\e4fa";
+}
+.icon-arrange-2-4:before {
+ content: "\e4fb";
+}
+.icon-arrange-3-1:before {
+ content: "\e4fc";
+}
+.icon-arrange-3-2:before {
+ content: "\e4fd";
+}
+.icon-arrange-3-3:before {
+ content: "\e4fe";
+}
+.icon-arrange-3-4:before {
+ content: "\e4ff";
+}
+.icon-arrange-3-5:before {
+ content: "\e500";
+}
+.icon-arrange-4-1:before {
+ content: "\e501";
+}
+.icon-arrange-4-2:before {
+ content: "\e502";
+}
+.icon-arrange-4-3:before {
+ content: "\e503";
+}
+.icon-arrange-5:before {
+ content: "\e504";
+}
+.icon-consolidate-all:before {
+ content: "\e505";
+}
+.icon-decrease-indent-1:before {
+ content: "\e506";
+}
+.icon-decrease-indent-2:before {
+ content: "\e507";
+}
+.icon-horizontal-page:before {
+ content: "\e508";
+}
+.icon-increase-indent-1:before {
+ content: "\e509";
+}
+.icon-increase-indent-2:before {
+ content: "\e50a";
+}
+.icon-justify:before {
+ content: "\e50b";
+}
+.icon-leading-1:before {
+ content: "\e50c";
+}
+.icon-leading-2:before {
+ content: "\e50d";
+}
+.icon-left-indent:before {
+ content: "\e50e";
+}
+.icon-right-indent:before {
+ content: "\e50f";
+}
+.icon-small-caps:before {
+ content: "\e510";
+}
+.icon-vertical-page:before {
+ content: "\e511";
+}
+.icon-alt-mac:before {
+ content: "\e512";
+}
+.icon-alt-windows:before {
+ content: "\e513";
+}
+.icon-arrow-down:before {
+ content: "\e514";
+}
+.icon-arrow-down-left:before {
+ content: "\e515";
+}
+.icon-arrow-down-right:before {
+ content: "\e516";
+}
+.icon-arrow-left:before {
+ content: "\e517";
+}
+.icon-arrow-right:before {
+ content: "\e518";
+}
+.icon-arrow-up:before {
+ content: "\e519";
+}
+.icon-arrow-up-left:before {
+ content: "\e51a";
+}
+.icon-arrow-up-right:before {
+ content: "\e51b";
+}
+.icon-asterisk-1:before {
+ content: "\e51c";
+}
+.icon-asterisk-2:before {
+ content: "\e51d";
+}
+.icon-back-tab-1:before {
+ content: "\e51e";
+}
+.icon-back-tab-2:before {
+ content: "\e51f";
+}
+.icon-backward-delete:before {
+ content: "\e520";
+}
+.icon-blank:before {
+ content: "\e521";
+}
+.icon-eject:before {
+ content: "\e522";
+}
+.icon-enter-1:before {
+ content: "\e523";
+}
+.icon-enter-2:before {
+ content: "\e524";
+}
+.icon-escape:before {
+ content: "\e525";
+}
+.icon-page-down:before {
+ content: "\e526";
+}
+.icon-page-up:before {
+ content: "\e527";
+}
+.icon-return-1:before {
+ content: "\e528";
+}
+.icon-shift:before {
+ content: "\e529";
+}
+.icon-shift-2:before {
+ content: "\e52a";
+}
+.icon-tab:before {
+ content: "\e52b";
+}
+.icon-apple:before {
+ content: "\e52c";
+}
+.icon-beer:before {
+ content: "\e52d";
+}
+.icon-boil:before {
+ content: "\e52e";
+}
+.icon-bottle-1:before {
+ content: "\e52f";
+}
+.icon-bottle-2:before {
+ content: "\e530";
+}
+.icon-bottle-3:before {
+ content: "\e531";
+}
+.icon-bottle-4:before {
+ content: "\e532";
+}
+.icon-bread:before {
+ content: "\e533";
+}
+.icon-burger-1:before {
+ content: "\e534";
+}
+.icon-burger-2:before {
+ content: "\e535";
+}
+.icon-cake-1:before {
+ content: "\e536";
+}
+.icon-cake-2:before {
+ content: "\e537";
+}
+.icon-champagne:before {
+ content: "\e538";
+}
+.icon-cheese:before {
+ content: "\e539";
+}
+.icon-cocktail-1:before {
+ content: "\e53a";
+}
+.icon-cocktail-2:before {
+ content: "\e53b";
+}
+.icon-cocktail-3:before {
+ content: "\e53c";
+}
+.icon-coffee-cup:before {
+ content: "\e53d";
+}
+.icon-coffee-cup-1:before {
+ content: "\e53e";
+}
+.icon-coffee-pot:before {
+ content: "\e53f";
+}
+.icon-deep-fry:before {
+ content: "\e540";
+}
+.icon-energy-drink:before {
+ content: "\e541";
+}
+.icon-espresso-machine:before {
+ content: "\e542";
+}
+.icon-food-dome:before {
+ content: "\e543";
+}
+.icon-fork-and-knife:before {
+ content: "\e544";
+}
+.icon-fork-and-spoon:before {
+ content: "\e545";
+}
+.icon-grape:before {
+ content: "\e546";
+}
+.icon-grater:before {
+ content: "\e547";
+}
+.icon-grill:before {
+ content: "\e548";
+}
+.icon-hot-drinks-glass:before {
+ content: "\e549";
+}
+.icon-hotdog:before {
+ content: "\e54a";
+}
+.icon-ice-cream-1:before {
+ content: "\e54b";
+}
+.icon-ice-cream-2:before {
+ content: "\e54c";
+}
+.icon-ice-cream-3:before {
+ content: "\e54d";
+}
+.icon-ice-drinks-glass:before {
+ content: "\e54e";
+}
+.icon-juicer:before {
+ content: "\e54f";
+}
+.icon-kitchen-timer:before {
+ content: "\e550";
+}
+.icon-milk:before {
+ content: "\e551";
+}
+.icon-orange:before {
+ content: "\e552";
+}
+.icon-oven:before {
+ content: "\e553";
+}
+.icon-pan-fry:before {
+ content: "\e554";
+}
+.icon-pepper-salt:before {
+ content: "\e555";
+}
+.icon-pizza:before {
+ content: "\e556";
+}
+.icon-pop-corn:before {
+ content: "\e557";
+}
+.icon-serving:before {
+ content: "\e558";
+}
+.icon-soda:before {
+ content: "\e559";
+}
+.icon-soda-can-1:before {
+ content: "\e55a";
+}
+.icon-soda-can-2:before {
+ content: "\e55b";
+}
+.icon-steam:before {
+ content: "\e55c";
+}
+.icon-tea-pot:before {
+ content: "\e55d";
+}
+.icon-thermometer-high:before {
+ content: "\e55e";
+}
+.icon-thermometer-low:before {
+ content: "\e55f";
+}
+.icon-thermometer-medium:before {
+ content: "\e560";
+}
+.icon-water:before {
+ content: "\e561";
+}
+.icon-wine:before {
+ content: "\e562";
+}
+.icon-ambulance:before {
+ content: "\e563";
+}
+.icon-beaker-1:before {
+ content: "\e564";
+}
+.icon-beaker-2:before {
+ content: "\e565";
+}
+.icon-blood:before {
+ content: "\e566";
+}
+.icon-drug:before {
+ content: "\e567";
+}
+.icon-first-aid:before {
+ content: "\e568";
+}
+.icon-hashish:before {
+ content: "\e569";
+}
+.icon-heart-pulse:before {
+ content: "\e56a";
+}
+.icon-hospital-1:before {
+ content: "\e56b";
+}
+.icon-hospital-2:before {
+ content: "\e56c";
+}
+.icon-hospital-sign-1:before {
+ content: "\e56d";
+}
+.icon-hospital-sign-2:before {
+ content: "\e56e";
+}
+.icon-hospital-sign-3:before {
+ content: "\e56f";
+}
+.icon-medicine:before {
+ content: "\e570";
+}
+.icon-microscope:before {
+ content: "\e571";
+}
+.icon-mortar-and-pestle:before {
+ content: "\e572";
+}
+.icon-plaster:before {
+ content: "\e573";
+}
+.icon-pulse-graph-1:before {
+ content: "\e574";
+}
+.icon-pulse-graph-2:before {
+ content: "\e575";
+}
+.icon-pulse-graph-3:before {
+ content: "\e576";
+}
+.icon-red-cross:before {
+ content: "\e577";
+}
+.icon-stethoscope:before {
+ content: "\e578";
+}
+.icon-syringe:before {
+ content: "\e579";
+}
+.icon-yin-yang:before {
+ content: "\e57a";
+}
+.icon-balloon:before {
+ content: "\e57b";
+}
+.icon-briefcase-lock:before {
+ content: "\e57c";
+}
+.icon-card:before {
+ content: "\e57d";
+}
+.icon-cards-1:before {
+ content: "\e57e";
+}
+.icon-cards-2:before {
+ content: "\e57f";
+}
+.icon-curtain:before {
+ content: "\e580";
+}
+.icon-dice-1:before {
+ content: "\e581";
+}
+.icon-dice-2:before {
+ content: "\e582";
+}
+.icon-pacman:before {
+ content: "\e583";
+}
+.icon-pacman-ghost:before {
+ content: "\e584";
+}
+.icon-sign-1:before {
+ content: "\e585";
+}
+.icon-smiley-happy:before {
+ content: "\e586";
+}
+.icon-smiley-sad:before {
+ content: "\e587";
+}
+.icon-smileys:before {
+ content: "\e588";
+}
+.icon-suitcase-1:before {
+ content: "\e589";
+}
+.icon-suitcase-2:before {
+ content: "\e58a";
+}
+.icon-tetris:before {
+ content: "\e58b";
+}
+.icon-ticket-1:before {
+ content: "\e58c";
+}
+.icon-ticket-2:before {
+ content: "\e58d";
+}
+.icon-ticket-3:before {
+ content: "\e58e";
+}
+.icon-virus:before {
+ content: "\e58f";
+}
+.icon-cloud-1:before {
+ content: "\e590";
+}
+.icon-cloud-lightning:before {
+ content: "\e591";
+}
+.icon-clouds:before {
+ content: "\e592";
+}
+.icon-first-quarter-half-moon:before {
+ content: "\e593";
+}
+.icon-full-moon:before {
+ content: "\e594";
+}
+.icon-hail:before {
+ content: "\e595";
+}
+.icon-heavy-rain:before {
+ content: "\e596";
+}
+.icon-moon-cloud:before {
+ content: "\e597";
+}
+.icon-rain:before {
+ content: "\e598";
+}
+.icon-rain-lightning:before {
+ content: "\e599";
+}
+.icon-snow:before {
+ content: "\e59a";
+}
+.icon-sun:before {
+ content: "\e59b";
+}
+.icon-sun-cloud:before {
+ content: "\e59c";
+}
+.icon-thermometer:before {
+ content: "\e59d";
+}
+.icon-third-quarter-half-moon:before {
+ content: "\e59e";
+}
+.icon-umbrella:before {
+ content: "\e59f";
+}
+.icon-waning-crescent-moon:before {
+ content: "\e5a0";
+}
+.icon-waning-gibbous-moon:before {
+ content: "\e5a1";
+}
+.icon-waxing-crescent-moon:before {
+ content: "\e5a2";
+}
+.icon-waxing-gibbous-moon:before {
+ content: "\e5a3";
+}
+.icon-bicycle:before {
+ content: "\e5a4";
+}
+.icon-bus-1:before {
+ content: "\e5a5";
+}
+.icon-bus-2:before {
+ content: "\e5a6";
+}
+.icon-car-1:before {
+ content: "\e5a7";
+}
+.icon-car-2:before {
+ content: "\e5a8";
+}
+.icon-car-3:before {
+ content: "\e5a9";
+}
+.icon-car-4:before {
+ content: "\e5aa";
+}
+.icon-helicopter:before {
+ content: "\e5ab";
+}
+.icon-mountain-bike:before {
+ content: "\e5ac";
+}
+.icon-pickup:before {
+ content: "\e5ad";
+}
+.icon-plane-1:before {
+ content: "\e5ae";
+}
+.icon-plane-2:before {
+ content: "\e5af";
+}
+.icon-plane-landing:before {
+ content: "\e5b0";
+}
+.icon-plane-takeoff:before {
+ content: "\e5b1";
+}
+.icon-road:before {
+ content: "\e5b2";
+}
+.icon-road-bike:before {
+ content: "\e5b3";
+}
+.icon-rocket:before {
+ content: "\e5b4";
+}
+.icon-scooter:before {
+ content: "\e5b5";
+}
+.icon-ship:before {
+ content: "\e5b6";
+}
+.icon-train:before {
+ content: "\e5b7";
+}
+.icon-tram:before {
+ content: "\e5b8";
+}
+.icon-cactus:before {
+ content: "\e5b9";
+}
+.icon-clover:before {
+ content: "\e5ba";
+}
+.icon-flower:before {
+ content: "\e5bb";
+}
+.icon-hand-eco:before {
+ content: "\e5bc";
+}
+.icon-hand-globe:before {
+ content: "\e5bd";
+}
+.icon-leaf:before {
+ content: "\e5be";
+}
+.icon-light-eco:before {
+ content: "\e5bf";
+}
+.icon-potted-plant-1:before {
+ content: "\e5c0";
+}
+.icon-potted-plant-2:before {
+ content: "\e5c1";
+}
+.icon-2-fingers-down-swipe:before {
+ content: "\e5c2";
+}
+.icon-2-fingers-horizontal-swipe:before {
+ content: "\e5c3";
+}
+.icon-2-fingers-left-swipe:before {
+ content: "\e5c4";
+}
+.icon-2-fingers-omnidirectional-swipe:before {
+ content: "\e5c5";
+}
+.icon-2-fingers-right-swipe:before {
+ content: "\e5c6";
+}
+.icon-2-fingers-tab-hold:before {
+ content: "\e5c7";
+}
+.icon-2-fingers-tap:before {
+ content: "\e5c8";
+}
+.icon-2-fingers-up-swipe:before {
+ content: "\e5c9";
+}
+.icon-2-fingers-vertical-swipe:before {
+ content: "\e5ca";
+}
+.icon-2finger-double-tap:before {
+ content: "\e5cb";
+}
+.icon-double-tap:before {
+ content: "\e5cc";
+}
+.icon-drag-down:before {
+ content: "\e5cd";
+}
+.icon-drag-horizontal:before {
+ content: "\e5ce";
+}
+.icon-drag-left:before {
+ content: "\e5cf";
+}
+.icon-drag-right:before {
+ content: "\e5d0";
+}
+.icon-drag-up:before {
+ content: "\e5d1";
+}
+.icon-drag-vertical:before {
+ content: "\e5d2";
+}
+.icon-filck-down:before {
+ content: "\e5d3";
+}
+.icon-flick-up:before {
+ content: "\e5d4";
+}
+.icon-horizontal-flick:before {
+ content: "\e5d5";
+}
+.icon-left-flick:before {
+ content: "\e5d6";
+}
+.icon-omnidirectional-drag:before {
+ content: "\e5d7";
+}
+.icon-omnidirectional-flick:before {
+ content: "\e5d8";
+}
+.icon-omnidirectional-swipe:before {
+ content: "\e5d9";
+}
+.icon-pinch:before {
+ content: "\e5da";
+}
+.icon-right-flick:before {
+ content: "\e5db";
+}
+.icon-rotate-clockwise:before {
+ content: "\e5dc";
+}
+.icon-rotate-counterclockwise:before {
+ content: "\e5dd";
+}
+.icon-spread:before {
+ content: "\e5de";
+}
+.icon-swipe-down:before {
+ content: "\e5df";
+}
+.icon-swipe-horizontal:before {
+ content: "\e5e0";
+}
+.icon-swipe-left:before {
+ content: "\e5e1";
+}
+.icon-swipe-right:before {
+ content: "\e5e2";
+}
+.icon-swipe-up:before {
+ content: "\e5e3";
+}
+.icon-swipe-vertical:before {
+ content: "\e5e4";
+}
+.icon-tap:before {
+ content: "\e5e5";
+}
+.icon-tap-hold:before {
+ content: "\e5e6";
+}
+.icon-vertical-flick:before {
+ content: "\e5e7";
+}
+.icon-arrow-1-1:before {
+ content: "\e5e8";
+}
+.icon-arrow-2-1:before {
+ content: "\e5e9";
+}
+.icon-arrow-3:before {
+ content: "\e5ea";
+}
+.icon-arrow-4:before {
+ content: "\e5eb";
+}
+.icon-arrow-5:before {
+ content: "\e5ec";
+}
+.icon-arrow-6:before {
+ content: "\e5ed";
+}
+.icon-arrow-7:before {
+ content: "\e5ee";
+}
+.icon-arrow-8:before {
+ content: "\e5ef";
+}
+.icon-arrow-9:before {
+ content: "\e5f0";
+}
+.icon-arrow-10:before {
+ content: "\e5f1";
+}
+.icon-arrow-11:before {
+ content: "\e5f2";
+}
+.icon-arrow-12:before {
+ content: "\e5f3";
+}
+.icon-arrow-13:before {
+ content: "\e5f4";
+}
+.icon-arrow-14:before {
+ content: "\e5f5";
+}
+.icon-arrow-15:before {
+ content: "\e5f6";
+}
+.icon-arrow-16:before {
+ content: "\e5f7";
+}
+.icon-arrow-17:before {
+ content: "\e5f8";
+}
+.icon-arrow-18:before {
+ content: "\e5f9";
+}
+.icon-arrow-19:before {
+ content: "\e5fa";
+}
+.icon-arrow-20:before {
+ content: "\e5fb";
+}
+.icon-arrow-21:before {
+ content: "\e5fc";
+}
+.icon-arrow-22:before {
+ content: "\e5fd";
+}
+.icon-arrow-23:before {
+ content: "\e5fe";
+}
+.icon-arrow-24:before {
+ content: "\e5ff";
+}
+.icon-arrow-25:before {
+ content: "\e600";
+}
+.icon-arrow-26:before {
+ content: "\e601";
+}
+.icon-arrow-27:before {
+ content: "\e602";
+}
+.icon-arrow-28:before {
+ content: "\e603";
+}
+.icon-arrow-29:before {
+ content: "\e604";
+}
+.icon-arrow-30:before {
+ content: "\e605";
+}
+.icon-arrow-31:before {
+ content: "\e606";
+}
+.icon-arrow-32:before {
+ content: "\e607";
+}
+.icon-arrow-33:before {
+ content: "\e608";
+}
+.icon-arrow-34:before {
+ content: "\e609";
+}
+.icon-arrow-35:before {
+ content: "\e60a";
+}
+.icon-arrow-36:before {
+ content: "\e60b";
+}
+.icon-arrow-37:before {
+ content: "\e60c";
+}
+.icon-arrow-38:before {
+ content: "\e60d";
+}
+.icon-arrow-39:before {
+ content: "\e60e";
+}
+.icon-arrow-40:before {
+ content: "\e60f";
+}
+.icon-arrow-41:before {
+ content: "\e610";
+}
+.icon-arrow-42:before {
+ content: "\e611";
+}
+.icon-arrow-43:before {
+ content: "\e612";
+}
+.icon-arrow-44:before {
+ content: "\e613";
+}
+.icon-arrow-45:before {
+ content: "\e614";
+}
+.icon-arrow-46:before {
+ content: "\e615";
+}
+.icon-arrow-47:before {
+ content: "\e616";
+}
+.icon-arrow-48:before {
+ content: "\e617";
+}
+.icon-arrow-49:before {
+ content: "\e618";
+}
+.icon-arrow-50:before {
+ content: "\e619";
+}
+.icon-arrow-51:before {
+ content: "\e61a";
+}
+.icon-arrow-52:before {
+ content: "\e61b";
+}
+.icon-arrow-53:before {
+ content: "\e61c";
+}
+.icon-arrow-54:before {
+ content: "\e61d";
+}
+.icon-arrow-55:before {
+ content: "\e61e";
+}
+.icon-arrow-56:before {
+ content: "\e61f";
+}
+.icon-arrow-57:before {
+ content: "\e620";
+}
+.icon-arrow-58:before {
+ content: "\e621";
+}
+.icon-arrow-59:before {
+ content: "\e622";
+}
+.icon-arrow-60:before {
+ content: "\e623";
+}
+.icon-arrow-61:before {
+ content: "\e624";
+}
+.icon-arrow-62:before {
+ content: "\e625";
+}
+.icon-arrow-63:before {
+ content: "\e626";
+}
+.icon-arrow-64:before {
+ content: "\e627";
+}
+.icon-arrow-65:before {
+ content: "\e628";
+}
+.icon-arrow-66:before {
+ content: "\e629";
+}
+.icon-arrow-67:before {
+ content: "\e62a";
+}
+.icon-arrow-68:before {
+ content: "\e62b";
+}
+.icon-arrow-69:before {
+ content: "\e62c";
+}
+.icon-arrow-70:before {
+ content: "\e62d";
+}
+.icon-arrow-71:before {
+ content: "\e62e";
+}
+.icon-arrow-72:before {
+ content: "\e62f";
+}
+.icon-arrow-circle-1:before {
+ content: "\e630";
+}
+.icon-arrow-circle-2:before {
+ content: "\e631";
+}
+.icon-arrow-circle-3:before {
+ content: "\e632";
+}
+.icon-arrow-circle-4:before {
+ content: "\e633";
+}
+.icon-arrow-circle-5:before {
+ content: "\e634";
+}
+.icon-arrow-circle-6:before {
+ content: "\e635";
+}
+.icon-arrow-circle-7:before {
+ content: "\e636";
+}
+.icon-arrow-circle-8:before {
+ content: "\e637";
+}
+.icon-arrow-circle-9:before {
+ content: "\e638";
+}
+.icon-arrow-circle-10:before {
+ content: "\e639";
+}
+.icon-arrow-circle-11:before {
+ content: "\e63a";
+}
+.icon-arrow-circle-12:before {
+ content: "\e63b";
+}
+.icon-arrow-circle-13:before {
+ content: "\e63c";
+}
+.icon-arrow-circle-14:before {
+ content: "\e63d";
+}
+.icon-arrow-circle-15:before {
+ content: "\e63e";
+}
+.icon-arrow-circle-16:before {
+ content: "\e63f";
+}
+.icon-arrow-circle-17:before {
+ content: "\e640";
+}
+.icon-arrow-circle-18:before {
+ content: "\e641";
+}
+.icon-arrow-circle-19:before {
+ content: "\e642";
+}
+.icon-arrow-circle-20:before {
+ content: "\e643";
+}
+.icon-arrow-circle-21:before {
+ content: "\e644";
+}
+.icon-arrow-circle-22:before {
+ content: "\e645";
+}
+.icon-arrow-circle-23:before {
+ content: "\e646";
+}
+.icon-arrow-circle-24:before {
+ content: "\e647";
+}
+.icon-arrow-circle-25:before {
+ content: "\e648";
+}
+.icon-arrow-circle-26:before {
+ content: "\e649";
+}
+.icon-arrow-circle-27:before {
+ content: "\e64a";
+}
+.icon-arrow-circle-28:before {
+ content: "\e64b";
+}
+.icon-arrow-circle-29:before {
+ content: "\e64c";
+}
+.icon-arrow-circle-30:before {
+ content: "\e64d";
+}
+.icon-arrow-delete-1:before {
+ content: "\e64e";
+}
+.icon-arrow-delete-2:before {
+ content: "\e64f";
+}
+.icon-arrow-dot-1:before {
+ content: "\e650";
+}
+.icon-arrow-dot-2:before {
+ content: "\e651";
+}
+.icon-arrow-dot-3:before {
+ content: "\e652";
+}
+.icon-arrow-dot-4:before {
+ content: "\e653";
+}
+.icon-arrow-dot-5:before {
+ content: "\e654";
+}
+.icon-arrow-dot-6:before {
+ content: "\e655";
+}
+.icon-arrow-rectangle-1:before {
+ content: "\e656";
+}
+.icon-arrow-rectangle-2:before {
+ content: "\e657";
+}
+.icon-arrow-rectangle-3:before {
+ content: "\e658";
+}
+.icon-arrow-rectangle-4:before {
+ content: "\e659";
+}
+.icon-arrow-rectangle-5:before {
+ content: "\e65a";
+}
+.icon-arrow-rectangle-6:before {
+ content: "\e65b";
+}
+.icon-arrow-rectangle-7:before {
+ content: "\e65c";
+}
+.icon-arrow-rectangle-8:before {
+ content: "\e65d";
+}
+.icon-arrow-rectangle-9:before {
+ content: "\e65e";
+}
+.icon-arrow-rectangle-10:before {
+ content: "\e65f";
+}
+.icon-arrow-rectangle-11:before {
+ content: "\e660";
+}
+.icon-arrow-rectangle-12:before {
+ content: "\e661";
+}
+.icon-arrow-rectangle-13:before {
+ content: "\e662";
+}
+.icon-arrow-rectangle-14:before {
+ content: "\e663";
+}
+.icon-arrow-rectangle-15:before {
+ content: "\e664";
+}
+.icon-arrow-rectangle-16:before {
+ content: "\e665";
+}
+.icon-arrow-rectangle-17:before {
+ content: "\e666";
+}
+.icon-arrow-rectangle-18:before {
+ content: "\e667";
+}
+.icon-arrow-rectangle-19:before {
+ content: "\e668";
+}
+.icon-arrow-rectangle-20:before {
+ content: "\e669";
+}
diff --git a/app/assets/stylesheets/bootstrap-tour.css.scss b/app/assets/stylesheets/bootstrap-tour.scss
similarity index 100%
rename from app/assets/stylesheets/bootstrap-tour.css.scss
rename to app/assets/stylesheets/bootstrap-tour.scss
diff --git a/app/assets/stylesheets/campaigns/common.css.scss b/app/assets/stylesheets/campaigns/common.css.scss
deleted file mode 100644
index accf7b7c1..000000000
--- a/app/assets/stylesheets/campaigns/common.css.scss
+++ /dev/null
@@ -1,9 +0,0 @@
-/* License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later */
-
-body .campaign-banner {
- margin: auto;
- width: 980px;
- max-height: 120px;
- text-align: center;
- overflow: hidden;
-}
\ No newline at end of file
diff --git a/app/assets/stylesheets/campaigns/common.scss b/app/assets/stylesheets/campaigns/common.scss
new file mode 100644
index 000000000..812f867de
--- /dev/null
+++ b/app/assets/stylesheets/campaigns/common.scss
@@ -0,0 +1,10 @@
+/* License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later */
+
+body .campaign-banner {
+ margin: auto;
+ width: 980px;
+ max-height: 120px;
+ text-align: center;
+ overflow: hidden;
+ max-width: 100%;
+}
\ No newline at end of file
diff --git a/app/assets/stylesheets/campaigns/edit/page.css.scss b/app/assets/stylesheets/campaigns/edit/page.scss
similarity index 100%
rename from app/assets/stylesheets/campaigns/edit/page.css.scss
rename to app/assets/stylesheets/campaigns/edit/page.scss
diff --git a/app/assets/stylesheets/campaigns/form.css.scss b/app/assets/stylesheets/campaigns/form.scss
similarity index 100%
rename from app/assets/stylesheets/campaigns/form.css.scss
rename to app/assets/stylesheets/campaigns/form.scss
diff --git a/app/assets/stylesheets/campaigns/index/page.css.scss b/app/assets/stylesheets/campaigns/index/page.scss
similarity index 100%
rename from app/assets/stylesheets/campaigns/index/page.css.scss
rename to app/assets/stylesheets/campaigns/index/page.scss
diff --git a/app/assets/stylesheets/campaigns/new/index.css.scss b/app/assets/stylesheets/campaigns/new/index.scss
similarity index 100%
rename from app/assets/stylesheets/campaigns/new/index.css.scss
rename to app/assets/stylesheets/campaigns/new/index.scss
diff --git a/app/assets/stylesheets/campaigns/peer_to_peer/page.css.scss b/app/assets/stylesheets/campaigns/peer_to_peer/page.scss
similarity index 100%
rename from app/assets/stylesheets/campaigns/peer_to_peer/page.css.scss
rename to app/assets/stylesheets/campaigns/peer_to_peer/page.scss
diff --git a/app/assets/stylesheets/campaigns/show/gift_levels.css.scss b/app/assets/stylesheets/campaigns/show/gift_levels.scss
similarity index 100%
rename from app/assets/stylesheets/campaigns/show/gift_levels.css.scss
rename to app/assets/stylesheets/campaigns/show/gift_levels.scss
diff --git a/app/assets/stylesheets/campaigns/show/page.css.scss b/app/assets/stylesheets/campaigns/show/page.scss
similarity index 100%
rename from app/assets/stylesheets/campaigns/show/page.css.scss
rename to app/assets/stylesheets/campaigns/show/page.scss
diff --git a/app/assets/stylesheets/campaigns/supporters/index/page.css.scss b/app/assets/stylesheets/campaigns/supporters/index/page.scss
similarity index 100%
rename from app/assets/stylesheets/campaigns/supporters/index/page.css.scss
rename to app/assets/stylesheets/campaigns/supporters/index/page.scss
diff --git a/app/assets/stylesheets/common/backgrounds.css.scss b/app/assets/stylesheets/common/backgrounds.css.scss
deleted file mode 100644
index ca5fe82c0..000000000
--- a/app/assets/stylesheets/common/backgrounds.css.scss
+++ /dev/null
@@ -1,3 +0,0 @@
-/* License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later */
-$paper: url('/assets/patterns/paper.png');
-$mosaic: url('/assets/patterns/color-mosaic.png');
diff --git a/app/assets/stylesheets/common/backgrounds.scss.erb b/app/assets/stylesheets/common/backgrounds.scss.erb
new file mode 100644
index 000000000..f0a6b246a
--- /dev/null
+++ b/app/assets/stylesheets/common/backgrounds.scss.erb
@@ -0,0 +1,4 @@
+/* License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later */
+$paper: url('<%= asset_path 'patterns/paper.png' %>');
+$mosaic: url('<%= asset_path 'patterns/color-mosaic.png' %>');
+
diff --git a/app/assets/stylesheets/common/branded_campaign_button.css.scss b/app/assets/stylesheets/common/branded_campaign_button.scss
similarity index 100%
rename from app/assets/stylesheets/common/branded_campaign_button.css.scss
rename to app/assets/stylesheets/common/branded_campaign_button.scss
diff --git a/app/assets/stylesheets/common/campaign_card.css.scss b/app/assets/stylesheets/common/campaign_card.scss
similarity index 100%
rename from app/assets/stylesheets/common/campaign_card.css.scss
rename to app/assets/stylesheets/common/campaign_card.scss
diff --git a/app/assets/stylesheets/common/colors.css.scss b/app/assets/stylesheets/common/colors.scss
similarity index 100%
rename from app/assets/stylesheets/common/colors.css.scss
rename to app/assets/stylesheets/common/colors.scss
diff --git a/app/assets/stylesheets/common/donate_button.css.scss b/app/assets/stylesheets/common/donate_button.css.scss
deleted file mode 100644
index f00f549ae..000000000
--- a/app/assets/stylesheets/common/donate_button.css.scss
+++ /dev/null
@@ -1,7 +0,0 @@
-/* License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later */
-@import 'mixins';
-@import 'supporters/form';
-@import 'nonprofits/donation_form/title_row';
-@import 'nonprofits/donation_form/footer';
-@import 'nonprofits/donation_form/form'; // for styling the actual form
-@import 'nonprofits/donation_form/show/index'; // for styling the layout on /donate
diff --git a/app/assets/stylesheets/common/donate_button.scss b/app/assets/stylesheets/common/donate_button.scss
new file mode 100644
index 000000000..e4b6bf533
--- /dev/null
+++ b/app/assets/stylesheets/common/donate_button.scss
@@ -0,0 +1,6 @@
+/* License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later */
+@import 'mixins';
+@import 'nonprofits/donation_form/title_row';
+@import 'nonprofits/donation_form/footer';
+@import 'nonprofits/donation_form/form'; // for styling the actual form
+@import 'nonprofits/donation_form/show/index'; // for styling the layout on /donate
diff --git a/app/assets/stylesheets/common/editable.css.scss.erb b/app/assets/stylesheets/common/editable.scss.erb
similarity index 100%
rename from app/assets/stylesheets/common/editable.css.scss.erb
rename to app/assets/stylesheets/common/editable.scss.erb
diff --git a/app/assets/stylesheets/common/fade_text.css.scss b/app/assets/stylesheets/common/fade_text.scss
similarity index 100%
rename from app/assets/stylesheets/common/fade_text.css.scss
rename to app/assets/stylesheets/common/fade_text.scss
diff --git a/app/assets/stylesheets/common/fonts_special.css.scss b/app/assets/stylesheets/common/fonts_special.scss
similarity index 100%
rename from app/assets/stylesheets/common/fonts_special.css.scss
rename to app/assets/stylesheets/common/fonts_special.scss
diff --git a/app/assets/stylesheets/common/fundraiser/metrics.css.scss b/app/assets/stylesheets/common/fundraiser/metrics.scss
similarity index 100%
rename from app/assets/stylesheets/common/fundraiser/metrics.css.scss
rename to app/assets/stylesheets/common/fundraiser/metrics.scss
diff --git a/app/assets/stylesheets/common/fundraisers.css.scss b/app/assets/stylesheets/common/fundraisers.scss
similarity index 100%
rename from app/assets/stylesheets/common/fundraisers.css.scss
rename to app/assets/stylesheets/common/fundraisers.scss
diff --git a/app/assets/stylesheets/common/icons.css.scss b/app/assets/stylesheets/common/icons.scss
similarity index 100%
rename from app/assets/stylesheets/common/icons.css.scss
rename to app/assets/stylesheets/common/icons.scss
diff --git a/app/assets/stylesheets/common/image_uploader.css.scss b/app/assets/stylesheets/common/image_uploader.scss
similarity index 100%
rename from app/assets/stylesheets/common/image_uploader.css.scss
rename to app/assets/stylesheets/common/image_uploader.scss
diff --git a/app/assets/stylesheets/common/images.css.scss b/app/assets/stylesheets/common/images.scss
similarity index 100%
rename from app/assets/stylesheets/common/images.css.scss
rename to app/assets/stylesheets/common/images.scss
diff --git a/app/assets/stylesheets/common/ios_hack.scss b/app/assets/stylesheets/common/ios_hack.scss
deleted file mode 100644
index 7a73c7b10..000000000
--- a/app/assets/stylesheets/common/ios_hack.scss
+++ /dev/null
@@ -1,4 +0,0 @@
-/* License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later */
-.ios-force-absolute-positioning {
- position: absolute !important;
-}
\ No newline at end of file
diff --git a/app/assets/stylesheets/common/layouts.css.scss b/app/assets/stylesheets/common/layouts.scss
similarity index 100%
rename from app/assets/stylesheets/common/layouts.css.scss
rename to app/assets/stylesheets/common/layouts.scss
diff --git a/app/assets/stylesheets/common/media_queries.css.scss b/app/assets/stylesheets/common/media_queries.scss
similarity index 100%
rename from app/assets/stylesheets/common/media_queries.css.scss
rename to app/assets/stylesheets/common/media_queries.scss
diff --git a/app/assets/stylesheets/common/minimal.css.scss b/app/assets/stylesheets/common/minimal.scss
similarity index 100%
rename from app/assets/stylesheets/common/minimal.css.scss
rename to app/assets/stylesheets/common/minimal.scss
diff --git a/app/assets/stylesheets/common/minimal_vertically_center.css.scss b/app/assets/stylesheets/common/minimal_vertically_center.scss
similarity index 100%
rename from app/assets/stylesheets/common/minimal_vertically_center.css.scss
rename to app/assets/stylesheets/common/minimal_vertically_center.scss
diff --git a/app/assets/stylesheets/common/page.css.scss b/app/assets/stylesheets/common/page.scss
similarity index 100%
rename from app/assets/stylesheets/common/page.css.scss
rename to app/assets/stylesheets/common/page.scss
diff --git a/app/assets/stylesheets/common/promote_button.css.scss b/app/assets/stylesheets/common/promote_button.scss
similarity index 100%
rename from app/assets/stylesheets/common/promote_button.css.scss
rename to app/assets/stylesheets/common/promote_button.scss
diff --git a/app/assets/stylesheets/common/states.css.scss b/app/assets/stylesheets/common/states.scss
similarity index 100%
rename from app/assets/stylesheets/common/states.css.scss
rename to app/assets/stylesheets/common/states.scss
diff --git a/app/assets/stylesheets/common/successes.css.scss b/app/assets/stylesheets/common/successes.scss
similarity index 100%
rename from app/assets/stylesheets/common/successes.css.scss
rename to app/assets/stylesheets/common/successes.scss
diff --git a/app/assets/stylesheets/common/typography/base.css.scss b/app/assets/stylesheets/common/typography/base.scss
similarity index 100%
rename from app/assets/stylesheets/common/typography/base.css.scss
rename to app/assets/stylesheets/common/typography/base.scss
diff --git a/app/assets/stylesheets/common/typography/special.css.scss b/app/assets/stylesheets/common/typography/special.scss
similarity index 100%
rename from app/assets/stylesheets/common/typography/special.css.scss
rename to app/assets/stylesheets/common/typography/special.scss
diff --git a/app/assets/stylesheets/common/utils.css.scss b/app/assets/stylesheets/common/utils.css.scss
deleted file mode 100644
index 9b422a2d4..000000000
--- a/app/assets/stylesheets/common/utils.css.scss
+++ /dev/null
@@ -1,414 +0,0 @@
-/* License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later */
-@import 'mixins';
-
-.hide {display: none; }
-.show {display: block;}
-.hide.show {display: block;}
-
-.u-inline, .hide.u-inline {display: inline;}
-.u-block, .hide.u-block {display: block !important;}
-.u-inlineBlock, .hide.u-inlineBlock {display: inline-block;}
-.u-displayNone { display: none; }
-
-.u-hide {display: none !important;}
-
-.u-normal {font-weight: normal;}
-
-.u-strike { text-decoration: line-through;}
-.u-flat {
- margin: 0;
- line-height: 1;
-}
-
-.u-noClear {
- clear: none;
-}
-
-.u-smallPs p {
- font-size: 14px;
- line-height: 1.2;
- margin: 0;
-}
-
-.u-medPs p {
- font-size: 15px;
- line-height: 1.5;
- margin: 0;
-}
-
-.u-pointer {
- cursor: pointer;
-}
-
-.u-verticallyCenter {
- display: table-cell;
- vertical-align: middle;
-}
-
-.u-verticallyCenterAbs {
- position: absolute;
- top: 50%;
- transform: translateY(-50%);
-}
-
-.u-centeredBg {
- background-size: cover;
- background-position: center;
-}
-
-.u-overflow--hidden {
- overflow: hidden !important;
-}
-.u-breakWord {
- word-break: break-word;
-}
-.u-width--initial {width: initial; }
-.u-width--full {width: 100%; }
-.u-width--half {width: 50%; }
-.u-width--third {width: 33.333333%; }
-.u-width--40 {width: 40px; }
-.u-width--50 {width: 50px; }
-.u-width--60 {width: 60px; }
-.u-width--70 {width: 70px; }
-.u-width--80 {width: 80px; }
-.u-width--90 {width: 90px; }
-.u-width--100 {width: 100px; }
-.u-width--140 {width: 140px; }
-.u-width--150 {width: 150px; }
-.u-width--160 {width: 160px; }
-.u-width--200 {width: 200px; }
-.u-width--250 {width: 250px; }
-.u-width--300 {width: 300px; }
-.u-width--400 {width: 400px; }
-
-.u-maxWidth--100 { max-width: 100px; }
-.u-maxWidth--150 { max-width: 150px; }
-.u-maxWidth--200 { max-width: 200px; }
-.u-maxWidth--250 { max-width: 250px; }
-.u-maxWidth--300 { max-width: 300px; }
-.u-maxWidth--400 { max-width: 400px; }
-.u-maxWidth--500 { max-width: 500px; }
-.u-maxWidth--600 { max-width: 600px; }
-.u-maxWidth--700 { max-width: 700px; }
-.u-maxWidth--800 { max-width: 800px; }
-
-.u-height--80 { height: 80px; }
-.u-height--100 { height: 100px; }
-.u-height--200 { height: 200px; }
-.u-height--full { height: 100%; }
-.u-height--auto { height: auto; }
-
-.u-fontSize--12 {font-size: 12px !important; }
-.u-fontSize--13 {font-size: 13px !important; }
-.u-fontSize--14 {font-size: 14px !important; }
-.u-fontSize--15 {font-size: 15px !important; }
-.u-fontSize--16 {font-size: 16px !important; }
-.u-fontSize--17 {font-size: 17px !important; }
-.u-fontSize--18 {font-size: 18px !important; }
-.u-fontSize--20 {font-size: 20px !important; }
-.u-fontSize--22 {font-size: 22px !important; }
-.u-fontSize--24 {font-size: 24px !important; }
-.u-fontSize--26 {font-size: 26px !important; }
-.u-fontSize--28 {font-size: 28px !important; }
-.u-fontSize--40 {font-size: 40px !important; }
-.u-fontSize--50 {font-size: 50px !important; }
-
-.u-margin--auto { margin: auto !important; }
-.u-margin--0 { margin: 0 !important; }
-.u-margin--5 { margin: 5px !important; }
-.u-margin--10 { margin: 10px !important; }
-.u-margin--20 { margin: 20px !important; }
-
-.u-marginBottom--0 { margin-bottom: 0 !important; }
-.u-marginBottom--3 { margin-bottom: 3px !important; }
-.u-marginBottom--5 { margin-bottom: 5px !important; }
-.u-marginBottom--15 { margin-bottom: 15px !important; }
-.u-marginBottom--10 { margin-bottom: 10px !important; }
-.u-marginBottom--20 { margin-bottom: 20px !important; }
-.u-marginBottom--25 { margin-bottom: 25px !important; }
-.u-marginBottom--30 { margin-bottom: 30px !important; }
-.u-marginBottom--40 { margin-bottom: 40px !important; }
-.u-marginBottom--50 { margin-bottom: 50px !important; }
-.u-marginBottom--60 { margin-bottom: 60px !important; }
-
-.u-marginTop--0 { margin-top: 0 !important; }
-.u-marginTop--3 { margin-top: 3px !important; }
-.u-marginTop--5 { margin-top: 5px !important; }
-.u-marginTop--10 { margin-top: 10px !important; }
-.u-marginTop--15 { margin-top: 15px !important; }
-.u-marginTop--20 { margin-top: 20px !important; }
-.u-marginTop--30 { margin-top: 30px !important; }
-.u-marginTop--50 { margin-top: 50px !important; }
-.u-marginTop--60 { margin-top: 60px !important; }
-
-.u-marginY--5 { margin-top: 5px; margin-bottom: 5px; }
-.u-marginY--10 { margin-top: 10px; margin-bottom: 10px; }
-.u-marginY--15 { margin-top: 15px; margin-bottom: 15px; }
-.u-marginY--20 { margin-top: 20px; margin-bottom: 20px; }
-.u-marginY--25 { margin-top: 25px; margin-bottom: 25px; }
-.u-marginY--30 { margin-top: 30px; margin-bottom: 30px; }
-.u-marginY--35 { margin-top: 35px; margin-bottom: 35px; }
-.u-marginY--40 { margin-top: 40px; margin-bottom: 40px; }
-.u-marginY--50 { margin-top: 50px; margin-bottom: 50px; }
-.u-marginY--60 { margin-top: 60px; margin-bottom: 60px; }
-
-.u-flatHeight {
- margin: 0 !important;
- line-height: 1 !important;
-}
-
-.u-marginX--10 { margin: 0 10px; }
-.u-marginX--20 { margin: 0 20px; }
-.u-marginX--30 { margin: 0 30px; }
-.u-marginX--40 { margin: 0 40px; }
-.u-marginX--50 { margin: 0 50px; }
-
-
-.u-marginLeft--0 { margin-left: 0 !important; }
-.u-marginLeft--5 { margin-left: 5px !important; }
-.u-marginLeft--10 { margin-left: 10px !important; }
-.u-marginLeft--20 { margin-left: 20px !important; }
-
-.u-marginRight--0 { margin-right: 0 !important; }
-.u-marginRight--5 { margin-right: 5px !important; }
-.u-marginRight--10 { margin-right: 10px !important; }
-.u-marginRight--20 { margin-right: 20px !important; }
-
-.padded { padding: 20px; }
-
-.u-paddingTop--0 { padding-top: 0 !important; }
-.u-paddingTop--5 { padding-top: 5px !important; }
-.u-paddingTop--10 { padding-top: 10px !important; }
-.u-paddingTop--15 { padding-top: 15px !important; }
-.u-paddingTop--20 { padding-top: 20px !important; }
-.u-paddingTop--30 { padding-top: 30px !important; }
-.u-paddingTop--40 { padding-top: 40px !important; }
-
-.u-paddingBottom--0 { padding-bottom: 0 !important; }
-.u-paddingBottom--10 { padding-bottom: 10px !important; }
-.u-paddingBottom--15 { padding-bottom: 15px !important; }
-.u-paddingBottom--20 { padding-bottom: 20px !important; }
-.u-paddingBottom--30 { padding-bottom: 30px !important; }
-
-.u-padding--0 { padding: 0 !important; }
-.u-padding--3 { padding: 3px !important; }
-.u-padding--5 { padding: 5px !important; }
-.u-padding--8 { padding: 8px !important; }
-.u-padding--10 { padding: 10px !important; }
-.u-padding--15 { padding: 15px !important; }
-.u-padding--20 { padding: 20px !important;}
-.u-padding--25 { padding: 25px !important; }
-.u-padding--30 { padding: 30px !important; }
-
-
-.u-paddingX--0 {
- padding-left: 0 !important;
- padding-right: 0 !important;
-}
-.u-paddingX--5 { padding-left: 5px !important; padding-right: 5px !important; }
-.u-paddingX--10 { padding: 0 10px !important; }
-.u-paddingX--15 { padding: 0 15px !important; }
-.u-paddingX--20 { padding: 0 20px !important;}
-.u-paddingX--30 { padding: 0 30px !important;}
-.u-paddingX--40 { padding: 0 40px !important;}
-
-.u-paddingY--10 { padding-top: 10px !important; padding-bottom: 10px !important; }
-.u-paddingY--15 { padding: 15px 0 !important; }
-.u-paddingY--20 { padding: 20px 0 !important;}
-.u-paddingY--30 { padding: 30px 0 !important;}
-.u-paddingY--40 { padding: 40px 0 !important;}
-
-
-.u-paddingLeft--0 { padding-left: 0 !important; }
-.u-paddingLeft--5 { padding-left: 10px; }
-.u-paddingLeft--10 { padding-left: 10px; }
-.u-paddingLeft--15 { padding-left: 15px; }
-.u-paddingLeft--20 { padding-left: 20px; }
-.u-paddingLeft--30 { padding-left: 30px; }
-.u-paddingLeft--40 { padding-left: 40px; }
-
-.u-paddingRight--0 { padding-right: 0; }
-.u-paddingRight--10 { padding-right: 10px; }
-.u-paddingRight--15 { padding-right: 15px; }
-.u-paddingRight--20 { padding-right: 20px; }
-.u-paddingRight--30 { padding-right: 30px; }
-
-.u-top--0 { top: 0 !important; }
-
-.u-overflow--auto { overflow: auto;}
-.u-overflow--hidden { overflow: hidden;}
-
-.u-textAlign--left { text-align: left; }
-.u-textAlign--right { text-align: right; }
-
-.u-background--paper { background: $paper; }
-.u-background--fog { background: $fog; }
-.u-background--grey { background: rgba($grey, 0.07); }
-.u-background--grey--dark { background: rgba($grey, 0.09); }
-.u-background--white {background: white }
-
-
-.u-capitalize {text-transform: capitalize; }
-
-.floatl, .u-floatL {float: left !important;}
-.floatr, .u-floatR {float: right !important;}
-.u-float--none { float: none !important; }
-
-.u-clear--none {
- clear: none;
-}
-
-
-.u-color--charcoal { color: $charcoal; }
-.u-color--grey { color: $grey; }
-.u-color--lightGrey { color: $shark; }
-.u-color--white { color: white; }
-.u-color--red {color: $red;}
-.u-color--green {color: $grass;}
-.u-color--seaFoam {color: #669092 !important;}
-
-.u-invisible {
- visibility: hidden;
-}
-
-.u-bg--white {
- background: white;
-}
-.u-bg--cloud {
- background: rgba(white, 0.7);
-}
-.u-bg--fog {
- background: $fog;
-}
-
-.u-bg-blue-light {
- background: rgba(66, 179, 223, 0.1);
-}
-
-.u-dashedBorder {
- border-bottom: 1px dashed $turquoise;
-}
-
-.u-circle {
- @include border-radius(50%);
-}
-
-.u-border--light {
- border: 2px solid $fog;
-}
-
-.u-border--edit {
- border-top: 1px solid #d9d9d9;
- border-right: 1px solid #d9d9d9;
- border-left: 1px solid #d9d9d9;
- border-bottom: 2px solid #d9d9d9;
-}
-
-.u-border--bottom {
- border-bottom: 1px solid rgba(black, 0.05);
-}
-
-.u-underline {
- color: inherit;
- text-decoration: underline;
- &:hover {
- color: inherit;
- @include opacity(0.8);
- }
-}
-
-.no-border {border: 0;}
-.clear {clear: both;}
-.clearl {clear: left;}
-.clearr {clear: right;}
-
-.centered, .u-centered {
- text-align: center !important;
-}
-.u-centered--shallow {
- text-align: center;
- & > * {
- text-align: left;
- }
-}
-
-.u-noSelect {
- -moz-user-select: none;
- -webkit-user-select: none;
- -ms-user-select:none;
- user-select:none;
- -o-user-select:none;
-}
-
-
-.u-lineHeight--1 {
- line-height: 1;
-}
-
-.u-halfOpacity {
- @include opacity(0.5);
-}
-.u-noOpacity {
- @include opacity(0);
-}
-.u-fade {
- @include opacity(0.7);
-}
-.u-bold {font-weight: bold !important; }
-
-.u-small {font-size: 14px; }
-
-.u-ellipses {
- overflow: hidden;
- white-space: nowrap;
- text-overflow: ellipsis;
-}
-
-.u-noTransition {
- @include transition(none);
-}
-
-.u-relative {
- position: relative;
-}
-
-.u-prepend {
- position: relative;
- &:before {
- position: absolute;
- color: $grey;
- }
-}
-
-.u-shadow {
- @include box-shadow(0 1px 5px 0 rgba(0, 0, 0, 0.1));
-}
-
-.u-capitalize {
- text-transform: capitalize;
-}
-.u-bitter {
- font-family: 'Bitter';
-}
-.u-strong {
- font-weight: bold;
-}
-
-.u-vAlign--bottom {
- vertical-align: bottom;
-}
-
-.u-fixed--bottom {
- position: fixed;
- bottom: 0;
-}
-
-@media screen and (max-width: 600px) {
- .u-hideIf--600 {display: none;}
-}
-@media screen and (max-width: 500px) {
- .u-hideIf--500 {display: none;}
-}
-@media screen and (max-width: 400px) {
- .u-hideIf--400 {display: none;}
-}
diff --git a/app/assets/stylesheets/common/utils.scss b/app/assets/stylesheets/common/utils.scss
new file mode 100644
index 000000000..ae4b2df43
--- /dev/null
+++ b/app/assets/stylesheets/common/utils.scss
@@ -0,0 +1,423 @@
+/* License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later */
+@import 'mixins';
+
+.hide {display: none; }
+.show {display: block;}
+.hide.show {display: block;}
+
+.u-inline, .hide.u-inline {display: inline;}
+.u-block, .hide.u-block {display: block !important;}
+.u-inlineBlock, .hide.u-inlineBlock {display: inline-block;}
+.u-displayNone { display: none; }
+
+.u-hide {display: none !important;}
+
+.u-normal {font-weight: normal;}
+
+.u-strike { text-decoration: line-through;}
+.u-flat {
+ margin: 0;
+ line-height: 1;
+}
+
+.u-noClear {
+ clear: none;
+}
+
+.u-smallPs p {
+ font-size: 14px;
+ line-height: 1.2;
+ margin: 0;
+}
+
+.u-medPs p {
+ font-size: 15px;
+ line-height: 1.5;
+ margin: 0;
+}
+
+.u-pointer {
+ cursor: pointer;
+}
+
+.u-verticallyCenter {
+ display: table-cell;
+ vertical-align: middle;
+}
+
+.u-verticallyCenterAbs {
+ position: absolute;
+ top: 50%;
+ transform: translateY(-50%);
+}
+
+.u-centeredBg {
+ background-size: cover;
+ background-position: center;
+}
+
+.u-overflow--hidden {
+ overflow: hidden !important;
+}
+.u-breakWord {
+ word-break: break-word;
+}
+.u-width--initial {width: initial; }
+.u-width--full {width: 100%; }
+.u-width--half {width: 50%; }
+.u-width--third {width: 33.333333%; }
+.u-width--40 {width: 40px; }
+.u-width--50 {width: 50px; }
+.u-width--60 {width: 60px; }
+.u-width--70 {width: 70px; }
+.u-width--80 {width: 80px; }
+.u-width--90 {width: 90px; }
+.u-width--100 {width: 100px; }
+.u-width--140 {width: 140px; }
+.u-width--150 {width: 150px; }
+.u-width--160 {width: 160px; }
+.u-width--200 {width: 200px; }
+.u-width--250 {width: 250px; }
+.u-width--300 {width: 300px; }
+.u-width--400 {width: 400px; }
+
+.u-maxWidth--100 { max-width: 100px; }
+.u-maxWidth--150 { max-width: 150px; }
+.u-maxWidth--200 { max-width: 200px; }
+.u-maxWidth--250 { max-width: 250px; }
+.u-maxWidth--300 { max-width: 300px; }
+.u-maxWidth--400 { max-width: 400px; }
+.u-maxWidth--500 { max-width: 500px; }
+.u-maxWidth--600 { max-width: 600px; }
+.u-maxWidth--700 { max-width: 700px; }
+.u-maxWidth--800 { max-width: 800px; }
+
+.u-height--80 { height: 80px; }
+.u-height--100 { height: 100px; }
+.u-height--200 { height: 200px; }
+.u-height--full { height: 100%; }
+.u-height--auto { height: auto; }
+
+.u-fontSize--12 {font-size: 12px !important; }
+.u-fontSize--13 {font-size: 13px !important; }
+.u-fontSize--14 {font-size: 14px !important; }
+.u-fontSize--15 {font-size: 15px !important; }
+.u-fontSize--16 {font-size: 16px !important; }
+.u-fontSize--17 {font-size: 17px !important; }
+.u-fontSize--18 {font-size: 18px !important; }
+.u-fontSize--20 {font-size: 20px !important; }
+.u-fontSize--22 {font-size: 22px !important; }
+.u-fontSize--24 {font-size: 24px !important; }
+.u-fontSize--26 {font-size: 26px !important; }
+.u-fontSize--28 {font-size: 28px !important; }
+.u-fontSize--40 {font-size: 40px !important; }
+.u-fontSize--50 {font-size: 50px !important; }
+
+.u-margin--auto { margin: auto !important; }
+.u-margin--0 { margin: 0 !important; }
+.u-margin--5 { margin: 5px !important; }
+.u-margin--10 { margin: 10px !important; }
+.u-margin--20 { margin: 20px !important; }
+
+.u-marginBottom--0 { margin-bottom: 0 !important; }
+.u-marginBottom--3 { margin-bottom: 3px !important; }
+.u-marginBottom--5 { margin-bottom: 5px !important; }
+.u-marginBottom--15 { margin-bottom: 15px !important; }
+.u-marginBottom--10 { margin-bottom: 10px !important; }
+.u-marginBottom--20 { margin-bottom: 20px !important; }
+.u-marginBottom--25 { margin-bottom: 25px !important; }
+.u-marginBottom--30 { margin-bottom: 30px !important; }
+.u-marginBottom--40 { margin-bottom: 40px !important; }
+.u-marginBottom--50 { margin-bottom: 50px !important; }
+.u-marginBottom--60 { margin-bottom: 60px !important; }
+
+.u-marginTop--0 { margin-top: 0 !important; }
+.u-marginTop--3 { margin-top: 3px !important; }
+.u-marginTop--5 { margin-top: 5px !important; }
+.u-marginTop--10 { margin-top: 10px !important; }
+.u-marginTop--15 { margin-top: 15px !important; }
+.u-marginTop--20 { margin-top: 20px !important; }
+.u-marginTop--30 { margin-top: 30px !important; }
+.u-marginTop--50 { margin-top: 50px !important; }
+.u-marginTop--60 { margin-top: 60px !important; }
+
+.u-marginY--5 { margin-top: 5px; margin-bottom: 5px; }
+.u-marginY--10 { margin-top: 10px; margin-bottom: 10px; }
+.u-marginY--15 { margin-top: 15px; margin-bottom: 15px; }
+.u-marginY--20 { margin-top: 20px; margin-bottom: 20px; }
+.u-marginY--25 { margin-top: 25px; margin-bottom: 25px; }
+.u-marginY--30 { margin-top: 30px; margin-bottom: 30px; }
+.u-marginY--35 { margin-top: 35px; margin-bottom: 35px; }
+.u-marginY--40 { margin-top: 40px; margin-bottom: 40px; }
+.u-marginY--50 { margin-top: 50px; margin-bottom: 50px; }
+.u-marginY--60 { margin-top: 60px; margin-bottom: 60px; }
+
+.u-flatHeight {
+ margin: 0 !important;
+ line-height: 1 !important;
+}
+
+.u-marginX--10 { margin: 0 10px; }
+.u-marginX--20 { margin: 0 20px; }
+.u-marginX--30 { margin: 0 30px; }
+.u-marginX--40 { margin: 0 40px; }
+.u-marginX--50 { margin: 0 50px; }
+
+
+.u-marginLeft--0 { margin-left: 0 !important; }
+.u-marginLeft--5 { margin-left: 5px !important; }
+.u-marginLeft--10 { margin-left: 10px !important; }
+.u-marginLeft--20 { margin-left: 20px !important; }
+
+.u-marginRight--0 { margin-right: 0 !important; }
+.u-marginRight--5 { margin-right: 5px !important; }
+.u-marginRight--10 { margin-right: 10px !important; }
+.u-marginRight--20 { margin-right: 20px !important; }
+
+.padded { padding: 20px; }
+
+.u-paddingTop--0 { padding-top: 0 !important; }
+.u-paddingTop--5 { padding-top: 5px !important; }
+.u-paddingTop--10 { padding-top: 10px !important; }
+.u-paddingTop--15 { padding-top: 15px !important; }
+.u-paddingTop--20 { padding-top: 20px !important; }
+.u-paddingTop--30 { padding-top: 30px !important; }
+.u-paddingTop--40 { padding-top: 40px !important; }
+
+.u-paddingBottom--0 { padding-bottom: 0 !important; }
+.u-paddingBottom--10 { padding-bottom: 10px !important; }
+.u-paddingBottom--15 { padding-bottom: 15px !important; }
+.u-paddingBottom--20 { padding-bottom: 20px !important; }
+.u-paddingBottom--30 { padding-bottom: 30px !important; }
+
+.u-padding--0 { padding: 0 !important; }
+.u-padding--3 { padding: 3px !important; }
+.u-padding--5 { padding: 5px !important; }
+.u-padding--8 { padding: 8px !important; }
+.u-padding--10 { padding: 10px !important; }
+.u-padding--15 { padding: 15px !important; }
+.u-padding--20 { padding: 20px !important;}
+.u-padding--25 { padding: 25px !important; }
+.u-padding--30 { padding: 30px !important; }
+
+
+.u-paddingX--0 {
+ padding-left: 0 !important;
+ padding-right: 0 !important;
+}
+.u-paddingX--5 { padding-left: 5px !important; padding-right: 5px !important; }
+.u-paddingX--10 { padding: 0 10px !important; }
+.u-paddingX--15 { padding: 0 15px !important; }
+.u-paddingX--20 { padding: 0 20px !important;}
+.u-paddingX--30 { padding: 0 30px !important;}
+.u-paddingX--40 { padding: 0 40px !important;}
+
+.u-paddingY--10 { padding-top: 10px !important; padding-bottom: 10px !important; }
+.u-paddingY--15 { padding: 15px 0 !important; }
+.u-paddingY--20 { padding: 20px 0 !important;}
+.u-paddingY--30 { padding: 30px 0 !important;}
+.u-paddingY--40 { padding: 40px 0 !important;}
+
+
+.u-paddingLeft--0 { padding-left: 0 !important; }
+.u-paddingLeft--5 { padding-left: 10px; }
+.u-paddingLeft--10 { padding-left: 10px; }
+.u-paddingLeft--15 { padding-left: 15px; }
+.u-paddingLeft--20 { padding-left: 20px; }
+.u-paddingLeft--30 { padding-left: 30px; }
+.u-paddingLeft--40 { padding-left: 40px; }
+
+.u-paddingRight--0 { padding-right: 0; }
+.u-paddingRight--10 { padding-right: 10px; }
+.u-paddingRight--15 { padding-right: 15px; }
+.u-paddingRight--20 { padding-right: 20px; }
+.u-paddingRight--30 { padding-right: 30px; }
+
+.u-top--0 { top: 0 !important; }
+
+.u-overflow--auto { overflow: auto;}
+.u-overflow--hidden { overflow: hidden;}
+
+.u-textAlign--left { text-align: left; }
+.u-textAlign--right { text-align: right; }
+
+.u-background--paper { background: $paper; }
+.u-background--fog { background: $fog; }
+.u-background--grey { background: rgba($grey, 0.07); }
+.u-background--grey--dark { background: rgba($grey, 0.09); }
+.u-background--white {background: white }
+
+
+.u-capitalize {text-transform: capitalize; }
+
+.floatl, .u-floatL {float: left !important;}
+.floatr, .u-floatR {float: right !important;}
+.u-float--none { float: none !important; }
+
+.u-clear--none {
+ clear: none;
+}
+
+
+.u-color--charcoal { color: $charcoal; }
+.u-color--grey { color: $grey; }
+.u-color--lightGrey { color: $shark; }
+.u-color--white { color: white; }
+.u-color--red {color: $red;}
+.u-color--green {color: $grass;}
+.u-color--seaFoam {color: #669092 !important;}
+
+.u-invisible {
+ visibility: hidden;
+}
+
+.u-bg--white {
+ background: white;
+}
+.u-bg--cloud {
+ background: rgba(white, 0.7);
+}
+.u-bg--fog {
+ background: $fog;
+}
+
+.u-bg-blue-light {
+ background: rgba(66, 179, 223, 0.1);
+}
+
+.u-dashedBorder {
+ border-bottom: 1px dashed $turquoise;
+}
+
+.u-circle {
+ @include border-radius(50%);
+}
+
+.u-border--light {
+ border: 2px solid $fog;
+}
+
+.u-border--edit {
+ border-top: 1px solid #d9d9d9;
+ border-right: 1px solid #d9d9d9;
+ border-left: 1px solid #d9d9d9;
+ border-bottom: 2px solid #d9d9d9;
+}
+
+.u-border--bottom {
+ border-bottom: 1px solid rgba(black, 0.05);
+}
+
+.u-underline {
+ color: inherit;
+ text-decoration: underline;
+ &:hover {
+ color: inherit;
+ @include opacity(0.8);
+ }
+}
+
+.no-border {border: 0;}
+.clear {clear: both;}
+.clearl {clear: left;}
+.clearr {clear: right;}
+
+.centered, .u-centered {
+ text-align: center !important;
+}
+.u-centered--shallow {
+ text-align: center;
+ & > * {
+ text-align: left;
+ }
+}
+
+.u-noSelect {
+ -moz-user-select: none;
+ -webkit-user-select: none;
+ -ms-user-select:none;
+ user-select:none;
+ -o-user-select:none;
+}
+
+
+.u-lineHeight--1 {
+ line-height: 1;
+}
+
+.u-halfOpacity {
+ @include opacity(0.5);
+}
+.u-noOpacity {
+ @include opacity(0);
+}
+.u-fade {
+ @include opacity(0.7);
+}
+.u-bold {font-weight: bold !important; }
+
+.u-small {font-size: 14px; }
+
+.u-ellipses {
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+}
+
+.u-noTransition {
+ @include transition(none);
+}
+
+.u-relative {
+ position: relative;
+}
+
+.u-prepend {
+ position: relative;
+ &:before {
+ position: absolute;
+ color: $grey;
+ }
+}
+
+.u-shadow {
+ @include box-shadow(0 1px 5px 0 rgba(0, 0, 0, 0.1));
+}
+
+.u-capitalize {
+ text-transform: capitalize;
+}
+.u-bitter {
+ font-family: 'Bitter';
+}
+.u-strong {
+ font-weight: bold;
+}
+
+.u-vAlign--bottom {
+ vertical-align: bottom;
+}
+
+.u-fixed--bottom {
+ position: fixed;
+ bottom: 0;
+}
+
+.u-security-notification {
+ display:flex;
+ text-align: left;
+ .u-security-icon {
+ padding-right:5px;
+ padding-top:1px;
+ }
+}
+
+@media screen and (max-width: 600px) {
+ .u-hideIf--600 {display: none;}
+}
+@media screen and (max-width: 500px) {
+ .u-hideIf--500 {display: none;}
+}
+@media screen and (max-width: 400px) {
+ .u-hideIf--400 {display: none;}
+}
diff --git a/app/assets/stylesheets/common/vendor/froala_editor.css.scss b/app/assets/stylesheets/common/vendor/froala_editor.scss
similarity index 100%
rename from app/assets/stylesheets/common/vendor/froala_editor.css.scss
rename to app/assets/stylesheets/common/vendor/froala_editor.scss
diff --git a/app/assets/stylesheets/common/vendor/quill.bubble.css b/app/assets/stylesheets/common/vendor/quill.bubble.css
deleted file mode 100644
index fa423d73e..000000000
--- a/app/assets/stylesheets/common/vendor/quill.bubble.css
+++ /dev/null
@@ -1,955 +0,0 @@
-/* License: LGPL-3.0-or-later */
-/*!
- * Pasted in to simplify sprockets. Your mileage may vary
- *
- * Quill Editor v1.3.6
- * https://quilljs.com/
- * Copyright (c) 2014, Jason Chen
- * Copyright (c) 2013, salesforce.com
- */
-.ql-container {
- box-sizing: border-box;
- font-family: Helvetica, Arial, sans-serif;
- font-size: 13px;
- height: 100%;
- margin: 0px;
- position: relative;
-}
-.ql-container.ql-disabled .ql-tooltip {
- visibility: hidden;
-}
-.ql-container.ql-disabled .ql-editor ul[data-checked] > li::before {
- pointer-events: none;
-}
-.ql-clipboard {
- left: -100000px;
- height: 1px;
- overflow-y: hidden;
- position: absolute;
- top: 50%;
-}
-.ql-clipboard p {
- margin: 0;
- padding: 0;
-}
-.ql-editor {
- box-sizing: border-box;
- line-height: 1.42;
- height: 100%;
- outline: none;
- overflow-y: auto;
- padding: 12px 15px;
- tab-size: 4;
- -moz-tab-size: 4;
- text-align: left;
- white-space: pre-wrap;
- word-wrap: break-word;
-}
-.ql-editor > * {
- cursor: text;
-}
-.ql-editor p,
-.ql-editor ol,
-.ql-editor ul,
-.ql-editor pre,
-.ql-editor blockquote,
-.ql-editor h1,
-.ql-editor h2,
-.ql-editor h3,
-.ql-editor h4,
-.ql-editor h5,
-.ql-editor h6 {
- margin: 0;
- padding: 0;
- counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;
-}
-.ql-editor ol,
-.ql-editor ul {
- padding-left: 1.5em;
-}
-.ql-editor ol > li,
-.ql-editor ul > li {
- list-style-type: none;
-}
-.ql-editor ul > li::before {
- content: '\2022';
-}
-.ql-editor ul[data-checked=true],
-.ql-editor ul[data-checked=false] {
- pointer-events: none;
-}
-.ql-editor ul[data-checked=true] > li *,
-.ql-editor ul[data-checked=false] > li * {
- pointer-events: all;
-}
-.ql-editor ul[data-checked=true] > li::before,
-.ql-editor ul[data-checked=false] > li::before {
- color: #777;
- cursor: pointer;
- pointer-events: all;
-}
-.ql-editor ul[data-checked=true] > li::before {
- content: '\2611';
-}
-.ql-editor ul[data-checked=false] > li::before {
- content: '\2610';
-}
-.ql-editor li::before {
- display: inline-block;
- white-space: nowrap;
- width: 1.2em;
-}
-.ql-editor li:not(.ql-direction-rtl)::before {
- margin-left: -1.5em;
- margin-right: 0.3em;
- text-align: right;
-}
-.ql-editor li.ql-direction-rtl::before {
- margin-left: 0.3em;
- margin-right: -1.5em;
-}
-.ql-editor ol li:not(.ql-direction-rtl),
-.ql-editor ul li:not(.ql-direction-rtl) {
- padding-left: 1.5em;
-}
-.ql-editor ol li.ql-direction-rtl,
-.ql-editor ul li.ql-direction-rtl {
- padding-right: 1.5em;
-}
-.ql-editor ol li {
- counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;
- counter-increment: list-0;
-}
-.ql-editor ol li:before {
- content: counter(list-0, decimal) '. ';
-}
-.ql-editor ol li.ql-indent-1 {
- counter-increment: list-1;
-}
-.ql-editor ol li.ql-indent-1:before {
- content: counter(list-1, lower-alpha) '. ';
-}
-.ql-editor ol li.ql-indent-1 {
- counter-reset: list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;
-}
-.ql-editor ol li.ql-indent-2 {
- counter-increment: list-2;
-}
-.ql-editor ol li.ql-indent-2:before {
- content: counter(list-2, lower-roman) '. ';
-}
-.ql-editor ol li.ql-indent-2 {
- counter-reset: list-3 list-4 list-5 list-6 list-7 list-8 list-9;
-}
-.ql-editor ol li.ql-indent-3 {
- counter-increment: list-3;
-}
-.ql-editor ol li.ql-indent-3:before {
- content: counter(list-3, decimal) '. ';
-}
-.ql-editor ol li.ql-indent-3 {
- counter-reset: list-4 list-5 list-6 list-7 list-8 list-9;
-}
-.ql-editor ol li.ql-indent-4 {
- counter-increment: list-4;
-}
-.ql-editor ol li.ql-indent-4:before {
- content: counter(list-4, lower-alpha) '. ';
-}
-.ql-editor ol li.ql-indent-4 {
- counter-reset: list-5 list-6 list-7 list-8 list-9;
-}
-.ql-editor ol li.ql-indent-5 {
- counter-increment: list-5;
-}
-.ql-editor ol li.ql-indent-5:before {
- content: counter(list-5, lower-roman) '. ';
-}
-.ql-editor ol li.ql-indent-5 {
- counter-reset: list-6 list-7 list-8 list-9;
-}
-.ql-editor ol li.ql-indent-6 {
- counter-increment: list-6;
-}
-.ql-editor ol li.ql-indent-6:before {
- content: counter(list-6, decimal) '. ';
-}
-.ql-editor ol li.ql-indent-6 {
- counter-reset: list-7 list-8 list-9;
-}
-.ql-editor ol li.ql-indent-7 {
- counter-increment: list-7;
-}
-.ql-editor ol li.ql-indent-7:before {
- content: counter(list-7, lower-alpha) '. ';
-}
-.ql-editor ol li.ql-indent-7 {
- counter-reset: list-8 list-9;
-}
-.ql-editor ol li.ql-indent-8 {
- counter-increment: list-8;
-}
-.ql-editor ol li.ql-indent-8:before {
- content: counter(list-8, lower-roman) '. ';
-}
-.ql-editor ol li.ql-indent-8 {
- counter-reset: list-9;
-}
-.ql-editor ol li.ql-indent-9 {
- counter-increment: list-9;
-}
-.ql-editor ol li.ql-indent-9:before {
- content: counter(list-9, decimal) '. ';
-}
-.ql-editor .ql-indent-1:not(.ql-direction-rtl) {
- padding-left: 3em;
-}
-.ql-editor li.ql-indent-1:not(.ql-direction-rtl) {
- padding-left: 4.5em;
-}
-.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right {
- padding-right: 3em;
-}
-.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right {
- padding-right: 4.5em;
-}
-.ql-editor .ql-indent-2:not(.ql-direction-rtl) {
- padding-left: 6em;
-}
-.ql-editor li.ql-indent-2:not(.ql-direction-rtl) {
- padding-left: 7.5em;
-}
-.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right {
- padding-right: 6em;
-}
-.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right {
- padding-right: 7.5em;
-}
-.ql-editor .ql-indent-3:not(.ql-direction-rtl) {
- padding-left: 9em;
-}
-.ql-editor li.ql-indent-3:not(.ql-direction-rtl) {
- padding-left: 10.5em;
-}
-.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right {
- padding-right: 9em;
-}
-.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right {
- padding-right: 10.5em;
-}
-.ql-editor .ql-indent-4:not(.ql-direction-rtl) {
- padding-left: 12em;
-}
-.ql-editor li.ql-indent-4:not(.ql-direction-rtl) {
- padding-left: 13.5em;
-}
-.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right {
- padding-right: 12em;
-}
-.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right {
- padding-right: 13.5em;
-}
-.ql-editor .ql-indent-5:not(.ql-direction-rtl) {
- padding-left: 15em;
-}
-.ql-editor li.ql-indent-5:not(.ql-direction-rtl) {
- padding-left: 16.5em;
-}
-.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right {
- padding-right: 15em;
-}
-.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right {
- padding-right: 16.5em;
-}
-.ql-editor .ql-indent-6:not(.ql-direction-rtl) {
- padding-left: 18em;
-}
-.ql-editor li.ql-indent-6:not(.ql-direction-rtl) {
- padding-left: 19.5em;
-}
-.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right {
- padding-right: 18em;
-}
-.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right {
- padding-right: 19.5em;
-}
-.ql-editor .ql-indent-7:not(.ql-direction-rtl) {
- padding-left: 21em;
-}
-.ql-editor li.ql-indent-7:not(.ql-direction-rtl) {
- padding-left: 22.5em;
-}
-.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right {
- padding-right: 21em;
-}
-.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right {
- padding-right: 22.5em;
-}
-.ql-editor .ql-indent-8:not(.ql-direction-rtl) {
- padding-left: 24em;
-}
-.ql-editor li.ql-indent-8:not(.ql-direction-rtl) {
- padding-left: 25.5em;
-}
-.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right {
- padding-right: 24em;
-}
-.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right {
- padding-right: 25.5em;
-}
-.ql-editor .ql-indent-9:not(.ql-direction-rtl) {
- padding-left: 27em;
-}
-.ql-editor li.ql-indent-9:not(.ql-direction-rtl) {
- padding-left: 28.5em;
-}
-.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right {
- padding-right: 27em;
-}
-.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right {
- padding-right: 28.5em;
-}
-.ql-editor .ql-video {
- display: block;
- max-width: 100%;
-}
-.ql-editor .ql-video.ql-align-center {
- margin: 0 auto;
-}
-.ql-editor .ql-video.ql-align-right {
- margin: 0 0 0 auto;
-}
-.ql-editor .ql-bg-black {
- background-color: #000;
-}
-.ql-editor .ql-bg-red {
- background-color: #e60000;
-}
-.ql-editor .ql-bg-orange {
- background-color: #f90;
-}
-.ql-editor .ql-bg-yellow {
- background-color: #ff0;
-}
-.ql-editor .ql-bg-green {
- background-color: #008a00;
-}
-.ql-editor .ql-bg-blue {
- background-color: #06c;
-}
-.ql-editor .ql-bg-purple {
- background-color: #93f;
-}
-.ql-editor .ql-color-white {
- color: #fff;
-}
-.ql-editor .ql-color-red {
- color: #e60000;
-}
-.ql-editor .ql-color-orange {
- color: #f90;
-}
-.ql-editor .ql-color-yellow {
- color: #ff0;
-}
-.ql-editor .ql-color-green {
- color: #008a00;
-}
-.ql-editor .ql-color-blue {
- color: #06c;
-}
-.ql-editor .ql-color-purple {
- color: #93f;
-}
-.ql-editor .ql-font-serif {
- font-family: Georgia, Times New Roman, serif;
-}
-.ql-editor .ql-font-monospace {
- font-family: Monaco, Courier New, monospace;
-}
-.ql-editor .ql-size-small {
- font-size: 0.75em;
-}
-.ql-editor .ql-size-large {
- font-size: 1.5em;
-}
-.ql-editor .ql-size-huge {
- font-size: 2.5em;
-}
-.ql-editor .ql-direction-rtl {
- direction: rtl;
- text-align: inherit;
-}
-.ql-editor .ql-align-center {
- text-align: center;
-}
-.ql-editor .ql-align-justify {
- text-align: justify;
-}
-.ql-editor .ql-align-right {
- text-align: right;
-}
-.ql-editor.ql-blank::before {
- color: rgba(0,0,0,0.6);
- content: attr(data-placeholder);
- font-style: italic;
- left: 15px;
- pointer-events: none;
- position: absolute;
- right: 15px;
-}
-.ql-bubble.ql-toolbar:after,
-.ql-bubble .ql-toolbar:after {
- clear: both;
- content: '';
- display: table;
-}
-.ql-bubble.ql-toolbar button,
-.ql-bubble .ql-toolbar button {
- background: none;
- border: none;
- cursor: pointer;
- display: inline-block;
- float: left;
- height: 24px;
- padding: 3px 5px;
- width: 28px;
-}
-.ql-bubble.ql-toolbar button svg,
-.ql-bubble .ql-toolbar button svg {
- float: left;
- height: 100%;
-}
-.ql-bubble.ql-toolbar button:active:hover,
-.ql-bubble .ql-toolbar button:active:hover {
- outline: none;
-}
-.ql-bubble.ql-toolbar input.ql-image[type=file],
-.ql-bubble .ql-toolbar input.ql-image[type=file] {
- display: none;
-}
-.ql-bubble.ql-toolbar button:hover,
-.ql-bubble .ql-toolbar button:hover,
-.ql-bubble.ql-toolbar button:focus,
-.ql-bubble .ql-toolbar button:focus,
-.ql-bubble.ql-toolbar button.ql-active,
-.ql-bubble .ql-toolbar button.ql-active,
-.ql-bubble.ql-toolbar .ql-picker-label:hover,
-.ql-bubble .ql-toolbar .ql-picker-label:hover,
-.ql-bubble.ql-toolbar .ql-picker-label.ql-active,
-.ql-bubble .ql-toolbar .ql-picker-label.ql-active,
-.ql-bubble.ql-toolbar .ql-picker-item:hover,
-.ql-bubble .ql-toolbar .ql-picker-item:hover,
-.ql-bubble.ql-toolbar .ql-picker-item.ql-selected,
-.ql-bubble .ql-toolbar .ql-picker-item.ql-selected {
- color: #fff;
-}
-.ql-bubble.ql-toolbar button:hover .ql-fill,
-.ql-bubble .ql-toolbar button:hover .ql-fill,
-.ql-bubble.ql-toolbar button:focus .ql-fill,
-.ql-bubble .ql-toolbar button:focus .ql-fill,
-.ql-bubble.ql-toolbar button.ql-active .ql-fill,
-.ql-bubble .ql-toolbar button.ql-active .ql-fill,
-.ql-bubble.ql-toolbar .ql-picker-label:hover .ql-fill,
-.ql-bubble .ql-toolbar .ql-picker-label:hover .ql-fill,
-.ql-bubble.ql-toolbar .ql-picker-label.ql-active .ql-fill,
-.ql-bubble .ql-toolbar .ql-picker-label.ql-active .ql-fill,
-.ql-bubble.ql-toolbar .ql-picker-item:hover .ql-fill,
-.ql-bubble .ql-toolbar .ql-picker-item:hover .ql-fill,
-.ql-bubble.ql-toolbar .ql-picker-item.ql-selected .ql-fill,
-.ql-bubble .ql-toolbar .ql-picker-item.ql-selected .ql-fill,
-.ql-bubble.ql-toolbar button:hover .ql-stroke.ql-fill,
-.ql-bubble .ql-toolbar button:hover .ql-stroke.ql-fill,
-.ql-bubble.ql-toolbar button:focus .ql-stroke.ql-fill,
-.ql-bubble .ql-toolbar button:focus .ql-stroke.ql-fill,
-.ql-bubble.ql-toolbar button.ql-active .ql-stroke.ql-fill,
-.ql-bubble .ql-toolbar button.ql-active .ql-stroke.ql-fill,
-.ql-bubble.ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,
-.ql-bubble .ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,
-.ql-bubble.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,
-.ql-bubble .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,
-.ql-bubble.ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,
-.ql-bubble .ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,
-.ql-bubble.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill,
-.ql-bubble .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill {
- fill: #fff;
-}
-.ql-bubble.ql-toolbar button:hover .ql-stroke,
-.ql-bubble .ql-toolbar button:hover .ql-stroke,
-.ql-bubble.ql-toolbar button:focus .ql-stroke,
-.ql-bubble .ql-toolbar button:focus .ql-stroke,
-.ql-bubble.ql-toolbar button.ql-active .ql-stroke,
-.ql-bubble .ql-toolbar button.ql-active .ql-stroke,
-.ql-bubble.ql-toolbar .ql-picker-label:hover .ql-stroke,
-.ql-bubble .ql-toolbar .ql-picker-label:hover .ql-stroke,
-.ql-bubble.ql-toolbar .ql-picker-label.ql-active .ql-stroke,
-.ql-bubble .ql-toolbar .ql-picker-label.ql-active .ql-stroke,
-.ql-bubble.ql-toolbar .ql-picker-item:hover .ql-stroke,
-.ql-bubble .ql-toolbar .ql-picker-item:hover .ql-stroke,
-.ql-bubble.ql-toolbar .ql-picker-item.ql-selected .ql-stroke,
-.ql-bubble .ql-toolbar .ql-picker-item.ql-selected .ql-stroke,
-.ql-bubble.ql-toolbar button:hover .ql-stroke-miter,
-.ql-bubble .ql-toolbar button:hover .ql-stroke-miter,
-.ql-bubble.ql-toolbar button:focus .ql-stroke-miter,
-.ql-bubble .ql-toolbar button:focus .ql-stroke-miter,
-.ql-bubble.ql-toolbar button.ql-active .ql-stroke-miter,
-.ql-bubble .ql-toolbar button.ql-active .ql-stroke-miter,
-.ql-bubble.ql-toolbar .ql-picker-label:hover .ql-stroke-miter,
-.ql-bubble .ql-toolbar .ql-picker-label:hover .ql-stroke-miter,
-.ql-bubble.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,
-.ql-bubble .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,
-.ql-bubble.ql-toolbar .ql-picker-item:hover .ql-stroke-miter,
-.ql-bubble .ql-toolbar .ql-picker-item:hover .ql-stroke-miter,
-.ql-bubble.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,
-.ql-bubble .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter {
- stroke: #fff;
-}
-@media (pointer: coarse) {
- .ql-bubble.ql-toolbar button:hover:not(.ql-active),
- .ql-bubble .ql-toolbar button:hover:not(.ql-active) {
- color: #ccc;
- }
- .ql-bubble.ql-toolbar button:hover:not(.ql-active) .ql-fill,
- .ql-bubble .ql-toolbar button:hover:not(.ql-active) .ql-fill,
- .ql-bubble.ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill,
- .ql-bubble .ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill {
- fill: #ccc;
- }
- .ql-bubble.ql-toolbar button:hover:not(.ql-active) .ql-stroke,
- .ql-bubble .ql-toolbar button:hover:not(.ql-active) .ql-stroke,
- .ql-bubble.ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter,
- .ql-bubble .ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter {
- stroke: #ccc;
- }
-}
-.ql-bubble {
- box-sizing: border-box;
-}
-.ql-bubble * {
- box-sizing: border-box;
-}
-.ql-bubble .ql-hidden {
- display: none;
-}
-.ql-bubble .ql-out-bottom,
-.ql-bubble .ql-out-top {
- visibility: hidden;
-}
-.ql-bubble .ql-tooltip {
- position: absolute;
- transform: translateY(10px);
-}
-.ql-bubble .ql-tooltip a {
- cursor: pointer;
- text-decoration: none;
-}
-.ql-bubble .ql-tooltip.ql-flip {
- transform: translateY(-10px);
-}
-.ql-bubble .ql-formats {
- display: inline-block;
- vertical-align: middle;
-}
-.ql-bubble .ql-formats:after {
- clear: both;
- content: '';
- display: table;
-}
-.ql-bubble .ql-stroke {
- fill: none;
- stroke: #ccc;
- stroke-linecap: round;
- stroke-linejoin: round;
- stroke-width: 2;
-}
-.ql-bubble .ql-stroke-miter {
- fill: none;
- stroke: #ccc;
- stroke-miterlimit: 10;
- stroke-width: 2;
-}
-.ql-bubble .ql-fill,
-.ql-bubble .ql-stroke.ql-fill {
- fill: #ccc;
-}
-.ql-bubble .ql-empty {
- fill: none;
-}
-.ql-bubble .ql-even {
- fill-rule: evenodd;
-}
-.ql-bubble .ql-thin,
-.ql-bubble .ql-stroke.ql-thin {
- stroke-width: 1;
-}
-.ql-bubble .ql-transparent {
- opacity: 0.4;
-}
-.ql-bubble .ql-direction svg:last-child {
- display: none;
-}
-.ql-bubble .ql-direction.ql-active svg:last-child {
- display: inline;
-}
-.ql-bubble .ql-direction.ql-active svg:first-child {
- display: none;
-}
-.ql-bubble .ql-editor h1 {
- font-size: 2em;
-}
-.ql-bubble .ql-editor h2 {
- font-size: 1.5em;
-}
-.ql-bubble .ql-editor h3 {
- font-size: 1.17em;
-}
-.ql-bubble .ql-editor h4 {
- font-size: 1em;
-}
-.ql-bubble .ql-editor h5 {
- font-size: 0.83em;
-}
-.ql-bubble .ql-editor h6 {
- font-size: 0.67em;
-}
-.ql-bubble .ql-editor a {
- text-decoration: underline;
-}
-.ql-bubble .ql-editor blockquote {
- border-left: 4px solid #ccc;
- margin-bottom: 5px;
- margin-top: 5px;
- padding-left: 16px;
-}
-.ql-bubble .ql-editor code,
-.ql-bubble .ql-editor pre {
- background-color: #f0f0f0;
- border-radius: 3px;
-}
-.ql-bubble .ql-editor pre {
- white-space: pre-wrap;
- margin-bottom: 5px;
- margin-top: 5px;
- padding: 5px 10px;
-}
-.ql-bubble .ql-editor code {
- font-size: 85%;
- padding: 2px 4px;
-}
-.ql-bubble .ql-editor pre.ql-syntax {
- background-color: #23241f;
- color: #f8f8f2;
- overflow: visible;
-}
-.ql-bubble .ql-editor img {
- max-width: 100%;
-}
-.ql-bubble .ql-picker {
- color: #ccc;
- display: inline-block;
- float: left;
- font-size: 14px;
- font-weight: 500;
- height: 24px;
- position: relative;
- vertical-align: middle;
-}
-.ql-bubble .ql-picker-label {
- cursor: pointer;
- display: inline-block;
- height: 100%;
- padding-left: 8px;
- padding-right: 2px;
- position: relative;
- width: 100%;
-}
-.ql-bubble .ql-picker-label::before {
- display: inline-block;
- line-height: 22px;
-}
-.ql-bubble .ql-picker-options {
- background-color: #444;
- display: none;
- min-width: 100%;
- padding: 4px 8px;
- position: absolute;
- white-space: nowrap;
-}
-.ql-bubble .ql-picker-options .ql-picker-item {
- cursor: pointer;
- display: block;
- padding-bottom: 5px;
- padding-top: 5px;
-}
-.ql-bubble .ql-picker.ql-expanded .ql-picker-label {
- color: #777;
- z-index: 2;
-}
-.ql-bubble .ql-picker.ql-expanded .ql-picker-label .ql-fill {
- fill: #777;
-}
-.ql-bubble .ql-picker.ql-expanded .ql-picker-label .ql-stroke {
- stroke: #777;
-}
-.ql-bubble .ql-picker.ql-expanded .ql-picker-options {
- display: block;
- margin-top: -1px;
- top: 100%;
- z-index: 1;
-}
-.ql-bubble .ql-color-picker,
-.ql-bubble .ql-icon-picker {
- width: 28px;
-}
-.ql-bubble .ql-color-picker .ql-picker-label,
-.ql-bubble .ql-icon-picker .ql-picker-label {
- padding: 2px 4px;
-}
-.ql-bubble .ql-color-picker .ql-picker-label svg,
-.ql-bubble .ql-icon-picker .ql-picker-label svg {
- right: 4px;
-}
-.ql-bubble .ql-icon-picker .ql-picker-options {
- padding: 4px 0px;
-}
-.ql-bubble .ql-icon-picker .ql-picker-item {
- height: 24px;
- width: 24px;
- padding: 2px 4px;
-}
-.ql-bubble .ql-color-picker .ql-picker-options {
- padding: 3px 5px;
- width: 152px;
-}
-.ql-bubble .ql-color-picker .ql-picker-item {
- border: 1px solid transparent;
- float: left;
- height: 16px;
- margin: 2px;
- padding: 0px;
- width: 16px;
-}
-.ql-bubble .ql-picker:not(.ql-color-picker):not(.ql-icon-picker) svg {
- position: absolute;
- margin-top: -9px;
- right: 0;
- top: 50%;
- width: 18px;
-}
-.ql-bubble .ql-picker.ql-header .ql-picker-label[data-label]:not([data-label=''])::before,
-.ql-bubble .ql-picker.ql-font .ql-picker-label[data-label]:not([data-label=''])::before,
-.ql-bubble .ql-picker.ql-size .ql-picker-label[data-label]:not([data-label=''])::before,
-.ql-bubble .ql-picker.ql-header .ql-picker-item[data-label]:not([data-label=''])::before,
-.ql-bubble .ql-picker.ql-font .ql-picker-item[data-label]:not([data-label=''])::before,
-.ql-bubble .ql-picker.ql-size .ql-picker-item[data-label]:not([data-label=''])::before {
- content: attr(data-label);
-}
-.ql-bubble .ql-picker.ql-header {
- width: 98px;
-}
-.ql-bubble .ql-picker.ql-header .ql-picker-label::before,
-.ql-bubble .ql-picker.ql-header .ql-picker-item::before {
- content: 'Normal';
-}
-.ql-bubble .ql-picker.ql-header .ql-picker-label[data-value="1"]::before,
-.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="1"]::before {
- content: 'Heading 1';
-}
-.ql-bubble .ql-picker.ql-header .ql-picker-label[data-value="2"]::before,
-.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="2"]::before {
- content: 'Heading 2';
-}
-.ql-bubble .ql-picker.ql-header .ql-picker-label[data-value="3"]::before,
-.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="3"]::before {
- content: 'Heading 3';
-}
-.ql-bubble .ql-picker.ql-header .ql-picker-label[data-value="4"]::before,
-.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="4"]::before {
- content: 'Heading 4';
-}
-.ql-bubble .ql-picker.ql-header .ql-picker-label[data-value="5"]::before,
-.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="5"]::before {
- content: 'Heading 5';
-}
-.ql-bubble .ql-picker.ql-header .ql-picker-label[data-value="6"]::before,
-.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="6"]::before {
- content: 'Heading 6';
-}
-.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="1"]::before {
- font-size: 2em;
-}
-.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="2"]::before {
- font-size: 1.5em;
-}
-.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="3"]::before {
- font-size: 1.17em;
-}
-.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="4"]::before {
- font-size: 1em;
-}
-.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="5"]::before {
- font-size: 0.83em;
-}
-.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="6"]::before {
- font-size: 0.67em;
-}
-.ql-bubble .ql-picker.ql-font {
- width: 108px;
-}
-.ql-bubble .ql-picker.ql-font .ql-picker-label::before,
-.ql-bubble .ql-picker.ql-font .ql-picker-item::before {
- content: 'Sans Serif';
-}
-.ql-bubble .ql-picker.ql-font .ql-picker-label[data-value=serif]::before,
-.ql-bubble .ql-picker.ql-font .ql-picker-item[data-value=serif]::before {
- content: 'Serif';
-}
-.ql-bubble .ql-picker.ql-font .ql-picker-label[data-value=monospace]::before,
-.ql-bubble .ql-picker.ql-font .ql-picker-item[data-value=monospace]::before {
- content: 'Monospace';
-}
-.ql-bubble .ql-picker.ql-font .ql-picker-item[data-value=serif]::before {
- font-family: Georgia, Times New Roman, serif;
-}
-.ql-bubble .ql-picker.ql-font .ql-picker-item[data-value=monospace]::before {
- font-family: Monaco, Courier New, monospace;
-}
-.ql-bubble .ql-picker.ql-size {
- width: 98px;
-}
-.ql-bubble .ql-picker.ql-size .ql-picker-label::before,
-.ql-bubble .ql-picker.ql-size .ql-picker-item::before {
- content: 'Normal';
-}
-.ql-bubble .ql-picker.ql-size .ql-picker-label[data-value=small]::before,
-.ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=small]::before {
- content: 'Small';
-}
-.ql-bubble .ql-picker.ql-size .ql-picker-label[data-value=large]::before,
-.ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=large]::before {
- content: 'Large';
-}
-.ql-bubble .ql-picker.ql-size .ql-picker-label[data-value=huge]::before,
-.ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=huge]::before {
- content: 'Huge';
-}
-.ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=small]::before {
- font-size: 10px;
-}
-.ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=large]::before {
- font-size: 18px;
-}
-.ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=huge]::before {
- font-size: 32px;
-}
-.ql-bubble .ql-color-picker.ql-background .ql-picker-item {
- background-color: #fff;
-}
-.ql-bubble .ql-color-picker.ql-color .ql-picker-item {
- background-color: #000;
-}
-.ql-bubble .ql-toolbar .ql-formats {
- margin: 8px 12px 8px 0px;
-}
-.ql-bubble .ql-toolbar .ql-formats:first-child {
- margin-left: 12px;
-}
-.ql-bubble .ql-color-picker svg {
- margin: 1px;
-}
-.ql-bubble .ql-color-picker .ql-picker-item.ql-selected,
-.ql-bubble .ql-color-picker .ql-picker-item:hover {
- border-color: #fff;
-}
-.ql-bubble .ql-tooltip {
- background-color: #444;
- border-radius: 25px;
- color: #fff;
-}
-.ql-bubble .ql-tooltip-arrow {
- border-left: 6px solid transparent;
- border-right: 6px solid transparent;
- content: " ";
- display: block;
- left: 50%;
- margin-left: -6px;
- position: absolute;
-}
-.ql-bubble .ql-tooltip:not(.ql-flip) .ql-tooltip-arrow {
- border-bottom: 6px solid #444;
- top: -6px;
-}
-.ql-bubble .ql-tooltip.ql-flip .ql-tooltip-arrow {
- border-top: 6px solid #444;
- bottom: -6px;
-}
-.ql-bubble .ql-tooltip.ql-editing .ql-tooltip-editor {
- display: block;
-}
-.ql-bubble .ql-tooltip.ql-editing .ql-formats {
- visibility: hidden;
-}
-.ql-bubble .ql-tooltip-editor {
- display: none;
-}
-.ql-bubble .ql-tooltip-editor input[type=text] {
- background: transparent;
- border: none;
- color: #fff;
- font-size: 13px;
- height: 100%;
- outline: none;
- padding: 10px 20px;
- position: absolute;
- width: 100%;
-}
-.ql-bubble .ql-tooltip-editor a {
- top: 10px;
- position: absolute;
- right: 20px;
-}
-.ql-bubble .ql-tooltip-editor a:before {
- color: #ccc;
- content: "\D7";
- font-size: 16px;
- font-weight: bold;
-}
-.ql-container.ql-bubble:not(.ql-disabled) a {
- position: relative;
- white-space: nowrap;
-}
-.ql-container.ql-bubble:not(.ql-disabled) a::before {
- background-color: #444;
- border-radius: 15px;
- top: -5px;
- font-size: 12px;
- color: #fff;
- content: attr(href);
- font-weight: normal;
- overflow: hidden;
- padding: 5px 15px;
- text-decoration: none;
- z-index: 1;
-}
-.ql-container.ql-bubble:not(.ql-disabled) a::after {
- border-top: 6px solid #444;
- border-left: 6px solid transparent;
- border-right: 6px solid transparent;
- top: 0;
- content: " ";
- height: 0;
- width: 0;
-}
-.ql-container.ql-bubble:not(.ql-disabled) a::before,
-.ql-container.ql-bubble:not(.ql-disabled) a::after {
- left: 0;
- margin-left: 50%;
- position: absolute;
- transform: translate(-50%, -100%);
- transition: visibility 0s ease 200ms;
- visibility: hidden;
-}
-.ql-container.ql-bubble:not(.ql-disabled) a:hover::before,
-.ql-container.ql-bubble:not(.ql-disabled) a:hover::after {
- visibility: visible;
-}
diff --git a/app/assets/stylesheets/common/z_indices.css.scss b/app/assets/stylesheets/common/z_indices.scss
similarity index 100%
rename from app/assets/stylesheets/common/z_indices.css.scss
rename to app/assets/stylesheets/common/z_indices.scss
diff --git a/app/assets/stylesheets/components/activity_feed.css.scss b/app/assets/stylesheets/components/activity_feed.scss
similarity index 100%
rename from app/assets/stylesheets/components/activity_feed.css.scss
rename to app/assets/stylesheets/components/activity_feed.scss
diff --git a/app/assets/stylesheets/components/admin_sidebar.css.scss b/app/assets/stylesheets/components/admin_sidebar.scss
similarity index 100%
rename from app/assets/stylesheets/components/admin_sidebar.css.scss
rename to app/assets/stylesheets/components/admin_sidebar.scss
diff --git a/app/assets/stylesheets/components/admin_top_nav.css.scss b/app/assets/stylesheets/components/admin_top_nav.scss
similarity index 100%
rename from app/assets/stylesheets/components/admin_top_nav.css.scss
rename to app/assets/stylesheets/components/admin_top_nav.scss
diff --git a/app/assets/stylesheets/components/animations.css.scss b/app/assets/stylesheets/components/animations.css.scss
deleted file mode 100644
index b66df2361..000000000
--- a/app/assets/stylesheets/components/animations.css.scss
+++ /dev/null
@@ -1,44 +0,0 @@
-/* License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later */
-@mixin animation($animate...) {
- $max: length($animate);
- $animations: '';
-
- @for $i from 1 through $max {
- $animations: #{$animations + nth($animate, $i)};
-
- @if $i < $max {
- $animations: #{$animations + ", "};
- }
- }
- -webkit-animation: $animations;
- -moz-animation: $animations;
- -o-animation: $animations;
- animation: $animations;
-}
-
-@mixin keyframes($animationName) {
- @-webkit-keyframes #{$animationName} {
- @content;
- }
- @-moz-keyframes #{$animationName} {
- @content;
- }
- @-o-keyframes #{$animationName} {
- @content;
- }
- @keyframes #{$animationName} {
- @content;
- }
-}
-
-// Using the mixins looks like this:
-// @include keyframes(move-the-object) {
-// 0% { left: 100px; }
-// 100% { left: 200px; }
-// }
-
-// .object-to-animate {
-// @include animation('move-the-object .5s 1', 'move-the-object-again .5s 1 .5s');
-// }
-
-// credit: http://joshbroton.com/quick-fix-sass-mixins-for-css-keyframe-animations/
diff --git a/app/assets/stylesheets/components/animations.scss b/app/assets/stylesheets/components/animations.scss
new file mode 100644
index 000000000..000711d8c
--- /dev/null
+++ b/app/assets/stylesheets/components/animations.scss
@@ -0,0 +1,35 @@
+/* License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later */
+@mixin animation($animate...) {
+ $max: length($animate);
+ $animations: '';
+
+ @for $i from 1 through $max {
+ $animations: #{$animations + nth($animate, $i)};
+
+ @if $i < $max {
+ $animations: #{$animations + ", "};
+ }
+ }
+ -webkit-animation: $animations;
+ -moz-animation: $animations;
+ -o-animation: $animations;
+ animation: $animations;
+}
+
+@mixin keyframes($animationName) {
+ @keyframes #{$animationName} {
+ @content;
+ }
+}
+
+// Using the mixins looks like this:
+// @include keyframes(move-the-object) {
+// 0% { left: 100px; }
+// 100% { left: 200px; }
+// }
+
+// .object-to-animate {
+// @include animation('move-the-object .5s 1', 'move-the-object-again .5s 1 .5s');
+// }
+
+// credit: http://joshbroton.com/quick-fix-sass-mixins-for-css-keyframe-animations/
diff --git a/app/assets/stylesheets/components/announcement_bar.css.scss b/app/assets/stylesheets/components/announcement_bar.scss
similarity index 100%
rename from app/assets/stylesheets/components/announcement_bar.css.scss
rename to app/assets/stylesheets/components/announcement_bar.scss
diff --git a/app/assets/stylesheets/components/app_loading_bar.css.scss b/app/assets/stylesheets/components/app_loading_bar.css.scss
deleted file mode 100644
index 8c08cfddc..000000000
--- a/app/assets/stylesheets/components/app_loading_bar.css.scss
+++ /dev/null
@@ -1,61 +0,0 @@
-/* License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later */
-@import 'mixins';
-
-@-webkit-keyframes progress-bar-stripes{
- from{background-position:40px 0}
- to{background-position:0 0}
-}
-
-@-moz-keyframes progress-bar-stripes{
- from{background-position:40px 0}
- to{background-position:0 0}
-}
-@-ms-keyframes progress-bar-stripes{
- from{background-position:40px 0}
- to{background-position:0 0}
-}
-@-o-keyframes progress-bar-stripes{
- from{background-position:0 0}
- to{background-position:40px 0}
-}
-@keyframes progress-bar-stripes{
- from{background-position:40px 0}
- to{background-position:0 0}
-}
-
-.progressBar--outer {
- position: fixed;
- bottom: 0;
- left: 0;
- width: 100%;
- height: 15px;
- margin: 0;
- padding: 0;
- overflow: hidden;
- background-color: #f7f7f7;
-}
-
-.progressBar--inner {
- width: 100%;
- height: 100%;
- -webkit-animation: progress-bar-stripes 2s linear infinite;
- -moz-animation: progress-bar-stripes 2s linear infinite;
- -ms-animation: progress-bar-stripes 2s linear infinite;
- -o-animation: progress-bar-stripes 2s linear infinite;
- animation: progress-bar-stripes 2s linear infinite;
- background-color: $bluegrass;
- background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(white,0.3)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(white,0.3)), color-stop(0.75, rgba(white,0.3)), color-stop(0.75, transparent), to(transparent));
- background-image: -webkit-linear-gradient(45deg, rgba(white,0.3) 25%, transparent 25%, transparent 50%, rgba(white,0.3) 50%, rgba(white,0.3) 75%, transparent 75%, transparent);
- background-image: -moz-linear-gradient(45deg, rgba(white,0.3) 25%, transparent 25%, transparent 50%, rgba(white,0.3) 50%, rgba(white,0.3) 75%, transparent 75%, transparent);
- background-image: -o-linear-gradient(45deg, rgba(white,0.3) 25%, transparent 25%, transparent 50%, rgba(white,0.3) 50%, rgba(white,0.3) 75%, transparent 75%, transparent);
- background-image: linear-gradient(45deg, rgba(white,0.3) 25%, transparent 25%, transparent 50%, rgba(white,0.3) 50%, rgba(white,0.3) 75%, transparent 75%, transparent);
- -webkit-background-size: 40px 40px;
- -moz-background-size: 40px 40px;
- -o-background-size: 40px 40px;
- background-size: 40px 40px;
- background-repeat: repeat-x;
- -webkit-transition: width .6s ease;
- -moz-transition: width .6s ease;
- -o-transition: width .6s ease;
- transition: width .6s ease;
-}
diff --git a/app/assets/stylesheets/components/app_loading_bar.scss b/app/assets/stylesheets/components/app_loading_bar.scss
new file mode 100644
index 000000000..2f8c3f0d7
--- /dev/null
+++ b/app/assets/stylesheets/components/app_loading_bar.scss
@@ -0,0 +1,44 @@
+/* License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later */
+@import 'mixins';
+
+@keyframes progress-bar-stripes{
+ from{background-position:40px 0}
+ to{background-position:0 0}
+}
+
+.progressBar--outer {
+ position: fixed;
+ bottom: 0;
+ left: 0;
+ width: 100%;
+ height: 15px;
+ margin: 0;
+ padding: 0;
+ overflow: hidden;
+ background-color: #f7f7f7;
+}
+
+.progressBar--inner {
+ width: 100%;
+ height: 100%;
+ -webkit-animation: progress-bar-stripes 2s linear infinite;
+ -moz-animation: progress-bar-stripes 2s linear infinite;
+ -ms-animation: progress-bar-stripes 2s linear infinite;
+ -o-animation: progress-bar-stripes 2s linear infinite;
+ animation: progress-bar-stripes 2s linear infinite;
+ background-color: $bluegrass;
+ background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(white,0.3)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(white,0.3)), color-stop(0.75, rgba(white,0.3)), color-stop(0.75, transparent), to(transparent));
+ background-image: -webkit-linear-gradient(45deg, rgba(white,0.3) 25%, transparent 25%, transparent 50%, rgba(white,0.3) 50%, rgba(white,0.3) 75%, transparent 75%, transparent);
+ background-image: -moz-linear-gradient(45deg, rgba(white,0.3) 25%, transparent 25%, transparent 50%, rgba(white,0.3) 50%, rgba(white,0.3) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(white,0.3) 25%, transparent 25%, transparent 50%, rgba(white,0.3) 50%, rgba(white,0.3) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(white,0.3) 25%, transparent 25%, transparent 50%, rgba(white,0.3) 50%, rgba(white,0.3) 75%, transparent 75%, transparent);
+ -webkit-background-size: 40px 40px;
+ -moz-background-size: 40px 40px;
+ -o-background-size: 40px 40px;
+ background-size: 40px 40px;
+ background-repeat: repeat-x;
+ -webkit-transition: width .6s ease;
+ -moz-transition: width .6s ease;
+ -o-transition: width .6s ease;
+ transition: width .6s ease;
+}
diff --git a/app/assets/stylesheets/components/arrows.css.scss b/app/assets/stylesheets/components/arrows.scss
similarity index 100%
rename from app/assets/stylesheets/components/arrows.css.scss
rename to app/assets/stylesheets/components/arrows.scss
diff --git a/app/assets/stylesheets/components/better_browser.css.scss b/app/assets/stylesheets/components/better_browser.scss
similarity index 100%
rename from app/assets/stylesheets/components/better_browser.css.scss
rename to app/assets/stylesheets/components/better_browser.scss
diff --git a/app/assets/stylesheets/components/browser_border.css.scss b/app/assets/stylesheets/components/browser_border.scss
similarity index 100%
rename from app/assets/stylesheets/components/browser_border.css.scss
rename to app/assets/stylesheets/components/browser_border.scss
diff --git a/app/assets/stylesheets/components/browsers_illustration.css.scss b/app/assets/stylesheets/components/browsers_illustration.scss
similarity index 100%
rename from app/assets/stylesheets/components/browsers_illustration.css.scss
rename to app/assets/stylesheets/components/browsers_illustration.scss
diff --git a/app/assets/stylesheets/components/bulk_actions.css.scss b/app/assets/stylesheets/components/bulk_actions.scss
similarity index 100%
rename from app/assets/stylesheets/components/bulk_actions.css.scss
rename to app/assets/stylesheets/components/bulk_actions.scss
diff --git a/app/assets/stylesheets/components/buttons.css.scss b/app/assets/stylesheets/components/buttons.scss
similarity index 100%
rename from app/assets/stylesheets/components/buttons.css.scss
rename to app/assets/stylesheets/components/buttons.scss
diff --git a/app/assets/stylesheets/components/campaign_preview_small.css.scss b/app/assets/stylesheets/components/campaign_preview_small.scss
similarity index 100%
rename from app/assets/stylesheets/components/campaign_preview_small.css.scss
rename to app/assets/stylesheets/components/campaign_preview_small.scss
diff --git a/app/assets/stylesheets/components/cards.css.scss b/app/assets/stylesheets/components/cards.css.scss
deleted file mode 100755
index 263db6b47..000000000
--- a/app/assets/stylesheets/components/cards.css.scss
+++ /dev/null
@@ -1,35 +0,0 @@
-/* License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later */
-@import 'mixins';
-
-.cardForm {
- max-width: 380px;
- margin: 0 auto;
-}
-.cardForm input,
-.cardForm select {
- margin: 0;
-}
-.cardForm .progress {
- width: 100%;
-}
-.cardForm .parsley-error-list {
- display: none;
-}
-.cardForm .security-code-image,
-.cardForm .card-logos {
- position: absolute;
- top: 5px;
- right: 5px;
-}
-.cardForm .card-logos {
- width: 32px;
- height: 21px;
- background-image: url('/assets/graphics/credit-card-logos.png');
- @include opacity(0);
-
- &.americanexpress, &.visa, &.discovercard, &.mastercard { @include opacity(1); }
- &.americanexpress { background-position: 0; }
- &.visa { background-position: 32px; }
- &.mastercard { background-position: 64px; }
- &.discovercard { background-position: 96px; }
-}
diff --git a/app/assets/stylesheets/components/cards.scss.erb b/app/assets/stylesheets/components/cards.scss.erb
new file mode 100755
index 000000000..a3828397e
--- /dev/null
+++ b/app/assets/stylesheets/components/cards.scss.erb
@@ -0,0 +1,35 @@
+/* License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later */
+@import 'mixins';
+
+.cardForm {
+ max-width: 380px;
+ margin: 0 auto;
+}
+.cardForm input,
+.cardForm select {
+ margin: 0;
+}
+.cardForm .progress {
+ width: 100%;
+}
+.cardForm .parsley-error-list {
+ display: none;
+}
+.cardForm .security-code-image,
+.cardForm .card-logos {
+ position: absolute;
+ top: 5px;
+ right: 5px;
+}
+.cardForm .card-logos {
+ width: 32px;
+ height: 21px;
+ background-image: url('<%= asset_path '/graphics/credit-card-logos.png'%>');
+ @include opacity(0);
+
+ &.americanexpress, &.visa, &.discovercard, &.mastercard { @include opacity(1); }
+ &.americanexpress { background-position: 0; }
+ &.visa { background-position: 32px; }
+ &.mastercard { background-position: 64px; }
+ &.discovercard { background-position: 96px; }
+}
diff --git a/app/assets/stylesheets/components/carousel.css.scss b/app/assets/stylesheets/components/carousel.scss
similarity index 100%
rename from app/assets/stylesheets/components/carousel.css.scss
rename to app/assets/stylesheets/components/carousel.scss
diff --git a/app/assets/stylesheets/components/cc_pattern.css.scss b/app/assets/stylesheets/components/cc_pattern.css.scss
deleted file mode 100644
index 9ca29dda1..000000000
--- a/app/assets/stylesheets/components/cc_pattern.css.scss
+++ /dev/null
@@ -1,28 +0,0 @@
-/* License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later */
-@import 'mixins';
-
-.ccPattern {
- position: absolute;
- top: 0;
- left: 0;
- width: 100%;
- height: 100%;
-}
-.ccPattern:after,
-.ccPattern:before {
- position: absolute;
- content: '';
- width: 100%;
- left: 0;
- bottom: 0;
-}
-.ccPattern:after {
- height: 100%;
- background-image: url('/assets/patterns/features-nodes.svg');
- background-size: contain;
- @include opacity(0.3);
- }
-.ccPattern:before {
- height: 60%;
- @include gradient(top, $trans, white);
-}
diff --git a/app/assets/stylesheets/components/cc_pattern.scss.erb b/app/assets/stylesheets/components/cc_pattern.scss.erb
new file mode 100644
index 000000000..16b4ee913
--- /dev/null
+++ b/app/assets/stylesheets/components/cc_pattern.scss.erb
@@ -0,0 +1,28 @@
+/* License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later */
+@import 'mixins';
+
+.ccPattern {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+}
+.ccPattern:after,
+.ccPattern:before {
+ position: absolute;
+ content: '';
+ width: 100%;
+ left: 0;
+ bottom: 0;
+}
+.ccPattern:after {
+ height: 100%;
+ background-image: url('<%= asset_path 'patterns/features-nodes.svg'%>');
+ background-size: contain;
+ @include opacity(0.3);
+ }
+.ccPattern:before {
+ height: 60%;
+ @include gradient(top, $trans, white);
+}
diff --git a/app/assets/stylesheets/components/checklist.css.scss b/app/assets/stylesheets/components/checklist.scss
similarity index 100%
rename from app/assets/stylesheets/components/checklist.css.scss
rename to app/assets/stylesheets/components/checklist.scss
diff --git a/app/assets/stylesheets/components/circle_text.css.scss b/app/assets/stylesheets/components/circle_text.scss
similarity index 100%
rename from app/assets/stylesheets/components/circle_text.css.scss
rename to app/assets/stylesheets/components/circle_text.scss
diff --git a/app/assets/stylesheets/components/confirmation.css.scss b/app/assets/stylesheets/components/confirmation.scss
similarity index 100%
rename from app/assets/stylesheets/components/confirmation.css.scss
rename to app/assets/stylesheets/components/confirmation.scss
diff --git a/app/assets/stylesheets/components/container.css.scss b/app/assets/stylesheets/components/container.scss
similarity index 100%
rename from app/assets/stylesheets/components/container.css.scss
rename to app/assets/stylesheets/components/container.scss
diff --git a/app/assets/stylesheets/components/decorative.css.scss b/app/assets/stylesheets/components/decorative.scss
similarity index 100%
rename from app/assets/stylesheets/components/decorative.css.scss
rename to app/assets/stylesheets/components/decorative.scss
diff --git a/app/assets/stylesheets/components/draggable.css.scss b/app/assets/stylesheets/components/draggable.css.scss
deleted file mode 100644
index f6250c7cd..000000000
--- a/app/assets/stylesheets/components/draggable.css.scss
+++ /dev/null
@@ -1,52 +0,0 @@
-/* License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later */
-.gu-mirror {
- position: fixed !important;
- margin: 0 !important;
- z-index: 9999 !important;
- @include box-shadow(0 0 10px 0 rgba(black, 0.15));
- background: white;
- border: 1px solid rgba(black, 0.1);
-}
-
-.gu-hide {
- display: none !important;
-}
-
-.gu-unselectable {
- @include noselect;
-}
-
-.gu-transit {
- background: rgba(black, 0.1);
- @include opacity(0.3);
-}
-
-.gu-mirror {
- display: table;
- vertical-align: middle;
-}
-
-.gu-mirror button,
-.gu-mirror a {
- display: none;
-}
-
-.draggable-item {
- cursor: pointer;
- @include noselect;
-}
-
-.draggable-item:hover .draggable-grip {
- @include opacity(0.5);
-}
-
-.draggable-grip {
- display: inline-block;
- height: 100%;
- width: 12px;
- background-image: url(/assets/graphics/icon-grip.svg);
- background-repeat: repeat-y;
- background-size: 8px;
- @include opacity(0.1);
-}
-
diff --git a/app/assets/stylesheets/components/draggable.scss.erb b/app/assets/stylesheets/components/draggable.scss.erb
new file mode 100644
index 000000000..c4633c62f
--- /dev/null
+++ b/app/assets/stylesheets/components/draggable.scss.erb
@@ -0,0 +1,52 @@
+/* License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later */
+.gu-mirror {
+ position: fixed !important;
+ margin: 0 !important;
+ z-index: 9999 !important;
+ @include box-shadow(0 0 10px 0 rgba(black, 0.15));
+ background: white;
+ border: 1px solid rgba(black, 0.1);
+}
+
+.gu-hide {
+ display: none !important;
+}
+
+.gu-unselectable {
+ @include noselect;
+}
+
+.gu-transit {
+ background: rgba(black, 0.1);
+ @include opacity(0.3);
+}
+
+.gu-mirror {
+ display: table;
+ vertical-align: middle;
+}
+
+.gu-mirror button,
+.gu-mirror a {
+ display: none;
+}
+
+.draggable-item {
+ cursor: pointer;
+ @include noselect;
+}
+
+.draggable-item:hover .draggable-grip {
+ @include opacity(0.5);
+}
+
+.draggable-grip {
+ display: inline-block;
+ height: 100%;
+ width: 12px;
+ background-image: url('<%= asset_path 'graphics/icon-grip.svg' %>');
+ background-repeat: repeat-y;
+ background-size: 8px;
+ @include opacity(0.1);
+}
+
diff --git a/app/assets/stylesheets/components/drop_down.css.scss b/app/assets/stylesheets/components/drop_down.scss
similarity index 100%
rename from app/assets/stylesheets/components/drop_down.css.scss
rename to app/assets/stylesheets/components/drop_down.scss
diff --git a/app/assets/stylesheets/components/event_preview_small.css.scss b/app/assets/stylesheets/components/event_preview_small.scss
similarity index 100%
rename from app/assets/stylesheets/components/event_preview_small.css.scss
rename to app/assets/stylesheets/components/event_preview_small.scss
diff --git a/app/assets/stylesheets/components/fade_in.css.scss b/app/assets/stylesheets/components/fade_in.scss
similarity index 100%
rename from app/assets/stylesheets/components/fade_in.css.scss
rename to app/assets/stylesheets/components/fade_in.scss
diff --git a/app/assets/stylesheets/components/fee_box.css.scss b/app/assets/stylesheets/components/fee_box.scss
similarity index 100%
rename from app/assets/stylesheets/components/fee_box.css.scss
rename to app/assets/stylesheets/components/fee_box.scss
diff --git a/app/assets/stylesheets/components/ff_modal.css.scss b/app/assets/stylesheets/components/ff_modal.scss
similarity index 100%
rename from app/assets/stylesheets/components/ff_modal.css.scss
rename to app/assets/stylesheets/components/ff_modal.scss
diff --git a/app/assets/stylesheets/components/fixed_top_action.css.scss b/app/assets/stylesheets/components/fixed_top_action.scss
similarity index 100%
rename from app/assets/stylesheets/components/fixed_top_action.css.scss
rename to app/assets/stylesheets/components/fixed_top_action.scss
diff --git a/app/assets/stylesheets/components/focal_point.css.scss b/app/assets/stylesheets/components/focal_point.scss
similarity index 100%
rename from app/assets/stylesheets/components/focal_point.css.scss
rename to app/assets/stylesheets/components/focal_point.scss
diff --git a/app/assets/stylesheets/components/footer.css.scss b/app/assets/stylesheets/components/footer.css.scss
deleted file mode 100644
index c97c50372..000000000
--- a/app/assets/stylesheets/components/footer.css.scss
+++ /dev/null
@@ -1,65 +0,0 @@
-/* License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later */
-@import 'mixins';
-@import 'components/press_row';
-
-.globalFooter--mosaic {
- background: $mosaic;
- width: 100%;
- height: 4px;
-}
-.globalFooter {
- width: 100%;
- background: $blue-grey;
- position: relative;
- @include mosaic(bottom, 4px);
-}
-.globalFooter-guest.container { padding: 30px 15px 15px 15px; }
-.globalFooter * { color: white; }
-.globalFooter a:not(.globalFooter-sub-item--social) {
- @include setColorAndHover(white);
- border-bottom: 1px solid rgba(white, 0.2);
-}
-.globalFooter-title { font-weight: bold; }
-.globalFooter li:not(.globalFooter-title) {
- margin-top: 5px;
- padding: 0 0 5px 0;
- font-size: 15px;
-}
-
-// footer sub
-.globalFooter-sub {
- background: rgba(black, 0.06);
- padding: 20px 0 25px 0;
-}
-.globalFooter-sub .container {
- padding: 0 10px;
-}
-.globalFooter-sub-item,
-.globalFooter-sub-item--social {
- font-size: 14px;
- margin-right: 10px;
-}
-.globalFooter-sub-item--social i.fa {
- @include opacity(0.9);
- text-align: center;
- margin: 0;
- width: 25px;
- line-height: 25px;
- @include border-radius(50%);
- @include setBackgroundAndHover(rgba(white, 0.9));
-
-}
-.globalFooter-sub-item--social i.fa-facebook { color: $facebook; }
-.globalFooter-sub-item--social i.fa-twitter { color: $twitter; }
-.globalFooter-sub-item--social i.fa-google { color: $google; }
-.globalFooter-sub-commitchange {
- @include bitter;
- font-size: 17px;
- font-weight: bold;
- margin-right: 15px;
-}
-.globalFooter-sub img {
- vertical-align: text-bottom;
- width: 25px;
-}
-
diff --git a/app/assets/stylesheets/components/footer.scss b/app/assets/stylesheets/components/footer.scss
new file mode 100644
index 000000000..7f547dc80
--- /dev/null
+++ b/app/assets/stylesheets/components/footer.scss
@@ -0,0 +1,64 @@
+/* License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later */
+@import 'mixins';
+
+.globalFooter--mosaic {
+ background: $mosaic;
+ width: 100%;
+ height: 4px;
+}
+.globalFooter {
+ width: 100%;
+ background: $blue-grey;
+ position: relative;
+ @include mosaic(bottom, 4px);
+}
+.globalFooter-guest.container { padding: 30px 15px 15px 15px; }
+.globalFooter * { color: white; }
+.globalFooter a:not(.globalFooter-sub-item--social) {
+ @include setColorAndHover(white);
+ border-bottom: 1px solid rgba(white, 0.2);
+}
+.globalFooter-title { font-weight: bold; }
+.globalFooter li:not(.globalFooter-title) {
+ margin-top: 5px;
+ padding: 0 0 5px 0;
+ font-size: 15px;
+}
+
+// footer sub
+.globalFooter-sub {
+ background: rgba(black, 0.06);
+ padding: 20px 0 25px 0;
+}
+.globalFooter-sub .container {
+ padding: 0 10px;
+}
+.globalFooter-sub-item,
+.globalFooter-sub-item--social {
+ font-size: 14px;
+ margin-right: 10px;
+}
+.globalFooter-sub-item--social i.fa {
+ @include opacity(0.9);
+ text-align: center;
+ margin: 0;
+ width: 25px;
+ line-height: 25px;
+ @include border-radius(50%);
+ @include setBackgroundAndHover(rgba(white, 0.9));
+
+}
+.globalFooter-sub-item--social i.fa-facebook { color: $facebook; }
+.globalFooter-sub-item--social i.fa-twitter { color: $twitter; }
+.globalFooter-sub-item--social i.fa-google { color: $google; }
+.globalFooter-sub-commitchange {
+ @include bitter;
+ font-size: 17px;
+ font-weight: bold;
+ margin-right: 15px;
+}
+.globalFooter-sub img {
+ vertical-align: text-bottom;
+ width: 25px;
+}
+
diff --git a/app/assets/stylesheets/components/forms.css.scss b/app/assets/stylesheets/components/forms.scss
similarity index 100%
rename from app/assets/stylesheets/components/forms.css.scss
rename to app/assets/stylesheets/components/forms.scss
diff --git a/app/assets/stylesheets/components/full_features.css.scss b/app/assets/stylesheets/components/full_features.scss
similarity index 100%
rename from app/assets/stylesheets/components/full_features.css.scss
rename to app/assets/stylesheets/components/full_features.scss
diff --git a/app/assets/stylesheets/components/full_screen_loading.css.scss b/app/assets/stylesheets/components/full_screen_loading.scss
similarity index 100%
rename from app/assets/stylesheets/components/full_screen_loading.css.scss
rename to app/assets/stylesheets/components/full_screen_loading.scss
diff --git a/app/assets/stylesheets/components/giving_indicator.css.scss b/app/assets/stylesheets/components/giving_indicator.scss
similarity index 100%
rename from app/assets/stylesheets/components/giving_indicator.css.scss
rename to app/assets/stylesheets/components/giving_indicator.scss
diff --git a/app/assets/stylesheets/components/google_maps.css.scss b/app/assets/stylesheets/components/google_maps.scss
similarity index 100%
rename from app/assets/stylesheets/components/google_maps.css.scss
rename to app/assets/stylesheets/components/google_maps.scss
diff --git a/app/assets/stylesheets/components/headers.css.scss b/app/assets/stylesheets/components/headers.scss
similarity index 100%
rename from app/assets/stylesheets/components/headers.css.scss
rename to app/assets/stylesheets/components/headers.scss
diff --git a/app/assets/stylesheets/components/help_box.css.scss b/app/assets/stylesheets/components/help_box.scss
similarity index 100%
rename from app/assets/stylesheets/components/help_box.css.scss
rename to app/assets/stylesheets/components/help_box.scss
diff --git a/app/assets/stylesheets/components/identity_verification.css.scss b/app/assets/stylesheets/components/identity_verification.css.scss
deleted file mode 100644
index 5b55462c4..000000000
--- a/app/assets/stylesheets/components/identity_verification.css.scss
+++ /dev/null
@@ -1,10 +0,0 @@
-/* License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later */
-
-#identityVerificationModal fieldset {
- padding: 10px 10px 10px 0;
-}
-
-#identityVerificationModal input {
- margin-bottom: 0;
-}
-
diff --git a/app/assets/stylesheets/components/image_header.css.scss b/app/assets/stylesheets/components/image_header.scss
similarity index 100%
rename from app/assets/stylesheets/components/image_header.css.scss
rename to app/assets/stylesheets/components/image_header.scss
diff --git a/app/assets/stylesheets/components/info_card.css.scss b/app/assets/stylesheets/components/info_card.scss
similarity index 100%
rename from app/assets/stylesheets/components/info_card.css.scss
rename to app/assets/stylesheets/components/info_card.scss
diff --git a/app/assets/stylesheets/components/inputs.css.scss b/app/assets/stylesheets/components/inputs.css.scss
deleted file mode 100644
index 5f236d1e5..000000000
--- a/app/assets/stylesheets/components/inputs.css.scss
+++ /dev/null
@@ -1,323 +0,0 @@
-/* License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later */
-@import 'mixins';
-
-@mixin basicInputs {
- input[type="text"], input, input[type="email"], input[type="number"], input[type="password"], input[type="tel"], select {
- @content;
- }
-}
-
-@mixin inputStyleReset {
- color: $charcoal;
- padding: 4px 8px;
- font-size: 16px; // inputs should all be 16px to prevent zooming on mobile
- @include border-radius(0);
- @include transition(border-color 0.2s ease-out);
- border-top: 1px solid lighten($grey, 35%);
- border-right: 1px solid lighten($grey, 35%);
- border-left: 1px solid lighten($grey, 35%);
- border-bottom: 2px solid lighten($grey, 35%);
- margin-bottom: 12px;
- &:focus {
- border-bottom: 2px solid lighten($grey, 15%);
- }
-}
-
-@mixin clickableLabel {
- cursor: pointer;
- display: inline-block;
- position: relative;
- font-weight: normal;
- @include setColorAndHover($charcoal);
- margin: 0;
-}
-
-
-@include basicInputs {
- @include inputStyleReset;
- &.input--50 { max-width: 50px; }
- &.input--100 { max-width: 100px; }
- &.input--150 { max-width: 150px; }
- &.input--175 { max-width: 175px; }
- &.input--200 { max-width: 200px; }
- &.input--250 { max-width: 250px; }
- &.input--300 { max-width: 300px; }
- &.input--400 { max-width: 400px; }
- &.input--half { max-width: 48%; }
- &.input--mini { width: 3em; }
- &.input--small { width: 10em; }
- &.input--medium { width: 15em; }
- &.input--large { width: 20em; }
-}
-
-.input--prepend { position: relative; }
-.input--prepend .prepend {
- position: absolute;
- left: 7px;
- top: 16px;
- font-weight: bold;
- line-height: 0;
- font-size: 13px;
- color: rgba($grey, 0.8);
- }
-.input--prepend input { padding-left: 24px; }
-
-
-.field input,
-.field textarea {
- margin-bottom: 0;
-}
-
-input.date-picker {
- max-width: 100px;
-}
-
-.input--percent {
- position: relative;
-}
-.input--percent input {
- width: 58px;
- text-align: right;
- padding-right: 18px;
-}
-.input--percent:after {
- position: absolute;
- left: 40px;
- font-size: 12px;
- color: grey;
- top: 4px;
- content: '%';
-}
-
-select {
- width: 100%;
- height: 33px;
- background: white;
- line-height: 1.5;
- &.selectState {
- width: 70px;
- }
-}
-
-select.select {
- -webkit-appearance: none;
- -moz-appearance: none;
- -ms-appearance: none;
- -o-appearance: none;
- appearance: none;
- background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAmCAYAAADTGStiAAAACXBIWXMAAAsTAAALEwEAmpwYAAA51WlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS41LWMwMjEgNzkuMTU0OTExLCAyMDEzLzEwLzI5LTExOjQ3OjE2ICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgKE1hY2ludG9zaCk8L3htcDpDcmVhdG9yVG9vbD4KICAgICAgICAgPHhtcDpDcmVhdGVEYXRlPjIwMTUtMDQtMTZUMTY6MDI6MTEtMDc6MDA8L3htcDpDcmVhdGVEYXRlPgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAxNS0wNC0xNlQxNjoyODo1My0wNzowMDwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXA6TWV0YWRhdGFEYXRlPjIwMTUtMDQtMTZUMTY6Mjg6NTMtMDc6MDA8L3htcDpNZXRhZGF0YURhdGU+CiAgICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2UvcG5nPC9kYzpmb3JtYXQ+CiAgICAgICAgIDxwaG90b3Nob3A6Q29sb3JNb2RlPjM8L3Bob3Rvc2hvcDpDb2xvck1vZGU+CiAgICAgICAgIDx4bXBNTTpJbnN0YW5jZUlEPnhtcC5paWQ6NTUzOGQwOWUtNzgzZS00YTU4LTgzN2YtZTEwNTNkYmRjYWY3PC94bXBNTTpJbnN0YW5jZUlEPgogICAgICAgICA8eG1wTU06RG9jdW1lbnRJRD54bXAuZGlkOjYyODI5YmE4LWVlMTUtNDlkYi04NmUwLTZjMTc0ZGUyOWE3ZTwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjYyODI5YmE4LWVlMTUtNDlkYi04NmUwLTZjMTc0ZGUyOWE3ZTwveG1wTU06T3JpZ2luYWxEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06SGlzdG9yeT4KICAgICAgICAgICAgPHJkZjpTZXE+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmNyZWF0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDo2MjgyOWJhOC1lZTE1LTQ5ZGItODZlMC02YzE3NGRlMjlhN2U8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTUtMDQtMTZUMTY6MDI6MTEtMDc6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAoTWFjaW50b3NoKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6NTUzOGQwOWUtNzgzZS00YTU4LTgzN2YtZTEwNTNkYmRjYWY3PC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE1LTA0LTE2VDE2OjI4OjUzLTA3OjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ0MgKE1hY2ludG9zaCk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICA8L3JkZjpTZXE+CiAgICAgICAgIDwveG1wTU06SGlzdG9yeT4KICAgICAgICAgPHRpZmY6T3JpZW50YXRpb24+MTwvdGlmZjpPcmllbnRhdGlvbj4KICAgICAgICAgPHRpZmY6WFJlc29sdXRpb24+NzIwMDAwLzEwMDAwPC90aWZmOlhSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpZUmVzb2x1dGlvbj43MjAwMDAvMTAwMDA8L3RpZmY6WVJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOlJlc29sdXRpb25Vbml0PjI8L3RpZmY6UmVzb2x1dGlvblVuaXQ+CiAgICAgICAgIDxleGlmOkNvbG9yU3BhY2U+NjU1MzU8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjMwPC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjM4PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz79B9nqAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAACySURBVHja7NYxCsJAEAXQ+WoVLT2FvScJpMkQrZNLJRAbwZPY7y1SJp18KxGFQFYMWvxpd+Ex/GEYkLRf1MJ+VIIFCxYsWPD/waupH9vTpQZwGHsn2XieHr/e8dB3Jckwgoah78qYjjH1AgFgbXve0ZZXwJInagPstnfPQsw1E5WxexYIq166hVXuWZh9uIo8rUk2j1yLPK1nHa73vNebbRKb60cZa4EIFixYsGDBs9V9AIovRFol6phnAAAAAElFTkSuQmCC");
- background-position: center right;
- background-repeat: no-repeat;
- padding-right: 1rem;
-}
-
-label {
- @include no-select;
- color: $sea-foam;
- display: inherit;
- font-weight: bold;
- text-align: left;
- margin-bottom: 5px;
-}
-
-input {
- width: 100%;
-}
-
-textarea {
- border-color: lighten($grey, 35%);
- border-bottom: 2px solid lighten($grey, 35%);
- @include transition(border-bottom 0.2s ease);
- color: $charcoal;
- padding: 5px 8px;
- font-size: 15px;
- line-height: 1.3;
- resize: none;
- width: 100%;
- &:focus {
- border-bottom: 2px solid lighten($grey, 15%);
- }
-}
-
-input[type="submit"] {
- @include border-radius(0);
-}
-
-input[type="file"] {
- height: auto;
- line-height: 1;
- border: none;
- &.disabled {
- pointer-events: none;
- @include opacity(0.5);
- }
-}
-
-input[type="file"]::-webkit-file-upload-button {
- padding: 7px;
- @include setBackgroundAndHover($sky);
- color: white;
- font-weight: bold;
- @include border-radius(3px);
- cursor: pointer;
- border: none;
- font-weight: bold;
- &:focus {outline:none;}
-}
-
-.input--mini {
- width: 3em;
-}
-.input--small {
- width: 10em;
-}
-.input--medium {
- width: 15em;
-}
-.input--large {
- width: 20em;
-}
-
-input[type='text'].input--bigText {
- font-size: 20px;
-}
-
-input[readonly] {
- @include transition(none);
- @include no-select;
- pointer-events: none;
- padding: 0 5px;
- font-size: 15px;
- line-height: 26px;
-}
-textarea[readonly] {
- @include transition(none);
- border-color: rgba(black, 0.02);
-}
-
-input.removeField {
- border-color: rgba($red, 0.1);
- @include transition(none);
- @include no-select;
- pointer-events: none;
-}
-
-
-
-input::-ms-clear { display: none; }
-
-// Radio buttons
-input[type='radio'] {
- display: none;
-}
-input[type='radio'] + label {
- @include clickableLabel;
- margin-bottom: 5px;
-}
-input[type='radio'] + label:before {
- content: '';
- margin-right: 8px;
- background-color: #fff;
- vertical-align: middle;
- display: inline-block;
- width: 17px;
- height: 17px;
- border: 1px #ccc solid;
- @include border-radius(50%);
-}
-input[type='radio'].radio--large + label:before {
- width: 21px;
- height: 21px;
-}
-input[type='radio'] + label:hover:before {
- background-color: rgba(black, 0.1);
-}
-input[type='radio'] + label {
- cursor: pointer;
- position: relative;
-}
-input[type='radio']:checked + label:before {
- background-color: $bluegrass;
-}
-input[type='radio'].radio--both {
- @extend input[type='radio'];
- & + label {
- @include opacity(0.9);
- }
- &:checked + label:before {
- background-color: rgba($grey, 0.8);
- }
-}
-
-// Button for clearing out input fields
-.clear-input {
- position: absolute;
- right: 6px;
- cursor: pointer;
- top: 6px;
- font-size: 18px;
- @include setColorAndHover(rgba($grey,0.4));
-}
-
-// Checkbox
-fieldset.checkbox input,
-input[type='checkbox'] {
- display: none;
-}
-fieldset.checkbox label,
-input[type='checkbox'] + label {
- @include clickableLabel;
-}
-fieldset.checkbox label:before,
-input[type='checkbox'] + label:before {
- content: '';
- vertical-align: text-bottom;
- display: inline-block;
- background: $fog;
- border: 1px #ccc solid;
- margin-right: 5px;
- float: none;
- width: 20px;
- height: 20px;
- line-height: 20px;
- padding: 0;
- text-align: center;
- font-family: 'FontAwesome';
- color: $sea-foam;
- font-size: 15px;
-}
-fieldset.checkbox label:hover:before,
-input[type='checkbox']:checked + label:before {
- content: '\f00c';
-}
-fieldset.checkbox label:hover:before,
-input[type='checkbox'] + label:hover:before {
- background-color: $sage;
-}
-.prepend--dollar { // add this class to the parent of the input
- @extend .u-prepend;
- @include basicInputs { padding-left: 18px;}
- &:before {
- padding: 0 8px;
- content: '$';
- font-size: 15px;
- line-height: 29px;
- }
-}
-
-.prepend--euro { // add this class to the parent of the input
- @extend .u-prepend;
- @include basicInputs { padding-left: 18px;}
- &:before {
- padding: 0 8px;
- content: '€';
- font-size: 15px;
- line-height: 29px;
- }
-}
-
-@media screen and (max-width: 350px) {
- @include basicInputs {
- font-size: 13px;
- }
-}
diff --git a/app/assets/stylesheets/components/inputs.scss b/app/assets/stylesheets/components/inputs.scss
new file mode 100644
index 000000000..09571f288
--- /dev/null
+++ b/app/assets/stylesheets/components/inputs.scss
@@ -0,0 +1,349 @@
+/* License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later */
+@import 'mixins';
+
+@mixin basicInputs {
+ input[type="text"], input, input[type="email"], input[type="number"], input[type="password"], input[type="tel"], select {
+ @content;
+ }
+}
+
+@mixin inputStyleReset {
+ color: $charcoal;
+ padding: 4px 8px;
+ font-size: 16px; // inputs should all be 16px to prevent zooming on mobile
+ @include border-radius(0);
+ @include transition(border-color 0.2s ease-out);
+ border-top: 1px solid lighten($grey, 35%);
+ border-right: 1px solid lighten($grey, 35%);
+ border-left: 1px solid lighten($grey, 35%);
+ border-bottom: 2px solid lighten($grey, 35%);
+ margin-bottom: 12px;
+ &:focus {
+ border-bottom: 2px solid lighten($grey, 15%);
+ }
+}
+
+@mixin clickableLabel {
+ cursor: pointer;
+ display: inline-block;
+ position: relative;
+ font-weight: normal;
+ @include setColorAndHover($charcoal);
+ margin: 0;
+}
+
+
+@include basicInputs {
+ @include inputStyleReset;
+ &.input--50 { max-width: 50px; }
+ &.input--100 { max-width: 100px; }
+ &.input--150 { max-width: 150px; }
+ &.input--175 { max-width: 175px; }
+ &.input--200 { max-width: 200px; }
+ &.input--250 { max-width: 250px; }
+ &.input--300 { max-width: 300px; }
+ &.input--400 { max-width: 400px; }
+ &.input--half { max-width: 48%; }
+ &.input--mini { width: 3em; }
+ &.input--small { width: 10em; }
+ &.input--medium { width: 15em; }
+ &.input--large { width: 20em; }
+}
+
+.input--prepend { position: relative; }
+.input--prepend .prepend {
+ position: absolute;
+ left: 7px;
+ top: 16px;
+ font-weight: bold;
+ line-height: 0;
+ font-size: 13px;
+ color: rgba($grey, 0.8);
+ }
+.input--prepend input { padding-left: 24px; }
+
+
+.field input,
+.field textarea {
+ margin-bottom: 0;
+}
+
+input.date-picker {
+ max-width: 100px;
+}
+
+.input--percent {
+ position: relative;
+}
+.input--percent input {
+ width: 58px;
+ text-align: right;
+ padding-right: 18px;
+}
+.input--percent:after {
+ position: absolute;
+ left: 40px;
+ font-size: 12px;
+ color: grey;
+ top: 4px;
+ content: '%';
+}
+
+select {
+ width: 100%;
+ height: 33px;
+ background: white;
+ line-height: 1.5;
+ &.selectState {
+ width: 70px;
+ }
+}
+
+select.select {
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ -o-appearance: none;
+ appearance: none;
+ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAmCAYAAADTGStiAAAACXBIWXMAAAsTAAALEwEAmpwYAAA51WlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS41LWMwMjEgNzkuMTU0OTExLCAyMDEzLzEwLzI5LTExOjQ3OjE2ICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgKE1hY2ludG9zaCk8L3htcDpDcmVhdG9yVG9vbD4KICAgICAgICAgPHhtcDpDcmVhdGVEYXRlPjIwMTUtMDQtMTZUMTY6MDI6MTEtMDc6MDA8L3htcDpDcmVhdGVEYXRlPgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAxNS0wNC0xNlQxNjoyODo1My0wNzowMDwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXA6TWV0YWRhdGFEYXRlPjIwMTUtMDQtMTZUMTY6Mjg6NTMtMDc6MDA8L3htcDpNZXRhZGF0YURhdGU+CiAgICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2UvcG5nPC9kYzpmb3JtYXQ+CiAgICAgICAgIDxwaG90b3Nob3A6Q29sb3JNb2RlPjM8L3Bob3Rvc2hvcDpDb2xvck1vZGU+CiAgICAgICAgIDx4bXBNTTpJbnN0YW5jZUlEPnhtcC5paWQ6NTUzOGQwOWUtNzgzZS00YTU4LTgzN2YtZTEwNTNkYmRjYWY3PC94bXBNTTpJbnN0YW5jZUlEPgogICAgICAgICA8eG1wTU06RG9jdW1lbnRJRD54bXAuZGlkOjYyODI5YmE4LWVlMTUtNDlkYi04NmUwLTZjMTc0ZGUyOWE3ZTwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjYyODI5YmE4LWVlMTUtNDlkYi04NmUwLTZjMTc0ZGUyOWE3ZTwveG1wTU06T3JpZ2luYWxEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06SGlzdG9yeT4KICAgICAgICAgICAgPHJkZjpTZXE+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmNyZWF0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDo2MjgyOWJhOC1lZTE1LTQ5ZGItODZlMC02YzE3NGRlMjlhN2U8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTUtMDQtMTZUMTY6MDI6MTEtMDc6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAoTWFjaW50b3NoKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6NTUzOGQwOWUtNzgzZS00YTU4LTgzN2YtZTEwNTNkYmRjYWY3PC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE1LTA0LTE2VDE2OjI4OjUzLTA3OjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ0MgKE1hY2ludG9zaCk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICA8L3JkZjpTZXE+CiAgICAgICAgIDwveG1wTU06SGlzdG9yeT4KICAgICAgICAgPHRpZmY6T3JpZW50YXRpb24+MTwvdGlmZjpPcmllbnRhdGlvbj4KICAgICAgICAgPHRpZmY6WFJlc29sdXRpb24+NzIwMDAwLzEwMDAwPC90aWZmOlhSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpZUmVzb2x1dGlvbj43MjAwMDAvMTAwMDA8L3RpZmY6WVJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOlJlc29sdXRpb25Vbml0PjI8L3RpZmY6UmVzb2x1dGlvblVuaXQ+CiAgICAgICAgIDxleGlmOkNvbG9yU3BhY2U+NjU1MzU8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjMwPC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjM4PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz79B9nqAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAACySURBVHja7NYxCsJAEAXQ+WoVLT2FvScJpMkQrZNLJRAbwZPY7y1SJp18KxGFQFYMWvxpd+Ex/GEYkLRf1MJ+VIIFCxYsWPD/waupH9vTpQZwGHsn2XieHr/e8dB3Jckwgoah78qYjjH1AgFgbXve0ZZXwJInagPstnfPQsw1E5WxexYIq166hVXuWZh9uIo8rUk2j1yLPK1nHa73vNebbRKb60cZa4EIFixYsGDBs9V9AIovRFol6phnAAAAAElFTkSuQmCC");
+ background-position: center right;
+ background-repeat: no-repeat;
+ padding-right: 1rem;
+}
+
+label {
+ @include no-select;
+ color: $sea-foam;
+ display: inherit;
+ font-weight: bold;
+ text-align: left;
+ margin-bottom: 5px;
+}
+
+input {
+ width: 100%;
+}
+
+textarea {
+ border-color: lighten($grey, 35%);
+ border-bottom: 2px solid lighten($grey, 35%);
+ @include transition(border-bottom 0.2s ease);
+ color: $charcoal;
+ padding: 5px 8px;
+ font-size: 15px;
+ line-height: 1.3;
+ resize: none;
+ width: 100%;
+ &:focus {
+ border-bottom: 2px solid lighten($grey, 15%);
+ }
+}
+
+input[type="submit"] {
+ @include border-radius(0);
+}
+
+input[type="file"] {
+ height: auto;
+ line-height: 1;
+ border: none;
+ &.disabled {
+ pointer-events: none;
+ @include opacity(0.5);
+ }
+}
+
+input[type="file"]::-webkit-file-upload-button {
+ padding: 7px;
+ @include setBackgroundAndHover($sky);
+ color: white;
+ font-weight: bold;
+ @include border-radius(3px);
+ cursor: pointer;
+ border: none;
+ font-weight: bold;
+ &:focus {outline:none;}
+}
+
+.input--mini {
+ width: 3em;
+}
+.input--small {
+ width: 10em;
+}
+.input--medium {
+ width: 15em;
+}
+.input--large {
+ width: 20em;
+}
+
+input[type='text'].input--bigText {
+ font-size: 20px;
+}
+
+input[readonly] {
+ @include transition(none);
+ @include no-select;
+ pointer-events: none;
+ padding: 0 5px;
+ font-size: 15px;
+ line-height: 26px;
+}
+textarea[readonly] {
+ @include transition(none);
+ border-color: rgba(black, 0.02);
+}
+
+input.removeField {
+ border-color: rgba($red, 0.1);
+ @include transition(none);
+ @include no-select;
+ pointer-events: none;
+}
+
+
+
+input::-ms-clear { display: none; }
+
+// Radio buttons
+input[type='radio'] {
+ display: none;
+}
+input[type='radio'] + label {
+ @include clickableLabel;
+ margin-bottom: 5px;
+}
+input[type='radio'] + label:before {
+ content: '';
+ margin-right: 8px;
+ background-color: #fff;
+ vertical-align: middle;
+ display: inline-block;
+ width: 17px;
+ height: 17px;
+ border: 1px #ccc solid;
+ @include border-radius(50%);
+}
+input[type='radio'].radio--large + label:before {
+ width: 21px;
+ height: 21px;
+}
+input[type='radio'] + label:hover:before {
+ background-color: rgba(black, 0.1);
+}
+input[type='radio'] + label {
+ cursor: pointer;
+ position: relative;
+}
+input[type='radio']:checked + label:before {
+ background-color: $bluegrass;
+}
+input[type='radio'].radio--both {
+ @extend input[type='radio'];
+ & + label {
+ @include opacity(0.9);
+ }
+ &:checked + label:before {
+ background-color: rgba($grey, 0.8);
+ }
+}
+
+// Button for clearing out input fields
+.clear-input {
+ position: absolute;
+ right: 6px;
+ cursor: pointer;
+ top: 6px;
+ font-size: 18px;
+ @include setColorAndHover(rgba($grey,0.4));
+}
+
+// Checkbox
+fieldset.checkbox input,
+input[type='checkbox'] {
+ display: none;
+}
+fieldset.checkbox label,
+input[type='checkbox'] + label {
+ @include clickableLabel;
+}
+fieldset.checkbox label:before,
+input[type='checkbox'] + label:before {
+ content: '';
+ vertical-align: text-bottom;
+ display: inline-block;
+ background: $fog;
+ border: 1px #ccc solid;
+ margin-right: 5px;
+ float: none;
+ width: 20px;
+ height: 20px;
+ line-height: 20px;
+ padding: 0;
+ text-align: center;
+ font-family: 'FontAwesome';
+ color: $sea-foam;
+ font-size: 15px;
+}
+fieldset.checkbox label:hover:before,
+input[type='checkbox']:checked + label:before {
+ content: '\f00c';
+}
+fieldset.checkbox label:hover:before,
+input[type='checkbox'] + label:hover:before {
+ background-color: $sage;
+}
+.prepend--dollar { // add this class to the parent of the input
+ @extend .u-prepend;
+ @include basicInputs { padding-left: 18px;}
+ &:before {
+ padding: 0 8px;
+ content: '$';
+ font-size: 15px;
+ line-height: 29px;
+ }
+}
+
+.prepend--euro { // add this class to the parent of the input
+ @extend .u-prepend;
+ @include basicInputs { padding-left: 18px;}
+ &:before {
+ padding: 0 8px;
+ content: '€';
+ font-size: 15px;
+ line-height: 29px;
+ }
+}
+
+@media screen and (max-width: 350px) {
+ @include basicInputs {
+ font-size: 13px;
+ }
+}
+.StripeElement {
+ color: $charcoal;
+ padding: 4px 8px;
+ font-size: 16px; // inputs should all be 16px to prevent zooming on mobile
+ @include border-radius(0);
+ @include transition(border-color 0.2s ease-out);
+ border-top: 1px solid lighten($grey, 35%);
+ border-right: 1px solid lighten($grey, 35%);
+ border-left: 1px solid lighten($grey, 35%);
+ border-bottom: 2px solid lighten($grey, 35%);
+ margin-bottom: 12px;
+ background-color: white
+ }
+
+ .StripeElement--focus {
+ border-bottom: 2px solid lighten($grey, 15%);
+ }
+
+ .StripeElement--invalid {
+ border-color: #ff4f4f;
+ }
+
+ .StripeElement--webkit-autofill {
+ background-color: #fefde5 !important;
+ }
+
diff --git a/app/assets/stylesheets/components/legend.css.scss b/app/assets/stylesheets/components/legend.scss
similarity index 100%
rename from app/assets/stylesheets/components/legend.css.scss
rename to app/assets/stylesheets/components/legend.scss
diff --git a/app/assets/stylesheets/components/loading.css.scss b/app/assets/stylesheets/components/loading.scss
similarity index 100%
rename from app/assets/stylesheets/components/loading.css.scss
rename to app/assets/stylesheets/components/loading.scss
diff --git a/app/assets/stylesheets/components/modals.css.scss b/app/assets/stylesheets/components/modals.scss
similarity index 100%
rename from app/assets/stylesheets/components/modals.css.scss
rename to app/assets/stylesheets/components/modals.scss
diff --git a/app/assets/stylesheets/components/nonprofit_bank_accounts.css.scss b/app/assets/stylesheets/components/nonprofit_bank_accounts.scss
similarity index 100%
rename from app/assets/stylesheets/components/nonprofit_bank_accounts.css.scss
rename to app/assets/stylesheets/components/nonprofit_bank_accounts.scss
diff --git a/app/assets/stylesheets/components/notification_alerts.css.scss b/app/assets/stylesheets/components/notification_alerts.scss
similarity index 100%
rename from app/assets/stylesheets/components/notification_alerts.css.scss
rename to app/assets/stylesheets/components/notification_alerts.scss
diff --git a/app/assets/stylesheets/components/npo_card.css.scss b/app/assets/stylesheets/components/npo_card.scss
similarity index 100%
rename from app/assets/stylesheets/components/npo_card.css.scss
rename to app/assets/stylesheets/components/npo_card.scss
diff --git a/app/assets/stylesheets/components/page_tabs.css.scss b/app/assets/stylesheets/components/page_tabs.scss
similarity index 100%
rename from app/assets/stylesheets/components/page_tabs.css.scss
rename to app/assets/stylesheets/components/page_tabs.scss
diff --git a/app/assets/stylesheets/components/pagination.css.scss b/app/assets/stylesheets/components/pagination.scss
similarity index 100%
rename from app/assets/stylesheets/components/pagination.css.scss
rename to app/assets/stylesheets/components/pagination.scss
diff --git a/app/assets/stylesheets/components/panels_layout.css.scss b/app/assets/stylesheets/components/panels_layout.scss
similarity index 100%
rename from app/assets/stylesheets/components/panels_layout.css.scss
rename to app/assets/stylesheets/components/panels_layout.scss
diff --git a/app/assets/stylesheets/components/parsley.css.scss b/app/assets/stylesheets/components/parsley.scss
similarity index 100%
rename from app/assets/stylesheets/components/parsley.css.scss
rename to app/assets/stylesheets/components/parsley.scss
diff --git a/app/assets/stylesheets/components/pastel_boxes.css.scss b/app/assets/stylesheets/components/pastel_boxes.css.scss
deleted file mode 100644
index d8e072d14..000000000
--- a/app/assets/stylesheets/components/pastel_boxes.css.scss
+++ /dev/null
@@ -1,59 +0,0 @@
-/* License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later */
-@import 'mixins';
-
-@mixin pastelBox {
- border: 1px solid rgba(black, 0.03);
- header {
- text-align: center;
- background: rgba(black, 0.04);
- font-size: 20px;
- font-weight: bold;
- padding: 10px 15px;
- }
- header i {
- font-size: 18px;
- margin-right: 5px;
- @include opacity(0.7);
- }
- footer {
- padding: 10px 15px;
- text-align: center;
- border-top: 1px solid rgba(black, 0.03);
- background: rgba(black, 0.01);
- }
-}
-.pastelBox-body {
- padding: 15px;
-}
-.pastelBox--green {
- @include pastelBox;
- background: rgb(242, 249, 241);
-} // used for donation related
-.pastelBox--orange {
- @include pastelBox;
- background: rgb(255, 247, 243);
-} // used for donor related
-.pastelBox--blue {
- @include pastelBox;
- background: rgb(241, 252, 252);
-} // used for recurring related
-.pastelBox--white{
- @include pastelBox;
- background: rgba(white, 0.9);
-}
-.pastelBox--grey--dark{
- @include pastelBox;
- background: darken($fog, 2);
-}
-.pastelBox--grey{
- @include pastelBox;
- background: $fog;
-}
-.pastelBox--yellow {
- @include pastelBox;
- background: rgb(254, 251, 233);
-} // used for events and campaigns related
-.pastelBox--looseleaf {
- @include pastelBox;
- background: $looseleaf;
-}
diff --git a/app/assets/stylesheets/components/pastel_boxes.scss b/app/assets/stylesheets/components/pastel_boxes.scss
new file mode 100644
index 000000000..c604a0166
--- /dev/null
+++ b/app/assets/stylesheets/components/pastel_boxes.scss
@@ -0,0 +1,63 @@
+/* License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later */
+@import 'mixins';
+
+@mixin pastelBox {
+ border: 1px solid rgba(black, 0.03);
+ header {
+ text-align: center;
+ background: rgba(black, 0.04);
+ font-size: 20px;
+ font-weight: bold;
+ padding: 10px 15px;
+ }
+ header i {
+ font-size: 18px;
+ margin-right: 5px;
+ @include opacity(0.7);
+ }
+ footer {
+ padding: 10px 15px;
+ text-align: center;
+ border-top: 1px solid rgba(black, 0.03);
+ background: rgba(black, 0.01);
+ }
+}
+.pastelBox-body {
+ padding: 15px;
+}
+.pastelBox--green {
+ @include pastelBox;
+ background: rgb(242, 249, 241);
+} // used for donation related
+.pastelBox--orange {
+ @include pastelBox;
+ background: #FFF7F3;
+} // used for donor related
+.pastelBox--blue {
+ @include pastelBox;
+ background: rgb(241, 252, 252);
+} // used for recurring related
+.pastelBox--white{
+ @include pastelBox;
+ background: rgba(white, 0.9);
+}
+.pastelBox--grey--dark{
+ @include pastelBox;
+ background: darken($fog, 2);
+}
+.pastelBox--grey{
+ @include pastelBox;
+ background: $fog;
+}
+.pastelBox--yellow {
+ @include pastelBox;
+ background: rgb(254, 251, 233);
+} // used for events and campaigns related
+.pastelBox--looseleaf {
+ @include pastelBox;
+ background: $looseleaf;
+}
+.pastelBox--red {
+ @include pastelBox;
+ background: #FFE0E0
+}
diff --git a/app/assets/stylesheets/components/press_row.css.scss b/app/assets/stylesheets/components/press_row.css.scss
deleted file mode 100644
index 2ec9410d3..000000000
--- a/app/assets/stylesheets/components/press_row.css.scss
+++ /dev/null
@@ -1,13 +0,0 @@
-/* License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later */
-.press-row {
- background: rgb(230,230,230);
- padding: 20px 0;
-}
-
-.press-image {
- float: left;
- width: 20%;
- padding: 0 3%;
- @include opacity(0.3);
-}
-
diff --git a/app/assets/stylesheets/components/progress_bar.css.scss b/app/assets/stylesheets/components/progress_bar.css.scss
deleted file mode 100644
index 41f618fff..000000000
--- a/app/assets/stylesheets/components/progress_bar.css.scss
+++ /dev/null
@@ -1,150 +0,0 @@
-/* License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later */
-@import 'mixins';
-
-@mixin progressBar {
- width: 100%;
- overflow: hidden;
- background-color: white;
- position: relative;
- @include box-shadow(0 0 1px 0 rgba($grey, 0.5));
- .goalAmount,
- .totalRaised {
- position: absolute;
- line-height: 1;
- color: rgba(black, 0.7);
- }
- .dollar {
- color: rgba(black, 0.6);
- }
-}
-@mixin progressBar-fill($height) {
- width: 0%;
- height: $height;
- @include transition(width 1s ease-out);
- max-width: 100%;
- background-color: rgba($bluegrass, 0.5);
-} // the height of the fill dictates the height of the progressBar
-
-
-// progressBar--large is used on campaigns
-.progressBar--large {
- @include border-radius(20px);
- @include progressBar;
- border: 3px white solid;
-}
-.progressBar--large-fill {
- @include progressBar-fill(26px); // passing in the height
- @include border-radius(20px 0 0 20px);
-}
-.progressBar--large .goalAmount {
- font-size: 20px;
- right: 9px;
- top: 4px;
-}
-.progressBar--large .goalAmount .dollar {
- font-size: 14px;
- margin-right: -4px;
- line-height: 1.2;
-}
-
-.progressBar {
- @include progressBar
-}
-
-// progressBar--medium is used on dasboard and todo list
-.progressBar--medium {
- @include border-radius(10px);
- @include progressBar;
- font-size: 14px;
- border: 2px white solid;
-}
-.progressBar--medium .dollar {
- font-size: 11px;
- margin-right: -3.5px;
- line-height: 1.1;
-}
-.progressBar--medium .goalAmount,
-.progressBar--medium .totalRaised {
- top: 1.5px;
-}
-.progressBar--medium .goalAmount {
- right: 7px;
-}
-.progressBar--medium .totalRaised {
- left: 7px;
-}
-.progressBar--medium-fill {
- @include progressBar-fill(18px); // passing in the height
- @include border-radius(10px 0 0 10px);
-}
-
-
-// progressBar--small is used on campaign cards
-.progressBar--small {
- @include border-radius(8px);
- @include progressBar;
-}
-.progressBar--small-fill {
- @include progressBar-fill(10px); // passing in the height
- @include border-radius(6px 0 0 6px);
-}
-
-
-// progressBar--app lives in the footer and indicates a loading state
-// called like this: appl.def('loading', true)
-.progressBar--app {
- @include progressBar;
- padding: 0;
- position: fixed;
- bottom: 0;
- left: 0;
-}
-.progressBar--app .progressBar-fill--striped {
- height: 15px;
- width: 100%;
-}
-// these keyframes animate the diagonal stripes
-@-webkit-keyframes progress-bar-stripes{
- from{background-position:40px 0}
- to{background-position:0 0}
-}
-@-moz-keyframes progress-bar-stripes{
- from{background-position:40px 0}
- to{background-position:0 0}
-}
-@-ms-keyframes progress-bar-stripes{
- from{background-position:40px 0}
- to{background-position:0 0}
-}
-@-o-keyframes progress-bar-stripes{
- from{background-position:0 0}
- to{background-position:40px 0}
-}
-@keyframes progress-bar-stripes{
- from{background-position:40px 0}
- to{background-position:0 0}
-}
-.progressBar-fill--striped {
- width: 0%;
- height: 15px;
- -webkit-animation: progress-bar-stripes 2s linear infinite;
- -moz-animation: progress-bar-stripes 2s linear infinite;
- -ms-animation: progress-bar-stripes 2s linear infinite;
- -o-animation: progress-bar-stripes 2s linear infinite;
- animation: progress-bar-stripes 2s linear infinite;
- background-color: $bluegrass;
- background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(white,0.3)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(white,0.3)), color-stop(0.75, rgba(white,0.3)), color-stop(0.75, transparent), to(transparent));
- background-image: -webkit-linear-gradient(45deg, rgba(white,0.3) 25%, transparent 25%, transparent 50%, rgba(white,0.3) 50%, rgba(white,0.3) 75%, transparent 75%, transparent);
- background-image: -moz-linear-gradient(45deg, rgba(white,0.3) 25%, transparent 25%, transparent 50%, rgba(white,0.3) 50%, rgba(white,0.3) 75%, transparent 75%, transparent);
- background-image: -o-linear-gradient(45deg, rgba(white,0.3) 25%, transparent 25%, transparent 50%, rgba(white,0.3) 50%, rgba(white,0.3) 75%, transparent 75%, transparent);
- background-image: linear-gradient(45deg, rgba(white,0.3) 25%, transparent 25%, transparent 50%, rgba(white,0.3) 50%, rgba(white,0.3) 75%, transparent 75%, transparent);
- -webkit-background-size: 40px 40px;
- -moz-background-size: 40px 40px;
- -o-background-size: 40px 40px;
- background-size: 40px 40px;
- background-repeat: repeat-x;
- -webkit-transition: width 5s ease;
- -moz-transition: width 5s ease;
- -o-transition: width 5s ease;
- transition: width 5s ease;
-}
diff --git a/app/assets/stylesheets/components/progress_bar.scss b/app/assets/stylesheets/components/progress_bar.scss
new file mode 100644
index 000000000..f379f52bf
--- /dev/null
+++ b/app/assets/stylesheets/components/progress_bar.scss
@@ -0,0 +1,134 @@
+/* License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later */
+@import 'mixins';
+
+@mixin progressBar {
+ width: 100%;
+ overflow: hidden;
+ background-color: white;
+ position: relative;
+ @include box-shadow(0 0 1px 0 rgba($grey, 0.5));
+ .goalAmount,
+ .totalRaised {
+ position: absolute;
+ line-height: 1;
+ color: rgba(black, 0.7);
+ }
+ .dollar {
+ color: rgba(black, 0.6);
+ }
+}
+@mixin progressBar-fill($height) {
+ width: 0%;
+ height: $height;
+ @include transition(width 1s ease-out);
+ max-width: 100%;
+ background-color: rgba($bluegrass, 0.5);
+} // the height of the fill dictates the height of the progressBar
+
+
+// progressBar--large is used on campaigns
+.progressBar--large {
+ @include border-radius(20px);
+ @include progressBar;
+ border: 3px white solid;
+}
+.progressBar--large-fill {
+ @include progressBar-fill(26px); // passing in the height
+ @include border-radius(20px 0 0 20px);
+}
+.progressBar--large .goalAmount {
+ font-size: 20px;
+ right: 9px;
+ top: 4px;
+}
+.progressBar--large .goalAmount .dollar {
+ font-size: 14px;
+ margin-right: -4px;
+ line-height: 1.2;
+}
+
+.progressBar {
+ @include progressBar
+}
+
+// progressBar--medium is used on dasboard and todo list
+.progressBar--medium {
+ @include border-radius(10px);
+ @include progressBar;
+ font-size: 14px;
+ border: 2px white solid;
+}
+.progressBar--medium .dollar {
+ font-size: 11px;
+ margin-right: -3.5px;
+ line-height: 1.1;
+}
+.progressBar--medium .goalAmount,
+.progressBar--medium .totalRaised {
+ top: 1.5px;
+}
+.progressBar--medium .goalAmount {
+ right: 7px;
+}
+.progressBar--medium .totalRaised {
+ left: 7px;
+}
+.progressBar--medium-fill {
+ @include progressBar-fill(18px); // passing in the height
+ @include border-radius(10px 0 0 10px);
+}
+
+
+// progressBar--small is used on campaign cards
+.progressBar--small {
+ @include border-radius(8px);
+ @include progressBar;
+}
+.progressBar--small-fill {
+ @include progressBar-fill(10px); // passing in the height
+ @include border-radius(6px 0 0 6px);
+}
+
+
+// progressBar--app lives in the footer and indicates a loading state
+// called like this: appl.def('loading', true)
+.progressBar--app {
+ @include progressBar;
+ padding: 0;
+ position: fixed;
+ bottom: 0;
+ left: 0;
+}
+.progressBar--app .progressBar-fill--striped {
+ height: 15px;
+ width: 100%;
+}
+// these keyframes animate the diagonal stripes
+@keyframes progress-bar-stripes{
+ from{background-position:40px 0}
+ to{background-position:0 0}
+}
+.progressBar-fill--striped {
+ width: 0%;
+ height: 15px;
+ -webkit-animation: progress-bar-stripes 2s linear infinite;
+ -moz-animation: progress-bar-stripes 2s linear infinite;
+ -ms-animation: progress-bar-stripes 2s linear infinite;
+ -o-animation: progress-bar-stripes 2s linear infinite;
+ animation: progress-bar-stripes 2s linear infinite;
+ background-color: $bluegrass;
+ background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(white,0.3)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(white,0.3)), color-stop(0.75, rgba(white,0.3)), color-stop(0.75, transparent), to(transparent));
+ background-image: -webkit-linear-gradient(45deg, rgba(white,0.3) 25%, transparent 25%, transparent 50%, rgba(white,0.3) 50%, rgba(white,0.3) 75%, transparent 75%, transparent);
+ background-image: -moz-linear-gradient(45deg, rgba(white,0.3) 25%, transparent 25%, transparent 50%, rgba(white,0.3) 50%, rgba(white,0.3) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(white,0.3) 25%, transparent 25%, transparent 50%, rgba(white,0.3) 50%, rgba(white,0.3) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(white,0.3) 25%, transparent 25%, transparent 50%, rgba(white,0.3) 50%, rgba(white,0.3) 75%, transparent 75%, transparent);
+ -webkit-background-size: 40px 40px;
+ -moz-background-size: 40px 40px;
+ -o-background-size: 40px 40px;
+ background-size: 40px 40px;
+ background-repeat: repeat-x;
+ -webkit-transition: width 5s ease;
+ -moz-transition: width 5s ease;
+ -o-transition: width 5s ease;
+ transition: width 5s ease;
+}
diff --git a/app/assets/stylesheets/components/q_and_a.css.scss b/app/assets/stylesheets/components/q_and_a.scss
similarity index 100%
rename from app/assets/stylesheets/components/q_and_a.css.scss
rename to app/assets/stylesheets/components/q_and_a.scss
diff --git a/app/assets/stylesheets/components/side_nav.css.scss b/app/assets/stylesheets/components/side_nav.css.scss
deleted file mode 100644
index 6ce4d1c6f..000000000
--- a/app/assets/stylesheets/components/side_nav.css.scss
+++ /dev/null
@@ -1,160 +0,0 @@
-/* License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later */
-@import 'mixins';
-@import 'components/side_nav_dimensions';
-
-$sideNav-spacing: 8px 15px;
-
-
-.sideNav {
- background: $charcoal;
- height: 100%;
- left: 0;
- top: 0;
- position: fixed;
- @include box-shadow(0 0 10px 0 rgba(black, 0.5));
- overflow-x: hidden;
- width: $sideNav-closed-width;
- @include transition(width 0.2s ease-out);
-}
-.sideNav * {
- @include no-select;
-}
-.sideNav-commitchangeLogo {
- white-space: nowrap;
- padding: 9px 14px;
- display: block;
- @include logo(18px, white, true, true);
- @include opacity(1);
- @include transition(opacity 0.2s ease-out);
-}
-.sideNav-commitchangeLogo img {
- max-width: none;
-}
-.sideNav-commitchangeLogo:hover {
- @include opacity(0.8);
-}
-.sideNav-commitchangeLogo .commitchangeLogo-text {
- margin-left: 15px;
-}
-.sideNav-section {
- padding: 6px 0;
- border-bottom: 1px solid rgba(white, 0.15);
-}
-.sideNav-link {
- position: relative;
- color: white;
- font-weight: bold;
- cursor: pointer;
- display: table;
- table-layout: fixed;
- @include transform(translateZ(0));
- @include transition(color 0.2s ease-out);
-}
-.sideNav-link:hover {
- color: $logo-blue;
-}
-.sideNav-icon {
- display: table-cell;
- text-align: center;
- font-size: 26px;
- padding: $sideNav-spacing;
-}
-.sideNav-text {
- @include ellipsis;
- max-width: 165px;
- font-size: 16px;
- position: absolute;
- top: 12px;
- left: 62px;
- height: 100%;
- @include transform(translateZ(0));
- @include opacity(0);
- @include transition(opacity 0.2s ease-out);
-}
-.sideNav-profile {
- width: 27px;
- @include border-radius(50%);
- margin: $sideNav-spacing;
- display: table-cell;
-}
-.sideNav-scrim {
- @include transition(opacity 0.2s ease-out);
- @include opacity(0);
- visibility: hidden;
- top: 0;
- left: 0;
- width: 100%;
- height: 100%;
- position: fixed;
- background-color: rgba(black, 0.6);
-}
-.sideNav-scrim.is-showing {
- visibility: visible;
- @include opacity(1);
-}
-.sideNav-toggle {
- @include transition(all 0.2s ease-out);
- position: fixed;
- display: none;
- top: 0;
- left: 0;
- width: 36px;
- height: 36px;
- background: rgba(black, 0.6);
- @include box-shadow(0 0 5px 0 rgba(black, 0.2));
- font-size: 20px;
- color: white;
- cursor: pointer;
-}
-.sideNav-toggle i {
- @include no-select;
- display: table-cell;
- vertical-align: middle;
- text-align: center;
-}
-.sideNav-toggle .fa-times {
- display: none;
-}
-.sideNav-toggle.is-togglingOpen{
- background: $trans;
- @include box-shadow(none);
- .fa-times {
- display: table-cell;
- }
- .fa-bars {
- display: none;
- }
-}
-@mixin open_side_nav {
- width: $sideNav-opened-width;
- .sideNav-text {
- @include opacity(1);
- }
-}
-@mixin close_side_nav {
- width: 0;
- padding-top: 34px;
-}
-.sideNav.is-open,
-.sideNav.is-hamburgerStyle.is-open {
- @include open_side_nav;
-}
-.sideNav.is-hamburgerStyle {
- @include close_side_nav;
-}
-.sideNav-toggle.is-hamburgerStyle {
- display: table;
-}
-@media screen and (min-width: 701px) {
- .sideNav:hover {
- @include open_side_nav;
- }
-}
-@media screen and (max-width: 700px) {
- .sideNav {
- @include close_side_nav;
- }
- .sideNav-toggle {
- display: table;
- }
-}
diff --git a/app/assets/stylesheets/components/side_nav.scss b/app/assets/stylesheets/components/side_nav.scss
new file mode 100644
index 000000000..afbd3c1ff
--- /dev/null
+++ b/app/assets/stylesheets/components/side_nav.scss
@@ -0,0 +1,159 @@
+/* License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later */
+@import 'mixins';
+@import 'components/side_nav_dimensions';
+
+$sideNav-spacing: 8px 15px;
+
+
+.sideNav {
+ background: $charcoal;
+ height: 100%;
+ left: 0;
+ top: 0;
+ position: fixed;
+ @include box-shadow(0 0 10px 0 rgba(black, 0.5));
+ overflow-x: hidden;
+ width: $sideNav-closed-width;
+ @include transition(width 0.2s ease-out);
+}
+.sideNav * {
+ @include no-select;
+}
+.sideNav-commitchangeLogo {
+ white-space: nowrap;
+ padding: 9px 14px;
+ display: block;
+ @include logo(18px, white, true, true);
+ @include opacity(1);
+ @include transition(opacity 0.2s ease-out);
+}
+.sideNav-commitchangeLogo img {
+ max-width: none;
+}
+.sideNav-commitchangeLogo:hover {
+ @include opacity(0.8);
+}
+.sideNav-commitchangeLogo .commitchangeLogo-text {
+ margin-left: 15px;
+}
+.sideNav-section {
+ padding: 6px 0;
+ border-bottom: 1px solid rgba(white, 0.15);
+}
+.sideNav-link {
+ position: relative;
+ color: white;
+ font-weight: bold;
+ cursor: pointer;
+ display: block;
+ @include transform(translateZ(0));
+ @include transition(color 0.2s ease-out);
+}
+.sideNav-link:hover {
+ color: $logo-blue;
+}
+.sideNav-icon {
+ display: table-cell;
+ text-align: center;
+ font-size: 26px;
+ padding: $sideNav-spacing;
+}
+.sideNav-text {
+ @include ellipsis;
+ max-width: 165px;
+ font-size: 16px;
+ position: absolute;
+ top: 12px;
+ left: 62px;
+ height: 100%;
+ @include transform(translateZ(0));
+ @include opacity(0);
+ @include transition(opacity 0.2s ease-out);
+}
+.sideNav-profile {
+ width: 27px;
+ @include border-radius(50%);
+ margin: $sideNav-spacing;
+ display: table-cell;
+}
+.sideNav-scrim {
+ @include transition(opacity 0.2s ease-out);
+ @include opacity(0);
+ visibility: hidden;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ position: fixed;
+ background-color: rgba(black, 0.6);
+}
+.sideNav-scrim.is-showing {
+ visibility: visible;
+ @include opacity(1);
+}
+.sideNav-toggle {
+ @include transition(all 0.2s ease-out);
+ position: fixed;
+ display: none;
+ top: 0;
+ left: 0;
+ width: 36px;
+ height: 36px;
+ background: rgba(black, 0.6);
+ @include box-shadow(0 0 5px 0 rgba(black, 0.2));
+ font-size: 20px;
+ color: white;
+ cursor: pointer;
+}
+.sideNav-toggle i {
+ @include no-select;
+ display: table-cell;
+ vertical-align: middle;
+ text-align: center;
+}
+.sideNav-toggle .fa-times {
+ display: none;
+}
+.sideNav-toggle.is-togglingOpen{
+ background: $trans;
+ @include box-shadow(none);
+ .fa-times {
+ display: table-cell;
+ }
+ .fa-bars {
+ display: none;
+ }
+}
+@mixin open_side_nav {
+ width: $sideNav-opened-width;
+ .sideNav-text {
+ @include opacity(1);
+ }
+}
+@mixin close_side_nav {
+ width: 0;
+ padding-top: 34px;
+}
+.sideNav.is-open,
+.sideNav.is-hamburgerStyle.is-open {
+ @include open_side_nav;
+}
+.sideNav.is-hamburgerStyle {
+ @include close_side_nav;
+}
+.sideNav-toggle.is-hamburgerStyle {
+ display: table;
+}
+@media screen and (min-width: 701px) {
+ .sideNav:hover {
+ @include open_side_nav;
+ }
+}
+@media screen and (max-width: 700px) {
+ .sideNav {
+ @include close_side_nav;
+ }
+ .sideNav-toggle {
+ display: table;
+ }
+}
diff --git a/app/assets/stylesheets/components/side_nav_dimensions.css.scss b/app/assets/stylesheets/components/side_nav_dimensions.scss
similarity index 100%
rename from app/assets/stylesheets/components/side_nav_dimensions.css.scss
rename to app/assets/stylesheets/components/side_nav_dimensions.scss
diff --git a/app/assets/stylesheets/components/simple_tabs.css.scss b/app/assets/stylesheets/components/simple_tabs.scss
similarity index 100%
rename from app/assets/stylesheets/components/simple_tabs.css.scss
rename to app/assets/stylesheets/components/simple_tabs.scss
diff --git a/app/assets/stylesheets/components/steps_menu.css.scss b/app/assets/stylesheets/components/steps_menu.scss
similarity index 100%
rename from app/assets/stylesheets/components/steps_menu.css.scss
rename to app/assets/stylesheets/components/steps_menu.scss
diff --git a/app/assets/stylesheets/components/tables.css.scss b/app/assets/stylesheets/components/tables.scss
similarity index 100%
rename from app/assets/stylesheets/components/tables.css.scss
rename to app/assets/stylesheets/components/tables.scss
diff --git a/app/assets/stylesheets/components/tables/filtering/meta_status.css.scss b/app/assets/stylesheets/components/tables/filtering/meta_status.scss
similarity index 100%
rename from app/assets/stylesheets/components/tables/filtering/meta_status.css.scss
rename to app/assets/stylesheets/components/tables/filtering/meta_status.scss
diff --git a/app/assets/stylesheets/components/tags.css.scss b/app/assets/stylesheets/components/tags.scss
similarity index 100%
rename from app/assets/stylesheets/components/tags.css.scss
rename to app/assets/stylesheets/components/tags.scss
diff --git a/app/assets/stylesheets/components/team_card.css.scss b/app/assets/stylesheets/components/team_card.scss
similarity index 100%
rename from app/assets/stylesheets/components/team_card.css.scss
rename to app/assets/stylesheets/components/team_card.scss
diff --git a/app/assets/stylesheets/components/ticket_button.css.scss b/app/assets/stylesheets/components/ticket_button.css.scss
deleted file mode 100644
index ce003003e..000000000
--- a/app/assets/stylesheets/components/ticket_button.css.scss
+++ /dev/null
@@ -1,83 +0,0 @@
-/* License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later */
-@import 'mixins';
-
-.getTickets {
- width: 100%;
- display: inline-block;
- position: relative;
- text-align: center;
- cursor: pointer;
-}
-.not-branded .getTickets {
- @include transition(background-color 0.2s ease-out);
- @include setBackgroundAndHover($bluegrass);
-}
-
-.is-branded .getTickets {
- @include opacity(0.7);
- @include transition(opacity, 0.1s, ease-out);
- &:hover {
- @include opacity(0.9);
- }
-}
-
-// Ticket perforations at top and bottom
-.getTickets:before,
-.getTickets:after {
- content: '';
- position: absolute;
- background-size: contain;
- height: 100%;
- width: 4px;
- top: 0;
-}
-.getTickets:before {
- background-image: url(/assets/graphics/half-circle-right.svg);
- left: 0;
-}
-.getTickets:after {
- background-image: url(/assets/graphics/half-circle-left.svg);
- right: 0;
-}
-.getTickets-text {
- display: inline-block;
- text-align: center;
- font-size: 26px;
- color: white;
- @include open-sans;
- font-weight: bold;
- padding: 5px 0;
- margin: 0;
- line-height: 1;
-}
-.getTickets .doubleLines {
- display: inline-block;
- margin: 16px 0;
-}
-
-.getTickets .doubleLines:before,
-.getTickets .doubleLines:after {
- width: 80%;
- left: 10%;
-}
-
-.not-branded .getTickets .doubleLines:before,
-.not-branded .getTickets .doubleLines:after {
- background: rgba(darken($bluegrass, 30%), 0.4);
-}
-
-.is-branded .getTickets .doubleLines:before,
-.is-branded .getTickets .doubleLines:after {
- background: rgba(black, 0.15);
-}
-
-
-.cornerHoles--top {
- position: relative;
- display: block;
- @include cornerHoles--top(1em, white);
-}
-.cornerHoles--bottom {
- display: block;
- @include cornerHoles--bottom(1em, white);
-}
\ No newline at end of file
diff --git a/app/assets/stylesheets/components/ticket_button.scss.erb b/app/assets/stylesheets/components/ticket_button.scss.erb
new file mode 100644
index 000000000..88f780320
--- /dev/null
+++ b/app/assets/stylesheets/components/ticket_button.scss.erb
@@ -0,0 +1,83 @@
+/* License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later */
+@import 'mixins';
+
+.getTickets {
+ width: 100%;
+ display: inline-block;
+ position: relative;
+ text-align: center;
+ cursor: pointer;
+}
+.not-branded .getTickets {
+ @include transition(background-color 0.2s ease-out);
+ @include setBackgroundAndHover($bluegrass);
+}
+
+.is-branded .getTickets {
+ @include opacity(0.7);
+ @include transition(opacity, 0.1s, ease-out);
+ &:hover {
+ @include opacity(0.9);
+ }
+}
+
+// Ticket perforations at top and bottom
+.getTickets:before,
+.getTickets:after {
+ content: '';
+ position: absolute;
+ background-size: contain;
+ height: 100%;
+ width: 4px;
+ top: 0;
+}
+.getTickets:before {
+ background-image: url('<%= asset_path 'graphics/half-circle-right.svg' %>');
+ left: 0;
+}
+.getTickets:after {
+ background-image: url('<%= asset_path 'graphics/half-circle-left.svg' %>');
+ right: 0;
+}
+.getTickets-text {
+ display: inline-block;
+ text-align: center;
+ font-size: 26px;
+ color: white;
+ @include open-sans;
+ font-weight: bold;
+ padding: 5px 0;
+ margin: 0;
+ line-height: 1;
+}
+.getTickets .doubleLines {
+ display: inline-block;
+ margin: 16px 0;
+}
+
+.getTickets .doubleLines:before,
+.getTickets .doubleLines:after {
+ width: 80%;
+ left: 10%;
+}
+
+.not-branded .getTickets .doubleLines:before,
+.not-branded .getTickets .doubleLines:after {
+ background: rgba(darken($bluegrass, 30%), 0.4);
+}
+
+.is-branded .getTickets .doubleLines:before,
+.is-branded .getTickets .doubleLines:after {
+ background: rgba(black, 0.15);
+}
+
+
+.cornerHoles--top {
+ position: relative;
+ display: block;
+ @include cornerHoles--top(1em, white);
+}
+.cornerHoles--bottom {
+ display: block;
+ @include cornerHoles--bottom(1em, white);
+}
\ No newline at end of file
diff --git a/app/assets/stylesheets/components/timeline.css.scss b/app/assets/stylesheets/components/timeline.scss
similarity index 100%
rename from app/assets/stylesheets/components/timeline.css.scss
rename to app/assets/stylesheets/components/timeline.scss
diff --git a/app/assets/stylesheets/components/todos.css.scss b/app/assets/stylesheets/components/todos.scss
similarity index 100%
rename from app/assets/stylesheets/components/todos.css.scss
rename to app/assets/stylesheets/components/todos.scss
diff --git a/app/assets/stylesheets/components/toggle_buttons.css.scss b/app/assets/stylesheets/components/toggle_buttons.scss
similarity index 100%
rename from app/assets/stylesheets/components/toggle_buttons.css.scss
rename to app/assets/stylesheets/components/toggle_buttons.scss
diff --git a/app/assets/stylesheets/components/toggle_q_a.css.scss b/app/assets/stylesheets/components/toggle_q_a.scss
similarity index 100%
rename from app/assets/stylesheets/components/toggle_q_a.css.scss
rename to app/assets/stylesheets/components/toggle_q_a.scss
diff --git a/app/assets/stylesheets/components/tooltips.css.scss b/app/assets/stylesheets/components/tooltips.scss
similarity index 100%
rename from app/assets/stylesheets/components/tooltips.css.scss
rename to app/assets/stylesheets/components/tooltips.scss
diff --git a/app/assets/stylesheets/components/top_nav.css.scss b/app/assets/stylesheets/components/top_nav.css.scss
deleted file mode 100644
index a687283c4..000000000
--- a/app/assets/stylesheets/components/top_nav.css.scss
+++ /dev/null
@@ -1,37 +0,0 @@
-/* License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later */
-.topNav {
- background: rgba(0,0,0,0.04);
- text-align: left;
-}
-
-.topNav-logo { @include logo(18px, $charcoal--light, true, false); }
-
-.topNav .container {
- display: table;
- width: 100%;
-}
-
-.topNav-horizontalLinks,
-.topNav-logo {
- display: table-cell;
- vertical-align: middle;
-}
-
-.topNav-horizontalLinks { text-align: right; }
-
-.topNav-horizontalLinks *,
-.topNav-verticalLinks * {
- margin-left: 10px;
- font-weight: bold;
- font-size: 15px;
-}
-
-@media screen and (max-width: 480px) {
- .googleMap { display: none; }
-}
-
-@media screen and (max-width: 380px) {
- .commitchangeLogo-text { display: none !important; }
- .commitchangeLogo img { width: 32px !important; }
-}
-
diff --git a/app/assets/stylesheets/components/turquoise_header.css.scss b/app/assets/stylesheets/components/turquoise_header.scss
similarity index 100%
rename from app/assets/stylesheets/components/turquoise_header.css.scss
rename to app/assets/stylesheets/components/turquoise_header.scss
diff --git a/app/assets/stylesheets/components/type_ahead.css.scss b/app/assets/stylesheets/components/type_ahead.scss
similarity index 100%
rename from app/assets/stylesheets/components/type_ahead.css.scss
rename to app/assets/stylesheets/components/type_ahead.scss
diff --git a/app/assets/stylesheets/components/wizard_index.css.scss b/app/assets/stylesheets/components/wizard_index.scss
similarity index 100%
rename from app/assets/stylesheets/components/wizard_index.css.scss
rename to app/assets/stylesheets/components/wizard_index.scss
diff --git a/app/assets/stylesheets/coupons/page.css.scss b/app/assets/stylesheets/coupons/page.scss
similarity index 100%
rename from app/assets/stylesheets/coupons/page.css.scss
rename to app/assets/stylesheets/coupons/page.scss
diff --git a/app/assets/stylesheets/emails.css b/app/assets/stylesheets/emails.css
index c4f2e47eb..8a54e0228 100644
--- a/app/assets/stylesheets/emails.css
+++ b/app/assets/stylesheets/emails.css
@@ -1,6 +1,5 @@
/* License: LGPL-3.0-or-later */
-body,
-.emailWrapper {
+body {
margin: 0;
padding: 0;
background: white;
@@ -8,10 +7,6 @@ body,
line-height: 1.6;
color: #30373D;
}
-.emailWrapper {
- height: 100% !important;
- width: 100% !important;
-}
img{
width: auto !important;
max-width:100%;
diff --git a/app/assets/stylesheets/emails/page.css b/app/assets/stylesheets/emails/page.css
new file mode 100644
index 000000000..37894c546
--- /dev/null
+++ b/app/assets/stylesheets/emails/page.css
@@ -0,0 +1,5 @@
+/* License: LGPL-3.0-or-later */
+/*
+ *= require ../emails
+ *= require ../common/vendor/froala_editor
+ */
\ No newline at end of file
diff --git a/app/assets/stylesheets/events/index/page.css.scss b/app/assets/stylesheets/events/index/page.scss
similarity index 100%
rename from app/assets/stylesheets/events/index/page.css.scss
rename to app/assets/stylesheets/events/index/page.scss
diff --git a/app/assets/stylesheets/events/listing.css.scss b/app/assets/stylesheets/events/listing.scss
similarity index 100%
rename from app/assets/stylesheets/events/listing.css.scss
rename to app/assets/stylesheets/events/listing.scss
diff --git a/app/assets/stylesheets/events/new/index.css.scss b/app/assets/stylesheets/events/new/index.scss
similarity index 100%
rename from app/assets/stylesheets/events/new/index.css.scss
rename to app/assets/stylesheets/events/new/index.scss
diff --git a/app/assets/stylesheets/events/show/claim_ticket.css.scss b/app/assets/stylesheets/events/show/claim_ticket.scss
similarity index 100%
rename from app/assets/stylesheets/events/show/claim_ticket.css.scss
rename to app/assets/stylesheets/events/show/claim_ticket.scss
diff --git a/app/assets/stylesheets/events/show/page.css.scss b/app/assets/stylesheets/events/show/page.scss
similarity index 100%
rename from app/assets/stylesheets/events/show/page.css.scss
rename to app/assets/stylesheets/events/show/page.scss
diff --git a/app/assets/stylesheets/events/show/settings.css.scss b/app/assets/stylesheets/events/show/settings.scss
similarity index 100%
rename from app/assets/stylesheets/events/show/settings.css.scss
rename to app/assets/stylesheets/events/show/settings.scss
diff --git a/app/assets/stylesheets/events/stats/page.css.scss b/app/assets/stylesheets/events/stats/page.scss
similarity index 100%
rename from app/assets/stylesheets/events/stats/page.css.scss
rename to app/assets/stylesheets/events/stats/page.scss
diff --git a/app/assets/stylesheets/explore/page.css.scss b/app/assets/stylesheets/explore/page.scss
similarity index 100%
rename from app/assets/stylesheets/explore/page.css.scss
rename to app/assets/stylesheets/explore/page.scss
diff --git a/app/assets/stylesheets/global.css.scss b/app/assets/stylesheets/global.css.scss
deleted file mode 100644
index e89aee507..000000000
--- a/app/assets/stylesheets/global.css.scss
+++ /dev/null
@@ -1,47 +0,0 @@
-/* License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later */
-@import 'mixins';
-@import 'resets';
-@import 'common/typography/base';
-@import 'common/typography/special';
-
-@import 'components/container';
-@import 'body';
-@import 'components/buttons';
-
-@import 'common/images';
-
-@import 'components/headers';
-@import 'components/side_nav';
-
-@import 'components/footer';
-@import 'common/layouts';
-@import 'common/page';
-@import 'common/utils';
-@import 'common/states';
-@import 'common/icons';
-
-@import 'components/announcement_bar';
-@import 'components/notification_alerts';
-@import 'components/forms';
-@import 'components/modals';
-@import 'components/inputs';
-@import 'components/wizard_index';
-@import 'components/decorative';
-@import 'components/progress_bar';
-@import 'components/better_browser';
-@import 'components/parsley';
-@import 'components/tables';
-@import 'components/arrows';
-@import 'components/cards';
-@import 'components/pastel_boxes';
-@import 'components/full_screen_loading';
-@import 'components/loading';
-@import 'components/tooltips';
-@import 'components/top_nav';
-
-@import 'common/media_queries';
-@import 'common/z_indices';
-@import 'common/ios_hack';
-@import 'common/minimal';
-
-@import 'common/focusable'
\ No newline at end of file
diff --git a/app/assets/stylesheets/global.scss b/app/assets/stylesheets/global.scss
new file mode 100644
index 000000000..7460dffd6
--- /dev/null
+++ b/app/assets/stylesheets/global.scss
@@ -0,0 +1,53 @@
+/* License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later */
+@import 'mixins';
+@import 'resets';
+@import 'common/typography/base';
+@import 'common/typography/special';
+
+@import 'components/container';
+@import 'body';
+@import 'components/buttons';
+
+@import 'common/images';
+
+@import 'components/headers';
+@import 'components/side_nav';
+
+@import 'components/footer';
+@import 'common/layouts';
+@import 'common/page';
+@import 'common/utils';
+@import 'common/states';
+@import 'common/icons';
+
+@import 'components/announcement_bar';
+@import 'components/notification_alerts';
+@import 'components/forms';
+@import 'components/modals';
+@import 'components/inputs';
+@import 'components/wizard_index';
+@import 'components/decorative';
+@import 'components/progress_bar';
+@import 'components/better_browser';
+@import 'components/parsley';
+@import 'components/tables';
+@import 'components/arrows';
+@import 'components/cards';
+@import 'components/pastel_boxes';
+@import 'components/full_screen_loading';
+@import 'components/loading';
+@import 'components/tooltips';
+
+@import 'common/media_queries';
+@import 'common/z_indices';
+@import 'common/minimal';
+
+@import 'common/focusable';
+
+.checkbox-feeCoverage-label {
+ display:flex !important;
+ align-items: center;
+ justify-content: center;
+}
+
+.grecaptcha-badge { visibility: hidden; }
\ No newline at end of file
diff --git a/app/assets/stylesheets/mixins.css.scss b/app/assets/stylesheets/mixins.scss
similarity index 100%
rename from app/assets/stylesheets/mixins.css.scss
rename to app/assets/stylesheets/mixins.scss
diff --git a/app/assets/stylesheets/nonprofits/btn/page.css.scss b/app/assets/stylesheets/nonprofits/btn/common.scss
similarity index 100%
rename from app/assets/stylesheets/nonprofits/btn/page.css.scss
rename to app/assets/stylesheets/nonprofits/btn/common.scss
diff --git a/app/assets/stylesheets/nonprofits/btn/page.scss.erb b/app/assets/stylesheets/nonprofits/btn/page.scss.erb
new file mode 100644
index 000000000..96461dcb7
--- /dev/null
+++ b/app/assets/stylesheets/nonprofits/btn/page.scss.erb
@@ -0,0 +1,22 @@
+/* License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later */
+@import 'nonprofits/btn/common';
+@import 'boot/google-webfonts';
+
+body {
+ @include open-sans;
+ font-size: 16px;
+ line-height: 1.2;
+ color: $charcoal;
+ margin: 0;
+ height: 100%;
+}
+
+
+body.embedded-layout {
+ background-color: #f8f8f8;
+ padding: 0;
+}
+
+.centered, .u-centered {
+ text-align: center !important;
+}
diff --git a/app/assets/stylesheets/nonprofits/button/page.css.scss b/app/assets/stylesheets/nonprofits/button/page.css.scss
deleted file mode 100644
index 841a2d12a..000000000
--- a/app/assets/stylesheets/nonprofits/button/page.css.scss
+++ /dev/null
@@ -1,144 +0,0 @@
-/* License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later */
-@import 'mixins';
-@import 'nonprofits/btn/page';
-@import 'components/page_tabs';
-@import 'components/steps_menu';
-@import 'components/help_box';
-@import 'components/animations';
-
-.stepsMenu {
- margin-top: 15px;
- @include columns(3.5);
-}
-.step {
- padding-left: 15px;
- @include columns-right(8.5);
-}
-.step label {
- width: 100%;
-}
-.step-header {
- padding: 5px;
- text-align: center;
-}
-.step-header * {
- @include open-sans;
- font-weight: bold;
-}
-.step-header-title {
- margin: 5px 0;
-}
-.step-inner {
- background: $fog;
- border: 1px solid rgba(black, 0.05);
- padding: 15px;
- overflow: auto;
-}
-.step-footer {
- padding: 15px 15px 0 15px;
- text-align: center;
-}
-.appearance label {
- text-align: center;
- cursor: pointer;
- display: block;
- padding: 15px;
-}
-.appearance img {
- max-height: 180px;
-}
-.appearance table {
- width: 100%;
-}
-.appearance td {
- width: 50%;
- vertical-align: middle;
-}
-.appearance td:nth-of-type(1){
- border-right: 1px dashed rgba(black, 0.08);
-}
-.appearance tr,
-.customText-wrapper,
-.step.type label,
-.step.amounts label,
-.step.designations label {
- border-bottom: 1px dashed rgba(black, 0.08);
-}
-.step.designations label,
-.step.amounts label {
- padding: 10px 0;
-}
-.customText-wrapper {
- margin-bottom: 10px;
-}
-.appearance input[type='text'] {
- margin: 10px 0 0 0;
- max-width: 300px;
-}
-.customText-text {
- display: block;
- font-size: 20px;
- min-height: 25px;
-}
-.step.type label {
- line-height: 30px;
- overflow: auto;
- cursor: pointer;
- position: relative;
-}
-.step.type img {
- vertical-align: middle;
- float: right;
- width: 25px;
- margin: 5px 5px 15px 5px;
-}
-.step.preview ul {
- margin: 10px 0 0 0;
-}
-.advanced section {
- padding: 20px;
-}
-.advanced section h3 {
- text-align: center;
- margin: 10px auto;
-}
-.advanced section h5 {
- line-height: 1;
- color: rgba($charcoal, 0.9);
- margin: 30px 0 10px 0;
-}
-.advanced textarea {
- margin: 0 0 20px 0;
-}
-.advanced .no-js {
- border: 5px $light-pollen solid;
- padding: 20px;
-}
-.advanced .yes-js {
- padding: 20px;
- margin-top: 40px;
- border: 5px $faded-sky solid;
-}
-
-@include keyframes(popUpToFade) {
- 8% { @include transform(translateY(3px)); }
- 12% {
- @include opacity(1);
- @include transform(translateY(5px));
- }
- 90% {
- @include opacity(1);
- }
- 100% {
- visibility: hidden;
- @include transform(translateY(5px));
- }
-}
-.helpBoxWrapper {
- @include transform(translateY(200px));
- @include opacity(0);
- position: fixed;
- bottom: 80px;
- right: 60px;
- @include animation('popUpToFade 10s ease-out 2.5s forwards');
-}
diff --git a/app/assets/stylesheets/nonprofits/button/page.scss b/app/assets/stylesheets/nonprofits/button/page.scss
new file mode 100644
index 000000000..eed33cb26
--- /dev/null
+++ b/app/assets/stylesheets/nonprofits/button/page.scss
@@ -0,0 +1,144 @@
+/* License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later */
+@import 'mixins';
+@import 'nonprofits/btn/common';
+@import 'components/page_tabs';
+@import 'components/steps_menu';
+@import 'components/help_box';
+@import 'components/animations';
+
+.stepsMenu {
+ margin-top: 15px;
+ @include columns(3.5);
+}
+.step {
+ padding-left: 15px;
+ @include columns-right(8.5);
+}
+.step label {
+ width: 100%;
+}
+.step-header {
+ padding: 5px;
+ text-align: center;
+}
+.step-header * {
+ @include open-sans;
+ font-weight: bold;
+}
+.step-header-title {
+ margin: 5px 0;
+}
+.step-inner {
+ background: $fog;
+ border: 1px solid rgba(black, 0.05);
+ padding: 15px;
+ overflow: auto;
+}
+.step-footer {
+ padding: 15px 15px 0 15px;
+ text-align: center;
+}
+.appearance label {
+ text-align: center;
+ cursor: pointer;
+ display: block;
+ padding: 15px;
+}
+.appearance img {
+ max-height: 180px;
+}
+.appearance table {
+ width: 100%;
+}
+.appearance td {
+ width: 50%;
+ vertical-align: middle;
+}
+.appearance td:nth-of-type(1){
+ border-right: 1px dashed rgba(black, 0.08);
+}
+.appearance tr,
+.customText-wrapper,
+.step.type label,
+.step.amounts label,
+.step.designations label {
+ border-bottom: 1px dashed rgba(black, 0.08);
+}
+.step.designations label,
+.step.amounts label {
+ padding: 10px 0;
+}
+.customText-wrapper {
+ margin-bottom: 10px;
+}
+.appearance input[type='text'] {
+ margin: 10px 0 0 0;
+ max-width: 300px;
+}
+.customText-text {
+ display: block;
+ font-size: 20px;
+ min-height: 25px;
+}
+.step.type label {
+ line-height: 30px;
+ overflow: auto;
+ cursor: pointer;
+ position: relative;
+}
+.step.type img {
+ vertical-align: middle;
+ float: right;
+ width: 25px;
+ margin: 5px 5px 15px 5px;
+}
+.step.preview ul {
+ margin: 10px 0 0 0;
+}
+.advanced section {
+ padding: 20px;
+}
+.advanced section h3 {
+ text-align: center;
+ margin: 10px auto;
+}
+.advanced section h5 {
+ line-height: 1;
+ color: rgba($charcoal, 0.9);
+ margin: 30px 0 10px 0;
+}
+.advanced textarea {
+ margin: 0 0 20px 0;
+}
+.advanced .no-js {
+ border: 5px $light-pollen solid;
+ padding: 20px;
+}
+.advanced .yes-js {
+ padding: 20px;
+ margin-top: 40px;
+ border: 5px $faded-sky solid;
+}
+
+@include keyframes(popUpToFade) {
+ 8% { @include transform(translateY(3px)); }
+ 12% {
+ @include opacity(1);
+ @include transform(translateY(5px));
+ }
+ 90% {
+ @include opacity(1);
+ }
+ 100% {
+ visibility: hidden;
+ @include transform(translateY(5px));
+ }
+}
+.helpBoxWrapper {
+ @include transform(translateY(200px));
+ @include opacity(0);
+ position: fixed;
+ bottom: 80px;
+ right: 60px;
+ @include animation('popUpToFade 10s ease-out 2.5s forwards');
+}
diff --git a/app/assets/stylesheets/nonprofits/dashboard/page.css.scss b/app/assets/stylesheets/nonprofits/dashboard/page.scss
similarity index 100%
rename from app/assets/stylesheets/nonprofits/dashboard/page.css.scss
rename to app/assets/stylesheets/nonprofits/dashboard/page.scss
diff --git a/app/assets/stylesheets/nonprofits/donate/page.css.scss b/app/assets/stylesheets/nonprofits/donate/page.scss
similarity index 100%
rename from app/assets/stylesheets/nonprofits/donate/page.css.scss
rename to app/assets/stylesheets/nonprofits/donate/page.scss
diff --git a/app/assets/stylesheets/nonprofits/donation_form/footer.css.scss b/app/assets/stylesheets/nonprofits/donation_form/footer.scss
similarity index 100%
rename from app/assets/stylesheets/nonprofits/donation_form/footer.css.scss
rename to app/assets/stylesheets/nonprofits/donation_form/footer.scss
diff --git a/app/assets/stylesheets/nonprofits/donation_form/form.css.scss b/app/assets/stylesheets/nonprofits/donation_form/form.scss
similarity index 100%
rename from app/assets/stylesheets/nonprofits/donation_form/form.css.scss
rename to app/assets/stylesheets/nonprofits/donation_form/form.scss
diff --git a/app/assets/stylesheets/nonprofits/donation_form/show/index.css.scss b/app/assets/stylesheets/nonprofits/donation_form/show/index.scss
similarity index 100%
rename from app/assets/stylesheets/nonprofits/donation_form/show/index.css.scss
rename to app/assets/stylesheets/nonprofits/donation_form/show/index.scss
diff --git a/app/assets/stylesheets/nonprofits/donation_form/title_row.css.scss b/app/assets/stylesheets/nonprofits/donation_form/title_row.scss
similarity index 100%
rename from app/assets/stylesheets/nonprofits/donation_form/title_row.css.scss
rename to app/assets/stylesheets/nonprofits/donation_form/title_row.scss
diff --git a/app/assets/stylesheets/nonprofits/manage/main_metrics.css.scss b/app/assets/stylesheets/nonprofits/manage/main_metrics.scss
similarity index 100%
rename from app/assets/stylesheets/nonprofits/manage/main_metrics.css.scss
rename to app/assets/stylesheets/nonprofits/manage/main_metrics.scss
diff --git a/app/assets/stylesheets/nonprofits/manage/supporter_table.css.scss b/app/assets/stylesheets/nonprofits/manage/supporter_table.scss
similarity index 100%
rename from app/assets/stylesheets/nonprofits/manage/supporter_table.css.scss
rename to app/assets/stylesheets/nonprofits/manage/supporter_table.scss
diff --git a/app/assets/stylesheets/nonprofits/payments/index/filter_panel.css.scss b/app/assets/stylesheets/nonprofits/payments/index/filter_panel.scss
similarity index 100%
rename from app/assets/stylesheets/nonprofits/payments/index/filter_panel.css.scss
rename to app/assets/stylesheets/nonprofits/payments/index/filter_panel.scss
diff --git a/app/assets/stylesheets/nonprofits/payments/index/main_panel.css.scss b/app/assets/stylesheets/nonprofits/payments/index/main_panel.scss
similarity index 100%
rename from app/assets/stylesheets/nonprofits/payments/index/main_panel.css.scss
rename to app/assets/stylesheets/nonprofits/payments/index/main_panel.scss
diff --git a/app/assets/stylesheets/nonprofits/payments/index/page.css.scss b/app/assets/stylesheets/nonprofits/payments/index/page.scss
similarity index 100%
rename from app/assets/stylesheets/nonprofits/payments/index/page.css.scss
rename to app/assets/stylesheets/nonprofits/payments/index/page.scss
diff --git a/app/assets/stylesheets/nonprofits/payouts/index/page.css.scss b/app/assets/stylesheets/nonprofits/payouts/index/page.css.scss
deleted file mode 100644
index 161b85beb..000000000
--- a/app/assets/stylesheets/nonprofits/payouts/index/page.css.scss
+++ /dev/null
@@ -1,18 +0,0 @@
-/* License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later */
-@import 'mixins';
-@import 'pikaday';
-@import 'components/page_tabs';
-@import 'components/nonprofit_bank_accounts';
-@import 'components/todos';
-@import 'components/identity_verification';
-
-.payout-history .succeeded {
- color: $bluegrass;
-}
-.payout-history .failed {
- color: $red;
-}
-.payout-history .pending {
- color: $oj;
-}
-
diff --git a/app/assets/stylesheets/nonprofits/payouts/index/page.scss b/app/assets/stylesheets/nonprofits/payouts/index/page.scss
new file mode 100644
index 000000000..6ea21ef50
--- /dev/null
+++ b/app/assets/stylesheets/nonprofits/payouts/index/page.scss
@@ -0,0 +1,17 @@
+/* License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later */
+@import 'mixins';
+@import 'pikaday';
+@import 'components/page_tabs';
+@import 'components/nonprofit_bank_accounts';
+@import 'components/todos';
+
+.payout-history .succeeded {
+ color: $bluegrass;
+}
+.payout-history .failed {
+ color: $red;
+}
+.payout-history .pending {
+ color: $oj;
+}
+
diff --git a/app/assets/stylesheets/nonprofits/recurring_donations/index/page.css.scss b/app/assets/stylesheets/nonprofits/recurring_donations/index/page.css.scss
deleted file mode 100644
index 89e85936c..000000000
--- a/app/assets/stylesheets/nonprofits/recurring_donations/index/page.css.scss
+++ /dev/null
@@ -1,24 +0,0 @@
-/* License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later */
-@import 'mixins';
-@import 'recurring_donations/modal';
-@import 'recurring_donations/edit';
-@import 'pikaday';
-@import 'supporters/form';
-@import 'bootstrap-tour';
-@import 'components/page_tabs';
-@import 'components/pagination';
-@import 'components/panels_layout';
-
-.sidePanel,
-.panelsLayout.is-showingSidePanel .mainPanel {
- width: 50%;
-}
-.panelsLayout.is-showingSidePanel .button--closeSidePanel {
- right: 50%;
-}
-.panelsLayout.is-showingSidePanel .hiddenWhenExpanded {
- display: none;
-}
-.sidePanel table td:first-of-type {
- font-weight: bold;
-}
diff --git a/app/assets/stylesheets/nonprofits/recurring_donations/index/page.scss b/app/assets/stylesheets/nonprofits/recurring_donations/index/page.scss
new file mode 100644
index 000000000..f4ff10eaa
--- /dev/null
+++ b/app/assets/stylesheets/nonprofits/recurring_donations/index/page.scss
@@ -0,0 +1,23 @@
+/* License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later */
+@import 'mixins';
+@import 'recurring_donations/modal';
+@import 'recurring_donations/edit';
+@import 'pikaday';
+@import 'bootstrap-tour';
+@import 'components/page_tabs';
+@import 'components/pagination';
+@import 'components/panels_layout';
+
+.sidePanel,
+.panelsLayout.is-showingSidePanel .mainPanel {
+ width: 50%;
+}
+.panelsLayout.is-showingSidePanel .button--closeSidePanel {
+ right: 50%;
+}
+.panelsLayout.is-showingSidePanel .hiddenWhenExpanded {
+ display: none;
+}
+.sidePanel table td:first-of-type {
+ font-weight: bold;
+}
diff --git a/app/assets/stylesheets/nonprofits/show/page.css.scss b/app/assets/stylesheets/nonprofits/show/page.scss
similarity index 100%
rename from app/assets/stylesheets/nonprofits/show/page.css.scss
rename to app/assets/stylesheets/nonprofits/show/page.scss
diff --git a/app/assets/stylesheets/nonprofits/show/settings_modal.css.scss b/app/assets/stylesheets/nonprofits/show/settings_modal.scss
similarity index 100%
rename from app/assets/stylesheets/nonprofits/show/settings_modal.css.scss
rename to app/assets/stylesheets/nonprofits/show/settings_modal.scss
diff --git a/app/assets/stylesheets/nonprofits/supporter_form/page.css.scss b/app/assets/stylesheets/nonprofits/supporter_form/page.scss
similarity index 100%
rename from app/assets/stylesheets/nonprofits/supporter_form/page.css.scss
rename to app/assets/stylesheets/nonprofits/supporter_form/page.scss
diff --git a/app/assets/stylesheets/nonprofits/supporters/custom_fields.css.scss b/app/assets/stylesheets/nonprofits/supporters/custom_fields.scss
similarity index 100%
rename from app/assets/stylesheets/nonprofits/supporters/custom_fields.css.scss
rename to app/assets/stylesheets/nonprofits/supporters/custom_fields.scss
diff --git a/app/assets/stylesheets/nonprofits/supporters/index/email_modal.css.scss b/app/assets/stylesheets/nonprofits/supporters/index/email_modal.scss
similarity index 100%
rename from app/assets/stylesheets/nonprofits/supporters/index/email_modal.css.scss
rename to app/assets/stylesheets/nonprofits/supporters/index/email_modal.scss
diff --git a/app/assets/stylesheets/nonprofits/supporters/index/page.css.scss b/app/assets/stylesheets/nonprofits/supporters/index/page.css.scss
deleted file mode 100644
index 2cc0a0ec8..000000000
--- a/app/assets/stylesheets/nonprofits/supporters/index/page.css.scss
+++ /dev/null
@@ -1,83 +0,0 @@
-/* License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later */
-@import 'mixins';
-@import 'components/pagination';
-@import 'supporters/form';
-@import 'pikaday';
-@import 'components/panels_layout';
-@import 'side_panel';
-@import 'components/tags';
-@import 'components/bulk_actions';
-@import 'components/page_tabs';
-@import 'components/toggle_buttons';
-@import 'components/drop_down';
-@import 'components/google_maps';
-@import 'common/editable';
-@import 'nonprofits/supporters/custom_fields';
-@import 'components/tables/filtering/meta_status';
-@import 'bootstrap-tour';
-
-.supportersMap {
- border: 2px solid rgba(black, 0.2);
- position: relative;
-}
-.supportersMap .legend {
- @include box-shadow(-2px 2px 4px 0 rgba(black, 0.07));
- border-bottom: 2px solid rgba(black, 0.2);
- border-left: 2px solid rgba(black, 0.2);
- position: absolute;
- right: 0;
- top: 0;
- background: $fog;
- width: 30%;
- padding: 7px;
- z-index: 1;
-}
-.supportersMap .legend .detail {
- margin-bottom: 5px;
- font-size: 13px;
- word-wrap: break-word;
-}
-.supportersMap .legend .detail i {
- margin-right: 5px;
- color: grey;
-}
-
-tr:hover .td--name > span {
- text-decoration: underline;
- -moz-text-decoration-color: rgba(black, 0.2);
- text-decoration-color: rgba(black, 0.2);
-}
-
-.headerWithProfile {
- border-bottom: none;
-}
-
-.mainPanel .td--action {
- width: 30px;
- padding: 0 15px;
-}
-
-.mainPanel .td--action-email {
- background: white;
- border: 1px solid rgba(black, 0.1);
- font-size: 14px;
- color: $logo-blue;
- text-align: center;
- line-height: 25px;
- width: 26px;
- height: 26px;
- @include border-radius(50%);
-}
-
-.mainPanel input[type='checkbox'] + label:before {
- margin: 0;
-}
-
-.panelsLayout.is-showingSidePanel {
- .mainPanel .th--name,
- .mainPanel .td--name {
- font-size: 16px;
- }
-}
-
-
diff --git a/app/assets/stylesheets/nonprofits/supporters/index/page.scss b/app/assets/stylesheets/nonprofits/supporters/index/page.scss
new file mode 100644
index 000000000..52b50530b
--- /dev/null
+++ b/app/assets/stylesheets/nonprofits/supporters/index/page.scss
@@ -0,0 +1,82 @@
+/* License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later */
+@import 'mixins';
+@import 'components/pagination';
+@import 'pikaday';
+@import 'components/panels_layout';
+@import 'side_panel';
+@import 'components/tags';
+@import 'components/bulk_actions';
+@import 'components/page_tabs';
+@import 'components/toggle_buttons';
+@import 'components/drop_down';
+@import 'components/google_maps';
+@import 'common/editable';
+@import 'nonprofits/supporters/custom_fields';
+@import 'components/tables/filtering/meta_status';
+@import 'bootstrap-tour';
+
+.supportersMap {
+ border: 2px solid rgba(black, 0.2);
+ position: relative;
+}
+.supportersMap .legend {
+ @include box-shadow(-2px 2px 4px 0 rgba(black, 0.07));
+ border-bottom: 2px solid rgba(black, 0.2);
+ border-left: 2px solid rgba(black, 0.2);
+ position: absolute;
+ right: 0;
+ top: 0;
+ background: $fog;
+ width: 30%;
+ padding: 7px;
+ z-index: 1;
+}
+.supportersMap .legend .detail {
+ margin-bottom: 5px;
+ font-size: 13px;
+ word-wrap: break-word;
+}
+.supportersMap .legend .detail i {
+ margin-right: 5px;
+ color: grey;
+}
+
+tr:hover .td--name > span {
+ text-decoration: underline;
+ -moz-text-decoration-color: rgba(black, 0.2);
+ text-decoration-color: rgba(black, 0.2);
+}
+
+.headerWithProfile {
+ border-bottom: none;
+}
+
+.mainPanel .td--action {
+ width: 30px;
+ padding: 0 15px;
+}
+
+.mainPanel .td--action-email {
+ background: white;
+ border: 1px solid rgba(black, 0.1);
+ font-size: 14px;
+ color: $logo-blue;
+ text-align: center;
+ line-height: 25px;
+ width: 26px;
+ height: 26px;
+ @include border-radius(50%);
+}
+
+.mainPanel input[type='checkbox'] + label:before {
+ margin: 0;
+}
+
+.panelsLayout.is-showingSidePanel {
+ .mainPanel .th--name,
+ .mainPanel .td--name {
+ font-size: 16px;
+ }
+}
+
+
diff --git a/app/assets/stylesheets/nonprofits/supporters/index/side_panel.css.scss b/app/assets/stylesheets/nonprofits/supporters/index/side_panel.scss
similarity index 100%
rename from app/assets/stylesheets/nonprofits/supporters/index/side_panel.css.scss
rename to app/assets/stylesheets/nonprofits/supporters/index/side_panel.scss
diff --git a/app/assets/stylesheets/nonprofits/supporters/index/timeline.css.scss b/app/assets/stylesheets/nonprofits/supporters/index/timeline.css.scss
deleted file mode 100644
index f26ab34e4..000000000
--- a/app/assets/stylesheets/nonprofits/supporters/index/timeline.css.scss
+++ /dev/null
@@ -1,82 +0,0 @@
-/* License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later */
-@import 'mixins';
-
-ul.timeline-activities {
- margin: 0;
- position: relative;
-}
-
-.timeline-activities:before {
- left: 12px;
- top: -20px;
- height: 20px;
- width: 1px;
-}
-
-.timeline-actions {
- margin-bottom: 20px;
- border: 1px solid rgba(black, 0.1);
- background: rgba(black, 0.03);
-}
-.timeline-activity {
- padding: 0 0 16px 32px;
- position: relative;
-}
-.timeline-activities:before,
-.timeline-activity:after,
-.timeline-activity:before {
- position: absolute;
- content: '';
- background: rgb(230, 230, 230);
-}
-.timeline-activity:after {
- left: 25px;
- top: 12px;
- height: 1px;
- width: 7px;
-}
-.timeline-activity:before {
- left: 12px;
- top: 0;
- height: 100%;
- width: 1px;
-}
-
-// line connecting the icons
-.timeline-activity:last-of-type:before {
- display: none;
-}
-
-.timeline-activity-icon {
- background: #F8F7F2;
- border: 1px solid rgb(230, 230, 230);
- width: 25px; height: 25px;
- @include border-radius(50%);
- position: absolute;
- text-align: center;
- top: 0;
- left: 0;
-}
-
-.timeline-activity-icon i {
- font-size: 12px;
- color: rgba(black, 0.4);
- @include transform(translateY(-1px));
-}
-.timeline-activity-icon i.fa-ticket,
-.timeline-activity-icon i.fa-pencil {
- font-size: 14px;
- @include transform(translateY(-2px));
-}
-
-.timeline .timeline-activity-card p {
- margin-bottom: 0;
-}
-
-.timeline-activity-card {
- background: white;
- padding: 8px 10px;
- line-height: 20px;
- border: 1px solid rgba(black, 0.1);
-}
-
diff --git a/app/assets/stylesheets/nonprofits/supporters/index/timeline.scss b/app/assets/stylesheets/nonprofits/supporters/index/timeline.scss
new file mode 100644
index 000000000..d136e736e
--- /dev/null
+++ b/app/assets/stylesheets/nonprofits/supporters/index/timeline.scss
@@ -0,0 +1,87 @@
+/* License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later */
+@import 'mixins';
+
+ul.timeline-activities {
+ margin: 0;
+ position: relative;
+}
+
+.timeline-activities:before {
+ left: 12px;
+ top: -20px;
+ height: 20px;
+ width: 1px;
+}
+
+.timeline-actions {
+ margin-bottom: 20px;
+ border: 1px solid rgba(black, 0.1);
+ background: rgba(black, 0.03);
+}
+.timeline-activity {
+ padding: 0 0 16px 32px;
+ position: relative;
+}
+.timeline-activities:before,
+.timeline-activity:after,
+.timeline-activity:before {
+ position: absolute;
+ content: '';
+ background: rgb(230, 230, 230);
+}
+.timeline-activity:after {
+ left: 25px;
+ top: 12px;
+ height: 1px;
+ width: 7px;
+}
+.timeline-activity:before {
+ left: 12px;
+ top: 0;
+ height: 100%;
+ width: 1px;
+}
+
+// line connecting the icons
+.timeline-activity:last-of-type:before {
+ display: none;
+}
+
+.timeline-activity-icon {
+ background: #F8F7F2;
+ border: 1px solid rgb(230, 230, 230);
+ width: 25px; height: 25px;
+ @include border-radius(50%);
+ position: absolute;
+ text-align: center;
+ top: 0;
+ left: 0;
+}
+
+.timeline-activity-icon i {
+ font-size: 12px;
+ color: rgba(black, 0.4);
+ @include transform(translateY(-1px));
+}
+.timeline-activity-icon i.fa-ticket,
+.timeline-activity-icon i.fa-pencil {
+ font-size: 14px;
+ @include transform(translateY(-2px));
+}
+
+.timeline .timeline-activity-card p {
+ margin-bottom: 0;
+}
+
+.timeline-activity-card {
+ background: white;
+ padding: 8px 10px;
+ line-height: 20px;
+ border: 1px solid rgba(black, 0.1);
+}
+
+.timeline-activity-card div.activity-section {
+ line-height: 1.3em;
+ margin-bottom: 5px;
+}
+
diff --git a/app/assets/stylesheets/profiles/show/page.css.scss b/app/assets/stylesheets/profiles/show/page.scss
similarity index 100%
rename from app/assets/stylesheets/profiles/show/page.css.scss
rename to app/assets/stylesheets/profiles/show/page.scss
diff --git a/app/assets/stylesheets/recurring_donations/edit.css.scss b/app/assets/stylesheets/recurring_donations/edit.scss
similarity index 100%
rename from app/assets/stylesheets/recurring_donations/edit.css.scss
rename to app/assets/stylesheets/recurring_donations/edit.scss
diff --git a/app/assets/stylesheets/recurring_donations/edit/page.css.scss b/app/assets/stylesheets/recurring_donations/edit/page.scss
similarity index 100%
rename from app/assets/stylesheets/recurring_donations/edit/page.css.scss
rename to app/assets/stylesheets/recurring_donations/edit/page.scss
diff --git a/app/assets/stylesheets/recurring_donations/modal.css.scss b/app/assets/stylesheets/recurring_donations/modal.css.scss
deleted file mode 100644
index 76b6ce573..000000000
--- a/app/assets/stylesheets/recurring_donations/modal.css.scss
+++ /dev/null
@@ -1,2 +0,0 @@
-/* License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later */
-@import 'supporters/form';
diff --git a/app/assets/stylesheets/recurring_donations/modal.scss b/app/assets/stylesheets/recurring_donations/modal.scss
new file mode 100644
index 000000000..632a7e1ba
--- /dev/null
+++ b/app/assets/stylesheets/recurring_donations/modal.scss
@@ -0,0 +1,2 @@
+/* License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later */
+
diff --git a/app/assets/stylesheets/resets.css.scss b/app/assets/stylesheets/resets.scss
similarity index 100%
rename from app/assets/stylesheets/resets.css.scss
rename to app/assets/stylesheets/resets.scss
diff --git a/app/assets/stylesheets/settings/index/branding.css.scss b/app/assets/stylesheets/settings/index/branding.css.scss
deleted file mode 100644
index 4bf6c2ffb..000000000
--- a/app/assets/stylesheets/settings/index/branding.css.scss
+++ /dev/null
@@ -1,80 +0,0 @@
-/* License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later */
-@import 'mixins';
-@import 'common/vendor/colpick';
-@import 'nonprofits/btn/page';
-@import 'common/branded_campaign_button';
-
-
-.branding-settings-wrapper {
- float: left;
- width: 244px;
-}
-
-.branding-settings-wrapper .title,
-.preview-wrapper .title {
- padding: 8px;
- font-weight: 600;
- margin: 0;
-}
-.preview-wrapper .title {
- text-align: center;
-}
-
-.font-wrapper ul { margin: 0; }
-
-.font-wrapper li {
- padding: 5px 10px;
- color: rgba(black, 0.6);
- position: relative;
- cursor: pointer;
- &.open {font-family: OpenSansCondensed, 'Helvetica Neue', Arial, sans-serif;}
- &.helvetica {font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;}
- &.georgia {font-family: Georgia, Serif;}
- &.futura {font-family: ‘Futura’, Arial, sans-serif;}
- &.bitter {@include bitter;}
- &:after{
- content: '';
- position: absolute;
- bottom: 0;
- left: 0;
- width: 100%;
- height: 1px;
- background: rgba($grey, 0.1);
- }
- &:hover {
- font-weight: bold;
- }
-}
-
-.color-wrapper {
- overflow: auto;
-}
-
-// color picker
-.colPick-wrapper {
- height: 240px;
- padding: 20px;
-}
-.colPick-wrapper input[type="text"]:focus {
- border: none;
-}
-
-.preview-wrapper {
- overflow: auto;
- @include noselect;
-}
-
-.branded-donate-button-wrapper {
- text-align: center;
- padding: 20px;
-}
-
-.pane-inner .branded-donate-button {
- @include transition(none);
-}
-
-.branding-form {
- margin: 0;
- text-align: center;
- padding: 15px 10px 10px;
-}
diff --git a/app/assets/stylesheets/settings/index/branding.scss b/app/assets/stylesheets/settings/index/branding.scss
new file mode 100644
index 000000000..0e1db6cf6
--- /dev/null
+++ b/app/assets/stylesheets/settings/index/branding.scss
@@ -0,0 +1,80 @@
+/* License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later */
+@import 'mixins';
+@import 'common/vendor/colpick';
+@import 'nonprofits/btn/common';
+@import 'common/branded_campaign_button';
+
+
+.branding-settings-wrapper {
+ float: left;
+ width: 244px;
+}
+
+.branding-settings-wrapper .title,
+.preview-wrapper .title {
+ padding: 8px;
+ font-weight: 600;
+ margin: 0;
+}
+.preview-wrapper .title {
+ text-align: center;
+}
+
+.font-wrapper ul { margin: 0; }
+
+.font-wrapper li {
+ padding: 5px 10px;
+ color: rgba(black, 0.6);
+ position: relative;
+ cursor: pointer;
+ &.open {font-family: OpenSansCondensed, 'Helvetica Neue', Arial, sans-serif;}
+ &.helvetica {font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;}
+ &.georgia {font-family: Georgia, Serif;}
+ &.futura {font-family: ‘Futura’, Arial, sans-serif;}
+ &.bitter {@include bitter;}
+ &:after{
+ content: '';
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ width: 100%;
+ height: 1px;
+ background: rgba($grey, 0.1);
+ }
+ &:hover {
+ font-weight: bold;
+ }
+}
+
+.color-wrapper {
+ overflow: auto;
+}
+
+// color picker
+.colPick-wrapper {
+ height: 240px;
+ padding: 20px;
+}
+.colPick-wrapper input[type="text"]:focus {
+ border: none;
+}
+
+.preview-wrapper {
+ overflow: auto;
+ @include noselect;
+}
+
+.branded-donate-button-wrapper {
+ text-align: center;
+ padding: 20px;
+}
+
+.pane-inner .branded-donate-button {
+ @include transition(none);
+}
+
+.branding-form {
+ margin: 0;
+ text-align: center;
+ padding: 15px 10px 10px;
+}
diff --git a/app/assets/stylesheets/settings/index/page.css.scss b/app/assets/stylesheets/settings/index/page.scss
similarity index 100%
rename from app/assets/stylesheets/settings/index/page.css.scss
rename to app/assets/stylesheets/settings/index/page.scss
diff --git a/app/assets/stylesheets/tickets/form.css.scss b/app/assets/stylesheets/tickets/form.css.scss
deleted file mode 100644
index e69de29bb..000000000
diff --git a/app/assets/stylesheets/supporters/form.css.scss b/app/assets/stylesheets/tickets/form.scss
similarity index 100%
rename from app/assets/stylesheets/supporters/form.css.scss
rename to app/assets/stylesheets/tickets/form.scss
diff --git a/app/assets/stylesheets/tickets/index/page.css.scss b/app/assets/stylesheets/tickets/index/page.scss
similarity index 100%
rename from app/assets/stylesheets/tickets/index/page.css.scss
rename to app/assets/stylesheets/tickets/index/page.scss
diff --git a/app/assets/svgs/donate-button.svg b/app/assets/svgs/donate-button.svg
index 4459d645a..d2dd3abc1 100644
--- a/app/assets/svgs/donate-button.svg
+++ b/app/assets/svgs/donate-button.svg
@@ -1,106 +1 @@
-
-
-
-
+
\ No newline at end of file
diff --git a/app/controllers/activities_controller.rb b/app/controllers/activities_controller.rb
deleted file mode 100644
index 07dd5f2c4..000000000
--- a/app/controllers/activities_controller.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-# License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later
-class ActivitiesController < ApplicationController
-
- before_filter :authenticate_user!, only: [:create]
-
- def create
- json_saved Activity.create(params[:activity])
- end
-
-end
diff --git a/app/controllers/api_new/api_controller.rb b/app/controllers/api_new/api_controller.rb
new file mode 100644
index 000000000..827f73a0c
--- /dev/null
+++ b/app/controllers/api_new/api_controller.rb
@@ -0,0 +1,26 @@
+# frozen_string_literal: true
+
+# License: AGPL-3.0-or-later WITH WTO-AP-3.0-or-later
+# Full license explanation at https://github.com/houdiniproject/houdini/blob/main/LICENSE
+module ApiNew
+ class ApiController < ActionController::Base # rubocop:disable Rails/ApplicationController
+ # We disable Rails/ApplicationController because we don't want all the stuff in ApplicationController included since
+ # the Api is simpler
+ include Controllers::Locale
+ include Controllers::Nonprofit::Authorization
+ include Controllers::ApiNew::JbuilderExpansions
+ rescue_from ActiveRecord::RecordInvalid, with: :record_invalid_rescue
+ rescue_from AuthenticationError, with: :unauthorized_rescue
+
+ protected
+
+ def record_invalid_rescue(error)
+ render json: { errors: error.record.errors.messages }, status: :unprocessable_entity
+ end
+
+ def unauthorized_rescue(error)
+ @error = error
+ render 'api_new/errors/unauthorized', status: :unauthorized
+ end
+ end
+end
\ No newline at end of file
diff --git a/app/controllers/api_new/object_events_controller.rb b/app/controllers/api_new/object_events_controller.rb
new file mode 100644
index 000000000..7677f99d7
--- /dev/null
+++ b/app/controllers/api_new/object_events_controller.rb
@@ -0,0 +1,23 @@
+# frozen_string_literal: true
+
+# License: AGPL-3.0-or-later WITH WTO-AP-3.0-or-later
+# Full license explanation at https://github.com/houdiniproject/houdini/blob/main/LICENSE
+
+module ApiNew
+ class ObjectEventsController < ApiNew::ApiController
+ include Controllers::ApiNew::Nonprofit::Current
+ include Controllers::Nonprofit::Authorization
+ before_action :authenticate_nonprofit_user!
+
+ has_scope :event_entity
+ has_scope :event_types, type: :array
+
+ # Gets the nonprofits object events
+ # If not logged in, causes a 401 error
+ def index
+ @object_events = apply_scopes(current_nonprofit
+ .associated_object_events)
+ .order('created_at DESC').page(params[:page]).per(params[:per])
+ end
+ end
+end
diff --git a/app/controllers/api_new/supporters_controller.rb b/app/controllers/api_new/supporters_controller.rb
new file mode 100644
index 000000000..d41e42c4a
--- /dev/null
+++ b/app/controllers/api_new/supporters_controller.rb
@@ -0,0 +1,25 @@
+# frozen_string_literal: true
+
+# License: AGPL-3.0-or-later WITH WTO-AP-3.0-or-later
+# Full license explanation at https://github.com/houdiniproject/houdini/blob/main/LICENSE
+
+module ApiNew
+ # A controller for interacting with a nonprofit's supporters
+ class SupportersController < ApiNew::ApiController
+ include Controllers::ApiNew::Nonprofit::Current
+ include Controllers::Nonprofit::Authorization
+ before_action :authenticate_nonprofit_user!
+
+ # Gets the nonprofits supporters
+ # If not logged in, causes a 401 error
+ def index
+ @supporters = current_nonprofit.supporters.order('id DESC').page(params[:page]).per(params[:per])
+ end
+
+ # Gets the a single nonprofit supporter
+ # If not logged in, causes a 401 error
+ def show
+ @supporter = current_nonprofit.supporters.find_by(houid:params[:id])
+ end
+ end
+end
diff --git a/app/controllers/api_new/transactions_controller.rb b/app/controllers/api_new/transactions_controller.rb
new file mode 100644
index 000000000..4579cfa5f
--- /dev/null
+++ b/app/controllers/api_new/transactions_controller.rb
@@ -0,0 +1,25 @@
+# frozen_string_literal: true
+
+# License: AGPL-3.0-or-later WITH WTO-AP-3.0-or-later
+# Full license explanation at https://github.com/houdiniproject/houdini/blob/main/LICENSE
+
+# A controller for interacting with a nonprofit's supporters
+class ApiNew::TransactionsController < ApiNew::ApiController
+ include Controllers::ApiNew::Transaction::Current
+ include Controllers::Nonprofit::Authorization
+ before_action :authenticate_nonprofit_user!
+
+ # Gets the nonprofits supporters
+ # If not logged in, causes a 401 error
+ def index
+ set_json_expansion_paths('supporter', 'subtransaction.payments', 'transaction_assignments', 'payments')
+ @transactions = current_nonprofit.transactions.order('updated_at DESC').page(params[:page]).per(params[:per])
+ end
+
+ # Gets the a single nonprofit supporter
+ # If not logged in, causes a 401 error
+ def show
+ set_json_expansion_paths('supporter', 'subtransaction.payments', 'transaction_assignments', 'payments')
+ @transaction = current_transaction
+ end
+end
\ No newline at end of file
diff --git a/app/controllers/api_new/users_controller.rb b/app/controllers/api_new/users_controller.rb
new file mode 100644
index 000000000..8178a5a7f
--- /dev/null
+++ b/app/controllers/api_new/users_controller.rb
@@ -0,0 +1,25 @@
+# frozen_string_literal: true
+
+# License: AGPL-3.0-or-later WITH WTO-AP-3.0-or-later
+# Full license explanation at https://github.com/houdiniproject/houdini/blob/main/LICENSE
+class ApiNew::UsersController < ApiNew::ApiController
+ include Controllers::User::Authorization
+
+ before_action :authenticate_user!
+
+ # Returns the current user as JSON
+ # If not logged in, causes a 401 error
+ def current
+ @user = current_user
+ end
+
+ # get /api_new/users/current_nonprofit_object_events
+ def current_nonprofit_object_events
+ np_houid = current_user.roles.where(host_type: 'Nonprofit').first&.host&.houid
+ if np_houid
+ redirect_to api_new_nonprofit_object_events_path(np_houid, request.query_parameters)
+ else
+ render :text => 'Not Found', :status => :not_found
+ end
+ end
+end
diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
index 76f75165a..352045d89 100755
--- a/app/controllers/application_controller.rb
+++ b/app/controllers/application_controller.rb
@@ -1,15 +1,13 @@
# License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later
class ApplicationController < ActionController::Base
- before_filter :set_locale, :redirect_to_maintenance
+ before_action :set_locale, :redirect_to_maintenance
- protect_from_forgery
+ protect_from_forgery with: :exception
helper_method \
:current_role?,
:current_nonprofit_user?,
- :administered_nonprofit,
- :nonprofit_in_trial?,
- :current_plan_tier #int
+ :administered_nonprofit
def set_locale
if params[:locale] && Settings.available_locales.include?(params[:locale])
@@ -124,21 +122,6 @@ def current_role?(role_names, host_id = nil)
QueryRoles.user_has_role?(current_user.id, role_names, host_id)
end
- def nonprofit_in_trial?(npo_id=nil)
- return false if !npo_id && !administered_nonprofit
- npo_id ||= administered_nonprofit.id
- key = "in_trial_user_#{current_user_id}_nonprofit_#{npo_id}"
- QueryBillingSubscriptions.currently_in_trial?(npo_id)
- end
-
- def current_plan_tier(npo_id=nil)
- return 0 if !npo_id && !administered_nonprofit
- npo_id ||= administered_nonprofit.id
- return 2 if current_role?(:super_admin)
- key = "plan_tier_user_#{current_user_id}_nonprofit_#{npo_id}"
- administered_nonprofit ? QueryBillingSubscriptions.plan_tier(npo_id) : 0
- end
-
def administered_nonprofit
return nil unless current_user
key = "administered_nonprofit_user_#{current_user_id}_nonprofit"
@@ -171,4 +154,11 @@ def current_user_id
current_user && current_user.id
end
+ # Overload handle_unverified_request to ensure that
+ # exception is raised each time a request does not
+ # pass validation.
+ def handle_unverified_request
+ Airbrake.notify(ActionController::InvalidAuthenticityToken, params: params)
+
+ end
end
diff --git a/app/controllers/aws_presigned_posts_controller.rb b/app/controllers/aws_presigned_posts_controller.rb
index bdea08399..c35ae2d23 100644
--- a/app/controllers/aws_presigned_posts_controller.rb
+++ b/app/controllers/aws_presigned_posts_controller.rb
@@ -1,6 +1,6 @@
# License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later
class AwsPresignedPostsController < ApplicationController
- before_filter :authenticate_user!
+ before_action :authenticate_user!
# post /presigned_posts
# Create some keys using the AWS gem so the user can do direct-to-S3 uploads
@@ -9,9 +9,9 @@ def create
uuid = SecureRandom.uuid
p = S3Bucket.presigned_post({
key: "tmp/#{uuid}/${filename}",
- success_action_status: 201,
+ success_action_status: "201",
acl: 'public-read',
- expiration: 30.days.from_now
+ expires: 30.days.from_now
})
render json: {
diff --git a/app/controllers/billing_subscriptions_controller.rb b/app/controllers/billing_subscriptions_controller.rb
index 1f63fb4b1..dc9e1af0f 100644
--- a/app/controllers/billing_subscriptions_controller.rb
+++ b/app/controllers/billing_subscriptions_controller.rb
@@ -2,22 +2,7 @@
class BillingSubscriptionsController < ApplicationController
include Controllers::NonprofitHelper
- before_filter :authenticate_nonprofit_admin!
-
- def create_trial
- render JsonResp.new(params){|params|
- requires(:nonprofit_id).as_int
- requires(:stripe_plan_id).as_string
- }.when_valid{|params|
- InsertBillingSubscriptions.trial(params[:nonprofit_id], params[:stripe_plan_id])
- }
- end
-
- def create
- @nonprofit ||= Nonprofit.find(params[:nonprofit_id])
- @subscription = BillingSubscription.create_with_stripe(@nonprofit, params[:billing_subscription])
- json_saved(@subscription, "Success! You are subscribed to #{Settings.general.name}.")
- end
+ before_action :authenticate_nonprofit_admin!
# post /nonprofits/:nonprofit_id/billing_subscription/cancel
def cancel
diff --git a/app/controllers/campaign_gift_options_controller.rb b/app/controllers/campaign_gift_options_controller.rb
index 47b213676..044aab0b2 100644
--- a/app/controllers/campaign_gift_options_controller.rb
+++ b/app/controllers/campaign_gift_options_controller.rb
@@ -2,7 +2,7 @@
class CampaignGiftOptionsController < ApplicationController
include Controllers::CampaignHelper
- before_filter :authenticate_campaign_editor!, only: [:create, :destroy, :update, :update_order]
+ before_action :authenticate_campaign_editor!, only: [:create, :destroy, :update, :update_order]
def index
@gift_options = current_campaign.campaign_gift_options.order('"order", amount_recurring, amount_one_time')
diff --git a/app/controllers/campaigns/campaign_gift_options_controller.rb b/app/controllers/campaigns/campaign_gift_options_controller.rb
index e413855fe..037adcded 100644
--- a/app/controllers/campaigns/campaign_gift_options_controller.rb
+++ b/app/controllers/campaigns/campaign_gift_options_controller.rb
@@ -2,7 +2,7 @@
module Campaigns; class CampaignGiftOptionsController < ApplicationController
include Controllers::CampaignHelper
- before_filter :authenticate_campaign_editor!, only: [:index]
+ before_action :authenticate_campaign_editor!, only: [:index]
def index
respond_to do |format|
diff --git a/app/controllers/campaigns/donations_controller.rb b/app/controllers/campaigns/donations_controller.rb
index 44cb27a10..a53c0f3db 100644
--- a/app/controllers/campaigns/donations_controller.rb
+++ b/app/controllers/campaigns/donations_controller.rb
@@ -3,7 +3,7 @@ module Campaigns
class DonationsController < ApplicationController
include Controllers::CampaignHelper
- before_filter :authenticate_campaign_editor!, only: [:index]
+ before_action :authenticate_campaign_editor!, only: [:index]
def index
respond_to do |format|
diff --git a/app/controllers/campaigns/supporters_controller.rb b/app/controllers/campaigns/supporters_controller.rb
index 9796e687a..5f77ffd06 100644
--- a/app/controllers/campaigns/supporters_controller.rb
+++ b/app/controllers/campaigns/supporters_controller.rb
@@ -3,7 +3,7 @@ module Campaigns
class SupportersController < ApplicationController
include Controllers::CampaignHelper
- before_filter :authenticate_campaign_editor!, only: [:index]
+ before_action :authenticate_campaign_editor!, only: [:index]
def index
@panels_layout = true
diff --git a/app/controllers/campaigns_controller.rb b/app/controllers/campaigns_controller.rb
index 861370a79..6edd58306 100644
--- a/app/controllers/campaigns_controller.rb
+++ b/app/controllers/campaigns_controller.rb
@@ -3,9 +3,10 @@ class CampaignsController < ApplicationController
include Controllers::CampaignHelper
helper_method :current_campaign_editor?
- before_filter :authenticate_confirmed_user!, only: [:create, :name_and_id, :duplicate]
- before_filter :authenticate_campaign_editor!, only: [:update, :soft_delete]
- before_filter :check_nonprofit_status, only: [:index, :show]
+ before_action :authenticate_confirmed_user!, only: [:create, :name_and_id, :duplicate]
+ before_action :authenticate_campaign_editor!, only: [:update, :soft_delete]
+ before_action :check_nonprofit_status, only: [:index, :show]
+ after_action :set_access_control_headers, only: [:metrics]
def index
@nonprofit = current_nonprofit
@@ -76,6 +77,7 @@ def update
params[:campaign][:end_datetime] = Chronic.parse(params[:campaign][:end_datetime]) if params[:campaign][:end_datetime].present?
end
current_campaign.update_attributes params[:campaign]
+
json_saved current_campaign, 'Successfully updated!'
end
@@ -138,4 +140,9 @@ def check_nonprofit_status
raise ActionController::RoutingError.new('Not Found')
end
end
+
+ def set_access_control_headers
+ headers['Access-Control-Allow-Origin'] = "*"
+ headers['Access-Control-Request-Method'] = %w{GET}.join(",")
+ end
end
diff --git a/app/controllers/cards_controller.rb b/app/controllers/cards_controller.rb
index 4e84fd1e5..fa75ca58f 100755
--- a/app/controllers/cards_controller.rb
+++ b/app/controllers/cards_controller.rb
@@ -1,11 +1,16 @@
# License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later
class CardsController < ApplicationController
- before_filter :authenticate_user!, :except => [:create]
+ before_action :authenticate_user!, :except => [:create]
+ before_action :verify_via_recaptcha!, only: [:create]
+ before_action :validate_allowed!, only: [:create]
+
+ rescue_from ::Recaptcha::RecaptchaError, with: :handle_recaptcha_failure
+
+ rescue_from ::TempBlockError, with: :handle_temp_block_error
# post /cards
- def create
- acct = Supporter.find(params[:card][:holder_id]).nonprofit.stripe_account_id
+ def create
render(
JsonResp.new(params) do |d|
requires(:card).nested do
@@ -14,9 +19,48 @@ def create
requires(:holder_type).one_of('Supporter')
end
end.when_valid do |d|
+ supporter = Supporter.find(d[:card][:holder_id])
+ acct = supporter.nonprofit.stripe_account_id
InsertCard.with_stripe(d[:card], acct, params[:event_id], current_user)
end
)
end
+ private
+ def verify_via_recaptcha!
+ begin
+ verify_recaptcha!(action: 'create_card', minimum_score: ENV['MINIMUM_RECAPTCHA_SCORE'].to_f)
+ rescue ::Recaptcha::RecaptchaError => e
+ supporter_id = params.try(:card).try(:holder_id)
+ failure_details = {
+ supporter: supporter_id,
+ params: params,
+ action: 'create_card',
+ minimum_score_required: ENV['MINIMUM_RECAPTCHA_SCORE'],
+ recaptcha_result: recaptcha_reply,
+ recaptcha_value: params['g-recaptcha-response']
+ }
+ failure = RecaptchaRejection.new
+ failure.details = failure_details
+ failure.save!
+ raise e
+ end
+ end
+
+ def handle_recaptcha_failure
+ render json: {error: "There was an temporary error preventing your payment. Please try again. If it persists, please contact support@commitchange.com with error code: 5X4J "}, status: :unprocessable_entity
+ end
+
+ def handle_temp_block_error
+ render json: {error: "no"}, status: :unprocessable_entity
+ end
+
+ def validate_allowed!
+ if params.dig(:card, :holder_id)
+ s = Supporter.find(params[:card][:holder_id])
+ if s.nonprofit&.miscellaneous_np_info&.temp_block
+ raise TempBlockError
+ end
+ end
+ end
end
diff --git a/app/controllers/concerns/controllers/api_new/jbuilder_expansions.rb b/app/controllers/concerns/controllers/api_new/jbuilder_expansions.rb
new file mode 100644
index 000000000..cafd4dd93
--- /dev/null
+++ b/app/controllers/concerns/controllers/api_new/jbuilder_expansions.rb
@@ -0,0 +1,435 @@
+# frozen_string_literal: true
+
+# License: AGPL-3.0-or-later WITH WTO-AP-3.0-or-later
+# Full license explanation at https://github.com/houdiniproject/houdini/blob/main/LICENSE
+
+=begin
+
+This concern simplifies creating JBuilder objects.
+
+## The format for child objects in Houdini API
+
+Child objects for attributes for the Houdini API follow a format based upon the Stripe API
+When a child is not expanded it will consist only of the Houid
+For example consider in the following object, child is not expanded:
+```json
+{
+ child: "chd_21n45ho...",
+ id: "familyobj_4532154ni"
+}
+```
+
+However when a child is expanded it will look like this:
+
+```json
+{
+ child: {
+ id: "chd_21n45ho...",
+ additional_attribute: 1,
+ parent: "prt_352159",
+ subchildren: ["subchd_235n158...", "subchd_203213598..."]
+ },
+ id: "familyobj_4532154ni"
+}
+```
+
+### JSON Simplified Path (SPath)
+a JSON Simplified Path (SPath) is a bit like dot object notation for JSON objects. For example
+If you wanted to reference the child attribute above, you would use the very simple spath of
+`child`
+
+If you wanted to reference the child's id attribute, you would use `child.id`
+
+One characteristic of SPaths is how they handle arrays. If an spath references an array, it's
+actually referencing every item in the array. This will matter later in this code.
+
+###Combining SPaths and expansion
+Now that have SPaths you may be wondering how this relates to expandable attributes. Based upon some input,
+we may want decided at runtime whether expand an attribute when rendering Jbuilder templates SPaths allow us to define which items are expanded. To do so,
+we go to our Controller action and provide the SPaths of which attributes we want expanded in the outputted object. We do this by passing the
+the SPaths to the `set_json_expansion_paths` method. So, if we want to expand the `child` from above, we would call:
+`set_json_expansion_paths('child')`
+ ```json
+{
+ child: {
+ id: "chd_21n45ho...",
+ additional_attribute: 1,
+ parent: {
+ id: "prt_352159"
+ some_other_attribute: "attrib to remember"
+ },
+ subchildren: ["subchd_235n158...", "subchd_203213598..."]
+ },
+ id: "familyobj_4532154ni"
+}
+```
+
+What if we want to expand the parent attribute inside child? We can pass the SPath as follows:`set_json_expansion_paths('child.parent')`. And we get the following:
+
+Notice that we
+don't have to pass child separately. Our expansions know to expand everything back to the root of our Jbuilder value. Your could pass `set_json_expansion_paths('child', 'child.parent')`
+
+What happens for arrays? We can pass the SPath for subchildren using the same notation `set_json_expansion_paths('child.subchildren')`:
+
+```json
+{
+ child: {
+ id: "chd_21n45ho...",
+ additional_attribute: 1,
+ parent: "prt_352159",
+ subchildren: [
+ {
+ id: "subchd_235n158...",
+ value: 22942190
+ },
+ {
+ id: "subchd_203213598...",
+ value: 312539
+ }
+ ]
+ },
+ id: "familyobj_4532154ni"
+}
+```
+
+###Expansion and partials
+You may be wondering how we know what to generate when we ask for an object to be expanded. We use a feature of JBuidler
+where, which selects the partial based upon the class of the object passed to `partial!`. For example,
+if you call `json.partial! object` and object is of type Parent, Jbuilder knows that you want to use the partial at `app/views/parents/_parent.json.jbuilder`.
+
+### How to use this all in practice on a controller action
+Using this in practice requires a few steps but is honestly pretty straightforward.
+
+#### 1. Make sure there is a #to_houid method on the object
+Remember, for an object to be shrunk, we need to be able to output the value #to_houid. So we need that for any object which could be expanded.
+
+#### 2. Make sure to call `#set_json_expansion_paths` in your action with the SPaths you want to expand.
+
+In your controller action, you need to set which SPaths you want to expand. You can set these based upon parameters passed in (you may want to limit the depth however)
+or simply have a default value.
+
+```ruby
+# in `app/controllers/family_objects_controller.rb`
+class FamilyObjectsController < ApplicationController
+ include Controllers::ApiNew::JbuilderExpansions
+
+ def show
+ set_json_expansion_paths('child') # we just want to expand the child attribute
+ @family_object = FamilyObject.find(.........) # assume you get the family object you want here
+ end
+end
+````
+
+#### 3. In your JBuilder view template for the show action make sure to add `__expand: @expand` to the end of your render partial call
+
+```ruby
+# in `app/views/family_objects/show.json.jbuilder`
+json.partial! @family_object, as: :family_object, __expand: @__expand
+```
+
+#### 4. Starting at the partial called in your show template, add `#handle_expansion` and `#handle_array_expansion` calls
+
+```ruby
+# in `app/views/family_objects/_family_object.json.jbuilder`
+
+json.id family_object.to_houid
+
+handle_expansion(:child, family_object, {json: json, __expand: __expand}) # make sure json and __expand are there!
+```
+
+#### 5. Continue adding expansion calls in any partials referred to by the initial partial or any partials it references recursively
+
+```ruby
+# in `app/views/children/_child.json.jbuilder`
+json.id child.to_houid
+
+json.(child, :additional_attribute)
+
+handle_expansion(:parent, child, {json: json, __expand: __expand}) # make sure json and __expand are there!
+
+handle_array_expansion(:subchildren, child, {as: :child, json: json, __expand: __expand}) # We're assuming each of subchildren is actually a Child object
+ # make sure json and __expand are there!
+
+```
+
+```ruby
+# in `app/views/parents/_parent.json.jbuilder`
+json.id parent.to_houid
+
+json.some_other_attribute parent.some_other_attribute
+```
+=end
+
+
+module Controllers::ApiNew::JbuilderExpansions
+ extend ActiveSupport::Concern
+ included do
+
+ @__expand = Controllers::ApiNew::JbuilderExpansions::ExpansionTree.new
+
+ # The SPaths for the expandable attributes you would like to expand. By default, no attributes are expanded.
+ # You can call this multiple times and new calls will override any previous calls
+ def set_json_expansion_paths(*expansions)
+ @__expand = Controllers::ApiNew::JbuilderExpansions.build_json_expansion_path_tree(*expansions)
+ end
+
+ # Builds the {ExpansionTree}. This is rarely needed but could be helpful in certain specific cases
+ # @param [Array,Array] paths the paths to expand. If the first item is a {String} then this is an array of SPaths. If the first item is
+ # an {ExpansionTree}, this object returns that item
+ # @return [ExpansionTree]
+ def build_json_expansion_path_tree(*paths)
+ Controllers::ApiNew::JbuilderExpansions.build_json_expansion_path_tree(*paths)
+ end
+
+ # Configures an attribute which can be expanded in an jbuilder template
+ # When shrunk, if you pass this is the equivalent of writing:
+ # `json.set! attribute, source&.to_houid` # This assumes you passed the :attribute as the attribute
+ # When expanded, this is the equivalent of:
+ # `json.set! attribute do
+ # json.partial! opts[:object]
+ # end`
+ #
+ # @param [Symbol] attribute the name of the attribute that you would like output.
+ # @param [any] source an object which with an attribute which can be expanded
+ # @option opts [JbuilderTemplate] :json the JBuilder object being used to generate the outputted JSON This is required.
+ # @option opts [ExpansionTree] :__expand the ExpansionTree for this current template. This is required.
+ # @option opts [Symbol] :as the method we call on 'object' when expanding the node.
+ def handle_expansion(attribute, source, opts={})
+ opts = opts.deep_symbolize_keys
+ opts[:__expand] ||= __expand
+ ExpansionTreeVisitor.handle_expansion(attribute, source, opts)
+ end
+
+ # configures an attribute for an array which can be expanded in a jbuilder template
+ #
+ # When shrunk, this is the equivalent of writing:
+ # ```ruby
+ # json.set! attribute, source.map{|i| i&.to_houid}
+ # ````
+ # When expanded, with the helper of this is the equivalent of writing:
+ # ```ruby
+ # json.(attribute) source do |item| # assumes opts[:as] is the same as "attribute"
+ # json.partial! item
+ # end
+ # @param [Symbol] attribute the name of the attribute that you would like output.
+ # @param [Enumerable] source an enumerable of objects, each of which has an attribute which can be expanded
+ # @option opts [JbuilderTemplate] :json the JBuilder object being used to generate the outputted JSON This is required.
+ # @option opts [ExpansionTree] :__expand the ExpansionTree for this current template. This is required.
+ # @option opts [Symbol] :as_item the method we call on each of the array items as part of a #handle_array_expansion call.
+ # @yieldparam [ItemExpansion] item if block is passed, an ItemExpansion will be yielded for each item for in the partial
+ def handle_array_expansion(attribute, source, opts={}, &block)
+ opts = opts.deep_symbolize_keys
+ opts[:__expand] ||= __expand
+ ExpansionTreeVisitor.handle_array_expansion(attribute, source, opts, &block)
+ end
+
+ helper_method :handle_expansion, :handle_array_expansion, :build_json_expansion_path_tree
+ end
+
+ def self.build_json_expansion_path_tree(*paths)
+ request = ExpansionTree.new
+ paths = paths.flatten
+ if paths.count == 1
+ if paths.first.is_a? String
+ request = ExpansionTree.new(*paths)
+ elsif paths.first.is_a? ExpansionTree
+ request = paths.first
+ end
+ elsif paths.any?
+ request = ExpansionTree.new(*paths)
+ end
+
+ request
+ end
+
+ # Applies Visitor(ish) pattern to an object. One of these is created for every new partial corresponding to a node in the tree
+ #
+ # Should not be used directly.
+ #
+ # @api private
+ class ExpansionTreeVisitor
+ # the attribute to add to the outputted JSON
+ # @return [Symbol]
+ attr_reader :attribute
+
+ # the object we're visiting
+ attr_reader :object
+
+ # @param [Symbol] attribute the attribute in the outputted JSON
+ # @param [Object,Enumerable
+
+ <%= yield %>
+ <%= render "emails/powered_by" %>
+
+
diff --git a/app/views/layouts/mailer.html.erb b/app/views/layouts/mailer.html.erb
new file mode 100644
index 000000000..0228f2be8
--- /dev/null
+++ b/app/views/layouts/mailer.html.erb
@@ -0,0 +1,18 @@
+<%- # License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later -%>
+
+
+
+