From 5e2b521d06e0ab87324be4f593e9604066f4a920 Mon Sep 17 00:00:00 2001 From: kee nam Date: Tue, 10 Oct 2017 14:22:26 -0700 Subject: [PATCH 01/35] Initial Rails setup --- .gitignore | 19 ++ Gemfile | 66 ++++++ Gemfile.lock | 222 ++++++++++++++++++ Rakefile | 6 + app/assets/config/manifest.js | 3 + app/assets/images/.keep | 0 app/assets/javascripts/application.js | 15 ++ app/assets/javascripts/cable.js | 13 + app/assets/javascripts/channels/.keep | 0 app/assets/stylesheets/application.css | 15 ++ app/channels/application_cable/channel.rb | 4 + app/channels/application_cable/connection.rb | 4 + app/controllers/application_controller.rb | 3 + app/controllers/concerns/.keep | 0 app/helpers/application_helper.rb | 2 + app/jobs/application_job.rb | 2 + app/mailers/application_mailer.rb | 4 + app/models/application_record.rb | 3 + app/models/concerns/.keep | 0 app/views/layouts/application.html.erb | 14 ++ app/views/layouts/mailer.html.erb | 13 + app/views/layouts/mailer.text.erb | 1 + bin/bundle | 3 + bin/rails | 9 + bin/rake | 9 + bin/setup | 38 +++ bin/spring | 17 ++ bin/update | 29 +++ bin/yarn | 11 + config.ru | 5 + config/application.rb | 25 ++ config/boot.rb | 3 + config/cable.yml | 10 + config/database.yml | 85 +++++++ config/environment.rb | 5 + config/environments/development.rb | 54 +++++ config/environments/production.rb | 91 +++++++ config/environments/test.rb | 42 ++++ .../application_controller_renderer.rb | 8 + config/initializers/assets.rb | 14 ++ config/initializers/backtrace_silencers.rb | 7 + config/initializers/cookies_serializer.rb | 5 + .../initializers/filter_parameter_logging.rb | 4 + config/initializers/inflections.rb | 16 ++ config/initializers/mime_types.rb | 4 + config/initializers/wrap_parameters.rb | 14 ++ config/locales/en.yml | 33 +++ config/puma.rb | 56 +++++ config/routes.rb | 3 + config/secrets.yml | 32 +++ config/spring.rb | 6 + db/seeds.rb | 7 + lib/assets/.keep | 0 lib/tasks/.keep | 0 log/.keep | 0 package.json | 5 + public/404.html | 67 ++++++ public/422.html | 67 ++++++ public/500.html | 66 ++++++ public/apple-touch-icon-precomposed.png | 0 public/apple-touch-icon.png | 0 public/favicon.ico | 0 public/robots.txt | 1 + test/application_system_test_case.rb | 5 + test/controllers/.keep | 0 test/fixtures/.keep | 0 test/fixtures/files/.keep | 0 test/helpers/.keep | 0 test/integration/.keep | 0 test/mailers/.keep | 0 test/models/.keep | 0 test/system/.keep | 0 test/test_helper.rb | 26 ++ tmp/.keep | 0 vendor/.keep | 0 75 files changed, 1291 insertions(+) create mode 100644 .gitignore create mode 100644 Gemfile create mode 100644 Gemfile.lock create mode 100644 Rakefile create mode 100644 app/assets/config/manifest.js create mode 100644 app/assets/images/.keep create mode 100644 app/assets/javascripts/application.js create mode 100644 app/assets/javascripts/cable.js create mode 100644 app/assets/javascripts/channels/.keep create mode 100644 app/assets/stylesheets/application.css create mode 100644 app/channels/application_cable/channel.rb create mode 100644 app/channels/application_cable/connection.rb create mode 100644 app/controllers/application_controller.rb create mode 100644 app/controllers/concerns/.keep create mode 100644 app/helpers/application_helper.rb create mode 100644 app/jobs/application_job.rb create mode 100644 app/mailers/application_mailer.rb create mode 100644 app/models/application_record.rb create mode 100644 app/models/concerns/.keep create mode 100644 app/views/layouts/application.html.erb create mode 100644 app/views/layouts/mailer.html.erb create mode 100644 app/views/layouts/mailer.text.erb create mode 100755 bin/bundle create mode 100755 bin/rails create mode 100755 bin/rake create mode 100755 bin/setup create mode 100755 bin/spring create mode 100755 bin/update create mode 100755 bin/yarn create mode 100644 config.ru create mode 100644 config/application.rb create mode 100644 config/boot.rb create mode 100644 config/cable.yml create mode 100644 config/database.yml create mode 100644 config/environment.rb create mode 100644 config/environments/development.rb create mode 100644 config/environments/production.rb create mode 100644 config/environments/test.rb create mode 100644 config/initializers/application_controller_renderer.rb create mode 100644 config/initializers/assets.rb create mode 100644 config/initializers/backtrace_silencers.rb create mode 100644 config/initializers/cookies_serializer.rb create mode 100644 config/initializers/filter_parameter_logging.rb create mode 100644 config/initializers/inflections.rb create mode 100644 config/initializers/mime_types.rb create mode 100644 config/initializers/wrap_parameters.rb create mode 100644 config/locales/en.yml create mode 100644 config/puma.rb create mode 100644 config/routes.rb create mode 100644 config/secrets.yml create mode 100644 config/spring.rb create mode 100644 db/seeds.rb create mode 100644 lib/assets/.keep create mode 100644 lib/tasks/.keep create mode 100644 log/.keep create mode 100644 package.json create mode 100644 public/404.html create mode 100644 public/422.html create mode 100644 public/500.html create mode 100644 public/apple-touch-icon-precomposed.png create mode 100644 public/apple-touch-icon.png create mode 100644 public/favicon.ico create mode 100644 public/robots.txt create mode 100644 test/application_system_test_case.rb create mode 100644 test/controllers/.keep create mode 100644 test/fixtures/.keep create mode 100644 test/fixtures/files/.keep create mode 100644 test/helpers/.keep create mode 100644 test/integration/.keep create mode 100644 test/mailers/.keep create mode 100644 test/models/.keep create mode 100644 test/system/.keep create mode 100644 test/test_helper.rb create mode 100644 tmp/.keep create mode 100644 vendor/.keep diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000..82701fedc8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,19 @@ +# See https://help.github.com/articles/ignoring-files for more about ignoring files. +# +# If you find yourself ignoring temporary files generated by your text editor +# or operating system, you probably want to add a global ignore instead: +# git config --global core.excludesfile '~/.gitignore_global' + +# Ignore bundler config. +/.bundle + +# Ignore all logfiles and tempfiles. +/log/* +/tmp/* +!/log/.keep +!/tmp/.keep + +/node_modules +/yarn-error.log + +.byebug_history diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000000..8daa6f0f7d --- /dev/null +++ b/Gemfile @@ -0,0 +1,66 @@ +source 'https://rubygems.org' + +git_source(:github) do |repo_name| + repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/") + "https://github.com/#{repo_name}.git" +end + + +# Bundle edge Rails instead: gem 'rails', github: 'rails/rails' +gem 'rails', '~> 5.1.4' +# Use postgresql as the database for Active Record +gem 'pg', '~> 0.18' +# Use Puma as the app server +gem 'puma', '~> 3.7' +# Use SCSS for stylesheets +gem 'sass-rails', '~> 5.0' +# Use Uglifier as compressor for JavaScript assets +gem 'uglifier', '>= 1.3.0' +# See https://github.com/rails/execjs#readme for more supported runtimes +# gem 'therubyracer', platforms: :ruby + +# Use CoffeeScript for .coffee assets and views +# gem 'coffee-rails', '~> 4.2' +# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks +gem 'turbolinks', '~> 5' +# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder +gem 'jbuilder', '~> 2.5' +# Use Redis adapter to run Action Cable in production +# gem 'redis', '~> 3.0' +# Use ActiveModel has_secure_password +# gem 'bcrypt', '~> 3.1.7' + +# Use Capistrano for deployment +# gem 'capistrano-rails', group: :development + +group :development, :test do + # Call 'byebug' anywhere in the code to stop execution and get a debugger console + gem 'byebug', platforms: [:mri, :mingw, :x64_mingw] + # Adds support for Capybara system testing and selenium driver + gem 'capybara', '~> 2.13' + gem 'selenium-webdriver' + gem 'pry-rails' +end + +group :development do + # Access an IRB console on exception pages or by using <%= console %> anywhere in the code. + gem 'web-console', '>= 3.3.0' + gem 'listen', '>= 3.0.5', '< 3.2' + # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring + gem 'spring' + gem 'spring-watcher-listen', '~> 2.0.0' +end + +# Windows does not include zoneinfo files, so bundle the tzinfo-data gem +gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby] + +gem 'jquery-turbolinks' +group :development do + gem 'better_errors' + gem 'binding_of_caller' +end + +group :test do + gem 'minitest-rails' + gem 'minitest-reporters' +end diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000000..648a742cb3 --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,222 @@ +GEM + remote: https://rubygems.org/ + specs: + actioncable (5.1.4) + actionpack (= 5.1.4) + nio4r (~> 2.0) + websocket-driver (~> 0.6.1) + actionmailer (5.1.4) + actionpack (= 5.1.4) + actionview (= 5.1.4) + activejob (= 5.1.4) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (5.1.4) + actionview (= 5.1.4) + activesupport (= 5.1.4) + rack (~> 2.0) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.0.2) + actionview (5.1.4) + activesupport (= 5.1.4) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.0.3) + activejob (5.1.4) + activesupport (= 5.1.4) + globalid (>= 0.3.6) + activemodel (5.1.4) + activesupport (= 5.1.4) + activerecord (5.1.4) + activemodel (= 5.1.4) + activesupport (= 5.1.4) + arel (~> 8.0) + activesupport (5.1.4) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (~> 0.7) + minitest (~> 5.1) + tzinfo (~> 1.1) + addressable (2.5.2) + public_suffix (>= 2.0.2, < 4.0) + ansi (1.5.0) + arel (8.0.0) + better_errors (2.3.0) + coderay (>= 1.0.0) + erubi (>= 1.0.0) + rack (>= 0.9.0) + bindex (0.5.0) + binding_of_caller (0.7.2) + debug_inspector (>= 0.0.1) + builder (3.2.3) + byebug (9.1.0) + capybara (2.15.4) + addressable + mini_mime (>= 0.1.3) + nokogiri (>= 1.3.3) + rack (>= 1.0.0) + rack-test (>= 0.5.4) + xpath (~> 2.0) + childprocess (0.8.0) + ffi (~> 1.0, >= 1.0.11) + coderay (1.1.2) + concurrent-ruby (1.0.5) + crass (1.0.2) + debug_inspector (0.0.3) + erubi (1.7.0) + execjs (2.7.0) + ffi (1.9.18) + globalid (0.4.0) + activesupport (>= 4.2.0) + i18n (0.8.6) + jbuilder (2.7.0) + activesupport (>= 4.2.0) + multi_json (>= 1.2) + jquery-turbolinks (2.1.0) + railties (>= 3.1.0) + turbolinks + listen (3.1.5) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) + ruby_dep (~> 1.2) + loofah (2.1.1) + crass (~> 1.0.2) + nokogiri (>= 1.5.9) + mail (2.6.6) + mime-types (>= 1.16, < 4) + method_source (0.9.0) + mime-types (3.1) + mime-types-data (~> 3.2015) + mime-types-data (3.2016.0521) + mini_mime (0.1.4) + mini_portile2 (2.3.0) + minitest (5.10.3) + minitest-rails (3.0.0) + minitest (~> 5.8) + railties (~> 5.0) + minitest-reporters (1.1.18) + ansi + builder + minitest (>= 5.0) + ruby-progressbar + multi_json (1.12.2) + nio4r (2.1.0) + nokogiri (1.8.1) + mini_portile2 (~> 2.3.0) + pg (0.21.0) + pry (0.11.1) + coderay (~> 1.1.0) + method_source (~> 0.9.0) + pry-rails (0.3.6) + pry (>= 0.10.4) + public_suffix (3.0.0) + puma (3.10.0) + rack (2.0.3) + rack-test (0.7.0) + rack (>= 1.0, < 3) + rails (5.1.4) + actioncable (= 5.1.4) + actionmailer (= 5.1.4) + actionpack (= 5.1.4) + actionview (= 5.1.4) + activejob (= 5.1.4) + activemodel (= 5.1.4) + activerecord (= 5.1.4) + activesupport (= 5.1.4) + bundler (>= 1.3.0) + railties (= 5.1.4) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.0.3) + activesupport (>= 4.2.0) + nokogiri (>= 1.6) + rails-html-sanitizer (1.0.3) + loofah (~> 2.0) + railties (5.1.4) + actionpack (= 5.1.4) + activesupport (= 5.1.4) + method_source + rake (>= 0.8.7) + thor (>= 0.18.1, < 2.0) + rake (12.1.0) + rb-fsevent (0.10.2) + rb-inotify (0.9.10) + ffi (>= 0.5.0, < 2) + ruby-progressbar (1.9.0) + ruby_dep (1.5.0) + rubyzip (1.2.1) + sass (3.5.2) + sass-listen (~> 4.0.0) + sass-listen (4.0.0) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) + sass-rails (5.0.6) + railties (>= 4.0.0, < 6) + sass (~> 3.1) + sprockets (>= 2.8, < 4.0) + sprockets-rails (>= 2.0, < 4.0) + tilt (>= 1.1, < 3) + selenium-webdriver (3.6.0) + childprocess (~> 0.5) + rubyzip (~> 1.0) + spring (2.0.2) + activesupport (>= 4.2) + spring-watcher-listen (2.0.1) + listen (>= 2.7, < 4.0) + spring (>= 1.2, < 3.0) + sprockets (3.7.1) + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-rails (3.2.1) + actionpack (>= 4.0) + activesupport (>= 4.0) + sprockets (>= 3.0.0) + thor (0.20.0) + thread_safe (0.3.6) + tilt (2.0.8) + turbolinks (5.0.1) + turbolinks-source (~> 5) + turbolinks-source (5.0.3) + tzinfo (1.2.3) + thread_safe (~> 0.1) + uglifier (3.2.0) + execjs (>= 0.3.0, < 3) + web-console (3.5.1) + actionview (>= 5.0) + activemodel (>= 5.0) + bindex (>= 0.4.0) + railties (>= 5.0) + websocket-driver (0.6.5) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.2) + xpath (2.1.0) + nokogiri (~> 1.3) + +PLATFORMS + ruby + +DEPENDENCIES + better_errors + binding_of_caller + byebug + capybara (~> 2.13) + jbuilder (~> 2.5) + jquery-turbolinks + listen (>= 3.0.5, < 3.2) + minitest-rails + minitest-reporters + pg (~> 0.18) + pry-rails + puma (~> 3.7) + rails (~> 5.1.4) + sass-rails (~> 5.0) + selenium-webdriver + spring + spring-watcher-listen (~> 2.0.0) + turbolinks (~> 5) + tzinfo-data + uglifier (>= 1.3.0) + web-console (>= 3.3.0) + +BUNDLED WITH + 1.16.0.pre.3 diff --git a/Rakefile b/Rakefile new file mode 100644 index 0000000000..e85f913914 --- /dev/null +++ b/Rakefile @@ -0,0 +1,6 @@ +# Add your own tasks in files placed in lib/tasks ending in .rake, +# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake. + +require_relative 'config/application' + +Rails.application.load_tasks diff --git a/app/assets/config/manifest.js b/app/assets/config/manifest.js new file mode 100644 index 0000000000..b16e53d6d5 --- /dev/null +++ b/app/assets/config/manifest.js @@ -0,0 +1,3 @@ +//= link_tree ../images +//= link_directory ../javascripts .js +//= link_directory ../stylesheets .css diff --git a/app/assets/images/.keep b/app/assets/images/.keep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js new file mode 100644 index 0000000000..46b20359fa --- /dev/null +++ b/app/assets/javascripts/application.js @@ -0,0 +1,15 @@ +// This is a manifest file that'll be compiled into application.js, which will include all the files +// listed below. +// +// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, or any plugin's +// vendor/assets/javascripts directory can be referenced here using a relative path. +// +// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the +// compiled file. JavaScript code in this file should be added after the last require_* statement. +// +// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details +// about supported directives. +// +//= require rails-ujs +//= require turbolinks +//= require_tree . diff --git a/app/assets/javascripts/cable.js b/app/assets/javascripts/cable.js new file mode 100644 index 0000000000..739aa5f022 --- /dev/null +++ b/app/assets/javascripts/cable.js @@ -0,0 +1,13 @@ +// Action Cable provides the framework to deal with WebSockets in Rails. +// You can generate new channels where WebSocket features live using the `rails generate channel` command. +// +//= require action_cable +//= require_self +//= require_tree ./channels + +(function() { + this.App || (this.App = {}); + + App.cable = ActionCable.createConsumer(); + +}).call(this); diff --git a/app/assets/javascripts/channels/.keep b/app/assets/javascripts/channels/.keep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css new file mode 100644 index 0000000000..d05ea0f511 --- /dev/null +++ b/app/assets/stylesheets/application.css @@ -0,0 +1,15 @@ +/* + * This is a manifest file that'll be compiled into application.css, which will include all the files + * listed below. + * + * Any CSS and SCSS file within this directory, lib/assets/stylesheets, or any plugin's + * vendor/assets/stylesheets directory can be referenced here using a relative path. + * + * You're free to add application-wide styles to this file and they'll appear at the bottom of the + * compiled file so the styles you add here take precedence over styles defined in any other CSS/SCSS + * files in this directory. Styles in this file should be added after the last require_* statement. + * It is generally better to create a new file per style scope. + * + *= require_tree . + *= require_self + */ diff --git a/app/channels/application_cable/channel.rb b/app/channels/application_cable/channel.rb new file mode 100644 index 0000000000..d672697283 --- /dev/null +++ b/app/channels/application_cable/channel.rb @@ -0,0 +1,4 @@ +module ApplicationCable + class Channel < ActionCable::Channel::Base + end +end diff --git a/app/channels/application_cable/connection.rb b/app/channels/application_cable/connection.rb new file mode 100644 index 0000000000..0ff5442f47 --- /dev/null +++ b/app/channels/application_cable/connection.rb @@ -0,0 +1,4 @@ +module ApplicationCable + class Connection < ActionCable::Connection::Base + end +end diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb new file mode 100644 index 0000000000..1c07694e9d --- /dev/null +++ b/app/controllers/application_controller.rb @@ -0,0 +1,3 @@ +class ApplicationController < ActionController::Base + protect_from_forgery with: :exception +end diff --git a/app/controllers/concerns/.keep b/app/controllers/concerns/.keep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb new file mode 100644 index 0000000000..de6be7945c --- /dev/null +++ b/app/helpers/application_helper.rb @@ -0,0 +1,2 @@ +module ApplicationHelper +end diff --git a/app/jobs/application_job.rb b/app/jobs/application_job.rb new file mode 100644 index 0000000000..a009ace51c --- /dev/null +++ b/app/jobs/application_job.rb @@ -0,0 +1,2 @@ +class ApplicationJob < ActiveJob::Base +end diff --git a/app/mailers/application_mailer.rb b/app/mailers/application_mailer.rb new file mode 100644 index 0000000000..286b2239d1 --- /dev/null +++ b/app/mailers/application_mailer.rb @@ -0,0 +1,4 @@ +class ApplicationMailer < ActionMailer::Base + default from: 'from@example.com' + layout 'mailer' +end diff --git a/app/models/application_record.rb b/app/models/application_record.rb new file mode 100644 index 0000000000..10a4cba84d --- /dev/null +++ b/app/models/application_record.rb @@ -0,0 +1,3 @@ +class ApplicationRecord < ActiveRecord::Base + self.abstract_class = true +end diff --git a/app/models/concerns/.keep b/app/models/concerns/.keep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb new file mode 100644 index 0000000000..6af511b830 --- /dev/null +++ b/app/views/layouts/application.html.erb @@ -0,0 +1,14 @@ + + + + MediaRanker + <%= csrf_meta_tags %> + + <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> + <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %> + + + + <%= yield %> + + diff --git a/app/views/layouts/mailer.html.erb b/app/views/layouts/mailer.html.erb new file mode 100644 index 0000000000..cbd34d2e9d --- /dev/null +++ b/app/views/layouts/mailer.html.erb @@ -0,0 +1,13 @@ + + + + + + + + + <%= yield %> + + diff --git a/app/views/layouts/mailer.text.erb b/app/views/layouts/mailer.text.erb new file mode 100644 index 0000000000..37f0bddbd7 --- /dev/null +++ b/app/views/layouts/mailer.text.erb @@ -0,0 +1 @@ +<%= yield %> diff --git a/bin/bundle b/bin/bundle new file mode 100755 index 0000000000..66e9889e8b --- /dev/null +++ b/bin/bundle @@ -0,0 +1,3 @@ +#!/usr/bin/env ruby +ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__) +load Gem.bin_path('bundler', 'bundle') diff --git a/bin/rails b/bin/rails new file mode 100755 index 0000000000..5badb2fde0 --- /dev/null +++ b/bin/rails @@ -0,0 +1,9 @@ +#!/usr/bin/env ruby +begin + load File.expand_path('../spring', __FILE__) +rescue LoadError => e + raise unless e.message.include?('spring') +end +APP_PATH = File.expand_path('../config/application', __dir__) +require_relative '../config/boot' +require 'rails/commands' diff --git a/bin/rake b/bin/rake new file mode 100755 index 0000000000..d87d5f5781 --- /dev/null +++ b/bin/rake @@ -0,0 +1,9 @@ +#!/usr/bin/env ruby +begin + load File.expand_path('../spring', __FILE__) +rescue LoadError => e + raise unless e.message.include?('spring') +end +require_relative '../config/boot' +require 'rake' +Rake.application.run diff --git a/bin/setup b/bin/setup new file mode 100755 index 0000000000..78c4e861dc --- /dev/null +++ b/bin/setup @@ -0,0 +1,38 @@ +#!/usr/bin/env ruby +require 'pathname' +require 'fileutils' +include FileUtils + +# path to your application root. +APP_ROOT = Pathname.new File.expand_path('../../', __FILE__) + +def system!(*args) + system(*args) || abort("\n== Command #{args} failed ==") +end + +chdir APP_ROOT do + # This script is a starting point to setup your application. + # Add necessary setup steps to this file. + + puts '== Installing dependencies ==' + system! 'gem install bundler --conservative' + system('bundle check') || system!('bundle install') + + # Install JavaScript dependencies if using Yarn + # system('bin/yarn') + + + # puts "\n== Copying sample files ==" + # unless File.exist?('config/database.yml') + # cp 'config/database.yml.sample', 'config/database.yml' + # end + + puts "\n== Preparing database ==" + system! 'bin/rails db:setup' + + puts "\n== Removing old logs and tempfiles ==" + system! 'bin/rails log:clear tmp:clear' + + puts "\n== Restarting application server ==" + system! 'bin/rails restart' +end diff --git a/bin/spring b/bin/spring new file mode 100755 index 0000000000..fb2ec2ebb4 --- /dev/null +++ b/bin/spring @@ -0,0 +1,17 @@ +#!/usr/bin/env ruby + +# This file loads spring without using Bundler, in order to be fast. +# It gets overwritten when you run the `spring binstub` command. + +unless defined?(Spring) + require 'rubygems' + require 'bundler' + + lockfile = Bundler::LockfileParser.new(Bundler.default_lockfile.read) + spring = lockfile.specs.detect { |spec| spec.name == "spring" } + if spring + Gem.use_paths Gem.dir, Bundler.bundle_path.to_s, *Gem.path + gem 'spring', spring.version + require 'spring/binstub' + end +end diff --git a/bin/update b/bin/update new file mode 100755 index 0000000000..a8e4462f20 --- /dev/null +++ b/bin/update @@ -0,0 +1,29 @@ +#!/usr/bin/env ruby +require 'pathname' +require 'fileutils' +include FileUtils + +# path to your application root. +APP_ROOT = Pathname.new File.expand_path('../../', __FILE__) + +def system!(*args) + system(*args) || abort("\n== Command #{args} failed ==") +end + +chdir APP_ROOT do + # This script is a way to update your development environment automatically. + # Add necessary update steps to this file. + + puts '== Installing dependencies ==' + system! 'gem install bundler --conservative' + system('bundle check') || system!('bundle install') + + puts "\n== Updating database ==" + system! 'bin/rails db:migrate' + + puts "\n== Removing old logs and tempfiles ==" + system! 'bin/rails log:clear tmp:clear' + + puts "\n== Restarting application server ==" + system! 'bin/rails restart' +end diff --git a/bin/yarn b/bin/yarn new file mode 100755 index 0000000000..c2bacef836 --- /dev/null +++ b/bin/yarn @@ -0,0 +1,11 @@ +#!/usr/bin/env ruby +VENDOR_PATH = File.expand_path('..', __dir__) +Dir.chdir(VENDOR_PATH) do + begin + exec "yarnpkg #{ARGV.join(" ")}" + rescue Errno::ENOENT + $stderr.puts "Yarn executable was not detected in the system." + $stderr.puts "Download Yarn at https://yarnpkg.com/en/docs/install" + exit 1 + end +end diff --git a/config.ru b/config.ru new file mode 100644 index 0000000000..f7ba0b527b --- /dev/null +++ b/config.ru @@ -0,0 +1,5 @@ +# This file is used by Rack-based servers to start the application. + +require_relative 'config/environment' + +run Rails.application diff --git a/config/application.rb b/config/application.rb new file mode 100644 index 0000000000..e73bab908f --- /dev/null +++ b/config/application.rb @@ -0,0 +1,25 @@ +require_relative 'boot' + +require 'rails/all' + +# Require the gems listed in Gemfile, including any gems +# you've limited to :test, :development, or :production. +Bundler.require(*Rails.groups) + +module MediaRanker + class Application < Rails::Application + config.generators do |g| + # Force new test files to be generated in the minitest-spec style + g.test_framework :minitest, spec: true + + # Always use .js files, never .coffee + g.javascript_engine :js + end + # Initialize configuration defaults for originally generated Rails version. + config.load_defaults 5.1 + + # Settings in config/environments/* take precedence over those specified here. + # Application configuration should go into files in config/initializers + # -- all .rb files in that directory are automatically loaded. + end +end diff --git a/config/boot.rb b/config/boot.rb new file mode 100644 index 0000000000..30f5120df6 --- /dev/null +++ b/config/boot.rb @@ -0,0 +1,3 @@ +ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__) + +require 'bundler/setup' # Set up gems listed in the Gemfile. diff --git a/config/cable.yml b/config/cable.yml new file mode 100644 index 0000000000..3a27f13933 --- /dev/null +++ b/config/cable.yml @@ -0,0 +1,10 @@ +development: + adapter: async + +test: + adapter: async + +production: + adapter: redis + url: redis://localhost:6379/1 + channel_prefix: MediaRanker_production diff --git a/config/database.yml b/config/database.yml new file mode 100644 index 0000000000..0bd2511123 --- /dev/null +++ b/config/database.yml @@ -0,0 +1,85 @@ +# PostgreSQL. Versions 9.1 and up are supported. +# +# Install the pg driver: +# gem install pg +# On OS X with Homebrew: +# gem install pg -- --with-pg-config=/usr/local/bin/pg_config +# On OS X with MacPorts: +# gem install pg -- --with-pg-config=/opt/local/lib/postgresql84/bin/pg_config +# On Windows: +# gem install pg +# Choose the win32 build. +# Install PostgreSQL and put its /bin directory on your path. +# +# Configure Using Gemfile +# gem 'pg' +# +default: &default + adapter: postgresql + encoding: unicode + # For details on connection pooling, see Rails configuration guide + # http://guides.rubyonrails.org/configuring.html#database-pooling + pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> + +development: + <<: *default + database: MediaRanker_development + + # The specified database role being used to connect to postgres. + # To create additional roles in postgres see `$ createuser --help`. + # When left blank, postgres will use the default role. This is + # the same name as the operating system user that initialized the database. + #username: MediaRanker + + # The password associated with the postgres role (username). + #password: + + # Connect on a TCP socket. Omitted by default since the client uses a + # domain socket that doesn't need configuration. Windows does not have + # domain sockets, so uncomment these lines. + #host: localhost + + # The TCP port the server listens on. Defaults to 5432. + # If your server runs on a different port number, change accordingly. + #port: 5432 + + # Schema search path. The server defaults to $user,public + #schema_search_path: myapp,sharedapp,public + + # Minimum log levels, in increasing order: + # debug5, debug4, debug3, debug2, debug1, + # log, notice, warning, error, fatal, and panic + # Defaults to warning. + #min_messages: notice + +# Warning: The database defined as "test" will be erased and +# re-generated from your development database when you run "rake". +# Do not set this db to the same as development or production. +test: + <<: *default + database: MediaRanker_test + +# As with config/secrets.yml, you never want to store sensitive information, +# like your database password, in your source code. If your source code is +# ever seen by anyone, they now have access to your database. +# +# Instead, provide the password as a unix environment variable when you boot +# the app. Read http://guides.rubyonrails.org/configuring.html#configuring-a-database +# for a full rundown on how to provide these environment variables in a +# production deployment. +# +# On Heroku and other platform providers, you may have a full connection URL +# available as an environment variable. For example: +# +# DATABASE_URL="postgres://myuser:mypass@localhost/somedatabase" +# +# You can use this database configuration with: +# +# production: +# url: <%= ENV['DATABASE_URL'] %> +# +production: + <<: *default + database: MediaRanker_production + username: MediaRanker + password: <%= ENV['MEDIARANKER_DATABASE_PASSWORD'] %> diff --git a/config/environment.rb b/config/environment.rb new file mode 100644 index 0000000000..426333bb46 --- /dev/null +++ b/config/environment.rb @@ -0,0 +1,5 @@ +# Load the Rails application. +require_relative 'application' + +# Initialize the Rails application. +Rails.application.initialize! diff --git a/config/environments/development.rb b/config/environments/development.rb new file mode 100644 index 0000000000..5187e22186 --- /dev/null +++ b/config/environments/development.rb @@ -0,0 +1,54 @@ +Rails.application.configure do + # Settings specified here will take precedence over those in config/application.rb. + + # In the development environment your application's code is reloaded on + # every request. This slows down response time but is perfect for development + # since you don't have to restart the web server when you make code changes. + config.cache_classes = false + + # Do not eager load code on boot. + config.eager_load = false + + # Show full error reports. + config.consider_all_requests_local = true + + # Enable/disable caching. By default caching is disabled. + if Rails.root.join('tmp/caching-dev.txt').exist? + config.action_controller.perform_caching = true + + config.cache_store = :memory_store + config.public_file_server.headers = { + 'Cache-Control' => "public, max-age=#{2.days.seconds.to_i}" + } + else + config.action_controller.perform_caching = false + + config.cache_store = :null_store + end + + # Don't care if the mailer can't send. + config.action_mailer.raise_delivery_errors = false + + config.action_mailer.perform_caching = false + + # Print deprecation notices to the Rails logger. + config.active_support.deprecation = :log + + # Raise an error on page load if there are pending migrations. + config.active_record.migration_error = :page_load + + # Debug mode disables concatenation and preprocessing of assets. + # This option may cause significant delays in view rendering with a large + # number of complex assets. + config.assets.debug = true + + # Suppress logger output for asset requests. + config.assets.quiet = true + + # Raises error for missing translations + # config.action_view.raise_on_missing_translations = true + + # Use an evented file watcher to asynchronously detect changes in source code, + # routes, locales, etc. This feature depends on the listen gem. + config.file_watcher = ActiveSupport::EventedFileUpdateChecker +end diff --git a/config/environments/production.rb b/config/environments/production.rb new file mode 100644 index 0000000000..d242dac65c --- /dev/null +++ b/config/environments/production.rb @@ -0,0 +1,91 @@ +Rails.application.configure do + # Settings specified here will take precedence over those in config/application.rb. + + # Code is not reloaded between requests. + config.cache_classes = true + + # Eager load code on boot. This eager loads most of Rails and + # your application in memory, allowing both threaded web servers + # and those relying on copy on write to perform better. + # Rake tasks automatically ignore this option for performance. + config.eager_load = true + + # Full error reports are disabled and caching is turned on. + config.consider_all_requests_local = false + config.action_controller.perform_caching = true + + # Attempt to read encrypted secrets from `config/secrets.yml.enc`. + # Requires an encryption key in `ENV["RAILS_MASTER_KEY"]` or + # `config/secrets.yml.key`. + config.read_encrypted_secrets = true + + # Disable serving static files from the `/public` folder by default since + # Apache or NGINX already handles this. + config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present? + + # Compress JavaScripts and CSS. + config.assets.js_compressor = :uglifier + # config.assets.css_compressor = :sass + + # Do not fallback to assets pipeline if a precompiled asset is missed. + config.assets.compile = false + + # `config.assets.precompile` and `config.assets.version` have moved to config/initializers/assets.rb + + # Enable serving of images, stylesheets, and JavaScripts from an asset server. + # config.action_controller.asset_host = 'http://assets.example.com' + + # Specifies the header that your server uses for sending files. + # config.action_dispatch.x_sendfile_header = 'X-Sendfile' # for Apache + # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX + + # Mount Action Cable outside main process or domain + # config.action_cable.mount_path = nil + # config.action_cable.url = 'wss://example.com/cable' + # config.action_cable.allowed_request_origins = [ 'http://example.com', /http:\/\/example.*/ ] + + # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies. + # config.force_ssl = true + + # Use the lowest log level to ensure availability of diagnostic information + # when problems arise. + config.log_level = :debug + + # Prepend all log lines with the following tags. + config.log_tags = [ :request_id ] + + # Use a different cache store in production. + # config.cache_store = :mem_cache_store + + # Use a real queuing backend for Active Job (and separate queues per environment) + # config.active_job.queue_adapter = :resque + # config.active_job.queue_name_prefix = "MediaRanker_#{Rails.env}" + config.action_mailer.perform_caching = false + + # Ignore bad email addresses and do not raise email delivery errors. + # Set this to true and configure the email server for immediate delivery to raise delivery errors. + # config.action_mailer.raise_delivery_errors = false + + # Enable locale fallbacks for I18n (makes lookups for any locale fall back to + # the I18n.default_locale when a translation cannot be found). + config.i18n.fallbacks = true + + # Send deprecation notices to registered listeners. + config.active_support.deprecation = :notify + + # Use default logging formatter so that PID and timestamp are not suppressed. + config.log_formatter = ::Logger::Formatter.new + + # Use a different logger for distributed setups. + # require 'syslog/logger' + # config.logger = ActiveSupport::TaggedLogging.new(Syslog::Logger.new 'app-name') + + if ENV["RAILS_LOG_TO_STDOUT"].present? + logger = ActiveSupport::Logger.new(STDOUT) + logger.formatter = config.log_formatter + config.logger = ActiveSupport::TaggedLogging.new(logger) + end + + # Do not dump schema after migrations. + config.active_record.dump_schema_after_migration = false +end diff --git a/config/environments/test.rb b/config/environments/test.rb new file mode 100644 index 0000000000..8e5cbde533 --- /dev/null +++ b/config/environments/test.rb @@ -0,0 +1,42 @@ +Rails.application.configure do + # Settings specified here will take precedence over those in config/application.rb. + + # The test environment is used exclusively to run your application's + # test suite. You never need to work with it otherwise. Remember that + # your test database is "scratch space" for the test suite and is wiped + # and recreated between test runs. Don't rely on the data there! + config.cache_classes = true + + # Do not eager load code on boot. This avoids loading your whole application + # just for the purpose of running a single test. If you are using a tool that + # preloads Rails for running tests, you may have to set it to true. + config.eager_load = false + + # Configure public file server for tests with Cache-Control for performance. + config.public_file_server.enabled = true + config.public_file_server.headers = { + 'Cache-Control' => "public, max-age=#{1.hour.seconds.to_i}" + } + + # Show full error reports and disable caching. + config.consider_all_requests_local = true + config.action_controller.perform_caching = false + + # Raise exceptions instead of rendering exception templates. + config.action_dispatch.show_exceptions = false + + # Disable request forgery protection in test environment. + config.action_controller.allow_forgery_protection = false + config.action_mailer.perform_caching = false + + # Tell Action Mailer not to deliver emails to the real world. + # The :test delivery method accumulates sent emails in the + # ActionMailer::Base.deliveries array. + config.action_mailer.delivery_method = :test + + # Print deprecation notices to the stderr. + config.active_support.deprecation = :stderr + + # Raises error for missing translations + # config.action_view.raise_on_missing_translations = true +end diff --git a/config/initializers/application_controller_renderer.rb b/config/initializers/application_controller_renderer.rb new file mode 100644 index 0000000000..89d2efab2b --- /dev/null +++ b/config/initializers/application_controller_renderer.rb @@ -0,0 +1,8 @@ +# Be sure to restart your server when you modify this file. + +# ActiveSupport::Reloader.to_prepare do +# ApplicationController.renderer.defaults.merge!( +# http_host: 'example.org', +# https: false +# ) +# end diff --git a/config/initializers/assets.rb b/config/initializers/assets.rb new file mode 100644 index 0000000000..4b828e80cb --- /dev/null +++ b/config/initializers/assets.rb @@ -0,0 +1,14 @@ +# Be sure to restart your server when you modify this file. + +# Version of your assets, change this if you want to expire all your assets. +Rails.application.config.assets.version = '1.0' + +# Add additional assets to the asset load path. +# Rails.application.config.assets.paths << Emoji.images_path +# Add Yarn node_modules folder to the asset load path. +Rails.application.config.assets.paths << Rails.root.join('node_modules') + +# Precompile additional assets. +# application.js, application.css, and all non-JS/CSS in the app/assets +# folder are already added. +# Rails.application.config.assets.precompile += %w( admin.js admin.css ) diff --git a/config/initializers/backtrace_silencers.rb b/config/initializers/backtrace_silencers.rb new file mode 100644 index 0000000000..59385cdf37 --- /dev/null +++ b/config/initializers/backtrace_silencers.rb @@ -0,0 +1,7 @@ +# Be sure to restart your server when you modify this file. + +# You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces. +# Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ } + +# You can also remove all the silencers if you're trying to debug a problem that might stem from framework code. +# Rails.backtrace_cleaner.remove_silencers! diff --git a/config/initializers/cookies_serializer.rb b/config/initializers/cookies_serializer.rb new file mode 100644 index 0000000000..5a6a32d371 --- /dev/null +++ b/config/initializers/cookies_serializer.rb @@ -0,0 +1,5 @@ +# Be sure to restart your server when you modify this file. + +# Specify a serializer for the signed and encrypted cookie jars. +# Valid options are :json, :marshal, and :hybrid. +Rails.application.config.action_dispatch.cookies_serializer = :json diff --git a/config/initializers/filter_parameter_logging.rb b/config/initializers/filter_parameter_logging.rb new file mode 100644 index 0000000000..4a994e1e7b --- /dev/null +++ b/config/initializers/filter_parameter_logging.rb @@ -0,0 +1,4 @@ +# Be sure to restart your server when you modify this file. + +# Configure sensitive parameters which will be filtered from the log file. +Rails.application.config.filter_parameters += [:password] diff --git a/config/initializers/inflections.rb b/config/initializers/inflections.rb new file mode 100644 index 0000000000..ac033bf9dc --- /dev/null +++ b/config/initializers/inflections.rb @@ -0,0 +1,16 @@ +# Be sure to restart your server when you modify this file. + +# Add new inflection rules using the following format. Inflections +# are locale specific, and you may define rules for as many different +# locales as you wish. All of these examples are active by default: +# ActiveSupport::Inflector.inflections(:en) do |inflect| +# inflect.plural /^(ox)$/i, '\1en' +# inflect.singular /^(ox)en/i, '\1' +# inflect.irregular 'person', 'people' +# inflect.uncountable %w( fish sheep ) +# end + +# These inflection rules are supported but not enabled by default: +# ActiveSupport::Inflector.inflections(:en) do |inflect| +# inflect.acronym 'RESTful' +# end diff --git a/config/initializers/mime_types.rb b/config/initializers/mime_types.rb new file mode 100644 index 0000000000..dc1899682b --- /dev/null +++ b/config/initializers/mime_types.rb @@ -0,0 +1,4 @@ +# Be sure to restart your server when you modify this file. + +# Add new mime types for use in respond_to blocks: +# Mime::Type.register "text/richtext", :rtf diff --git a/config/initializers/wrap_parameters.rb b/config/initializers/wrap_parameters.rb new file mode 100644 index 0000000000..bbfc3961bf --- /dev/null +++ b/config/initializers/wrap_parameters.rb @@ -0,0 +1,14 @@ +# Be sure to restart your server when you modify this file. + +# This file contains settings for ActionController::ParamsWrapper which +# is enabled by default. + +# Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array. +ActiveSupport.on_load(:action_controller) do + wrap_parameters format: [:json] +end + +# To enable root element in JSON for ActiveRecord objects. +# ActiveSupport.on_load(:active_record) do +# self.include_root_in_json = true +# end diff --git a/config/locales/en.yml b/config/locales/en.yml new file mode 100644 index 0000000000..decc5a8573 --- /dev/null +++ b/config/locales/en.yml @@ -0,0 +1,33 @@ +# Files in the config/locales directory are used for internationalization +# and are automatically loaded by Rails. If you want to use locales other +# than English, add the necessary files in this directory. +# +# To use the locales, use `I18n.t`: +# +# I18n.t 'hello' +# +# In views, this is aliased to just `t`: +# +# <%= t('hello') %> +# +# To use a different locale, set it with `I18n.locale`: +# +# I18n.locale = :es +# +# This would use the information in config/locales/es.yml. +# +# The following keys must be escaped otherwise they will not be retrieved by +# the default I18n backend: +# +# true, false, on, off, yes, no +# +# Instead, surround them with single quotes. +# +# en: +# 'true': 'foo' +# +# To learn more, please read the Rails Internationalization guide +# available at http://guides.rubyonrails.org/i18n.html. + +en: + hello: "Hello world" diff --git a/config/puma.rb b/config/puma.rb new file mode 100644 index 0000000000..1e19380dcb --- /dev/null +++ b/config/puma.rb @@ -0,0 +1,56 @@ +# Puma can serve each request in a thread from an internal thread pool. +# The `threads` method setting takes two numbers: a minimum and maximum. +# Any libraries that use thread pools should be configured to match +# the maximum value specified for Puma. Default is set to 5 threads for minimum +# and maximum; this matches the default thread size of Active Record. +# +threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 } +threads threads_count, threads_count + +# Specifies the `port` that Puma will listen on to receive requests; default is 3000. +# +port ENV.fetch("PORT") { 3000 } + +# Specifies the `environment` that Puma will run in. +# +environment ENV.fetch("RAILS_ENV") { "development" } + +# Specifies the number of `workers` to boot in clustered mode. +# Workers are forked webserver processes. If using threads and workers together +# the concurrency of the application would be max `threads` * `workers`. +# Workers do not work on JRuby or Windows (both of which do not support +# processes). +# +# workers ENV.fetch("WEB_CONCURRENCY") { 2 } + +# Use the `preload_app!` method when specifying a `workers` number. +# This directive tells Puma to first boot the application and load code +# before forking the application. This takes advantage of Copy On Write +# process behavior so workers use less memory. If you use this option +# you need to make sure to reconnect any threads in the `on_worker_boot` +# block. +# +# preload_app! + +# If you are preloading your application and using Active Record, it's +# recommended that you close any connections to the database before workers +# are forked to prevent connection leakage. +# +# before_fork do +# ActiveRecord::Base.connection_pool.disconnect! if defined?(ActiveRecord) +# end + +# The code in the `on_worker_boot` will be called if you are using +# clustered mode by specifying a number of `workers`. After each worker +# process is booted, this block will be run. If you are using the `preload_app!` +# option, you will want to use this block to reconnect to any threads +# or connections that may have been created at application boot, as Ruby +# cannot share connections between processes. +# +# on_worker_boot do +# ActiveRecord::Base.establish_connection if defined?(ActiveRecord) +# end +# + +# Allow puma to be restarted by `rails restart` command. +plugin :tmp_restart diff --git a/config/routes.rb b/config/routes.rb new file mode 100644 index 0000000000..787824f888 --- /dev/null +++ b/config/routes.rb @@ -0,0 +1,3 @@ +Rails.application.routes.draw do + # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html +end diff --git a/config/secrets.yml b/config/secrets.yml new file mode 100644 index 0000000000..b6c79894ae --- /dev/null +++ b/config/secrets.yml @@ -0,0 +1,32 @@ +# Be sure to restart your server when you modify this file. + +# Your secret key is used for verifying the integrity of signed cookies. +# If you change this key, all old signed cookies will become invalid! + +# Make sure the secret is at least 30 characters and all random, +# no regular words or you'll be exposed to dictionary attacks. +# You can use `rails secret` to generate a secure secret key. + +# Make sure the secrets in this file are kept private +# if you're sharing your code publicly. + +# Shared secrets are available across all environments. + +# shared: +# api_key: a1B2c3D4e5F6 + +# Environmental secrets are only available for that specific environment. + +development: + secret_key_base: faff35171911fdc0b1285d58a76eed5b84151fb3a4d11c3586eeddb0bc3e092dfe3caa28e62ec4138f39b50010bfe337b8e942f578c073a8467185daab65ee4d + +test: + secret_key_base: 79c60a919760d6b9a977b8652c1e0ff68c9d4ce811ba18e702541324b6c9d4daf6aebed81195b119e0dd6a415a7d6fd61f45953060fa587c59891183084792a9 + +# Do not keep production secrets in the unencrypted secrets file. +# Instead, either read values from the environment. +# Or, use `bin/rails secrets:setup` to configure encrypted secrets +# and move the `production:` environment over there. + +production: + secret_key_base: <%= ENV["SECRET_KEY_BASE"] %> diff --git a/config/spring.rb b/config/spring.rb new file mode 100644 index 0000000000..c9119b40c0 --- /dev/null +++ b/config/spring.rb @@ -0,0 +1,6 @@ +%w( + .ruby-version + .rbenv-vars + tmp/restart.txt + tmp/caching-dev.txt +).each { |path| Spring.watch(path) } diff --git a/db/seeds.rb b/db/seeds.rb new file mode 100644 index 0000000000..1beea2accd --- /dev/null +++ b/db/seeds.rb @@ -0,0 +1,7 @@ +# This file should contain all the record creation needed to seed the database with its default values. +# The data can then be loaded with the rails db:seed command (or created alongside the database with db:setup). +# +# Examples: +# +# movies = Movie.create([{ name: 'Star Wars' }, { name: 'Lord of the Rings' }]) +# Character.create(name: 'Luke', movie: movies.first) diff --git a/lib/assets/.keep b/lib/assets/.keep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/lib/tasks/.keep b/lib/tasks/.keep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/log/.keep b/log/.keep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/package.json b/package.json new file mode 100644 index 0000000000..625900f9d8 --- /dev/null +++ b/package.json @@ -0,0 +1,5 @@ +{ + "name": "MediaRanker", + "private": true, + "dependencies": {} +} diff --git a/public/404.html b/public/404.html new file mode 100644 index 0000000000..2be3af26fc --- /dev/null +++ b/public/404.html @@ -0,0 +1,67 @@ + + + + The page you were looking for doesn't exist (404) + + + + + + +
+
+

The page you were looking for doesn't exist.

+

You may have mistyped the address or the page may have moved.

+
+

If you are the application owner check the logs for more information.

+
+ + diff --git a/public/422.html b/public/422.html new file mode 100644 index 0000000000..c08eac0d1d --- /dev/null +++ b/public/422.html @@ -0,0 +1,67 @@ + + + + The change you wanted was rejected (422) + + + + + + +
+
+

The change you wanted was rejected.

+

Maybe you tried to change something you didn't have access to.

+
+

If you are the application owner check the logs for more information.

+
+ + diff --git a/public/500.html b/public/500.html new file mode 100644 index 0000000000..78a030af22 --- /dev/null +++ b/public/500.html @@ -0,0 +1,66 @@ + + + + We're sorry, but something went wrong (500) + + + + + + +
+
+

We're sorry, but something went wrong.

+
+

If you are the application owner check the logs for more information.

+
+ + diff --git a/public/apple-touch-icon-precomposed.png b/public/apple-touch-icon-precomposed.png new file mode 100644 index 0000000000..e69de29bb2 diff --git a/public/apple-touch-icon.png b/public/apple-touch-icon.png new file mode 100644 index 0000000000..e69de29bb2 diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000000..e69de29bb2 diff --git a/public/robots.txt b/public/robots.txt new file mode 100644 index 0000000000..37b576a4a0 --- /dev/null +++ b/public/robots.txt @@ -0,0 +1 @@ +# See http://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file diff --git a/test/application_system_test_case.rb b/test/application_system_test_case.rb new file mode 100644 index 0000000000..d19212abd5 --- /dev/null +++ b/test/application_system_test_case.rb @@ -0,0 +1,5 @@ +require "test_helper" + +class ApplicationSystemTestCase < ActionDispatch::SystemTestCase + driven_by :selenium, using: :chrome, screen_size: [1400, 1400] +end diff --git a/test/controllers/.keep b/test/controllers/.keep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/fixtures/.keep b/test/fixtures/.keep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/fixtures/files/.keep b/test/fixtures/files/.keep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/helpers/.keep b/test/helpers/.keep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/integration/.keep b/test/integration/.keep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/mailers/.keep b/test/mailers/.keep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/models/.keep b/test/models/.keep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/system/.keep b/test/system/.keep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/test_helper.rb b/test/test_helper.rb new file mode 100644 index 0000000000..10594a3248 --- /dev/null +++ b/test/test_helper.rb @@ -0,0 +1,26 @@ +ENV["RAILS_ENV"] = "test" +require File.expand_path("../../config/environment", __FILE__) +require "rails/test_help" +require "minitest/rails" +require "minitest/reporters" # for Colorized output + +# For colorful output! +Minitest::Reporters.use!( + Minitest::Reporters::SpecReporter.new, + ENV, + Minitest.backtrace_filter +) + + +# To add Capybara feature tests add `gem "minitest-rails-capybara"` +# to the test group in the Gemfile and uncomment the following: +# require "minitest/rails/capybara" + +# Uncomment for awesome colorful output +# require "minitest/pride" + +class ActiveSupport::TestCase + # Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order. + fixtures :all + # Add more helper methods to be used by all tests here... +end diff --git a/tmp/.keep b/tmp/.keep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/vendor/.keep b/vendor/.keep new file mode 100644 index 0000000000..e69de29bb2 From 9d2a434f6db588c4ed0ca9b365b8c9450ac42d3b Mon Sep 17 00:00:00 2001 From: kee nam Date: Tue, 10 Oct 2017 14:24:20 -0700 Subject: [PATCH 02/35] Added controllers for Works, Users, and Votes --- app/assets/javascripts/users.js | 2 ++ app/assets/javascripts/votes.js | 2 ++ app/assets/javascripts/works.js | 2 ++ app/assets/stylesheets/users.scss | 3 +++ app/assets/stylesheets/votes.scss | 3 +++ app/assets/stylesheets/works.scss | 3 +++ app/controllers/users_controller.rb | 2 ++ app/controllers/votes_controller.rb | 2 ++ app/controllers/works_controller.rb | 2 ++ app/helpers/users_helper.rb | 2 ++ app/helpers/votes_helper.rb | 2 ++ app/helpers/works_helper.rb | 2 ++ test/controllers/users_controller_test.rb | 7 +++++++ test/controllers/votes_controller_test.rb | 7 +++++++ test/controllers/works_controller_test.rb | 7 +++++++ 15 files changed, 48 insertions(+) create mode 100644 app/assets/javascripts/users.js create mode 100644 app/assets/javascripts/votes.js create mode 100644 app/assets/javascripts/works.js create mode 100644 app/assets/stylesheets/users.scss create mode 100644 app/assets/stylesheets/votes.scss create mode 100644 app/assets/stylesheets/works.scss create mode 100644 app/controllers/users_controller.rb create mode 100644 app/controllers/votes_controller.rb create mode 100644 app/controllers/works_controller.rb create mode 100644 app/helpers/users_helper.rb create mode 100644 app/helpers/votes_helper.rb create mode 100644 app/helpers/works_helper.rb create mode 100644 test/controllers/users_controller_test.rb create mode 100644 test/controllers/votes_controller_test.rb create mode 100644 test/controllers/works_controller_test.rb diff --git a/app/assets/javascripts/users.js b/app/assets/javascripts/users.js new file mode 100644 index 0000000000..dee720facd --- /dev/null +++ b/app/assets/javascripts/users.js @@ -0,0 +1,2 @@ +// Place all the behaviors and hooks related to the matching controller here. +// All this logic will automatically be available in application.js. diff --git a/app/assets/javascripts/votes.js b/app/assets/javascripts/votes.js new file mode 100644 index 0000000000..dee720facd --- /dev/null +++ b/app/assets/javascripts/votes.js @@ -0,0 +1,2 @@ +// Place all the behaviors and hooks related to the matching controller here. +// All this logic will automatically be available in application.js. diff --git a/app/assets/javascripts/works.js b/app/assets/javascripts/works.js new file mode 100644 index 0000000000..dee720facd --- /dev/null +++ b/app/assets/javascripts/works.js @@ -0,0 +1,2 @@ +// Place all the behaviors and hooks related to the matching controller here. +// All this logic will automatically be available in application.js. diff --git a/app/assets/stylesheets/users.scss b/app/assets/stylesheets/users.scss new file mode 100644 index 0000000000..31a2eacb84 --- /dev/null +++ b/app/assets/stylesheets/users.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the Users controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/app/assets/stylesheets/votes.scss b/app/assets/stylesheets/votes.scss new file mode 100644 index 0000000000..9a6720f80e --- /dev/null +++ b/app/assets/stylesheets/votes.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the Votes controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/app/assets/stylesheets/works.scss b/app/assets/stylesheets/works.scss new file mode 100644 index 0000000000..5618452f3e --- /dev/null +++ b/app/assets/stylesheets/works.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the Works controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb new file mode 100644 index 0000000000..3e74dea87f --- /dev/null +++ b/app/controllers/users_controller.rb @@ -0,0 +1,2 @@ +class UsersController < ApplicationController +end diff --git a/app/controllers/votes_controller.rb b/app/controllers/votes_controller.rb new file mode 100644 index 0000000000..ffdb2760e0 --- /dev/null +++ b/app/controllers/votes_controller.rb @@ -0,0 +1,2 @@ +class VotesController < ApplicationController +end diff --git a/app/controllers/works_controller.rb b/app/controllers/works_controller.rb new file mode 100644 index 0000000000..56b02c9f2e --- /dev/null +++ b/app/controllers/works_controller.rb @@ -0,0 +1,2 @@ +class WorksController < ApplicationController +end diff --git a/app/helpers/users_helper.rb b/app/helpers/users_helper.rb new file mode 100644 index 0000000000..2310a240d7 --- /dev/null +++ b/app/helpers/users_helper.rb @@ -0,0 +1,2 @@ +module UsersHelper +end diff --git a/app/helpers/votes_helper.rb b/app/helpers/votes_helper.rb new file mode 100644 index 0000000000..5a82eed07d --- /dev/null +++ b/app/helpers/votes_helper.rb @@ -0,0 +1,2 @@ +module VotesHelper +end diff --git a/app/helpers/works_helper.rb b/app/helpers/works_helper.rb new file mode 100644 index 0000000000..ccb78c2b73 --- /dev/null +++ b/app/helpers/works_helper.rb @@ -0,0 +1,2 @@ +module WorksHelper +end diff --git a/test/controllers/users_controller_test.rb b/test/controllers/users_controller_test.rb new file mode 100644 index 0000000000..89decb54e0 --- /dev/null +++ b/test/controllers/users_controller_test.rb @@ -0,0 +1,7 @@ +require "test_helper" + +describe UsersController do + # it "must be a real test" do + # flunk "Need real tests" + # end +end diff --git a/test/controllers/votes_controller_test.rb b/test/controllers/votes_controller_test.rb new file mode 100644 index 0000000000..cf4d03935f --- /dev/null +++ b/test/controllers/votes_controller_test.rb @@ -0,0 +1,7 @@ +require "test_helper" + +describe VotesController do + # it "must be a real test" do + # flunk "Need real tests" + # end +end diff --git a/test/controllers/works_controller_test.rb b/test/controllers/works_controller_test.rb new file mode 100644 index 0000000000..d95073c22e --- /dev/null +++ b/test/controllers/works_controller_test.rb @@ -0,0 +1,7 @@ +require "test_helper" + +describe WorksController do + # it "must be a real test" do + # flunk "Need real tests" + # end +end From ad2aeeaa8cfb5fe739a3be1aacbd990f8890bf7f Mon Sep 17 00:00:00 2001 From: kee nam Date: Tue, 10 Oct 2017 14:34:04 -0700 Subject: [PATCH 03/35] Created database and generated models for work, user, and vote --- app/models/user.rb | 2 ++ app/models/vote.rb | 2 ++ app/models/work.rb | 2 ++ db/migrate/20171010212703_create_works.rb | 13 +++++++ db/migrate/20171010213125_create_users.rb | 10 ++++++ db/migrate/20171010213332_create_votes.rb | 11 ++++++ db/schema.rb | 43 +++++++++++++++++++++++ test/fixtures/users.yml | 9 +++++ test/fixtures/votes.yml | 11 ++++++ test/fixtures/works.yml | 15 ++++++++ test/models/user_test.rb | 9 +++++ test/models/vote_test.rb | 9 +++++ test/models/work_test.rb | 9 +++++ 13 files changed, 145 insertions(+) create mode 100644 app/models/user.rb create mode 100644 app/models/vote.rb create mode 100644 app/models/work.rb create mode 100644 db/migrate/20171010212703_create_works.rb create mode 100644 db/migrate/20171010213125_create_users.rb create mode 100644 db/migrate/20171010213332_create_votes.rb create mode 100644 db/schema.rb create mode 100644 test/fixtures/users.yml create mode 100644 test/fixtures/votes.yml create mode 100644 test/fixtures/works.yml create mode 100644 test/models/user_test.rb create mode 100644 test/models/vote_test.rb create mode 100644 test/models/work_test.rb diff --git a/app/models/user.rb b/app/models/user.rb new file mode 100644 index 0000000000..379658a509 --- /dev/null +++ b/app/models/user.rb @@ -0,0 +1,2 @@ +class User < ApplicationRecord +end diff --git a/app/models/vote.rb b/app/models/vote.rb new file mode 100644 index 0000000000..4c58e4f3d5 --- /dev/null +++ b/app/models/vote.rb @@ -0,0 +1,2 @@ +class Vote < ApplicationRecord +end diff --git a/app/models/work.rb b/app/models/work.rb new file mode 100644 index 0000000000..95322dd45e --- /dev/null +++ b/app/models/work.rb @@ -0,0 +1,2 @@ +class Work < ApplicationRecord +end diff --git a/db/migrate/20171010212703_create_works.rb b/db/migrate/20171010212703_create_works.rb new file mode 100644 index 0000000000..18a5fc2bd2 --- /dev/null +++ b/db/migrate/20171010212703_create_works.rb @@ -0,0 +1,13 @@ +class CreateWorks < ActiveRecord::Migration[5.1] + def change + create_table :works do |t| + t.string :title + t.string :category + t.string :creator + t.string :year + t.text :desc + + t.timestamps + end + end +end diff --git a/db/migrate/20171010213125_create_users.rb b/db/migrate/20171010213125_create_users.rb new file mode 100644 index 0000000000..6f99f074ce --- /dev/null +++ b/db/migrate/20171010213125_create_users.rb @@ -0,0 +1,10 @@ +class CreateUsers < ActiveRecord::Migration[5.1] + def change + create_table :users do |t| + t.string :name + t.date :join_date + + t.timestamps + end + end +end diff --git a/db/migrate/20171010213332_create_votes.rb b/db/migrate/20171010213332_create_votes.rb new file mode 100644 index 0000000000..082a8fc062 --- /dev/null +++ b/db/migrate/20171010213332_create_votes.rb @@ -0,0 +1,11 @@ +class CreateVotes < ActiveRecord::Migration[5.1] + def change + create_table :votes do |t| + t.date :date + t.integer :user_id + t.integer :work_id + + t.timestamps + end + end +end diff --git a/db/schema.rb b/db/schema.rb new file mode 100644 index 0000000000..1df5ccaf96 --- /dev/null +++ b/db/schema.rb @@ -0,0 +1,43 @@ +# This file is auto-generated from the current state of the database. Instead +# of editing this file, please use the migrations feature of Active Record to +# incrementally modify your database, and then regenerate this schema definition. +# +# Note that this schema.rb definition is the authoritative source for your +# database schema. If you need to create the application database on another +# system, you should be using db:schema:load, not running all the migrations +# from scratch. The latter is a flawed and unsustainable approach (the more migrations +# you'll amass, the slower it'll run and the greater likelihood for issues). +# +# It's strongly recommended that you check this file into your version control system. + +ActiveRecord::Schema.define(version: 20171010213332) do + + # These are extensions that must be enabled in order to support this database + enable_extension "plpgsql" + + create_table "users", force: :cascade do |t| + t.string "name" + t.date "join_date" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + + create_table "votes", force: :cascade do |t| + t.date "date" + t.integer "user_id" + t.integer "work_id" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + + create_table "works", force: :cascade do |t| + t.string "title" + t.string "category" + t.string "creator" + t.string "year" + t.text "desc" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + +end diff --git a/test/fixtures/users.yml b/test/fixtures/users.yml new file mode 100644 index 0000000000..38722091f0 --- /dev/null +++ b/test/fixtures/users.yml @@ -0,0 +1,9 @@ +# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +one: + name: MyString + join_date: 2017-10-10 + +two: + name: MyString + join_date: 2017-10-10 diff --git a/test/fixtures/votes.yml b/test/fixtures/votes.yml new file mode 100644 index 0000000000..71b880dba1 --- /dev/null +++ b/test/fixtures/votes.yml @@ -0,0 +1,11 @@ +# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +one: + date: 2017-10-10 + user_id: 1 + work_id: 1 + +two: + date: 2017-10-10 + user_id: 1 + work_id: 1 diff --git a/test/fixtures/works.yml b/test/fixtures/works.yml new file mode 100644 index 0000000000..09ecc603c6 --- /dev/null +++ b/test/fixtures/works.yml @@ -0,0 +1,15 @@ +# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +one: + title: MyString + category: MyString + creator: MyString + year: MyString + desc: MyText + +two: + title: MyString + category: MyString + creator: MyString + year: MyString + desc: MyText diff --git a/test/models/user_test.rb b/test/models/user_test.rb new file mode 100644 index 0000000000..cc862ac2d9 --- /dev/null +++ b/test/models/user_test.rb @@ -0,0 +1,9 @@ +require "test_helper" + +describe User do + let(:user) { User.new } + + it "must be valid" do + value(user).must_be :valid? + end +end diff --git a/test/models/vote_test.rb b/test/models/vote_test.rb new file mode 100644 index 0000000000..fc15947bd3 --- /dev/null +++ b/test/models/vote_test.rb @@ -0,0 +1,9 @@ +require "test_helper" + +describe Vote do + let(:vote) { Vote.new } + + it "must be valid" do + value(vote).must_be :valid? + end +end diff --git a/test/models/work_test.rb b/test/models/work_test.rb new file mode 100644 index 0000000000..f6fba7104d --- /dev/null +++ b/test/models/work_test.rb @@ -0,0 +1,9 @@ +require "test_helper" + +describe Work do + let(:work) { Work.new } + + it "must be valid" do + value(work).must_be :valid? + end +end From bc7de2f21b1b4db38dc70f63754d76f86be6b79d Mon Sep 17 00:00:00 2001 From: kee nam Date: Tue, 10 Oct 2017 14:42:23 -0700 Subject: [PATCH 04/35] Added relationships to user, vote, and work models --- app/models/user.rb | 3 +++ app/models/vote.rb | 5 +++++ app/models/work.rb | 3 +++ 3 files changed, 11 insertions(+) diff --git a/app/models/user.rb b/app/models/user.rb index 379658a509..5c5173ddfc 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -1,2 +1,5 @@ class User < ApplicationRecord + has_many :votes + + validates :name, presence: { message: "Please enter a username"}, uniqueness: true end diff --git a/app/models/vote.rb b/app/models/vote.rb index 4c58e4f3d5..d5c9cf67b8 100644 --- a/app/models/vote.rb +++ b/app/models/vote.rb @@ -1,2 +1,7 @@ class Vote < ApplicationRecord + belongs_to :user + belongs_to :work + + validates :user_id, presence: { message: "Vote does not belong to a user"} + validates :work_id, presence: { message: "Vote does not belong to a work"} end diff --git a/app/models/work.rb b/app/models/work.rb index 95322dd45e..e6d9acd11d 100644 --- a/app/models/work.rb +++ b/app/models/work.rb @@ -1,2 +1,5 @@ class Work < ApplicationRecord + has_many :votes + + validates :title, presence: { message: "Work must have a title"} end From 6370286d8430b543f52aa48bb6845b5e5f340182 Mon Sep 17 00:00:00 2001 From: kee nam Date: Tue, 10 Oct 2017 14:48:26 -0700 Subject: [PATCH 05/35] Added home controller for index and added routes --- app/assets/javascripts/home.js | 2 ++ app/assets/stylesheets/home.scss | 3 +++ app/controllers/home_controller.rb | 2 ++ app/helpers/home_helper.rb | 2 ++ config/routes.rb | 4 ++++ test/controllers/home_controller_test.rb | 7 +++++++ 6 files changed, 20 insertions(+) create mode 100644 app/assets/javascripts/home.js create mode 100644 app/assets/stylesheets/home.scss create mode 100644 app/controllers/home_controller.rb create mode 100644 app/helpers/home_helper.rb create mode 100644 test/controllers/home_controller_test.rb diff --git a/app/assets/javascripts/home.js b/app/assets/javascripts/home.js new file mode 100644 index 0000000000..dee720facd --- /dev/null +++ b/app/assets/javascripts/home.js @@ -0,0 +1,2 @@ +// Place all the behaviors and hooks related to the matching controller here. +// All this logic will automatically be available in application.js. diff --git a/app/assets/stylesheets/home.scss b/app/assets/stylesheets/home.scss new file mode 100644 index 0000000000..f0ddc6846a --- /dev/null +++ b/app/assets/stylesheets/home.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the home controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/app/controllers/home_controller.rb b/app/controllers/home_controller.rb new file mode 100644 index 0000000000..fc0b4743ac --- /dev/null +++ b/app/controllers/home_controller.rb @@ -0,0 +1,2 @@ +class HomeController < ApplicationController +end diff --git a/app/helpers/home_helper.rb b/app/helpers/home_helper.rb new file mode 100644 index 0000000000..23de56ac60 --- /dev/null +++ b/app/helpers/home_helper.rb @@ -0,0 +1,2 @@ +module HomeHelper +end diff --git a/config/routes.rb b/config/routes.rb index 787824f888..97e56f9ba0 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,3 +1,7 @@ Rails.application.routes.draw do # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html + root 'home#index' + resources :users, :works do + resources :votes, only: [:index, :new, :create] + end end diff --git a/test/controllers/home_controller_test.rb b/test/controllers/home_controller_test.rb new file mode 100644 index 0000000000..cf3d56b45e --- /dev/null +++ b/test/controllers/home_controller_test.rb @@ -0,0 +1,7 @@ +require "test_helper" + +describe HomeController do + # it "must be a real test" do + # flunk "Need real tests" + # end +end From 2c1830d1320274d05f5c9ad4d41c929aa70ab51d Mon Sep 17 00:00:00 2001 From: kee nam Date: Tue, 10 Oct 2017 15:21:37 -0700 Subject: [PATCH 06/35] Added models/user_test.rb tests --- test/models/user_test.rb | 42 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 39 insertions(+), 3 deletions(-) diff --git a/test/models/user_test.rb b/test/models/user_test.rb index cc862ac2d9..e35dc3e3b3 100644 --- a/test/models/user_test.rb +++ b/test/models/user_test.rb @@ -3,7 +3,43 @@ describe User do let(:user) { User.new } - it "must be valid" do - value(user).must_be :valid? - end + describe "validations" do + it "must not be valid without a name" do + is_valid = user.valid? + is_valid.must_equal false + end + + it "must be valid with a name" do + user.name = "Pamela Isley" + is_valid = user.valid? + is_valid.must_equal true + end + + it "requires a unique name" do + name = "Harleen Quinzel" + user_one = User.create!(name: name) + user_two = User.new(name: name) + + user_two.wont_be :valid? + end + end # end validations tests + + describe 'relations' do + it 'has an association with votes' do + User.reflect_on_association(:vote) + end + + it 'responds to votes' do + user.must_respond_to :votes + end + + it 'has many votes' do + u = User.create!(name: "Selina Kyle", id: 1) + w = Work.create!(title: "Of Mice and Men", id: 1) + v = Vote.create!(user_id: u.id, work_id: w.id) + + u.votes.must_include v + end + end # end relations tests + end From 64fa4b8b0f0ca301e9f947b654864c4d47161ab2 Mon Sep 17 00:00:00 2001 From: kee nam Date: Tue, 10 Oct 2017 15:31:52 -0700 Subject: [PATCH 07/35] Added tests for models/work_test.rb --- test/models/work_test.rb | 33 ++++++++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/test/models/work_test.rb b/test/models/work_test.rb index f6fba7104d..1f74749c94 100644 --- a/test/models/work_test.rb +++ b/test/models/work_test.rb @@ -3,7 +3,34 @@ describe Work do let(:work) { Work.new } - it "must be valid" do - value(work).must_be :valid? - end + describe "validations" do + it "must not be valid without a title" do + is_valid = work.valid? + is_valid.must_equal false + end + + it "must be valid with a title" do + work.title = "King Lear" + is_valid = work.valid? + is_valid.must_equal true + end + end # end validations tests + + describe 'relations' do + it 'has an association with votes' do + Work.reflect_on_association(:vote) + end + + it 'responds to votes' do + work.must_respond_to :votes + end + + it 'has many votes' do + u = User.create!(name: "Selina Kyle", id: 1) + w = Work.create!(title: "Of Mice and Men", id: 1) + v = Vote.create!(user_id: u.id, work_id: w.id) + + w.votes.must_include v + end + end # end relations tests end From e02191c1d3be0cb64927b47ae7aaf47644ebd6ef Mon Sep 17 00:00:00 2001 From: kee nam Date: Tue, 10 Oct 2017 17:04:13 -0700 Subject: [PATCH 08/35] Added models/vote_test.rb tests and users.csv and works.csv seed_data files --- db/seed_data/users.csv | 12 +++++++++ db/seed_data/works.csv | 34 ++++++++++++++++++++++++ db/seeds.rb | 45 ++++++++++++++++++++++++++++++++ test/models/vote_test.rb | 56 +++++++++++++++++++++++++++++++++++++--- 4 files changed, 144 insertions(+), 3 deletions(-) create mode 100644 db/seed_data/users.csv create mode 100644 db/seed_data/works.csv diff --git a/db/seed_data/users.csv b/db/seed_data/users.csv new file mode 100644 index 0000000000..54b0300b42 --- /dev/null +++ b/db/seed_data/users.csv @@ -0,0 +1,12 @@ +id,name,join_date +1,Aquila Sandford,2017-08-20 +2,Fabiano Mahmud,2016-04-27 +3,Cynwrig Siva,2015-11-20 +4,Iona Alemayehu,2014-09-01 +5,Lycurgus Ffransis,2014-09-19 +6,Scot Eusebios,2017-03-28 +7,Yash Burhan,2016-12-19 +8,Nicodemo Eogan,2004-10-20 +9,Bui Max,2010-09-15 +10,Urbanus Tal'at,2011-09-27 +11,Zsigmond Leonard,2009-12-18 \ No newline at end of file diff --git a/db/seed_data/works.csv b/db/seed_data/works.csv new file mode 100644 index 0000000000..27cb28e3eb --- /dev/null +++ b/db/seed_data/works.csv @@ -0,0 +1,34 @@ +id,title,creator,year,desc,category +1,Wolf and Sheep,H.O.T.,1997,"Top songs: 'We are the Future', 'Full of Happiness'",album +2,Let's Talk About Love,Celine Dion,1997,"Top songs: 'My Heart Will Go On', 'Tell Him'",album +3,Hybrid Theory,Linkin Park,2000,"Top songs: 'Crawling', 'One Step Closer'",album +4,The Fame Monster,Lady Gaga,2008,"Top songs: 'Bad Romance', 'Telephone'",album +5,Remapping the Human Soul,Epik High,2007,"Top songs: 'Fan', 'Love Love Love'",album +6,The College Dropout,Kanye West,2004,"Top songs: 'Through the Wire', 'Jesus Walks'",album +7,Hello World,BACK-ON,2011,"Top songs: 'Flyaway', 'With You feat. Me'",album +8,Always,Big Bang,2007,"Top songs: 'Lies', 'Always'",album +9,Pure Heroine,Lorde,2013,"Top songs: 'Royals', 'Tennis Court'",album +10,Instant Pig,Clazziquai,2004,"Top songs: 'Sweety', 'Come to Me'",album +11,Lemonade,Beyonce,2016,"Top songs: 'Formation', 'Hold Up'",album +12,Shakespeare's Memory,Jorge Luis Borges,1983,Argentine collection of short stories including 'The Garden of Forking Paths',book +13,No Exit,Jean Paul Sartre,1944,French Existentialist play with the famous line 'L'enfer c'est les autres',book +14,Les Miserables,Victor Hugo,1862,French historical novel that takes place before and during the French Revolution,book +15,Frankenstein,Mary Shelley,1818,Gothic English novel that explores the man-made creation of a monster,book +16,The Old Man and the Sea,Ernest Hemingway,1951,American novel depicting the vicious struggle between a man and a marlin,book +17,Catch-22,Joseph Heller,1961,"Satirical American novel set during World War II, following the life of an Army captain",book +18,Jurassic Park,Michael Crichton,1990,American science fiction novel that shows the dangers of genetic engineering,book +19,Siddhartha,Hermann Hesse,1922,German novel that details the spiritual journey of a man named Siddartha,book +20,The Great Gatsby,F. Scott Fitzgerald,1925,American novel set during the Jazz Age that explores decadence and social upheaval,book +21,Candide,Voltaire,1759,French satirical novella that explores various philosophies such as Leibnizian optimism,book +22,The Stranger,Albert Camus,1942,French Existentialist novel that details the feelings of a murderer and the Absurdity of life,book +23,Deer Hunter,Michael Cimino,1978,American epic war drama film that shows how three lives are changed after fighting in Vietnam,movie +24,Hook,Steven Spielberg,1991,American fantasy adventure film that details the life of Peter Pan after he grows up,movie +25,Good Will Hunting,Gus Van Sant,1997,American drama film that follows a blue-collar unrecognized genius and his relationships,movie +26,The Butterfly Effect,Eric Bress,2004,American psychological thriller supernatural fiction film about a man and his decisions' effects,movie +27,Meet Joe Black,Martin Brest,1998,American romantic fantasy film that follows an aging man and his relationship with death,movie +28,Sympathy for Lady Vengeance,Park Chan-wook,2005,South Korean psychological thriller film that explores the theme of vengeance and crime,movie +29,The Handmaiden,Park Chan-wook,2016,South Korean erotic psychological thriller set in Korea during times of Japanese colonial rule,movie +30,New World,Park Hoon-jung,2013,South Korean crime drama film that shows the conflict between the police and the mob,movie +31,Milk,Gus Van Sant,2008,American biographical film based on the life of gay rights activist and politician Harvey Milk,movie +32,Inception,Christopher Nolan,2010,American science fiction film that explores the creation of ideas and consciousness,movie +33,Godfather,Francis Ford Coppola,1972,American crim film that follows the the rise of Michael Corleone from outsider to mafia boss,movie diff --git a/db/seeds.rb b/db/seeds.rb index 1beea2accd..0b3c5d9b1e 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -5,3 +5,48 @@ # # movies = Movie.create([{ name: 'Star Wars' }, { name: 'Lord of the Rings' }]) # Character.create(name: 'Luke', movie: movies.first) + +require 'csv' + +USER_FILE = Rails.root.join('db', 'seed_data', 'users.csv') +puts "Loading raw user data from #{USER_FILE}" + +user_failures = [] +CSV.foreach(USER_FILE, :headers => true) do |row| + user = User.new + user.id = row['id'] + user.name = row['name'] + user.join_date = row['join_date'] + puts "Created user: #{user.inspect}" + successful = user.save + if !successful + user_failures << user + end +end + +puts "Added #{User.count} user records" +puts "#{user_failures.length} users failed to save" + + + +WORK_FILE = Rails.root.join('db', 'seed_data', 'works.csv') +puts "Loading raw work data from #{WORK_FILE}" + +work_failures = [] +CSV.foreach(WORK_FILE, :headers => true) do |row| + work = Work.new + work.id = row['id'] + work.title = row['title'] + work.creator = row['creator'] + work.year = row['year'] + work.desc = row['desc'] + work.category = row['category'] + puts "Created work: #{work.inspect}" + successful = work.save + if !successful + work_failures << work + end +end + +puts "Added #{Work.count} work records" +puts "#{work_failures.length} works failed to save" diff --git a/test/models/vote_test.rb b/test/models/vote_test.rb index fc15947bd3..487ae27aa7 100644 --- a/test/models/vote_test.rb +++ b/test/models/vote_test.rb @@ -3,7 +3,57 @@ describe Vote do let(:vote) { Vote.new } - it "must be valid" do - value(vote).must_be :valid? - end + describe "validations" do + it "must not be valid without a user_id nor a work_id" do + vote.valid?.must_equal false + end + + it "must not be valid without a user_id, even if it has a work_id" do + w = Work.create!(title: "Of Mice and Men", id: 1) + v = Vote.new(work_id: w.id) + is_valid = v.valid? + is_valid.must_equal false + end + + it "must not be valid without a work_id, even if it has a user_id" do + u = User.create!(name: "Selina Kyle", id: 1) + v = Vote.new(user_id: u.id) + is_valid = v.valid? + is_valid.must_equal false + end + + it "must be valid with both a user_id and a work_id" do + u = User.create!(name: "Selina Kyle", id: 1) + w = Work.create!(title: "Of Mice and Men", id: 1) + v = Vote.create!(user_id: u.id, work_id: w.id) + + is_valid = v.valid? + is_valid.must_equal true + end + end # end validations tests + + describe 'relations' do + it 'responds to user' do + vote.must_respond_to :user + end + + it 'has a User' do + u = User.create!(name: "Selina Kyle", id: 1) + v = Vote.new(user_id: u.id) + v.user_id.must_equal 1 + v.user.must_equal u + end + + it 'responds to work' do + vote.must_respond_to :work + end + + it 'has a Work' do + w = Work.create!(title: "Of Mice and Men", id: 1) + v = Vote.new(work_id: w.id) + v.work_id.must_equal 1 + v.work.must_equal w + end + + end # end relations tests end From 15aeecc4377c64eb2228adf523ae0d7d54c2835a Mon Sep 17 00:00:00 2001 From: kee nam Date: Tue, 10 Oct 2017 20:42:42 -0700 Subject: [PATCH 09/35] Added standard methods to users_controller.rb --- app/controllers/users_controller.rb | 46 +++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 3e74dea87f..d747be6919 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -1,2 +1,48 @@ class UsersController < ApplicationController + def index + @users = User.all + end + + def new + @user = User.new + end + + def create + @user = User.new(user_params) + if @user.save + redirect_to users_path + else + render :new + end + end + + def show + @user = User.find(params[:id]) + end + + def edit + @user = User.find(params[:id]) + end + + def update + @user = User.find(params[:id]) + @user.update_attributes(user_params) + if @user.save + redirect_to user_path(@user) + else + render :edit + end + end + + def destroy + @user = User.find(params[:id]) + @user.destroy + redirect_to users_path + end + + private + + def user_params + return params.require(:user).permit(:name) + end end From 3c42b86e04d5a747bc25730dc6215f6f3dde335a Mon Sep 17 00:00:00 2001 From: kee nam Date: Tue, 10 Oct 2017 20:53:08 -0700 Subject: [PATCH 10/35] Added standard methods to works_controller.rb --- app/controllers/works_controller.rb | 46 +++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/app/controllers/works_controller.rb b/app/controllers/works_controller.rb index 56b02c9f2e..17674d10ed 100644 --- a/app/controllers/works_controller.rb +++ b/app/controllers/works_controller.rb @@ -1,2 +1,48 @@ class WorksController < ApplicationController + def index + @works = Work.all + end + + def new + @work = Work.new + end + + def create + @work = Work.new(work_params) + if @work.save + redirect_to works_path + else + render :new + end + end + + def show + @work = Work.find(params[:id]) + end + + def edit + @work = Work.find(params[:id]) + end + + def update + @work = Work.find(params[:id]) + @work.update_attributes(work_params) + if @work.save + redirect_to work_path(@work) + else + render :edit + end + end + + def destroy + @work = Work.find(params[:id]) + @work.destroy + redirect_to works_path + end + + private + + def work_params + return params.require(:work).permit(:title, :category, :creator, :year, :desc) + end end From 2ecb0ed2d38c5b8fe9006162464f8cbc84a0b0ed Mon Sep 17 00:00:00 2001 From: kee nam Date: Tue, 10 Oct 2017 22:05:53 -0700 Subject: [PATCH 11/35] Added index.html.erb page --- app/views/home/index.html.erb | 3 +++ app/views/layouts/application.html.erb | 14 ++++++++++++++ 2 files changed, 17 insertions(+) create mode 100644 app/views/home/index.html.erb diff --git a/app/views/home/index.html.erb b/app/views/home/index.html.erb new file mode 100644 index 0000000000..15aaf0cee3 --- /dev/null +++ b/app/views/home/index.html.erb @@ -0,0 +1,3 @@ +
+

Index Page

+
diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 6af511b830..d95f2454d2 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -9,6 +9,20 @@ +
+

<%=link_to "Media Ranker", root_path %> | Ranking the Best of Everything

+ +
<%= yield %> From 856c6e21d9f3b87f399c36a7620281ea4f6577ac Mon Sep 17 00:00:00 2001 From: kee nam Date: Tue, 10 Oct 2017 22:41:00 -0700 Subject: [PATCH 12/35] Added works/index.html.erb file --- app/views/home/index.html.erb | 38 +++++++++++++++- app/views/works/index.html.erb | 81 ++++++++++++++++++++++++++++++++++ 2 files changed, 118 insertions(+), 1 deletion(-) create mode 100644 app/views/works/index.html.erb diff --git a/app/views/home/index.html.erb b/app/views/home/index.html.erb index 15aaf0cee3..960033ae11 100644 --- a/app/views/home/index.html.erb +++ b/app/views/home/index.html.erb @@ -1,3 +1,39 @@ diff --git a/app/views/works/index.html.erb b/app/views/works/index.html.erb new file mode 100644 index 0000000000..ccea254853 --- /dev/null +++ b/app/views/works/index.html.erb @@ -0,0 +1,81 @@ +
+

List of Works

+ +
+

Albums

+ + + + + + + + + <% @works.each do |work| %> + <% if work.category == "album" %> + + + + + + + + <% end %> + <% end %> +
VotesTitleCreated ByPublishedUpvote
<%= work.votes.length %><%= link_to work.title, work_path(work[:id]) %><%= work.creator %><%= work.year %>Upvote button
+
+ +
+

Books

+ + + + + + + + + <% @works.each do |work| %> + <% if work.category == "book" %> + + + + + + + + <% end %> + <% end %> +
VotesTitleCreated ByPublishedUpvote
<%= work.votes.length %><%= link_to work.title, work_path(work[:id]) %><%= work.creator %><%= work.year %>Upvote button
+
+ +
+

Movies

+ + + + + + + + + <% @works.each do |work| %> + <% if work.category == "movie" %> + + + + + + + + <% end %> + <% end %> +
VotesTitleCreated ByPublishedUpvote
<%= work.votes.length %><%= link_to work.title, work_path(work[:id]) %><%= work.creator %><%= work.year %>Upvote button
+
+ +
+ <%= link_to "View top media", root_path %> + <%= link_to "Add a new work", new_work_path %> +
+ +
From b45023704b1f3895900a1578ddb9fb2bd909aec0 Mon Sep 17 00:00:00 2001 From: kee nam Date: Wed, 11 Oct 2017 00:07:42 -0700 Subject: [PATCH 13/35] Edited home/index.html.erb file and added more variables to HomeController #index method --- app/controllers/home_controller.rb | 6 ++++ app/views/home/index.html.erb | 57 ++++++++++++++++++++---------- 2 files changed, 45 insertions(+), 18 deletions(-) diff --git a/app/controllers/home_controller.rb b/app/controllers/home_controller.rb index fc0b4743ac..be107f3c72 100644 --- a/app/controllers/home_controller.rb +++ b/app/controllers/home_controller.rb @@ -1,2 +1,8 @@ class HomeController < ApplicationController + def index + @works = Work.all + @movies = Work.where(category: "movie").sort_by { |work| work.votes.length } + @books = Work.where(category: "book").sort_by { |work| work.votes.length } + @albums = Work.where(category: "album").sort_by { |work| work.votes.length } + end end diff --git a/app/views/home/index.html.erb b/app/views/home/index.html.erb index 960033ae11..e9ac645973 100644 --- a/app/views/home/index.html.erb +++ b/app/views/home/index.html.erb @@ -1,39 +1,60 @@
-

Media Spotlight: Top Something by someone

-

# votes -

+

Media Spotlight: + <% w = @works.max_by { |work| work.votes.length } %> + <%= link_to work_path(w[:id]) do %> + <%= w.title %> by <%= w.creator %> + <% end %> +

+

<%= w.votes.length %> votes -


- +
+

Top Movies

    -
  • - example blahblah by author -
    - # votes -
  • + <% movies = @movies[0..9] %> + <% movies.each do |movie_work| %> +
  • + <%= link_to movie_work.title, work_path(movie_work[:id]) %> + by <%= movie_work.creator %> +
    + <%= movie_work.votes.length %> votes +
  • + <% end %>
+

Top Books

    -
  • - example blahblah by author -
    - # votes -
  • + <% books = @books[0..9] %> + <% books.each do |book_work| %> +
  • + <%= link_to book_work.title, work_path(book_work[:id]) %> + by <%= book_work.creator %> +
    + <%= book_work.votes.length %> votes +
  • + <% end %>
+

Top Albums

    -
  • - example blahblah by author -
    - # votes -
  • + <% albums = @albums[0..9] %> + <% albums.each do |album_work| %> +
  • + <%= link_to album_work.title, work_path(album_work[:id]) %> + by <%= album_work.creator %> +
    + <%= album_work.votes.length %> votes +
  • + <% end %>
+
From 45a20949be789cebd3637b6b3430402e118117ab Mon Sep 17 00:00:00 2001 From: kee nam Date: Wed, 11 Oct 2017 02:12:40 -0700 Subject: [PATCH 14/35] Added content to new, show, and form files in views/works, reset DB for numbering --- app/controllers/works_controller.rb | 2 +- app/views/layouts/_errors.html.erb | 15 ++++++++++++++ app/views/works/_form.html.erb | 31 +++++++++++++++++++++++++++++ app/views/works/new.html.erb | 7 +++++++ app/views/works/show.html.erb | 31 +++++++++++++++++++++++++++++ db/seeds.rb | 7 +++++++ 6 files changed, 92 insertions(+), 1 deletion(-) create mode 100644 app/views/layouts/_errors.html.erb create mode 100644 app/views/works/_form.html.erb create mode 100644 app/views/works/new.html.erb create mode 100644 app/views/works/show.html.erb diff --git a/app/controllers/works_controller.rb b/app/controllers/works_controller.rb index 17674d10ed..c24ef0298f 100644 --- a/app/controllers/works_controller.rb +++ b/app/controllers/works_controller.rb @@ -43,6 +43,6 @@ def destroy private def work_params - return params.require(:work).permit(:title, :category, :creator, :year, :desc) + return params.require(:work).permit(:id, :title, :category, :creator, :year, :desc) end end diff --git a/app/views/layouts/_errors.html.erb b/app/views/layouts/_errors.html.erb new file mode 100644 index 0000000000..4e1cb5e2e5 --- /dev/null +++ b/app/views/layouts/_errors.html.erb @@ -0,0 +1,15 @@ +<% if model.errors.messages.length > 0 %> +
+

ERROR

+
    + <% model.errors.messages.each do |field, problems|%> + <% problems.each do |problem| %> +
  • + <%= field %>: + <%= problem %> +
  • + <% end %> + <% end %> +
+
+<% end %> diff --git a/app/views/works/_form.html.erb b/app/views/works/_form.html.erb new file mode 100644 index 0000000000..2bf3b834c9 --- /dev/null +++ b/app/views/works/_form.html.erb @@ -0,0 +1,31 @@ +<%= form_for @work, html: {id: "work-form"} do |f| %> + + <%= content_tag :div, class: "category-wrapper" do %> + <%= f.label :category, "Category"%> + <%= f.select :category, options_for_select(["album", "book", "movie"]) %> + <% end %> + + <%= content_tag :div, class: "title-wrapper" do %> + <%= f.label :title, "Title" %> + <%= f.text_field :title %> + <% end %> + + <%= content_tag :div, class: "creator-wrapper" do %> + <%= f.label :creator, "Creator" %> + <%= f.text_field :creator %> + <% end %> + + <%= content_tag :div, class: "year-wrapper" do %> + <%= f.label :year, "Publication year" %> + <%= f.text_field :year %> + <% end %> + + <%= content_tag :div, class: "desc-wrapper" do %> + <%= f.label :desc, "Description" %> + <%= f.text_area :desc %> + <% end %> + + <%= content_tag :div, class: "submit-wrapper" do %> + <%= f.submit button_text %> + <% end %> +<% end %> diff --git a/app/views/works/new.html.erb b/app/views/works/new.html.erb new file mode 100644 index 0000000000..b346a59889 --- /dev/null +++ b/app/views/works/new.html.erb @@ -0,0 +1,7 @@ +
+

Add a new work

+ + <%= render partial: 'layouts/errors', locals: { model: @work } %> + + <%= render partial: "form", locals: { hide_placeholder_text: true, button_text: "Create Work" }%> +
diff --git a/app/views/works/show.html.erb b/app/views/works/show.html.erb new file mode 100644 index 0000000000..3e6000613e --- /dev/null +++ b/app/views/works/show.html.erb @@ -0,0 +1,31 @@ +
+ +
+

<%= @work.title %>

+

Created by: <%= @work.creator %>

+

Published: <%= @work.year %>

+

<%= @work.desc %>

+ + +
+ +
+

<%= @work.votes.length %> Votes for this <%= @work.category.capitalize%>

+ + + + + + <% @work.votes.each do |vote| %> + + + <% end %> +
UserDate
<% vote.user_id.name%><% vote.date %>
+
+ +
diff --git a/db/seeds.rb b/db/seeds.rb index 0b3c5d9b1e..fff57677fa 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -50,3 +50,10 @@ puts "Added #{Work.count} work records" puts "#{work_failures.length} works failed to save" + +puts "Manually resetting PK sequence on each table" +ActiveRecord::Base.connection.tables.each do |t| + ActiveRecord::Base.connection.reset_pk_sequence!(t) +end + +puts "done" From 25d245170bf7517a49f0853c9402abc35169ddee Mon Sep 17 00:00:00 2001 From: kee nam Date: Wed, 11 Oct 2017 02:19:10 -0700 Subject: [PATCH 15/35] Added edit.html.erb to view/works --- app/views/works/edit.html.erb | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 app/views/works/edit.html.erb diff --git a/app/views/works/edit.html.erb b/app/views/works/edit.html.erb new file mode 100644 index 0000000000..91e4191305 --- /dev/null +++ b/app/views/works/edit.html.erb @@ -0,0 +1,7 @@ +
+

Edit this <%= @work.category %>

+ + <%= render partial: 'layouts/errors', locals: { model: @work } %> + + <%= render partial: "form", locals: { button_text: "Update Work" }%> +
From abce17d101341284d769377e61afe29207e6ecbb Mon Sep 17 00:00:00 2001 From: kee nam Date: Wed, 11 Oct 2017 14:47:18 -0700 Subject: [PATCH 16/35] Editing tests for models and controllers -- failing works #update test --- app/controllers/users_controller.rb | 14 +++ app/controllers/works_controller.rb | 39 +++++--- app/views/layouts/application.html.erb | 18 ++++ app/views/users/login_form.html.erb | 4 + config/routes.rb | 3 + test/controllers/works_controller_test.rb | 109 +++++++++++++++++++++- test/models/user_test.rb | 8 -- test/models/vote_test.rb | 14 --- test/models/work_test.rb | 8 -- 9 files changed, 172 insertions(+), 45 deletions(-) create mode 100644 app/views/users/login_form.html.erb diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index d747be6919..43cd2f17c5 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -16,6 +16,20 @@ def create end end + def login_form + end + + def login + user_id = params[:user][:user_id] + user = User.find_by(id: user_id) + if user + session[:logged_in_user] = user_id + redirect_to root_path + else + head :not_found + end + end + def show @user = User.find(params[:id]) end diff --git a/app/controllers/works_controller.rb b/app/controllers/works_controller.rb index c24ef0298f..2761607623 100644 --- a/app/controllers/works_controller.rb +++ b/app/controllers/works_controller.rb @@ -10,34 +10,42 @@ def new def create @work = Work.new(work_params) if @work.save + # flash[:status] = :success + # flash[:message] = "Successfully created work #{work.id}" redirect_to works_path else - render :new + # flash.now[:status] = :failure + # flash.now[:message] = "Failed to create work" + # flash.now[:details] = @work.errors.messages + render :new, status: :bad_request end end def show - @work = Work.find(params[:id]) + find_work_by_params_id end def edit - @work = Work.find(params[:id]) + find_work_by_params_id end def update - @work = Work.find(params[:id]) - @work.update_attributes(work_params) - if @work.save - redirect_to work_path(@work) - else - render :edit + if find_by_params_id + @work.update_attributes(work_params) + if @work.save + redirect_to work_path(@work) + else + render :edit, status: :bad_request + return + end end end def destroy - @work = Work.find(params[:id]) - @work.destroy - redirect_to works_path + if find_by_params_id + @work.destroy + redirect_to works_path + end end private @@ -45,4 +53,11 @@ def destroy def work_params return params.require(:work).permit(:id, :title, :category, :creator, :year, :desc) end + + def find_work_by_params_id + @work = Work.find_by(id: params[:id]) + unless @work + head :not_found + end + end end diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index d95f2454d2..5eb558c9e9 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -26,3 +26,21 @@ <%= yield %> + + + + + diff --git a/app/views/users/login_form.html.erb b/app/views/users/login_form.html.erb new file mode 100644 index 0000000000..f3638afaaa --- /dev/null +++ b/app/views/users/login_form.html.erb @@ -0,0 +1,4 @@ +<%= form_tag do %> + <%= collection_select(:user, :user_id, User.all, :id, :name) %> + <%= submit_tag "Log In" %> +<% end %> diff --git a/config/routes.rb b/config/routes.rb index 97e56f9ba0..be62be028a 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -4,4 +4,7 @@ resources :users, :works do resources :votes, only: [:index, :new, :create] end + + get 'login', to: 'users#login_form', as: 'login' + post 'login', to: 'users#login' end diff --git a/test/controllers/works_controller_test.rb b/test/controllers/works_controller_test.rb index d95073c22e..974be0db19 100644 --- a/test/controllers/works_controller_test.rb +++ b/test/controllers/works_controller_test.rb @@ -1,7 +1,110 @@ require "test_helper" describe WorksController do - # it "must be a real test" do - # flunk "Need real tests" - # end + describe "index" do + it "returns success for all works" do + get works_path + must_respond_with :success + end + end + + describe "new" do + it "returns success for a new work" do + get new_work_path + must_respond_with :success + end + end + + describe "create" do + it "adds work to the database and redirects when the work data is valid" do + work_data = { + work: { + title: "testing", + category: "album" + } + } + Work.new(work_data[:work]).must_be :valid? + start_work_count = Work.count + + post works_path, params: work_data + + must_respond_with :redirect + must_redirect_to works_path + Work.count.must_equal start_work_count + 1 + end + + it "re-renders form when the work data is invalid" do + work_data = { + work: { + category: "album" + } + } + Work.new(work_data[:work]).wont_be :valid? + start_work_count = Work.count + + post works_path, params: work_data + + must_respond_with :bad_request + Work.count.must_equal start_work_count + end + end + + describe "show" do + it "returns success with valid id" do + work_id = Work.first.id + get work_path(work_id) + must_respond_with :success + end + + it "returns not_found with invalid id" do + invalid_id = Work.last.id + 1 + get work_path(invalid_id) + must_respond_with :not_found + end + end + + describe "edit" do + it "returns success with valid id" do + work_id = Work.first.id + get edit_work_path(work_id) + must_respond_with :success + end + + it "returns not_found with invalid id" do + invalid_id = Work.last.id + 1 + get edit_work_path(invalid_id) + must_respond_with :not_found + end + end + + describe "update" do + it "returns success if work exists and changes are valid" do + work = Work.first + changes = { + work: { + title: "testing", + category: "movie" + } + } + work.update_attributes(changes[:work]) + work.must_be :valid? + Work.new(changes[:work]) + + path work_path(work), params: changes + must_respond_with :redirect + must_redirect_to work_path(work) + + work.reload + work.title.must_equal changes[:work][:title] + end + + it "returns bad_request if work exists and changes are invalid" do + end + + it "returns not_found if work does not exist" do + end + end + + describe "destroy" do + end end diff --git a/test/models/user_test.rb b/test/models/user_test.rb index e35dc3e3b3..7b6983bfe0 100644 --- a/test/models/user_test.rb +++ b/test/models/user_test.rb @@ -32,14 +32,6 @@ it 'responds to votes' do user.must_respond_to :votes end - - it 'has many votes' do - u = User.create!(name: "Selina Kyle", id: 1) - w = Work.create!(title: "Of Mice and Men", id: 1) - v = Vote.create!(user_id: u.id, work_id: w.id) - - u.votes.must_include v - end end # end relations tests end diff --git a/test/models/vote_test.rb b/test/models/vote_test.rb index 487ae27aa7..c083a45912 100644 --- a/test/models/vote_test.rb +++ b/test/models/vote_test.rb @@ -37,23 +37,9 @@ vote.must_respond_to :user end - it 'has a User' do - u = User.create!(name: "Selina Kyle", id: 1) - v = Vote.new(user_id: u.id) - v.user_id.must_equal 1 - v.user.must_equal u - end - it 'responds to work' do vote.must_respond_to :work end - it 'has a Work' do - w = Work.create!(title: "Of Mice and Men", id: 1) - v = Vote.new(work_id: w.id) - v.work_id.must_equal 1 - v.work.must_equal w - end - end # end relations tests end diff --git a/test/models/work_test.rb b/test/models/work_test.rb index 1f74749c94..dfe655895c 100644 --- a/test/models/work_test.rb +++ b/test/models/work_test.rb @@ -24,13 +24,5 @@ it 'responds to votes' do work.must_respond_to :votes end - - it 'has many votes' do - u = User.create!(name: "Selina Kyle", id: 1) - w = Work.create!(title: "Of Mice and Men", id: 1) - v = Vote.create!(user_id: u.id, work_id: w.id) - - w.votes.must_include v - end end # end relations tests end From ca0d5ec7ffab6ade7e616597e9e063b3128f7e04 Mon Sep 17 00:00:00 2001 From: kee nam Date: Wed, 11 Oct 2017 15:44:14 -0700 Subject: [PATCH 17/35] Created and successfully completed works_controller_test.rb for all methods --- app/controllers/users_controller.rb | 12 +++++-- app/controllers/works_controller.rb | 20 +++++++++-- app/views/users/login_form.html.erb | 4 ++- config/routes.rb | 4 +-- test/controllers/works_controller_test.rb | 42 +++++++++++++++++++++-- 5 files changed, 71 insertions(+), 11 deletions(-) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 43cd2f17c5..26011478d4 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -20,13 +20,19 @@ def login_form end def login - user_id = params[:user][:user_id] - user = User.find_by(id: user_id) + # user_id = params[:user][:user_id] + name = params[:user][:name] + + # user = User.find_by(id: user_id) + user = User.find_by(name: name) if user session[:logged_in_user] = user_id redirect_to root_path else - head :not_found + # head :not_found + flash[:status] = :failure + flash[:message] = "No user with #{name}" + render :login_form end end diff --git a/app/controllers/works_controller.rb b/app/controllers/works_controller.rb index 2761607623..a7d1845025 100644 --- a/app/controllers/works_controller.rb +++ b/app/controllers/works_controller.rb @@ -30,10 +30,11 @@ def edit end def update - if find_by_params_id + if find_work_by_params_id @work.update_attributes(work_params) if @work.save redirect_to work_path(@work) + return else render :edit, status: :bad_request return @@ -42,8 +43,20 @@ def update end def destroy - if find_by_params_id + # if session[:logged_in_user] + # # current_user = User.find(session[:logged_in_user]) + # current_user = User.find_by(id: session[:logged_in_user]) + # # else + # # flash[:status] = :failure + # # flash[:message] = "You must be logged in!" + # # redirect_to works_path + # # return + # end + + if find_work_by_params_id @work.destroy + # flash[:status] = :success + # flash[:message] = "Deleted work #{@work.title}" redirect_to works_path end end @@ -51,7 +64,7 @@ def destroy private def work_params - return params.require(:work).permit(:id, :title, :category, :creator, :year, :desc) + return params.require(:work).permit(:title, :category, :creator, :year, :desc) end def find_work_by_params_id @@ -59,5 +72,6 @@ def find_work_by_params_id unless @work head :not_found end + return @work end end diff --git a/app/views/users/login_form.html.erb b/app/views/users/login_form.html.erb index f3638afaaa..c370b860f7 100644 --- a/app/views/users/login_form.html.erb +++ b/app/views/users/login_form.html.erb @@ -1,4 +1,6 @@ <%= form_tag do %> - <%= collection_select(:user, :user_id, User.all, :id, :name) %> + <%# collection_select(:user, :user_id, User.all, :id, :name) %> + <%= label_tag "Author Name"%> + <%= text_field :user, :name%> <%= submit_tag "Log In" %> <% end %> diff --git a/config/routes.rb b/config/routes.rb index be62be028a..f661a104da 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -5,6 +5,6 @@ resources :votes, only: [:index, :new, :create] end - get 'login', to: 'users#login_form', as: 'login' - post 'login', to: 'users#login' + # get 'login', to: 'users#login_form', as: 'login' + # post 'login', to: 'users#login' end diff --git a/test/controllers/works_controller_test.rb b/test/controllers/works_controller_test.rb index 974be0db19..e0304b16e7 100644 --- a/test/controllers/works_controller_test.rb +++ b/test/controllers/works_controller_test.rb @@ -88,9 +88,8 @@ } work.update_attributes(changes[:work]) work.must_be :valid? - Work.new(changes[:work]) - path work_path(work), params: changes + patch work_path(work), params: changes must_respond_with :redirect must_redirect_to work_path(work) @@ -99,12 +98,51 @@ end it "returns bad_request if work exists and changes are invalid" do + work = Work.first + changes = { + work: { + title: "", + } + } + work.update_attributes(changes[:work]) + work.wont_be :valid? + + patch work_path(work), params: changes + must_respond_with :bad_request end it "returns not_found if work does not exist" do + work = Work.first + changes = { + work: { + title: "testing", + category: "movie" + } + } + work.update_attributes(changes[:work]) + work.must_be :valid? + work.destroy + + patch work_path(work), params: changes + must_respond_with :not_found end end describe "destroy" do + it "returns success and destroys if work exists" do + work = Work.first + work.must_be :valid? + delete work_path(work) + must_respond_with :redirect + must_redirect_to works_path + end + + it "returns not_found if work does not exist" do + work = Work.first + work.must_be :valid? + delete work_path(work) + delete work_path(work) + must_respond_with :not_found + end end end From ae6a3b8a4d2a27b528bccddc3d55a443f133a7a5 Mon Sep 17 00:00:00 2001 From: kee nam Date: Wed, 11 Oct 2017 15:56:09 -0700 Subject: [PATCH 18/35] Edited db columns and users_controller.rb file --- app/controllers/users_controller.rb | 74 +++++++++++-------- db/migrate/20171011224505_edit_date_fields.rb | 14 ++++ db/schema.rb | 12 +-- 3 files changed, 60 insertions(+), 40 deletions(-) create mode 100644 db/migrate/20171011224505_edit_date_fields.rb diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 26011478d4..ae70f420d3 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -12,52 +12,56 @@ def create if @user.save redirect_to users_path else - render :new + render :new, status: :bad_request end end - def login_form - end - - def login - # user_id = params[:user][:user_id] - name = params[:user][:name] - - # user = User.find_by(id: user_id) - user = User.find_by(name: name) - if user - session[:logged_in_user] = user_id - redirect_to root_path - else - # head :not_found - flash[:status] = :failure - flash[:message] = "No user with #{name}" - render :login_form - end - end + # def login_form + # end + # + # def login + # # user_id = params[:user][:user_id] + # name = params[:user][:name] + # + # # user = User.find_by(id: user_id) + # user = User.find_by(name: name) + # if user + # session[:logged_in_user] = user_id + # redirect_to root_path + # else + # # head :not_found + # flash[:status] = :failure + # flash[:message] = "No user with #{name}" + # render :login_form + # end + # end def show - @user = User.find(params[:id]) + find_user_by_params_id end def edit - @user = User.find(params[:id]) + find_user_by_params_id end def update - @user = User.find(params[:id]) - @user.update_attributes(user_params) - if @user.save - redirect_to user_path(@user) - else - render :edit + if find_user_by_params_id + @user.update_attributes(user_params) + if @user.save + redirect_to user_path(@user) + return + else + render :edit, status: :bad_request + return + end end end def destroy - @user = User.find(params[:id]) - @user.destroy - redirect_to users_path + if find_user_by_params_id + @user.destroy + redirect_to users_path + end end private @@ -65,4 +69,12 @@ def destroy def user_params return params.require(:user).permit(:name) end + + def find_user_by_params_id + @user = User.find_by(id: params[:id]) + unless @user + head :not_found + end + return @user + end end diff --git a/db/migrate/20171011224505_edit_date_fields.rb b/db/migrate/20171011224505_edit_date_fields.rb new file mode 100644 index 0000000000..7a21050ff2 --- /dev/null +++ b/db/migrate/20171011224505_edit_date_fields.rb @@ -0,0 +1,14 @@ +class EditDateFields < ActiveRecord::Migration[5.1] + def change + remove_column(:users, :updated_at) + remove_column(:users, :join_date) + rename_column(:users, :created_at, :join_date) + + remove_column(:votes, :updated_at) + remove_column(:votes, :date) + rename_column(:votes, :created_at, :date) + + remove_column(:works, :updated_at) + remove_column(:works, :created_at) + end +end diff --git a/db/schema.rb b/db/schema.rb index 1df5ccaf96..f7d3f3088a 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,24 +10,20 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20171010213332) do +ActiveRecord::Schema.define(version: 20171011224505) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" create_table "users", force: :cascade do |t| t.string "name" - t.date "join_date" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false + t.datetime "join_date", null: false end create_table "votes", force: :cascade do |t| - t.date "date" t.integer "user_id" t.integer "work_id" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false + t.datetime "date", null: false end create_table "works", force: :cascade do |t| @@ -36,8 +32,6 @@ t.string "creator" t.string "year" t.text "desc" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false end end From 02564e91c09b9184606bac8ff6711b20f2693c0a Mon Sep 17 00:00:00 2001 From: kee nam Date: Wed, 11 Oct 2017 18:03:42 -0700 Subject: [PATCH 19/35] Fixed failed tests and added index.html.erb for views/users --- app/views/users/index.html.erb | 1 + test/controllers/users_controller_test.rb | 9 ++++++--- test/models/user_test.rb | 2 +- test/models/vote_test.rb | 10 +++++----- 4 files changed, 13 insertions(+), 9 deletions(-) create mode 100644 app/views/users/index.html.erb diff --git a/app/views/users/index.html.erb b/app/views/users/index.html.erb new file mode 100644 index 0000000000..fdb3ba8a08 --- /dev/null +++ b/app/views/users/index.html.erb @@ -0,0 +1 @@ +

index for users

diff --git a/test/controllers/users_controller_test.rb b/test/controllers/users_controller_test.rb index 89decb54e0..e37cf093bb 100644 --- a/test/controllers/users_controller_test.rb +++ b/test/controllers/users_controller_test.rb @@ -1,7 +1,10 @@ require "test_helper" describe UsersController do - # it "must be a real test" do - # flunk "Need real tests" - # end + describe "index" do + it "returns success for all users" do + get users_path + must_respond_with :success + end + end end diff --git a/test/models/user_test.rb b/test/models/user_test.rb index 7b6983bfe0..d10c6b91a5 100644 --- a/test/models/user_test.rb +++ b/test/models/user_test.rb @@ -17,7 +17,7 @@ it "requires a unique name" do name = "Harleen Quinzel" - user_one = User.create!(name: name) + user_one = User.create!(name: name, join_date: DateTime.now) user_two = User.new(name: name) user_two.wont_be :valid? diff --git a/test/models/vote_test.rb b/test/models/vote_test.rb index c083a45912..91ec4478d9 100644 --- a/test/models/vote_test.rb +++ b/test/models/vote_test.rb @@ -9,23 +9,23 @@ end it "must not be valid without a user_id, even if it has a work_id" do - w = Work.create!(title: "Of Mice and Men", id: 1) + w = Work.create!(title: "Of Mice and Men") v = Vote.new(work_id: w.id) is_valid = v.valid? is_valid.must_equal false end it "must not be valid without a work_id, even if it has a user_id" do - u = User.create!(name: "Selina Kyle", id: 1) + u = User.create!(name: "Selina Kyle", join_date: DateTime.now) v = Vote.new(user_id: u.id) is_valid = v.valid? is_valid.must_equal false end it "must be valid with both a user_id and a work_id" do - u = User.create!(name: "Selina Kyle", id: 1) - w = Work.create!(title: "Of Mice and Men", id: 1) - v = Vote.create!(user_id: u.id, work_id: w.id) + u = User.create!(name: "Selina Kyle", join_date: DateTime.now) + w = Work.create!(title: "Of Mice and Men") + v = Vote.new(user_id: u.id, work_id: w.id) is_valid = v.valid? is_valid.must_equal true From 21ead3c441b7eb38a3ccf3869697b24b94ae4287 Mon Sep 17 00:00:00 2001 From: kee nam Date: Wed, 11 Oct 2017 18:09:57 -0700 Subject: [PATCH 20/35] Adding tests to users_controller_test.rb --- test/controllers/users_controller_test.rb | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/test/controllers/users_controller_test.rb b/test/controllers/users_controller_test.rb index e37cf093bb..3ed0bc5047 100644 --- a/test/controllers/users_controller_test.rb +++ b/test/controllers/users_controller_test.rb @@ -7,4 +7,26 @@ must_respond_with :success end end + + describe "new" do + it "returns success for a new work" do + # get new_user_path + # must_respond_with :success + end + end + + describe "create" do + end + + describe "show" do + end + + describe "edit" do + end + + describe "update" do + end + + describe "destroy" do + end end From cbe5a3f80302c67c03c7c8e602741a1ffd87ec38 Mon Sep 17 00:00:00 2001 From: kee nam Date: Thu, 12 Oct 2017 10:02:50 -0700 Subject: [PATCH 21/35] Added foundation.css to project --- app/assets/stylesheets/foundation.css | 5805 +++++++++++++++++++++++++ 1 file changed, 5805 insertions(+) create mode 100644 app/assets/stylesheets/foundation.css diff --git a/app/assets/stylesheets/foundation.css b/app/assets/stylesheets/foundation.css new file mode 100644 index 0000000000..ac6648c4d6 --- /dev/null +++ b/app/assets/stylesheets/foundation.css @@ -0,0 +1,5805 @@ +@charset "UTF-8"; +/** + * Foundation for Sites by ZURB + * Version 6.4.2 + * foundation.zurb.com + * Licensed under MIT Open Source + */ +@media print, screen and (min-width: 40em) { + .reveal, .reveal.tiny, .reveal.small, .reveal.large { + right: auto; + left: auto; + margin: 0 auto; } } + +/*! normalize-scss | MIT/GPLv2 License | bit.ly/normalize-scss */ +/* Document + ========================================================================== */ +/** + * 1. Change the default font family in all browsers (opinionated). + * 2. Correct the line height in all browsers. + * 3. Prevent adjustments of font size after orientation changes in + * IE on Windows Phone and in iOS. + */ +html { + font-family: sans-serif; + /* 1 */ + line-height: 1.15; + /* 2 */ + -ms-text-size-adjust: 100%; + /* 3 */ + -webkit-text-size-adjust: 100%; + /* 3 */ } + +/* Sections + ========================================================================== */ +/** + * Remove the margin in all browsers (opinionated). + */ +body { + margin: 0; } + +/** + * Add the correct display in IE 9-. + */ +article, +aside, +footer, +header, +nav, +section { + display: block; } + +/** + * Correct the font size and margin on `h1` elements within `section` and + * `article` contexts in Chrome, Firefox, and Safari. + */ +h1 { + font-size: 2em; + margin: 0.67em 0; } + +/* Grouping content + ========================================================================== */ +/** + * Add the correct display in IE 9-. + */ +figcaption, +figure { + display: block; } + +/** + * Add the correct margin in IE 8. + */ +figure { + margin: 1em 40px; } + +/** + * 1. Add the correct box sizing in Firefox. + * 2. Show the overflow in Edge and IE. + */ +hr { + box-sizing: content-box; + /* 1 */ + height: 0; + /* 1 */ + overflow: visible; + /* 2 */ } + +/** + * Add the correct display in IE. + */ +main { + display: block; } + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ +pre { + font-family: monospace, monospace; + /* 1 */ + font-size: 1em; + /* 2 */ } + +/* Links + ========================================================================== */ +/** + * 1. Remove the gray background on active links in IE 10. + * 2. Remove gaps in links underline in iOS 8+ and Safari 8+. + */ +a { + background-color: transparent; + /* 1 */ + -webkit-text-decoration-skip: objects; + /* 2 */ } + +/** + * Remove the outline on focused links when they are also active or hovered + * in all browsers (opinionated). + */ +a:active, +a:hover { + outline-width: 0; } + +/* Text-level semantics + ========================================================================== */ +/** + * 1. Remove the bottom border in Firefox 39-. + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. + */ +abbr[title] { + border-bottom: none; + /* 1 */ + text-decoration: underline; + /* 2 */ + text-decoration: underline dotted; + /* 2 */ } + +/** + * Prevent the duplicate application of `bolder` by the next rule in Safari 6. + */ +b, +strong { + font-weight: inherit; } + +/** + * Add the correct font weight in Chrome, Edge, and Safari. + */ +b, +strong { + font-weight: bolder; } + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ +code, +kbd, +samp { + font-family: monospace, monospace; + /* 1 */ + font-size: 1em; + /* 2 */ } + +/** + * Add the correct font style in Android 4.3-. + */ +dfn { + font-style: italic; } + +/** + * Add the correct background and color in IE 9-. + */ +mark { + background-color: #ff0; + color: #000; } + +/** + * Add the correct font size in all browsers. + */ +small { + font-size: 80%; } + +/** + * Prevent `sub` and `sup` elements from affecting the line height in + * all browsers. + */ +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; } + +sub { + bottom: -0.25em; } + +sup { + top: -0.5em; } + +/* Embedded content + ========================================================================== */ +/** + * Add the correct display in IE 9-. + */ +audio, +video { + display: inline-block; } + +/** + * Add the correct display in iOS 4-7. + */ +audio:not([controls]) { + display: none; + height: 0; } + +/** + * Remove the border on images inside links in IE 10-. + */ +img { + border-style: none; } + +/** + * Hide the overflow in IE. + */ +svg:not(:root) { + overflow: hidden; } + +/* Forms + ========================================================================== */ +/** + * 1. Change the font styles in all browsers (opinionated). + * 2. Remove the margin in Firefox and Safari. + */ +button, +input, +optgroup, +select, +textarea { + font-family: sans-serif; + /* 1 */ + font-size: 100%; + /* 1 */ + line-height: 1.15; + /* 1 */ + margin: 0; + /* 2 */ } + +/** + * Show the overflow in IE. + */ +button { + overflow: visible; } + +/** + * Remove the inheritance of text transform in Edge, Firefox, and IE. + * 1. Remove the inheritance of text transform in Firefox. + */ +button, +select { + /* 1 */ + text-transform: none; } + +/** + * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video` + * controls in Android 4. + * 2. Correct the inability to style clickable types in iOS and Safari. + */ +button, +html [type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; + /* 2 */ } + +button, +[type="button"], +[type="reset"], +[type="submit"] { + /** + * Remove the inner border and padding in Firefox. + */ + /** + * Restore the focus styles unset by the previous rule. + */ } + button::-moz-focus-inner, + [type="button"]::-moz-focus-inner, + [type="reset"]::-moz-focus-inner, + [type="submit"]::-moz-focus-inner { + border-style: none; + padding: 0; } + button:-moz-focusring, + [type="button"]:-moz-focusring, + [type="reset"]:-moz-focusring, + [type="submit"]:-moz-focusring { + outline: 1px dotted ButtonText; } + +/** + * Show the overflow in Edge. + */ +input { + overflow: visible; } + +/** + * 1. Add the correct box sizing in IE 10-. + * 2. Remove the padding in IE 10-. + */ +[type="checkbox"], +[type="radio"] { + box-sizing: border-box; + /* 1 */ + padding: 0; + /* 2 */ } + +/** + * Correct the cursor style of increment and decrement buttons in Chrome. + */ +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; } + +/** + * 1. Correct the odd appearance in Chrome and Safari. + * 2. Correct the outline style in Safari. + */ +[type="search"] { + -webkit-appearance: textfield; + /* 1 */ + outline-offset: -2px; + /* 2 */ + /** + * Remove the inner padding and cancel buttons in Chrome and Safari on macOS. + */ } + [type="search"]::-webkit-search-cancel-button, [type="search"]::-webkit-search-decoration { + -webkit-appearance: none; } + +/** + * 1. Correct the inability to style clickable types in iOS and Safari. + * 2. Change font properties to `inherit` in Safari. + */ +::-webkit-file-upload-button { + -webkit-appearance: button; + /* 1 */ + font: inherit; + /* 2 */ } + +/** + * Change the border, margin, and padding in all browsers (opinionated). + */ +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; } + +/** + * 1. Correct the text wrapping in Edge and IE. + * 2. Correct the color inheritance from `fieldset` elements in IE. + * 3. Remove the padding so developers are not caught out when they zero out + * `fieldset` elements in all browsers. + */ +legend { + box-sizing: border-box; + /* 1 */ + display: table; + /* 1 */ + max-width: 100%; + /* 1 */ + padding: 0; + /* 3 */ + color: inherit; + /* 2 */ + white-space: normal; + /* 1 */ } + +/** + * 1. Add the correct display in IE 9-. + * 2. Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ +progress { + display: inline-block; + /* 1 */ + vertical-align: baseline; + /* 2 */ } + +/** + * Remove the default vertical scrollbar in IE. + */ +textarea { + overflow: auto; } + +/* Interactive + ========================================================================== */ +/* + * Add the correct display in Edge, IE, and Firefox. + */ +details { + display: block; } + +/* + * Add the correct display in all browsers. + */ +summary { + display: list-item; } + +/* + * Add the correct display in IE 9-. + */ +menu { + display: block; } + +/* Scripting + ========================================================================== */ +/** + * Add the correct display in IE 9-. + */ +canvas { + display: inline-block; } + +/** + * Add the correct display in IE. + */ +template { + display: none; } + +/* Hidden + ========================================================================== */ +/** + * Add the correct display in IE 10-. + */ +[hidden] { + display: none; } + +.foundation-mq { + font-family: "small=0em&medium=40em&large=64em&xlarge=75em&xxlarge=90em"; } + +html { + box-sizing: border-box; + font-size: 100%; } + +*, +*::before, +*::after { + box-sizing: inherit; } + +body { + margin: 0; + padding: 0; + background: #fefefe; + font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; + font-weight: normal; + line-height: 1.5; + color: #0a0a0a; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; } + +img { + display: inline-block; + vertical-align: middle; + max-width: 100%; + height: auto; + -ms-interpolation-mode: bicubic; } + +textarea { + height: auto; + min-height: 50px; + border-radius: 0; } + +select { + box-sizing: border-box; + width: 100%; + border-radius: 0; } + +.map_canvas img, +.map_canvas embed, +.map_canvas object, +.mqa-display img, +.mqa-display embed, +.mqa-display object { + max-width: none !important; } + +button { + padding: 0; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + border: 0; + border-radius: 0; + background: transparent; + line-height: 1; + cursor: auto; } + [data-whatinput='mouse'] button { + outline: 0; } + +pre { + overflow: auto; } + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; } + +.is-visible { + display: block !important; } + +.is-hidden { + display: none !important; } + +.grid-container { + padding-right: 0.625rem; + padding-left: 0.625rem; + max-width: 75rem; + margin: 0 auto; } + @media print, screen and (min-width: 40em) { + .grid-container { + padding-right: 0.9375rem; + padding-left: 0.9375rem; } } + .grid-container.fluid { + padding-right: 0.625rem; + padding-left: 0.625rem; + max-width: 100%; + margin: 0 auto; } + @media print, screen and (min-width: 40em) { + .grid-container.fluid { + padding-right: 0.9375rem; + padding-left: 0.9375rem; } } + .grid-container.full { + padding-right: 0; + padding-left: 0; + max-width: 100%; + margin: 0 auto; } + +.grid-x { + display: -ms-flexbox; + display: flex; + -ms-flex-flow: row wrap; + flex-flow: row wrap; } + +.cell { + -ms-flex: 0 0 auto; + flex: 0 0 auto; + min-height: 0px; + min-width: 0px; + width: 100%; } + .cell.auto { + -ms-flex: 1 1 0px; + flex: 1 1 0px; } + .cell.shrink { + -ms-flex: 0 0 auto; + flex: 0 0 auto; } + +.grid-x > .auto { + width: auto; } + +.grid-x > .shrink { + width: auto; } + +.grid-x > .small-shrink, .grid-x > .small-full, .grid-x > .small-1, .grid-x > .small-2, .grid-x > .small-3, .grid-x > .small-4, .grid-x > .small-5, .grid-x > .small-6, .grid-x > .small-7, .grid-x > .small-8, .grid-x > .small-9, .grid-x > .small-10, .grid-x > .small-11, .grid-x > .small-12 { + -ms-flex-preferred-size: auto; + flex-basis: auto; } + +@media print, screen and (min-width: 40em) { + .grid-x > .medium-shrink, .grid-x > .medium-full, .grid-x > .medium-1, .grid-x > .medium-2, .grid-x > .medium-3, .grid-x > .medium-4, .grid-x > .medium-5, .grid-x > .medium-6, .grid-x > .medium-7, .grid-x > .medium-8, .grid-x > .medium-9, .grid-x > .medium-10, .grid-x > .medium-11, .grid-x > .medium-12 { + -ms-flex-preferred-size: auto; + flex-basis: auto; } } + +@media print, screen and (min-width: 64em) { + .grid-x > .large-shrink, .grid-x > .large-full, .grid-x > .large-1, .grid-x > .large-2, .grid-x > .large-3, .grid-x > .large-4, .grid-x > .large-5, .grid-x > .large-6, .grid-x > .large-7, .grid-x > .large-8, .grid-x > .large-9, .grid-x > .large-10, .grid-x > .large-11, .grid-x > .large-12 { + -ms-flex-preferred-size: auto; + flex-basis: auto; } } + +.grid-x > .small-1 { + width: 8.33333%; } + +.grid-x > .small-2 { + width: 16.66667%; } + +.grid-x > .small-3 { + width: 25%; } + +.grid-x > .small-4 { + width: 33.33333%; } + +.grid-x > .small-5 { + width: 41.66667%; } + +.grid-x > .small-6 { + width: 50%; } + +.grid-x > .small-7 { + width: 58.33333%; } + +.grid-x > .small-8 { + width: 66.66667%; } + +.grid-x > .small-9 { + width: 75%; } + +.grid-x > .small-10 { + width: 83.33333%; } + +.grid-x > .small-11 { + width: 91.66667%; } + +.grid-x > .small-12 { + width: 100%; } + +@media print, screen and (min-width: 40em) { + .grid-x > .medium-auto { + -ms-flex: 1 1 0px; + flex: 1 1 0px; + width: auto; } + .grid-x > .medium-shrink { + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; } + .grid-x > .medium-1 { + width: 8.33333%; } + .grid-x > .medium-2 { + width: 16.66667%; } + .grid-x > .medium-3 { + width: 25%; } + .grid-x > .medium-4 { + width: 33.33333%; } + .grid-x > .medium-5 { + width: 41.66667%; } + .grid-x > .medium-6 { + width: 50%; } + .grid-x > .medium-7 { + width: 58.33333%; } + .grid-x > .medium-8 { + width: 66.66667%; } + .grid-x > .medium-9 { + width: 75%; } + .grid-x > .medium-10 { + width: 83.33333%; } + .grid-x > .medium-11 { + width: 91.66667%; } + .grid-x > .medium-12 { + width: 100%; } } + +@media print, screen and (min-width: 64em) { + .grid-x > .large-auto { + -ms-flex: 1 1 0px; + flex: 1 1 0px; + width: auto; } + .grid-x > .large-shrink { + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; } + .grid-x > .large-1 { + width: 8.33333%; } + .grid-x > .large-2 { + width: 16.66667%; } + .grid-x > .large-3 { + width: 25%; } + .grid-x > .large-4 { + width: 33.33333%; } + .grid-x > .large-5 { + width: 41.66667%; } + .grid-x > .large-6 { + width: 50%; } + .grid-x > .large-7 { + width: 58.33333%; } + .grid-x > .large-8 { + width: 66.66667%; } + .grid-x > .large-9 { + width: 75%; } + .grid-x > .large-10 { + width: 83.33333%; } + .grid-x > .large-11 { + width: 91.66667%; } + .grid-x > .large-12 { + width: 100%; } } + +.grid-margin-x:not(.grid-x) > .cell { + width: auto; } + +.grid-margin-y:not(.grid-y) > .cell { + height: auto; } + +.grid-margin-x { + margin-left: -0.625rem; + margin-right: -0.625rem; } + @media print, screen and (min-width: 40em) { + .grid-margin-x { + margin-left: -0.9375rem; + margin-right: -0.9375rem; } } + .grid-margin-x > .cell { + width: calc(100% - 1.25rem); + margin-left: 0.625rem; + margin-right: 0.625rem; } + @media print, screen and (min-width: 40em) { + .grid-margin-x > .cell { + width: calc(100% - 1.875rem); + margin-left: 0.9375rem; + margin-right: 0.9375rem; } } + .grid-margin-x > .auto { + width: auto; } + .grid-margin-x > .shrink { + width: auto; } + .grid-margin-x > .small-1 { + width: calc(8.33333% - 1.25rem); } + .grid-margin-x > .small-2 { + width: calc(16.66667% - 1.25rem); } + .grid-margin-x > .small-3 { + width: calc(25% - 1.25rem); } + .grid-margin-x > .small-4 { + width: calc(33.33333% - 1.25rem); } + .grid-margin-x > .small-5 { + width: calc(41.66667% - 1.25rem); } + .grid-margin-x > .small-6 { + width: calc(50% - 1.25rem); } + .grid-margin-x > .small-7 { + width: calc(58.33333% - 1.25rem); } + .grid-margin-x > .small-8 { + width: calc(66.66667% - 1.25rem); } + .grid-margin-x > .small-9 { + width: calc(75% - 1.25rem); } + .grid-margin-x > .small-10 { + width: calc(83.33333% - 1.25rem); } + .grid-margin-x > .small-11 { + width: calc(91.66667% - 1.25rem); } + .grid-margin-x > .small-12 { + width: calc(100% - 1.25rem); } + @media print, screen and (min-width: 40em) { + .grid-margin-x > .auto { + width: auto; } + .grid-margin-x > .shrink { + width: auto; } + .grid-margin-x > .small-1 { + width: calc(8.33333% - 1.875rem); } + .grid-margin-x > .small-2 { + width: calc(16.66667% - 1.875rem); } + .grid-margin-x > .small-3 { + width: calc(25% - 1.875rem); } + .grid-margin-x > .small-4 { + width: calc(33.33333% - 1.875rem); } + .grid-margin-x > .small-5 { + width: calc(41.66667% - 1.875rem); } + .grid-margin-x > .small-6 { + width: calc(50% - 1.875rem); } + .grid-margin-x > .small-7 { + width: calc(58.33333% - 1.875rem); } + .grid-margin-x > .small-8 { + width: calc(66.66667% - 1.875rem); } + .grid-margin-x > .small-9 { + width: calc(75% - 1.875rem); } + .grid-margin-x > .small-10 { + width: calc(83.33333% - 1.875rem); } + .grid-margin-x > .small-11 { + width: calc(91.66667% - 1.875rem); } + .grid-margin-x > .small-12 { + width: calc(100% - 1.875rem); } + .grid-margin-x > .medium-auto { + width: auto; } + .grid-margin-x > .medium-shrink { + width: auto; } + .grid-margin-x > .medium-1 { + width: calc(8.33333% - 1.875rem); } + .grid-margin-x > .medium-2 { + width: calc(16.66667% - 1.875rem); } + .grid-margin-x > .medium-3 { + width: calc(25% - 1.875rem); } + .grid-margin-x > .medium-4 { + width: calc(33.33333% - 1.875rem); } + .grid-margin-x > .medium-5 { + width: calc(41.66667% - 1.875rem); } + .grid-margin-x > .medium-6 { + width: calc(50% - 1.875rem); } + .grid-margin-x > .medium-7 { + width: calc(58.33333% - 1.875rem); } + .grid-margin-x > .medium-8 { + width: calc(66.66667% - 1.875rem); } + .grid-margin-x > .medium-9 { + width: calc(75% - 1.875rem); } + .grid-margin-x > .medium-10 { + width: calc(83.33333% - 1.875rem); } + .grid-margin-x > .medium-11 { + width: calc(91.66667% - 1.875rem); } + .grid-margin-x > .medium-12 { + width: calc(100% - 1.875rem); } } + @media print, screen and (min-width: 64em) { + .grid-margin-x > .large-auto { + width: auto; } + .grid-margin-x > .large-shrink { + width: auto; } + .grid-margin-x > .large-1 { + width: calc(8.33333% - 1.875rem); } + .grid-margin-x > .large-2 { + width: calc(16.66667% - 1.875rem); } + .grid-margin-x > .large-3 { + width: calc(25% - 1.875rem); } + .grid-margin-x > .large-4 { + width: calc(33.33333% - 1.875rem); } + .grid-margin-x > .large-5 { + width: calc(41.66667% - 1.875rem); } + .grid-margin-x > .large-6 { + width: calc(50% - 1.875rem); } + .grid-margin-x > .large-7 { + width: calc(58.33333% - 1.875rem); } + .grid-margin-x > .large-8 { + width: calc(66.66667% - 1.875rem); } + .grid-margin-x > .large-9 { + width: calc(75% - 1.875rem); } + .grid-margin-x > .large-10 { + width: calc(83.33333% - 1.875rem); } + .grid-margin-x > .large-11 { + width: calc(91.66667% - 1.875rem); } + .grid-margin-x > .large-12 { + width: calc(100% - 1.875rem); } } + +.grid-padding-x .grid-padding-x { + margin-right: -0.625rem; + margin-left: -0.625rem; } + @media print, screen and (min-width: 40em) { + .grid-padding-x .grid-padding-x { + margin-right: -0.9375rem; + margin-left: -0.9375rem; } } + +.grid-container:not(.full) > .grid-padding-x { + margin-right: -0.625rem; + margin-left: -0.625rem; } + @media print, screen and (min-width: 40em) { + .grid-container:not(.full) > .grid-padding-x { + margin-right: -0.9375rem; + margin-left: -0.9375rem; } } + +.grid-padding-x > .cell { + padding-right: 0.625rem; + padding-left: 0.625rem; } + @media print, screen and (min-width: 40em) { + .grid-padding-x > .cell { + padding-right: 0.9375rem; + padding-left: 0.9375rem; } } + +.small-up-1 > .cell { + width: 100%; } + +.small-up-2 > .cell { + width: 50%; } + +.small-up-3 > .cell { + width: 33.33333%; } + +.small-up-4 > .cell { + width: 25%; } + +.small-up-5 > .cell { + width: 20%; } + +.small-up-6 > .cell { + width: 16.66667%; } + +.small-up-7 > .cell { + width: 14.28571%; } + +.small-up-8 > .cell { + width: 12.5%; } + +@media print, screen and (min-width: 40em) { + .medium-up-1 > .cell { + width: 100%; } + .medium-up-2 > .cell { + width: 50%; } + .medium-up-3 > .cell { + width: 33.33333%; } + .medium-up-4 > .cell { + width: 25%; } + .medium-up-5 > .cell { + width: 20%; } + .medium-up-6 > .cell { + width: 16.66667%; } + .medium-up-7 > .cell { + width: 14.28571%; } + .medium-up-8 > .cell { + width: 12.5%; } } + +@media print, screen and (min-width: 64em) { + .large-up-1 > .cell { + width: 100%; } + .large-up-2 > .cell { + width: 50%; } + .large-up-3 > .cell { + width: 33.33333%; } + .large-up-4 > .cell { + width: 25%; } + .large-up-5 > .cell { + width: 20%; } + .large-up-6 > .cell { + width: 16.66667%; } + .large-up-7 > .cell { + width: 14.28571%; } + .large-up-8 > .cell { + width: 12.5%; } } + +.grid-margin-x.small-up-1 > .cell { + width: calc(100% - 1.25rem); } + +.grid-margin-x.small-up-2 > .cell { + width: calc(50% - 1.25rem); } + +.grid-margin-x.small-up-3 > .cell { + width: calc(33.33333% - 1.25rem); } + +.grid-margin-x.small-up-4 > .cell { + width: calc(25% - 1.25rem); } + +.grid-margin-x.small-up-5 > .cell { + width: calc(20% - 1.25rem); } + +.grid-margin-x.small-up-6 > .cell { + width: calc(16.66667% - 1.25rem); } + +.grid-margin-x.small-up-7 > .cell { + width: calc(14.28571% - 1.25rem); } + +.grid-margin-x.small-up-8 > .cell { + width: calc(12.5% - 1.25rem); } + +@media print, screen and (min-width: 40em) { + .grid-margin-x.small-up-1 > .cell { + width: calc(100% - 1.25rem); } + .grid-margin-x.small-up-2 > .cell { + width: calc(50% - 1.25rem); } + .grid-margin-x.small-up-3 > .cell { + width: calc(33.33333% - 1.25rem); } + .grid-margin-x.small-up-4 > .cell { + width: calc(25% - 1.25rem); } + .grid-margin-x.small-up-5 > .cell { + width: calc(20% - 1.25rem); } + .grid-margin-x.small-up-6 > .cell { + width: calc(16.66667% - 1.25rem); } + .grid-margin-x.small-up-7 > .cell { + width: calc(14.28571% - 1.25rem); } + .grid-margin-x.small-up-8 > .cell { + width: calc(12.5% - 1.25rem); } + .grid-margin-x.medium-up-1 > .cell { + width: calc(100% - 1.875rem); } + .grid-margin-x.medium-up-2 > .cell { + width: calc(50% - 1.875rem); } + .grid-margin-x.medium-up-3 > .cell { + width: calc(33.33333% - 1.875rem); } + .grid-margin-x.medium-up-4 > .cell { + width: calc(25% - 1.875rem); } + .grid-margin-x.medium-up-5 > .cell { + width: calc(20% - 1.875rem); } + .grid-margin-x.medium-up-6 > .cell { + width: calc(16.66667% - 1.875rem); } + .grid-margin-x.medium-up-7 > .cell { + width: calc(14.28571% - 1.875rem); } + .grid-margin-x.medium-up-8 > .cell { + width: calc(12.5% - 1.875rem); } } + +@media print, screen and (min-width: 64em) { + .grid-margin-x.large-up-1 > .cell { + width: calc(100% - 1.875rem); } + .grid-margin-x.large-up-2 > .cell { + width: calc(50% - 1.875rem); } + .grid-margin-x.large-up-3 > .cell { + width: calc(33.33333% - 1.875rem); } + .grid-margin-x.large-up-4 > .cell { + width: calc(25% - 1.875rem); } + .grid-margin-x.large-up-5 > .cell { + width: calc(20% - 1.875rem); } + .grid-margin-x.large-up-6 > .cell { + width: calc(16.66667% - 1.875rem); } + .grid-margin-x.large-up-7 > .cell { + width: calc(14.28571% - 1.875rem); } + .grid-margin-x.large-up-8 > .cell { + width: calc(12.5% - 1.875rem); } } + +.small-margin-collapse { + margin-right: 0; + margin-left: 0; } + .small-margin-collapse > .cell { + margin-right: 0; + margin-left: 0; } + .small-margin-collapse > .small-1 { + width: 8.33333%; } + .small-margin-collapse > .small-2 { + width: 16.66667%; } + .small-margin-collapse > .small-3 { + width: 25%; } + .small-margin-collapse > .small-4 { + width: 33.33333%; } + .small-margin-collapse > .small-5 { + width: 41.66667%; } + .small-margin-collapse > .small-6 { + width: 50%; } + .small-margin-collapse > .small-7 { + width: 58.33333%; } + .small-margin-collapse > .small-8 { + width: 66.66667%; } + .small-margin-collapse > .small-9 { + width: 75%; } + .small-margin-collapse > .small-10 { + width: 83.33333%; } + .small-margin-collapse > .small-11 { + width: 91.66667%; } + .small-margin-collapse > .small-12 { + width: 100%; } + @media print, screen and (min-width: 40em) { + .small-margin-collapse > .medium-1 { + width: 8.33333%; } + .small-margin-collapse > .medium-2 { + width: 16.66667%; } + .small-margin-collapse > .medium-3 { + width: 25%; } + .small-margin-collapse > .medium-4 { + width: 33.33333%; } + .small-margin-collapse > .medium-5 { + width: 41.66667%; } + .small-margin-collapse > .medium-6 { + width: 50%; } + .small-margin-collapse > .medium-7 { + width: 58.33333%; } + .small-margin-collapse > .medium-8 { + width: 66.66667%; } + .small-margin-collapse > .medium-9 { + width: 75%; } + .small-margin-collapse > .medium-10 { + width: 83.33333%; } + .small-margin-collapse > .medium-11 { + width: 91.66667%; } + .small-margin-collapse > .medium-12 { + width: 100%; } } + @media print, screen and (min-width: 64em) { + .small-margin-collapse > .large-1 { + width: 8.33333%; } + .small-margin-collapse > .large-2 { + width: 16.66667%; } + .small-margin-collapse > .large-3 { + width: 25%; } + .small-margin-collapse > .large-4 { + width: 33.33333%; } + .small-margin-collapse > .large-5 { + width: 41.66667%; } + .small-margin-collapse > .large-6 { + width: 50%; } + .small-margin-collapse > .large-7 { + width: 58.33333%; } + .small-margin-collapse > .large-8 { + width: 66.66667%; } + .small-margin-collapse > .large-9 { + width: 75%; } + .small-margin-collapse > .large-10 { + width: 83.33333%; } + .small-margin-collapse > .large-11 { + width: 91.66667%; } + .small-margin-collapse > .large-12 { + width: 100%; } } + +.small-padding-collapse { + margin-right: 0; + margin-left: 0; } + .small-padding-collapse > .cell { + padding-right: 0; + padding-left: 0; } + +@media print, screen and (min-width: 40em) { + .medium-margin-collapse { + margin-right: 0; + margin-left: 0; } + .medium-margin-collapse > .cell { + margin-right: 0; + margin-left: 0; } } + +@media print, screen and (min-width: 40em) { + .medium-margin-collapse > .small-1 { + width: 8.33333%; } + .medium-margin-collapse > .small-2 { + width: 16.66667%; } + .medium-margin-collapse > .small-3 { + width: 25%; } + .medium-margin-collapse > .small-4 { + width: 33.33333%; } + .medium-margin-collapse > .small-5 { + width: 41.66667%; } + .medium-margin-collapse > .small-6 { + width: 50%; } + .medium-margin-collapse > .small-7 { + width: 58.33333%; } + .medium-margin-collapse > .small-8 { + width: 66.66667%; } + .medium-margin-collapse > .small-9 { + width: 75%; } + .medium-margin-collapse > .small-10 { + width: 83.33333%; } + .medium-margin-collapse > .small-11 { + width: 91.66667%; } + .medium-margin-collapse > .small-12 { + width: 100%; } } + +@media print, screen and (min-width: 40em) { + .medium-margin-collapse > .medium-1 { + width: 8.33333%; } + .medium-margin-collapse > .medium-2 { + width: 16.66667%; } + .medium-margin-collapse > .medium-3 { + width: 25%; } + .medium-margin-collapse > .medium-4 { + width: 33.33333%; } + .medium-margin-collapse > .medium-5 { + width: 41.66667%; } + .medium-margin-collapse > .medium-6 { + width: 50%; } + .medium-margin-collapse > .medium-7 { + width: 58.33333%; } + .medium-margin-collapse > .medium-8 { + width: 66.66667%; } + .medium-margin-collapse > .medium-9 { + width: 75%; } + .medium-margin-collapse > .medium-10 { + width: 83.33333%; } + .medium-margin-collapse > .medium-11 { + width: 91.66667%; } + .medium-margin-collapse > .medium-12 { + width: 100%; } } + +@media print, screen and (min-width: 64em) { + .medium-margin-collapse > .large-1 { + width: 8.33333%; } + .medium-margin-collapse > .large-2 { + width: 16.66667%; } + .medium-margin-collapse > .large-3 { + width: 25%; } + .medium-margin-collapse > .large-4 { + width: 33.33333%; } + .medium-margin-collapse > .large-5 { + width: 41.66667%; } + .medium-margin-collapse > .large-6 { + width: 50%; } + .medium-margin-collapse > .large-7 { + width: 58.33333%; } + .medium-margin-collapse > .large-8 { + width: 66.66667%; } + .medium-margin-collapse > .large-9 { + width: 75%; } + .medium-margin-collapse > .large-10 { + width: 83.33333%; } + .medium-margin-collapse > .large-11 { + width: 91.66667%; } + .medium-margin-collapse > .large-12 { + width: 100%; } } + +@media print, screen and (min-width: 40em) { + .medium-padding-collapse { + margin-right: 0; + margin-left: 0; } + .medium-padding-collapse > .cell { + padding-right: 0; + padding-left: 0; } } + +@media print, screen and (min-width: 64em) { + .large-margin-collapse { + margin-right: 0; + margin-left: 0; } + .large-margin-collapse > .cell { + margin-right: 0; + margin-left: 0; } } + +@media print, screen and (min-width: 64em) { + .large-margin-collapse > .small-1 { + width: 8.33333%; } + .large-margin-collapse > .small-2 { + width: 16.66667%; } + .large-margin-collapse > .small-3 { + width: 25%; } + .large-margin-collapse > .small-4 { + width: 33.33333%; } + .large-margin-collapse > .small-5 { + width: 41.66667%; } + .large-margin-collapse > .small-6 { + width: 50%; } + .large-margin-collapse > .small-7 { + width: 58.33333%; } + .large-margin-collapse > .small-8 { + width: 66.66667%; } + .large-margin-collapse > .small-9 { + width: 75%; } + .large-margin-collapse > .small-10 { + width: 83.33333%; } + .large-margin-collapse > .small-11 { + width: 91.66667%; } + .large-margin-collapse > .small-12 { + width: 100%; } } + +@media print, screen and (min-width: 64em) { + .large-margin-collapse > .medium-1 { + width: 8.33333%; } + .large-margin-collapse > .medium-2 { + width: 16.66667%; } + .large-margin-collapse > .medium-3 { + width: 25%; } + .large-margin-collapse > .medium-4 { + width: 33.33333%; } + .large-margin-collapse > .medium-5 { + width: 41.66667%; } + .large-margin-collapse > .medium-6 { + width: 50%; } + .large-margin-collapse > .medium-7 { + width: 58.33333%; } + .large-margin-collapse > .medium-8 { + width: 66.66667%; } + .large-margin-collapse > .medium-9 { + width: 75%; } + .large-margin-collapse > .medium-10 { + width: 83.33333%; } + .large-margin-collapse > .medium-11 { + width: 91.66667%; } + .large-margin-collapse > .medium-12 { + width: 100%; } } + +@media print, screen and (min-width: 64em) { + .large-margin-collapse > .large-1 { + width: 8.33333%; } + .large-margin-collapse > .large-2 { + width: 16.66667%; } + .large-margin-collapse > .large-3 { + width: 25%; } + .large-margin-collapse > .large-4 { + width: 33.33333%; } + .large-margin-collapse > .large-5 { + width: 41.66667%; } + .large-margin-collapse > .large-6 { + width: 50%; } + .large-margin-collapse > .large-7 { + width: 58.33333%; } + .large-margin-collapse > .large-8 { + width: 66.66667%; } + .large-margin-collapse > .large-9 { + width: 75%; } + .large-margin-collapse > .large-10 { + width: 83.33333%; } + .large-margin-collapse > .large-11 { + width: 91.66667%; } + .large-margin-collapse > .large-12 { + width: 100%; } } + +@media print, screen and (min-width: 64em) { + .large-padding-collapse { + margin-right: 0; + margin-left: 0; } + .large-padding-collapse > .cell { + padding-right: 0; + padding-left: 0; } } + +.small-offset-0 { + margin-left: 0%; } + +.grid-margin-x > .small-offset-0 { + margin-left: calc(0% + 0.625rem); } + +.small-offset-1 { + margin-left: 8.33333%; } + +.grid-margin-x > .small-offset-1 { + margin-left: calc(8.33333% + 0.625rem); } + +.small-offset-2 { + margin-left: 16.66667%; } + +.grid-margin-x > .small-offset-2 { + margin-left: calc(16.66667% + 0.625rem); } + +.small-offset-3 { + margin-left: 25%; } + +.grid-margin-x > .small-offset-3 { + margin-left: calc(25% + 0.625rem); } + +.small-offset-4 { + margin-left: 33.33333%; } + +.grid-margin-x > .small-offset-4 { + margin-left: calc(33.33333% + 0.625rem); } + +.small-offset-5 { + margin-left: 41.66667%; } + +.grid-margin-x > .small-offset-5 { + margin-left: calc(41.66667% + 0.625rem); } + +.small-offset-6 { + margin-left: 50%; } + +.grid-margin-x > .small-offset-6 { + margin-left: calc(50% + 0.625rem); } + +.small-offset-7 { + margin-left: 58.33333%; } + +.grid-margin-x > .small-offset-7 { + margin-left: calc(58.33333% + 0.625rem); } + +.small-offset-8 { + margin-left: 66.66667%; } + +.grid-margin-x > .small-offset-8 { + margin-left: calc(66.66667% + 0.625rem); } + +.small-offset-9 { + margin-left: 75%; } + +.grid-margin-x > .small-offset-9 { + margin-left: calc(75% + 0.625rem); } + +.small-offset-10 { + margin-left: 83.33333%; } + +.grid-margin-x > .small-offset-10 { + margin-left: calc(83.33333% + 0.625rem); } + +.small-offset-11 { + margin-left: 91.66667%; } + +.grid-margin-x > .small-offset-11 { + margin-left: calc(91.66667% + 0.625rem); } + +@media print, screen and (min-width: 40em) { + .medium-offset-0 { + margin-left: 0%; } + .grid-margin-x > .medium-offset-0 { + margin-left: calc(0% + 0.9375rem); } + .medium-offset-1 { + margin-left: 8.33333%; } + .grid-margin-x > .medium-offset-1 { + margin-left: calc(8.33333% + 0.9375rem); } + .medium-offset-2 { + margin-left: 16.66667%; } + .grid-margin-x > .medium-offset-2 { + margin-left: calc(16.66667% + 0.9375rem); } + .medium-offset-3 { + margin-left: 25%; } + .grid-margin-x > .medium-offset-3 { + margin-left: calc(25% + 0.9375rem); } + .medium-offset-4 { + margin-left: 33.33333%; } + .grid-margin-x > .medium-offset-4 { + margin-left: calc(33.33333% + 0.9375rem); } + .medium-offset-5 { + margin-left: 41.66667%; } + .grid-margin-x > .medium-offset-5 { + margin-left: calc(41.66667% + 0.9375rem); } + .medium-offset-6 { + margin-left: 50%; } + .grid-margin-x > .medium-offset-6 { + margin-left: calc(50% + 0.9375rem); } + .medium-offset-7 { + margin-left: 58.33333%; } + .grid-margin-x > .medium-offset-7 { + margin-left: calc(58.33333% + 0.9375rem); } + .medium-offset-8 { + margin-left: 66.66667%; } + .grid-margin-x > .medium-offset-8 { + margin-left: calc(66.66667% + 0.9375rem); } + .medium-offset-9 { + margin-left: 75%; } + .grid-margin-x > .medium-offset-9 { + margin-left: calc(75% + 0.9375rem); } + .medium-offset-10 { + margin-left: 83.33333%; } + .grid-margin-x > .medium-offset-10 { + margin-left: calc(83.33333% + 0.9375rem); } + .medium-offset-11 { + margin-left: 91.66667%; } + .grid-margin-x > .medium-offset-11 { + margin-left: calc(91.66667% + 0.9375rem); } } + +@media print, screen and (min-width: 64em) { + .large-offset-0 { + margin-left: 0%; } + .grid-margin-x > .large-offset-0 { + margin-left: calc(0% + 0.9375rem); } + .large-offset-1 { + margin-left: 8.33333%; } + .grid-margin-x > .large-offset-1 { + margin-left: calc(8.33333% + 0.9375rem); } + .large-offset-2 { + margin-left: 16.66667%; } + .grid-margin-x > .large-offset-2 { + margin-left: calc(16.66667% + 0.9375rem); } + .large-offset-3 { + margin-left: 25%; } + .grid-margin-x > .large-offset-3 { + margin-left: calc(25% + 0.9375rem); } + .large-offset-4 { + margin-left: 33.33333%; } + .grid-margin-x > .large-offset-4 { + margin-left: calc(33.33333% + 0.9375rem); } + .large-offset-5 { + margin-left: 41.66667%; } + .grid-margin-x > .large-offset-5 { + margin-left: calc(41.66667% + 0.9375rem); } + .large-offset-6 { + margin-left: 50%; } + .grid-margin-x > .large-offset-6 { + margin-left: calc(50% + 0.9375rem); } + .large-offset-7 { + margin-left: 58.33333%; } + .grid-margin-x > .large-offset-7 { + margin-left: calc(58.33333% + 0.9375rem); } + .large-offset-8 { + margin-left: 66.66667%; } + .grid-margin-x > .large-offset-8 { + margin-left: calc(66.66667% + 0.9375rem); } + .large-offset-9 { + margin-left: 75%; } + .grid-margin-x > .large-offset-9 { + margin-left: calc(75% + 0.9375rem); } + .large-offset-10 { + margin-left: 83.33333%; } + .grid-margin-x > .large-offset-10 { + margin-left: calc(83.33333% + 0.9375rem); } + .large-offset-11 { + margin-left: 91.66667%; } + .grid-margin-x > .large-offset-11 { + margin-left: calc(91.66667% + 0.9375rem); } } + +.grid-y { + display: -ms-flexbox; + display: flex; + -ms-flex-flow: column nowrap; + flex-flow: column nowrap; } + .grid-y > .cell { + width: auto; } + .grid-y > .auto { + height: auto; } + .grid-y > .shrink { + height: auto; } + .grid-y > .small-shrink, .grid-y > .small-full, .grid-y > .small-1, .grid-y > .small-2, .grid-y > .small-3, .grid-y > .small-4, .grid-y > .small-5, .grid-y > .small-6, .grid-y > .small-7, .grid-y > .small-8, .grid-y > .small-9, .grid-y > .small-10, .grid-y > .small-11, .grid-y > .small-12 { + -ms-flex-preferred-size: auto; + flex-basis: auto; } + @media print, screen and (min-width: 40em) { + .grid-y > .medium-shrink, .grid-y > .medium-full, .grid-y > .medium-1, .grid-y > .medium-2, .grid-y > .medium-3, .grid-y > .medium-4, .grid-y > .medium-5, .grid-y > .medium-6, .grid-y > .medium-7, .grid-y > .medium-8, .grid-y > .medium-9, .grid-y > .medium-10, .grid-y > .medium-11, .grid-y > .medium-12 { + -ms-flex-preferred-size: auto; + flex-basis: auto; } } + @media print, screen and (min-width: 64em) { + .grid-y > .large-shrink, .grid-y > .large-full, .grid-y > .large-1, .grid-y > .large-2, .grid-y > .large-3, .grid-y > .large-4, .grid-y > .large-5, .grid-y > .large-6, .grid-y > .large-7, .grid-y > .large-8, .grid-y > .large-9, .grid-y > .large-10, .grid-y > .large-11, .grid-y > .large-12 { + -ms-flex-preferred-size: auto; + flex-basis: auto; } } + .grid-y > .small-1 { + height: 8.33333%; } + .grid-y > .small-2 { + height: 16.66667%; } + .grid-y > .small-3 { + height: 25%; } + .grid-y > .small-4 { + height: 33.33333%; } + .grid-y > .small-5 { + height: 41.66667%; } + .grid-y > .small-6 { + height: 50%; } + .grid-y > .small-7 { + height: 58.33333%; } + .grid-y > .small-8 { + height: 66.66667%; } + .grid-y > .small-9 { + height: 75%; } + .grid-y > .small-10 { + height: 83.33333%; } + .grid-y > .small-11 { + height: 91.66667%; } + .grid-y > .small-12 { + height: 100%; } + @media print, screen and (min-width: 40em) { + .grid-y > .medium-auto { + -ms-flex: 1 1 0px; + flex: 1 1 0px; + height: auto; } + .grid-y > .medium-shrink { + height: auto; } + .grid-y > .medium-1 { + height: 8.33333%; } + .grid-y > .medium-2 { + height: 16.66667%; } + .grid-y > .medium-3 { + height: 25%; } + .grid-y > .medium-4 { + height: 33.33333%; } + .grid-y > .medium-5 { + height: 41.66667%; } + .grid-y > .medium-6 { + height: 50%; } + .grid-y > .medium-7 { + height: 58.33333%; } + .grid-y > .medium-8 { + height: 66.66667%; } + .grid-y > .medium-9 { + height: 75%; } + .grid-y > .medium-10 { + height: 83.33333%; } + .grid-y > .medium-11 { + height: 91.66667%; } + .grid-y > .medium-12 { + height: 100%; } } + @media print, screen and (min-width: 64em) { + .grid-y > .large-auto { + -ms-flex: 1 1 0px; + flex: 1 1 0px; + height: auto; } + .grid-y > .large-shrink { + height: auto; } + .grid-y > .large-1 { + height: 8.33333%; } + .grid-y > .large-2 { + height: 16.66667%; } + .grid-y > .large-3 { + height: 25%; } + .grid-y > .large-4 { + height: 33.33333%; } + .grid-y > .large-5 { + height: 41.66667%; } + .grid-y > .large-6 { + height: 50%; } + .grid-y > .large-7 { + height: 58.33333%; } + .grid-y > .large-8 { + height: 66.66667%; } + .grid-y > .large-9 { + height: 75%; } + .grid-y > .large-10 { + height: 83.33333%; } + .grid-y > .large-11 { + height: 91.66667%; } + .grid-y > .large-12 { + height: 100%; } } + +.grid-padding-y .grid-padding-y { + margin-top: -0.625rem; + margin-bottom: -0.625rem; } + @media print, screen and (min-width: 40em) { + .grid-padding-y .grid-padding-y { + margin-top: -0.9375rem; + margin-bottom: -0.9375rem; } } + +.grid-padding-y > .cell { + padding-top: 0.625rem; + padding-bottom: 0.625rem; } + @media print, screen and (min-width: 40em) { + .grid-padding-y > .cell { + padding-top: 0.9375rem; + padding-bottom: 0.9375rem; } } + +.grid-margin-y { + margin-top: -0.625rem; + margin-bottom: -0.625rem; } + @media print, screen and (min-width: 40em) { + .grid-margin-y { + margin-top: -0.9375rem; + margin-bottom: -0.9375rem; } } + .grid-margin-y > .cell { + height: calc(100% - 1.25rem); + margin-top: 0.625rem; + margin-bottom: 0.625rem; } + @media print, screen and (min-width: 40em) { + .grid-margin-y > .cell { + height: calc(100% - 1.875rem); + margin-top: 0.9375rem; + margin-bottom: 0.9375rem; } } + .grid-margin-y > .auto { + height: auto; } + .grid-margin-y > .shrink { + height: auto; } + .grid-margin-y > .small-1 { + height: calc(8.33333% - 1.25rem); } + .grid-margin-y > .small-2 { + height: calc(16.66667% - 1.25rem); } + .grid-margin-y > .small-3 { + height: calc(25% - 1.25rem); } + .grid-margin-y > .small-4 { + height: calc(33.33333% - 1.25rem); } + .grid-margin-y > .small-5 { + height: calc(41.66667% - 1.25rem); } + .grid-margin-y > .small-6 { + height: calc(50% - 1.25rem); } + .grid-margin-y > .small-7 { + height: calc(58.33333% - 1.25rem); } + .grid-margin-y > .small-8 { + height: calc(66.66667% - 1.25rem); } + .grid-margin-y > .small-9 { + height: calc(75% - 1.25rem); } + .grid-margin-y > .small-10 { + height: calc(83.33333% - 1.25rem); } + .grid-margin-y > .small-11 { + height: calc(91.66667% - 1.25rem); } + .grid-margin-y > .small-12 { + height: calc(100% - 1.25rem); } + @media print, screen and (min-width: 40em) { + .grid-margin-y > .auto { + height: auto; } + .grid-margin-y > .shrink { + height: auto; } + .grid-margin-y > .small-1 { + height: calc(8.33333% - 1.875rem); } + .grid-margin-y > .small-2 { + height: calc(16.66667% - 1.875rem); } + .grid-margin-y > .small-3 { + height: calc(25% - 1.875rem); } + .grid-margin-y > .small-4 { + height: calc(33.33333% - 1.875rem); } + .grid-margin-y > .small-5 { + height: calc(41.66667% - 1.875rem); } + .grid-margin-y > .small-6 { + height: calc(50% - 1.875rem); } + .grid-margin-y > .small-7 { + height: calc(58.33333% - 1.875rem); } + .grid-margin-y > .small-8 { + height: calc(66.66667% - 1.875rem); } + .grid-margin-y > .small-9 { + height: calc(75% - 1.875rem); } + .grid-margin-y > .small-10 { + height: calc(83.33333% - 1.875rem); } + .grid-margin-y > .small-11 { + height: calc(91.66667% - 1.875rem); } + .grid-margin-y > .small-12 { + height: calc(100% - 1.875rem); } + .grid-margin-y > .medium-auto { + height: auto; } + .grid-margin-y > .medium-shrink { + height: auto; } + .grid-margin-y > .medium-1 { + height: calc(8.33333% - 1.875rem); } + .grid-margin-y > .medium-2 { + height: calc(16.66667% - 1.875rem); } + .grid-margin-y > .medium-3 { + height: calc(25% - 1.875rem); } + .grid-margin-y > .medium-4 { + height: calc(33.33333% - 1.875rem); } + .grid-margin-y > .medium-5 { + height: calc(41.66667% - 1.875rem); } + .grid-margin-y > .medium-6 { + height: calc(50% - 1.875rem); } + .grid-margin-y > .medium-7 { + height: calc(58.33333% - 1.875rem); } + .grid-margin-y > .medium-8 { + height: calc(66.66667% - 1.875rem); } + .grid-margin-y > .medium-9 { + height: calc(75% - 1.875rem); } + .grid-margin-y > .medium-10 { + height: calc(83.33333% - 1.875rem); } + .grid-margin-y > .medium-11 { + height: calc(91.66667% - 1.875rem); } + .grid-margin-y > .medium-12 { + height: calc(100% - 1.875rem); } } + @media print, screen and (min-width: 64em) { + .grid-margin-y > .large-auto { + height: auto; } + .grid-margin-y > .large-shrink { + height: auto; } + .grid-margin-y > .large-1 { + height: calc(8.33333% - 1.875rem); } + .grid-margin-y > .large-2 { + height: calc(16.66667% - 1.875rem); } + .grid-margin-y > .large-3 { + height: calc(25% - 1.875rem); } + .grid-margin-y > .large-4 { + height: calc(33.33333% - 1.875rem); } + .grid-margin-y > .large-5 { + height: calc(41.66667% - 1.875rem); } + .grid-margin-y > .large-6 { + height: calc(50% - 1.875rem); } + .grid-margin-y > .large-7 { + height: calc(58.33333% - 1.875rem); } + .grid-margin-y > .large-8 { + height: calc(66.66667% - 1.875rem); } + .grid-margin-y > .large-9 { + height: calc(75% - 1.875rem); } + .grid-margin-y > .large-10 { + height: calc(83.33333% - 1.875rem); } + .grid-margin-y > .large-11 { + height: calc(91.66667% - 1.875rem); } + .grid-margin-y > .large-12 { + height: calc(100% - 1.875rem); } } + +.grid-frame { + overflow: hidden; + position: relative; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -ms-flex-align: stretch; + align-items: stretch; + width: 100vw; } + +.cell .grid-frame { + width: 100%; } + +.cell-block { + overflow-x: auto; + max-width: 100%; + -webkit-overflow-scrolling: touch; + -ms-overflow-stype: -ms-autohiding-scrollbar; } + +.cell-block-y { + overflow-y: auto; + max-height: 100%; + -webkit-overflow-scrolling: touch; + -ms-overflow-stype: -ms-autohiding-scrollbar; } + +.cell-block-container { + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; + max-height: 100%; } + .cell-block-container > .grid-x { + max-height: 100%; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; } + +@media print, screen and (min-width: 40em) { + .medium-grid-frame { + overflow: hidden; + position: relative; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -ms-flex-align: stretch; + align-items: stretch; + width: 100vw; } + .cell .medium-grid-frame { + width: 100%; } + .medium-cell-block { + overflow-x: auto; + max-width: 100%; + -webkit-overflow-scrolling: touch; + -ms-overflow-stype: -ms-autohiding-scrollbar; } + .medium-cell-block-container { + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; + max-height: 100%; } + .medium-cell-block-container > .grid-x { + max-height: 100%; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; } + .medium-cell-block-y { + overflow-y: auto; + max-height: 100%; + -webkit-overflow-scrolling: touch; + -ms-overflow-stype: -ms-autohiding-scrollbar; } } + +@media print, screen and (min-width: 64em) { + .large-grid-frame { + overflow: hidden; + position: relative; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -ms-flex-align: stretch; + align-items: stretch; + width: 100vw; } + .cell .large-grid-frame { + width: 100%; } + .large-cell-block { + overflow-x: auto; + max-width: 100%; + -webkit-overflow-scrolling: touch; + -ms-overflow-stype: -ms-autohiding-scrollbar; } + .large-cell-block-container { + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; + max-height: 100%; } + .large-cell-block-container > .grid-x { + max-height: 100%; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; } + .large-cell-block-y { + overflow-y: auto; + max-height: 100%; + -webkit-overflow-scrolling: touch; + -ms-overflow-stype: -ms-autohiding-scrollbar; } } + +.grid-y.grid-frame { + width: auto; + overflow: hidden; + position: relative; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -ms-flex-align: stretch; + align-items: stretch; + height: 100vh; } + +@media print, screen and (min-width: 40em) { + .grid-y.medium-grid-frame { + width: auto; + overflow: hidden; + position: relative; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -ms-flex-align: stretch; + align-items: stretch; + height: 100vh; } } + +@media print, screen and (min-width: 64em) { + .grid-y.large-grid-frame { + width: auto; + overflow: hidden; + position: relative; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -ms-flex-align: stretch; + align-items: stretch; + height: 100vh; } } + +.cell .grid-y.grid-frame { + height: 100%; } + +@media print, screen and (min-width: 40em) { + .cell .grid-y.medium-grid-frame { + height: 100%; } } + +@media print, screen and (min-width: 64em) { + .cell .grid-y.large-grid-frame { + height: 100%; } } + +.grid-margin-y { + margin-top: -0.625rem; + margin-bottom: -0.625rem; } + @media print, screen and (min-width: 40em) { + .grid-margin-y { + margin-top: -0.9375rem; + margin-bottom: -0.9375rem; } } + .grid-margin-y > .cell { + height: calc(100% - 1.25rem); + margin-top: 0.625rem; + margin-bottom: 0.625rem; } + @media print, screen and (min-width: 40em) { + .grid-margin-y > .cell { + height: calc(100% - 1.875rem); + margin-top: 0.9375rem; + margin-bottom: 0.9375rem; } } + .grid-margin-y > .auto { + height: auto; } + .grid-margin-y > .shrink { + height: auto; } + .grid-margin-y > .small-1 { + height: calc(8.33333% - 1.25rem); } + .grid-margin-y > .small-2 { + height: calc(16.66667% - 1.25rem); } + .grid-margin-y > .small-3 { + height: calc(25% - 1.25rem); } + .grid-margin-y > .small-4 { + height: calc(33.33333% - 1.25rem); } + .grid-margin-y > .small-5 { + height: calc(41.66667% - 1.25rem); } + .grid-margin-y > .small-6 { + height: calc(50% - 1.25rem); } + .grid-margin-y > .small-7 { + height: calc(58.33333% - 1.25rem); } + .grid-margin-y > .small-8 { + height: calc(66.66667% - 1.25rem); } + .grid-margin-y > .small-9 { + height: calc(75% - 1.25rem); } + .grid-margin-y > .small-10 { + height: calc(83.33333% - 1.25rem); } + .grid-margin-y > .small-11 { + height: calc(91.66667% - 1.25rem); } + .grid-margin-y > .small-12 { + height: calc(100% - 1.25rem); } + @media print, screen and (min-width: 40em) { + .grid-margin-y > .auto { + height: auto; } + .grid-margin-y > .shrink { + height: auto; } + .grid-margin-y > .small-1 { + height: calc(8.33333% - 1.875rem); } + .grid-margin-y > .small-2 { + height: calc(16.66667% - 1.875rem); } + .grid-margin-y > .small-3 { + height: calc(25% - 1.875rem); } + .grid-margin-y > .small-4 { + height: calc(33.33333% - 1.875rem); } + .grid-margin-y > .small-5 { + height: calc(41.66667% - 1.875rem); } + .grid-margin-y > .small-6 { + height: calc(50% - 1.875rem); } + .grid-margin-y > .small-7 { + height: calc(58.33333% - 1.875rem); } + .grid-margin-y > .small-8 { + height: calc(66.66667% - 1.875rem); } + .grid-margin-y > .small-9 { + height: calc(75% - 1.875rem); } + .grid-margin-y > .small-10 { + height: calc(83.33333% - 1.875rem); } + .grid-margin-y > .small-11 { + height: calc(91.66667% - 1.875rem); } + .grid-margin-y > .small-12 { + height: calc(100% - 1.875rem); } + .grid-margin-y > .medium-auto { + height: auto; } + .grid-margin-y > .medium-shrink { + height: auto; } + .grid-margin-y > .medium-1 { + height: calc(8.33333% - 1.875rem); } + .grid-margin-y > .medium-2 { + height: calc(16.66667% - 1.875rem); } + .grid-margin-y > .medium-3 { + height: calc(25% - 1.875rem); } + .grid-margin-y > .medium-4 { + height: calc(33.33333% - 1.875rem); } + .grid-margin-y > .medium-5 { + height: calc(41.66667% - 1.875rem); } + .grid-margin-y > .medium-6 { + height: calc(50% - 1.875rem); } + .grid-margin-y > .medium-7 { + height: calc(58.33333% - 1.875rem); } + .grid-margin-y > .medium-8 { + height: calc(66.66667% - 1.875rem); } + .grid-margin-y > .medium-9 { + height: calc(75% - 1.875rem); } + .grid-margin-y > .medium-10 { + height: calc(83.33333% - 1.875rem); } + .grid-margin-y > .medium-11 { + height: calc(91.66667% - 1.875rem); } + .grid-margin-y > .medium-12 { + height: calc(100% - 1.875rem); } } + @media print, screen and (min-width: 64em) { + .grid-margin-y > .large-auto { + height: auto; } + .grid-margin-y > .large-shrink { + height: auto; } + .grid-margin-y > .large-1 { + height: calc(8.33333% - 1.875rem); } + .grid-margin-y > .large-2 { + height: calc(16.66667% - 1.875rem); } + .grid-margin-y > .large-3 { + height: calc(25% - 1.875rem); } + .grid-margin-y > .large-4 { + height: calc(33.33333% - 1.875rem); } + .grid-margin-y > .large-5 { + height: calc(41.66667% - 1.875rem); } + .grid-margin-y > .large-6 { + height: calc(50% - 1.875rem); } + .grid-margin-y > .large-7 { + height: calc(58.33333% - 1.875rem); } + .grid-margin-y > .large-8 { + height: calc(66.66667% - 1.875rem); } + .grid-margin-y > .large-9 { + height: calc(75% - 1.875rem); } + .grid-margin-y > .large-10 { + height: calc(83.33333% - 1.875rem); } + .grid-margin-y > .large-11 { + height: calc(91.66667% - 1.875rem); } + .grid-margin-y > .large-12 { + height: calc(100% - 1.875rem); } } + +.grid-frame.grid-margin-y { + height: calc(100vh + 1.25rem); } + @media print, screen and (min-width: 40em) { + .grid-frame.grid-margin-y { + height: calc(100vh + 1.875rem); } } + @media print, screen and (min-width: 64em) { + .grid-frame.grid-margin-y { + height: calc(100vh + 1.875rem); } } + +@media print, screen and (min-width: 40em) { + .grid-margin-y.medium-grid-frame { + height: calc(100vh + 1.875rem); } } + +@media print, screen and (min-width: 64em) { + .grid-margin-y.large-grid-frame { + height: calc(100vh + 1.875rem); } } + +.align-right { + -ms-flex-pack: end; + justify-content: flex-end; } + +.align-center { + -ms-flex-pack: center; + justify-content: center; } + +.align-justify { + -ms-flex-pack: justify; + justify-content: space-between; } + +.align-spaced { + -ms-flex-pack: distribute; + justify-content: space-around; } + +.align-right.vertical.menu > li > a { + -ms-flex-pack: end; + justify-content: flex-end; } + +.align-center.vertical.menu > li > a { + -ms-flex-pack: center; + justify-content: center; } + +.align-top { + -ms-flex-align: start; + align-items: flex-start; } + +.align-self-top { + -ms-flex-item-align: start; + align-self: flex-start; } + +.align-bottom { + -ms-flex-align: end; + align-items: flex-end; } + +.align-self-bottom { + -ms-flex-item-align: end; + align-self: flex-end; } + +.align-middle { + -ms-flex-align: center; + align-items: center; } + +.align-self-middle { + -ms-flex-item-align: center; + -ms-grid-row-align: center; + align-self: center; } + +.align-stretch { + -ms-flex-align: stretch; + align-items: stretch; } + +.align-self-stretch { + -ms-flex-item-align: stretch; + -ms-grid-row-align: stretch; + align-self: stretch; } + +.align-center-middle { + -ms-flex-pack: center; + justify-content: center; + -ms-flex-align: center; + align-items: center; + -ms-flex-line-pack: center; + align-content: center; } + +.small-order-1 { + -ms-flex-order: 1; + order: 1; } + +.small-order-2 { + -ms-flex-order: 2; + order: 2; } + +.small-order-3 { + -ms-flex-order: 3; + order: 3; } + +.small-order-4 { + -ms-flex-order: 4; + order: 4; } + +.small-order-5 { + -ms-flex-order: 5; + order: 5; } + +.small-order-6 { + -ms-flex-order: 6; + order: 6; } + +@media print, screen and (min-width: 40em) { + .medium-order-1 { + -ms-flex-order: 1; + order: 1; } + .medium-order-2 { + -ms-flex-order: 2; + order: 2; } + .medium-order-3 { + -ms-flex-order: 3; + order: 3; } + .medium-order-4 { + -ms-flex-order: 4; + order: 4; } + .medium-order-5 { + -ms-flex-order: 5; + order: 5; } + .medium-order-6 { + -ms-flex-order: 6; + order: 6; } } + +@media print, screen and (min-width: 64em) { + .large-order-1 { + -ms-flex-order: 1; + order: 1; } + .large-order-2 { + -ms-flex-order: 2; + order: 2; } + .large-order-3 { + -ms-flex-order: 3; + order: 3; } + .large-order-4 { + -ms-flex-order: 4; + order: 4; } + .large-order-5 { + -ms-flex-order: 5; + order: 5; } + .large-order-6 { + -ms-flex-order: 6; + order: 6; } } + +.flex-container { + display: -ms-flexbox; + display: flex; } + +.flex-child-auto { + -ms-flex: 1 1 auto; + flex: 1 1 auto; } + +.flex-child-grow { + -ms-flex: 1 0 auto; + flex: 1 0 auto; } + +.flex-child-shrink { + -ms-flex: 0 1 auto; + flex: 0 1 auto; } + +.flex-dir-row { + -ms-flex-direction: row; + flex-direction: row; } + +.flex-dir-row-reverse { + -ms-flex-direction: row-reverse; + flex-direction: row-reverse; } + +.flex-dir-column { + -ms-flex-direction: column; + flex-direction: column; } + +.flex-dir-column-reverse { + -ms-flex-direction: column-reverse; + flex-direction: column-reverse; } + +@media print, screen and (min-width: 40em) { + .medium-flex-container { + display: -ms-flexbox; + display: flex; } + .medium-flex-child-auto { + -ms-flex: 1 1 auto; + flex: 1 1 auto; } + .medium-flex-child-grow { + -ms-flex: 1 0 auto; + flex: 1 0 auto; } + .medium-flex-child-shrink { + -ms-flex: 0 1 auto; + flex: 0 1 auto; } + .medium-flex-dir-row { + -ms-flex-direction: row; + flex-direction: row; } + .medium-flex-dir-row-reverse { + -ms-flex-direction: row-reverse; + flex-direction: row-reverse; } + .medium-flex-dir-column { + -ms-flex-direction: column; + flex-direction: column; } + .medium-flex-dir-column-reverse { + -ms-flex-direction: column-reverse; + flex-direction: column-reverse; } } + +@media print, screen and (min-width: 64em) { + .large-flex-container { + display: -ms-flexbox; + display: flex; } + .large-flex-child-auto { + -ms-flex: 1 1 auto; + flex: 1 1 auto; } + .large-flex-child-grow { + -ms-flex: 1 0 auto; + flex: 1 0 auto; } + .large-flex-child-shrink { + -ms-flex: 0 1 auto; + flex: 0 1 auto; } + .large-flex-dir-row { + -ms-flex-direction: row; + flex-direction: row; } + .large-flex-dir-row-reverse { + -ms-flex-direction: row-reverse; + flex-direction: row-reverse; } + .large-flex-dir-column { + -ms-flex-direction: column; + flex-direction: column; } + .large-flex-dir-column-reverse { + -ms-flex-direction: column-reverse; + flex-direction: column-reverse; } } + +div, +dl, +dt, +dd, +ul, +ol, +li, +h1, +h2, +h3, +h4, +h5, +h6, +pre, +form, +p, +blockquote, +th, +td { + margin: 0; + padding: 0; } + +p { + margin-bottom: 1rem; + font-size: inherit; + line-height: 1.6; + text-rendering: optimizeLegibility; } + +em, +i { + font-style: italic; + line-height: inherit; } + +strong, +b { + font-weight: bold; + line-height: inherit; } + +small { + font-size: 80%; + line-height: inherit; } + +h1, .h1, +h2, .h2, +h3, .h3, +h4, .h4, +h5, .h5, +h6, .h6 { + font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; + font-style: normal; + font-weight: normal; + color: inherit; + text-rendering: optimizeLegibility; } + h1 small, .h1 small, + h2 small, .h2 small, + h3 small, .h3 small, + h4 small, .h4 small, + h5 small, .h5 small, + h6 small, .h6 small { + line-height: 0; + color: #cacaca; } + +h1, .h1 { + font-size: 1.5rem; + line-height: 1.4; + margin-top: 0; + margin-bottom: 0.5rem; } + +h2, .h2 { + font-size: 1.25rem; + line-height: 1.4; + margin-top: 0; + margin-bottom: 0.5rem; } + +h3, .h3 { + font-size: 1.1875rem; + line-height: 1.4; + margin-top: 0; + margin-bottom: 0.5rem; } + +h4, .h4 { + font-size: 1.125rem; + line-height: 1.4; + margin-top: 0; + margin-bottom: 0.5rem; } + +h5, .h5 { + font-size: 1.0625rem; + line-height: 1.4; + margin-top: 0; + margin-bottom: 0.5rem; } + +h6, .h6 { + font-size: 1rem; + line-height: 1.4; + margin-top: 0; + margin-bottom: 0.5rem; } + +@media print, screen and (min-width: 40em) { + h1, .h1 { + font-size: 3rem; } + h2, .h2 { + font-size: 2.5rem; } + h3, .h3 { + font-size: 1.9375rem; } + h4, .h4 { + font-size: 1.5625rem; } + h5, .h5 { + font-size: 1.25rem; } + h6, .h6 { + font-size: 1rem; } } + +a { + line-height: inherit; + color: #1779ba; + text-decoration: none; + cursor: pointer; } + a:hover, a:focus { + color: #1468a0; } + a img { + border: 0; } + +hr { + clear: both; + max-width: 75rem; + height: 0; + margin: 1.25rem auto; + border-top: 0; + border-right: 0; + border-bottom: 1px solid #cacaca; + border-left: 0; } + +ul, +ol, +dl { + margin-bottom: 1rem; + list-style-position: outside; + line-height: 1.6; } + +li { + font-size: inherit; } + +ul { + margin-left: 1.25rem; + list-style-type: disc; } + +ol { + margin-left: 1.25rem; } + +ul ul, ol ul, ul ol, ol ol { + margin-left: 1.25rem; + margin-bottom: 0; } + +dl { + margin-bottom: 1rem; } + dl dt { + margin-bottom: 0.3rem; + font-weight: bold; } + +blockquote { + margin: 0 0 1rem; + padding: 0.5625rem 1.25rem 0 1.1875rem; + border-left: 1px solid #cacaca; } + blockquote, blockquote p { + line-height: 1.6; + color: #8a8a8a; } + +cite { + display: block; + font-size: 0.8125rem; + color: #8a8a8a; } + cite:before { + content: "— "; } + +abbr, abbr[title] { + border-bottom: 1px dotted #0a0a0a; + cursor: help; + text-decoration: none; } + +figure { + margin: 0; } + +code { + padding: 0.125rem 0.3125rem 0.0625rem; + border: 1px solid #cacaca; + background-color: #e6e6e6; + font-family: Consolas, "Liberation Mono", Courier, monospace; + font-weight: normal; + color: #0a0a0a; } + +kbd { + margin: 0; + padding: 0.125rem 0.25rem 0; + background-color: #e6e6e6; + font-family: Consolas, "Liberation Mono", Courier, monospace; + color: #0a0a0a; } + +.subheader { + margin-top: 0.2rem; + margin-bottom: 0.5rem; + font-weight: normal; + line-height: 1.4; + color: #8a8a8a; } + +.lead { + font-size: 125%; + line-height: 1.6; } + +.stat { + font-size: 2.5rem; + line-height: 1; } + p + .stat { + margin-top: -1rem; } + +ul.no-bullet, ol.no-bullet { + margin-left: 0; + list-style: none; } + +.text-left { + text-align: left; } + +.text-right { + text-align: right; } + +.text-center { + text-align: center; } + +.text-justify { + text-align: justify; } + +@media print, screen and (min-width: 40em) { + .medium-text-left { + text-align: left; } + .medium-text-right { + text-align: right; } + .medium-text-center { + text-align: center; } + .medium-text-justify { + text-align: justify; } } + +@media print, screen and (min-width: 64em) { + .large-text-left { + text-align: left; } + .large-text-right { + text-align: right; } + .large-text-center { + text-align: center; } + .large-text-justify { + text-align: justify; } } + +.show-for-print { + display: none !important; } + +@media print { + * { + background: transparent !important; + box-shadow: none !important; + color: black !important; + text-shadow: none !important; } + .show-for-print { + display: block !important; } + .hide-for-print { + display: none !important; } + table.show-for-print { + display: table !important; } + thead.show-for-print { + display: table-header-group !important; } + tbody.show-for-print { + display: table-row-group !important; } + tr.show-for-print { + display: table-row !important; } + td.show-for-print { + display: table-cell !important; } + th.show-for-print { + display: table-cell !important; } + a, + a:visited { + text-decoration: underline; } + a[href]:after { + content: " (" attr(href) ")"; } + .ir a:after, + a[href^='javascript:']:after, + a[href^='#']:after { + content: ''; } + abbr[title]:after { + content: " (" attr(title) ")"; } + pre, + blockquote { + border: 1px solid #8a8a8a; + page-break-inside: avoid; } + thead { + display: table-header-group; } + tr, + img { + page-break-inside: avoid; } + img { + max-width: 100% !important; } + @page { + margin: 0.5cm; } + p, + h2, + h3 { + orphans: 3; + widows: 3; } + h2, + h3 { + page-break-after: avoid; } + .print-break-inside { + page-break-inside: auto; } } + +.button { + display: inline-block; + vertical-align: middle; + margin: 0 0 1rem 0; + font-family: inherit; + padding: 0.85em 1em; + -webkit-appearance: none; + border: 1px solid transparent; + border-radius: 0; + transition: background-color 0.25s ease-out, color 0.25s ease-out; + font-size: 0.9rem; + line-height: 1; + text-align: center; + cursor: pointer; + background-color: #1779ba; + color: #fefefe; } + [data-whatinput='mouse'] .button { + outline: 0; } + .button:hover, .button:focus { + background-color: #14679e; + color: #fefefe; } + .button.tiny { + font-size: 0.6rem; } + .button.small { + font-size: 0.75rem; } + .button.large { + font-size: 1.25rem; } + .button.expanded { + display: block; + width: 100%; + margin-right: 0; + margin-left: 0; } + .button.primary { + background-color: #1779ba; + color: #fefefe; } + .button.primary:hover, .button.primary:focus { + background-color: #126195; + color: #fefefe; } + .button.secondary { + background-color: #767676; + color: #fefefe; } + .button.secondary:hover, .button.secondary:focus { + background-color: #5e5e5e; + color: #fefefe; } + .button.success { + background-color: #3adb76; + color: #0a0a0a; } + .button.success:hover, .button.success:focus { + background-color: #22bb5b; + color: #0a0a0a; } + .button.warning { + background-color: #ffae00; + color: #0a0a0a; } + .button.warning:hover, .button.warning:focus { + background-color: #cc8b00; + color: #0a0a0a; } + .button.alert { + background-color: #cc4b37; + color: #fefefe; } + .button.alert:hover, .button.alert:focus { + background-color: #a53b2a; + color: #fefefe; } + .button.disabled, .button[disabled] { + opacity: 0.25; + cursor: not-allowed; } + .button.disabled, .button.disabled:hover, .button.disabled:focus, .button[disabled], .button[disabled]:hover, .button[disabled]:focus { + background-color: #1779ba; + color: #fefefe; } + .button.disabled.primary, .button[disabled].primary { + opacity: 0.25; + cursor: not-allowed; } + .button.disabled.primary, .button.disabled.primary:hover, .button.disabled.primary:focus, .button[disabled].primary, .button[disabled].primary:hover, .button[disabled].primary:focus { + background-color: #1779ba; + color: #fefefe; } + .button.disabled.secondary, .button[disabled].secondary { + opacity: 0.25; + cursor: not-allowed; } + .button.disabled.secondary, .button.disabled.secondary:hover, .button.disabled.secondary:focus, .button[disabled].secondary, .button[disabled].secondary:hover, .button[disabled].secondary:focus { + background-color: #767676; + color: #fefefe; } + .button.disabled.success, .button[disabled].success { + opacity: 0.25; + cursor: not-allowed; } + .button.disabled.success, .button.disabled.success:hover, .button.disabled.success:focus, .button[disabled].success, .button[disabled].success:hover, .button[disabled].success:focus { + background-color: #3adb76; + color: #0a0a0a; } + .button.disabled.warning, .button[disabled].warning { + opacity: 0.25; + cursor: not-allowed; } + .button.disabled.warning, .button.disabled.warning:hover, .button.disabled.warning:focus, .button[disabled].warning, .button[disabled].warning:hover, .button[disabled].warning:focus { + background-color: #ffae00; + color: #0a0a0a; } + .button.disabled.alert, .button[disabled].alert { + opacity: 0.25; + cursor: not-allowed; } + .button.disabled.alert, .button.disabled.alert:hover, .button.disabled.alert:focus, .button[disabled].alert, .button[disabled].alert:hover, .button[disabled].alert:focus { + background-color: #cc4b37; + color: #fefefe; } + .button.hollow { + border: 1px solid #1779ba; + color: #1779ba; } + .button.hollow, .button.hollow:hover, .button.hollow:focus { + background-color: transparent; } + .button.hollow.disabled, .button.hollow.disabled:hover, .button.hollow.disabled:focus, .button.hollow[disabled], .button.hollow[disabled]:hover, .button.hollow[disabled]:focus { + background-color: transparent; } + .button.hollow:hover, .button.hollow:focus { + border-color: #0c3d5d; + color: #0c3d5d; } + .button.hollow:hover.disabled, .button.hollow:hover[disabled], .button.hollow:focus.disabled, .button.hollow:focus[disabled] { + border: 1px solid #1779ba; + color: #1779ba; } + .button.hollow.primary { + border: 1px solid #1779ba; + color: #1779ba; } + .button.hollow.primary:hover, .button.hollow.primary:focus { + border-color: #0c3d5d; + color: #0c3d5d; } + .button.hollow.primary:hover.disabled, .button.hollow.primary:hover[disabled], .button.hollow.primary:focus.disabled, .button.hollow.primary:focus[disabled] { + border: 1px solid #1779ba; + color: #1779ba; } + .button.hollow.secondary { + border: 1px solid #767676; + color: #767676; } + .button.hollow.secondary:hover, .button.hollow.secondary:focus { + border-color: #3b3b3b; + color: #3b3b3b; } + .button.hollow.secondary:hover.disabled, .button.hollow.secondary:hover[disabled], .button.hollow.secondary:focus.disabled, .button.hollow.secondary:focus[disabled] { + border: 1px solid #767676; + color: #767676; } + .button.hollow.success { + border: 1px solid #3adb76; + color: #3adb76; } + .button.hollow.success:hover, .button.hollow.success:focus { + border-color: #157539; + color: #157539; } + .button.hollow.success:hover.disabled, .button.hollow.success:hover[disabled], .button.hollow.success:focus.disabled, .button.hollow.success:focus[disabled] { + border: 1px solid #3adb76; + color: #3adb76; } + .button.hollow.warning { + border: 1px solid #ffae00; + color: #ffae00; } + .button.hollow.warning:hover, .button.hollow.warning:focus { + border-color: #805700; + color: #805700; } + .button.hollow.warning:hover.disabled, .button.hollow.warning:hover[disabled], .button.hollow.warning:focus.disabled, .button.hollow.warning:focus[disabled] { + border: 1px solid #ffae00; + color: #ffae00; } + .button.hollow.alert { + border: 1px solid #cc4b37; + color: #cc4b37; } + .button.hollow.alert:hover, .button.hollow.alert:focus { + border-color: #67251a; + color: #67251a; } + .button.hollow.alert:hover.disabled, .button.hollow.alert:hover[disabled], .button.hollow.alert:focus.disabled, .button.hollow.alert:focus[disabled] { + border: 1px solid #cc4b37; + color: #cc4b37; } + .button.clear { + border: 1px solid #1779ba; + color: #1779ba; } + .button.clear, .button.clear:hover, .button.clear:focus { + background-color: transparent; } + .button.clear.disabled, .button.clear.disabled:hover, .button.clear.disabled:focus, .button.clear[disabled], .button.clear[disabled]:hover, .button.clear[disabled]:focus { + background-color: transparent; } + .button.clear:hover, .button.clear:focus { + border-color: #0c3d5d; + color: #0c3d5d; } + .button.clear:hover.disabled, .button.clear:hover[disabled], .button.clear:focus.disabled, .button.clear:focus[disabled] { + border: 1px solid #1779ba; + color: #1779ba; } + .button.clear, .button.clear.disabled, .button.clear[disabled], .button.clear:hover, .button.clear:hover.disabled, .button.clear:hover[disabled], .button.clear:focus, .button.clear:focus.disabled, .button.clear:focus[disabled] { + border-color: transparent; } + .button.clear.primary { + border: 1px solid #1779ba; + color: #1779ba; } + .button.clear.primary:hover, .button.clear.primary:focus { + border-color: #0c3d5d; + color: #0c3d5d; } + .button.clear.primary:hover.disabled, .button.clear.primary:hover[disabled], .button.clear.primary:focus.disabled, .button.clear.primary:focus[disabled] { + border: 1px solid #1779ba; + color: #1779ba; } + .button.clear.primary, .button.clear.primary.disabled, .button.clear.primary[disabled], .button.clear.primary:hover, .button.clear.primary:hover.disabled, .button.clear.primary:hover[disabled], .button.clear.primary:focus, .button.clear.primary:focus.disabled, .button.clear.primary:focus[disabled] { + border-color: transparent; } + .button.clear.secondary { + border: 1px solid #767676; + color: #767676; } + .button.clear.secondary:hover, .button.clear.secondary:focus { + border-color: #3b3b3b; + color: #3b3b3b; } + .button.clear.secondary:hover.disabled, .button.clear.secondary:hover[disabled], .button.clear.secondary:focus.disabled, .button.clear.secondary:focus[disabled] { + border: 1px solid #767676; + color: #767676; } + .button.clear.secondary, .button.clear.secondary.disabled, .button.clear.secondary[disabled], .button.clear.secondary:hover, .button.clear.secondary:hover.disabled, .button.clear.secondary:hover[disabled], .button.clear.secondary:focus, .button.clear.secondary:focus.disabled, .button.clear.secondary:focus[disabled] { + border-color: transparent; } + .button.clear.success { + border: 1px solid #3adb76; + color: #3adb76; } + .button.clear.success:hover, .button.clear.success:focus { + border-color: #157539; + color: #157539; } + .button.clear.success:hover.disabled, .button.clear.success:hover[disabled], .button.clear.success:focus.disabled, .button.clear.success:focus[disabled] { + border: 1px solid #3adb76; + color: #3adb76; } + .button.clear.success, .button.clear.success.disabled, .button.clear.success[disabled], .button.clear.success:hover, .button.clear.success:hover.disabled, .button.clear.success:hover[disabled], .button.clear.success:focus, .button.clear.success:focus.disabled, .button.clear.success:focus[disabled] { + border-color: transparent; } + .button.clear.warning { + border: 1px solid #ffae00; + color: #ffae00; } + .button.clear.warning:hover, .button.clear.warning:focus { + border-color: #805700; + color: #805700; } + .button.clear.warning:hover.disabled, .button.clear.warning:hover[disabled], .button.clear.warning:focus.disabled, .button.clear.warning:focus[disabled] { + border: 1px solid #ffae00; + color: #ffae00; } + .button.clear.warning, .button.clear.warning.disabled, .button.clear.warning[disabled], .button.clear.warning:hover, .button.clear.warning:hover.disabled, .button.clear.warning:hover[disabled], .button.clear.warning:focus, .button.clear.warning:focus.disabled, .button.clear.warning:focus[disabled] { + border-color: transparent; } + .button.clear.alert { + border: 1px solid #cc4b37; + color: #cc4b37; } + .button.clear.alert:hover, .button.clear.alert:focus { + border-color: #67251a; + color: #67251a; } + .button.clear.alert:hover.disabled, .button.clear.alert:hover[disabled], .button.clear.alert:focus.disabled, .button.clear.alert:focus[disabled] { + border: 1px solid #cc4b37; + color: #cc4b37; } + .button.clear.alert, .button.clear.alert.disabled, .button.clear.alert[disabled], .button.clear.alert:hover, .button.clear.alert:hover.disabled, .button.clear.alert:hover[disabled], .button.clear.alert:focus, .button.clear.alert:focus.disabled, .button.clear.alert:focus[disabled] { + border-color: transparent; } + .button.dropdown::after { + display: block; + width: 0; + height: 0; + border: inset 0.4em; + content: ''; + border-bottom-width: 0; + border-top-style: solid; + border-color: #fefefe transparent transparent; + position: relative; + top: 0.4em; + display: inline-block; + float: right; + margin-left: 1em; } + .button.dropdown.hollow::after { + border-top-color: #1779ba; } + .button.dropdown.hollow.primary::after { + border-top-color: #1779ba; } + .button.dropdown.hollow.secondary::after { + border-top-color: #767676; } + .button.dropdown.hollow.success::after { + border-top-color: #3adb76; } + .button.dropdown.hollow.warning::after { + border-top-color: #ffae00; } + .button.dropdown.hollow.alert::after { + border-top-color: #cc4b37; } + .button.arrow-only::after { + top: -0.1em; + float: none; + margin-left: 0; } + +a.button:hover, a.button:focus { + text-decoration: none; } + +[type='text'], [type='password'], [type='date'], [type='datetime'], [type='datetime-local'], [type='month'], [type='week'], [type='email'], [type='number'], [type='search'], [type='tel'], [type='time'], [type='url'], [type='color'], +textarea { + display: block; + box-sizing: border-box; + width: 100%; + height: 2.4375rem; + margin: 0 0 1rem; + padding: 0.5rem; + border: 1px solid #cacaca; + border-radius: 0; + background-color: #fefefe; + box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.1); + font-family: inherit; + font-size: 1rem; + font-weight: normal; + line-height: 1.5; + color: #0a0a0a; + transition: box-shadow 0.5s, border-color 0.25s ease-in-out; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; } + [type='text']:focus, [type='password']:focus, [type='date']:focus, [type='datetime']:focus, [type='datetime-local']:focus, [type='month']:focus, [type='week']:focus, [type='email']:focus, [type='number']:focus, [type='search']:focus, [type='tel']:focus, [type='time']:focus, [type='url']:focus, [type='color']:focus, + textarea:focus { + outline: none; + border: 1px solid #8a8a8a; + background-color: #fefefe; + box-shadow: 0 0 5px #cacaca; + transition: box-shadow 0.5s, border-color 0.25s ease-in-out; } + +textarea { + max-width: 100%; } + textarea[rows] { + height: auto; } + +input::-webkit-input-placeholder, +textarea::-webkit-input-placeholder { + color: #cacaca; } + +input::-moz-placeholder, +textarea::-moz-placeholder { + color: #cacaca; } + +input:-ms-input-placeholder, +textarea:-ms-input-placeholder { + color: #cacaca; } + +input::placeholder, +textarea::placeholder { + color: #cacaca; } + +input:disabled, input[readonly], +textarea:disabled, +textarea[readonly] { + background-color: #e6e6e6; + cursor: not-allowed; } + +[type='submit'], +[type='button'] { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + border-radius: 0; } + +input[type='search'] { + box-sizing: border-box; } + +[type='file'], +[type='checkbox'], +[type='radio'] { + margin: 0 0 1rem; } + +[type='checkbox'] + label, +[type='radio'] + label { + display: inline-block; + vertical-align: baseline; + margin-left: 0.5rem; + margin-right: 1rem; + margin-bottom: 0; } + [type='checkbox'] + label[for], + [type='radio'] + label[for] { + cursor: pointer; } + +label > [type='checkbox'], +label > [type='radio'] { + margin-right: 0.5rem; } + +[type='file'] { + width: 100%; } + +label { + display: block; + margin: 0; + font-size: 0.875rem; + font-weight: normal; + line-height: 1.8; + color: #0a0a0a; } + label.middle { + margin: 0 0 1rem; + padding: 0.5625rem 0; } + +.help-text { + margin-top: -0.5rem; + font-size: 0.8125rem; + font-style: italic; + color: #0a0a0a; } + +.input-group { + display: -ms-flexbox; + display: flex; + width: 100%; + margin-bottom: 1rem; + -ms-flex-align: stretch; + align-items: stretch; } + .input-group > :first-child { + border-radius: 0 0 0 0; } + .input-group > :last-child > * { + border-radius: 0 0 0 0; } + +.input-group-label, .input-group-field, .input-group-button, .input-group-button a, +.input-group-button input, +.input-group-button button, +.input-group-button label { + margin: 0; + white-space: nowrap; } + +.input-group-label { + padding: 0 1rem; + border: 1px solid #cacaca; + background: #e6e6e6; + color: #0a0a0a; + text-align: center; + white-space: nowrap; + display: -ms-flexbox; + display: flex; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + -ms-flex-align: center; + align-items: center; } + .input-group-label:first-child { + border-right: 0; } + .input-group-label:last-child { + border-left: 0; } + +.input-group-field { + border-radius: 0; + -ms-flex: 1 1 0px; + flex: 1 1 0px; + height: auto; + min-width: 0; } + +.input-group-button { + padding-top: 0; + padding-bottom: 0; + text-align: center; + display: -ms-flexbox; + display: flex; + -ms-flex: 0 0 auto; + flex: 0 0 auto; } + .input-group-button a, + .input-group-button input, + .input-group-button button, + .input-group-button label { + height: auto; + -ms-flex-item-align: stretch; + -ms-grid-row-align: stretch; + align-self: stretch; + padding-top: 0; + padding-bottom: 0; + font-size: 1rem; } + +fieldset { + margin: 0; + padding: 0; + border: 0; } + +legend { + max-width: 100%; + margin-bottom: 0.5rem; } + +.fieldset { + margin: 1.125rem 0; + padding: 1.25rem; + border: 1px solid #cacaca; } + .fieldset legend { + margin: 0; + margin-left: -0.1875rem; + padding: 0 0.1875rem; } + +select { + height: 2.4375rem; + margin: 0 0 1rem; + padding: 0.5rem; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + border: 1px solid #cacaca; + border-radius: 0; + background-color: #fefefe; + font-family: inherit; + font-size: 1rem; + font-weight: normal; + line-height: 1.5; + color: #0a0a0a; + background-image: url("data:image/svg+xml;utf8,"); + background-origin: content-box; + background-position: right -1rem center; + background-repeat: no-repeat; + background-size: 9px 6px; + padding-right: 1.5rem; + transition: box-shadow 0.5s, border-color 0.25s ease-in-out; } + @media screen and (min-width: 0\0) { + select { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAYCAYAAACbU/80AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIpJREFUeNrEkckNgDAMBBfRkEt0ObRBBdsGXUDgmQfK4XhH2m8czQAAy27R3tsw4Qfe2x8uOO6oYLb6GlOor3GF+swURAOmUJ+RwtEJs9WvTGEYxBXqI1MQAZhCfUQKRzDMVj+TwrAIV6jvSUEkYAr1LSkcyTBb/V+KYfX7xAeusq3sLDtGH3kEGACPWIflNZfhRQAAAABJRU5ErkJggg=="); } } + select:focus { + outline: none; + border: 1px solid #8a8a8a; + background-color: #fefefe; + box-shadow: 0 0 5px #cacaca; + transition: box-shadow 0.5s, border-color 0.25s ease-in-out; } + select:disabled { + background-color: #e6e6e6; + cursor: not-allowed; } + select::-ms-expand { + display: none; } + select[multiple] { + height: auto; + background-image: none; } + +.is-invalid-input:not(:focus) { + border-color: #cc4b37; + background-color: #f9ecea; } + .is-invalid-input:not(:focus)::-webkit-input-placeholder { + color: #cc4b37; } + .is-invalid-input:not(:focus)::-moz-placeholder { + color: #cc4b37; } + .is-invalid-input:not(:focus):-ms-input-placeholder { + color: #cc4b37; } + .is-invalid-input:not(:focus)::placeholder { + color: #cc4b37; } + +.is-invalid-label { + color: #cc4b37; } + +.form-error { + display: none; + margin-top: -0.5rem; + margin-bottom: 1rem; + font-size: 0.75rem; + font-weight: bold; + color: #cc4b37; } + .form-error.is-visible { + display: block; } + +.accordion { + margin-left: 0; + background: #fefefe; + list-style-type: none; } + .accordion[disabled] .accordion-title { + cursor: not-allowed; } + +.accordion-item:first-child > :first-child { + border-radius: 0 0 0 0; } + +.accordion-item:last-child > :last-child { + border-radius: 0 0 0 0; } + +.accordion-title { + position: relative; + display: block; + padding: 1.25rem 1rem; + border: 1px solid #e6e6e6; + border-bottom: 0; + font-size: 0.75rem; + line-height: 1; + color: #1779ba; } + :last-child:not(.is-active) > .accordion-title { + border-bottom: 1px solid #e6e6e6; + border-radius: 0 0 0 0; } + .accordion-title:hover, .accordion-title:focus { + background-color: #e6e6e6; } + .accordion-title::before { + position: absolute; + top: 50%; + right: 1rem; + margin-top: -0.5rem; + content: '+'; } + .is-active > .accordion-title::before { + content: '\2013'; } + +.accordion-content { + display: none; + padding: 1rem; + border: 1px solid #e6e6e6; + border-bottom: 0; + background-color: #fefefe; + color: #0a0a0a; } + :last-child > .accordion-content:last-child { + border-bottom: 1px solid #e6e6e6; } + +.accordion-menu li { + width: 100%; } + +.accordion-menu a { + padding: 0.7rem 1rem; } + +.accordion-menu .is-accordion-submenu a { + padding: 0.7rem 1rem; } + +.accordion-menu .nested.is-accordion-submenu { + margin-right: 0; + margin-left: 1rem; } + +.accordion-menu.align-right .nested.is-accordion-submenu { + margin-right: 1rem; + margin-left: 0; } + +.accordion-menu .is-accordion-submenu-parent:not(.has-submenu-toggle) > a { + position: relative; } + .accordion-menu .is-accordion-submenu-parent:not(.has-submenu-toggle) > a::after { + display: block; + width: 0; + height: 0; + border: inset 6px; + content: ''; + border-bottom-width: 0; + border-top-style: solid; + border-color: #1779ba transparent transparent; + position: absolute; + top: 50%; + margin-top: -3px; + right: 1rem; } + +.accordion-menu.align-left .is-accordion-submenu-parent > a::after { + left: auto; + right: 1rem; } + +.accordion-menu.align-right .is-accordion-submenu-parent > a::after { + right: auto; + left: 1rem; } + +.accordion-menu .is-accordion-submenu-parent[aria-expanded='true'] > a::after { + -ms-transform: rotate(180deg); + transform: rotate(180deg); + -ms-transform-origin: 50% 50%; + transform-origin: 50% 50%; } + +.is-accordion-submenu-parent { + position: relative; } + +.has-submenu-toggle > a { + margin-right: 40px; } + +.submenu-toggle { + position: absolute; + top: 0; + right: 0; + cursor: pointer; + width: 40px; + height: 40px; } + .submenu-toggle::after { + display: block; + width: 0; + height: 0; + border: inset 6px; + content: ''; + border-bottom-width: 0; + border-top-style: solid; + border-color: #1779ba transparent transparent; + top: 0; + bottom: 0; + margin: auto; } + +.submenu-toggle[aria-expanded='true']::after { + -ms-transform: scaleY(-1); + transform: scaleY(-1); + -ms-transform-origin: 50% 50%; + transform-origin: 50% 50%; } + +.submenu-toggle-text { + position: absolute !important; + width: 1px; + height: 1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + -webkit-clip-path: inset(50%); + clip-path: inset(50%); + border: 0; } + +.badge { + display: inline-block; + min-width: 2.1em; + padding: 0.3em; + border-radius: 50%; + font-size: 0.6rem; + text-align: center; + background: #1779ba; + color: #fefefe; } + .badge.primary { + background: #1779ba; + color: #fefefe; } + .badge.secondary { + background: #767676; + color: #fefefe; } + .badge.success { + background: #3adb76; + color: #0a0a0a; } + .badge.warning { + background: #ffae00; + color: #0a0a0a; } + .badge.alert { + background: #cc4b37; + color: #fefefe; } + +.breadcrumbs { + margin: 0 0 1rem 0; + list-style: none; } + .breadcrumbs::before, .breadcrumbs::after { + display: table; + content: ' '; + -ms-flex-preferred-size: 0; + flex-basis: 0; + -ms-flex-order: 1; + order: 1; } + .breadcrumbs::after { + clear: both; } + .breadcrumbs li { + float: left; + font-size: 0.6875rem; + color: #0a0a0a; + cursor: default; + text-transform: uppercase; } + .breadcrumbs li:not(:last-child)::after { + position: relative; + margin: 0 0.75rem; + opacity: 1; + content: "/"; + color: #cacaca; } + .breadcrumbs a { + color: #1779ba; } + .breadcrumbs a:hover { + text-decoration: underline; } + .breadcrumbs .disabled { + color: #cacaca; + cursor: not-allowed; } + +.button-group { + margin-bottom: 1rem; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -ms-flex-align: stretch; + align-items: stretch; } + .button-group::before, .button-group::after { + display: table; + content: ' '; + -ms-flex-preferred-size: 0; + flex-basis: 0; + -ms-flex-order: 1; + order: 1; } + .button-group::after { + clear: both; } + .button-group .button { + margin: 0; + margin-right: 1px; + margin-bottom: 1px; + font-size: 0.9rem; + -ms-flex: 0 0 auto; + flex: 0 0 auto; } + .button-group .button:last-child { + margin-right: 0; } + .button-group.tiny .button { + font-size: 0.6rem; } + .button-group.small .button { + font-size: 0.75rem; } + .button-group.large .button { + font-size: 1.25rem; } + .button-group.expanded .button { + -ms-flex: 1 1 0px; + flex: 1 1 0px; } + .button-group.primary .button { + background-color: #1779ba; + color: #fefefe; } + .button-group.primary .button:hover, .button-group.primary .button:focus { + background-color: #126195; + color: #fefefe; } + .button-group.secondary .button { + background-color: #767676; + color: #fefefe; } + .button-group.secondary .button:hover, .button-group.secondary .button:focus { + background-color: #5e5e5e; + color: #fefefe; } + .button-group.success .button { + background-color: #3adb76; + color: #0a0a0a; } + .button-group.success .button:hover, .button-group.success .button:focus { + background-color: #22bb5b; + color: #0a0a0a; } + .button-group.warning .button { + background-color: #ffae00; + color: #0a0a0a; } + .button-group.warning .button:hover, .button-group.warning .button:focus { + background-color: #cc8b00; + color: #0a0a0a; } + .button-group.alert .button { + background-color: #cc4b37; + color: #fefefe; } + .button-group.alert .button:hover, .button-group.alert .button:focus { + background-color: #a53b2a; + color: #fefefe; } + .button-group.stacked, .button-group.stacked-for-small, .button-group.stacked-for-medium { + -ms-flex-wrap: wrap; + flex-wrap: wrap; } + .button-group.stacked .button, .button-group.stacked-for-small .button, .button-group.stacked-for-medium .button { + -ms-flex: 0 0 100%; + flex: 0 0 100%; } + .button-group.stacked .button:last-child, .button-group.stacked-for-small .button:last-child, .button-group.stacked-for-medium .button:last-child { + margin-bottom: 0; } + @media print, screen and (min-width: 40em) { + .button-group.stacked-for-small .button { + -ms-flex: 1 1 0px; + flex: 1 1 0px; + margin-bottom: 0; } } + @media print, screen and (min-width: 64em) { + .button-group.stacked-for-medium .button { + -ms-flex: 1 1 0px; + flex: 1 1 0px; + margin-bottom: 0; } } + @media screen and (max-width: 39.9375em) { + .button-group.stacked-for-small.expanded { + display: block; } + .button-group.stacked-for-small.expanded .button { + display: block; + margin-right: 0; } } + +.card { + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; + -ms-flex-positive: 1; + flex-grow: 1; + margin-bottom: 1rem; + border: 1px solid #e6e6e6; + border-radius: 0; + background: #fefefe; + box-shadow: none; + overflow: hidden; + color: #0a0a0a; } + .card > :last-child { + margin-bottom: 0; } + +.card-divider { + -ms-flex: 0 1 auto; + flex: 0 1 auto; + display: -ms-flexbox; + display: flex; + padding: 1rem; + background: #e6e6e6; } + .card-divider > :last-child { + margin-bottom: 0; } + +.card-section { + -ms-flex: 1 0 auto; + flex: 1 0 auto; + padding: 1rem; } + .card-section > :last-child { + margin-bottom: 0; } + +.card-image { + min-height: 1px; } + +.callout { + position: relative; + margin: 0 0 1rem 0; + padding: 1rem; + border: 1px solid rgba(10, 10, 10, 0.25); + border-radius: 0; + background-color: white; + color: #0a0a0a; } + .callout > :first-child { + margin-top: 0; } + .callout > :last-child { + margin-bottom: 0; } + .callout.primary { + background-color: #d7ecfa; + color: #0a0a0a; } + .callout.secondary { + background-color: #eaeaea; + color: #0a0a0a; } + .callout.success { + background-color: #e1faea; + color: #0a0a0a; } + .callout.warning { + background-color: #fff3d9; + color: #0a0a0a; } + .callout.alert { + background-color: #f7e4e1; + color: #0a0a0a; } + .callout.small { + padding-top: 0.5rem; + padding-right: 0.5rem; + padding-bottom: 0.5rem; + padding-left: 0.5rem; } + .callout.large { + padding-top: 3rem; + padding-right: 3rem; + padding-bottom: 3rem; + padding-left: 3rem; } + +.close-button { + position: absolute; + color: #8a8a8a; + cursor: pointer; } + [data-whatinput='mouse'] .close-button { + outline: 0; } + .close-button:hover, .close-button:focus { + color: #0a0a0a; } + .close-button.small { + right: 0.66rem; + top: 0.33em; + font-size: 1.5em; + line-height: 1; } + .close-button, .close-button.medium { + right: 1rem; + top: 0.5rem; + font-size: 2em; + line-height: 1; } + +.menu { + padding: 0; + margin: 0; + list-style: none; + position: relative; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; } + [data-whatinput='mouse'] .menu li { + outline: 0; } + .menu a, + .menu .button { + line-height: 1; + text-decoration: none; + display: block; + padding: 0.7rem 1rem; } + .menu input, + .menu select, + .menu a, + .menu button { + margin-bottom: 0; } + .menu input { + display: inline-block; } + .menu, .menu.horizontal { + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -ms-flex-direction: row; + flex-direction: row; } + .menu.vertical { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -ms-flex-direction: column; + flex-direction: column; } + .menu.expanded li { + -ms-flex: 1 1 0px; + flex: 1 1 0px; } + .menu.simple { + -ms-flex-align: center; + align-items: center; } + .menu.simple li + li { + margin-left: 1rem; } + .menu.simple a { + padding: 0; } + @media print, screen and (min-width: 40em) { + .menu.medium-horizontal { + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -ms-flex-direction: row; + flex-direction: row; } + .menu.medium-vertical { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -ms-flex-direction: column; + flex-direction: column; } + .menu.medium-expanded li { + -ms-flex: 1 1 0px; + flex: 1 1 0px; } + .menu.medium-simple li { + -ms-flex: 1 1 0px; + flex: 1 1 0px; } } + @media print, screen and (min-width: 64em) { + .menu.large-horizontal { + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -ms-flex-direction: row; + flex-direction: row; } + .menu.large-vertical { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -ms-flex-direction: column; + flex-direction: column; } + .menu.large-expanded li { + -ms-flex: 1 1 0px; + flex: 1 1 0px; } + .menu.large-simple li { + -ms-flex: 1 1 0px; + flex: 1 1 0px; } } + .menu.nested { + margin-right: 0; + margin-left: 1rem; } + .menu.icons a { + display: -ms-flexbox; + display: flex; } + .menu.icon-top a, .menu.icon-right a, .menu.icon-bottom a, .menu.icon-left a { + display: -ms-flexbox; + display: flex; } + .menu.icon-left li a { + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; } + .menu.icon-left li a img, + .menu.icon-left li a i, + .menu.icon-left li a svg { + margin-right: 0.25rem; } + .menu.icon-right li a { + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; } + .menu.icon-right li a img, + .menu.icon-right li a i, + .menu.icon-right li a svg { + margin-left: 0.25rem; } + .menu.icon-top li a { + -ms-flex-flow: column nowrap; + flex-flow: column nowrap; } + .menu.icon-top li a img, + .menu.icon-top li a i, + .menu.icon-top li a svg { + -ms-flex-item-align: stretch; + -ms-grid-row-align: stretch; + align-self: stretch; + margin-bottom: 0.25rem; + text-align: center; } + .menu.icon-bottom li a { + -ms-flex-flow: column nowrap; + flex-flow: column nowrap; } + .menu.icon-bottom li a img, + .menu.icon-bottom li a i, + .menu.icon-bottom li a svg { + -ms-flex-item-align: stretch; + -ms-grid-row-align: stretch; + align-self: stretch; + margin-bottom: 0.25rem; + text-align: center; } + .menu .is-active > a { + background: #1779ba; + color: #fefefe; } + .menu .active > a { + background: #1779ba; + color: #fefefe; } + .menu.align-left { + -ms-flex-pack: start; + justify-content: flex-start; } + .menu.align-right li { + display: -ms-flexbox; + display: flex; + -ms-flex-pack: end; + justify-content: flex-end; } + .menu.align-right li .submenu li { + -ms-flex-pack: start; + justify-content: flex-start; } + .menu.align-right.vertical li { + display: block; + text-align: right; } + .menu.align-right.vertical li .submenu li { + text-align: right; } + .menu.align-right .nested { + margin-right: 1rem; + margin-left: 0; } + .menu.align-center li { + display: -ms-flexbox; + display: flex; + -ms-flex-pack: center; + justify-content: center; } + .menu.align-center li .submenu li { + -ms-flex-pack: start; + justify-content: flex-start; } + .menu .menu-text { + padding: 0.7rem 1rem; + font-weight: bold; + line-height: 1; + color: inherit; } + +.menu-centered > .menu { + -ms-flex-pack: center; + justify-content: center; } + .menu-centered > .menu li { + display: -ms-flexbox; + display: flex; + -ms-flex-pack: center; + justify-content: center; } + .menu-centered > .menu li .submenu li { + -ms-flex-pack: start; + justify-content: flex-start; } + +.no-js [data-responsive-menu] ul { + display: none; } + +.menu-icon { + position: relative; + display: inline-block; + vertical-align: middle; + width: 20px; + height: 16px; + cursor: pointer; } + .menu-icon::after { + position: absolute; + top: 0; + left: 0; + display: block; + width: 100%; + height: 2px; + background: #fefefe; + box-shadow: 0 7px 0 #fefefe, 0 14px 0 #fefefe; + content: ''; } + .menu-icon:hover::after { + background: #cacaca; + box-shadow: 0 7px 0 #cacaca, 0 14px 0 #cacaca; } + +.menu-icon.dark { + position: relative; + display: inline-block; + vertical-align: middle; + width: 20px; + height: 16px; + cursor: pointer; } + .menu-icon.dark::after { + position: absolute; + top: 0; + left: 0; + display: block; + width: 100%; + height: 2px; + background: #0a0a0a; + box-shadow: 0 7px 0 #0a0a0a, 0 14px 0 #0a0a0a; + content: ''; } + .menu-icon.dark:hover::after { + background: #8a8a8a; + box-shadow: 0 7px 0 #8a8a8a, 0 14px 0 #8a8a8a; } + +.is-drilldown { + position: relative; + overflow: hidden; } + .is-drilldown li { + display: block; } + .is-drilldown.animate-height { + transition: height 0.5s; } + +.drilldown a { + padding: 0.7rem 1rem; + background: #fefefe; } + +.drilldown .is-drilldown-submenu { + position: absolute; + top: 0; + left: 100%; + z-index: -1; + width: 100%; + background: #fefefe; + transition: transform 0.15s linear; } + .drilldown .is-drilldown-submenu.is-active { + z-index: 1; + display: block; + -ms-transform: translateX(-100%); + transform: translateX(-100%); } + .drilldown .is-drilldown-submenu.is-closing { + -ms-transform: translateX(100%); + transform: translateX(100%); } + .drilldown .is-drilldown-submenu a { + padding: 0.7rem 1rem; } + +.drilldown .nested.is-drilldown-submenu { + margin-right: 0; + margin-left: 0; } + +.drilldown .drilldown-submenu-cover-previous { + min-height: 100%; } + +.drilldown .is-drilldown-submenu-parent > a { + position: relative; } + .drilldown .is-drilldown-submenu-parent > a::after { + position: absolute; + top: 50%; + margin-top: -6px; + right: 1rem; + display: block; + width: 0; + height: 0; + border: inset 6px; + content: ''; + border-right-width: 0; + border-left-style: solid; + border-color: transparent transparent transparent #1779ba; } + +.drilldown.align-left .is-drilldown-submenu-parent > a::after { + left: auto; + right: 1rem; + display: block; + width: 0; + height: 0; + border: inset 6px; + content: ''; + border-right-width: 0; + border-left-style: solid; + border-color: transparent transparent transparent #1779ba; } + +.drilldown.align-right .is-drilldown-submenu-parent > a::after { + right: auto; + left: 1rem; + display: block; + width: 0; + height: 0; + border: inset 6px; + content: ''; + border-left-width: 0; + border-right-style: solid; + border-color: transparent #1779ba transparent transparent; } + +.drilldown .js-drilldown-back > a::before { + display: block; + width: 0; + height: 0; + border: inset 6px; + content: ''; + border-left-width: 0; + border-right-style: solid; + border-color: transparent #1779ba transparent transparent; + border-left-width: 0; + display: inline-block; + vertical-align: middle; + margin-right: 0.75rem; + border-left-width: 0; } + +.dropdown-pane { + position: absolute; + z-index: 10; + width: 300px; + padding: 1rem; + visibility: hidden; + display: none; + border: 1px solid #cacaca; + border-radius: 0; + background-color: #fefefe; + font-size: 1rem; } + .dropdown-pane.is-opening { + display: block; } + .dropdown-pane.is-open { + visibility: visible; + display: block; } + +.dropdown-pane.tiny { + width: 100px; } + +.dropdown-pane.small { + width: 200px; } + +.dropdown-pane.large { + width: 400px; } + +.dropdown.menu > li.opens-left > .is-dropdown-submenu { + top: 100%; + right: 0; + left: auto; } + +.dropdown.menu > li.opens-right > .is-dropdown-submenu { + top: 100%; + right: auto; + left: 0; } + +.dropdown.menu > li.is-dropdown-submenu-parent > a { + position: relative; + padding-right: 1.5rem; } + +.dropdown.menu > li.is-dropdown-submenu-parent > a::after { + display: block; + width: 0; + height: 0; + border: inset 6px; + content: ''; + border-bottom-width: 0; + border-top-style: solid; + border-color: #1779ba transparent transparent; + right: 5px; + left: auto; + margin-top: -3px; } + +.dropdown.menu a { + padding: 0.7rem 1rem; } + [data-whatinput='mouse'] .dropdown.menu a { + outline: 0; } + +.dropdown.menu .is-active > a { + background: transparent; + color: #1779ba; } + +.no-js .dropdown.menu ul { + display: none; } + +.dropdown.menu .nested.is-dropdown-submenu { + margin-right: 0; + margin-left: 0; } + +.dropdown.menu.vertical > li .is-dropdown-submenu { + top: 0; } + +.dropdown.menu.vertical > li.opens-left > .is-dropdown-submenu { + right: 100%; + left: auto; + top: 0; } + +.dropdown.menu.vertical > li.opens-right > .is-dropdown-submenu { + right: auto; + left: 100%; } + +.dropdown.menu.vertical > li > a::after { + right: 14px; } + +.dropdown.menu.vertical > li.opens-left > a::after { + right: auto; + left: 5px; + display: block; + width: 0; + height: 0; + border: inset 6px; + content: ''; + border-left-width: 0; + border-right-style: solid; + border-color: transparent #1779ba transparent transparent; } + +.dropdown.menu.vertical > li.opens-right > a::after { + display: block; + width: 0; + height: 0; + border: inset 6px; + content: ''; + border-right-width: 0; + border-left-style: solid; + border-color: transparent transparent transparent #1779ba; } + +@media print, screen and (min-width: 40em) { + .dropdown.menu.medium-horizontal > li.opens-left > .is-dropdown-submenu { + top: 100%; + right: 0; + left: auto; } + .dropdown.menu.medium-horizontal > li.opens-right > .is-dropdown-submenu { + top: 100%; + right: auto; + left: 0; } + .dropdown.menu.medium-horizontal > li.is-dropdown-submenu-parent > a { + position: relative; + padding-right: 1.5rem; } + .dropdown.menu.medium-horizontal > li.is-dropdown-submenu-parent > a::after { + display: block; + width: 0; + height: 0; + border: inset 6px; + content: ''; + border-bottom-width: 0; + border-top-style: solid; + border-color: #1779ba transparent transparent; + right: 5px; + left: auto; + margin-top: -3px; } + .dropdown.menu.medium-vertical > li .is-dropdown-submenu { + top: 0; } + .dropdown.menu.medium-vertical > li.opens-left > .is-dropdown-submenu { + right: 100%; + left: auto; + top: 0; } + .dropdown.menu.medium-vertical > li.opens-right > .is-dropdown-submenu { + right: auto; + left: 100%; } + .dropdown.menu.medium-vertical > li > a::after { + right: 14px; } + .dropdown.menu.medium-vertical > li.opens-left > a::after { + right: auto; + left: 5px; + display: block; + width: 0; + height: 0; + border: inset 6px; + content: ''; + border-left-width: 0; + border-right-style: solid; + border-color: transparent #1779ba transparent transparent; } + .dropdown.menu.medium-vertical > li.opens-right > a::after { + display: block; + width: 0; + height: 0; + border: inset 6px; + content: ''; + border-right-width: 0; + border-left-style: solid; + border-color: transparent transparent transparent #1779ba; } } + +@media print, screen and (min-width: 64em) { + .dropdown.menu.large-horizontal > li.opens-left > .is-dropdown-submenu { + top: 100%; + right: 0; + left: auto; } + .dropdown.menu.large-horizontal > li.opens-right > .is-dropdown-submenu { + top: 100%; + right: auto; + left: 0; } + .dropdown.menu.large-horizontal > li.is-dropdown-submenu-parent > a { + position: relative; + padding-right: 1.5rem; } + .dropdown.menu.large-horizontal > li.is-dropdown-submenu-parent > a::after { + display: block; + width: 0; + height: 0; + border: inset 6px; + content: ''; + border-bottom-width: 0; + border-top-style: solid; + border-color: #1779ba transparent transparent; + right: 5px; + left: auto; + margin-top: -3px; } + .dropdown.menu.large-vertical > li .is-dropdown-submenu { + top: 0; } + .dropdown.menu.large-vertical > li.opens-left > .is-dropdown-submenu { + right: 100%; + left: auto; + top: 0; } + .dropdown.menu.large-vertical > li.opens-right > .is-dropdown-submenu { + right: auto; + left: 100%; } + .dropdown.menu.large-vertical > li > a::after { + right: 14px; } + .dropdown.menu.large-vertical > li.opens-left > a::after { + right: auto; + left: 5px; + display: block; + width: 0; + height: 0; + border: inset 6px; + content: ''; + border-left-width: 0; + border-right-style: solid; + border-color: transparent #1779ba transparent transparent; } + .dropdown.menu.large-vertical > li.opens-right > a::after { + display: block; + width: 0; + height: 0; + border: inset 6px; + content: ''; + border-right-width: 0; + border-left-style: solid; + border-color: transparent transparent transparent #1779ba; } } + +.dropdown.menu.align-right .is-dropdown-submenu.first-sub { + top: 100%; + right: 0; + left: auto; } + +.is-dropdown-menu.vertical { + width: 100px; } + .is-dropdown-menu.vertical.align-right { + float: right; } + +.is-dropdown-submenu-parent { + position: relative; } + .is-dropdown-submenu-parent a::after { + position: absolute; + top: 50%; + right: 5px; + left: auto; + margin-top: -6px; } + .is-dropdown-submenu-parent.opens-inner > .is-dropdown-submenu { + top: 100%; + left: auto; } + .is-dropdown-submenu-parent.opens-left > .is-dropdown-submenu { + right: 100%; + left: auto; } + .is-dropdown-submenu-parent.opens-right > .is-dropdown-submenu { + right: auto; + left: 100%; } + +.is-dropdown-submenu { + position: absolute; + top: 0; + left: 100%; + z-index: 1; + display: none; + min-width: 200px; + border: 1px solid #cacaca; + background: #fefefe; } + .dropdown .is-dropdown-submenu a { + padding: 0.7rem 1rem; } + .is-dropdown-submenu .is-dropdown-submenu-parent > a::after { + right: 14px; } + .is-dropdown-submenu .is-dropdown-submenu-parent.opens-left > a::after { + right: auto; + left: 5px; + display: block; + width: 0; + height: 0; + border: inset 6px; + content: ''; + border-left-width: 0; + border-right-style: solid; + border-color: transparent #1779ba transparent transparent; } + .is-dropdown-submenu .is-dropdown-submenu-parent.opens-right > a::after { + display: block; + width: 0; + height: 0; + border: inset 6px; + content: ''; + border-right-width: 0; + border-left-style: solid; + border-color: transparent transparent transparent #1779ba; } + .is-dropdown-submenu .is-dropdown-submenu { + margin-top: -1px; } + .is-dropdown-submenu > li { + width: 100%; } + .is-dropdown-submenu.js-dropdown-active { + display: block; } + +.responsive-embed, +.flex-video { + position: relative; + height: 0; + margin-bottom: 1rem; + padding-bottom: 75%; + overflow: hidden; } + .responsive-embed iframe, + .responsive-embed object, + .responsive-embed embed, + .responsive-embed video, + .flex-video iframe, + .flex-video object, + .flex-video embed, + .flex-video video { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; } + .responsive-embed.widescreen, + .flex-video.widescreen { + padding-bottom: 56.25%; } + +.label { + display: inline-block; + padding: 0.33333rem 0.5rem; + border-radius: 0; + font-size: 0.8rem; + line-height: 1; + white-space: nowrap; + cursor: default; + background: #1779ba; + color: #fefefe; } + .label.primary { + background: #1779ba; + color: #fefefe; } + .label.secondary { + background: #767676; + color: #fefefe; } + .label.success { + background: #3adb76; + color: #0a0a0a; } + .label.warning { + background: #ffae00; + color: #0a0a0a; } + .label.alert { + background: #cc4b37; + color: #fefefe; } + +.media-object { + display: -ms-flexbox; + display: flex; + margin-bottom: 1rem; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; } + .media-object img { + max-width: none; } + @media screen and (max-width: 39.9375em) { + .media-object.stack-for-small { + -ms-flex-wrap: wrap; + flex-wrap: wrap; } } + @media screen and (max-width: 39.9375em) { + .media-object.stack-for-small .media-object-section { + padding: 0; + padding-bottom: 1rem; + -ms-flex-preferred-size: 100%; + flex-basis: 100%; + max-width: 100%; } + .media-object.stack-for-small .media-object-section img { + width: 100%; } } + +.media-object-section { + -ms-flex: 0 1 auto; + flex: 0 1 auto; } + .media-object-section:first-child { + padding-right: 1rem; } + .media-object-section:last-child:not(:nth-child(2)) { + padding-left: 1rem; } + .media-object-section > :last-child { + margin-bottom: 0; } + .media-object-section.main-section { + -ms-flex: 1 1 0px; + flex: 1 1 0px; } + +.is-off-canvas-open { + overflow: hidden; } + +.js-off-canvas-overlay { + position: absolute; + top: 0; + left: 0; + z-index: 11; + width: 100%; + height: 100%; + transition: opacity 0.5s ease, visibility 0.5s ease; + background: rgba(254, 254, 254, 0.25); + opacity: 0; + visibility: hidden; + overflow: hidden; } + .js-off-canvas-overlay.is-visible { + opacity: 1; + visibility: visible; } + .js-off-canvas-overlay.is-closable { + cursor: pointer; } + .js-off-canvas-overlay.is-overlay-absolute { + position: absolute; } + .js-off-canvas-overlay.is-overlay-fixed { + position: fixed; } + +.off-canvas-wrapper { + position: relative; + overflow: hidden; } + +.off-canvas { + position: fixed; + z-index: 12; + transition: transform 0.5s ease; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + background: #e6e6e6; } + [data-whatinput='mouse'] .off-canvas { + outline: 0; } + .off-canvas.is-transition-push { + z-index: 12; } + .off-canvas.is-closed { + visibility: hidden; } + .off-canvas.is-transition-overlap { + z-index: 13; } + .off-canvas.is-transition-overlap.is-open { + box-shadow: 0 0 10px rgba(10, 10, 10, 0.7); } + .off-canvas.is-open { + -ms-transform: translate(0, 0); + transform: translate(0, 0); } + +.off-canvas-absolute { + position: absolute; + z-index: 12; + transition: transform 0.5s ease; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + background: #e6e6e6; } + [data-whatinput='mouse'] .off-canvas-absolute { + outline: 0; } + .off-canvas-absolute.is-transition-push { + z-index: 12; } + .off-canvas-absolute.is-closed { + visibility: hidden; } + .off-canvas-absolute.is-transition-overlap { + z-index: 13; } + .off-canvas-absolute.is-transition-overlap.is-open { + box-shadow: 0 0 10px rgba(10, 10, 10, 0.7); } + .off-canvas-absolute.is-open { + -ms-transform: translate(0, 0); + transform: translate(0, 0); } + +.position-left { + top: 0; + left: 0; + height: 100%; + overflow-y: auto; + width: 250px; + -ms-transform: translateX(-250px); + transform: translateX(-250px); } + .off-canvas-content .off-canvas.position-left { + -ms-transform: translateX(-250px); + transform: translateX(-250px); } + .off-canvas-content .off-canvas.position-left.is-transition-overlap.is-open { + -ms-transform: translate(0, 0); + transform: translate(0, 0); } + .off-canvas-content.is-open-left.has-transition-push { + -ms-transform: translateX(250px); + transform: translateX(250px); } + .position-left.is-transition-push { + box-shadow: inset -13px 0 20px -13px rgba(10, 10, 10, 0.25); } + +.position-right { + top: 0; + right: 0; + height: 100%; + overflow-y: auto; + width: 250px; + -ms-transform: translateX(250px); + transform: translateX(250px); } + .off-canvas-content .off-canvas.position-right { + -ms-transform: translateX(250px); + transform: translateX(250px); } + .off-canvas-content .off-canvas.position-right.is-transition-overlap.is-open { + -ms-transform: translate(0, 0); + transform: translate(0, 0); } + .off-canvas-content.is-open-right.has-transition-push { + -ms-transform: translateX(-250px); + transform: translateX(-250px); } + .position-right.is-transition-push { + box-shadow: inset 13px 0 20px -13px rgba(10, 10, 10, 0.25); } + +.position-top { + top: 0; + left: 0; + width: 100%; + overflow-x: auto; + height: 250px; + -ms-transform: translateY(-250px); + transform: translateY(-250px); } + .off-canvas-content .off-canvas.position-top { + -ms-transform: translateY(-250px); + transform: translateY(-250px); } + .off-canvas-content .off-canvas.position-top.is-transition-overlap.is-open { + -ms-transform: translate(0, 0); + transform: translate(0, 0); } + .off-canvas-content.is-open-top.has-transition-push { + -ms-transform: translateY(250px); + transform: translateY(250px); } + .position-top.is-transition-push { + box-shadow: inset 0 -13px 20px -13px rgba(10, 10, 10, 0.25); } + +.position-bottom { + bottom: 0; + left: 0; + width: 100%; + overflow-x: auto; + height: 250px; + -ms-transform: translateY(250px); + transform: translateY(250px); } + .off-canvas-content .off-canvas.position-bottom { + -ms-transform: translateY(250px); + transform: translateY(250px); } + .off-canvas-content .off-canvas.position-bottom.is-transition-overlap.is-open { + -ms-transform: translate(0, 0); + transform: translate(0, 0); } + .off-canvas-content.is-open-bottom.has-transition-push { + -ms-transform: translateY(-250px); + transform: translateY(-250px); } + .position-bottom.is-transition-push { + box-shadow: inset 0 13px 20px -13px rgba(10, 10, 10, 0.25); } + +.off-canvas-content { + -ms-transform: none; + transform: none; + transition: transform 0.5s ease; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; } + .off-canvas-content.has-transition-push { + -ms-transform: translate(0, 0); + transform: translate(0, 0); } + .off-canvas-content .off-canvas.is-open { + -ms-transform: translate(0, 0); + transform: translate(0, 0); } + +@media print, screen and (min-width: 40em) { + .position-left.reveal-for-medium { + -ms-transform: none; + transform: none; + z-index: 12; + transition: none; + visibility: visible; } + .position-left.reveal-for-medium .close-button { + display: none; } + .off-canvas-content .position-left.reveal-for-medium { + -ms-transform: none; + transform: none; } + .off-canvas-content.has-reveal-left { + margin-left: 250px; } + .position-left.reveal-for-medium ~ .off-canvas-content { + margin-left: 250px; } + .position-right.reveal-for-medium { + -ms-transform: none; + transform: none; + z-index: 12; + transition: none; + visibility: visible; } + .position-right.reveal-for-medium .close-button { + display: none; } + .off-canvas-content .position-right.reveal-for-medium { + -ms-transform: none; + transform: none; } + .off-canvas-content.has-reveal-right { + margin-right: 250px; } + .position-right.reveal-for-medium ~ .off-canvas-content { + margin-right: 250px; } + .position-top.reveal-for-medium { + -ms-transform: none; + transform: none; + z-index: 12; + transition: none; + visibility: visible; } + .position-top.reveal-for-medium .close-button { + display: none; } + .off-canvas-content .position-top.reveal-for-medium { + -ms-transform: none; + transform: none; } + .off-canvas-content.has-reveal-top { + margin-top: 250px; } + .position-top.reveal-for-medium ~ .off-canvas-content { + margin-top: 250px; } + .position-bottom.reveal-for-medium { + -ms-transform: none; + transform: none; + z-index: 12; + transition: none; + visibility: visible; } + .position-bottom.reveal-for-medium .close-button { + display: none; } + .off-canvas-content .position-bottom.reveal-for-medium { + -ms-transform: none; + transform: none; } + .off-canvas-content.has-reveal-bottom { + margin-bottom: 250px; } + .position-bottom.reveal-for-medium ~ .off-canvas-content { + margin-bottom: 250px; } } + +@media print, screen and (min-width: 64em) { + .position-left.reveal-for-large { + -ms-transform: none; + transform: none; + z-index: 12; + transition: none; + visibility: visible; } + .position-left.reveal-for-large .close-button { + display: none; } + .off-canvas-content .position-left.reveal-for-large { + -ms-transform: none; + transform: none; } + .off-canvas-content.has-reveal-left { + margin-left: 250px; } + .position-left.reveal-for-large ~ .off-canvas-content { + margin-left: 250px; } + .position-right.reveal-for-large { + -ms-transform: none; + transform: none; + z-index: 12; + transition: none; + visibility: visible; } + .position-right.reveal-for-large .close-button { + display: none; } + .off-canvas-content .position-right.reveal-for-large { + -ms-transform: none; + transform: none; } + .off-canvas-content.has-reveal-right { + margin-right: 250px; } + .position-right.reveal-for-large ~ .off-canvas-content { + margin-right: 250px; } + .position-top.reveal-for-large { + -ms-transform: none; + transform: none; + z-index: 12; + transition: none; + visibility: visible; } + .position-top.reveal-for-large .close-button { + display: none; } + .off-canvas-content .position-top.reveal-for-large { + -ms-transform: none; + transform: none; } + .off-canvas-content.has-reveal-top { + margin-top: 250px; } + .position-top.reveal-for-large ~ .off-canvas-content { + margin-top: 250px; } + .position-bottom.reveal-for-large { + -ms-transform: none; + transform: none; + z-index: 12; + transition: none; + visibility: visible; } + .position-bottom.reveal-for-large .close-button { + display: none; } + .off-canvas-content .position-bottom.reveal-for-large { + -ms-transform: none; + transform: none; } + .off-canvas-content.has-reveal-bottom { + margin-bottom: 250px; } + .position-bottom.reveal-for-large ~ .off-canvas-content { + margin-bottom: 250px; } } + +@media print, screen and (min-width: 40em) { + .off-canvas.in-canvas-for-medium { + visibility: visible; + height: auto; + position: static; + background: inherit; + width: inherit; + overflow: inherit; + transition: inherit; } + .off-canvas.in-canvas-for-medium.position-left, .off-canvas.in-canvas-for-medium.position-right, .off-canvas.in-canvas-for-medium.position-top, .off-canvas.in-canvas-for-medium.position-bottom { + box-shadow: none; + -ms-transform: none; + transform: none; } + .off-canvas.in-canvas-for-medium .close-button { + display: none; } } + +@media print, screen and (min-width: 64em) { + .off-canvas.in-canvas-for-large { + visibility: visible; + height: auto; + position: static; + background: inherit; + width: inherit; + overflow: inherit; + transition: inherit; } + .off-canvas.in-canvas-for-large.position-left, .off-canvas.in-canvas-for-large.position-right, .off-canvas.in-canvas-for-large.position-top, .off-canvas.in-canvas-for-large.position-bottom { + box-shadow: none; + -ms-transform: none; + transform: none; } + .off-canvas.in-canvas-for-large .close-button { + display: none; } } + +.orbit { + position: relative; } + +.orbit-container { + position: relative; + height: 0; + margin: 0; + list-style: none; + overflow: hidden; } + +.orbit-slide { + width: 100%; } + .orbit-slide.no-motionui.is-active { + top: 0; + left: 0; } + +.orbit-figure { + margin: 0; } + +.orbit-image { + width: 100%; + max-width: 100%; + margin: 0; } + +.orbit-caption { + position: absolute; + bottom: 0; + width: 100%; + margin-bottom: 0; + padding: 1rem; + background-color: rgba(10, 10, 10, 0.5); + color: #fefefe; } + +.orbit-previous, .orbit-next { + position: absolute; + top: 50%; + -ms-transform: translateY(-50%); + transform: translateY(-50%); + z-index: 10; + padding: 1rem; + color: #fefefe; } + [data-whatinput='mouse'] .orbit-previous, [data-whatinput='mouse'] .orbit-next { + outline: 0; } + .orbit-previous:hover, .orbit-next:hover, .orbit-previous:active, .orbit-next:active, .orbit-previous:focus, .orbit-next:focus { + background-color: rgba(10, 10, 10, 0.5); } + +.orbit-previous { + left: 0; } + +.orbit-next { + left: auto; + right: 0; } + +.orbit-bullets { + position: relative; + margin-top: 0.8rem; + margin-bottom: 0.8rem; + text-align: center; } + [data-whatinput='mouse'] .orbit-bullets { + outline: 0; } + .orbit-bullets button { + width: 1.2rem; + height: 1.2rem; + margin: 0.1rem; + border-radius: 50%; + background-color: #cacaca; } + .orbit-bullets button:hover { + background-color: #8a8a8a; } + .orbit-bullets button.is-active { + background-color: #8a8a8a; } + +.pagination { + margin-left: 0; + margin-bottom: 1rem; } + .pagination::before, .pagination::after { + display: table; + content: ' '; + -ms-flex-preferred-size: 0; + flex-basis: 0; + -ms-flex-order: 1; + order: 1; } + .pagination::after { + clear: both; } + .pagination li { + margin-right: 0.0625rem; + border-radius: 0; + font-size: 0.875rem; + display: none; } + .pagination li:last-child, .pagination li:first-child { + display: inline-block; } + @media print, screen and (min-width: 40em) { + .pagination li { + display: inline-block; } } + .pagination a, + .pagination button { + display: block; + padding: 0.1875rem 0.625rem; + border-radius: 0; + color: #0a0a0a; } + .pagination a:hover, + .pagination button:hover { + background: #e6e6e6; } + .pagination .current { + padding: 0.1875rem 0.625rem; + background: #1779ba; + color: #fefefe; + cursor: default; } + .pagination .disabled { + padding: 0.1875rem 0.625rem; + color: #cacaca; + cursor: not-allowed; } + .pagination .disabled:hover { + background: transparent; } + .pagination .ellipsis::after { + padding: 0.1875rem 0.625rem; + content: '\2026'; + color: #0a0a0a; } + +.pagination-previous a::before, +.pagination-previous.disabled::before { + display: inline-block; + margin-right: 0.5rem; + content: '\00ab'; } + +.pagination-next a::after, +.pagination-next.disabled::after { + display: inline-block; + margin-left: 0.5rem; + content: '\00bb'; } + +.progress { + height: 1rem; + margin-bottom: 1rem; + border-radius: 0; + background-color: #cacaca; } + .progress.primary .progress-meter { + background-color: #1779ba; } + .progress.secondary .progress-meter { + background-color: #767676; } + .progress.success .progress-meter { + background-color: #3adb76; } + .progress.warning .progress-meter { + background-color: #ffae00; } + .progress.alert .progress-meter { + background-color: #cc4b37; } + +.progress-meter { + position: relative; + display: block; + width: 0%; + height: 100%; + background-color: #1779ba; } + +.progress-meter-text { + position: absolute; + top: 50%; + left: 50%; + -ms-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + position: absolute; + margin: 0; + font-size: 0.75rem; + font-weight: bold; + color: #fefefe; + white-space: nowrap; } + +body.is-reveal-open { + overflow: hidden; } + +html.is-reveal-open, +html.is-reveal-open body { + min-height: 100%; + overflow: hidden; + position: fixed; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; } + +.reveal-overlay { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1005; + display: none; + background-color: rgba(10, 10, 10, 0.45); + overflow-y: scroll; } + +.reveal { + z-index: 1006; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + display: none; + padding: 1rem; + border: 1px solid #cacaca; + border-radius: 0; + background-color: #fefefe; + position: relative; + top: 100px; + margin-right: auto; + margin-left: auto; + overflow-y: auto; } + [data-whatinput='mouse'] .reveal { + outline: 0; } + @media print, screen and (min-width: 40em) { + .reveal { + min-height: 0; } } + .reveal .column { + min-width: 0; } + .reveal > :last-child { + margin-bottom: 0; } + @media print, screen and (min-width: 40em) { + .reveal { + width: 600px; + max-width: 75rem; } } + .reveal.collapse { + padding: 0; } + @media print, screen and (min-width: 40em) { + .reveal.tiny { + width: 30%; + max-width: 75rem; } } + @media print, screen and (min-width: 40em) { + .reveal.small { + width: 50%; + max-width: 75rem; } } + @media print, screen and (min-width: 40em) { + .reveal.large { + width: 90%; + max-width: 75rem; } } + .reveal.full { + top: 0; + left: 0; + width: 100%; + max-width: none; + height: 100%; + height: 100vh; + min-height: 100vh; + margin-left: 0; + border: 0; + border-radius: 0; } + @media screen and (max-width: 39.9375em) { + .reveal { + top: 0; + left: 0; + width: 100%; + max-width: none; + height: 100%; + height: 100vh; + min-height: 100vh; + margin-left: 0; + border: 0; + border-radius: 0; } } + .reveal.without-overlay { + position: fixed; } + +.slider { + position: relative; + height: 0.5rem; + margin-top: 1.25rem; + margin-bottom: 2.25rem; + background-color: #e6e6e6; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -ms-touch-action: none; + touch-action: none; } + +.slider-fill { + position: absolute; + top: 0; + left: 0; + display: inline-block; + max-width: 100%; + height: 0.5rem; + background-color: #cacaca; + transition: all 0.2s ease-in-out; } + .slider-fill.is-dragging { + transition: all 0s linear; } + +.slider-handle { + position: absolute; + top: 50%; + -ms-transform: translateY(-50%); + transform: translateY(-50%); + left: 0; + z-index: 1; + display: inline-block; + width: 1.4rem; + height: 1.4rem; + border-radius: 0; + background-color: #1779ba; + transition: all 0.2s ease-in-out; + -ms-touch-action: manipulation; + touch-action: manipulation; } + [data-whatinput='mouse'] .slider-handle { + outline: 0; } + .slider-handle:hover { + background-color: #14679e; } + .slider-handle.is-dragging { + transition: all 0s linear; } + +.slider.disabled, +.slider[disabled] { + opacity: 0.25; + cursor: not-allowed; } + +.slider.vertical { + display: inline-block; + width: 0.5rem; + height: 12.5rem; + margin: 0 1.25rem; + -ms-transform: scale(1, -1); + transform: scale(1, -1); } + .slider.vertical .slider-fill { + top: 0; + width: 0.5rem; + max-height: 100%; } + .slider.vertical .slider-handle { + position: absolute; + top: 0; + left: 50%; + width: 1.4rem; + height: 1.4rem; + -ms-transform: translateX(-50%); + transform: translateX(-50%); } + +.sticky-container { + position: relative; } + +.sticky { + position: relative; + z-index: 0; + transform: translate3d(0, 0, 0); } + +.sticky.is-stuck { + position: fixed; + z-index: 5; + width: 100%; } + .sticky.is-stuck.is-at-top { + top: 0; } + .sticky.is-stuck.is-at-bottom { + bottom: 0; } + +.sticky.is-anchored { + position: relative; + right: auto; + left: auto; } + .sticky.is-anchored.is-at-bottom { + bottom: 0; } + +.switch { + height: 2rem; + position: relative; + margin-bottom: 1rem; + outline: 0; + font-size: 0.875rem; + font-weight: bold; + color: #fefefe; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; } + +.switch-input { + position: absolute; + margin-bottom: 0; + opacity: 0; } + +.switch-paddle { + position: relative; + display: block; + width: 4rem; + height: 2rem; + border-radius: 0; + background: #cacaca; + transition: all 0.25s ease-out; + font-weight: inherit; + color: inherit; + cursor: pointer; } + input + .switch-paddle { + margin: 0; } + .switch-paddle::after { + position: absolute; + top: 0.25rem; + left: 0.25rem; + display: block; + width: 1.5rem; + height: 1.5rem; + transform: translate3d(0, 0, 0); + border-radius: 0; + background: #fefefe; + transition: all 0.25s ease-out; + content: ''; } + input:checked ~ .switch-paddle { + background: #1779ba; } + input:checked ~ .switch-paddle::after { + left: 2.25rem; } + [data-whatinput='mouse'] input:focus ~ .switch-paddle { + outline: 0; } + +.switch-active, .switch-inactive { + position: absolute; + top: 50%; + -ms-transform: translateY(-50%); + transform: translateY(-50%); } + +.switch-active { + left: 8%; + display: none; } + input:checked + label > .switch-active { + display: block; } + +.switch-inactive { + right: 15%; } + input:checked + label > .switch-inactive { + display: none; } + +.switch.tiny { + height: 1.5rem; } + .switch.tiny .switch-paddle { + width: 3rem; + height: 1.5rem; + font-size: 0.625rem; } + .switch.tiny .switch-paddle::after { + top: 0.25rem; + left: 0.25rem; + width: 1rem; + height: 1rem; } + .switch.tiny input:checked ~ .switch-paddle::after { + left: 1.75rem; } + +.switch.small { + height: 1.75rem; } + .switch.small .switch-paddle { + width: 3.5rem; + height: 1.75rem; + font-size: 0.75rem; } + .switch.small .switch-paddle::after { + top: 0.25rem; + left: 0.25rem; + width: 1.25rem; + height: 1.25rem; } + .switch.small input:checked ~ .switch-paddle::after { + left: 2rem; } + +.switch.large { + height: 2.5rem; } + .switch.large .switch-paddle { + width: 5rem; + height: 2.5rem; + font-size: 1rem; } + .switch.large .switch-paddle::after { + top: 0.25rem; + left: 0.25rem; + width: 2rem; + height: 2rem; } + .switch.large input:checked ~ .switch-paddle::after { + left: 2.75rem; } + +table { + border-collapse: collapse; + width: 100%; + margin-bottom: 1rem; + border-radius: 0; } + table thead, + table tbody, + table tfoot { + border: 1px solid #f1f1f1; + background-color: #fefefe; } + table caption { + padding: 0.5rem 0.625rem 0.625rem; + font-weight: bold; } + table thead { + background: #f8f8f8; + color: #0a0a0a; } + table tfoot { + background: #f1f1f1; + color: #0a0a0a; } + table thead tr, + table tfoot tr { + background: transparent; } + table thead th, + table thead td, + table tfoot th, + table tfoot td { + padding: 0.5rem 0.625rem 0.625rem; + font-weight: bold; + text-align: left; } + table tbody th, + table tbody td { + padding: 0.5rem 0.625rem 0.625rem; } + table tbody tr:nth-child(even) { + border-bottom: 0; + background-color: #f1f1f1; } + table.unstriped tbody { + background-color: #fefefe; } + table.unstriped tbody tr { + border-bottom: 0; + border-bottom: 1px solid #f1f1f1; + background-color: #fefefe; } + +@media screen and (max-width: 63.9375em) { + table.stack thead { + display: none; } + table.stack tfoot { + display: none; } + table.stack tr, + table.stack th, + table.stack td { + display: block; } + table.stack td { + border-top: 0; } } + +table.scroll { + display: block; + width: 100%; + overflow-x: auto; } + +table.hover thead tr:hover { + background-color: #f3f3f3; } + +table.hover tfoot tr:hover { + background-color: #ececec; } + +table.hover tbody tr:hover { + background-color: #f9f9f9; } + +table.hover:not(.unstriped) tr:nth-of-type(even):hover { + background-color: #ececec; } + +.table-scroll { + overflow-x: auto; } + .table-scroll table { + width: auto; } + +.tabs { + margin: 0; + border: 1px solid #e6e6e6; + background: #fefefe; + list-style-type: none; } + .tabs::before, .tabs::after { + display: table; + content: ' '; + -ms-flex-preferred-size: 0; + flex-basis: 0; + -ms-flex-order: 1; + order: 1; } + .tabs::after { + clear: both; } + +.tabs.vertical > li { + display: block; + float: none; + width: auto; } + +.tabs.simple > li > a { + padding: 0; } + .tabs.simple > li > a:hover { + background: transparent; } + +.tabs.primary { + background: #1779ba; } + .tabs.primary > li > a { + color: #fefefe; } + .tabs.primary > li > a:hover, .tabs.primary > li > a:focus { + background: #1673b1; } + +.tabs-title { + float: left; } + .tabs-title > a { + display: block; + padding: 1.25rem 1.5rem; + font-size: 0.75rem; + line-height: 1; + color: #1779ba; } + .tabs-title > a:hover { + background: #fefefe; + color: #1468a0; } + .tabs-title > a:focus, .tabs-title > a[aria-selected='true'] { + background: #e6e6e6; + color: #1779ba; } + +.tabs-content { + border: 1px solid #e6e6e6; + border-top: 0; + background: #fefefe; + color: #0a0a0a; + transition: all 0.5s ease; } + +.tabs-content.vertical { + border: 1px solid #e6e6e6; + border-left: 0; } + +.tabs-panel { + display: none; + padding: 1rem; } + .tabs-panel.is-active { + display: block; } + +.thumbnail { + display: inline-block; + max-width: 100%; + margin-bottom: 1rem; + border: solid 4px #fefefe; + border-radius: 0; + box-shadow: 0 0 0 1px rgba(10, 10, 10, 0.2); + line-height: 0; } + +a.thumbnail { + transition: box-shadow 200ms ease-out; } + a.thumbnail:hover, a.thumbnail:focus { + box-shadow: 0 0 6px 1px rgba(23, 121, 186, 0.5); } + a.thumbnail image { + box-shadow: none; } + +.title-bar { + padding: 0.5rem; + background: #0a0a0a; + color: #fefefe; + display: -ms-flexbox; + display: flex; + -ms-flex-pack: start; + justify-content: flex-start; + -ms-flex-align: center; + align-items: center; } + .title-bar .menu-icon { + margin-left: 0.25rem; + margin-right: 0.25rem; } + +.title-bar-left, +.title-bar-right { + -ms-flex: 1 1 0px; + flex: 1 1 0px; } + +.title-bar-right { + text-align: right; } + +.title-bar-title { + display: inline-block; + vertical-align: middle; + font-weight: bold; } + +.has-tip { + position: relative; + display: inline-block; + border-bottom: dotted 1px #8a8a8a; + font-weight: bold; + cursor: help; } + +.tooltip { + position: absolute; + top: calc(100% + 0.6495rem); + z-index: 1200; + max-width: 10rem; + padding: 0.75rem; + border-radius: 0; + background-color: #0a0a0a; + font-size: 80%; + color: #fefefe; } + .tooltip::before { + position: absolute; } + .tooltip.bottom::before { + display: block; + width: 0; + height: 0; + border: inset 0.75rem; + content: ''; + border-top-width: 0; + border-bottom-style: solid; + border-color: transparent transparent #0a0a0a; + bottom: 100%; } + .tooltip.bottom.align-center::before { + left: 50%; + -ms-transform: translateX(-50%); + transform: translateX(-50%); } + .tooltip.top::before { + display: block; + width: 0; + height: 0; + border: inset 0.75rem; + content: ''; + border-bottom-width: 0; + border-top-style: solid; + border-color: #0a0a0a transparent transparent; + top: 100%; + bottom: auto; } + .tooltip.top.align-center::before { + left: 50%; + -ms-transform: translateX(-50%); + transform: translateX(-50%); } + .tooltip.left::before { + display: block; + width: 0; + height: 0; + border: inset 0.75rem; + content: ''; + border-right-width: 0; + border-left-style: solid; + border-color: transparent transparent transparent #0a0a0a; + left: 100%; } + .tooltip.left.align-center::before { + bottom: auto; + top: 50%; + -ms-transform: translateY(-50%); + transform: translateY(-50%); } + .tooltip.right::before { + display: block; + width: 0; + height: 0; + border: inset 0.75rem; + content: ''; + border-left-width: 0; + border-right-style: solid; + border-color: transparent #0a0a0a transparent transparent; + right: 100%; + left: auto; } + .tooltip.right.align-center::before { + bottom: auto; + top: 50%; + -ms-transform: translateY(-50%); + transform: translateY(-50%); } + .tooltip.align-top::before { + bottom: auto; + top: 10%; } + .tooltip.align-bottom::before { + bottom: 10%; + top: auto; } + .tooltip.align-left::before { + left: 10%; + right: auto; } + .tooltip.align-right::before { + left: auto; + right: 10%; } + +.top-bar { + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -ms-flex-pack: justify; + justify-content: space-between; + -ms-flex-align: center; + align-items: center; + padding: 0.5rem; + -ms-flex-wrap: wrap; + flex-wrap: wrap; } + .top-bar, + .top-bar ul { + background-color: #e6e6e6; } + .top-bar input { + max-width: 200px; + margin-right: 1rem; } + .top-bar .input-group-field { + width: 100%; + margin-right: 0; } + .top-bar input.button { + width: auto; } + .top-bar .top-bar-left, + .top-bar .top-bar-right { + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; } + @media print, screen and (min-width: 40em) { + .top-bar { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; } + .top-bar .top-bar-left { + -ms-flex: 1 1 auto; + flex: 1 1 auto; + margin-right: auto; } + .top-bar .top-bar-right { + -ms-flex: 0 1 auto; + flex: 0 1 auto; + margin-left: auto; } } + @media screen and (max-width: 63.9375em) { + .top-bar.stacked-for-medium { + -ms-flex-wrap: wrap; + flex-wrap: wrap; } + .top-bar.stacked-for-medium .top-bar-left, + .top-bar.stacked-for-medium .top-bar-right { + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; } } + @media screen and (max-width: 74.9375em) { + .top-bar.stacked-for-large { + -ms-flex-wrap: wrap; + flex-wrap: wrap; } + .top-bar.stacked-for-large .top-bar-left, + .top-bar.stacked-for-large .top-bar-right { + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; } } + +.top-bar-title { + -ms-flex: 0 0 auto; + flex: 0 0 auto; + margin: 0.5rem 1rem 0.5rem 0; } + +.top-bar-left, +.top-bar-right { + -ms-flex: 0 0 auto; + flex: 0 0 auto; } + +.hide { + display: none !important; } + +.invisible { + visibility: hidden; } + +@media screen and (max-width: 39.9375em) { + .hide-for-small-only { + display: none !important; } } + +@media screen and (max-width: 0em), screen and (min-width: 40em) { + .show-for-small-only { + display: none !important; } } + +@media print, screen and (min-width: 40em) { + .hide-for-medium { + display: none !important; } } + +@media screen and (max-width: 39.9375em) { + .show-for-medium { + display: none !important; } } + +@media screen and (min-width: 40em) and (max-width: 63.9375em) { + .hide-for-medium-only { + display: none !important; } } + +@media screen and (max-width: 39.9375em), screen and (min-width: 64em) { + .show-for-medium-only { + display: none !important; } } + +@media print, screen and (min-width: 64em) { + .hide-for-large { + display: none !important; } } + +@media screen and (max-width: 63.9375em) { + .show-for-large { + display: none !important; } } + +@media screen and (min-width: 64em) and (max-width: 74.9375em) { + .hide-for-large-only { + display: none !important; } } + +@media screen and (max-width: 63.9375em), screen and (min-width: 75em) { + .show-for-large-only { + display: none !important; } } + +.show-for-sr, +.show-on-focus { + position: absolute !important; + width: 1px; + height: 1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + -webkit-clip-path: inset(50%); + clip-path: inset(50%); + border: 0; } + +.show-on-focus:active, .show-on-focus:focus { + position: static !important; + width: auto; + height: auto; + overflow: visible; + clip: auto; + white-space: normal; + -webkit-clip-path: none; + clip-path: none; } + +.show-for-landscape, +.hide-for-portrait { + display: block !important; } + @media screen and (orientation: landscape) { + .show-for-landscape, + .hide-for-portrait { + display: block !important; } } + @media screen and (orientation: portrait) { + .show-for-landscape, + .hide-for-portrait { + display: none !important; } } + +.hide-for-landscape, +.show-for-portrait { + display: none !important; } + @media screen and (orientation: landscape) { + .hide-for-landscape, + .show-for-portrait { + display: none !important; } } + @media screen and (orientation: portrait) { + .hide-for-landscape, + .show-for-portrait { + display: block !important; } } + +.float-left { + float: left !important; } + +.float-right { + float: right !important; } + +.float-center { + display: block; + margin-right: auto; + margin-left: auto; } + +.clearfix::before, .clearfix::after { + display: table; + content: ' '; + -ms-flex-preferred-size: 0; + flex-basis: 0; + -ms-flex-order: 1; + order: 1; } + +.clearfix::after { + clear: both; } + +.slide-in-down.mui-enter { + transition-duration: 500ms; + transition-timing-function: linear; + -ms-transform: translateY(-100%); + transform: translateY(-100%); + transition-property: transform, opacity; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; } + +.slide-in-down.mui-enter.mui-enter-active { + -ms-transform: translateY(0); + transform: translateY(0); } + +.slide-in-left.mui-enter { + transition-duration: 500ms; + transition-timing-function: linear; + -ms-transform: translateX(-100%); + transform: translateX(-100%); + transition-property: transform, opacity; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; } + +.slide-in-left.mui-enter.mui-enter-active { + -ms-transform: translateX(0); + transform: translateX(0); } + +.slide-in-up.mui-enter { + transition-duration: 500ms; + transition-timing-function: linear; + -ms-transform: translateY(100%); + transform: translateY(100%); + transition-property: transform, opacity; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; } + +.slide-in-up.mui-enter.mui-enter-active { + -ms-transform: translateY(0); + transform: translateY(0); } + +.slide-in-right.mui-enter { + transition-duration: 500ms; + transition-timing-function: linear; + -ms-transform: translateX(100%); + transform: translateX(100%); + transition-property: transform, opacity; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; } + +.slide-in-right.mui-enter.mui-enter-active { + -ms-transform: translateX(0); + transform: translateX(0); } + +.slide-out-down.mui-leave { + transition-duration: 500ms; + transition-timing-function: linear; + -ms-transform: translateY(0); + transform: translateY(0); + transition-property: transform, opacity; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; } + +.slide-out-down.mui-leave.mui-leave-active { + -ms-transform: translateY(100%); + transform: translateY(100%); } + +.slide-out-right.mui-leave { + transition-duration: 500ms; + transition-timing-function: linear; + -ms-transform: translateX(0); + transform: translateX(0); + transition-property: transform, opacity; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; } + +.slide-out-right.mui-leave.mui-leave-active { + -ms-transform: translateX(100%); + transform: translateX(100%); } + +.slide-out-up.mui-leave { + transition-duration: 500ms; + transition-timing-function: linear; + -ms-transform: translateY(0); + transform: translateY(0); + transition-property: transform, opacity; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; } + +.slide-out-up.mui-leave.mui-leave-active { + -ms-transform: translateY(-100%); + transform: translateY(-100%); } + +.slide-out-left.mui-leave { + transition-duration: 500ms; + transition-timing-function: linear; + -ms-transform: translateX(0); + transform: translateX(0); + transition-property: transform, opacity; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; } + +.slide-out-left.mui-leave.mui-leave-active { + -ms-transform: translateX(-100%); + transform: translateX(-100%); } + +.fade-in.mui-enter { + transition-duration: 500ms; + transition-timing-function: linear; + opacity: 0; + transition-property: opacity; } + +.fade-in.mui-enter.mui-enter-active { + opacity: 1; } + +.fade-out.mui-leave { + transition-duration: 500ms; + transition-timing-function: linear; + opacity: 1; + transition-property: opacity; } + +.fade-out.mui-leave.mui-leave-active { + opacity: 0; } + +.hinge-in-from-top.mui-enter { + transition-duration: 500ms; + transition-timing-function: linear; + transform: perspective(2000px) rotateX(-90deg); + -ms-transform-origin: top; + transform-origin: top; + transition-property: transform, opacity; + opacity: 0; } + +.hinge-in-from-top.mui-enter.mui-enter-active { + transform: perspective(2000px) rotate(0deg); + opacity: 1; } + +.hinge-in-from-right.mui-enter { + transition-duration: 500ms; + transition-timing-function: linear; + transform: perspective(2000px) rotateY(-90deg); + -ms-transform-origin: right; + transform-origin: right; + transition-property: transform, opacity; + opacity: 0; } + +.hinge-in-from-right.mui-enter.mui-enter-active { + transform: perspective(2000px) rotate(0deg); + opacity: 1; } + +.hinge-in-from-bottom.mui-enter { + transition-duration: 500ms; + transition-timing-function: linear; + transform: perspective(2000px) rotateX(90deg); + -ms-transform-origin: bottom; + transform-origin: bottom; + transition-property: transform, opacity; + opacity: 0; } + +.hinge-in-from-bottom.mui-enter.mui-enter-active { + transform: perspective(2000px) rotate(0deg); + opacity: 1; } + +.hinge-in-from-left.mui-enter { + transition-duration: 500ms; + transition-timing-function: linear; + transform: perspective(2000px) rotateY(90deg); + -ms-transform-origin: left; + transform-origin: left; + transition-property: transform, opacity; + opacity: 0; } + +.hinge-in-from-left.mui-enter.mui-enter-active { + transform: perspective(2000px) rotate(0deg); + opacity: 1; } + +.hinge-in-from-middle-x.mui-enter { + transition-duration: 500ms; + transition-timing-function: linear; + transform: perspective(2000px) rotateX(-90deg); + -ms-transform-origin: center; + transform-origin: center; + transition-property: transform, opacity; + opacity: 0; } + +.hinge-in-from-middle-x.mui-enter.mui-enter-active { + transform: perspective(2000px) rotate(0deg); + opacity: 1; } + +.hinge-in-from-middle-y.mui-enter { + transition-duration: 500ms; + transition-timing-function: linear; + transform: perspective(2000px) rotateY(-90deg); + -ms-transform-origin: center; + transform-origin: center; + transition-property: transform, opacity; + opacity: 0; } + +.hinge-in-from-middle-y.mui-enter.mui-enter-active { + transform: perspective(2000px) rotate(0deg); + opacity: 1; } + +.hinge-out-from-top.mui-leave { + transition-duration: 500ms; + transition-timing-function: linear; + transform: perspective(2000px) rotate(0deg); + -ms-transform-origin: top; + transform-origin: top; + transition-property: transform, opacity; + opacity: 1; } + +.hinge-out-from-top.mui-leave.mui-leave-active { + transform: perspective(2000px) rotateX(-90deg); + opacity: 0; } + +.hinge-out-from-right.mui-leave { + transition-duration: 500ms; + transition-timing-function: linear; + transform: perspective(2000px) rotate(0deg); + -ms-transform-origin: right; + transform-origin: right; + transition-property: transform, opacity; + opacity: 1; } + +.hinge-out-from-right.mui-leave.mui-leave-active { + transform: perspective(2000px) rotateY(-90deg); + opacity: 0; } + +.hinge-out-from-bottom.mui-leave { + transition-duration: 500ms; + transition-timing-function: linear; + transform: perspective(2000px) rotate(0deg); + -ms-transform-origin: bottom; + transform-origin: bottom; + transition-property: transform, opacity; + opacity: 1; } + +.hinge-out-from-bottom.mui-leave.mui-leave-active { + transform: perspective(2000px) rotateX(90deg); + opacity: 0; } + +.hinge-out-from-left.mui-leave { + transition-duration: 500ms; + transition-timing-function: linear; + transform: perspective(2000px) rotate(0deg); + -ms-transform-origin: left; + transform-origin: left; + transition-property: transform, opacity; + opacity: 1; } + +.hinge-out-from-left.mui-leave.mui-leave-active { + transform: perspective(2000px) rotateY(90deg); + opacity: 0; } + +.hinge-out-from-middle-x.mui-leave { + transition-duration: 500ms; + transition-timing-function: linear; + transform: perspective(2000px) rotate(0deg); + -ms-transform-origin: center; + transform-origin: center; + transition-property: transform, opacity; + opacity: 1; } + +.hinge-out-from-middle-x.mui-leave.mui-leave-active { + transform: perspective(2000px) rotateX(-90deg); + opacity: 0; } + +.hinge-out-from-middle-y.mui-leave { + transition-duration: 500ms; + transition-timing-function: linear; + transform: perspective(2000px) rotate(0deg); + -ms-transform-origin: center; + transform-origin: center; + transition-property: transform, opacity; + opacity: 1; } + +.hinge-out-from-middle-y.mui-leave.mui-leave-active { + transform: perspective(2000px) rotateY(-90deg); + opacity: 0; } + +.scale-in-up.mui-enter { + transition-duration: 500ms; + transition-timing-function: linear; + -ms-transform: scale(0.5); + transform: scale(0.5); + transition-property: transform, opacity; + opacity: 0; } + +.scale-in-up.mui-enter.mui-enter-active { + -ms-transform: scale(1); + transform: scale(1); + opacity: 1; } + +.scale-in-down.mui-enter { + transition-duration: 500ms; + transition-timing-function: linear; + -ms-transform: scale(1.5); + transform: scale(1.5); + transition-property: transform, opacity; + opacity: 0; } + +.scale-in-down.mui-enter.mui-enter-active { + -ms-transform: scale(1); + transform: scale(1); + opacity: 1; } + +.scale-out-up.mui-leave { + transition-duration: 500ms; + transition-timing-function: linear; + -ms-transform: scale(1); + transform: scale(1); + transition-property: transform, opacity; + opacity: 1; } + +.scale-out-up.mui-leave.mui-leave-active { + -ms-transform: scale(1.5); + transform: scale(1.5); + opacity: 0; } + +.scale-out-down.mui-leave { + transition-duration: 500ms; + transition-timing-function: linear; + -ms-transform: scale(1); + transform: scale(1); + transition-property: transform, opacity; + opacity: 1; } + +.scale-out-down.mui-leave.mui-leave-active { + -ms-transform: scale(0.5); + transform: scale(0.5); + opacity: 0; } + +.spin-in.mui-enter { + transition-duration: 500ms; + transition-timing-function: linear; + -ms-transform: rotate(-0.75turn); + transform: rotate(-0.75turn); + transition-property: transform, opacity; + opacity: 0; } + +.spin-in.mui-enter.mui-enter-active { + -ms-transform: rotate(0); + transform: rotate(0); + opacity: 1; } + +.spin-out.mui-leave { + transition-duration: 500ms; + transition-timing-function: linear; + -ms-transform: rotate(0); + transform: rotate(0); + transition-property: transform, opacity; + opacity: 1; } + +.spin-out.mui-leave.mui-leave-active { + -ms-transform: rotate(0.75turn); + transform: rotate(0.75turn); + opacity: 0; } + +.spin-in-ccw.mui-enter { + transition-duration: 500ms; + transition-timing-function: linear; + -ms-transform: rotate(0.75turn); + transform: rotate(0.75turn); + transition-property: transform, opacity; + opacity: 0; } + +.spin-in-ccw.mui-enter.mui-enter-active { + -ms-transform: rotate(0); + transform: rotate(0); + opacity: 1; } + +.spin-out-ccw.mui-leave { + transition-duration: 500ms; + transition-timing-function: linear; + -ms-transform: rotate(0); + transform: rotate(0); + transition-property: transform, opacity; + opacity: 1; } + +.spin-out-ccw.mui-leave.mui-leave-active { + -ms-transform: rotate(-0.75turn); + transform: rotate(-0.75turn); + opacity: 0; } + +.slow { + transition-duration: 750ms !important; } + +.fast { + transition-duration: 250ms !important; } + +.linear { + transition-timing-function: linear !important; } + +.ease { + transition-timing-function: ease !important; } + +.ease-in { + transition-timing-function: ease-in !important; } + +.ease-out { + transition-timing-function: ease-out !important; } + +.ease-in-out { + transition-timing-function: ease-in-out !important; } + +.bounce-in { + transition-timing-function: cubic-bezier(0.485, 0.155, 0.24, 1.245) !important; } + +.bounce-out { + transition-timing-function: cubic-bezier(0.485, 0.155, 0.515, 0.845) !important; } + +.bounce-in-out { + transition-timing-function: cubic-bezier(0.76, -0.245, 0.24, 1.245) !important; } + +.short-delay { + transition-delay: 300ms !important; } + +.long-delay { + transition-delay: 700ms !important; } + +.shake { + animation-name: shake-7; } + +@keyframes shake-7 { + 0%, 10%, 20%, 30%, 40%, 50%, 60%, 70%, 80%, 90% { + transform: translateX(7%); } + 5%, 15%, 25%, 35%, 45%, 55%, 65%, 75%, 85%, 95% { + transform: translateX(-7%); } } + +.spin-cw { + animation-name: spin-cw-1turn; } + +@keyframes spin-cw-1turn { + 0% { + transform: rotate(-1turn); } + 100% { + transform: rotate(0); } } + +.spin-ccw { + animation-name: spin-cw-1turn; } + +@keyframes spin-cw-1turn { + 0% { + transform: rotate(0); } + 100% { + transform: rotate(1turn); } } + +.wiggle { + animation-name: wiggle-7deg; } + +@keyframes wiggle-7deg { + 40%, 50%, 60% { + transform: rotate(7deg); } + 35%, 45%, 55%, 65% { + transform: rotate(-7deg); } + 0%, 30%, 70%, 100% { + transform: rotate(0); } } + +.shake, +.spin-cw, +.spin-ccw, +.wiggle { + animation-duration: 500ms; } + +.infinite { + animation-iteration-count: infinite; } + +.slow { + animation-duration: 750ms !important; } + +.fast { + animation-duration: 250ms !important; } + +.linear { + animation-timing-function: linear !important; } + +.ease { + animation-timing-function: ease !important; } + +.ease-in { + animation-timing-function: ease-in !important; } + +.ease-out { + animation-timing-function: ease-out !important; } + +.ease-in-out { + animation-timing-function: ease-in-out !important; } + +.bounce-in { + animation-timing-function: cubic-bezier(0.485, 0.155, 0.24, 1.245) !important; } + +.bounce-out { + animation-timing-function: cubic-bezier(0.485, 0.155, 0.515, 0.845) !important; } + +.bounce-in-out { + animation-timing-function: cubic-bezier(0.76, -0.245, 0.24, 1.245) !important; } + +.short-delay { + animation-delay: 300ms !important; } + +.long-delay { + animation-delay: 700ms !important; } From a677ccd577b6e87c48afa6bc24011aeb6b601bf5 Mon Sep 17 00:00:00 2001 From: kee nam Date: Thu, 12 Oct 2017 11:41:43 -0700 Subject: [PATCH 22/35] Edited style and HTML tags; added users/show.html.erb file --- app/assets/stylesheets/application.css | 3 + app/assets/stylesheets/foundation.css | 4 +- app/views/home/index.html.erb | 110 +++++++++++++------------ app/views/layouts/application.html.erb | 35 +++++--- app/views/users/index.html.erb | 25 +++++- app/views/users/show.html.erb | 3 + app/views/works/_form.html.erb | 2 +- app/views/works/edit.html.erb | 4 +- app/views/works/index.html.erb | 14 ++-- app/views/works/new.html.erb | 4 +- app/views/works/show.html.erb | 16 ++-- 11 files changed, 130 insertions(+), 90 deletions(-) create mode 100644 app/views/users/show.html.erb diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css index d05ea0f511..220d3fc9a1 100644 --- a/app/assets/stylesheets/application.css +++ b/app/assets/stylesheets/application.css @@ -13,3 +13,6 @@ *= require_tree . *= require_self */ + +@import url('foundation.css'); +@import url('https://fonts.googleapis.com/css?family=Gudea:400,400i,700'); diff --git a/app/assets/stylesheets/foundation.css b/app/assets/stylesheets/foundation.css index ac6648c4d6..fa51653cca 100644 --- a/app/assets/stylesheets/foundation.css +++ b/app/assets/stylesheets/foundation.css @@ -444,7 +444,7 @@ body { margin: 0; padding: 0; background: #fefefe; - font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; + font-family: 'Gudea', sans-serif; font-weight: normal; line-height: 1.5; color: #0a0a0a; @@ -2225,7 +2225,7 @@ h3, .h3, h4, .h4, h5, .h5, h6, .h6 { - font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; + font-family: 'Gudea', sans-serif; font-style: normal; font-weight: normal; color: inherit; diff --git a/app/views/home/index.html.erb b/app/views/home/index.html.erb index e9ac645973..6878992c62 100644 --- a/app/views/home/index.html.erb +++ b/app/views/home/index.html.erb @@ -1,60 +1,62 @@ -
-

Media Spotlight: - <% w = @works.max_by { |work| work.votes.length } %> - <%= link_to work_path(w[:id]) do %> - <%= w.title %> by <%= w.creator %> - <% end %> -

-

<%= w.votes.length %> votes -

+
+ +
+

Media Spotlight: + <% w = @works.max_by { |work| work.votes.length } %> + <%= link_to w.title, work_path(w[:id]) %> + by <%= w.creator %> +

+

<%= w.votes.length %> votes - <%= w.desc %>

+

- -
-
-

Top Movies

-
    - <% movies = @movies[0..9] %> - <% movies.each do |movie_work| %> -
  • - <%= link_to movie_work.title, work_path(movie_work[:id]) %> - by <%= movie_work.creator %> -
    - <%= movie_work.votes.length %> votes -
  • - <% end %> -
-
+
+
+
+

Top Movies

+
    + <% movies = @movies[0..9] %> + <% movies.each do |movie_work| %> +
  • + <%= link_to movie_work.title, work_path(movie_work[:id]) %> + by <%= movie_work.creator %> +
    + <%= movie_work.votes.length %> votes +
  • + <% end %> +
+
-
-

Top Books

-
    - <% books = @books[0..9] %> - <% books.each do |book_work| %> -
  • - <%= link_to book_work.title, work_path(book_work[:id]) %> - by <%= book_work.creator %> -
    - <%= book_work.votes.length %> votes -
  • - <% end %> -
-
+
+

Top Books

+
    + <% books = @books[0..9] %> + <% books.each do |book_work| %> +
  • + <%= link_to book_work.title, work_path(book_work[:id]) %> + by <%= book_work.creator %> +
    + <%= book_work.votes.length %> votes +
  • + <% end %> +
+
-
-

Top Albums

-
    - <% albums = @albums[0..9] %> - <% albums.each do |album_work| %> -
  • - <%= link_to album_work.title, work_path(album_work[:id]) %> - by <%= album_work.creator %> -
    - <%= album_work.votes.length %> votes -
  • - <% end %> -
+
+

Top Albums

+
    + <% albums = @albums[0..9] %> + <% albums.each do |album_work| %> +
  • + <%= link_to album_work.title, work_path(album_work[:id]) %> + by <%= album_work.creator %> +
    + <%= album_work.votes.length %> votes +
  • + <% end %> +
+
- -
-
+ + diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 5eb558c9e9..0969ccb1e9 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -8,19 +8,28 @@ <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %> - -
-

<%=link_to "Media Ranker", root_path %> | Ranking the Best of Everything

- diff --git a/app/views/users/login_form.html.erb b/app/views/users/login_form.html.erb index c370b860f7..38b8a5eb67 100644 --- a/app/views/users/login_form.html.erb +++ b/app/views/users/login_form.html.erb @@ -1,6 +1,5 @@ <%= form_tag do %> - <%# collection_select(:user, :user_id, User.all, :id, :name) %> - <%= label_tag "Author Name"%> - <%= text_field :user, :name%> - <%= submit_tag "Log In" %> + <%= label_tag "Username"%> + <%= text_field :user, :name %> + <%= submit_tag "Log In", class: "button" %> <% end %> diff --git a/app/views/users/new.html.erb b/app/views/users/new.html.erb new file mode 100644 index 0000000000..833b49791e --- /dev/null +++ b/app/views/users/new.html.erb @@ -0,0 +1,7 @@ +
+

Log In

+ + <%= render partial: 'layouts/errors', locals: { model: @user } %> + + <%= render partial: "login_form", locals: { hide_placeholder_text: true }%> +
diff --git a/app/views/users/show.html.erb b/app/views/users/show.html.erb index ba852bccce..c2722bf1f3 100644 --- a/app/views/users/show.html.erb +++ b/app/views/users/show.html.erb @@ -1,3 +1,35 @@ -
+
+
+

User Summary: <%= @user.name %>

+

Joined site <%= @user.join_date %>

+
+ +
+

Votes

+ + + + + + + + + <% @user.votes.each do |vote| %> + + + + + + + + <% end %> +
Media TitleCreated ByPublishedCategoryVoted On
<%= vote.work.title %><%= vote.work.creator %><%= vote.work.year %><%= vote.work.category.capitalize %><%= vote.date.strftime("%b %d, %Y") %>
+
+ +
+ <%= link_to "See all Users", users_path, class: "button" %> + <%= link_to "Back to Media List", root_path, class: "button" %> +
+
diff --git a/app/views/works/show.html.erb b/app/views/works/show.html.erb index a231928761..c2ca27708a 100644 --- a/app/views/works/show.html.erb +++ b/app/views/works/show.html.erb @@ -22,8 +22,8 @@ Date <% @work.votes.each do |vote| %> - <% vote.user_id.name%> - <% vote.date %> + <%= vote.user.name %> + <%= vote.date.strftime("%b %d, %Y") %> <% end %> diff --git a/config/routes.rb b/config/routes.rb index f661a104da..be62be028a 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -5,6 +5,6 @@ resources :votes, only: [:index, :new, :create] end - # get 'login', to: 'users#login_form', as: 'login' - # post 'login', to: 'users#login' + get 'login', to: 'users#login_form', as: 'login' + post 'login', to: 'users#login' end From 6525dcf461aa369b13727a542b66fb8cf19058b0 Mon Sep 17 00:00:00 2001 From: kee nam Date: Fri, 13 Oct 2017 13:48:22 -0700 Subject: [PATCH 24/35] Added Sessions controller --- app/assets/javascripts/sessions.js | 2 ++ app/assets/stylesheets/sessions.scss | 3 +++ app/controllers/sessions_controller.rb | 2 ++ app/helpers/sessions_helper.rb | 2 ++ app/views/layouts/application.html.erb | 7 +++++++ test/controllers/sessions_controller_test.rb | 7 +++++++ 6 files changed, 23 insertions(+) create mode 100644 app/assets/javascripts/sessions.js create mode 100644 app/assets/stylesheets/sessions.scss create mode 100644 app/controllers/sessions_controller.rb create mode 100644 app/helpers/sessions_helper.rb create mode 100644 test/controllers/sessions_controller_test.rb diff --git a/app/assets/javascripts/sessions.js b/app/assets/javascripts/sessions.js new file mode 100644 index 0000000000..dee720facd --- /dev/null +++ b/app/assets/javascripts/sessions.js @@ -0,0 +1,2 @@ +// Place all the behaviors and hooks related to the matching controller here. +// All this logic will automatically be available in application.js. diff --git a/app/assets/stylesheets/sessions.scss b/app/assets/stylesheets/sessions.scss new file mode 100644 index 0000000000..ccb1ed25b2 --- /dev/null +++ b/app/assets/stylesheets/sessions.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the Sessions controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/app/controllers/sessions_controller.rb b/app/controllers/sessions_controller.rb new file mode 100644 index 0000000000..16d11b5710 --- /dev/null +++ b/app/controllers/sessions_controller.rb @@ -0,0 +1,2 @@ +class SessionsController < ApplicationController +end diff --git a/app/helpers/sessions_helper.rb b/app/helpers/sessions_helper.rb new file mode 100644 index 0000000000..309f8b2eb3 --- /dev/null +++ b/app/helpers/sessions_helper.rb @@ -0,0 +1,2 @@ +module SessionsHelper +end diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 79d06de103..330157f3c0 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -35,6 +35,13 @@
+ +
+ <% flash.each do |name, message| %> +
<%= message %>
+ <% end %> +
+ <%= yield %> diff --git a/test/controllers/sessions_controller_test.rb b/test/controllers/sessions_controller_test.rb new file mode 100644 index 0000000000..c2632a720b --- /dev/null +++ b/test/controllers/sessions_controller_test.rb @@ -0,0 +1,7 @@ +require "test_helper" + +describe SessionsController do + # it "must be a real test" do + # flunk "Need real tests" + # end +end From 837f3ea7b9dcc7a8e58500df618a77d60a56b85c Mon Sep 17 00:00:00 2001 From: kee nam Date: Fri, 13 Oct 2017 14:17:51 -0700 Subject: [PATCH 25/35] Destroyed sessions controller --- app/assets/javascripts/sessions.js | 2 -- app/assets/stylesheets/sessions.scss | 3 -- app/controllers/sessions_controller.rb | 2 -- app/controllers/users_controller.rb | 2 +- app/helpers/sessions_helper.rb | 2 -- app/views/layouts/application.html.erb | 33 +++++++++----------- test/controllers/sessions_controller_test.rb | 7 ----- 7 files changed, 15 insertions(+), 36 deletions(-) delete mode 100644 app/assets/javascripts/sessions.js delete mode 100644 app/assets/stylesheets/sessions.scss delete mode 100644 app/controllers/sessions_controller.rb delete mode 100644 app/helpers/sessions_helper.rb delete mode 100644 test/controllers/sessions_controller_test.rb diff --git a/app/assets/javascripts/sessions.js b/app/assets/javascripts/sessions.js deleted file mode 100644 index dee720facd..0000000000 --- a/app/assets/javascripts/sessions.js +++ /dev/null @@ -1,2 +0,0 @@ -// Place all the behaviors and hooks related to the matching controller here. -// All this logic will automatically be available in application.js. diff --git a/app/assets/stylesheets/sessions.scss b/app/assets/stylesheets/sessions.scss deleted file mode 100644 index ccb1ed25b2..0000000000 --- a/app/assets/stylesheets/sessions.scss +++ /dev/null @@ -1,3 +0,0 @@ -// Place all the styles related to the Sessions controller here. -// They will automatically be included in application.css. -// You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/app/controllers/sessions_controller.rb b/app/controllers/sessions_controller.rb deleted file mode 100644 index 16d11b5710..0000000000 --- a/app/controllers/sessions_controller.rb +++ /dev/null @@ -1,2 +0,0 @@ -class SessionsController < ApplicationController -end diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 80517bb3fc..92da11c36a 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -30,7 +30,7 @@ def login session[:logged_in_user] = user_id redirect_to root_path else - # head :not_found + head :not_found # flash[:status] = :failure # flash[:message] = "No user with #{name}" # render :login_form diff --git a/app/helpers/sessions_helper.rb b/app/helpers/sessions_helper.rb deleted file mode 100644 index 309f8b2eb3..0000000000 --- a/app/helpers/sessions_helper.rb +++ /dev/null @@ -1,2 +0,0 @@ -module SessionsHelper -end diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 330157f3c0..6b0cb2e3d7 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -36,7 +36,20 @@ -
+
+

<%= flash[:message]%>

+
    + <% flash[:details].each do |field, problems| %> + <% problems.each do |problem| %> +
  • + + <%= field %>: + + <%= problem %> +
  • + <% end %> + <% end %> +
<% flash.each do |name, message| %>
<%= message %>
<% end %> @@ -45,21 +58,3 @@ <%= yield %> - - - - - diff --git a/test/controllers/sessions_controller_test.rb b/test/controllers/sessions_controller_test.rb deleted file mode 100644 index c2632a720b..0000000000 --- a/test/controllers/sessions_controller_test.rb +++ /dev/null @@ -1,7 +0,0 @@ -require "test_helper" - -describe SessionsController do - # it "must be a real test" do - # flunk "Need real tests" - # end -end From 2f07678cef027870889f293ca142a224246fbf15 Mon Sep 17 00:00:00 2001 From: kee nam Date: Fri, 13 Oct 2017 15:52:52 -0700 Subject: [PATCH 26/35] Adjusted routes for logout and adding #create tests for users_controller_test.rb --- app/controllers/users_controller.rb | 27 +++++++-------- app/views/layouts/application.html.erb | 29 +++++++++------- app/views/users/login_form.html.erb | 13 ++++--- app/views/users/new.html.erb | 7 ---- config/routes.rb | 1 + test/controllers/users_controller_test.rb | 42 +++++++++++++++++++---- 6 files changed, 75 insertions(+), 44 deletions(-) delete mode 100644 app/views/users/new.html.erb diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 92da11c36a..073cbab01c 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -6,37 +6,36 @@ def index @users = User.all end - def new - @user = User.new - end - def create @user = User.new(user_params) + @user.join_date = DateTime.now if save_and_flash(@user) - redirect to root_path + redirect_to root_path else - render :new, status: :bad_request + render :login_form, status: :bad_request end end - def login_form - - end + # def login_form + # end def login name = params[:user][:name] user = User.find_by(name: name) if user - session[:logged_in_user] = user_id + session[:logged_in_user] = user.id + flash[:success] = "#{ user.name } is successfully logged in" redirect_to root_path else - head :not_found - # flash[:status] = :failure - # flash[:message] = "No user with #{name}" - # render :login_form + create + session[:logged_in_user] = user.id end end + def logout + session[:logged_in_user] = @user = nil + end + def show ; end def edit ; end diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 6b0cb2e3d7..6b2a8047a3 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -36,24 +36,29 @@ -
-

<%= flash[:message]%>

+
+

<%= flash[:status] %>

+

<%= flash[:message] %>

+
+ + <%= yield %> diff --git a/app/views/users/login_form.html.erb b/app/views/users/login_form.html.erb index 38b8a5eb67..db49a6d6bd 100644 --- a/app/views/users/login_form.html.erb +++ b/app/views/users/login_form.html.erb @@ -1,5 +1,8 @@ -<%= form_tag do %> - <%= label_tag "Username"%> - <%= text_field :user, :name %> - <%= submit_tag "Log In", class: "button" %> -<% end %> +
+

Log In

+ <%= form_tag do %> + <%= label_tag "Username"%> + <%= text_field :user, :name %> + <%= submit_tag "Log In", class: "button" %> + <% end %> +
diff --git a/app/views/users/new.html.erb b/app/views/users/new.html.erb deleted file mode 100644 index 833b49791e..0000000000 --- a/app/views/users/new.html.erb +++ /dev/null @@ -1,7 +0,0 @@ -
-

Log In

- - <%= render partial: 'layouts/errors', locals: { model: @user } %> - - <%= render partial: "login_form", locals: { hide_placeholder_text: true }%> -
diff --git a/config/routes.rb b/config/routes.rb index be62be028a..2054c4cdb9 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -7,4 +7,5 @@ get 'login', to: 'users#login_form', as: 'login' post 'login', to: 'users#login' + delete 'logout', to: 'users#logout', as: 'logout' end diff --git a/test/controllers/users_controller_test.rb b/test/controllers/users_controller_test.rb index 3ed0bc5047..512103df53 100644 --- a/test/controllers/users_controller_test.rb +++ b/test/controllers/users_controller_test.rb @@ -8,14 +8,38 @@ end end - describe "new" do - it "returns success for a new work" do - # get new_user_path - # must_respond_with :success + describe "create" do + it "adds user to the database and redirects when the user data is valid" do + user_data = { + user: { + name: "Giorno Giovanna", + join_date: DateTime.now + } + } + User.new(user_data[:user]).must_be :valid? + start_user_count = User.count + + post users_path, params: user_data + + must_respond_with :redirect + must_redirect_to root_path + User.count.must_equal start_user_count + 1 end - end - describe "create" do + it "re-renders form when the work data is invalid" do + user_data = { + user: { + name: "" + } + } + User.new(user_data[:user]).wont_be :valid? + start_user_count = User.count + + post users_path, params: user_data + + must_respond_with :bad_request + User.count.must_equal start_user_count + end end describe "show" do @@ -29,4 +53,10 @@ describe "destroy" do end + + describe "login" do + end + + describe "logout" do + end end From 9a581a98d72c63595f5c1a5b41b1c39d73f1da5e Mon Sep 17 00:00:00 2001 From: kee nam Date: Mon, 16 Oct 2017 14:35:01 -0700 Subject: [PATCH 27/35] Changed owl icon and implemented login/logout methods --- app/assets/images/favicon.ico | Bin 0 -> 1150 bytes app/assets/images/owl.jpg | Bin 13218 -> 0 bytes app/controllers/application_controller.rb | 9 ++-- app/controllers/users_controller.rb | 21 ++++++--- app/views/layouts/application.html.erb | 54 +++++++++------------- config/routes.rb | 2 +- 6 files changed, 43 insertions(+), 43 deletions(-) create mode 100644 app/assets/images/favicon.ico delete mode 100644 app/assets/images/owl.jpg diff --git a/app/assets/images/favicon.ico b/app/assets/images/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..556af5510fce615dfea733a0883c41693b4577b1 GIT binary patch literal 1150 zcmbtSYeY?Cagn(1|*ngr3!o&h7)Gd>2 z&8pXyI2(>5JXaLisCV#;V(Y$Ogo;#fpxFzVL3l46!uk~-&3FlMA;;?A zyH5yDUJ&AvE^Xw#W6PfKtD6NPgvVZlulFZxa2|#@d;nQ_-N-I5AU@&)d|ZdIW8Ei+ zqEq1`2m`C(^!%Wx27yovadHLLZ7o6cc{xOhGWdt5f=?bIks=|z5}S6HATp^O{GbSI z+k2{k(<^J6V~$I*aUd!OH4hEwHBLc!zYBuIo7kRk3uSffcri8wbVIeQ{G2rX~RQqCdFATyPnBpS{)pl2Y*op!X$+d#^oWHJoIz{{6f=lFhYi}UrlS+ kUQ4rBZ;?u4fKv4UmUR|a-`1n{ZYQ;3KAUqI7XOd^1t78nt^fc4 literal 0 HcmV?d00001 diff --git a/app/assets/images/owl.jpg b/app/assets/images/owl.jpg deleted file mode 100644 index b3ded309503e7f923da57cb00fa145fbf656ae56..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13218 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 ZFR+vzabUC16e0W$Ojvqq0Gd4dzW|J{wv7M) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 22e3f89d2f..8acd23a5da 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -3,14 +3,17 @@ class ApplicationController < ActionController::Base def save_and_flash(model) result = model.save + if result flash[:status] = :success flash[:message] = "Successfully saved #{model.class} #{model.id}" + else - flash[:status] = :failure - flash[:message] = "Failed to save #{model.class} #{model.id}" - flash[:details] = model.errors.messages + flash.now[:status] = :failure + flash.now[:message] = "Failed to save #{model.class}" + flash.now[:details] = model.errors.messages end + return result end end diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 073cbab01c..b19559d3a1 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -9,31 +9,38 @@ def index def create @user = User.new(user_params) @user.join_date = DateTime.now - if save_and_flash(@user) + if @user.save + session[:user_id] = user.id + flash[:status] = :success + flash[:message] = "Successfully created a new user #{user.username} with ID #{user.id}" redirect_to root_path else + flash.now[:status] = :failure + flash.now[:message] = "Failed to log in" render :login_form, status: :bad_request + return end end - # def login_form - # end - def login name = params[:user][:name] user = User.find_by(name: name) if user session[:logged_in_user] = user.id - flash[:success] = "#{ user.name } is successfully logged in" - redirect_to root_path + save_and_flash(user) + flash[:message] = "#{ user.name } has successfully logged in" else create session[:logged_in_user] = user.id end + redirect_to root_path end def logout - session[:logged_in_user] = @user = nil + session[:logged_in_user] = nil + flash[:status] = :success + flash[:message] = "Successfully logged out" + redirect_to root_path end def show ; end diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 6b2a8047a3..5f2c531ea0 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -6,7 +6,7 @@ <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %> - <%= favicon_link_tag 'owl.jpg' %> + <%= favicon_link_tag 'favicon.ico' %> @@ -20,46 +20,36 @@ <%= link_to "Add a new work", new_work_path, class: "button" %> <%= link_to "View all users", users_path, class: "button" %>
- <%# if session[:logged_in_user]%> - - <%# User.find(session[:logged_in_user]).name%> - - - <%# else%> - - <%# end %> -
-

<%= flash[:status] %>

+

<%= flash[:message] %>

+ <% if flash[:details] %> +
    + <% flash[:details].each do |field, problems| %> + <% problems.each do |problem| %> +
  • + + <%= field %>: + + <%= problem %> +
  • + <% end %> + <% end %> +
+ <% end %>
- - <%= yield %> diff --git a/config/routes.rb b/config/routes.rb index 2054c4cdb9..900883ddfb 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -7,5 +7,5 @@ get 'login', to: 'users#login_form', as: 'login' post 'login', to: 'users#login' - delete 'logout', to: 'users#logout', as: 'logout' + get 'logout', to: 'users#logout' end From b08a608766c1ce23c3adcf70364b35d605bc812b Mon Sep 17 00:00:00 2001 From: kee nam Date: Mon, 16 Oct 2017 15:12:11 -0700 Subject: [PATCH 28/35] Added #show tests for user_controller --- app/controllers/users_controller.rb | 8 ++++---- test/controllers/users_controller_test.rb | 11 +++++++++++ 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index b19559d3a1..3128df6d5f 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -7,12 +7,12 @@ def index end def create - @user = User.new(user_params) - @user.join_date = DateTime.now - if @user.save + user = User.new(user_params) + user.join_date = DateTime.now + if user.save session[:user_id] = user.id flash[:status] = :success - flash[:message] = "Successfully created a new user #{user.username} with ID #{user.id}" + flash[:message] = "Successfully created a new user #{user.name} with ID #{user.id}" redirect_to root_path else flash.now[:status] = :failure diff --git a/test/controllers/users_controller_test.rb b/test/controllers/users_controller_test.rb index 512103df53..385711b6e0 100644 --- a/test/controllers/users_controller_test.rb +++ b/test/controllers/users_controller_test.rb @@ -43,6 +43,17 @@ end describe "show" do + it "returns success with valid id" do + user_id = User.first.id + get user_path(user_id) + must_respond_with :success + end + + it "returns not_found with invalid id" do + invalid_id = User.last.id + 1 + get user_path(invalid_id) + must_respond_with :not_found + end end describe "edit" do From 6761ec591e253736d3ed66e91100c7797b5d713d Mon Sep 17 00:00:00 2001 From: kee nam Date: Tue, 17 Oct 2017 01:49:28 -0700 Subject: [PATCH 29/35] Added CSS styling --- app/assets/stylesheets/application.css | 100 +++++++++++++++++ app/assets/stylesheets/foundation.css | 124 +++++++++++----------- app/controllers/users_controller.rb | 3 +- app/controllers/votes_controller.rb | 43 ++++++++ app/views/home/index.html.erb | 28 ++--- app/views/layouts/application.html.erb | 44 ++++---- app/views/users/show.html.erb | 2 +- app/views/votes/new.html.erb | 0 app/views/works/_form.html.erb | 2 +- app/views/works/index.html.erb | 114 +++++++++++--------- app/views/works/show.html.erb | 2 + test/controllers/users_controller_test.rb | 28 ++--- 12 files changed, 324 insertions(+), 166 deletions(-) create mode 100644 app/views/votes/new.html.erb diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css index 220d3fc9a1..9112055fd1 100644 --- a/app/assets/stylesheets/application.css +++ b/app/assets/stylesheets/application.css @@ -16,3 +16,103 @@ @import url('foundation.css'); @import url('https://fonts.googleapis.com/css?family=Gudea:400,400i,700'); + +body#main-body { padding: 0; } + +/* HEADER */ +header.main-header { + background: #B2DFDB; + margin-bottom: 10px; + padding: 25px 20px 10px 20px; +} +h1.site-title { + text-align: center; + margin: 25px auto 40px; + font-size: 32px; + font-weight: 700; + color: #fff; +} +h1.site-title a { + margin-right: 18px; + padding-right: 23px; + border-right: 2px solid #fff; + font-size: 40px; + color: #FF5722; +} +nav.site-nav section:nth-of-type(2){ text-align: right; } + +/* FLASH */ +section.flash { + border-radius: 5px; + background: #e6e6e6; + margin: 30px auto 0; + padding: 20px 25px; + width: 85%; +} +section.failure { color: #C70039; } + +/* MAINS */ +main { + width: 85%; + margin: 0 auto; + padding: 32px 0; +} + +/* HOME INDEX.HTML.ERB */ +article.media-spotlight { border-bottom: 1px solid rgb(202,202,202); } +article.media-spotlight div { padding: 0 32px 32px; } +article.media-spotlight div h2 { + font-size: 31px; + font-weight: 700; + color: #26A69A; +} +article.media-spotlight div h2 span { color: #424242; +} +article.media-spotlight div h2 a { color: #26A69A; } +article.top-lists { margin-top: 75px; } +article.top-lists h3 { + color: #26A69A; + font-size: 31px; + font-weight: 700; + border-bottom: 2px solid #B2DFDB; + margin-bottom: 8px; +} +article.top-lists section[class*="list"] { padding: 0 15px; } +article.top-lists ul { list-style-type: none; } +article.top-lists ul li { + font-weight: 700; + font-size: 20px; + color: slategrey; + margin-bottom: 16px; +} +article.top-lists ul li a { font-size: 25px; } +article.top-lists ul li span.vote-count { + color: #0a0a0a; + font-weight: normal; + font-size: 16px; +} + +/* works index.html.erb */ +h2.title-green { + font-weight: 700; + font-size: 31px; + color: #26A69A; +} +h3.list-title { + font-weight: 700; + font-size: 25px; + color: rgb(10, 10, 10); +} +section.work-list table[class*="list"], thead, tbody { border: none; } +section.work-list table[class*="list"] th { + text-align: left; + background: #f8f8f8; +} +section.work-list table[class*="list"] td { + padding: 8px 10px 10px; + border: 2px solid #fff; +} +section.work-list table[class*="list"] td a { + vertical-align: middle; + margin-bottom: 0; +} diff --git a/app/assets/stylesheets/foundation.css b/app/assets/stylesheets/foundation.css index fa51653cca..eec0bd5f5b 100644 --- a/app/assets/stylesheets/foundation.css +++ b/app/assets/stylesheets/foundation.css @@ -2291,11 +2291,11 @@ h6, .h6 { a { line-height: inherit; - color: #1779ba; + color: #26A69A; text-decoration: none; cursor: pointer; } a:hover, a:focus { - color: #1468a0; } + color: #00796B; } a img { border: 0; } @@ -2501,12 +2501,12 @@ ul.no-bullet, ol.no-bullet { line-height: 1; text-align: center; cursor: pointer; - background-color: #1779ba; + background-color: #26A69A; color: #fefefe; } [data-whatinput='mouse'] .button { outline: 0; } .button:hover, .button:focus { - background-color: #14679e; + background-color: #00796B; color: #fefefe; } .button.tiny { font-size: 0.6rem; } @@ -2520,10 +2520,10 @@ ul.no-bullet, ol.no-bullet { margin-right: 0; margin-left: 0; } .button.primary { - background-color: #1779ba; + background-color: #26A69A; color: #fefefe; } .button.primary:hover, .button.primary:focus { - background-color: #126195; + background-color: #00796B; color: #fefefe; } .button.secondary { background-color: #767676; @@ -2553,13 +2553,13 @@ ul.no-bullet, ol.no-bullet { opacity: 0.25; cursor: not-allowed; } .button.disabled, .button.disabled:hover, .button.disabled:focus, .button[disabled], .button[disabled]:hover, .button[disabled]:focus { - background-color: #1779ba; + background-color: #26A69A; color: #fefefe; } .button.disabled.primary, .button[disabled].primary { opacity: 0.25; cursor: not-allowed; } .button.disabled.primary, .button.disabled.primary:hover, .button.disabled.primary:focus, .button[disabled].primary, .button[disabled].primary:hover, .button[disabled].primary:focus { - background-color: #1779ba; + background-color: #00796B; color: #fefefe; } .button.disabled.secondary, .button[disabled].secondary { opacity: 0.25; @@ -2586,8 +2586,8 @@ ul.no-bullet, ol.no-bullet { background-color: #cc4b37; color: #fefefe; } .button.hollow { - border: 1px solid #1779ba; - color: #1779ba; } + border: 1px solid #26A69A; + color: #26A69A; } .button.hollow, .button.hollow:hover, .button.hollow:focus { background-color: transparent; } .button.hollow.disabled, .button.hollow.disabled:hover, .button.hollow.disabled:focus, .button.hollow[disabled], .button.hollow[disabled]:hover, .button.hollow[disabled]:focus { @@ -2596,17 +2596,17 @@ ul.no-bullet, ol.no-bullet { border-color: #0c3d5d; color: #0c3d5d; } .button.hollow:hover.disabled, .button.hollow:hover[disabled], .button.hollow:focus.disabled, .button.hollow:focus[disabled] { - border: 1px solid #1779ba; - color: #1779ba; } + border: 1px solid #26A69A; + color: #26A69A; } .button.hollow.primary { - border: 1px solid #1779ba; - color: #1779ba; } + border: 1px solid #26A69A; + color: #26A69A; } .button.hollow.primary:hover, .button.hollow.primary:focus { border-color: #0c3d5d; color: #0c3d5d; } .button.hollow.primary:hover.disabled, .button.hollow.primary:hover[disabled], .button.hollow.primary:focus.disabled, .button.hollow.primary:focus[disabled] { - border: 1px solid #1779ba; - color: #1779ba; } + border: 1px solid #00796B; + color: #00796B; } .button.hollow.secondary { border: 1px solid #767676; color: #767676; } @@ -2644,8 +2644,8 @@ ul.no-bullet, ol.no-bullet { border: 1px solid #cc4b37; color: #cc4b37; } .button.clear { - border: 1px solid #1779ba; - color: #1779ba; } + border: 1px solid #26A69A; + color: #26A69A; } .button.clear, .button.clear:hover, .button.clear:focus { background-color: transparent; } .button.clear.disabled, .button.clear.disabled:hover, .button.clear.disabled:focus, .button.clear[disabled], .button.clear[disabled]:hover, .button.clear[disabled]:focus { @@ -2654,19 +2654,19 @@ ul.no-bullet, ol.no-bullet { border-color: #0c3d5d; color: #0c3d5d; } .button.clear:hover.disabled, .button.clear:hover[disabled], .button.clear:focus.disabled, .button.clear:focus[disabled] { - border: 1px solid #1779ba; - color: #1779ba; } + border: 1px solid #26A69A; + color: #26A69A; } .button.clear, .button.clear.disabled, .button.clear[disabled], .button.clear:hover, .button.clear:hover.disabled, .button.clear:hover[disabled], .button.clear:focus, .button.clear:focus.disabled, .button.clear:focus[disabled] { border-color: transparent; } .button.clear.primary { - border: 1px solid #1779ba; - color: #1779ba; } + border: 1px solid #26A69A; + color: #26A69A; } .button.clear.primary:hover, .button.clear.primary:focus { border-color: #0c3d5d; color: #0c3d5d; } .button.clear.primary:hover.disabled, .button.clear.primary:hover[disabled], .button.clear.primary:focus.disabled, .button.clear.primary:focus[disabled] { - border: 1px solid #1779ba; - color: #1779ba; } + border: 1px solid #00796B; + color: #00796B; } .button.clear.primary, .button.clear.primary.disabled, .button.clear.primary[disabled], .button.clear.primary:hover, .button.clear.primary:hover.disabled, .button.clear.primary:hover[disabled], .button.clear.primary:focus, .button.clear.primary:focus.disabled, .button.clear.primary:focus[disabled] { border-color: transparent; } .button.clear.secondary { @@ -2728,9 +2728,9 @@ ul.no-bullet, ol.no-bullet { float: right; margin-left: 1em; } .button.dropdown.hollow::after { - border-top-color: #1779ba; } + border-top-color: #26A69A; } .button.dropdown.hollow.primary::after { - border-top-color: #1779ba; } + border-top-color: #26A69A; } .button.dropdown.hollow.secondary::after { border-top-color: #767676; } .button.dropdown.hollow.success::after { @@ -3021,7 +3021,7 @@ select { border-bottom: 0; font-size: 0.75rem; line-height: 1; - color: #1779ba; } + color: #26A69A; } :last-child:not(.is-active) > .accordion-title { border-bottom: 1px solid #e6e6e6; border-radius: 0 0 0 0; } @@ -3073,7 +3073,7 @@ select { content: ''; border-bottom-width: 0; border-top-style: solid; - border-color: #1779ba transparent transparent; + border-color: #26A69A transparent transparent; position: absolute; top: 50%; margin-top: -3px; @@ -3114,7 +3114,7 @@ select { content: ''; border-bottom-width: 0; border-top-style: solid; - border-color: #1779ba transparent transparent; + border-color: #26A69A transparent transparent; top: 0; bottom: 0; margin: auto; } @@ -3144,10 +3144,10 @@ select { border-radius: 50%; font-size: 0.6rem; text-align: center; - background: #1779ba; + background: #26A69A; color: #fefefe; } .badge.primary { - background: #1779ba; + background: #26A69A; color: #fefefe; } .badge.secondary { background: #767676; @@ -3187,7 +3187,7 @@ select { content: "/"; color: #cacaca; } .breadcrumbs a { - color: #1779ba; } + color: #26A69A; } .breadcrumbs a:hover { text-decoration: underline; } .breadcrumbs .disabled { @@ -3230,10 +3230,10 @@ select { -ms-flex: 1 1 0px; flex: 1 1 0px; } .button-group.primary .button { - background-color: #1779ba; + background-color: #26A69A; color: #fefefe; } .button-group.primary .button:hover, .button-group.primary .button:focus { - background-color: #126195; + background-color: #00796B; color: #fefefe; } .button-group.secondary .button { background-color: #767676; @@ -3502,10 +3502,10 @@ select { margin-bottom: 0.25rem; text-align: center; } .menu .is-active > a { - background: #1779ba; + background: #26A69A; color: #fefefe; } .menu .active > a { - background: #1779ba; + background: #26A69A; color: #fefefe; } .menu.align-left { -ms-flex-pack: start; @@ -3649,7 +3649,7 @@ select { content: ''; border-right-width: 0; border-left-style: solid; - border-color: transparent transparent transparent #1779ba; } + border-color: transparent transparent transparent #26A69A; } .drilldown.align-left .is-drilldown-submenu-parent > a::after { left: auto; @@ -3661,7 +3661,7 @@ select { content: ''; border-right-width: 0; border-left-style: solid; - border-color: transparent transparent transparent #1779ba; } + border-color: transparent transparent transparent #26A69A; } .drilldown.align-right .is-drilldown-submenu-parent > a::after { right: auto; @@ -3673,7 +3673,7 @@ select { content: ''; border-left-width: 0; border-right-style: solid; - border-color: transparent #1779ba transparent transparent; } + border-color: transparent #26A69A transparent transparent; } .drilldown .js-drilldown-back > a::before { display: block; @@ -3683,7 +3683,7 @@ select { content: ''; border-left-width: 0; border-right-style: solid; - border-color: transparent #1779ba transparent transparent; + border-color: transparent #26A69A transparent transparent; border-left-width: 0; display: inline-block; vertical-align: middle; @@ -3738,7 +3738,7 @@ select { content: ''; border-bottom-width: 0; border-top-style: solid; - border-color: #1779ba transparent transparent; + border-color: #26A69A transparent transparent; right: 5px; left: auto; margin-top: -3px; } @@ -3750,7 +3750,7 @@ select { .dropdown.menu .is-active > a { background: transparent; - color: #1779ba; } + color: #26A69A; } .no-js .dropdown.menu ul { display: none; } @@ -3784,7 +3784,7 @@ select { content: ''; border-left-width: 0; border-right-style: solid; - border-color: transparent #1779ba transparent transparent; } + border-color: transparent #26A69A transparent transparent; } .dropdown.menu.vertical > li.opens-right > a::after { display: block; @@ -3794,7 +3794,7 @@ select { content: ''; border-right-width: 0; border-left-style: solid; - border-color: transparent transparent transparent #1779ba; } + border-color: transparent transparent transparent #26A69A; } @media print, screen and (min-width: 40em) { .dropdown.menu.medium-horizontal > li.opens-left > .is-dropdown-submenu { @@ -3816,7 +3816,7 @@ select { content: ''; border-bottom-width: 0; border-top-style: solid; - border-color: #1779ba transparent transparent; + border-color: #26A69A transparent transparent; right: 5px; left: auto; margin-top: -3px; } @@ -3841,7 +3841,7 @@ select { content: ''; border-left-width: 0; border-right-style: solid; - border-color: transparent #1779ba transparent transparent; } + border-color: transparent #26A69A transparent transparent; } .dropdown.menu.medium-vertical > li.opens-right > a::after { display: block; width: 0; @@ -3850,7 +3850,7 @@ select { content: ''; border-right-width: 0; border-left-style: solid; - border-color: transparent transparent transparent #1779ba; } } + border-color: transparent transparent transparent #26A69A; } } @media print, screen and (min-width: 64em) { .dropdown.menu.large-horizontal > li.opens-left > .is-dropdown-submenu { @@ -3872,7 +3872,7 @@ select { content: ''; border-bottom-width: 0; border-top-style: solid; - border-color: #1779ba transparent transparent; + border-color: #26A69A transparent transparent; right: 5px; left: auto; margin-top: -3px; } @@ -3897,7 +3897,7 @@ select { content: ''; border-left-width: 0; border-right-style: solid; - border-color: transparent #1779ba transparent transparent; } + border-color: transparent #26A69A transparent transparent; } .dropdown.menu.large-vertical > li.opens-right > a::after { display: block; width: 0; @@ -3906,7 +3906,7 @@ select { content: ''; border-right-width: 0; border-left-style: solid; - border-color: transparent transparent transparent #1779ba; } } + border-color: transparent transparent transparent #26A69A; } } .dropdown.menu.align-right .is-dropdown-submenu.first-sub { top: 100%; @@ -3959,7 +3959,7 @@ select { content: ''; border-left-width: 0; border-right-style: solid; - border-color: transparent #1779ba transparent transparent; } + border-color: transparent #26A69A transparent transparent; } .is-dropdown-submenu .is-dropdown-submenu-parent.opens-right > a::after { display: block; width: 0; @@ -3968,7 +3968,7 @@ select { content: ''; border-right-width: 0; border-left-style: solid; - border-color: transparent transparent transparent #1779ba; } + border-color: transparent transparent transparent #26A69A; } .is-dropdown-submenu .is-dropdown-submenu { margin-top: -1px; } .is-dropdown-submenu > li { @@ -4008,10 +4008,10 @@ select { line-height: 1; white-space: nowrap; cursor: default; - background: #1779ba; + background: #26A69A; color: #fefefe; } .label.primary { - background: #1779ba; + background: #26A69A; color: #fefefe; } .label.secondary { background: #767676; @@ -4485,7 +4485,7 @@ select { background: #e6e6e6; } .pagination .current { padding: 0.1875rem 0.625rem; - background: #1779ba; + background: #26A69A; color: #fefefe; cursor: default; } .pagination .disabled { @@ -4517,7 +4517,7 @@ select { border-radius: 0; background-color: #cacaca; } .progress.primary .progress-meter { - background-color: #1779ba; } + background-color: #26A69A; } .progress.secondary .progress-meter { background-color: #767676; } .progress.success .progress-meter { @@ -4532,7 +4532,7 @@ select { display: block; width: 0%; height: 100%; - background-color: #1779ba; } + background-color: #26A69A; } .progress-meter-text { position: absolute; @@ -4675,7 +4675,7 @@ html.is-reveal-open body { width: 1.4rem; height: 1.4rem; border-radius: 0; - background-color: #1779ba; + background-color: #26A69A; transition: all 0.2s ease-in-out; -ms-touch-action: manipulation; touch-action: manipulation; } @@ -4779,7 +4779,7 @@ html.is-reveal-open body { transition: all 0.25s ease-out; content: ''; } input:checked ~ .switch-paddle { - background: #1779ba; } + background: #26A69A; } input:checked ~ .switch-paddle::after { left: 2.25rem; } [data-whatinput='mouse'] input:focus ~ .switch-paddle { @@ -4946,7 +4946,7 @@ table.hover:not(.unstriped) tr:nth-of-type(even):hover { background: transparent; } .tabs.primary { - background: #1779ba; } + background: #26A69A; } .tabs.primary > li > a { color: #fefefe; } .tabs.primary > li > a:hover, .tabs.primary > li > a:focus { @@ -4959,13 +4959,13 @@ table.hover:not(.unstriped) tr:nth-of-type(even):hover { padding: 1.25rem 1.5rem; font-size: 0.75rem; line-height: 1; - color: #1779ba; } + color: #26A69A; } .tabs-title > a:hover { background: #fefefe; color: #1468a0; } .tabs-title > a:focus, .tabs-title > a[aria-selected='true'] { background: #e6e6e6; - color: #1779ba; } + color: #26A69A; } .tabs-content { border: 1px solid #e6e6e6; diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 3128df6d5f..a8f2e235af 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -29,11 +29,10 @@ def login session[:logged_in_user] = user.id save_and_flash(user) flash[:message] = "#{ user.name } has successfully logged in" + redirect_to root_path else create - session[:logged_in_user] = user.id end - redirect_to root_path end def logout diff --git a/app/controllers/votes_controller.rb b/app/controllers/votes_controller.rb index ffdb2760e0..01591dfdaa 100644 --- a/app/controllers/votes_controller.rb +++ b/app/controllers/votes_controller.rb @@ -1,2 +1,45 @@ class VotesController < ApplicationController + + def index + if params[:work_id] + @votes = Work.find(params[:work_id]).votes + else + @votes = Vote.all + end + end + + def new + @vote = Vote.new + if session[:logged_in_user] + create + else + flash.now[:status] = :failure + flash.now[:message] = "You must be logged in to vote!" + end + end + + def create + user = User.find(session[:logged_in_user]) + if user + @vote = Vote.new + @vote.work = Work.find(params[:work_id]) + + @vote.user = user + exists = @vote.work.votes.select { |vote| vote.user_id == user.id } + if exists.length > 0 + flash[:status] = :failure + flash[:message] = "Cannot vote for a work more than once!" + else + @vote.date = DateTime.now + save_and_flash(@vote) + end + redirect_to works_path + end + end + + private + + def vote_params + return params.require(:vote).permit(:user_id, :work_id, :date) + end end diff --git a/app/views/home/index.html.erb b/app/views/home/index.html.erb index 871736f4a8..d56b514727 100644 --- a/app/views/home/index.html.erb +++ b/app/views/home/index.html.erb @@ -1,16 +1,16 @@
-

Media Spotlight: - <% w = @works.max_by { |work| work.votes.length } %> - <%= link_to w.title, work_path(w[:id]) %> - by <%= w.creator %> -

-

<%= w.votes.length %> votes - <%= w.desc %>

+
+

Media Spotlight: + <% w = @works.max_by { |work| work.votes.length } %> + <%= link_to w.title, work_path(w[:id]) %> + by <%= w.creator %> +

+

<%= w.votes.length %> votes - <%= w.desc %>

+
-
-
@@ -20,9 +20,9 @@ <% movies.each do |movie_work| %>
  • <%= link_to movie_work.title, work_path(movie_work[:id]) %> - by <%= movie_work.creator %> + by <%= movie_work.creator %>
    - <%= movie_work.votes.length %> votes + <%= movie_work.votes.length %> votes
  • <% end %> @@ -35,9 +35,9 @@ <% books.each do |book_work| %>
  • <%= link_to book_work.title, work_path(book_work[:id]) %> - by <%= book_work.creator %> + by <%= book_work.creator %>
    - <%= book_work.votes.length %> votes + <%= book_work.votes.length %> votes
  • <% end %> @@ -50,9 +50,9 @@ <% albums.each do |album_work| %>
  • <%= link_to album_work.title, work_path(album_work[:id]) %> - by <%= album_work.creator %> + by <%= album_work.creator %>
    - <%= album_work.votes.length %> votes + <%= album_work.votes.length %> votes
  • <% end %> diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 5f2c531ea0..c5f58a8390 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -9,11 +9,11 @@ <%= favicon_link_tag 'favicon.ico' %> - -
    -

    <%=link_to "Media Ranker", root_path %> | Ranking the Best of Everything

    -
    -
    +

    Votes

    - - - - - - - - <% @user.votes.each do |vote| %> + - - - - - + + + + + - <% end %> + + + <% @user.votes.each do |vote| %> + + + + + + + + <% end %> +
    Media TitleCreated ByPublishedCategoryVoted On
    <%= vote.work.title %><%= vote.work.creator %><%= vote.work.year %><%= vote.work.category.capitalize %><%= vote.date.strftime("%b %d, %Y") %>Media TitleCreated ByPublishedCategoryVoted On
    <%= link_to vote.work.title, work_path(vote.work[:id]) %><%= vote.work.creator %><%= vote.work.year %><%= vote.work.category.capitalize %><%= vote.date.strftime("%b %d, %Y") %>
    @@ -30,6 +34,4 @@ <%= link_to "See all Users", users_path, class: "button" %> <%= link_to "Back to Media List", root_path, class: "button" %>
    - -
    diff --git a/app/views/votes/new.html.erb b/app/views/votes/new.html.erb deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/app/views/works/_form.html.erb b/app/views/works/_form.html.erb index b68a8bf0ef..b674e8adb4 100644 --- a/app/views/works/_form.html.erb +++ b/app/views/works/_form.html.erb @@ -2,7 +2,7 @@ <%= content_tag :div, class: "category-wrapper" do %> <%= f.label :category, "Category"%> - <%= f.collection_select(:category, Work.all, :id, :category, prompt: true) %> + <%= f.select :category, ['album', 'book', 'movie'] %> <% end %> <%= content_tag :div, class: "title-wrapper" do %> diff --git a/app/views/works/show.html.erb b/app/views/works/show.html.erb index cc14edbf07..ceea899b88 100644 --- a/app/views/works/show.html.erb +++ b/app/views/works/show.html.erb @@ -17,16 +17,20 @@

    <%= @work.votes.length %> Votes for this <%= @work.category.capitalize%>

    - - - - - <% @work.votes.each do |vote| %> - - - - - <% end %> + + + + + + + + <% @work.votes.each do |vote| %> + + + + + <% end %> +
    UserDate
    <%= vote.user.name %><%= vote.date.strftime("%b %d, %Y") %>
    UserDate
    <%= vote.user.name %><%= vote.date.strftime("%b %d, %Y") %>
    From bb71ccaeb7665be63625c7fc64c47342188a5b54 Mon Sep 17 00:00:00 2001 From: kee nam Date: Tue, 17 Oct 2017 03:00:45 -0700 Subject: [PATCH 31/35] Edited votes_controller --- app/controllers/votes_controller.rb | 8 -------- 1 file changed, 8 deletions(-) diff --git a/app/controllers/votes_controller.rb b/app/controllers/votes_controller.rb index 63411d3602..9083a8db34 100644 --- a/app/controllers/votes_controller.rb +++ b/app/controllers/votes_controller.rb @@ -1,13 +1,5 @@ class VotesController < ApplicationController - def index - if params[:work_id] - @votes = Work.find(params[:work_id]).votes - else - @votes = Vote.all - end - end - def new @vote = Vote.new if session[:logged_in_user] From 92e2ed9253030e96912489b75bc6ef78e85c5d17 Mon Sep 17 00:00:00 2001 From: kee nam Date: Tue, 17 Oct 2017 03:04:08 -0700 Subject: [PATCH 32/35] Cleaned up CSS --- app/assets/stylesheets/application.css | 48 ++++++++------------------ 1 file changed, 15 insertions(+), 33 deletions(-) diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css index b3f8b386ac..5dc9f134ca 100644 --- a/app/assets/stylesheets/application.css +++ b/app/assets/stylesheets/application.css @@ -66,8 +66,7 @@ article.media-spotlight div h2 { font-weight: 700; color: #26A69A; } -article.media-spotlight div h2 span { color: #424242; -} +article.media-spotlight div h2 span { color: #424242; } article.media-spotlight div h2 a { color: #26A69A; } article.top-lists { margin-top: 75px; } article.top-lists h3 { @@ -103,56 +102,39 @@ h3.list-title { font-size: 25px; color: rgb(10, 10, 10); } -section.work-list table[class*="list"], -section.work-list table[class*="list"] thead, -section.work-list table[class*="list"] tbody { - border: none; -} section.work-list table[class*="list"] th { text-align: left; background: #f8f8f8; } -section.work-list table[class*="list"] td { - padding: 8px 10px 10px; - border: 2px solid #fff; -} section.work-list table[class*="list"] td a { vertical-align: middle; margin-bottom: 0; } -/* work show.html.erb */ -section.vote-info table, -section.vote-info table thead, -section.vote-info table tbody { - border: none; -} -section.vote-info table td { - padding: 8px 10px 10px; - border: 2px solid #fff; -} - -/* user index.html.erb */ -section.user-list table, -section.user-list table thead, -section.user-list table tbody { - border: none; -} -section.user-list table td { - padding: 8px 10px 10px; - border: 2px solid #fff; -} - /* user show.html.erb */ section.user-votes h3 { font-size: 25px; font-weight: 700; } + +/* tables */ +section.work-list table[class*="list"], +section.work-list table[class*="list"] thead, +section.work-list table[class*="list"] tbody, +section.vote-info table, +section.vote-info table thead, +section.vote-info table tbody, +section.user-list table, +section.user-list table thead, +section.user-list table tbody, section.user-votes table, section.user-votes table thead, section.user-votes table tbody { border: none; } +section.work-list table[class*="list"] td, +section.vote-info table td, +section.user-list table td, section.user-votes table td { padding: 8px 10px 10px; border: 2px solid #fff; From 3c9c864b2cbb5ed85e46af800ebad09fc06bd5a7 Mon Sep 17 00:00:00 2001 From: kee nam Date: Tue, 17 Oct 2017 03:17:14 -0700 Subject: [PATCH 33/35] Added assets? --- ...nifest-694a97830b170cb5649dcdae4415a679.json | 1 + ...203db12801218c3054ff3c738b27db5e1b4f5f051.js | 2 ++ ...db12801218c3054ff3c738b27db5e1b4f5f051.js.gz | Bin 0 -> 13999 bytes ...7ebab84f1be52b51586ecf842fd06a6489a2d4c4.css | 1 + ...ab84f1be52b51586ecf842fd06a6489a2d4c4.css.gz | Bin 0 -> 17461 bytes ...4b716f1d4e5fe0e8ad5e408627659ebf8d7f16b1.ico | Bin 0 -> 1150 bytes ...16f1d4e5fe0e8ad5e408627659ebf8d7f16b1.ico.gz | Bin 0 -> 755 bytes 7 files changed, 4 insertions(+) create mode 100644 public/assets/.sprockets-manifest-694a97830b170cb5649dcdae4415a679.json create mode 100644 public/assets/application-509088ee921e09b51eea0f0203db12801218c3054ff3c738b27db5e1b4f5f051.js create mode 100644 public/assets/application-509088ee921e09b51eea0f0203db12801218c3054ff3c738b27db5e1b4f5f051.js.gz create mode 100644 public/assets/application-f50b11ee4268ba84f9d098557ebab84f1be52b51586ecf842fd06a6489a2d4c4.css create mode 100644 public/assets/application-f50b11ee4268ba84f9d098557ebab84f1be52b51586ecf842fd06a6489a2d4c4.css.gz create mode 100644 public/assets/favicon-910822ff6cd5f6d37119171c4b716f1d4e5fe0e8ad5e408627659ebf8d7f16b1.ico create mode 100644 public/assets/favicon-910822ff6cd5f6d37119171c4b716f1d4e5fe0e8ad5e408627659ebf8d7f16b1.ico.gz diff --git a/public/assets/.sprockets-manifest-694a97830b170cb5649dcdae4415a679.json b/public/assets/.sprockets-manifest-694a97830b170cb5649dcdae4415a679.json new file mode 100644 index 0000000000..7180f5ce08 --- /dev/null +++ b/public/assets/.sprockets-manifest-694a97830b170cb5649dcdae4415a679.json @@ -0,0 +1 @@ +{"files":{"favicon-910822ff6cd5f6d37119171c4b716f1d4e5fe0e8ad5e408627659ebf8d7f16b1.ico":{"logical_path":"favicon.ico","mtime":"2017-10-16T11:42:39-07:00","size":1150,"digest":"910822ff6cd5f6d37119171c4b716f1d4e5fe0e8ad5e408627659ebf8d7f16b1","integrity":"sha256-kQgi/2zV9tNxGRccS3FvHU5f4OitXkCGJ2Wev41/FrE="},"application-509088ee921e09b51eea0f0203db12801218c3054ff3c738b27db5e1b4f5f051.js":{"logical_path":"application.js","mtime":"2017-10-16T13:57:25-07:00","size":58418,"digest":"509088ee921e09b51eea0f0203db12801218c3054ff3c738b27db5e1b4f5f051","integrity":"sha256-UJCI7pIeCbUe6g8CA9sSgBIYwwVP88c4sn214bT18FE="},"application-f50b11ee4268ba84f9d098557ebab84f1be52b51586ecf842fd06a6489a2d4c4.css":{"logical_path":"application.css","mtime":"2017-10-17T03:03:30-07:00","size":120698,"digest":"f50b11ee4268ba84f9d098557ebab84f1be52b51586ecf842fd06a6489a2d4c4","integrity":"sha256-9QsR7kJouoT50JhVfrq4TxvlK1FYbs+EL9BqZImi1MQ="}},"assets":{"favicon.ico":"favicon-910822ff6cd5f6d37119171c4b716f1d4e5fe0e8ad5e408627659ebf8d7f16b1.ico","application.js":"application-509088ee921e09b51eea0f0203db12801218c3054ff3c738b27db5e1b4f5f051.js","application.css":"application-f50b11ee4268ba84f9d098557ebab84f1be52b51586ecf842fd06a6489a2d4c4.css"}} \ No newline at end of file diff --git a/public/assets/application-509088ee921e09b51eea0f0203db12801218c3054ff3c738b27db5e1b4f5f051.js b/public/assets/application-509088ee921e09b51eea0f0203db12801218c3054ff3c738b27db5e1b4f5f051.js new file mode 100644 index 0000000000..e4ebfd7773 --- /dev/null +++ b/public/assets/application-509088ee921e09b51eea0f0203db12801218c3054ff3c738b27db5e1b4f5f051.js @@ -0,0 +1,2 @@ +(function(){var t=this;(function(){(function(){this.Rails={linkClickSelector:"a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]",buttonClickSelector:{selector:"button[data-remote]:not([form]), button[data-confirm]:not([form])",exclude:"form button"},inputChangeSelector:"select[data-remote], input[data-remote], textarea[data-remote]",formSubmitSelector:"form",formInputClickSelector:"form input[type=submit], form input[type=image], form button[type=submit], form button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])",formDisableSelector:"input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled",formEnableSelector:"input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled, input[data-disable]:disabled, button[data-disable]:disabled, textarea[data-disable]:disabled",fileInputSelector:"input[name][type=file]:not([disabled])",linkDisableSelector:"a[data-disable-with], a[data-disable]",buttonDisableSelector:"button[data-remote][data-disable-with], button[data-remote][data-disable]"}}).call(this)}).call(t);var e=t.Rails;(function(){(function(){var t,n;n=Element.prototype.matches||Element.prototype.matchesSelector||Element.prototype.mozMatchesSelector||Element.prototype.msMatchesSelector||Element.prototype.oMatchesSelector||Element.prototype.webkitMatchesSelector,e.matches=function(t,e){return null!=e.exclude?n.call(t,e.selector)&&!n.call(t,e.exclude):n.call(t,e)},t="_ujsData",e.getData=function(e,n){var o;return null!=(o=e[t])?o[n]:void 0},e.setData=function(e,n,o){return null==e[t]&&(e[t]={}),e[t][n]=o},e.$=function(t){return Array.prototype.slice.call(document.querySelectorAll(t))}}).call(this),function(){var t,n,o;t=e.$,o=e.csrfToken=function(){var t;return(t=document.querySelector("meta[name=csrf-token]"))&&t.content},n=e.csrfParam=function(){var t;return(t=document.querySelector("meta[name=csrf-param]"))&&t.content},e.CSRFProtection=function(t){var e;if(null!=(e=o()))return t.setRequestHeader("X-CSRF-Token",e)},e.refreshCSRFTokens=function(){var e,r;if(r=o(),e=n(),null!=r&&null!=e)return t('form input[name="'+e+'"]').forEach(function(t){return t.value=r})}}.call(this),function(){var t,n,o;o=e.matches,t=window.CustomEvent,"function"!=typeof t&&(t=function(t,e){var n;return n=document.createEvent("CustomEvent"),n.initCustomEvent(t,e.bubbles,e.cancelable,e.detail),n},t.prototype=window.Event.prototype),n=e.fire=function(e,n,o){var r;return r=new t(n,{bubbles:!0,cancelable:!0,detail:o}),e.dispatchEvent(r),!r.defaultPrevented},e.stopEverything=function(t){return n(t.target,"ujs:everythingStopped"),t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation()},e.delegate=function(t,e,n,r){return t.addEventListener(n,function(t){var n;for(n=t.target;n instanceof Element&&!o(n,e);)n=n.parentNode;if(n instanceof Element&&!1===r.call(n,t))return t.preventDefault(),t.stopPropagation()})}}.call(this),function(){var t,n,o,r,i,s;n=e.CSRFProtection,r=e.fire,t={"*":"*/*",text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript",script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},e.ajax=function(t){var e;return t=i(t),e=o(t,function(){var n;return n=s(e.response,e.getResponseHeader("Content-Type")),2===Math.floor(e.status/100)?"function"==typeof t.success&&t.success(n,e.statusText,e):"function"==typeof t.error&&t.error(n,e.statusText,e),"function"==typeof t.complete?t.complete(e,e.statusText):void 0}),"function"==typeof t.beforeSend&&t.beforeSend(e,t),e.readyState===XMLHttpRequest.OPENED?e.send(t.data):r(document,"ajaxStop")},i=function(e){return e.url=e.url||location.href,e.type=e.type.toUpperCase(),"GET"===e.type&&e.data&&(e.url.indexOf("?")<0?e.url+="?"+e.data:e.url+="&"+e.data),null==t[e.dataType]&&(e.dataType="*"),e.accept=t[e.dataType],"*"!==e.dataType&&(e.accept+=", */*; q=0.01"),e},o=function(t,e){var o;return o=new XMLHttpRequest,o.open(t.type,t.url,!0),o.setRequestHeader("Accept",t.accept),"string"==typeof t.data&&o.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8"),t.crossDomain||o.setRequestHeader("X-Requested-With","XMLHttpRequest"),n(o),o.withCredentials=!!t.withCredentials,o.onreadystatechange=function(){if(o.readyState===XMLHttpRequest.DONE)return e(o)},o},s=function(t,e){var n,o;if("string"==typeof t&&"string"==typeof e)if(e.match(/\bjson\b/))try{t=JSON.parse(t)}catch(t){}else if(e.match(/\b(?:java|ecma)script\b/))o=document.createElement("script"),o.text=t,document.head.appendChild(o).parentNode.removeChild(o);else if(e.match(/\b(xml|html|svg)\b/)){n=new DOMParser,e=e.replace(/;.+/,"");try{t=n.parseFromString(t,e)}catch(t){}}return t},e.href=function(t){return t.href},e.isCrossDomain=function(t){var e,n;e=document.createElement("a"),e.href=location.href,n=document.createElement("a");try{return n.href=t,!((!n.protocol||":"===n.protocol)&&!n.host||e.protocol+"//"+e.host==n.protocol+"//"+n.host)}catch(t){return t,!0}}}.call(this),function(){var t,n;t=e.matches,n=function(t){return Array.prototype.slice.call(t)},e.serializeElement=function(e,o){var r,i;return r=[e],t(e,"form")&&(r=n(e.elements)),i=[],r.forEach(function(e){if(e.name)return t(e,"select")?n(e.options).forEach(function(t){if(t.selected)return i.push({name:e.name,value:t.value})}):e.checked||-1===["radio","checkbox","submit"].indexOf(e.type)?i.push({name:e.name,value:e.value}):void 0}),o&&i.push(o),i.map(function(t){return null!=t.name?encodeURIComponent(t.name)+"="+encodeURIComponent(t.value):t}).join("&")},e.formElements=function(e,o){return t(e,"form")?n(e.elements).filter(function(e){return t(e,o)}):n(e.querySelectorAll(o))}}.call(this),function(){var t,n,o;n=e.fire,o=e.stopEverything,e.handleConfirm=function(e){if(!t(this))return o(e)},t=function(t){var e,o,r;if(!(r=t.getAttribute("data-confirm")))return!0;if(e=!1,n(t,"confirm")){try{e=confirm(r)}catch(t){}o=n(t,"confirm:complete",[e])}return e&&o}}.call(this),function(){var t,n,o,r,i,s,a,c,u,l,h;u=e.matches,c=e.getData,l=e.setData,h=e.stopEverything,a=e.formElements,e.handleDisabledElement=function(t){var e;if(e=this,e.disabled)return h(t)},e.enableElement=function(t){var n;return n=t instanceof Event?t.target:t,u(n,e.linkDisableSelector)?s(n):u(n,e.buttonDisableSelector)||u(n,e.formEnableSelector)?r(n):u(n,e.formSubmitSelector)?i(n):void 0},e.disableElement=function(r){var i;return i=r instanceof Event?r.target:r,u(i,e.linkDisableSelector)?o(i):u(i,e.buttonDisableSelector)||u(i,e.formDisableSelector)?t(i):u(i,e.formSubmitSelector)?n(i):void 0},o=function(t){var e;return e=t.getAttribute("data-disable-with"),null!=e&&(l(t,"ujs:enable-with",t.innerHTML),t.innerHTML=e),t.addEventListener("click",h),l(t,"ujs:disabled",!0)},s=function(t){var e;return e=c(t,"ujs:enable-with"),null!=e&&(t.innerHTML=e,l(t,"ujs:enable-with",null)),t.removeEventListener("click",h),l(t,"ujs:disabled",null)},n=function(n){return a(n,e.formDisableSelector).forEach(t)},t=function(t){var e;return e=t.getAttribute("data-disable-with"),null!=e&&(u(t,"button")?(l(t,"ujs:enable-with",t.innerHTML),t.innerHTML=e):(l(t,"ujs:enable-with",t.value),t.value=e)),t.disabled=!0,l(t,"ujs:disabled",!0)},i=function(t){return a(t,e.formEnableSelector).forEach(r)},r=function(t){var e;return e=c(t,"ujs:enable-with"),null!=e&&(u(t,"button")?t.innerHTML=e:t.value=e,l(t,"ujs:enable-with",null)),t.disabled=!1,l(t,"ujs:disabled",null)}}.call(this),function(){var t;t=e.stopEverything,e.handleMethod=function(n){var o,r,i,s,a,c,u;if(c=this,u=c.getAttribute("data-method"))return a=e.href(c),r=e.csrfToken(),o=e.csrfParam(),i=document.createElement("form"),s="",null==o||null==r||e.isCrossDomain(a)||(s+=""),s+='',i.method="post",i.action=a,i.target=c.target,i.innerHTML=s,i.style.display="none",document.body.appendChild(i),i.querySelector('[type="submit"]').click(),t(n)}}.call(this),function(){var t,n,o,r,i,s,a,c,u,l=[].slice;s=e.matches,o=e.getData,c=e.setData,n=e.fire,u=e.stopEverything,t=e.ajax,r=e.isCrossDomain,a=e.serializeElement,i=function(t){var e;return null!=(e=t.getAttribute("data-remote"))&&"false"!==e},e.handleRemote=function(h){var p,d,f,m,y,v,g;return m=this,!i(m)||(n(m,"ajax:before")?(g=m.getAttribute("data-with-credentials"),f=m.getAttribute("data-type")||"script",s(m,e.formSubmitSelector)?(p=o(m,"ujs:submit-button"),y=o(m,"ujs:submit-button-formmethod")||m.method,v=o(m,"ujs:submit-button-formaction")||m.getAttribute("action")||location.href,"GET"===y.toUpperCase()&&(v=v.replace(/\?.*$/,"")),"multipart/form-data"===m.enctype?(d=new FormData(m),null!=p&&d.append(p.name,p.value)):d=a(m,p),c(m,"ujs:submit-button",null),c(m,"ujs:submit-button-formmethod",null),c(m,"ujs:submit-button-formaction",null)):s(m,e.buttonClickSelector)||s(m,e.inputChangeSelector)?(y=m.getAttribute("data-method"),v=m.getAttribute("data-url"),d=a(m,m.getAttribute("data-params"))):(y=m.getAttribute("data-method"),v=e.href(m),d=m.getAttribute("data-params")),t({type:y||"GET",url:v,data:d,dataType:f,beforeSend:function(t,e){return n(m,"ajax:beforeSend",[t,e])?n(m,"ajax:send",[t]):(n(m,"ajax:stopped"),t.abort())},success:function(){var t;return t=1<=arguments.length?l.call(arguments,0):[],n(m,"ajax:success",t)},error:function(){var t;return t=1<=arguments.length?l.call(arguments,0):[],n(m,"ajax:error",t)},complete:function(){var t;return t=1<=arguments.length?l.call(arguments,0):[],n(m,"ajax:complete",t)},crossDomain:r(v),withCredentials:null!=g&&"false"!==g}),u(h)):(n(m,"ajax:stopped"),!1))},e.formSubmitButtonClick=function(){var t,e;if(t=this,e=t.form)return t.name&&c(e,"ujs:submit-button",{name:t.name,value:t.value}),c(e,"ujs:formnovalidate-button",t.formNoValidate),c(e,"ujs:submit-button-formaction",t.getAttribute("formaction")),c(e,"ujs:submit-button-formmethod",t.getAttribute("formmethod"))},e.handleMetaClick=function(t){var e,n,o;if(n=this,o=(n.getAttribute("data-method")||"GET").toUpperCase(),e=n.getAttribute("data-params"),(t.metaKey||t.ctrlKey)&&"GET"===o&&!e)return t.stopImmediatePropagation()}}.call(this),function(){var t,n,o,r,i,s,a,c,u,l,h,p,d,f;s=e.fire,o=e.delegate,c=e.getData,t=e.$,f=e.refreshCSRFTokens,n=e.CSRFProtection,i=e.enableElement,r=e.disableElement,l=e.handleDisabledElement,u=e.handleConfirm,d=e.handleRemote,a=e.formSubmitButtonClick,h=e.handleMetaClick,p=e.handleMethod,"undefined"==typeof jQuery||null===jQuery||null==jQuery.ajax||jQuery.rails||(jQuery.rails=e,jQuery.ajaxPrefilter(function(t,e,o){if(!t.crossDomain)return n(o)})),e.start=function(){if(window._rails_loaded)throw new Error("rails-ujs has already been loaded!");return window.addEventListener("pageshow",function(){return t(e.formEnableSelector).forEach(function(t){if(c(t,"ujs:disabled"))return i(t)}),t(e.linkDisableSelector).forEach(function(t){if(c(t,"ujs:disabled"))return i(t)})}),o(document,e.linkDisableSelector,"ajax:complete",i),o(document,e.linkDisableSelector,"ajax:stopped",i),o(document,e.buttonDisableSelector,"ajax:complete",i),o(document,e.buttonDisableSelector,"ajax:stopped",i),o(document,e.linkClickSelector,"click",l),o(document,e.linkClickSelector,"click",u),o(document,e.linkClickSelector,"click",h),o(document,e.linkClickSelector,"click",r),o(document,e.linkClickSelector,"click",d),o(document,e.linkClickSelector,"click",p),o(document,e.buttonClickSelector,"click",l),o(document,e.buttonClickSelector,"click",u),o(document,e.buttonClickSelector,"click",r),o(document,e.buttonClickSelector,"click",d),o(document,e.inputChangeSelector,"change",l),o(document,e.inputChangeSelector,"change",u),o(document,e.inputChangeSelector,"change",d),o(document,e.formSubmitSelector,"submit",l),o(document,e.formSubmitSelector,"submit",u),o(document,e.formSubmitSelector,"submit",d),o(document,e.formSubmitSelector,"submit",function(t){return setTimeout(function(){return r(t)},13)}),o(document,e.formSubmitSelector,"ajax:send",r),o(document,e.formSubmitSelector,"ajax:complete",i),o(document,e.formInputClickSelector,"click",l),o(document,e.formInputClickSelector,"click",u),o(document,e.formInputClickSelector,"click",a),document.addEventListener("DOMContentLoaded",f),window._rails_loaded=!0},window.Rails===e&&s(document,"rails:attachBindings")&&e.start()}.call(this)}).call(this),"object"==typeof module&&module.exports?module.exports=e:"function"==typeof define&&define.amd&&define(e)}).call(this),function(){(function(){(function(){this.Turbolinks={supported:function(){return null!=window.history.pushState&&null!=window.requestAnimationFrame&&null!=window.addEventListener}(),visit:function(e,n){return t.controller.visit(e,n)},clearCache:function(){return t.controller.clearCache()}}}).call(this)}).call(this);var t=this.Turbolinks;(function(){(function(){var e,n,o=[].slice;t.copyObject=function(t){var e,n,o;n={};for(e in t)o=t[e],n[e]=o;return n},t.closest=function(t,n){return e.call(t,n)},e=function(){var t,e;return t=document.documentElement,null!=(e=t.closest)?e:function(t){var e;for(e=this;e;){if(e.nodeType===Node.ELEMENT_NODE&&n.call(e,t))return e;e=e.parentNode}}}(),t.defer=function(t){return setTimeout(t,1)},t.throttle=function(t){var e;return e=null,function(){var n;return n=1<=arguments.length?o.call(arguments,0):[],null!=e?e:e=requestAnimationFrame(function(o){return function(){return e=null,t.apply(o,n)}}(this))}},t.dispatch=function(t,e){var n,o,r,i,s;return i=null!=e?e:{},s=i.target,n=i.cancelable,o=i.data,r=document.createEvent("Events"),r.initEvent(t,!0,!0===n),r.data=null!=o?o:{},(null!=s?s:document).dispatchEvent(r),r},t.match=function(t,e){return n.call(t,e)},n=function(){var t,e,n,o;return t=document.documentElement,null!=(e=null!=(n=null!=(o=t.matchesSelector)?o:t.webkitMatchesSelector)?n:t.msMatchesSelector)?e:t.mozMatchesSelector}(),t.uuid=function(){var t,e,n;for(n="",t=e=1;36>=e;t=++e)n+=9===t||14===t||19===t||24===t?"-":15===t?"4":20===t?(Math.floor(4*Math.random())+8).toString(16):Math.floor(15*Math.random()).toString(16);return n}}).call(this),function(){t.Location=function(){function t(t){var e,n;null==t&&(t=""),n=document.createElement("a"),n.href=t.toString(),this.absoluteURL=n.href,e=n.hash.length,2>e?this.requestURL=this.absoluteURL:(this.requestURL=this.absoluteURL.slice(0,-e),this.anchor=n.hash.slice(1))}var e,n,o,r;return t.wrap=function(t){return t instanceof this?t:new this(t)},t.prototype.getOrigin=function(){return this.absoluteURL.split("/",3).join("/")},t.prototype.getPath=function(){var t,e;return null!=(t=null!=(e=this.absoluteURL.match(/\/\/[^\/]*(\/[^?;]*)/))?e[1]:void 0)?t:"/"},t.prototype.getPathComponents=function(){return this.getPath().split("/").slice(1)},t.prototype.getLastPathComponent=function(){return this.getPathComponents().slice(-1)[0]},t.prototype.getExtension=function(){var t,e;return null!=(t=null!=(e=this.getLastPathComponent().match(/\.[^.]*$/))?e[0]:void 0)?t:""},t.prototype.isHTML=function(){return this.getExtension().match(/^(?:|\.(?:htm|html|xhtml))$/)},t.prototype.isPrefixedBy=function(t){var e;return e=n(t),this.isEqualTo(t)||r(this.absoluteURL,e)},t.prototype.isEqualTo=function(t){return this.absoluteURL===(null!=t?t.absoluteURL:void 0)},t.prototype.toCacheKey=function(){return this.requestURL},t.prototype.toJSON=function(){return this.absoluteURL},t.prototype.toString=function(){return this.absoluteURL},t.prototype.valueOf=function(){return this.absoluteURL},n=function(t){return e(t.getOrigin()+t.getPath())},e=function(t){return o(t,"/")?t:t+"/"},r=function(t,e){return t.slice(0,e.length)===e},o=function(t,e){return t.slice(-e.length)===e},t}()}.call(this),function(){var e=function(t,e){return function(){return t.apply(e,arguments)}};t.HttpRequest=function(){function n(n,o,r){this.delegate=n,this.requestCanceled=e(this.requestCanceled,this),this.requestTimedOut=e(this.requestTimedOut,this),this.requestFailed=e(this.requestFailed,this),this.requestLoaded=e(this.requestLoaded,this),this.requestProgressed=e(this.requestProgressed,this),this.url=t.Location.wrap(o).requestURL,this.referrer=t.Location.wrap(r).absoluteURL,this.createXHR()}return n.NETWORK_FAILURE=0,n.TIMEOUT_FAILURE=-1,n.timeout=60,n.prototype.send=function(){var t;return this.xhr&&!this.sent?(this.notifyApplicationBeforeRequestStart(),this.setProgress(0),this.xhr.send(),this.sent=!0,"function"==typeof(t=this.delegate).requestStarted?t.requestStarted():void 0):void 0},n.prototype.cancel=function(){return this.xhr&&this.sent?this.xhr.abort():void 0},n.prototype.requestProgressed=function(t){return t.lengthComputable?this.setProgress(t.loaded/t.total):void 0},n.prototype.requestLoaded=function(){return this.endRequest(function(t){return function(){var e;return 200<=(e=t.xhr.status)&&300>e?t.delegate.requestCompletedWithResponse(t.xhr.responseText,t.xhr.getResponseHeader("Turbolinks-Location")):(t.failed=!0,t.delegate.requestFailedWithStatusCode(t.xhr.status,t.xhr.responseText))}}(this))},n.prototype.requestFailed=function(){return this.endRequest(function(t){return function(){return t.failed=!0,t.delegate.requestFailedWithStatusCode(t.constructor.NETWORK_FAILURE)}}(this))},n.prototype.requestTimedOut=function(){return this.endRequest(function(t){return function(){return t.failed=!0,t.delegate.requestFailedWithStatusCode(t.constructor.TIMEOUT_FAILURE)}}(this))},n.prototype.requestCanceled=function(){return this.endRequest()},n.prototype.notifyApplicationBeforeRequestStart=function(){return t.dispatch("turbolinks:request-start",{data:{url:this.url,xhr:this.xhr}})},n.prototype.notifyApplicationAfterRequestEnd=function(){return t.dispatch("turbolinks:request-end",{data:{url:this.url,xhr:this.xhr}})},n.prototype.createXHR=function(){return this.xhr=new XMLHttpRequest,this.xhr.open("GET",this.url,!0),this.xhr.timeout=1e3*this.constructor.timeout,this.xhr.setRequestHeader("Accept","text/html, application/xhtml+xml"),this.xhr.setRequestHeader("Turbolinks-Referrer",this.referrer),this.xhr.onprogress=this.requestProgressed,this.xhr.onload=this.requestLoaded,this.xhr.onerror=this.requestFailed,this.xhr.ontimeout=this.requestTimedOut,this.xhr.onabort=this.requestCanceled},n.prototype.endRequest=function(t){return this.xhr?(this.notifyApplicationAfterRequestEnd(),null!=t&&t.call(this),this.destroy()):void 0},n.prototype.setProgress=function(t){var e;return this.progress=t,"function"==typeof(e=this.delegate).requestProgressed?e.requestProgressed(this.progress):void 0},n.prototype.destroy=function(){var t;return this.setProgress(1),"function"==typeof(t=this.delegate).requestFinished&&t.requestFinished(),this.delegate=null,this.xhr=null},n}()}.call(this),function(){var e=function(t,e){return function(){return t.apply(e,arguments)}};t.ProgressBar=function(){function t(){this.trickle=e(this.trickle,this),this.stylesheetElement=this.createStylesheetElement(),this.progressElement=this.createProgressElement()}var n;return n=300,t.defaultCSS=".turbolinks-progress-bar {\n position: fixed;\n display: block;\n top: 0;\n left: 0;\n height: 3px;\n background: #0076ff;\n z-index: 9999;\n transition: width "+n+"ms ease-out, opacity "+n/2+"ms "+n/2+"ms ease-in;\n transform: translate3d(0, 0, 0);\n}",t.prototype.show=function(){return this.visible?void 0:(this.visible=!0,this.installStylesheetElement(),this.installProgressElement(),this.startTrickling())},t.prototype.hide=function(){return this.visible&&!this.hiding?(this.hiding=!0,this.fadeProgressElement(function(t){return function(){return t.uninstallProgressElement(),t.stopTrickling(),t.visible=!1,t.hiding=!1}}(this))):void 0},t.prototype.setValue=function(t){return this.value=t,this.refresh()},t.prototype.installStylesheetElement=function(){return document.head.insertBefore(this.stylesheetElement,document.head.firstChild)},t.prototype.installProgressElement=function(){return this.progressElement.style.width=0,this.progressElement.style.opacity=1,document.documentElement.insertBefore(this.progressElement,document.body),this.refresh()},t.prototype.fadeProgressElement=function(t){return this.progressElement.style.opacity=0,setTimeout(t,1.5*n)},t.prototype.uninstallProgressElement=function(){return this.progressElement.parentNode?document.documentElement.removeChild(this.progressElement):void 0},t.prototype.startTrickling=function(){return null!=this.trickleInterval?this.trickleInterval:this.trickleInterval=setInterval(this.trickle,n)},t.prototype.stopTrickling=function(){return clearInterval(this.trickleInterval),this.trickleInterval=null},t.prototype.trickle=function(){return this.setValue(this.value+Math.random()/100)},t.prototype.refresh=function(){return requestAnimationFrame(function(t){return function(){return t.progressElement.style.width=10+90*t.value+"%"}}(this))},t.prototype.createStylesheetElement=function(){var t;return t=document.createElement("style"),t.type="text/css",t.textContent=this.constructor.defaultCSS,t},t.prototype.createProgressElement=function(){var t;return t=document.createElement("div"),t.className="turbolinks-progress-bar",t},t}()}.call(this),function(){var e=function(t,e){return function(){return t.apply(e,arguments)}};t.BrowserAdapter=function(){function n(n){this.controller=n,this.showProgressBar=e(this.showProgressBar,this),this.progressBar=new t.ProgressBar}var o,r,i,s;return s=t.HttpRequest,o=s.NETWORK_FAILURE,i=s.TIMEOUT_FAILURE,r=500,n.prototype.visitProposedToLocationWithAction=function(t,e){return this.controller.startVisitToLocationWithAction(t,e)},n.prototype.visitStarted=function(t){return t.issueRequest(),t.changeHistory(),t.loadCachedSnapshot()},n.prototype.visitRequestStarted=function(t){return this.progressBar.setValue(0),t.hasCachedSnapshot()||"restore"!==t.action?this.showProgressBarAfterDelay():this.showProgressBar()},n.prototype.visitRequestProgressed=function(t){return this.progressBar.setValue(t.progress)},n.prototype.visitRequestCompleted=function(t){return t.loadResponse()},n.prototype.visitRequestFailedWithStatusCode=function(t,e){switch(e){case o:case i:return this.reload();default:return t.loadResponse()}},n.prototype.visitRequestFinished=function(){return this.hideProgressBar()},n.prototype.visitCompleted=function(t){return t.followRedirect()},n.prototype.pageInvalidated=function(){return this.reload()},n.prototype.showProgressBarAfterDelay=function(){return this.progressBarTimeout=setTimeout(this.showProgressBar,r)},n.prototype.showProgressBar=function(){return this.progressBar.show()},n.prototype.hideProgressBar=function(){return this.progressBar.hide(),clearTimeout(this.progressBarTimeout)},n.prototype.reload=function(){return window.location.reload()},n}()}.call(this),function(){var e=function(t,e){return function(){return t.apply(e,arguments)}};t.History=function(){function n(t){this.delegate=t,this.onPageLoad=e(this.onPageLoad,this),this.onPopState=e(this.onPopState,this)}return n.prototype.start=function(){return this.started?void 0:(addEventListener("popstate",this.onPopState,!1),addEventListener("load",this.onPageLoad,!1),this.started=!0)},n.prototype.stop=function(){return this.started?(removeEventListener("popstate",this.onPopState,!1),removeEventListener("load",this.onPageLoad,!1),this.started=!1):void 0},n.prototype.push=function(e,n){return e=t.Location.wrap(e),this.update("push",e,n)},n.prototype.replace=function(e,n){return e=t.Location.wrap(e),this.update("replace",e,n)},n.prototype.onPopState=function(e){var n,o,r,i;return this.shouldHandlePopState()&&(i=null!=(o=e.state)?o.turbolinks:void 0)?(n=t.Location.wrap(window.location),r=i.restorationIdentifier,this.delegate.historyPoppedToLocationWithRestorationIdentifier(n,r)):void 0},n.prototype.onPageLoad=function(){return t.defer(function(t){return function(){return t.pageLoaded=!0}}(this))},n.prototype.shouldHandlePopState=function(){return this.pageIsLoaded()},n.prototype.pageIsLoaded=function(){return this.pageLoaded||"complete"===document.readyState},n.prototype.update=function(t,e,n){var o;return o={turbolinks:{restorationIdentifier:n}},history[t+"State"](o,null,e)},n}()}.call(this),function(){t.Snapshot=function(){function e(t){var e,n;n=t.head,e=t.body,this.head=null!=n?n:document.createElement("head"),this.body=null!=e?e:document.createElement("body")}return e.wrap=function(t){return t instanceof this?t:this.fromHTML(t)},e.fromHTML=function(t){var e;return e=document.createElement("html"),e.innerHTML=t,this.fromElement(e)},e.fromElement=function(t){return new this({head:t.querySelector("head"),body:t.querySelector("body")})},e.prototype.clone=function(){return new e({head:this.head.cloneNode(!0),body:this.body.cloneNode(!0)})},e.prototype.getRootLocation=function(){var e,n;return n=null!=(e=this.getSetting("root"))?e:"/",new t.Location(n)},e.prototype.getCacheControlValue=function(){return this.getSetting("cache-control")},e.prototype.hasAnchor=function(t){try{return null!=this.body.querySelector("[id='"+t+"']")}catch(t){}},e.prototype.isPreviewable=function(){return"no-preview"!==this.getCacheControlValue()},e.prototype.isCacheable=function(){return"no-cache"!==this.getCacheControlValue()},e.prototype.getSetting=function(t){var e,n;return n=this.head.querySelectorAll("meta[name='turbolinks-"+t+"']"),e=n[n.length-1],null!=e?e.getAttribute("content"):void 0},e}()}.call(this),function(){var e=[].slice;t.Renderer=function(){function t(){}var n;return t.render=function(){var t,n,o,r;return o=arguments[0],n=arguments[1],t=3<=arguments.length?e.call(arguments,2):[],r=function(t,e,n){n.prototype=t.prototype;var o=new n,r=t.apply(o,e);return Object(r)===r?r:o}(this,t,function(){}),r.delegate=o,r.render(n),r},t.prototype.renderView=function(t){return this.delegate.viewWillRender(this.newBody),t(),this.delegate.viewRendered(this.newBody)},t.prototype.invalidateView=function(){return this.delegate.viewInvalidated()},t.prototype.createScriptElement=function(t){var e;return"false"===t.getAttribute("data-turbolinks-eval")?t:(e=document.createElement("script"),e.textContent=t.textContent,n(e,t),e)},n=function(t,e){var n,o,r,i,s,a,c;for(i=e.attributes,a=[],n=0,o=i.length;o>n;n++)s=i[n],r=s.name,c=s.value,a.push(t.setAttribute(r,c));return a},t}()}.call(this),function(){t.HeadDetails=function(){function t(t){var e,n,i,s,a,c,u;for(this.element=t,this.elements={},u=this.element.childNodes,s=0,c=u.length;c>s;s++)i=u[s],i.nodeType===Node.ELEMENT_NODE&&(a=i.outerHTML,n=null!=(e=this.elements)[a]?e[a]:e[a]={type:r(i),tracked:o(i),elements:[]},n.elements.push(i))}var e,n,o,r;return t.prototype.hasElementWithKey=function(t){return t in this.elements},t.prototype.getTrackedElementSignature=function(){var t,e;return function(){var n,o;n=this.elements,o=[];for(t in n)(e=n[t].tracked)&&o.push(t);return o}.call(this).join("")},t.prototype.getScriptElementsNotInDetails=function(t){return this.getElementsMatchingTypeNotInDetails("script",t)},t.prototype.getStylesheetElementsNotInDetails=function(t){return this.getElementsMatchingTypeNotInDetails("stylesheet",t)},t.prototype.getElementsMatchingTypeNotInDetails=function(t,e){var n,o,r,i,s,a;r=this.elements,s=[];for(o in r)i=r[o],a=i.type,n=i.elements,a!==t||e.hasElementWithKey(o)||s.push(n[0]);return s},t.prototype.getProvisionalElements=function(){var t,e,n,o,r,i,s;n=[],o=this.elements;for(e in o)r=o[e],s=r.type,i=r.tracked,t=r.elements,null!=s||i?t.length>1&&n.push.apply(n,t.slice(1)):n.push.apply(n,t);return n},r=function(t){return e(t)?"script":n(t)?"stylesheet":void 0},o=function(t){return"reload"===t.getAttribute("data-turbolinks-track")},e=function(t){return"script"===t.tagName.toLowerCase()},n=function(t){var e;return"style"===(e=t.tagName.toLowerCase())||"link"===e&&"stylesheet"===t.getAttribute("rel")},t}()}.call(this),function(){var e=function(t,e){function o(){this.constructor=t}for(var r in e)n.call(e,r)&&(t[r]=e[r]);return o.prototype=e.prototype,t.prototype=new o,t.__super__=e.prototype,t},n={}.hasOwnProperty;t.SnapshotRenderer=function(n){function o(e,n){this.currentSnapshot=e,this.newSnapshot=n,this.currentHeadDetails=new t.HeadDetails(this.currentSnapshot.head),this.newHeadDetails=new t.HeadDetails(this.newSnapshot.head),this.newBody=this.newSnapshot.body}return e(o,n),o.prototype.render=function(t){return this.trackedElementsAreIdentical()?(this.mergeHead(),this.renderView(function(e){return function(){return e.replaceBody(),e.focusFirstAutofocusableElement(),t()}}(this))):this.invalidateView()},o.prototype.mergeHead=function(){return this.copyNewHeadStylesheetElements(),this.copyNewHeadScriptElements(),this.removeCurrentHeadProvisionalElements(),this.copyNewHeadProvisionalElements()},o.prototype.replaceBody=function(){return this.activateBodyScriptElements(),this.importBodyPermanentElements(),this.assignNewBody()},o.prototype.trackedElementsAreIdentical=function(){return this.currentHeadDetails.getTrackedElementSignature()===this.newHeadDetails.getTrackedElementSignature()},o.prototype.copyNewHeadStylesheetElements=function(){var t,e,n,o,r;for(o=this.getNewHeadStylesheetElements(),r=[],e=0,n=o.length;n>e;e++)t=o[e],r.push(document.head.appendChild(t));return r},o.prototype.copyNewHeadScriptElements=function(){var t,e,n,o,r;for(o=this.getNewHeadScriptElements(),r=[],e=0,n=o.length;n>e;e++)t=o[e],r.push(document.head.appendChild(this.createScriptElement(t)));return r},o.prototype.removeCurrentHeadProvisionalElements=function(){var t,e,n,o,r;for(o=this.getCurrentHeadProvisionalElements(),r=[],e=0,n=o.length;n>e;e++)t=o[e],r.push(document.head.removeChild(t));return r},o.prototype.copyNewHeadProvisionalElements=function(){var t,e,n,o,r;for(o=this.getNewHeadProvisionalElements(),r=[],e=0,n=o.length;n>e;e++)t=o[e],r.push(document.head.appendChild(t));return r},o.prototype.importBodyPermanentElements=function(){var t,e,n,o,r,i;for(o=this.getNewBodyPermanentElements(),i=[],e=0,n=o.length;n>e;e++)r=o[e],(t=this.findCurrentBodyPermanentElement(r))?i.push(r.parentNode.replaceChild(t,r)):i.push(void 0);return i},o.prototype.activateBodyScriptElements=function(){var t,e,n,o,r,i;for(o=this.getNewBodyScriptElements(),i=[],e=0,n=o.length;n>e;e++)r=o[e],t=this.createScriptElement(r),i.push(r.parentNode.replaceChild(t,r));return i},o.prototype.assignNewBody=function(){return document.body=this.newBody},o.prototype.focusFirstAutofocusableElement=function(){var t;return null!=(t=this.findFirstAutofocusableElement())?t.focus():void 0},o.prototype.getNewHeadStylesheetElements=function(){return this.newHeadDetails.getStylesheetElementsNotInDetails(this.currentHeadDetails)},o.prototype.getNewHeadScriptElements=function(){return this.newHeadDetails.getScriptElementsNotInDetails(this.currentHeadDetails)},o.prototype.getCurrentHeadProvisionalElements=function(){return this.currentHeadDetails.getProvisionalElements()},o.prototype.getNewHeadProvisionalElements=function(){return this.newHeadDetails.getProvisionalElements()},o.prototype.getNewBodyPermanentElements=function(){return this.newBody.querySelectorAll("[id][data-turbolinks-permanent]")},o.prototype.findCurrentBodyPermanentElement=function(t){return document.body.querySelector("#"+t.id+"[data-turbolinks-permanent]")},o.prototype.getNewBodyScriptElements=function(){return this.newBody.querySelectorAll("script")},o.prototype.findFirstAutofocusableElement=function(){return document.body.querySelector("[autofocus]")},o}(t.Renderer)}.call(this),function(){var e=function(t,e){function o(){this.constructor=t}for(var r in e)n.call(e,r)&&(t[r]=e[r]);return o.prototype=e.prototype,t.prototype=new o,t.__super__=e.prototype,t},n={}.hasOwnProperty;t.ErrorRenderer=function(t){function n(t){this.html=t}return e(n,t),n.prototype.render=function(t){return this.renderView(function(e){return function(){return e.replaceDocumentHTML(),e.activateBodyScriptElements(),t()}}(this))},n.prototype.replaceDocumentHTML=function(){return document.documentElement.innerHTML=this.html},n.prototype.activateBodyScriptElements=function(){var t,e,n,o,r,i;for(o=this.getScriptElements(),i=[],e=0,n=o.length;n>e;e++)r=o[e],t=this.createScriptElement(r),i.push(r.parentNode.replaceChild(t,r));return i},n.prototype.getScriptElements=function(){return document.documentElement.querySelectorAll("script")},n}(t.Renderer)}.call(this),function(){t.View=function(){function e(t){this.delegate=t,this.element=document.documentElement}return e.prototype.getRootLocation=function(){return this.getSnapshot().getRootLocation()},e.prototype.getSnapshot=function(){return t.Snapshot.fromElement(this.element)},e.prototype.render=function(t,e){var n,o,r;return r=t.snapshot, +n=t.error,o=t.isPreview,this.markAsPreview(o),null!=r?this.renderSnapshot(r,e):this.renderError(n,e)},e.prototype.markAsPreview=function(t){return t?this.element.setAttribute("data-turbolinks-preview",""):this.element.removeAttribute("data-turbolinks-preview")},e.prototype.renderSnapshot=function(e,n){return t.SnapshotRenderer.render(this.delegate,n,this.getSnapshot(),t.Snapshot.wrap(e))},e.prototype.renderError=function(e,n){return t.ErrorRenderer.render(this.delegate,n,e)},e}()}.call(this),function(){var e=function(t,e){return function(){return t.apply(e,arguments)}};t.ScrollManager=function(){function n(n){this.delegate=n,this.onScroll=e(this.onScroll,this),this.onScroll=t.throttle(this.onScroll)}return n.prototype.start=function(){return this.started?void 0:(addEventListener("scroll",this.onScroll,!1),this.onScroll(),this.started=!0)},n.prototype.stop=function(){return this.started?(removeEventListener("scroll",this.onScroll,!1),this.started=!1):void 0},n.prototype.scrollToElement=function(t){return t.scrollIntoView()},n.prototype.scrollToPosition=function(t){var e,n;return e=t.x,n=t.y,window.scrollTo(e,n)},n.prototype.onScroll=function(){return this.updatePosition({x:window.pageXOffset,y:window.pageYOffset})},n.prototype.updatePosition=function(t){var e;return this.position=t,null!=(e=this.delegate)?e.scrollPositionChanged(this.position):void 0},n}()}.call(this),function(){t.SnapshotCache=function(){function e(t){this.size=t,this.keys=[],this.snapshots={}}var n;return e.prototype.has=function(t){return n(t)in this.snapshots},e.prototype.get=function(t){var e;if(this.has(t))return e=this.read(t),this.touch(t),e},e.prototype.put=function(t,e){return this.write(t,e),this.touch(t),e},e.prototype.read=function(t){var e;return e=n(t),this.snapshots[e]},e.prototype.write=function(t,e){var o;return o=n(t),this.snapshots[o]=e},e.prototype.touch=function(t){var e,o;return o=n(t),e=this.keys.indexOf(o),e>-1&&this.keys.splice(e,1),this.keys.unshift(o),this.trim()},e.prototype.trim=function(){var t,e,n,o,r;for(o=this.keys.splice(this.size),r=[],t=0,n=o.length;n>t;t++)e=o[t],r.push(delete this.snapshots[e]);return r},n=function(e){return t.Location.wrap(e).toCacheKey()},e}()}.call(this),function(){var e=function(t,e){return function(){return t.apply(e,arguments)}};t.Visit=function(){function n(n,o,r){this.controller=n,this.action=r,this.performScroll=e(this.performScroll,this),this.identifier=t.uuid(),this.location=t.Location.wrap(o),this.adapter=this.controller.adapter,this.state="initialized",this.timingMetrics={}}var o;return n.prototype.start=function(){return"initialized"===this.state?(this.recordTimingMetric("visitStart"),this.state="started",this.adapter.visitStarted(this)):void 0},n.prototype.cancel=function(){var t;return"started"===this.state?(null!=(t=this.request)&&t.cancel(),this.cancelRender(),this.state="canceled"):void 0},n.prototype.complete=function(){var t;return"started"===this.state?(this.recordTimingMetric("visitEnd"),this.state="completed","function"==typeof(t=this.adapter).visitCompleted&&t.visitCompleted(this),this.controller.visitCompleted(this)):void 0},n.prototype.fail=function(){var t;return"started"===this.state?(this.state="failed","function"==typeof(t=this.adapter).visitFailed?t.visitFailed(this):void 0):void 0},n.prototype.changeHistory=function(){var t,e;return this.historyChanged?void 0:(t=this.location.isEqualTo(this.referrer)?"replace":this.action,e=o(t),this.controller[e](this.location,this.restorationIdentifier),this.historyChanged=!0)},n.prototype.issueRequest=function(){return this.shouldIssueRequest()&&null==this.request?(this.progress=0,this.request=new t.HttpRequest(this,this.location,this.referrer),this.request.send()):void 0},n.prototype.getCachedSnapshot=function(){var t;return!(t=this.controller.getCachedSnapshotForLocation(this.location))||null!=this.location.anchor&&!t.hasAnchor(this.location.anchor)||"restore"!==this.action&&!t.isPreviewable()?void 0:t},n.prototype.hasCachedSnapshot=function(){return null!=this.getCachedSnapshot()},n.prototype.loadCachedSnapshot=function(){var t,e;return(e=this.getCachedSnapshot())?(t=this.shouldIssueRequest(),this.render(function(){var n;return this.cacheSnapshot(),this.controller.render({snapshot:e,isPreview:t},this.performScroll),"function"==typeof(n=this.adapter).visitRendered&&n.visitRendered(this),t?void 0:this.complete()})):void 0},n.prototype.loadResponse=function(){return null!=this.response?this.render(function(){var t,e;return this.cacheSnapshot(),this.request.failed?(this.controller.render({error:this.response},this.performScroll),"function"==typeof(t=this.adapter).visitRendered&&t.visitRendered(this),this.fail()):(this.controller.render({snapshot:this.response},this.performScroll),"function"==typeof(e=this.adapter).visitRendered&&e.visitRendered(this),this.complete())}):void 0},n.prototype.followRedirect=function(){return this.redirectedToLocation&&!this.followedRedirect?(this.location=this.redirectedToLocation,this.controller.replaceHistoryWithLocationAndRestorationIdentifier(this.redirectedToLocation,this.restorationIdentifier),this.followedRedirect=!0):void 0},n.prototype.requestStarted=function(){var t;return this.recordTimingMetric("requestStart"),"function"==typeof(t=this.adapter).visitRequestStarted?t.visitRequestStarted(this):void 0},n.prototype.requestProgressed=function(t){var e;return this.progress=t,"function"==typeof(e=this.adapter).visitRequestProgressed?e.visitRequestProgressed(this):void 0},n.prototype.requestCompletedWithResponse=function(e,n){return this.response=e,null!=n&&(this.redirectedToLocation=t.Location.wrap(n)),this.adapter.visitRequestCompleted(this)},n.prototype.requestFailedWithStatusCode=function(t,e){return this.response=e,this.adapter.visitRequestFailedWithStatusCode(this,t)},n.prototype.requestFinished=function(){var t;return this.recordTimingMetric("requestEnd"),"function"==typeof(t=this.adapter).visitRequestFinished?t.visitRequestFinished(this):void 0},n.prototype.performScroll=function(){return this.scrolled?void 0:("restore"===this.action?this.scrollToRestoredPosition()||this.scrollToTop():this.scrollToAnchor()||this.scrollToTop(),this.scrolled=!0)},n.prototype.scrollToRestoredPosition=function(){var t,e;return t=null!=(e=this.restorationData)?e.scrollPosition:void 0,null!=t?(this.controller.scrollToPosition(t),!0):void 0},n.prototype.scrollToAnchor=function(){return null!=this.location.anchor?(this.controller.scrollToAnchor(this.location.anchor),!0):void 0},n.prototype.scrollToTop=function(){return this.controller.scrollToPosition({x:0,y:0})},n.prototype.recordTimingMetric=function(t){var e;return null!=(e=this.timingMetrics)[t]?e[t]:e[t]=(new Date).getTime()},n.prototype.getTimingMetrics=function(){return t.copyObject(this.timingMetrics)},o=function(t){switch(t){case"replace":return"replaceHistoryWithLocationAndRestorationIdentifier";case"advance":case"restore":return"pushHistoryWithLocationAndRestorationIdentifier"}},n.prototype.shouldIssueRequest=function(){return"restore"!==this.action||!this.hasCachedSnapshot()},n.prototype.cacheSnapshot=function(){return this.snapshotCached?void 0:(this.controller.cacheSnapshot(),this.snapshotCached=!0)},n.prototype.render=function(t){return this.cancelRender(),this.frame=requestAnimationFrame(function(e){return function(){return e.frame=null,t.call(e)}}(this))},n.prototype.cancelRender=function(){return this.frame?cancelAnimationFrame(this.frame):void 0},n}()}.call(this),function(){var e=function(t,e){return function(){return t.apply(e,arguments)}};t.Controller=function(){function n(){this.clickBubbled=e(this.clickBubbled,this),this.clickCaptured=e(this.clickCaptured,this),this.pageLoaded=e(this.pageLoaded,this),this.history=new t.History(this),this.view=new t.View(this),this.scrollManager=new t.ScrollManager(this),this.restorationData={},this.clearCache()}return n.prototype.start=function(){return t.supported&&!this.started?(addEventListener("click",this.clickCaptured,!0),addEventListener("DOMContentLoaded",this.pageLoaded,!1),this.scrollManager.start(),this.startHistory(),this.started=!0,this.enabled=!0):void 0},n.prototype.disable=function(){return this.enabled=!1},n.prototype.stop=function(){return this.started?(removeEventListener("click",this.clickCaptured,!0),removeEventListener("DOMContentLoaded",this.pageLoaded,!1),this.scrollManager.stop(),this.stopHistory(),this.started=!1):void 0},n.prototype.clearCache=function(){return this.cache=new t.SnapshotCache(10)},n.prototype.visit=function(e,n){var o,r;return null==n&&(n={}),e=t.Location.wrap(e),this.applicationAllowsVisitingLocation(e)?this.locationIsVisitable(e)?(o=null!=(r=n.action)?r:"advance",this.adapter.visitProposedToLocationWithAction(e,o)):window.location=e:void 0},n.prototype.startVisitToLocationWithAction=function(e,n,o){var r;return t.supported?(r=this.getRestorationDataForIdentifier(o),this.startVisit(e,n,{restorationData:r})):window.location=e},n.prototype.startHistory=function(){return this.location=t.Location.wrap(window.location),this.restorationIdentifier=t.uuid(),this.history.start(),this.history.replace(this.location,this.restorationIdentifier)},n.prototype.stopHistory=function(){return this.history.stop()},n.prototype.pushHistoryWithLocationAndRestorationIdentifier=function(e,n){return this.restorationIdentifier=n,this.location=t.Location.wrap(e),this.history.push(this.location,this.restorationIdentifier)},n.prototype.replaceHistoryWithLocationAndRestorationIdentifier=function(e,n){return this.restorationIdentifier=n,this.location=t.Location.wrap(e),this.history.replace(this.location,this.restorationIdentifier)},n.prototype.historyPoppedToLocationWithRestorationIdentifier=function(e,n){var o;return this.restorationIdentifier=n,this.enabled?(o=this.getRestorationDataForIdentifier(this.restorationIdentifier),this.startVisit(e,"restore",{restorationIdentifier:this.restorationIdentifier,restorationData:o,historyChanged:!0}),this.location=t.Location.wrap(e)):this.adapter.pageInvalidated()},n.prototype.getCachedSnapshotForLocation=function(t){var e;return e=this.cache.get(t),e?e.clone():void 0},n.prototype.shouldCacheSnapshot=function(){return this.view.getSnapshot().isCacheable()},n.prototype.cacheSnapshot=function(){var t;return this.shouldCacheSnapshot()?(this.notifyApplicationBeforeCachingSnapshot(),t=this.view.getSnapshot(),this.cache.put(this.lastRenderedLocation,t.clone())):void 0},n.prototype.scrollToAnchor=function(t){var e;return(e=document.getElementById(t))?this.scrollToElement(e):this.scrollToPosition({x:0,y:0})},n.prototype.scrollToElement=function(t){return this.scrollManager.scrollToElement(t)},n.prototype.scrollToPosition=function(t){return this.scrollManager.scrollToPosition(t)},n.prototype.scrollPositionChanged=function(t){var e;return e=this.getCurrentRestorationData(),e.scrollPosition=t},n.prototype.render=function(t,e){return this.view.render(t,e)},n.prototype.viewInvalidated=function(){return this.adapter.pageInvalidated()},n.prototype.viewWillRender=function(t){return this.notifyApplicationBeforeRender(t)},n.prototype.viewRendered=function(){return this.lastRenderedLocation=this.currentVisit.location,this.notifyApplicationAfterRender()},n.prototype.pageLoaded=function(){return this.lastRenderedLocation=this.location,this.notifyApplicationAfterPageLoad()},n.prototype.clickCaptured=function(){return removeEventListener("click",this.clickBubbled,!1),addEventListener("click",this.clickBubbled,!1)},n.prototype.clickBubbled=function(t){var e,n,o;return this.enabled&&this.clickEventIsSignificant(t)&&(n=this.getVisitableLinkForNode(t.target))&&(o=this.getVisitableLocationForLink(n))&&this.applicationAllowsFollowingLinkToLocation(n,o)?(t.preventDefault(),e=this.getActionForLink(n),this.visit(o,{action:e})):void 0},n.prototype.applicationAllowsFollowingLinkToLocation=function(t,e){var n;return n=this.notifyApplicationAfterClickingLinkToLocation(t,e),!n.defaultPrevented},n.prototype.applicationAllowsVisitingLocation=function(t){var e;return e=this.notifyApplicationBeforeVisitingLocation(t),!e.defaultPrevented},n.prototype.notifyApplicationAfterClickingLinkToLocation=function(e,n){return t.dispatch("turbolinks:click",{target:e,data:{url:n.absoluteURL},cancelable:!0})},n.prototype.notifyApplicationBeforeVisitingLocation=function(e){return t.dispatch("turbolinks:before-visit",{data:{url:e.absoluteURL},cancelable:!0})},n.prototype.notifyApplicationAfterVisitingLocation=function(e){return t.dispatch("turbolinks:visit",{data:{url:e.absoluteURL}})},n.prototype.notifyApplicationBeforeCachingSnapshot=function(){return t.dispatch("turbolinks:before-cache")},n.prototype.notifyApplicationBeforeRender=function(e){return t.dispatch("turbolinks:before-render",{data:{newBody:e}})},n.prototype.notifyApplicationAfterRender=function(){return t.dispatch("turbolinks:render")},n.prototype.notifyApplicationAfterPageLoad=function(e){return null==e&&(e={}),t.dispatch("turbolinks:load",{data:{url:this.location.absoluteURL,timing:e}})},n.prototype.startVisit=function(t,e,n){var o;return null!=(o=this.currentVisit)&&o.cancel(),this.currentVisit=this.createVisit(t,e,n),this.currentVisit.start(),this.notifyApplicationAfterVisitingLocation(t)},n.prototype.createVisit=function(e,n,o){var r,i,s,a,c;return i=null!=o?o:{},a=i.restorationIdentifier,s=i.restorationData,r=i.historyChanged,c=new t.Visit(this,e,n),c.restorationIdentifier=null!=a?a:t.uuid(),c.restorationData=t.copyObject(s),c.historyChanged=r,c.referrer=this.location,c},n.prototype.visitCompleted=function(t){return this.notifyApplicationAfterPageLoad(t.getTimingMetrics())},n.prototype.clickEventIsSignificant=function(t){return!(t.defaultPrevented||t.target.isContentEditable||t.which>1||t.altKey||t.ctrlKey||t.metaKey||t.shiftKey)},n.prototype.getVisitableLinkForNode=function(e){return this.nodeIsVisitable(e)?t.closest(e,"a[href]:not([target]):not([download])"):void 0},n.prototype.getVisitableLocationForLink=function(e){var n;return n=new t.Location(e.getAttribute("href")),this.locationIsVisitable(n)?n:void 0},n.prototype.getActionForLink=function(t){var e;return null!=(e=t.getAttribute("data-turbolinks-action"))?e:"advance"},n.prototype.nodeIsVisitable=function(e){var n;return!(n=t.closest(e,"[data-turbolinks]"))||"false"!==n.getAttribute("data-turbolinks")},n.prototype.locationIsVisitable=function(t){return t.isPrefixedBy(this.view.getRootLocation())&&t.isHTML()},n.prototype.getCurrentRestorationData=function(){return this.getRestorationDataForIdentifier(this.restorationIdentifier)},n.prototype.getRestorationDataForIdentifier=function(t){var e;return null!=(e=this.restorationData)[t]?e[t]:e[t]={}},n}()}.call(this),function(){var e,n,o;t.start=function(){return n()?(null==t.controller&&(t.controller=e()),t.controller.start()):void 0},n=function(){return null==window.Turbolinks&&(window.Turbolinks=t),o()},e=function(){var e;return e=new t.Controller,e.adapter=new t.BrowserAdapter(e),e},(o=function(){return window.Turbolinks===t})()&&t.start()}.call(this)}).call(this),"object"==typeof module&&module.exports?module.exports=t:"function"==typeof define&&define.amd&&define(t)}.call(this),function(){var t=this;(function(){(function(){var t=[].slice;this.ActionCable={INTERNAL:{message_types:{welcome:"welcome",ping:"ping",confirmation:"confirm_subscription",rejection:"reject_subscription"},default_mount_path:"/cable",protocols:["actioncable-v1-json","actioncable-unsupported"]},WebSocket:window.WebSocket,logger:window.console,createConsumer:function(t){var n;return null==t&&(t=null!=(n=this.getConfig("url"))?n:this.INTERNAL.default_mount_path),new e.Consumer(this.createWebSocketURL(t))},getConfig:function(t){var e;return e=document.head.querySelector("meta[name='action-cable-"+t+"']"),null!=e?e.getAttribute("content"):void 0},createWebSocketURL:function(t){var e;return t&&!/^wss?:/i.test(t)?(e=document.createElement("a"),e.href=t,e.href=e.href,e.protocol=e.protocol.replace("http","ws"),e.href):t},startDebugging:function(){return this.debugging=!0},stopDebugging:function(){return this.debugging=null},log:function(){var e,n;if(e=1<=arguments.length?t.call(arguments,0):[],this.debugging)return e.push(Date.now()),(n=this.logger).log.apply(n,["[ActionCable]"].concat(t.call(e)))}}}).call(this)}).call(t);var e=t.ActionCable;(function(){(function(){var t=function(t,e){return function(){return t.apply(e,arguments)}};e.ConnectionMonitor=function(){function n(e){this.connection=e,this.visibilityDidChange=t(this.visibilityDidChange,this),this.reconnectAttempts=0}var o,r,i;return n.pollInterval={min:3,max:30},n.staleThreshold=6,n.prototype.start=function(){if(!this.isRunning())return this.startedAt=r(),delete this.stoppedAt,this.startPolling(),document.addEventListener("visibilitychange",this.visibilityDidChange),e.log("ConnectionMonitor started. pollInterval = "+this.getPollInterval()+" ms")},n.prototype.stop=function(){if(this.isRunning())return this.stoppedAt=r(),this.stopPolling(),document.removeEventListener("visibilitychange",this.visibilityDidChange),e.log("ConnectionMonitor stopped")},n.prototype.isRunning=function(){return null!=this.startedAt&&null==this.stoppedAt},n.prototype.recordPing=function(){return this.pingedAt=r()},n.prototype.recordConnect=function(){return this.reconnectAttempts=0,this.recordPing(),delete this.disconnectedAt,e.log("ConnectionMonitor recorded connect")},n.prototype.recordDisconnect=function(){return this.disconnectedAt=r(),e.log("ConnectionMonitor recorded disconnect")},n.prototype.startPolling=function(){return this.stopPolling(),this.poll()},n.prototype.stopPolling=function(){return clearTimeout(this.pollTimeout)},n.prototype.poll=function(){return this.pollTimeout=setTimeout(function(t){return function(){return t.reconnectIfStale(),t.poll()}}(this),this.getPollInterval())},n.prototype.getPollInterval=function(){var t,e,n,r;return r=this.constructor.pollInterval,n=r.min,e=r.max,t=5*Math.log(this.reconnectAttempts+1),Math.round(1e3*o(t,n,e))},n.prototype.reconnectIfStale=function(){if(this.connectionIsStale())return e.log("ConnectionMonitor detected stale connection. reconnectAttempts = "+this.reconnectAttempts+", pollInterval = "+this.getPollInterval()+" ms, time disconnected = "+i(this.disconnectedAt)+" s, stale threshold = "+this.constructor.staleThreshold+" s"),this.reconnectAttempts++,this.disconnectedRecently()?e.log("ConnectionMonitor skipping reopening recent disconnect"):(e.log("ConnectionMonitor reopening"),this.connection.reopen())},n.prototype.connectionIsStale=function(){var t;return i(null!=(t=this.pingedAt)?t:this.startedAt)>this.constructor.staleThreshold},n.prototype.disconnectedRecently=function(){return this.disconnectedAt&&i(this.disconnectedAt)=0},t.prototype.isState=function(){var t,e;return e=1<=arguments.length?s.call(arguments,0):[],t=this.getState(),c.call(e,t)>=0},t.prototype.getState=function(){var t,e;for(e in WebSocket)if(WebSocket[e]===(null!=(t=this.webSocket)?t.readyState:void 0))return e.toLowerCase();return null},t.prototype.installEventHandlers=function(){var t,e;for(t in this.events)e=this.events[t].bind(this),this.webSocket["on"+t]=e},t.prototype.uninstallEventHandlers=function(){var t;for(t in this.events)this.webSocket["on"+t]=function(){}},t.prototype.events={message:function(t){var e,o,r,i;if(this.isProtocolSupported())switch(r=JSON.parse(t.data),e=r.identifier,o=r.message,i=r.type,i){case n.welcome:return this.monitor.recordConnect(),this.subscriptions.reload();case n.ping:return this.monitor.recordPing();case n.confirmation:return this.subscriptions.notify(e,"connected");case n.rejection:return this.subscriptions.reject(e);default:return this.subscriptions.notify(e,"received",o)}},open:function(){if(e.log("WebSocket onopen event, using '"+this.getProtocol()+"' subprotocol"),this.disconnected=!1,!this.isProtocolSupported())return e.log("Protocol is unsupported. Stopping monitor and disconnecting."),this.close({allowReconnect:!1})},close:function(){if(e.log("WebSocket onclose event"),!this.disconnected)return this.disconnected=!0,this.monitor.recordDisconnect(),this.subscriptions.notifyAll("disconnected",{willAttemptReconnect:this.monitor.isRunning()})},error:function(){return e.log("WebSocket onerror event")}},t}()}.call(this),function(){var t=[].slice;e.Subscriptions=function(){function n(t){this.consumer=t,this.subscriptions=[]}return n.prototype.create=function(t,n){var o,r,i;return o=t,r="object"==typeof o?o:{channel:o},i=new e.Subscription(this.consumer,r,n),this.add(i)},n.prototype.add=function(t){return this.subscriptions.push(t),this.consumer.ensureActiveConnection(),this.notify(t,"initialized"),this.sendCommand(t,"subscribe"),t},n.prototype.remove=function(t){return this.forget(t),this.findAll(t.identifier).length||this.sendCommand(t,"unsubscribe"),t},n.prototype.reject=function(t){var e,n,o,r,i;for(o=this.findAll(t),r=[],e=0,n=o.length;eN+`>E))G^SW))?Cx{b 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 VIhwkWdG5eY|1Vo5iMTT4003f*VFLgF literal 0 HcmV?d00001 diff --git a/public/assets/application-f50b11ee4268ba84f9d098557ebab84f1be52b51586ecf842fd06a6489a2d4c4.css b/public/assets/application-f50b11ee4268ba84f9d098557ebab84f1be52b51586ecf842fd06a6489a2d4c4.css new file mode 100644 index 0000000000..e54fb85e19 --- /dev/null +++ b/public/assets/application-f50b11ee4268ba84f9d098557ebab84f1be52b51586ecf842fd06a6489a2d4c4.css @@ -0,0 +1 @@ +@import url("foundation.css");@import url("https://fonts.googleapis.com/css?family=Gudea:400,400i,700");@media print, screen and (min-width: 40em){.reveal,.reveal.tiny,.reveal.small,.reveal.large{right:auto;left:auto;margin:0 auto}}/*! normalize-scss | MIT/GPLv2 License | bit.ly/normalize-scss */html{font-family:sans-serif;line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:0.67em 0}figcaption,figure{display:block}figure{margin:1em 40px}hr{box-sizing:content-box;height:0;overflow:visible}main{display:block}pre{font-family:monospace, monospace;font-size:1em}a{background-color:transparent;-webkit-text-decoration-skip:objects}a:active,a:hover{outline-width:0}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:inherit}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace, monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button{overflow:visible}button,select{text-transform:none}button,html [type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}input{overflow:visible}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-cancel-button,[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{box-sizing:border-box;display:table;max-width:100%;padding:0;color:inherit;white-space:normal}progress{display:inline-block;vertical-align:baseline}textarea{overflow:auto}details{display:block}summary{display:list-item}menu{display:block}canvas{display:inline-block}template{display:none}[hidden]{display:none}.foundation-mq{font-family:"small=0em&medium=40em&large=64em&xlarge=75em&xxlarge=90em"}html{box-sizing:border-box;font-size:100%}*,*::before,*::after{box-sizing:inherit}body{margin:0;padding:0;background:#fefefe;font-family:'Gudea', sans-serif;font-weight:normal;line-height:1.5;color:#0a0a0a;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}img{display:inline-block;vertical-align:middle;max-width:100%;height:auto;-ms-interpolation-mode:bicubic}textarea{height:auto;min-height:50px;border-radius:0}select{box-sizing:border-box;width:100%;border-radius:0}.map_canvas img,.map_canvas embed,.map_canvas object,.mqa-display img,.mqa-display embed,.mqa-display object{max-width:none !important}button{padding:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;border-radius:0;background:transparent;line-height:1;cursor:auto}[data-whatinput='mouse'] button{outline:0}pre{overflow:auto}button,input,optgroup,select,textarea{font-family:inherit}.is-visible{display:block !important}.is-hidden{display:none !important}.grid-container{padding-right:0.625rem;padding-left:0.625rem;max-width:75rem;margin:0 auto}@media print, screen and (min-width: 40em){.grid-container{padding-right:0.9375rem;padding-left:0.9375rem}}.grid-container.fluid{padding-right:0.625rem;padding-left:0.625rem;max-width:100%;margin:0 auto}@media print, screen and (min-width: 40em){.grid-container.fluid{padding-right:0.9375rem;padding-left:0.9375rem}}.grid-container.full{padding-right:0;padding-left:0;max-width:100%;margin:0 auto}.grid-x{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap}.cell{-ms-flex:0 0 auto;flex:0 0 auto;min-height:0px;min-width:0px;width:100%}.cell.auto{-ms-flex:1 1 0px;flex:1 1 0px}.cell.shrink{-ms-flex:0 0 auto;flex:0 0 auto}.grid-x>.auto{width:auto}.grid-x>.shrink{width:auto}.grid-x>.small-shrink,.grid-x>.small-full,.grid-x>.small-1,.grid-x>.small-2,.grid-x>.small-3,.grid-x>.small-4,.grid-x>.small-5,.grid-x>.small-6,.grid-x>.small-7,.grid-x>.small-8,.grid-x>.small-9,.grid-x>.small-10,.grid-x>.small-11,.grid-x>.small-12{-ms-flex-preferred-size:auto;flex-basis:auto}@media print, screen and (min-width: 40em){.grid-x>.medium-shrink,.grid-x>.medium-full,.grid-x>.medium-1,.grid-x>.medium-2,.grid-x>.medium-3,.grid-x>.medium-4,.grid-x>.medium-5,.grid-x>.medium-6,.grid-x>.medium-7,.grid-x>.medium-8,.grid-x>.medium-9,.grid-x>.medium-10,.grid-x>.medium-11,.grid-x>.medium-12{-ms-flex-preferred-size:auto;flex-basis:auto}}@media print, screen and (min-width: 64em){.grid-x>.large-shrink,.grid-x>.large-full,.grid-x>.large-1,.grid-x>.large-2,.grid-x>.large-3,.grid-x>.large-4,.grid-x>.large-5,.grid-x>.large-6,.grid-x>.large-7,.grid-x>.large-8,.grid-x>.large-9,.grid-x>.large-10,.grid-x>.large-11,.grid-x>.large-12{-ms-flex-preferred-size:auto;flex-basis:auto}}.grid-x>.small-1{width:8.33333%}.grid-x>.small-2{width:16.66667%}.grid-x>.small-3{width:25%}.grid-x>.small-4{width:33.33333%}.grid-x>.small-5{width:41.66667%}.grid-x>.small-6{width:50%}.grid-x>.small-7{width:58.33333%}.grid-x>.small-8{width:66.66667%}.grid-x>.small-9{width:75%}.grid-x>.small-10{width:83.33333%}.grid-x>.small-11{width:91.66667%}.grid-x>.small-12{width:100%}@media print, screen and (min-width: 40em){.grid-x>.medium-auto{-ms-flex:1 1 0px;flex:1 1 0px;width:auto}.grid-x>.medium-shrink{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.grid-x>.medium-1{width:8.33333%}.grid-x>.medium-2{width:16.66667%}.grid-x>.medium-3{width:25%}.grid-x>.medium-4{width:33.33333%}.grid-x>.medium-5{width:41.66667%}.grid-x>.medium-6{width:50%}.grid-x>.medium-7{width:58.33333%}.grid-x>.medium-8{width:66.66667%}.grid-x>.medium-9{width:75%}.grid-x>.medium-10{width:83.33333%}.grid-x>.medium-11{width:91.66667%}.grid-x>.medium-12{width:100%}}@media print, screen and (min-width: 64em){.grid-x>.large-auto{-ms-flex:1 1 0px;flex:1 1 0px;width:auto}.grid-x>.large-shrink{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.grid-x>.large-1{width:8.33333%}.grid-x>.large-2{width:16.66667%}.grid-x>.large-3{width:25%}.grid-x>.large-4{width:33.33333%}.grid-x>.large-5{width:41.66667%}.grid-x>.large-6{width:50%}.grid-x>.large-7{width:58.33333%}.grid-x>.large-8{width:66.66667%}.grid-x>.large-9{width:75%}.grid-x>.large-10{width:83.33333%}.grid-x>.large-11{width:91.66667%}.grid-x>.large-12{width:100%}}.grid-margin-x:not(.grid-x)>.cell{width:auto}.grid-margin-y:not(.grid-y)>.cell{height:auto}.grid-margin-x{margin-left:-0.625rem;margin-right:-0.625rem}@media print, screen and (min-width: 40em){.grid-margin-x{margin-left:-0.9375rem;margin-right:-0.9375rem}}.grid-margin-x>.cell{width:calc(100% - 1.25rem);margin-left:0.625rem;margin-right:0.625rem}@media print, screen and (min-width: 40em){.grid-margin-x>.cell{width:calc(100% - 1.875rem);margin-left:0.9375rem;margin-right:0.9375rem}}.grid-margin-x>.auto{width:auto}.grid-margin-x>.shrink{width:auto}.grid-margin-x>.small-1{width:calc(8.33333% - 1.25rem)}.grid-margin-x>.small-2{width:calc(16.66667% - 1.25rem)}.grid-margin-x>.small-3{width:calc(25% - 1.25rem)}.grid-margin-x>.small-4{width:calc(33.33333% - 1.25rem)}.grid-margin-x>.small-5{width:calc(41.66667% - 1.25rem)}.grid-margin-x>.small-6{width:calc(50% - 1.25rem)}.grid-margin-x>.small-7{width:calc(58.33333% - 1.25rem)}.grid-margin-x>.small-8{width:calc(66.66667% - 1.25rem)}.grid-margin-x>.small-9{width:calc(75% - 1.25rem)}.grid-margin-x>.small-10{width:calc(83.33333% - 1.25rem)}.grid-margin-x>.small-11{width:calc(91.66667% - 1.25rem)}.grid-margin-x>.small-12{width:calc(100% - 1.25rem)}@media print, screen and (min-width: 40em){.grid-margin-x>.auto{width:auto}.grid-margin-x>.shrink{width:auto}.grid-margin-x>.small-1{width:calc(8.33333% - 1.875rem)}.grid-margin-x>.small-2{width:calc(16.66667% - 1.875rem)}.grid-margin-x>.small-3{width:calc(25% - 1.875rem)}.grid-margin-x>.small-4{width:calc(33.33333% - 1.875rem)}.grid-margin-x>.small-5{width:calc(41.66667% - 1.875rem)}.grid-margin-x>.small-6{width:calc(50% - 1.875rem)}.grid-margin-x>.small-7{width:calc(58.33333% - 1.875rem)}.grid-margin-x>.small-8{width:calc(66.66667% - 1.875rem)}.grid-margin-x>.small-9{width:calc(75% - 1.875rem)}.grid-margin-x>.small-10{width:calc(83.33333% - 1.875rem)}.grid-margin-x>.small-11{width:calc(91.66667% - 1.875rem)}.grid-margin-x>.small-12{width:calc(100% - 1.875rem)}.grid-margin-x>.medium-auto{width:auto}.grid-margin-x>.medium-shrink{width:auto}.grid-margin-x>.medium-1{width:calc(8.33333% - 1.875rem)}.grid-margin-x>.medium-2{width:calc(16.66667% - 1.875rem)}.grid-margin-x>.medium-3{width:calc(25% - 1.875rem)}.grid-margin-x>.medium-4{width:calc(33.33333% - 1.875rem)}.grid-margin-x>.medium-5{width:calc(41.66667% - 1.875rem)}.grid-margin-x>.medium-6{width:calc(50% - 1.875rem)}.grid-margin-x>.medium-7{width:calc(58.33333% - 1.875rem)}.grid-margin-x>.medium-8{width:calc(66.66667% - 1.875rem)}.grid-margin-x>.medium-9{width:calc(75% - 1.875rem)}.grid-margin-x>.medium-10{width:calc(83.33333% - 1.875rem)}.grid-margin-x>.medium-11{width:calc(91.66667% - 1.875rem)}.grid-margin-x>.medium-12{width:calc(100% - 1.875rem)}}@media print, screen and (min-width: 64em){.grid-margin-x>.large-auto{width:auto}.grid-margin-x>.large-shrink{width:auto}.grid-margin-x>.large-1{width:calc(8.33333% - 1.875rem)}.grid-margin-x>.large-2{width:calc(16.66667% - 1.875rem)}.grid-margin-x>.large-3{width:calc(25% - 1.875rem)}.grid-margin-x>.large-4{width:calc(33.33333% - 1.875rem)}.grid-margin-x>.large-5{width:calc(41.66667% - 1.875rem)}.grid-margin-x>.large-6{width:calc(50% - 1.875rem)}.grid-margin-x>.large-7{width:calc(58.33333% - 1.875rem)}.grid-margin-x>.large-8{width:calc(66.66667% - 1.875rem)}.grid-margin-x>.large-9{width:calc(75% - 1.875rem)}.grid-margin-x>.large-10{width:calc(83.33333% - 1.875rem)}.grid-margin-x>.large-11{width:calc(91.66667% - 1.875rem)}.grid-margin-x>.large-12{width:calc(100% - 1.875rem)}}.grid-padding-x .grid-padding-x{margin-right:-0.625rem;margin-left:-0.625rem}@media print, screen and (min-width: 40em){.grid-padding-x .grid-padding-x{margin-right:-0.9375rem;margin-left:-0.9375rem}}.grid-container:not(.full)>.grid-padding-x{margin-right:-0.625rem;margin-left:-0.625rem}@media print, screen and (min-width: 40em){.grid-container:not(.full)>.grid-padding-x{margin-right:-0.9375rem;margin-left:-0.9375rem}}.grid-padding-x>.cell{padding-right:0.625rem;padding-left:0.625rem}@media print, screen and (min-width: 40em){.grid-padding-x>.cell{padding-right:0.9375rem;padding-left:0.9375rem}}.small-up-1>.cell{width:100%}.small-up-2>.cell{width:50%}.small-up-3>.cell{width:33.33333%}.small-up-4>.cell{width:25%}.small-up-5>.cell{width:20%}.small-up-6>.cell{width:16.66667%}.small-up-7>.cell{width:14.28571%}.small-up-8>.cell{width:12.5%}@media print, screen and (min-width: 40em){.medium-up-1>.cell{width:100%}.medium-up-2>.cell{width:50%}.medium-up-3>.cell{width:33.33333%}.medium-up-4>.cell{width:25%}.medium-up-5>.cell{width:20%}.medium-up-6>.cell{width:16.66667%}.medium-up-7>.cell{width:14.28571%}.medium-up-8>.cell{width:12.5%}}@media print, screen and (min-width: 64em){.large-up-1>.cell{width:100%}.large-up-2>.cell{width:50%}.large-up-3>.cell{width:33.33333%}.large-up-4>.cell{width:25%}.large-up-5>.cell{width:20%}.large-up-6>.cell{width:16.66667%}.large-up-7>.cell{width:14.28571%}.large-up-8>.cell{width:12.5%}}.grid-margin-x.small-up-1>.cell{width:calc(100% - 1.25rem)}.grid-margin-x.small-up-2>.cell{width:calc(50% - 1.25rem)}.grid-margin-x.small-up-3>.cell{width:calc(33.33333% - 1.25rem)}.grid-margin-x.small-up-4>.cell{width:calc(25% - 1.25rem)}.grid-margin-x.small-up-5>.cell{width:calc(20% - 1.25rem)}.grid-margin-x.small-up-6>.cell{width:calc(16.66667% - 1.25rem)}.grid-margin-x.small-up-7>.cell{width:calc(14.28571% - 1.25rem)}.grid-margin-x.small-up-8>.cell{width:calc(12.5% - 1.25rem)}@media print, screen and (min-width: 40em){.grid-margin-x.small-up-1>.cell{width:calc(100% - 1.25rem)}.grid-margin-x.small-up-2>.cell{width:calc(50% - 1.25rem)}.grid-margin-x.small-up-3>.cell{width:calc(33.33333% - 1.25rem)}.grid-margin-x.small-up-4>.cell{width:calc(25% - 1.25rem)}.grid-margin-x.small-up-5>.cell{width:calc(20% - 1.25rem)}.grid-margin-x.small-up-6>.cell{width:calc(16.66667% - 1.25rem)}.grid-margin-x.small-up-7>.cell{width:calc(14.28571% - 1.25rem)}.grid-margin-x.small-up-8>.cell{width:calc(12.5% - 1.25rem)}.grid-margin-x.medium-up-1>.cell{width:calc(100% - 1.875rem)}.grid-margin-x.medium-up-2>.cell{width:calc(50% - 1.875rem)}.grid-margin-x.medium-up-3>.cell{width:calc(33.33333% - 1.875rem)}.grid-margin-x.medium-up-4>.cell{width:calc(25% - 1.875rem)}.grid-margin-x.medium-up-5>.cell{width:calc(20% - 1.875rem)}.grid-margin-x.medium-up-6>.cell{width:calc(16.66667% - 1.875rem)}.grid-margin-x.medium-up-7>.cell{width:calc(14.28571% - 1.875rem)}.grid-margin-x.medium-up-8>.cell{width:calc(12.5% - 1.875rem)}}@media print, screen and (min-width: 64em){.grid-margin-x.large-up-1>.cell{width:calc(100% - 1.875rem)}.grid-margin-x.large-up-2>.cell{width:calc(50% - 1.875rem)}.grid-margin-x.large-up-3>.cell{width:calc(33.33333% - 1.875rem)}.grid-margin-x.large-up-4>.cell{width:calc(25% - 1.875rem)}.grid-margin-x.large-up-5>.cell{width:calc(20% - 1.875rem)}.grid-margin-x.large-up-6>.cell{width:calc(16.66667% - 1.875rem)}.grid-margin-x.large-up-7>.cell{width:calc(14.28571% - 1.875rem)}.grid-margin-x.large-up-8>.cell{width:calc(12.5% - 1.875rem)}}.small-margin-collapse{margin-right:0;margin-left:0}.small-margin-collapse>.cell{margin-right:0;margin-left:0}.small-margin-collapse>.small-1{width:8.33333%}.small-margin-collapse>.small-2{width:16.66667%}.small-margin-collapse>.small-3{width:25%}.small-margin-collapse>.small-4{width:33.33333%}.small-margin-collapse>.small-5{width:41.66667%}.small-margin-collapse>.small-6{width:50%}.small-margin-collapse>.small-7{width:58.33333%}.small-margin-collapse>.small-8{width:66.66667%}.small-margin-collapse>.small-9{width:75%}.small-margin-collapse>.small-10{width:83.33333%}.small-margin-collapse>.small-11{width:91.66667%}.small-margin-collapse>.small-12{width:100%}@media print, screen and (min-width: 40em){.small-margin-collapse>.medium-1{width:8.33333%}.small-margin-collapse>.medium-2{width:16.66667%}.small-margin-collapse>.medium-3{width:25%}.small-margin-collapse>.medium-4{width:33.33333%}.small-margin-collapse>.medium-5{width:41.66667%}.small-margin-collapse>.medium-6{width:50%}.small-margin-collapse>.medium-7{width:58.33333%}.small-margin-collapse>.medium-8{width:66.66667%}.small-margin-collapse>.medium-9{width:75%}.small-margin-collapse>.medium-10{width:83.33333%}.small-margin-collapse>.medium-11{width:91.66667%}.small-margin-collapse>.medium-12{width:100%}}@media print, screen and (min-width: 64em){.small-margin-collapse>.large-1{width:8.33333%}.small-margin-collapse>.large-2{width:16.66667%}.small-margin-collapse>.large-3{width:25%}.small-margin-collapse>.large-4{width:33.33333%}.small-margin-collapse>.large-5{width:41.66667%}.small-margin-collapse>.large-6{width:50%}.small-margin-collapse>.large-7{width:58.33333%}.small-margin-collapse>.large-8{width:66.66667%}.small-margin-collapse>.large-9{width:75%}.small-margin-collapse>.large-10{width:83.33333%}.small-margin-collapse>.large-11{width:91.66667%}.small-margin-collapse>.large-12{width:100%}}.small-padding-collapse{margin-right:0;margin-left:0}.small-padding-collapse>.cell{padding-right:0;padding-left:0}@media print, screen and (min-width: 40em){.medium-margin-collapse{margin-right:0;margin-left:0}.medium-margin-collapse>.cell{margin-right:0;margin-left:0}}@media print, screen and (min-width: 40em){.medium-margin-collapse>.small-1{width:8.33333%}.medium-margin-collapse>.small-2{width:16.66667%}.medium-margin-collapse>.small-3{width:25%}.medium-margin-collapse>.small-4{width:33.33333%}.medium-margin-collapse>.small-5{width:41.66667%}.medium-margin-collapse>.small-6{width:50%}.medium-margin-collapse>.small-7{width:58.33333%}.medium-margin-collapse>.small-8{width:66.66667%}.medium-margin-collapse>.small-9{width:75%}.medium-margin-collapse>.small-10{width:83.33333%}.medium-margin-collapse>.small-11{width:91.66667%}.medium-margin-collapse>.small-12{width:100%}}@media print, screen and (min-width: 40em){.medium-margin-collapse>.medium-1{width:8.33333%}.medium-margin-collapse>.medium-2{width:16.66667%}.medium-margin-collapse>.medium-3{width:25%}.medium-margin-collapse>.medium-4{width:33.33333%}.medium-margin-collapse>.medium-5{width:41.66667%}.medium-margin-collapse>.medium-6{width:50%}.medium-margin-collapse>.medium-7{width:58.33333%}.medium-margin-collapse>.medium-8{width:66.66667%}.medium-margin-collapse>.medium-9{width:75%}.medium-margin-collapse>.medium-10{width:83.33333%}.medium-margin-collapse>.medium-11{width:91.66667%}.medium-margin-collapse>.medium-12{width:100%}}@media print, screen and (min-width: 64em){.medium-margin-collapse>.large-1{width:8.33333%}.medium-margin-collapse>.large-2{width:16.66667%}.medium-margin-collapse>.large-3{width:25%}.medium-margin-collapse>.large-4{width:33.33333%}.medium-margin-collapse>.large-5{width:41.66667%}.medium-margin-collapse>.large-6{width:50%}.medium-margin-collapse>.large-7{width:58.33333%}.medium-margin-collapse>.large-8{width:66.66667%}.medium-margin-collapse>.large-9{width:75%}.medium-margin-collapse>.large-10{width:83.33333%}.medium-margin-collapse>.large-11{width:91.66667%}.medium-margin-collapse>.large-12{width:100%}}@media print, screen and (min-width: 40em){.medium-padding-collapse{margin-right:0;margin-left:0}.medium-padding-collapse>.cell{padding-right:0;padding-left:0}}@media print, screen and (min-width: 64em){.large-margin-collapse{margin-right:0;margin-left:0}.large-margin-collapse>.cell{margin-right:0;margin-left:0}}@media print, screen and (min-width: 64em){.large-margin-collapse>.small-1{width:8.33333%}.large-margin-collapse>.small-2{width:16.66667%}.large-margin-collapse>.small-3{width:25%}.large-margin-collapse>.small-4{width:33.33333%}.large-margin-collapse>.small-5{width:41.66667%}.large-margin-collapse>.small-6{width:50%}.large-margin-collapse>.small-7{width:58.33333%}.large-margin-collapse>.small-8{width:66.66667%}.large-margin-collapse>.small-9{width:75%}.large-margin-collapse>.small-10{width:83.33333%}.large-margin-collapse>.small-11{width:91.66667%}.large-margin-collapse>.small-12{width:100%}}@media print, screen and (min-width: 64em){.large-margin-collapse>.medium-1{width:8.33333%}.large-margin-collapse>.medium-2{width:16.66667%}.large-margin-collapse>.medium-3{width:25%}.large-margin-collapse>.medium-4{width:33.33333%}.large-margin-collapse>.medium-5{width:41.66667%}.large-margin-collapse>.medium-6{width:50%}.large-margin-collapse>.medium-7{width:58.33333%}.large-margin-collapse>.medium-8{width:66.66667%}.large-margin-collapse>.medium-9{width:75%}.large-margin-collapse>.medium-10{width:83.33333%}.large-margin-collapse>.medium-11{width:91.66667%}.large-margin-collapse>.medium-12{width:100%}}@media print, screen and (min-width: 64em){.large-margin-collapse>.large-1{width:8.33333%}.large-margin-collapse>.large-2{width:16.66667%}.large-margin-collapse>.large-3{width:25%}.large-margin-collapse>.large-4{width:33.33333%}.large-margin-collapse>.large-5{width:41.66667%}.large-margin-collapse>.large-6{width:50%}.large-margin-collapse>.large-7{width:58.33333%}.large-margin-collapse>.large-8{width:66.66667%}.large-margin-collapse>.large-9{width:75%}.large-margin-collapse>.large-10{width:83.33333%}.large-margin-collapse>.large-11{width:91.66667%}.large-margin-collapse>.large-12{width:100%}}@media print, screen and (min-width: 64em){.large-padding-collapse{margin-right:0;margin-left:0}.large-padding-collapse>.cell{padding-right:0;padding-left:0}}.small-offset-0{margin-left:0%}.grid-margin-x>.small-offset-0{margin-left:calc(0% + 0.625rem)}.small-offset-1{margin-left:8.33333%}.grid-margin-x>.small-offset-1{margin-left:calc(8.33333% + 0.625rem)}.small-offset-2{margin-left:16.66667%}.grid-margin-x>.small-offset-2{margin-left:calc(16.66667% + 0.625rem)}.small-offset-3{margin-left:25%}.grid-margin-x>.small-offset-3{margin-left:calc(25% + 0.625rem)}.small-offset-4{margin-left:33.33333%}.grid-margin-x>.small-offset-4{margin-left:calc(33.33333% + 0.625rem)}.small-offset-5{margin-left:41.66667%}.grid-margin-x>.small-offset-5{margin-left:calc(41.66667% + 0.625rem)}.small-offset-6{margin-left:50%}.grid-margin-x>.small-offset-6{margin-left:calc(50% + 0.625rem)}.small-offset-7{margin-left:58.33333%}.grid-margin-x>.small-offset-7{margin-left:calc(58.33333% + 0.625rem)}.small-offset-8{margin-left:66.66667%}.grid-margin-x>.small-offset-8{margin-left:calc(66.66667% + 0.625rem)}.small-offset-9{margin-left:75%}.grid-margin-x>.small-offset-9{margin-left:calc(75% + 0.625rem)}.small-offset-10{margin-left:83.33333%}.grid-margin-x>.small-offset-10{margin-left:calc(83.33333% + 0.625rem)}.small-offset-11{margin-left:91.66667%}.grid-margin-x>.small-offset-11{margin-left:calc(91.66667% + 0.625rem)}@media print, screen and (min-width: 40em){.medium-offset-0{margin-left:0%}.grid-margin-x>.medium-offset-0{margin-left:calc(0% + 0.9375rem)}.medium-offset-1{margin-left:8.33333%}.grid-margin-x>.medium-offset-1{margin-left:calc(8.33333% + 0.9375rem)}.medium-offset-2{margin-left:16.66667%}.grid-margin-x>.medium-offset-2{margin-left:calc(16.66667% + 0.9375rem)}.medium-offset-3{margin-left:25%}.grid-margin-x>.medium-offset-3{margin-left:calc(25% + 0.9375rem)}.medium-offset-4{margin-left:33.33333%}.grid-margin-x>.medium-offset-4{margin-left:calc(33.33333% + 0.9375rem)}.medium-offset-5{margin-left:41.66667%}.grid-margin-x>.medium-offset-5{margin-left:calc(41.66667% + 0.9375rem)}.medium-offset-6{margin-left:50%}.grid-margin-x>.medium-offset-6{margin-left:calc(50% + 0.9375rem)}.medium-offset-7{margin-left:58.33333%}.grid-margin-x>.medium-offset-7{margin-left:calc(58.33333% + 0.9375rem)}.medium-offset-8{margin-left:66.66667%}.grid-margin-x>.medium-offset-8{margin-left:calc(66.66667% + 0.9375rem)}.medium-offset-9{margin-left:75%}.grid-margin-x>.medium-offset-9{margin-left:calc(75% + 0.9375rem)}.medium-offset-10{margin-left:83.33333%}.grid-margin-x>.medium-offset-10{margin-left:calc(83.33333% + 0.9375rem)}.medium-offset-11{margin-left:91.66667%}.grid-margin-x>.medium-offset-11{margin-left:calc(91.66667% + 0.9375rem)}}@media print, screen and (min-width: 64em){.large-offset-0{margin-left:0%}.grid-margin-x>.large-offset-0{margin-left:calc(0% + 0.9375rem)}.large-offset-1{margin-left:8.33333%}.grid-margin-x>.large-offset-1{margin-left:calc(8.33333% + 0.9375rem)}.large-offset-2{margin-left:16.66667%}.grid-margin-x>.large-offset-2{margin-left:calc(16.66667% + 0.9375rem)}.large-offset-3{margin-left:25%}.grid-margin-x>.large-offset-3{margin-left:calc(25% + 0.9375rem)}.large-offset-4{margin-left:33.33333%}.grid-margin-x>.large-offset-4{margin-left:calc(33.33333% + 0.9375rem)}.large-offset-5{margin-left:41.66667%}.grid-margin-x>.large-offset-5{margin-left:calc(41.66667% + 0.9375rem)}.large-offset-6{margin-left:50%}.grid-margin-x>.large-offset-6{margin-left:calc(50% + 0.9375rem)}.large-offset-7{margin-left:58.33333%}.grid-margin-x>.large-offset-7{margin-left:calc(58.33333% + 0.9375rem)}.large-offset-8{margin-left:66.66667%}.grid-margin-x>.large-offset-8{margin-left:calc(66.66667% + 0.9375rem)}.large-offset-9{margin-left:75%}.grid-margin-x>.large-offset-9{margin-left:calc(75% + 0.9375rem)}.large-offset-10{margin-left:83.33333%}.grid-margin-x>.large-offset-10{margin-left:calc(83.33333% + 0.9375rem)}.large-offset-11{margin-left:91.66667%}.grid-margin-x>.large-offset-11{margin-left:calc(91.66667% + 0.9375rem)}}.grid-y{display:-ms-flexbox;display:flex;-ms-flex-flow:column nowrap;flex-flow:column nowrap}.grid-y>.cell{width:auto}.grid-y>.auto{height:auto}.grid-y>.shrink{height:auto}.grid-y>.small-shrink,.grid-y>.small-full,.grid-y>.small-1,.grid-y>.small-2,.grid-y>.small-3,.grid-y>.small-4,.grid-y>.small-5,.grid-y>.small-6,.grid-y>.small-7,.grid-y>.small-8,.grid-y>.small-9,.grid-y>.small-10,.grid-y>.small-11,.grid-y>.small-12{-ms-flex-preferred-size:auto;flex-basis:auto}@media print, screen and (min-width: 40em){.grid-y>.medium-shrink,.grid-y>.medium-full,.grid-y>.medium-1,.grid-y>.medium-2,.grid-y>.medium-3,.grid-y>.medium-4,.grid-y>.medium-5,.grid-y>.medium-6,.grid-y>.medium-7,.grid-y>.medium-8,.grid-y>.medium-9,.grid-y>.medium-10,.grid-y>.medium-11,.grid-y>.medium-12{-ms-flex-preferred-size:auto;flex-basis:auto}}@media print, screen and (min-width: 64em){.grid-y>.large-shrink,.grid-y>.large-full,.grid-y>.large-1,.grid-y>.large-2,.grid-y>.large-3,.grid-y>.large-4,.grid-y>.large-5,.grid-y>.large-6,.grid-y>.large-7,.grid-y>.large-8,.grid-y>.large-9,.grid-y>.large-10,.grid-y>.large-11,.grid-y>.large-12{-ms-flex-preferred-size:auto;flex-basis:auto}}.grid-y>.small-1{height:8.33333%}.grid-y>.small-2{height:16.66667%}.grid-y>.small-3{height:25%}.grid-y>.small-4{height:33.33333%}.grid-y>.small-5{height:41.66667%}.grid-y>.small-6{height:50%}.grid-y>.small-7{height:58.33333%}.grid-y>.small-8{height:66.66667%}.grid-y>.small-9{height:75%}.grid-y>.small-10{height:83.33333%}.grid-y>.small-11{height:91.66667%}.grid-y>.small-12{height:100%}@media print, screen and (min-width: 40em){.grid-y>.medium-auto{-ms-flex:1 1 0px;flex:1 1 0px;height:auto}.grid-y>.medium-shrink{height:auto}.grid-y>.medium-1{height:8.33333%}.grid-y>.medium-2{height:16.66667%}.grid-y>.medium-3{height:25%}.grid-y>.medium-4{height:33.33333%}.grid-y>.medium-5{height:41.66667%}.grid-y>.medium-6{height:50%}.grid-y>.medium-7{height:58.33333%}.grid-y>.medium-8{height:66.66667%}.grid-y>.medium-9{height:75%}.grid-y>.medium-10{height:83.33333%}.grid-y>.medium-11{height:91.66667%}.grid-y>.medium-12{height:100%}}@media print, screen and (min-width: 64em){.grid-y>.large-auto{-ms-flex:1 1 0px;flex:1 1 0px;height:auto}.grid-y>.large-shrink{height:auto}.grid-y>.large-1{height:8.33333%}.grid-y>.large-2{height:16.66667%}.grid-y>.large-3{height:25%}.grid-y>.large-4{height:33.33333%}.grid-y>.large-5{height:41.66667%}.grid-y>.large-6{height:50%}.grid-y>.large-7{height:58.33333%}.grid-y>.large-8{height:66.66667%}.grid-y>.large-9{height:75%}.grid-y>.large-10{height:83.33333%}.grid-y>.large-11{height:91.66667%}.grid-y>.large-12{height:100%}}.grid-padding-y .grid-padding-y{margin-top:-0.625rem;margin-bottom:-0.625rem}@media print, screen and (min-width: 40em){.grid-padding-y .grid-padding-y{margin-top:-0.9375rem;margin-bottom:-0.9375rem}}.grid-padding-y>.cell{padding-top:0.625rem;padding-bottom:0.625rem}@media print, screen and (min-width: 40em){.grid-padding-y>.cell{padding-top:0.9375rem;padding-bottom:0.9375rem}}.grid-margin-y{margin-top:-0.625rem;margin-bottom:-0.625rem}@media print, screen and (min-width: 40em){.grid-margin-y{margin-top:-0.9375rem;margin-bottom:-0.9375rem}}.grid-margin-y>.cell{height:calc(100% - 1.25rem);margin-top:0.625rem;margin-bottom:0.625rem}@media print, screen and (min-width: 40em){.grid-margin-y>.cell{height:calc(100% - 1.875rem);margin-top:0.9375rem;margin-bottom:0.9375rem}}.grid-margin-y>.auto{height:auto}.grid-margin-y>.shrink{height:auto}.grid-margin-y>.small-1{height:calc(8.33333% - 1.25rem)}.grid-margin-y>.small-2{height:calc(16.66667% - 1.25rem)}.grid-margin-y>.small-3{height:calc(25% - 1.25rem)}.grid-margin-y>.small-4{height:calc(33.33333% - 1.25rem)}.grid-margin-y>.small-5{height:calc(41.66667% - 1.25rem)}.grid-margin-y>.small-6{height:calc(50% - 1.25rem)}.grid-margin-y>.small-7{height:calc(58.33333% - 1.25rem)}.grid-margin-y>.small-8{height:calc(66.66667% - 1.25rem)}.grid-margin-y>.small-9{height:calc(75% - 1.25rem)}.grid-margin-y>.small-10{height:calc(83.33333% - 1.25rem)}.grid-margin-y>.small-11{height:calc(91.66667% - 1.25rem)}.grid-margin-y>.small-12{height:calc(100% - 1.25rem)}@media print, screen and (min-width: 40em){.grid-margin-y>.auto{height:auto}.grid-margin-y>.shrink{height:auto}.grid-margin-y>.small-1{height:calc(8.33333% - 1.875rem)}.grid-margin-y>.small-2{height:calc(16.66667% - 1.875rem)}.grid-margin-y>.small-3{height:calc(25% - 1.875rem)}.grid-margin-y>.small-4{height:calc(33.33333% - 1.875rem)}.grid-margin-y>.small-5{height:calc(41.66667% - 1.875rem)}.grid-margin-y>.small-6{height:calc(50% - 1.875rem)}.grid-margin-y>.small-7{height:calc(58.33333% - 1.875rem)}.grid-margin-y>.small-8{height:calc(66.66667% - 1.875rem)}.grid-margin-y>.small-9{height:calc(75% - 1.875rem)}.grid-margin-y>.small-10{height:calc(83.33333% - 1.875rem)}.grid-margin-y>.small-11{height:calc(91.66667% - 1.875rem)}.grid-margin-y>.small-12{height:calc(100% - 1.875rem)}.grid-margin-y>.medium-auto{height:auto}.grid-margin-y>.medium-shrink{height:auto}.grid-margin-y>.medium-1{height:calc(8.33333% - 1.875rem)}.grid-margin-y>.medium-2{height:calc(16.66667% - 1.875rem)}.grid-margin-y>.medium-3{height:calc(25% - 1.875rem)}.grid-margin-y>.medium-4{height:calc(33.33333% - 1.875rem)}.grid-margin-y>.medium-5{height:calc(41.66667% - 1.875rem)}.grid-margin-y>.medium-6{height:calc(50% - 1.875rem)}.grid-margin-y>.medium-7{height:calc(58.33333% - 1.875rem)}.grid-margin-y>.medium-8{height:calc(66.66667% - 1.875rem)}.grid-margin-y>.medium-9{height:calc(75% - 1.875rem)}.grid-margin-y>.medium-10{height:calc(83.33333% - 1.875rem)}.grid-margin-y>.medium-11{height:calc(91.66667% - 1.875rem)}.grid-margin-y>.medium-12{height:calc(100% - 1.875rem)}}@media print, screen and (min-width: 64em){.grid-margin-y>.large-auto{height:auto}.grid-margin-y>.large-shrink{height:auto}.grid-margin-y>.large-1{height:calc(8.33333% - 1.875rem)}.grid-margin-y>.large-2{height:calc(16.66667% - 1.875rem)}.grid-margin-y>.large-3{height:calc(25% - 1.875rem)}.grid-margin-y>.large-4{height:calc(33.33333% - 1.875rem)}.grid-margin-y>.large-5{height:calc(41.66667% - 1.875rem)}.grid-margin-y>.large-6{height:calc(50% - 1.875rem)}.grid-margin-y>.large-7{height:calc(58.33333% - 1.875rem)}.grid-margin-y>.large-8{height:calc(66.66667% - 1.875rem)}.grid-margin-y>.large-9{height:calc(75% - 1.875rem)}.grid-margin-y>.large-10{height:calc(83.33333% - 1.875rem)}.grid-margin-y>.large-11{height:calc(91.66667% - 1.875rem)}.grid-margin-y>.large-12{height:calc(100% - 1.875rem)}}.grid-frame{overflow:hidden;position:relative;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-ms-flex-align:stretch;align-items:stretch;width:100vw}.cell .grid-frame{width:100%}.cell-block{overflow-x:auto;max-width:100%;-webkit-overflow-scrolling:touch;-ms-overflow-stype:-ms-autohiding-scrollbar}.cell-block-y{overflow-y:auto;max-height:100%;-webkit-overflow-scrolling:touch;-ms-overflow-stype:-ms-autohiding-scrollbar}.cell-block-container{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;max-height:100%}.cell-block-container>.grid-x{max-height:100%;-ms-flex-wrap:nowrap;flex-wrap:nowrap}@media print, screen and (min-width: 40em){.medium-grid-frame{overflow:hidden;position:relative;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-ms-flex-align:stretch;align-items:stretch;width:100vw}.cell .medium-grid-frame{width:100%}.medium-cell-block{overflow-x:auto;max-width:100%;-webkit-overflow-scrolling:touch;-ms-overflow-stype:-ms-autohiding-scrollbar}.medium-cell-block-container{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;max-height:100%}.medium-cell-block-container>.grid-x{max-height:100%;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.medium-cell-block-y{overflow-y:auto;max-height:100%;-webkit-overflow-scrolling:touch;-ms-overflow-stype:-ms-autohiding-scrollbar}}@media print, screen and (min-width: 64em){.large-grid-frame{overflow:hidden;position:relative;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-ms-flex-align:stretch;align-items:stretch;width:100vw}.cell .large-grid-frame{width:100%}.large-cell-block{overflow-x:auto;max-width:100%;-webkit-overflow-scrolling:touch;-ms-overflow-stype:-ms-autohiding-scrollbar}.large-cell-block-container{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;max-height:100%}.large-cell-block-container>.grid-x{max-height:100%;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.large-cell-block-y{overflow-y:auto;max-height:100%;-webkit-overflow-scrolling:touch;-ms-overflow-stype:-ms-autohiding-scrollbar}}.grid-y.grid-frame{width:auto;overflow:hidden;position:relative;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-ms-flex-align:stretch;align-items:stretch;height:100vh}@media print, screen and (min-width: 40em){.grid-y.medium-grid-frame{width:auto;overflow:hidden;position:relative;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-ms-flex-align:stretch;align-items:stretch;height:100vh}}@media print, screen and (min-width: 64em){.grid-y.large-grid-frame{width:auto;overflow:hidden;position:relative;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-ms-flex-align:stretch;align-items:stretch;height:100vh}}.cell .grid-y.grid-frame{height:100%}@media print, screen and (min-width: 40em){.cell .grid-y.medium-grid-frame{height:100%}}@media print, screen and (min-width: 64em){.cell .grid-y.large-grid-frame{height:100%}}.grid-margin-y{margin-top:-0.625rem;margin-bottom:-0.625rem}@media print, screen and (min-width: 40em){.grid-margin-y{margin-top:-0.9375rem;margin-bottom:-0.9375rem}}.grid-margin-y>.cell{height:calc(100% - 1.25rem);margin-top:0.625rem;margin-bottom:0.625rem}@media print, screen and (min-width: 40em){.grid-margin-y>.cell{height:calc(100% - 1.875rem);margin-top:0.9375rem;margin-bottom:0.9375rem}}.grid-margin-y>.auto{height:auto}.grid-margin-y>.shrink{height:auto}.grid-margin-y>.small-1{height:calc(8.33333% - 1.25rem)}.grid-margin-y>.small-2{height:calc(16.66667% - 1.25rem)}.grid-margin-y>.small-3{height:calc(25% - 1.25rem)}.grid-margin-y>.small-4{height:calc(33.33333% - 1.25rem)}.grid-margin-y>.small-5{height:calc(41.66667% - 1.25rem)}.grid-margin-y>.small-6{height:calc(50% - 1.25rem)}.grid-margin-y>.small-7{height:calc(58.33333% - 1.25rem)}.grid-margin-y>.small-8{height:calc(66.66667% - 1.25rem)}.grid-margin-y>.small-9{height:calc(75% - 1.25rem)}.grid-margin-y>.small-10{height:calc(83.33333% - 1.25rem)}.grid-margin-y>.small-11{height:calc(91.66667% - 1.25rem)}.grid-margin-y>.small-12{height:calc(100% - 1.25rem)}@media print, screen and (min-width: 40em){.grid-margin-y>.auto{height:auto}.grid-margin-y>.shrink{height:auto}.grid-margin-y>.small-1{height:calc(8.33333% - 1.875rem)}.grid-margin-y>.small-2{height:calc(16.66667% - 1.875rem)}.grid-margin-y>.small-3{height:calc(25% - 1.875rem)}.grid-margin-y>.small-4{height:calc(33.33333% - 1.875rem)}.grid-margin-y>.small-5{height:calc(41.66667% - 1.875rem)}.grid-margin-y>.small-6{height:calc(50% - 1.875rem)}.grid-margin-y>.small-7{height:calc(58.33333% - 1.875rem)}.grid-margin-y>.small-8{height:calc(66.66667% - 1.875rem)}.grid-margin-y>.small-9{height:calc(75% - 1.875rem)}.grid-margin-y>.small-10{height:calc(83.33333% - 1.875rem)}.grid-margin-y>.small-11{height:calc(91.66667% - 1.875rem)}.grid-margin-y>.small-12{height:calc(100% - 1.875rem)}.grid-margin-y>.medium-auto{height:auto}.grid-margin-y>.medium-shrink{height:auto}.grid-margin-y>.medium-1{height:calc(8.33333% - 1.875rem)}.grid-margin-y>.medium-2{height:calc(16.66667% - 1.875rem)}.grid-margin-y>.medium-3{height:calc(25% - 1.875rem)}.grid-margin-y>.medium-4{height:calc(33.33333% - 1.875rem)}.grid-margin-y>.medium-5{height:calc(41.66667% - 1.875rem)}.grid-margin-y>.medium-6{height:calc(50% - 1.875rem)}.grid-margin-y>.medium-7{height:calc(58.33333% - 1.875rem)}.grid-margin-y>.medium-8{height:calc(66.66667% - 1.875rem)}.grid-margin-y>.medium-9{height:calc(75% - 1.875rem)}.grid-margin-y>.medium-10{height:calc(83.33333% - 1.875rem)}.grid-margin-y>.medium-11{height:calc(91.66667% - 1.875rem)}.grid-margin-y>.medium-12{height:calc(100% - 1.875rem)}}@media print, screen and (min-width: 64em){.grid-margin-y>.large-auto{height:auto}.grid-margin-y>.large-shrink{height:auto}.grid-margin-y>.large-1{height:calc(8.33333% - 1.875rem)}.grid-margin-y>.large-2{height:calc(16.66667% - 1.875rem)}.grid-margin-y>.large-3{height:calc(25% - 1.875rem)}.grid-margin-y>.large-4{height:calc(33.33333% - 1.875rem)}.grid-margin-y>.large-5{height:calc(41.66667% - 1.875rem)}.grid-margin-y>.large-6{height:calc(50% - 1.875rem)}.grid-margin-y>.large-7{height:calc(58.33333% - 1.875rem)}.grid-margin-y>.large-8{height:calc(66.66667% - 1.875rem)}.grid-margin-y>.large-9{height:calc(75% - 1.875rem)}.grid-margin-y>.large-10{height:calc(83.33333% - 1.875rem)}.grid-margin-y>.large-11{height:calc(91.66667% - 1.875rem)}.grid-margin-y>.large-12{height:calc(100% - 1.875rem)}}.grid-frame.grid-margin-y{height:calc(100vh + 1.25rem)}@media print, screen and (min-width: 40em){.grid-frame.grid-margin-y{height:calc(100vh + 1.875rem)}}@media print, screen and (min-width: 64em){.grid-frame.grid-margin-y{height:calc(100vh + 1.875rem)}}@media print, screen and (min-width: 40em){.grid-margin-y.medium-grid-frame{height:calc(100vh + 1.875rem)}}@media print, screen and (min-width: 64em){.grid-margin-y.large-grid-frame{height:calc(100vh + 1.875rem)}}.align-right{-ms-flex-pack:end;justify-content:flex-end}.align-center{-ms-flex-pack:center;justify-content:center}.align-justify{-ms-flex-pack:justify;justify-content:space-between}.align-spaced{-ms-flex-pack:distribute;justify-content:space-around}.align-right.vertical.menu>li>a{-ms-flex-pack:end;justify-content:flex-end}.align-center.vertical.menu>li>a{-ms-flex-pack:center;justify-content:center}.align-top{-ms-flex-align:start;align-items:flex-start}.align-self-top{-ms-flex-item-align:start;align-self:flex-start}.align-bottom{-ms-flex-align:end;align-items:flex-end}.align-self-bottom{-ms-flex-item-align:end;align-self:flex-end}.align-middle{-ms-flex-align:center;align-items:center}.align-self-middle{-ms-flex-item-align:center;-ms-grid-row-align:center;align-self:center}.align-stretch{-ms-flex-align:stretch;align-items:stretch}.align-self-stretch{-ms-flex-item-align:stretch;-ms-grid-row-align:stretch;align-self:stretch}.align-center-middle{-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;-ms-flex-line-pack:center;align-content:center}.small-order-1{-ms-flex-order:1;order:1}.small-order-2{-ms-flex-order:2;order:2}.small-order-3{-ms-flex-order:3;order:3}.small-order-4{-ms-flex-order:4;order:4}.small-order-5{-ms-flex-order:5;order:5}.small-order-6{-ms-flex-order:6;order:6}@media print, screen and (min-width: 40em){.medium-order-1{-ms-flex-order:1;order:1}.medium-order-2{-ms-flex-order:2;order:2}.medium-order-3{-ms-flex-order:3;order:3}.medium-order-4{-ms-flex-order:4;order:4}.medium-order-5{-ms-flex-order:5;order:5}.medium-order-6{-ms-flex-order:6;order:6}}@media print, screen and (min-width: 64em){.large-order-1{-ms-flex-order:1;order:1}.large-order-2{-ms-flex-order:2;order:2}.large-order-3{-ms-flex-order:3;order:3}.large-order-4{-ms-flex-order:4;order:4}.large-order-5{-ms-flex-order:5;order:5}.large-order-6{-ms-flex-order:6;order:6}}.flex-container{display:-ms-flexbox;display:flex}.flex-child-auto{-ms-flex:1 1 auto;flex:1 1 auto}.flex-child-grow{-ms-flex:1 0 auto;flex:1 0 auto}.flex-child-shrink{-ms-flex:0 1 auto;flex:0 1 auto}.flex-dir-row{-ms-flex-direction:row;flex-direction:row}.flex-dir-row-reverse{-ms-flex-direction:row-reverse;flex-direction:row-reverse}.flex-dir-column{-ms-flex-direction:column;flex-direction:column}.flex-dir-column-reverse{-ms-flex-direction:column-reverse;flex-direction:column-reverse}@media print, screen and (min-width: 40em){.medium-flex-container{display:-ms-flexbox;display:flex}.medium-flex-child-auto{-ms-flex:1 1 auto;flex:1 1 auto}.medium-flex-child-grow{-ms-flex:1 0 auto;flex:1 0 auto}.medium-flex-child-shrink{-ms-flex:0 1 auto;flex:0 1 auto}.medium-flex-dir-row{-ms-flex-direction:row;flex-direction:row}.medium-flex-dir-row-reverse{-ms-flex-direction:row-reverse;flex-direction:row-reverse}.medium-flex-dir-column{-ms-flex-direction:column;flex-direction:column}.medium-flex-dir-column-reverse{-ms-flex-direction:column-reverse;flex-direction:column-reverse}}@media print, screen and (min-width: 64em){.large-flex-container{display:-ms-flexbox;display:flex}.large-flex-child-auto{-ms-flex:1 1 auto;flex:1 1 auto}.large-flex-child-grow{-ms-flex:1 0 auto;flex:1 0 auto}.large-flex-child-shrink{-ms-flex:0 1 auto;flex:0 1 auto}.large-flex-dir-row{-ms-flex-direction:row;flex-direction:row}.large-flex-dir-row-reverse{-ms-flex-direction:row-reverse;flex-direction:row-reverse}.large-flex-dir-column{-ms-flex-direction:column;flex-direction:column}.large-flex-dir-column-reverse{-ms-flex-direction:column-reverse;flex-direction:column-reverse}}div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0}p{margin-bottom:1rem;font-size:inherit;line-height:1.6;text-rendering:optimizeLegibility}em,i{font-style:italic;line-height:inherit}strong,b{font-weight:bold;line-height:inherit}small{font-size:80%;line-height:inherit}h1,.h1,h2,.h2,h3,.h3,h4,.h4,h5,.h5,h6,.h6{font-family:'Gudea', sans-serif;font-style:normal;font-weight:normal;color:inherit;text-rendering:optimizeLegibility}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small{line-height:0;color:#cacaca}h1,.h1{font-size:1.5rem;line-height:1.4;margin-top:0;margin-bottom:0.5rem}h2,.h2{font-size:1.25rem;line-height:1.4;margin-top:0;margin-bottom:0.5rem}h3,.h3{font-size:1.1875rem;line-height:1.4;margin-top:0;margin-bottom:0.5rem}h4,.h4{font-size:1.125rem;line-height:1.4;margin-top:0;margin-bottom:0.5rem}h5,.h5{font-size:1.0625rem;line-height:1.4;margin-top:0;margin-bottom:0.5rem}h6,.h6{font-size:1rem;line-height:1.4;margin-top:0;margin-bottom:0.5rem}@media print, screen and (min-width: 40em){h1,.h1{font-size:3rem}h2,.h2{font-size:2.5rem}h3,.h3{font-size:1.9375rem}h4,.h4{font-size:1.5625rem}h5,.h5{font-size:1.25rem}h6,.h6{font-size:1rem}}a{line-height:inherit;color:#26A69A;text-decoration:none;cursor:pointer}a:hover,a:focus{color:#00796B}a img{border:0}hr{clear:both;max-width:75rem;height:0;margin:1.25rem auto;border-top:0;border-right:0;border-bottom:1px solid #cacaca;border-left:0}ul,ol,dl{margin-bottom:1rem;list-style-position:outside;line-height:1.6}li{font-size:inherit}ul{margin-left:1.25rem;list-style-type:disc}ol{margin-left:1.25rem}ul ul,ol ul,ul ol,ol ol{margin-left:1.25rem;margin-bottom:0}dl{margin-bottom:1rem}dl dt{margin-bottom:0.3rem;font-weight:bold}blockquote{margin:0 0 1rem;padding:0.5625rem 1.25rem 0 1.1875rem;border-left:1px solid #cacaca}blockquote,blockquote p{line-height:1.6;color:#8a8a8a}cite{display:block;font-size:0.8125rem;color:#8a8a8a}cite:before{content:"— "}abbr,abbr[title]{border-bottom:1px dotted #0a0a0a;cursor:help;text-decoration:none}figure{margin:0}code{padding:0.125rem 0.3125rem 0.0625rem;border:1px solid #cacaca;background-color:#e6e6e6;font-family:Consolas, "Liberation Mono", Courier, monospace;font-weight:normal;color:#0a0a0a}kbd{margin:0;padding:0.125rem 0.25rem 0;background-color:#e6e6e6;font-family:Consolas, "Liberation Mono", Courier, monospace;color:#0a0a0a}.subheader{margin-top:0.2rem;margin-bottom:0.5rem;font-weight:normal;line-height:1.4;color:#8a8a8a}.lead{font-size:125%;line-height:1.6}.stat{font-size:2.5rem;line-height:1}p+.stat{margin-top:-1rem}ul.no-bullet,ol.no-bullet{margin-left:0;list-style:none}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}@media print, screen and (min-width: 40em){.medium-text-left{text-align:left}.medium-text-right{text-align:right}.medium-text-center{text-align:center}.medium-text-justify{text-align:justify}}@media print, screen and (min-width: 64em){.large-text-left{text-align:left}.large-text-right{text-align:right}.large-text-center{text-align:center}.large-text-justify{text-align:justify}}.show-for-print{display:none !important}@media print{*{background:transparent !important;box-shadow:none !important;color:black !important;text-shadow:none !important}.show-for-print{display:block !important}.hide-for-print{display:none !important}table.show-for-print{display:table !important}thead.show-for-print{display:table-header-group !important}tbody.show-for-print{display:table-row-group !important}tr.show-for-print{display:table-row !important}td.show-for-print{display:table-cell !important}th.show-for-print{display:table-cell !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}.ir a:after,a[href^='javascript:']:after,a[href^='#']:after{content:''}abbr[title]:after{content:" (" attr(title) ")"}pre,blockquote{border:1px solid #8a8a8a;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}@page{margin:0.5cm}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.print-break-inside{page-break-inside:auto}}.button{display:inline-block;vertical-align:middle;margin:0 0 1rem 0;font-family:inherit;padding:0.85em 1em;-webkit-appearance:none;border:1px solid transparent;border-radius:0;transition:background-color 0.25s ease-out, color 0.25s ease-out;font-size:0.9rem;line-height:1;text-align:center;cursor:pointer;background-color:#26A69A;color:#fefefe}[data-whatinput='mouse'] .button{outline:0}.button:hover,.button:focus{background-color:#00796B;color:#fefefe}.button.tiny{font-size:0.6rem}.button.small{font-size:0.75rem}.button.large{font-size:1.25rem}.button.expanded{display:block;width:100%;margin-right:0;margin-left:0}.button.primary{background-color:#26A69A;color:#fefefe}.button.primary:hover,.button.primary:focus{background-color:#00796B;color:#fefefe}.button.secondary{background-color:#767676;color:#fefefe}.button.secondary:hover,.button.secondary:focus{background-color:#5e5e5e;color:#fefefe}.button.success{background-color:#3adb76;color:#0a0a0a}.button.success:hover,.button.success:focus{background-color:#22bb5b;color:#0a0a0a}.button.warning{background-color:#ffae00;color:#0a0a0a}.button.warning:hover,.button.warning:focus{background-color:#cc8b00;color:#0a0a0a}.button.alert{background-color:#cc4b37;color:#fefefe}.button.alert:hover,.button.alert:focus{background-color:#a53b2a;color:#fefefe}.button.disabled,.button[disabled]{opacity:0.25;cursor:not-allowed}.button.disabled,.button.disabled:hover,.button.disabled:focus,.button[disabled],.button[disabled]:hover,.button[disabled]:focus{background-color:#26A69A;color:#fefefe}.button.disabled.primary,.button[disabled].primary{opacity:0.25;cursor:not-allowed}.button.disabled.primary,.button.disabled.primary:hover,.button.disabled.primary:focus,.button[disabled].primary,.button[disabled].primary:hover,.button[disabled].primary:focus{background-color:#00796B;color:#fefefe}.button.disabled.secondary,.button[disabled].secondary{opacity:0.25;cursor:not-allowed}.button.disabled.secondary,.button.disabled.secondary:hover,.button.disabled.secondary:focus,.button[disabled].secondary,.button[disabled].secondary:hover,.button[disabled].secondary:focus{background-color:#767676;color:#fefefe}.button.disabled.success,.button[disabled].success{opacity:0.25;cursor:not-allowed}.button.disabled.success,.button.disabled.success:hover,.button.disabled.success:focus,.button[disabled].success,.button[disabled].success:hover,.button[disabled].success:focus{background-color:#3adb76;color:#0a0a0a}.button.disabled.warning,.button[disabled].warning{opacity:0.25;cursor:not-allowed}.button.disabled.warning,.button.disabled.warning:hover,.button.disabled.warning:focus,.button[disabled].warning,.button[disabled].warning:hover,.button[disabled].warning:focus{background-color:#ffae00;color:#0a0a0a}.button.disabled.alert,.button[disabled].alert{opacity:0.25;cursor:not-allowed}.button.disabled.alert,.button.disabled.alert:hover,.button.disabled.alert:focus,.button[disabled].alert,.button[disabled].alert:hover,.button[disabled].alert:focus{background-color:#cc4b37;color:#fefefe}.button.hollow{border:1px solid #26A69A;color:#26A69A}.button.hollow,.button.hollow:hover,.button.hollow:focus{background-color:transparent}.button.hollow.disabled,.button.hollow.disabled:hover,.button.hollow.disabled:focus,.button.hollow[disabled],.button.hollow[disabled]:hover,.button.hollow[disabled]:focus{background-color:transparent}.button.hollow:hover,.button.hollow:focus{border-color:#0c3d5d;color:#0c3d5d}.button.hollow:hover.disabled,.button.hollow:hover[disabled],.button.hollow:focus.disabled,.button.hollow:focus[disabled]{border:1px solid #26A69A;color:#26A69A}.button.hollow.primary{border:1px solid #26A69A;color:#26A69A}.button.hollow.primary:hover,.button.hollow.primary:focus{border-color:#0c3d5d;color:#0c3d5d}.button.hollow.primary:hover.disabled,.button.hollow.primary:hover[disabled],.button.hollow.primary:focus.disabled,.button.hollow.primary:focus[disabled]{border:1px solid #00796B;color:#00796B}.button.hollow.secondary{border:1px solid #767676;color:#767676}.button.hollow.secondary:hover,.button.hollow.secondary:focus{border-color:#3b3b3b;color:#3b3b3b}.button.hollow.secondary:hover.disabled,.button.hollow.secondary:hover[disabled],.button.hollow.secondary:focus.disabled,.button.hollow.secondary:focus[disabled]{border:1px solid #767676;color:#767676}.button.hollow.success{border:1px solid #3adb76;color:#3adb76}.button.hollow.success:hover,.button.hollow.success:focus{border-color:#157539;color:#157539}.button.hollow.success:hover.disabled,.button.hollow.success:hover[disabled],.button.hollow.success:focus.disabled,.button.hollow.success:focus[disabled]{border:1px solid #3adb76;color:#3adb76}.button.hollow.warning{border:1px solid #ffae00;color:#ffae00}.button.hollow.warning:hover,.button.hollow.warning:focus{border-color:#805700;color:#805700}.button.hollow.warning:hover.disabled,.button.hollow.warning:hover[disabled],.button.hollow.warning:focus.disabled,.button.hollow.warning:focus[disabled]{border:1px solid #ffae00;color:#ffae00}.button.hollow.alert{border:1px solid #cc4b37;color:#cc4b37}.button.hollow.alert:hover,.button.hollow.alert:focus{border-color:#67251a;color:#67251a}.button.hollow.alert:hover.disabled,.button.hollow.alert:hover[disabled],.button.hollow.alert:focus.disabled,.button.hollow.alert:focus[disabled]{border:1px solid #cc4b37;color:#cc4b37}.button.clear{border:1px solid #26A69A;color:#26A69A}.button.clear,.button.clear:hover,.button.clear:focus{background-color:transparent}.button.clear.disabled,.button.clear.disabled:hover,.button.clear.disabled:focus,.button.clear[disabled],.button.clear[disabled]:hover,.button.clear[disabled]:focus{background-color:transparent}.button.clear:hover,.button.clear:focus{border-color:#0c3d5d;color:#0c3d5d}.button.clear:hover.disabled,.button.clear:hover[disabled],.button.clear:focus.disabled,.button.clear:focus[disabled]{border:1px solid #26A69A;color:#26A69A}.button.clear,.button.clear.disabled,.button.clear[disabled],.button.clear:hover,.button.clear:hover.disabled,.button.clear:hover[disabled],.button.clear:focus,.button.clear:focus.disabled,.button.clear:focus[disabled]{border-color:transparent}.button.clear.primary{border:1px solid #26A69A;color:#26A69A}.button.clear.primary:hover,.button.clear.primary:focus{border-color:#0c3d5d;color:#0c3d5d}.button.clear.primary:hover.disabled,.button.clear.primary:hover[disabled],.button.clear.primary:focus.disabled,.button.clear.primary:focus[disabled]{border:1px solid #00796B;color:#00796B}.button.clear.primary,.button.clear.primary.disabled,.button.clear.primary[disabled],.button.clear.primary:hover,.button.clear.primary:hover.disabled,.button.clear.primary:hover[disabled],.button.clear.primary:focus,.button.clear.primary:focus.disabled,.button.clear.primary:focus[disabled]{border-color:transparent}.button.clear.secondary{border:1px solid #767676;color:#767676}.button.clear.secondary:hover,.button.clear.secondary:focus{border-color:#3b3b3b;color:#3b3b3b}.button.clear.secondary:hover.disabled,.button.clear.secondary:hover[disabled],.button.clear.secondary:focus.disabled,.button.clear.secondary:focus[disabled]{border:1px solid #767676;color:#767676}.button.clear.secondary,.button.clear.secondary.disabled,.button.clear.secondary[disabled],.button.clear.secondary:hover,.button.clear.secondary:hover.disabled,.button.clear.secondary:hover[disabled],.button.clear.secondary:focus,.button.clear.secondary:focus.disabled,.button.clear.secondary:focus[disabled]{border-color:transparent}.button.clear.success{border:1px solid #3adb76;color:#3adb76}.button.clear.success:hover,.button.clear.success:focus{border-color:#157539;color:#157539}.button.clear.success:hover.disabled,.button.clear.success:hover[disabled],.button.clear.success:focus.disabled,.button.clear.success:focus[disabled]{border:1px solid #3adb76;color:#3adb76}.button.clear.success,.button.clear.success.disabled,.button.clear.success[disabled],.button.clear.success:hover,.button.clear.success:hover.disabled,.button.clear.success:hover[disabled],.button.clear.success:focus,.button.clear.success:focus.disabled,.button.clear.success:focus[disabled]{border-color:transparent}.button.clear.warning{border:1px solid #ffae00;color:#ffae00}.button.clear.warning:hover,.button.clear.warning:focus{border-color:#805700;color:#805700}.button.clear.warning:hover.disabled,.button.clear.warning:hover[disabled],.button.clear.warning:focus.disabled,.button.clear.warning:focus[disabled]{border:1px solid #ffae00;color:#ffae00}.button.clear.warning,.button.clear.warning.disabled,.button.clear.warning[disabled],.button.clear.warning:hover,.button.clear.warning:hover.disabled,.button.clear.warning:hover[disabled],.button.clear.warning:focus,.button.clear.warning:focus.disabled,.button.clear.warning:focus[disabled]{border-color:transparent}.button.clear.alert{border:1px solid #cc4b37;color:#cc4b37}.button.clear.alert:hover,.button.clear.alert:focus{border-color:#67251a;color:#67251a}.button.clear.alert:hover.disabled,.button.clear.alert:hover[disabled],.button.clear.alert:focus.disabled,.button.clear.alert:focus[disabled]{border:1px solid #cc4b37;color:#cc4b37}.button.clear.alert,.button.clear.alert.disabled,.button.clear.alert[disabled],.button.clear.alert:hover,.button.clear.alert:hover.disabled,.button.clear.alert:hover[disabled],.button.clear.alert:focus,.button.clear.alert:focus.disabled,.button.clear.alert:focus[disabled]{border-color:transparent}.button.dropdown::after{display:block;width:0;height:0;border:inset 0.4em;content:'';border-bottom-width:0;border-top-style:solid;border-color:#fefefe transparent transparent;position:relative;top:0.4em;display:inline-block;float:right;margin-left:1em}.button.dropdown.hollow::after{border-top-color:#26A69A}.button.dropdown.hollow.primary::after{border-top-color:#26A69A}.button.dropdown.hollow.secondary::after{border-top-color:#767676}.button.dropdown.hollow.success::after{border-top-color:#3adb76}.button.dropdown.hollow.warning::after{border-top-color:#ffae00}.button.dropdown.hollow.alert::after{border-top-color:#cc4b37}.button.arrow-only::after{top:-0.1em;float:none;margin-left:0}a.button:hover,a.button:focus{text-decoration:none}[type='text'],[type='password'],[type='date'],[type='datetime'],[type='datetime-local'],[type='month'],[type='week'],[type='email'],[type='number'],[type='search'],[type='tel'],[type='time'],[type='url'],[type='color'],textarea{display:block;box-sizing:border-box;width:100%;height:2.4375rem;margin:0 0 1rem;padding:0.5rem;border:1px solid #cacaca;border-radius:0;background-color:#fefefe;box-shadow:inset 0 1px 2px rgba(10,10,10,0.1);font-family:inherit;font-size:1rem;font-weight:normal;line-height:1.5;color:#0a0a0a;transition:box-shadow 0.5s, border-color 0.25s ease-in-out;-webkit-appearance:none;-moz-appearance:none;appearance:none}[type='text']:focus,[type='password']:focus,[type='date']:focus,[type='datetime']:focus,[type='datetime-local']:focus,[type='month']:focus,[type='week']:focus,[type='email']:focus,[type='number']:focus,[type='search']:focus,[type='tel']:focus,[type='time']:focus,[type='url']:focus,[type='color']:focus,textarea:focus{outline:none;border:1px solid #8a8a8a;background-color:#fefefe;box-shadow:0 0 5px #cacaca;transition:box-shadow 0.5s, border-color 0.25s ease-in-out}textarea{max-width:100%}textarea[rows]{height:auto}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#cacaca}input::-moz-placeholder,textarea::-moz-placeholder{color:#cacaca}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#cacaca}input::placeholder,textarea::placeholder{color:#cacaca}input:disabled,input[readonly],textarea:disabled,textarea[readonly]{background-color:#e6e6e6;cursor:not-allowed}[type='submit'],[type='button']{-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:0}input[type='search']{box-sizing:border-box}[type='file'],[type='checkbox'],[type='radio']{margin:0 0 1rem}[type='checkbox']+label,[type='radio']+label{display:inline-block;vertical-align:baseline;margin-left:0.5rem;margin-right:1rem;margin-bottom:0}[type='checkbox']+label[for],[type='radio']+label[for]{cursor:pointer}label>[type='checkbox'],label>[type='radio']{margin-right:0.5rem}[type='file']{width:100%}label{display:block;margin:0;font-size:0.875rem;font-weight:normal;line-height:1.8;color:#0a0a0a}label.middle{margin:0 0 1rem;padding:0.5625rem 0}.help-text{margin-top:-0.5rem;font-size:0.8125rem;font-style:italic;color:#0a0a0a}.input-group{display:-ms-flexbox;display:flex;width:100%;margin-bottom:1rem;-ms-flex-align:stretch;align-items:stretch}.input-group>:first-child{border-radius:0 0 0 0}.input-group>:last-child>*{border-radius:0 0 0 0}.input-group-label,.input-group-field,.input-group-button,.input-group-button a,.input-group-button input,.input-group-button button,.input-group-button label{margin:0;white-space:nowrap}.input-group-label{padding:0 1rem;border:1px solid #cacaca;background:#e6e6e6;color:#0a0a0a;text-align:center;white-space:nowrap;display:-ms-flexbox;display:flex;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-align:center;align-items:center}.input-group-label:first-child{border-right:0}.input-group-label:last-child{border-left:0}.input-group-field{border-radius:0;-ms-flex:1 1 0px;flex:1 1 0px;height:auto;min-width:0}.input-group-button{padding-top:0;padding-bottom:0;text-align:center;display:-ms-flexbox;display:flex;-ms-flex:0 0 auto;flex:0 0 auto}.input-group-button a,.input-group-button input,.input-group-button button,.input-group-button label{height:auto;-ms-flex-item-align:stretch;-ms-grid-row-align:stretch;align-self:stretch;padding-top:0;padding-bottom:0;font-size:1rem}fieldset{margin:0;padding:0;border:0}legend{max-width:100%;margin-bottom:0.5rem}.fieldset{margin:1.125rem 0;padding:1.25rem;border:1px solid #cacaca}.fieldset legend{margin:0;margin-left:-0.1875rem;padding:0 0.1875rem}select{height:2.4375rem;margin:0 0 1rem;padding:0.5rem;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid #cacaca;border-radius:0;background-color:#fefefe;font-family:inherit;font-size:1rem;font-weight:normal;line-height:1.5;color:#0a0a0a;background-image:url("data:image/svg+xml;utf8,");background-origin:content-box;background-position:right -1rem center;background-repeat:no-repeat;background-size:9px 6px;padding-right:1.5rem;transition:box-shadow 0.5s, border-color 0.25s ease-in-out}@media screen and (min-width: 0\0){select{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAYCAYAAACbU/80AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIpJREFUeNrEkckNgDAMBBfRkEt0ObRBBdsGXUDgmQfK4XhH2m8czQAAy27R3tsw4Qfe2x8uOO6oYLb6GlOor3GF+swURAOmUJ+RwtEJs9WvTGEYxBXqI1MQAZhCfUQKRzDMVj+TwrAIV6jvSUEkYAr1LSkcyTBb/V+KYfX7xAeusq3sLDtGH3kEGACPWIflNZfhRQAAAABJRU5ErkJggg==")}}select:focus{outline:none;border:1px solid #8a8a8a;background-color:#fefefe;box-shadow:0 0 5px #cacaca;transition:box-shadow 0.5s, border-color 0.25s ease-in-out}select:disabled{background-color:#e6e6e6;cursor:not-allowed}select::-ms-expand{display:none}select[multiple]{height:auto;background-image:none}.is-invalid-input:not(:focus){border-color:#cc4b37;background-color:#f9ecea}.is-invalid-input:not(:focus)::-webkit-input-placeholder{color:#cc4b37}.is-invalid-input:not(:focus)::-moz-placeholder{color:#cc4b37}.is-invalid-input:not(:focus):-ms-input-placeholder{color:#cc4b37}.is-invalid-input:not(:focus)::placeholder{color:#cc4b37}.is-invalid-label{color:#cc4b37}.form-error{display:none;margin-top:-0.5rem;margin-bottom:1rem;font-size:0.75rem;font-weight:bold;color:#cc4b37}.form-error.is-visible{display:block}.accordion{margin-left:0;background:#fefefe;list-style-type:none}.accordion[disabled] .accordion-title{cursor:not-allowed}.accordion-item:first-child>:first-child{border-radius:0 0 0 0}.accordion-item:last-child>:last-child{border-radius:0 0 0 0}.accordion-title{position:relative;display:block;padding:1.25rem 1rem;border:1px solid #e6e6e6;border-bottom:0;font-size:0.75rem;line-height:1;color:#26A69A}:last-child:not(.is-active)>.accordion-title{border-bottom:1px solid #e6e6e6;border-radius:0 0 0 0}.accordion-title:hover,.accordion-title:focus{background-color:#e6e6e6}.accordion-title::before{position:absolute;top:50%;right:1rem;margin-top:-0.5rem;content:'+'}.is-active>.accordion-title::before{content:'\2013'}.accordion-content{display:none;padding:1rem;border:1px solid #e6e6e6;border-bottom:0;background-color:#fefefe;color:#0a0a0a}:last-child>.accordion-content:last-child{border-bottom:1px solid #e6e6e6}.accordion-menu li{width:100%}.accordion-menu a{padding:0.7rem 1rem}.accordion-menu .is-accordion-submenu a{padding:0.7rem 1rem}.accordion-menu .nested.is-accordion-submenu{margin-right:0;margin-left:1rem}.accordion-menu.align-right .nested.is-accordion-submenu{margin-right:1rem;margin-left:0}.accordion-menu .is-accordion-submenu-parent:not(.has-submenu-toggle)>a{position:relative}.accordion-menu .is-accordion-submenu-parent:not(.has-submenu-toggle)>a::after{display:block;width:0;height:0;border:inset 6px;content:'';border-bottom-width:0;border-top-style:solid;border-color:#26A69A transparent transparent;position:absolute;top:50%;margin-top:-3px;right:1rem}.accordion-menu.align-left .is-accordion-submenu-parent>a::after{left:auto;right:1rem}.accordion-menu.align-right .is-accordion-submenu-parent>a::after{right:auto;left:1rem}.accordion-menu .is-accordion-submenu-parent[aria-expanded='true']>a::after{-ms-transform:rotate(180deg);transform:rotate(180deg);-ms-transform-origin:50% 50%;transform-origin:50% 50%}.is-accordion-submenu-parent{position:relative}.has-submenu-toggle>a{margin-right:40px}.submenu-toggle{position:absolute;top:0;right:0;cursor:pointer;width:40px;height:40px}.submenu-toggle::after{display:block;width:0;height:0;border:inset 6px;content:'';border-bottom-width:0;border-top-style:solid;border-color:#26A69A transparent transparent;top:0;bottom:0;margin:auto}.submenu-toggle[aria-expanded='true']::after{-ms-transform:scaleY(-1);transform:scaleY(-1);-ms-transform-origin:50% 50%;transform-origin:50% 50%}.submenu-toggle-text{position:absolute !important;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;-webkit-clip-path:inset(50%);clip-path:inset(50%);border:0}.badge{display:inline-block;min-width:2.1em;padding:0.3em;border-radius:50%;font-size:0.6rem;text-align:center;background:#26A69A;color:#fefefe}.badge.primary{background:#26A69A;color:#fefefe}.badge.secondary{background:#767676;color:#fefefe}.badge.success{background:#3adb76;color:#0a0a0a}.badge.warning{background:#ffae00;color:#0a0a0a}.badge.alert{background:#cc4b37;color:#fefefe}.breadcrumbs{margin:0 0 1rem 0;list-style:none}.breadcrumbs::before,.breadcrumbs::after{display:table;content:' ';-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-order:1;order:1}.breadcrumbs::after{clear:both}.breadcrumbs li{float:left;font-size:0.6875rem;color:#0a0a0a;cursor:default;text-transform:uppercase}.breadcrumbs li:not(:last-child)::after{position:relative;margin:0 0.75rem;opacity:1;content:"/";color:#cacaca}.breadcrumbs a{color:#26A69A}.breadcrumbs a:hover{text-decoration:underline}.breadcrumbs .disabled{color:#cacaca;cursor:not-allowed}.button-group{margin-bottom:1rem;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-ms-flex-align:stretch;align-items:stretch}.button-group::before,.button-group::after{display:table;content:' ';-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-order:1;order:1}.button-group::after{clear:both}.button-group .button{margin:0;margin-right:1px;margin-bottom:1px;font-size:0.9rem;-ms-flex:0 0 auto;flex:0 0 auto}.button-group .button:last-child{margin-right:0}.button-group.tiny .button{font-size:0.6rem}.button-group.small .button{font-size:0.75rem}.button-group.large .button{font-size:1.25rem}.button-group.expanded .button{-ms-flex:1 1 0px;flex:1 1 0px}.button-group.primary .button{background-color:#26A69A;color:#fefefe}.button-group.primary .button:hover,.button-group.primary .button:focus{background-color:#00796B;color:#fefefe}.button-group.secondary .button{background-color:#767676;color:#fefefe}.button-group.secondary .button:hover,.button-group.secondary .button:focus{background-color:#5e5e5e;color:#fefefe}.button-group.success .button{background-color:#3adb76;color:#0a0a0a}.button-group.success .button:hover,.button-group.success .button:focus{background-color:#22bb5b;color:#0a0a0a}.button-group.warning .button{background-color:#ffae00;color:#0a0a0a}.button-group.warning .button:hover,.button-group.warning .button:focus{background-color:#cc8b00;color:#0a0a0a}.button-group.alert .button{background-color:#cc4b37;color:#fefefe}.button-group.alert .button:hover,.button-group.alert .button:focus{background-color:#a53b2a;color:#fefefe}.button-group.stacked,.button-group.stacked-for-small,.button-group.stacked-for-medium{-ms-flex-wrap:wrap;flex-wrap:wrap}.button-group.stacked .button,.button-group.stacked-for-small .button,.button-group.stacked-for-medium .button{-ms-flex:0 0 100%;flex:0 0 100%}.button-group.stacked .button:last-child,.button-group.stacked-for-small .button:last-child,.button-group.stacked-for-medium .button:last-child{margin-bottom:0}@media print, screen and (min-width: 40em){.button-group.stacked-for-small .button{-ms-flex:1 1 0px;flex:1 1 0px;margin-bottom:0}}@media print, screen and (min-width: 64em){.button-group.stacked-for-medium .button{-ms-flex:1 1 0px;flex:1 1 0px;margin-bottom:0}}@media screen and (max-width: 39.9375em){.button-group.stacked-for-small.expanded{display:block}.button-group.stacked-for-small.expanded .button{display:block;margin-right:0}}.card{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-positive:1;flex-grow:1;margin-bottom:1rem;border:1px solid #e6e6e6;border-radius:0;background:#fefefe;box-shadow:none;overflow:hidden;color:#0a0a0a}.card>:last-child{margin-bottom:0}.card-divider{-ms-flex:0 1 auto;flex:0 1 auto;display:-ms-flexbox;display:flex;padding:1rem;background:#e6e6e6}.card-divider>:last-child{margin-bottom:0}.card-section{-ms-flex:1 0 auto;flex:1 0 auto;padding:1rem}.card-section>:last-child{margin-bottom:0}.card-image{min-height:1px}.callout{position:relative;margin:0 0 1rem 0;padding:1rem;border:1px solid rgba(10,10,10,0.25);border-radius:0;background-color:white;color:#0a0a0a}.callout>:first-child{margin-top:0}.callout>:last-child{margin-bottom:0}.callout.primary{background-color:#d7ecfa;color:#0a0a0a}.callout.secondary{background-color:#eaeaea;color:#0a0a0a}.callout.success{background-color:#e1faea;color:#0a0a0a}.callout.warning{background-color:#fff3d9;color:#0a0a0a}.callout.alert{background-color:#f7e4e1;color:#0a0a0a}.callout.small{padding-top:0.5rem;padding-right:0.5rem;padding-bottom:0.5rem;padding-left:0.5rem}.callout.large{padding-top:3rem;padding-right:3rem;padding-bottom:3rem;padding-left:3rem}.close-button{position:absolute;color:#8a8a8a;cursor:pointer}[data-whatinput='mouse'] .close-button{outline:0}.close-button:hover,.close-button:focus{color:#0a0a0a}.close-button.small{right:0.66rem;top:0.33em;font-size:1.5em;line-height:1}.close-button,.close-button.medium{right:1rem;top:0.5rem;font-size:2em;line-height:1}.menu{padding:0;margin:0;list-style:none;position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}[data-whatinput='mouse'] .menu li{outline:0}.menu a,.menu .button{line-height:1;text-decoration:none;display:block;padding:0.7rem 1rem}.menu input,.menu select,.menu a,.menu button{margin-bottom:0}.menu input{display:inline-block}.menu,.menu.horizontal{-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-direction:row;flex-direction:row}.menu.vertical{-ms-flex-wrap:nowrap;flex-wrap:nowrap;-ms-flex-direction:column;flex-direction:column}.menu.expanded li{-ms-flex:1 1 0px;flex:1 1 0px}.menu.simple{-ms-flex-align:center;align-items:center}.menu.simple li+li{margin-left:1rem}.menu.simple a{padding:0}@media print, screen and (min-width: 40em){.menu.medium-horizontal{-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-direction:row;flex-direction:row}.menu.medium-vertical{-ms-flex-wrap:nowrap;flex-wrap:nowrap;-ms-flex-direction:column;flex-direction:column}.menu.medium-expanded li{-ms-flex:1 1 0px;flex:1 1 0px}.menu.medium-simple li{-ms-flex:1 1 0px;flex:1 1 0px}}@media print, screen and (min-width: 64em){.menu.large-horizontal{-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-direction:row;flex-direction:row}.menu.large-vertical{-ms-flex-wrap:nowrap;flex-wrap:nowrap;-ms-flex-direction:column;flex-direction:column}.menu.large-expanded li{-ms-flex:1 1 0px;flex:1 1 0px}.menu.large-simple li{-ms-flex:1 1 0px;flex:1 1 0px}}.menu.nested{margin-right:0;margin-left:1rem}.menu.icons a{display:-ms-flexbox;display:flex}.menu.icon-top a,.menu.icon-right a,.menu.icon-bottom a,.menu.icon-left a{display:-ms-flexbox;display:flex}.menu.icon-left li a{-ms-flex-flow:row nowrap;flex-flow:row nowrap}.menu.icon-left li a img,.menu.icon-left li a i,.menu.icon-left li a svg{margin-right:0.25rem}.menu.icon-right li a{-ms-flex-flow:row nowrap;flex-flow:row nowrap}.menu.icon-right li a img,.menu.icon-right li a i,.menu.icon-right li a svg{margin-left:0.25rem}.menu.icon-top li a{-ms-flex-flow:column nowrap;flex-flow:column nowrap}.menu.icon-top li a img,.menu.icon-top li a i,.menu.icon-top li a svg{-ms-flex-item-align:stretch;-ms-grid-row-align:stretch;align-self:stretch;margin-bottom:0.25rem;text-align:center}.menu.icon-bottom li a{-ms-flex-flow:column nowrap;flex-flow:column nowrap}.menu.icon-bottom li a img,.menu.icon-bottom li a i,.menu.icon-bottom li a svg{-ms-flex-item-align:stretch;-ms-grid-row-align:stretch;align-self:stretch;margin-bottom:0.25rem;text-align:center}.menu .is-active>a{background:#26A69A;color:#fefefe}.menu .active>a{background:#26A69A;color:#fefefe}.menu.align-left{-ms-flex-pack:start;justify-content:flex-start}.menu.align-right li{display:-ms-flexbox;display:flex;-ms-flex-pack:end;justify-content:flex-end}.menu.align-right li .submenu li{-ms-flex-pack:start;justify-content:flex-start}.menu.align-right.vertical li{display:block;text-align:right}.menu.align-right.vertical li .submenu li{text-align:right}.menu.align-right .nested{margin-right:1rem;margin-left:0}.menu.align-center li{display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center}.menu.align-center li .submenu li{-ms-flex-pack:start;justify-content:flex-start}.menu .menu-text{padding:0.7rem 1rem;font-weight:bold;line-height:1;color:inherit}.menu-centered>.menu{-ms-flex-pack:center;justify-content:center}.menu-centered>.menu li{display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center}.menu-centered>.menu li .submenu li{-ms-flex-pack:start;justify-content:flex-start}.no-js [data-responsive-menu] ul{display:none}.menu-icon{position:relative;display:inline-block;vertical-align:middle;width:20px;height:16px;cursor:pointer}.menu-icon::after{position:absolute;top:0;left:0;display:block;width:100%;height:2px;background:#fefefe;box-shadow:0 7px 0 #fefefe, 0 14px 0 #fefefe;content:''}.menu-icon:hover::after{background:#cacaca;box-shadow:0 7px 0 #cacaca, 0 14px 0 #cacaca}.menu-icon.dark{position:relative;display:inline-block;vertical-align:middle;width:20px;height:16px;cursor:pointer}.menu-icon.dark::after{position:absolute;top:0;left:0;display:block;width:100%;height:2px;background:#0a0a0a;box-shadow:0 7px 0 #0a0a0a, 0 14px 0 #0a0a0a;content:''}.menu-icon.dark:hover::after{background:#8a8a8a;box-shadow:0 7px 0 #8a8a8a, 0 14px 0 #8a8a8a}.is-drilldown{position:relative;overflow:hidden}.is-drilldown li{display:block}.is-drilldown.animate-height{transition:height 0.5s}.drilldown a{padding:0.7rem 1rem;background:#fefefe}.drilldown .is-drilldown-submenu{position:absolute;top:0;left:100%;z-index:-1;width:100%;background:#fefefe;transition:transform 0.15s linear}.drilldown .is-drilldown-submenu.is-active{z-index:1;display:block;-ms-transform:translateX(-100%);transform:translateX(-100%)}.drilldown .is-drilldown-submenu.is-closing{-ms-transform:translateX(100%);transform:translateX(100%)}.drilldown .is-drilldown-submenu a{padding:0.7rem 1rem}.drilldown .nested.is-drilldown-submenu{margin-right:0;margin-left:0}.drilldown .drilldown-submenu-cover-previous{min-height:100%}.drilldown .is-drilldown-submenu-parent>a{position:relative}.drilldown .is-drilldown-submenu-parent>a::after{position:absolute;top:50%;margin-top:-6px;right:1rem;display:block;width:0;height:0;border:inset 6px;content:'';border-right-width:0;border-left-style:solid;border-color:transparent transparent transparent #26A69A}.drilldown.align-left .is-drilldown-submenu-parent>a::after{left:auto;right:1rem;display:block;width:0;height:0;border:inset 6px;content:'';border-right-width:0;border-left-style:solid;border-color:transparent transparent transparent #26A69A}.drilldown.align-right .is-drilldown-submenu-parent>a::after{right:auto;left:1rem;display:block;width:0;height:0;border:inset 6px;content:'';border-left-width:0;border-right-style:solid;border-color:transparent #26A69A transparent transparent}.drilldown .js-drilldown-back>a::before{display:block;width:0;height:0;border:inset 6px;content:'';border-left-width:0;border-right-style:solid;border-color:transparent #26A69A transparent transparent;border-left-width:0;display:inline-block;vertical-align:middle;margin-right:0.75rem;border-left-width:0}.dropdown-pane{position:absolute;z-index:10;width:300px;padding:1rem;visibility:hidden;display:none;border:1px solid #cacaca;border-radius:0;background-color:#fefefe;font-size:1rem}.dropdown-pane.is-opening{display:block}.dropdown-pane.is-open{visibility:visible;display:block}.dropdown-pane.tiny{width:100px}.dropdown-pane.small{width:200px}.dropdown-pane.large{width:400px}.dropdown.menu>li.opens-left>.is-dropdown-submenu{top:100%;right:0;left:auto}.dropdown.menu>li.opens-right>.is-dropdown-submenu{top:100%;right:auto;left:0}.dropdown.menu>li.is-dropdown-submenu-parent>a{position:relative;padding-right:1.5rem}.dropdown.menu>li.is-dropdown-submenu-parent>a::after{display:block;width:0;height:0;border:inset 6px;content:'';border-bottom-width:0;border-top-style:solid;border-color:#26A69A transparent transparent;right:5px;left:auto;margin-top:-3px}.dropdown.menu a{padding:0.7rem 1rem}[data-whatinput='mouse'] .dropdown.menu a{outline:0}.dropdown.menu .is-active>a{background:transparent;color:#26A69A}.no-js .dropdown.menu ul{display:none}.dropdown.menu .nested.is-dropdown-submenu{margin-right:0;margin-left:0}.dropdown.menu.vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.vertical>li.opens-left>.is-dropdown-submenu{right:100%;left:auto;top:0}.dropdown.menu.vertical>li.opens-right>.is-dropdown-submenu{right:auto;left:100%}.dropdown.menu.vertical>li>a::after{right:14px}.dropdown.menu.vertical>li.opens-left>a::after{right:auto;left:5px;display:block;width:0;height:0;border:inset 6px;content:'';border-left-width:0;border-right-style:solid;border-color:transparent #26A69A transparent transparent}.dropdown.menu.vertical>li.opens-right>a::after{display:block;width:0;height:0;border:inset 6px;content:'';border-right-width:0;border-left-style:solid;border-color:transparent transparent transparent #26A69A}@media print, screen and (min-width: 40em){.dropdown.menu.medium-horizontal>li.opens-left>.is-dropdown-submenu{top:100%;right:0;left:auto}.dropdown.menu.medium-horizontal>li.opens-right>.is-dropdown-submenu{top:100%;right:auto;left:0}.dropdown.menu.medium-horizontal>li.is-dropdown-submenu-parent>a{position:relative;padding-right:1.5rem}.dropdown.menu.medium-horizontal>li.is-dropdown-submenu-parent>a::after{display:block;width:0;height:0;border:inset 6px;content:'';border-bottom-width:0;border-top-style:solid;border-color:#26A69A transparent transparent;right:5px;left:auto;margin-top:-3px}.dropdown.menu.medium-vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.medium-vertical>li.opens-left>.is-dropdown-submenu{right:100%;left:auto;top:0}.dropdown.menu.medium-vertical>li.opens-right>.is-dropdown-submenu{right:auto;left:100%}.dropdown.menu.medium-vertical>li>a::after{right:14px}.dropdown.menu.medium-vertical>li.opens-left>a::after{right:auto;left:5px;display:block;width:0;height:0;border:inset 6px;content:'';border-left-width:0;border-right-style:solid;border-color:transparent #26A69A transparent transparent}.dropdown.menu.medium-vertical>li.opens-right>a::after{display:block;width:0;height:0;border:inset 6px;content:'';border-right-width:0;border-left-style:solid;border-color:transparent transparent transparent #26A69A}}@media print, screen and (min-width: 64em){.dropdown.menu.large-horizontal>li.opens-left>.is-dropdown-submenu{top:100%;right:0;left:auto}.dropdown.menu.large-horizontal>li.opens-right>.is-dropdown-submenu{top:100%;right:auto;left:0}.dropdown.menu.large-horizontal>li.is-dropdown-submenu-parent>a{position:relative;padding-right:1.5rem}.dropdown.menu.large-horizontal>li.is-dropdown-submenu-parent>a::after{display:block;width:0;height:0;border:inset 6px;content:'';border-bottom-width:0;border-top-style:solid;border-color:#26A69A transparent transparent;right:5px;left:auto;margin-top:-3px}.dropdown.menu.large-vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.large-vertical>li.opens-left>.is-dropdown-submenu{right:100%;left:auto;top:0}.dropdown.menu.large-vertical>li.opens-right>.is-dropdown-submenu{right:auto;left:100%}.dropdown.menu.large-vertical>li>a::after{right:14px}.dropdown.menu.large-vertical>li.opens-left>a::after{right:auto;left:5px;display:block;width:0;height:0;border:inset 6px;content:'';border-left-width:0;border-right-style:solid;border-color:transparent #26A69A transparent transparent}.dropdown.menu.large-vertical>li.opens-right>a::after{display:block;width:0;height:0;border:inset 6px;content:'';border-right-width:0;border-left-style:solid;border-color:transparent transparent transparent #26A69A}}.dropdown.menu.align-right .is-dropdown-submenu.first-sub{top:100%;right:0;left:auto}.is-dropdown-menu.vertical{width:100px}.is-dropdown-menu.vertical.align-right{float:right}.is-dropdown-submenu-parent{position:relative}.is-dropdown-submenu-parent a::after{position:absolute;top:50%;right:5px;left:auto;margin-top:-6px}.is-dropdown-submenu-parent.opens-inner>.is-dropdown-submenu{top:100%;left:auto}.is-dropdown-submenu-parent.opens-left>.is-dropdown-submenu{right:100%;left:auto}.is-dropdown-submenu-parent.opens-right>.is-dropdown-submenu{right:auto;left:100%}.is-dropdown-submenu{position:absolute;top:0;left:100%;z-index:1;display:none;min-width:200px;border:1px solid #cacaca;background:#fefefe}.dropdown .is-dropdown-submenu a{padding:0.7rem 1rem}.is-dropdown-submenu .is-dropdown-submenu-parent>a::after{right:14px}.is-dropdown-submenu .is-dropdown-submenu-parent.opens-left>a::after{right:auto;left:5px;display:block;width:0;height:0;border:inset 6px;content:'';border-left-width:0;border-right-style:solid;border-color:transparent #26A69A transparent transparent}.is-dropdown-submenu .is-dropdown-submenu-parent.opens-right>a::after{display:block;width:0;height:0;border:inset 6px;content:'';border-right-width:0;border-left-style:solid;border-color:transparent transparent transparent #26A69A}.is-dropdown-submenu .is-dropdown-submenu{margin-top:-1px}.is-dropdown-submenu>li{width:100%}.is-dropdown-submenu.js-dropdown-active{display:block}.responsive-embed,.flex-video{position:relative;height:0;margin-bottom:1rem;padding-bottom:75%;overflow:hidden}.responsive-embed iframe,.responsive-embed object,.responsive-embed embed,.responsive-embed video,.flex-video iframe,.flex-video object,.flex-video embed,.flex-video video{position:absolute;top:0;left:0;width:100%;height:100%}.responsive-embed.widescreen,.flex-video.widescreen{padding-bottom:56.25%}.label{display:inline-block;padding:0.33333rem 0.5rem;border-radius:0;font-size:0.8rem;line-height:1;white-space:nowrap;cursor:default;background:#26A69A;color:#fefefe}.label.primary{background:#26A69A;color:#fefefe}.label.secondary{background:#767676;color:#fefefe}.label.success{background:#3adb76;color:#0a0a0a}.label.warning{background:#ffae00;color:#0a0a0a}.label.alert{background:#cc4b37;color:#fefefe}.media-object{display:-ms-flexbox;display:flex;margin-bottom:1rem;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.media-object img{max-width:none}@media screen and (max-width: 39.9375em){.media-object.stack-for-small{-ms-flex-wrap:wrap;flex-wrap:wrap}}@media screen and (max-width: 39.9375em){.media-object.stack-for-small .media-object-section{padding:0;padding-bottom:1rem;-ms-flex-preferred-size:100%;flex-basis:100%;max-width:100%}.media-object.stack-for-small .media-object-section img{width:100%}}.media-object-section{-ms-flex:0 1 auto;flex:0 1 auto}.media-object-section:first-child{padding-right:1rem}.media-object-section:last-child:not(:nth-child(2)){padding-left:1rem}.media-object-section>:last-child{margin-bottom:0}.media-object-section.main-section{-ms-flex:1 1 0px;flex:1 1 0px}.is-off-canvas-open{overflow:hidden}.js-off-canvas-overlay{position:absolute;top:0;left:0;z-index:11;width:100%;height:100%;transition:opacity 0.5s ease, visibility 0.5s ease;background:rgba(254,254,254,0.25);opacity:0;visibility:hidden;overflow:hidden}.js-off-canvas-overlay.is-visible{opacity:1;visibility:visible}.js-off-canvas-overlay.is-closable{cursor:pointer}.js-off-canvas-overlay.is-overlay-absolute{position:absolute}.js-off-canvas-overlay.is-overlay-fixed{position:fixed}.off-canvas-wrapper{position:relative;overflow:hidden}.off-canvas{position:fixed;z-index:12;transition:transform 0.5s ease;-webkit-backface-visibility:hidden;backface-visibility:hidden;background:#e6e6e6}[data-whatinput='mouse'] .off-canvas{outline:0}.off-canvas.is-transition-push{z-index:12}.off-canvas.is-closed{visibility:hidden}.off-canvas.is-transition-overlap{z-index:13}.off-canvas.is-transition-overlap.is-open{box-shadow:0 0 10px rgba(10,10,10,0.7)}.off-canvas.is-open{-ms-transform:translate(0, 0);transform:translate(0, 0)}.off-canvas-absolute{position:absolute;z-index:12;transition:transform 0.5s ease;-webkit-backface-visibility:hidden;backface-visibility:hidden;background:#e6e6e6}[data-whatinput='mouse'] .off-canvas-absolute{outline:0}.off-canvas-absolute.is-transition-push{z-index:12}.off-canvas-absolute.is-closed{visibility:hidden}.off-canvas-absolute.is-transition-overlap{z-index:13}.off-canvas-absolute.is-transition-overlap.is-open{box-shadow:0 0 10px rgba(10,10,10,0.7)}.off-canvas-absolute.is-open{-ms-transform:translate(0, 0);transform:translate(0, 0)}.position-left{top:0;left:0;height:100%;overflow-y:auto;width:250px;-ms-transform:translateX(-250px);transform:translateX(-250px)}.off-canvas-content .off-canvas.position-left{-ms-transform:translateX(-250px);transform:translateX(-250px)}.off-canvas-content .off-canvas.position-left.is-transition-overlap.is-open{-ms-transform:translate(0, 0);transform:translate(0, 0)}.off-canvas-content.is-open-left.has-transition-push{-ms-transform:translateX(250px);transform:translateX(250px)}.position-left.is-transition-push{box-shadow:inset -13px 0 20px -13px rgba(10,10,10,0.25)}.position-right{top:0;right:0;height:100%;overflow-y:auto;width:250px;-ms-transform:translateX(250px);transform:translateX(250px)}.off-canvas-content .off-canvas.position-right{-ms-transform:translateX(250px);transform:translateX(250px)}.off-canvas-content .off-canvas.position-right.is-transition-overlap.is-open{-ms-transform:translate(0, 0);transform:translate(0, 0)}.off-canvas-content.is-open-right.has-transition-push{-ms-transform:translateX(-250px);transform:translateX(-250px)}.position-right.is-transition-push{box-shadow:inset 13px 0 20px -13px rgba(10,10,10,0.25)}.position-top{top:0;left:0;width:100%;overflow-x:auto;height:250px;-ms-transform:translateY(-250px);transform:translateY(-250px)}.off-canvas-content .off-canvas.position-top{-ms-transform:translateY(-250px);transform:translateY(-250px)}.off-canvas-content .off-canvas.position-top.is-transition-overlap.is-open{-ms-transform:translate(0, 0);transform:translate(0, 0)}.off-canvas-content.is-open-top.has-transition-push{-ms-transform:translateY(250px);transform:translateY(250px)}.position-top.is-transition-push{box-shadow:inset 0 -13px 20px -13px rgba(10,10,10,0.25)}.position-bottom{bottom:0;left:0;width:100%;overflow-x:auto;height:250px;-ms-transform:translateY(250px);transform:translateY(250px)}.off-canvas-content .off-canvas.position-bottom{-ms-transform:translateY(250px);transform:translateY(250px)}.off-canvas-content .off-canvas.position-bottom.is-transition-overlap.is-open{-ms-transform:translate(0, 0);transform:translate(0, 0)}.off-canvas-content.is-open-bottom.has-transition-push{-ms-transform:translateY(-250px);transform:translateY(-250px)}.position-bottom.is-transition-push{box-shadow:inset 0 13px 20px -13px rgba(10,10,10,0.25)}.off-canvas-content{-ms-transform:none;transform:none;transition:transform 0.5s ease;-webkit-backface-visibility:hidden;backface-visibility:hidden}.off-canvas-content.has-transition-push{-ms-transform:translate(0, 0);transform:translate(0, 0)}.off-canvas-content .off-canvas.is-open{-ms-transform:translate(0, 0);transform:translate(0, 0)}@media print, screen and (min-width: 40em){.position-left.reveal-for-medium{-ms-transform:none;transform:none;z-index:12;transition:none;visibility:visible}.position-left.reveal-for-medium .close-button{display:none}.off-canvas-content .position-left.reveal-for-medium{-ms-transform:none;transform:none}.off-canvas-content.has-reveal-left{margin-left:250px}.position-left.reveal-for-medium ~ .off-canvas-content{margin-left:250px}.position-right.reveal-for-medium{-ms-transform:none;transform:none;z-index:12;transition:none;visibility:visible}.position-right.reveal-for-medium .close-button{display:none}.off-canvas-content .position-right.reveal-for-medium{-ms-transform:none;transform:none}.off-canvas-content.has-reveal-right{margin-right:250px}.position-right.reveal-for-medium ~ .off-canvas-content{margin-right:250px}.position-top.reveal-for-medium{-ms-transform:none;transform:none;z-index:12;transition:none;visibility:visible}.position-top.reveal-for-medium .close-button{display:none}.off-canvas-content .position-top.reveal-for-medium{-ms-transform:none;transform:none}.off-canvas-content.has-reveal-top{margin-top:250px}.position-top.reveal-for-medium ~ .off-canvas-content{margin-top:250px}.position-bottom.reveal-for-medium{-ms-transform:none;transform:none;z-index:12;transition:none;visibility:visible}.position-bottom.reveal-for-medium .close-button{display:none}.off-canvas-content .position-bottom.reveal-for-medium{-ms-transform:none;transform:none}.off-canvas-content.has-reveal-bottom{margin-bottom:250px}.position-bottom.reveal-for-medium ~ .off-canvas-content{margin-bottom:250px}}@media print, screen and (min-width: 64em){.position-left.reveal-for-large{-ms-transform:none;transform:none;z-index:12;transition:none;visibility:visible}.position-left.reveal-for-large .close-button{display:none}.off-canvas-content .position-left.reveal-for-large{-ms-transform:none;transform:none}.off-canvas-content.has-reveal-left{margin-left:250px}.position-left.reveal-for-large ~ .off-canvas-content{margin-left:250px}.position-right.reveal-for-large{-ms-transform:none;transform:none;z-index:12;transition:none;visibility:visible}.position-right.reveal-for-large .close-button{display:none}.off-canvas-content .position-right.reveal-for-large{-ms-transform:none;transform:none}.off-canvas-content.has-reveal-right{margin-right:250px}.position-right.reveal-for-large ~ .off-canvas-content{margin-right:250px}.position-top.reveal-for-large{-ms-transform:none;transform:none;z-index:12;transition:none;visibility:visible}.position-top.reveal-for-large .close-button{display:none}.off-canvas-content .position-top.reveal-for-large{-ms-transform:none;transform:none}.off-canvas-content.has-reveal-top{margin-top:250px}.position-top.reveal-for-large ~ .off-canvas-content{margin-top:250px}.position-bottom.reveal-for-large{-ms-transform:none;transform:none;z-index:12;transition:none;visibility:visible}.position-bottom.reveal-for-large .close-button{display:none}.off-canvas-content .position-bottom.reveal-for-large{-ms-transform:none;transform:none}.off-canvas-content.has-reveal-bottom{margin-bottom:250px}.position-bottom.reveal-for-large ~ .off-canvas-content{margin-bottom:250px}}@media print, screen and (min-width: 40em){.off-canvas.in-canvas-for-medium{visibility:visible;height:auto;position:static;background:inherit;width:inherit;overflow:inherit;transition:inherit}.off-canvas.in-canvas-for-medium.position-left,.off-canvas.in-canvas-for-medium.position-right,.off-canvas.in-canvas-for-medium.position-top,.off-canvas.in-canvas-for-medium.position-bottom{box-shadow:none;-ms-transform:none;transform:none}.off-canvas.in-canvas-for-medium .close-button{display:none}}@media print, screen and (min-width: 64em){.off-canvas.in-canvas-for-large{visibility:visible;height:auto;position:static;background:inherit;width:inherit;overflow:inherit;transition:inherit}.off-canvas.in-canvas-for-large.position-left,.off-canvas.in-canvas-for-large.position-right,.off-canvas.in-canvas-for-large.position-top,.off-canvas.in-canvas-for-large.position-bottom{box-shadow:none;-ms-transform:none;transform:none}.off-canvas.in-canvas-for-large .close-button{display:none}}.orbit{position:relative}.orbit-container{position:relative;height:0;margin:0;list-style:none;overflow:hidden}.orbit-slide{width:100%}.orbit-slide.no-motionui.is-active{top:0;left:0}.orbit-figure{margin:0}.orbit-image{width:100%;max-width:100%;margin:0}.orbit-caption{position:absolute;bottom:0;width:100%;margin-bottom:0;padding:1rem;background-color:rgba(10,10,10,0.5);color:#fefefe}.orbit-previous,.orbit-next{position:absolute;top:50%;-ms-transform:translateY(-50%);transform:translateY(-50%);z-index:10;padding:1rem;color:#fefefe}[data-whatinput='mouse'] .orbit-previous,[data-whatinput='mouse'] .orbit-next{outline:0}.orbit-previous:hover,.orbit-next:hover,.orbit-previous:active,.orbit-next:active,.orbit-previous:focus,.orbit-next:focus{background-color:rgba(10,10,10,0.5)}.orbit-previous{left:0}.orbit-next{left:auto;right:0}.orbit-bullets{position:relative;margin-top:0.8rem;margin-bottom:0.8rem;text-align:center}[data-whatinput='mouse'] .orbit-bullets{outline:0}.orbit-bullets button{width:1.2rem;height:1.2rem;margin:0.1rem;border-radius:50%;background-color:#cacaca}.orbit-bullets button:hover{background-color:#8a8a8a}.orbit-bullets button.is-active{background-color:#8a8a8a}.pagination{margin-left:0;margin-bottom:1rem}.pagination::before,.pagination::after{display:table;content:' ';-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-order:1;order:1}.pagination::after{clear:both}.pagination li{margin-right:0.0625rem;border-radius:0;font-size:0.875rem;display:none}.pagination li:last-child,.pagination li:first-child{display:inline-block}@media print, screen and (min-width: 40em){.pagination li{display:inline-block}}.pagination a,.pagination button{display:block;padding:0.1875rem 0.625rem;border-radius:0;color:#0a0a0a}.pagination a:hover,.pagination button:hover{background:#e6e6e6}.pagination .current{padding:0.1875rem 0.625rem;background:#26A69A;color:#fefefe;cursor:default}.pagination .disabled{padding:0.1875rem 0.625rem;color:#cacaca;cursor:not-allowed}.pagination .disabled:hover{background:transparent}.pagination .ellipsis::after{padding:0.1875rem 0.625rem;content:'\2026';color:#0a0a0a}.pagination-previous a::before,.pagination-previous.disabled::before{display:inline-block;margin-right:0.5rem;content:'\00ab'}.pagination-next a::after,.pagination-next.disabled::after{display:inline-block;margin-left:0.5rem;content:'\00bb'}.progress{height:1rem;margin-bottom:1rem;border-radius:0;background-color:#cacaca}.progress.primary .progress-meter{background-color:#26A69A}.progress.secondary .progress-meter{background-color:#767676}.progress.success .progress-meter{background-color:#3adb76}.progress.warning .progress-meter{background-color:#ffae00}.progress.alert .progress-meter{background-color:#cc4b37}.progress-meter{position:relative;display:block;width:0%;height:100%;background-color:#26A69A}.progress-meter-text{position:absolute;top:50%;left:50%;-ms-transform:translate(-50%, -50%);transform:translate(-50%, -50%);position:absolute;margin:0;font-size:0.75rem;font-weight:bold;color:#fefefe;white-space:nowrap}body.is-reveal-open{overflow:hidden}html.is-reveal-open,html.is-reveal-open body{min-height:100%;overflow:hidden;position:fixed;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.reveal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1005;display:none;background-color:rgba(10,10,10,0.45);overflow-y:scroll}.reveal{z-index:1006;-webkit-backface-visibility:hidden;backface-visibility:hidden;display:none;padding:1rem;border:1px solid #cacaca;border-radius:0;background-color:#fefefe;position:relative;top:100px;margin-right:auto;margin-left:auto;overflow-y:auto}[data-whatinput='mouse'] .reveal{outline:0}@media print, screen and (min-width: 40em){.reveal{min-height:0}}.reveal .column{min-width:0}.reveal>:last-child{margin-bottom:0}@media print, screen and (min-width: 40em){.reveal{width:600px;max-width:75rem}}.reveal.collapse{padding:0}@media print, screen and (min-width: 40em){.reveal.tiny{width:30%;max-width:75rem}}@media print, screen and (min-width: 40em){.reveal.small{width:50%;max-width:75rem}}@media print, screen and (min-width: 40em){.reveal.large{width:90%;max-width:75rem}}.reveal.full{top:0;left:0;width:100%;max-width:none;height:100%;height:100vh;min-height:100vh;margin-left:0;border:0;border-radius:0}@media screen and (max-width: 39.9375em){.reveal{top:0;left:0;width:100%;max-width:none;height:100%;height:100vh;min-height:100vh;margin-left:0;border:0;border-radius:0}}.reveal.without-overlay{position:fixed}.slider{position:relative;height:0.5rem;margin-top:1.25rem;margin-bottom:2.25rem;background-color:#e6e6e6;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-ms-touch-action:none;touch-action:none}.slider-fill{position:absolute;top:0;left:0;display:inline-block;max-width:100%;height:0.5rem;background-color:#cacaca;transition:all 0.2s ease-in-out}.slider-fill.is-dragging{transition:all 0s linear}.slider-handle{position:absolute;top:50%;-ms-transform:translateY(-50%);transform:translateY(-50%);left:0;z-index:1;display:inline-block;width:1.4rem;height:1.4rem;border-radius:0;background-color:#26A69A;transition:all 0.2s ease-in-out;-ms-touch-action:manipulation;touch-action:manipulation}[data-whatinput='mouse'] .slider-handle{outline:0}.slider-handle:hover{background-color:#14679e}.slider-handle.is-dragging{transition:all 0s linear}.slider.disabled,.slider[disabled]{opacity:0.25;cursor:not-allowed}.slider.vertical{display:inline-block;width:0.5rem;height:12.5rem;margin:0 1.25rem;-ms-transform:scale(1, -1);transform:scale(1, -1)}.slider.vertical .slider-fill{top:0;width:0.5rem;max-height:100%}.slider.vertical .slider-handle{position:absolute;top:0;left:50%;width:1.4rem;height:1.4rem;-ms-transform:translateX(-50%);transform:translateX(-50%)}.sticky-container{position:relative}.sticky{position:relative;z-index:0;transform:translate3d(0, 0, 0)}.sticky.is-stuck{position:fixed;z-index:5;width:100%}.sticky.is-stuck.is-at-top{top:0}.sticky.is-stuck.is-at-bottom{bottom:0}.sticky.is-anchored{position:relative;right:auto;left:auto}.sticky.is-anchored.is-at-bottom{bottom:0}.switch{height:2rem;position:relative;margin-bottom:1rem;outline:0;font-size:0.875rem;font-weight:bold;color:#fefefe;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.switch-input{position:absolute;margin-bottom:0;opacity:0}.switch-paddle{position:relative;display:block;width:4rem;height:2rem;border-radius:0;background:#cacaca;transition:all 0.25s ease-out;font-weight:inherit;color:inherit;cursor:pointer}input+.switch-paddle{margin:0}.switch-paddle::after{position:absolute;top:0.25rem;left:0.25rem;display:block;width:1.5rem;height:1.5rem;transform:translate3d(0, 0, 0);border-radius:0;background:#fefefe;transition:all 0.25s ease-out;content:''}input:checked ~ .switch-paddle{background:#26A69A}input:checked ~ .switch-paddle::after{left:2.25rem}[data-whatinput='mouse'] input:focus ~ .switch-paddle{outline:0}.switch-active,.switch-inactive{position:absolute;top:50%;-ms-transform:translateY(-50%);transform:translateY(-50%)}.switch-active{left:8%;display:none}input:checked+label>.switch-active{display:block}.switch-inactive{right:15%}input:checked+label>.switch-inactive{display:none}.switch.tiny{height:1.5rem}.switch.tiny .switch-paddle{width:3rem;height:1.5rem;font-size:0.625rem}.switch.tiny .switch-paddle::after{top:0.25rem;left:0.25rem;width:1rem;height:1rem}.switch.tiny input:checked ~ .switch-paddle::after{left:1.75rem}.switch.small{height:1.75rem}.switch.small .switch-paddle{width:3.5rem;height:1.75rem;font-size:0.75rem}.switch.small .switch-paddle::after{top:0.25rem;left:0.25rem;width:1.25rem;height:1.25rem}.switch.small input:checked ~ .switch-paddle::after{left:2rem}.switch.large{height:2.5rem}.switch.large .switch-paddle{width:5rem;height:2.5rem;font-size:1rem}.switch.large .switch-paddle::after{top:0.25rem;left:0.25rem;width:2rem;height:2rem}.switch.large input:checked ~ .switch-paddle::after{left:2.75rem}table{border-collapse:collapse;width:100%;margin-bottom:1rem;border-radius:0}table thead,table tbody,table tfoot{border:1px solid #f1f1f1;background-color:#fefefe}table caption{padding:0.5rem 0.625rem 0.625rem;font-weight:bold}table thead{background:#f8f8f8;color:#0a0a0a}table tfoot{background:#f1f1f1;color:#0a0a0a}table thead tr,table tfoot tr{background:transparent}table thead th,table thead td,table tfoot th,table tfoot td{padding:0.5rem 0.625rem 0.625rem;font-weight:bold;text-align:left}table tbody th,table tbody td{padding:0.5rem 0.625rem 0.625rem}table tbody tr:nth-child(even){border-bottom:0;background-color:#f1f1f1}table.unstriped tbody{background-color:#fefefe}table.unstriped tbody tr{border-bottom:0;border-bottom:1px solid #f1f1f1;background-color:#fefefe}@media screen and (max-width: 63.9375em){table.stack thead{display:none}table.stack tfoot{display:none}table.stack tr,table.stack th,table.stack td{display:block}table.stack td{border-top:0}}table.scroll{display:block;width:100%;overflow-x:auto}table.hover thead tr:hover{background-color:#f3f3f3}table.hover tfoot tr:hover{background-color:#ececec}table.hover tbody tr:hover{background-color:#f9f9f9}table.hover:not(.unstriped) tr:nth-of-type(even):hover{background-color:#ececec}.table-scroll{overflow-x:auto}.table-scroll table{width:auto}.tabs{margin:0;border:1px solid #e6e6e6;background:#fefefe;list-style-type:none}.tabs::before,.tabs::after{display:table;content:' ';-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-order:1;order:1}.tabs::after{clear:both}.tabs.vertical>li{display:block;float:none;width:auto}.tabs.simple>li>a{padding:0}.tabs.simple>li>a:hover{background:transparent}.tabs.primary{background:#26A69A}.tabs.primary>li>a{color:#fefefe}.tabs.primary>li>a:hover,.tabs.primary>li>a:focus{background:#1673b1}.tabs-title{float:left}.tabs-title>a{display:block;padding:1.25rem 1.5rem;font-size:0.75rem;line-height:1;color:#26A69A}.tabs-title>a:hover{background:#fefefe;color:#1468a0}.tabs-title>a:focus,.tabs-title>a[aria-selected='true']{background:#e6e6e6;color:#26A69A}.tabs-content{border:1px solid #e6e6e6;border-top:0;background:#fefefe;color:#0a0a0a;transition:all 0.5s ease}.tabs-content.vertical{border:1px solid #e6e6e6;border-left:0}.tabs-panel{display:none;padding:1rem}.tabs-panel.is-active{display:block}.thumbnail{display:inline-block;max-width:100%;margin-bottom:1rem;border:solid 4px #fefefe;border-radius:0;box-shadow:0 0 0 1px rgba(10,10,10,0.2);line-height:0}a.thumbnail{transition:box-shadow 200ms ease-out}a.thumbnail:hover,a.thumbnail:focus{box-shadow:0 0 6px 1px rgba(23,121,186,0.5)}a.thumbnail image{box-shadow:none}.title-bar{padding:0.5rem;background:#0a0a0a;color:#fefefe;display:-ms-flexbox;display:flex;-ms-flex-pack:start;justify-content:flex-start;-ms-flex-align:center;align-items:center}.title-bar .menu-icon{margin-left:0.25rem;margin-right:0.25rem}.title-bar-left,.title-bar-right{-ms-flex:1 1 0px;flex:1 1 0px}.title-bar-right{text-align:right}.title-bar-title{display:inline-block;vertical-align:middle;font-weight:bold}.has-tip{position:relative;display:inline-block;border-bottom:dotted 1px #8a8a8a;font-weight:bold;cursor:help}.tooltip{position:absolute;top:calc(100% + 0.6495rem);z-index:1200;max-width:10rem;padding:0.75rem;border-radius:0;background-color:#0a0a0a;font-size:80%;color:#fefefe}.tooltip::before{position:absolute}.tooltip.bottom::before{display:block;width:0;height:0;border:inset 0.75rem;content:'';border-top-width:0;border-bottom-style:solid;border-color:transparent transparent #0a0a0a;bottom:100%}.tooltip.bottom.align-center::before{left:50%;-ms-transform:translateX(-50%);transform:translateX(-50%)}.tooltip.top::before{display:block;width:0;height:0;border:inset 0.75rem;content:'';border-bottom-width:0;border-top-style:solid;border-color:#0a0a0a transparent transparent;top:100%;bottom:auto}.tooltip.top.align-center::before{left:50%;-ms-transform:translateX(-50%);transform:translateX(-50%)}.tooltip.left::before{display:block;width:0;height:0;border:inset 0.75rem;content:'';border-right-width:0;border-left-style:solid;border-color:transparent transparent transparent #0a0a0a;left:100%}.tooltip.left.align-center::before{bottom:auto;top:50%;-ms-transform:translateY(-50%);transform:translateY(-50%)}.tooltip.right::before{display:block;width:0;height:0;border:inset 0.75rem;content:'';border-left-width:0;border-right-style:solid;border-color:transparent #0a0a0a transparent transparent;right:100%;left:auto}.tooltip.right.align-center::before{bottom:auto;top:50%;-ms-transform:translateY(-50%);transform:translateY(-50%)}.tooltip.align-top::before{bottom:auto;top:10%}.tooltip.align-bottom::before{bottom:10%;top:auto}.tooltip.align-left::before{left:10%;right:auto}.tooltip.align-right::before{left:auto;right:10%}.top-bar{display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-align:center;align-items:center;padding:0.5rem;-ms-flex-wrap:wrap;flex-wrap:wrap}.top-bar,.top-bar ul{background-color:#e6e6e6}.top-bar input{max-width:200px;margin-right:1rem}.top-bar .input-group-field{width:100%;margin-right:0}.top-bar input.button{width:auto}.top-bar .top-bar-left,.top-bar .top-bar-right{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}@media print, screen and (min-width: 40em){.top-bar{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.top-bar .top-bar-left{-ms-flex:1 1 auto;flex:1 1 auto;margin-right:auto}.top-bar .top-bar-right{-ms-flex:0 1 auto;flex:0 1 auto;margin-left:auto}}@media screen and (max-width: 63.9375em){.top-bar.stacked-for-medium{-ms-flex-wrap:wrap;flex-wrap:wrap}.top-bar.stacked-for-medium .top-bar-left,.top-bar.stacked-for-medium .top-bar-right{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}}@media screen and (max-width: 74.9375em){.top-bar.stacked-for-large{-ms-flex-wrap:wrap;flex-wrap:wrap}.top-bar.stacked-for-large .top-bar-left,.top-bar.stacked-for-large .top-bar-right{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}}.top-bar-title{-ms-flex:0 0 auto;flex:0 0 auto;margin:0.5rem 1rem 0.5rem 0}.top-bar-left,.top-bar-right{-ms-flex:0 0 auto;flex:0 0 auto}.hide{display:none !important}.invisible{visibility:hidden}@media screen and (max-width: 39.9375em){.hide-for-small-only{display:none !important}}@media screen and (max-width: 0em), screen and (min-width: 40em){.show-for-small-only{display:none !important}}@media print, screen and (min-width: 40em){.hide-for-medium{display:none !important}}@media screen and (max-width: 39.9375em){.show-for-medium{display:none !important}}@media screen and (min-width: 40em) and (max-width: 63.9375em){.hide-for-medium-only{display:none !important}}@media screen and (max-width: 39.9375em), screen and (min-width: 64em){.show-for-medium-only{display:none !important}}@media print, screen and (min-width: 64em){.hide-for-large{display:none !important}}@media screen and (max-width: 63.9375em){.show-for-large{display:none !important}}@media screen and (min-width: 64em) and (max-width: 74.9375em){.hide-for-large-only{display:none !important}}@media screen and (max-width: 63.9375em), screen and (min-width: 75em){.show-for-large-only{display:none !important}}.show-for-sr,.show-on-focus{position:absolute !important;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;-webkit-clip-path:inset(50%);clip-path:inset(50%);border:0}.show-on-focus:active,.show-on-focus:focus{position:static !important;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal;-webkit-clip-path:none;clip-path:none}.show-for-landscape,.hide-for-portrait{display:block !important}@media screen and (orientation: landscape){.show-for-landscape,.hide-for-portrait{display:block !important}}@media screen and (orientation: portrait){.show-for-landscape,.hide-for-portrait{display:none !important}}.hide-for-landscape,.show-for-portrait{display:none !important}@media screen and (orientation: landscape){.hide-for-landscape,.show-for-portrait{display:none !important}}@media screen and (orientation: portrait){.hide-for-landscape,.show-for-portrait{display:block !important}}.float-left{float:left !important}.float-right{float:right !important}.float-center{display:block;margin-right:auto;margin-left:auto}.clearfix::before,.clearfix::after{display:table;content:' ';-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-order:1;order:1}.clearfix::after{clear:both}.slide-in-down.mui-enter{transition-duration:500ms;transition-timing-function:linear;-ms-transform:translateY(-100%);transform:translateY(-100%);transition-property:transform, opacity;-webkit-backface-visibility:hidden;backface-visibility:hidden}.slide-in-down.mui-enter.mui-enter-active{-ms-transform:translateY(0);transform:translateY(0)}.slide-in-left.mui-enter{transition-duration:500ms;transition-timing-function:linear;-ms-transform:translateX(-100%);transform:translateX(-100%);transition-property:transform, opacity;-webkit-backface-visibility:hidden;backface-visibility:hidden}.slide-in-left.mui-enter.mui-enter-active{-ms-transform:translateX(0);transform:translateX(0)}.slide-in-up.mui-enter{transition-duration:500ms;transition-timing-function:linear;-ms-transform:translateY(100%);transform:translateY(100%);transition-property:transform, opacity;-webkit-backface-visibility:hidden;backface-visibility:hidden}.slide-in-up.mui-enter.mui-enter-active{-ms-transform:translateY(0);transform:translateY(0)}.slide-in-right.mui-enter{transition-duration:500ms;transition-timing-function:linear;-ms-transform:translateX(100%);transform:translateX(100%);transition-property:transform, opacity;-webkit-backface-visibility:hidden;backface-visibility:hidden}.slide-in-right.mui-enter.mui-enter-active{-ms-transform:translateX(0);transform:translateX(0)}.slide-out-down.mui-leave{transition-duration:500ms;transition-timing-function:linear;-ms-transform:translateY(0);transform:translateY(0);transition-property:transform, opacity;-webkit-backface-visibility:hidden;backface-visibility:hidden}.slide-out-down.mui-leave.mui-leave-active{-ms-transform:translateY(100%);transform:translateY(100%)}.slide-out-right.mui-leave{transition-duration:500ms;transition-timing-function:linear;-ms-transform:translateX(0);transform:translateX(0);transition-property:transform, opacity;-webkit-backface-visibility:hidden;backface-visibility:hidden}.slide-out-right.mui-leave.mui-leave-active{-ms-transform:translateX(100%);transform:translateX(100%)}.slide-out-up.mui-leave{transition-duration:500ms;transition-timing-function:linear;-ms-transform:translateY(0);transform:translateY(0);transition-property:transform, opacity;-webkit-backface-visibility:hidden;backface-visibility:hidden}.slide-out-up.mui-leave.mui-leave-active{-ms-transform:translateY(-100%);transform:translateY(-100%)}.slide-out-left.mui-leave{transition-duration:500ms;transition-timing-function:linear;-ms-transform:translateX(0);transform:translateX(0);transition-property:transform, opacity;-webkit-backface-visibility:hidden;backface-visibility:hidden}.slide-out-left.mui-leave.mui-leave-active{-ms-transform:translateX(-100%);transform:translateX(-100%)}.fade-in.mui-enter{transition-duration:500ms;transition-timing-function:linear;opacity:0;transition-property:opacity}.fade-in.mui-enter.mui-enter-active{opacity:1}.fade-out.mui-leave{transition-duration:500ms;transition-timing-function:linear;opacity:1;transition-property:opacity}.fade-out.mui-leave.mui-leave-active{opacity:0}.hinge-in-from-top.mui-enter{transition-duration:500ms;transition-timing-function:linear;transform:perspective(2000px) rotateX(-90deg);-ms-transform-origin:top;transform-origin:top;transition-property:transform, opacity;opacity:0}.hinge-in-from-top.mui-enter.mui-enter-active{transform:perspective(2000px) rotate(0deg);opacity:1}.hinge-in-from-right.mui-enter{transition-duration:500ms;transition-timing-function:linear;transform:perspective(2000px) rotateY(-90deg);-ms-transform-origin:right;transform-origin:right;transition-property:transform, opacity;opacity:0}.hinge-in-from-right.mui-enter.mui-enter-active{transform:perspective(2000px) rotate(0deg);opacity:1}.hinge-in-from-bottom.mui-enter{transition-duration:500ms;transition-timing-function:linear;transform:perspective(2000px) rotateX(90deg);-ms-transform-origin:bottom;transform-origin:bottom;transition-property:transform, opacity;opacity:0}.hinge-in-from-bottom.mui-enter.mui-enter-active{transform:perspective(2000px) rotate(0deg);opacity:1}.hinge-in-from-left.mui-enter{transition-duration:500ms;transition-timing-function:linear;transform:perspective(2000px) rotateY(90deg);-ms-transform-origin:left;transform-origin:left;transition-property:transform, opacity;opacity:0}.hinge-in-from-left.mui-enter.mui-enter-active{transform:perspective(2000px) rotate(0deg);opacity:1}.hinge-in-from-middle-x.mui-enter{transition-duration:500ms;transition-timing-function:linear;transform:perspective(2000px) rotateX(-90deg);-ms-transform-origin:center;transform-origin:center;transition-property:transform, opacity;opacity:0}.hinge-in-from-middle-x.mui-enter.mui-enter-active{transform:perspective(2000px) rotate(0deg);opacity:1}.hinge-in-from-middle-y.mui-enter{transition-duration:500ms;transition-timing-function:linear;transform:perspective(2000px) rotateY(-90deg);-ms-transform-origin:center;transform-origin:center;transition-property:transform, opacity;opacity:0}.hinge-in-from-middle-y.mui-enter.mui-enter-active{transform:perspective(2000px) rotate(0deg);opacity:1}.hinge-out-from-top.mui-leave{transition-duration:500ms;transition-timing-function:linear;transform:perspective(2000px) rotate(0deg);-ms-transform-origin:top;transform-origin:top;transition-property:transform, opacity;opacity:1}.hinge-out-from-top.mui-leave.mui-leave-active{transform:perspective(2000px) rotateX(-90deg);opacity:0}.hinge-out-from-right.mui-leave{transition-duration:500ms;transition-timing-function:linear;transform:perspective(2000px) rotate(0deg);-ms-transform-origin:right;transform-origin:right;transition-property:transform, opacity;opacity:1}.hinge-out-from-right.mui-leave.mui-leave-active{transform:perspective(2000px) rotateY(-90deg);opacity:0}.hinge-out-from-bottom.mui-leave{transition-duration:500ms;transition-timing-function:linear;transform:perspective(2000px) rotate(0deg);-ms-transform-origin:bottom;transform-origin:bottom;transition-property:transform, opacity;opacity:1}.hinge-out-from-bottom.mui-leave.mui-leave-active{transform:perspective(2000px) rotateX(90deg);opacity:0}.hinge-out-from-left.mui-leave{transition-duration:500ms;transition-timing-function:linear;transform:perspective(2000px) rotate(0deg);-ms-transform-origin:left;transform-origin:left;transition-property:transform, opacity;opacity:1}.hinge-out-from-left.mui-leave.mui-leave-active{transform:perspective(2000px) rotateY(90deg);opacity:0}.hinge-out-from-middle-x.mui-leave{transition-duration:500ms;transition-timing-function:linear;transform:perspective(2000px) rotate(0deg);-ms-transform-origin:center;transform-origin:center;transition-property:transform, opacity;opacity:1}.hinge-out-from-middle-x.mui-leave.mui-leave-active{transform:perspective(2000px) rotateX(-90deg);opacity:0}.hinge-out-from-middle-y.mui-leave{transition-duration:500ms;transition-timing-function:linear;transform:perspective(2000px) rotate(0deg);-ms-transform-origin:center;transform-origin:center;transition-property:transform, opacity;opacity:1}.hinge-out-from-middle-y.mui-leave.mui-leave-active{transform:perspective(2000px) rotateY(-90deg);opacity:0}.scale-in-up.mui-enter{transition-duration:500ms;transition-timing-function:linear;-ms-transform:scale(0.5);transform:scale(0.5);transition-property:transform, opacity;opacity:0}.scale-in-up.mui-enter.mui-enter-active{-ms-transform:scale(1);transform:scale(1);opacity:1}.scale-in-down.mui-enter{transition-duration:500ms;transition-timing-function:linear;-ms-transform:scale(1.5);transform:scale(1.5);transition-property:transform, opacity;opacity:0}.scale-in-down.mui-enter.mui-enter-active{-ms-transform:scale(1);transform:scale(1);opacity:1}.scale-out-up.mui-leave{transition-duration:500ms;transition-timing-function:linear;-ms-transform:scale(1);transform:scale(1);transition-property:transform, opacity;opacity:1}.scale-out-up.mui-leave.mui-leave-active{-ms-transform:scale(1.5);transform:scale(1.5);opacity:0}.scale-out-down.mui-leave{transition-duration:500ms;transition-timing-function:linear;-ms-transform:scale(1);transform:scale(1);transition-property:transform, opacity;opacity:1}.scale-out-down.mui-leave.mui-leave-active{-ms-transform:scale(0.5);transform:scale(0.5);opacity:0}.spin-in.mui-enter{transition-duration:500ms;transition-timing-function:linear;-ms-transform:rotate(-0.75turn);transform:rotate(-0.75turn);transition-property:transform, opacity;opacity:0}.spin-in.mui-enter.mui-enter-active{-ms-transform:rotate(0);transform:rotate(0);opacity:1}.spin-out.mui-leave{transition-duration:500ms;transition-timing-function:linear;-ms-transform:rotate(0);transform:rotate(0);transition-property:transform, opacity;opacity:1}.spin-out.mui-leave.mui-leave-active{-ms-transform:rotate(0.75turn);transform:rotate(0.75turn);opacity:0}.spin-in-ccw.mui-enter{transition-duration:500ms;transition-timing-function:linear;-ms-transform:rotate(0.75turn);transform:rotate(0.75turn);transition-property:transform, opacity;opacity:0}.spin-in-ccw.mui-enter.mui-enter-active{-ms-transform:rotate(0);transform:rotate(0);opacity:1}.spin-out-ccw.mui-leave{transition-duration:500ms;transition-timing-function:linear;-ms-transform:rotate(0);transform:rotate(0);transition-property:transform, opacity;opacity:1}.spin-out-ccw.mui-leave.mui-leave-active{-ms-transform:rotate(-0.75turn);transform:rotate(-0.75turn);opacity:0}.slow{transition-duration:750ms !important}.fast{transition-duration:250ms !important}.linear{transition-timing-function:linear !important}.ease{transition-timing-function:ease !important}.ease-in{transition-timing-function:ease-in !important}.ease-out{transition-timing-function:ease-out !important}.ease-in-out{transition-timing-function:ease-in-out !important}.bounce-in{transition-timing-function:cubic-bezier(0.485, 0.155, 0.24, 1.245) !important}.bounce-out{transition-timing-function:cubic-bezier(0.485, 0.155, 0.515, 0.845) !important}.bounce-in-out{transition-timing-function:cubic-bezier(0.76, -0.245, 0.24, 1.245) !important}.short-delay{transition-delay:300ms !important}.long-delay{transition-delay:700ms !important}.shake{animation-name:shake-7}@keyframes shake-7{0%, 10%, 20%, 30%, 40%, 50%, 60%, 70%, 80%, 90%{transform:translateX(7%)}5%, 15%, 25%, 35%, 45%, 55%, 65%, 75%, 85%, 95%{transform:translateX(-7%)}}.spin-cw{animation-name:spin-cw-1turn}@keyframes spin-cw-1turn{0%{transform:rotate(-1turn)}100%{transform:rotate(0)}}.spin-ccw{animation-name:spin-cw-1turn}@keyframes spin-cw-1turn{0%{transform:rotate(0)}100%{transform:rotate(1turn)}}.wiggle{animation-name:wiggle-7deg}@keyframes wiggle-7deg{40%, 50%, 60%{transform:rotate(7deg)}35%, 45%, 55%, 65%{transform:rotate(-7deg)}0%, 30%, 70%, 100%{transform:rotate(0)}}.shake,.spin-cw,.spin-ccw,.wiggle{animation-duration:500ms}.infinite{animation-iteration-count:infinite}.slow{animation-duration:750ms !important}.fast{animation-duration:250ms !important}.linear{animation-timing-function:linear !important}.ease{animation-timing-function:ease !important}.ease-in{animation-timing-function:ease-in !important}.ease-out{animation-timing-function:ease-out !important}.ease-in-out{animation-timing-function:ease-in-out !important}.bounce-in{animation-timing-function:cubic-bezier(0.485, 0.155, 0.24, 1.245) !important}.bounce-out{animation-timing-function:cubic-bezier(0.485, 0.155, 0.515, 0.845) !important}.bounce-in-out{animation-timing-function:cubic-bezier(0.76, -0.245, 0.24, 1.245) !important}.short-delay{animation-delay:300ms !important}.long-delay{animation-delay:700ms !important}body#main-body{padding:0}header.main-header{background:#B2DFDB;margin-bottom:10px;padding:25px 20px 10px 20px}h1.site-title{text-align:center;margin:25px auto 40px;font-size:32px;font-weight:700;color:#fff}h1.site-title a{margin-right:18px;padding-right:23px;border-right:2px solid #fff;font-size:40px;color:#FF5722}nav.site-nav section:nth-of-type(2){text-align:right}section.flash{border-radius:5px;background:#e6e6e6;margin:30px auto 0;padding:20px 25px;width:85%}section.failure{color:#C70039}main{width:85%;margin:0 auto;padding:32px 0}article.media-spotlight{border-bottom:1px solid #cacaca}article.media-spotlight div{padding:0 32px 32px}article.media-spotlight div h2{font-size:31px;font-weight:700;color:#26A69A}article.media-spotlight div h2 span{color:#424242}article.media-spotlight div h2 a{color:#26A69A}article.top-lists{margin-top:75px}article.top-lists h3{color:#26A69A;font-size:31px;font-weight:700;border-bottom:2px solid #B2DFDB;margin-bottom:8px}article.top-lists section[class*="list"]{padding:0 15px}article.top-lists ul{list-style-type:none}article.top-lists ul li{font-weight:700;font-size:20px;color:slategrey;margin-bottom:16px}article.top-lists ul li a{font-size:25px}article.top-lists ul li span.vote-count{color:#0a0a0a;font-weight:normal;font-size:16px}h2.title-green{font-weight:700;font-size:31px;color:#26A69A}h3.list-title{font-weight:700;font-size:25px;color:#0a0a0a}section.work-list table[class*="list"] th{text-align:left;background:#f8f8f8}section.work-list table[class*="list"] td a{vertical-align:middle;margin-bottom:0}section.user-votes h3{font-size:25px;font-weight:700}section.work-list table[class*="list"],section.work-list table[class*="list"] thead,section.work-list table[class*="list"] tbody,section.vote-info table,section.vote-info table thead,section.vote-info table tbody,section.user-list table,section.user-list table thead,section.user-list table tbody,section.user-votes table,section.user-votes table thead,section.user-votes table tbody{border:none}section.work-list table[class*="list"] td,section.vote-info table td,section.user-list table td,section.user-votes table td{padding:8px 10px 10px;border:2px solid #fff} diff --git a/public/assets/application-f50b11ee4268ba84f9d098557ebab84f1be52b51586ecf842fd06a6489a2d4c4.css.gz b/public/assets/application-f50b11ee4268ba84f9d098557ebab84f1be52b51586ecf842fd06a6489a2d4c4.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..a3450c146e9e73bb748ba1d7e14c65dbc7d50418 GIT binary patch literal 17461 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 literal 0 HcmV?d00001 diff --git a/public/assets/favicon-910822ff6cd5f6d37119171c4b716f1d4e5fe0e8ad5e408627659ebf8d7f16b1.ico.gz b/public/assets/favicon-910822ff6cd5f6d37119171c4b716f1d4e5fe0e8ad5e408627659ebf8d7f16b1.ico.gz new file mode 100644 index 0000000000000000000000000000000000000000..6dc052cf4500142068d71e72bf6dc03e53ec8479 GIT binary patch literal 755 zcmVn8N(pxKAh*C z`#fu>|Iz@gQ3IQDy1ot+D(5jZHML%A z#V^&k)ipbyjcId?7<1!!dM1~XMEy%EeEI7|bgGt<{!-J_XuP(rt$p!aVgdZZ@^Iop z0a*Neh-J--+L$p*%*0@9#*S!E*wHJn)4CmwTL;0|HUxXCF4)n<@MBkY%H=RK$Twt7 zGm0BpJ&(4*!F(1pY8sAK6p5?6&TtWNITdd9D#DDx zkv0M+n-N$O-))CV7xN0>B2y@;GOW$zrMNh_`NP9E5W#FIEJ^JR)HoPhRM@lqlg{5v zw4jh$xcjm|cMCvl!c7-Ff8aRh&VD8voR}MMXG~zP^(45QF=XWSAuC^rxbTl~wVlLa z=LxW*lHtk>g_hCtUICHyOcod1#4)V6ox8|h1AJxIIv1lohIBic0SrM-jjxhTNG!UE0k46meD zDr6)!`r|wDL=_mvFEsbPM|Il^d?rakkr+b@8Yo965uIG7(6f5}*{cr@X=RTvPlWlO z%etC^@+R;yB|1$_H0_#%HF7kzKBpV-EBC2D)YvJwD}#Js7%8Pv963wQ!~Z(2=2xTR z-7s<`El4k}@7C8eWVKDB(d-J0$%QvN4WT?CSh2YXBo=%rAD+RfI2E3WnHi1KD*upv lzKzmWB_z_PFwUuZs6fr*9+HA}#&`dJ+HYETIAwkW00493a+&}D literal 0 HcmV?d00001 From eac485c1db5e7f3bfeb00ac3208a67788989fbcd Mon Sep 17 00:00:00 2001 From: kee nam Date: Tue, 17 Oct 2017 03:20:45 -0700 Subject: [PATCH 34/35] No private? --- app/controllers/works_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/works_controller.rb b/app/controllers/works_controller.rb index 9f4cbb24c8..1508cf404b 100644 --- a/app/controllers/works_controller.rb +++ b/app/controllers/works_controller.rb @@ -51,7 +51,7 @@ def destroy end end - private + # private def work_params return params.require(:work).permit(:title, :category, :creator, :year, :desc) From c2a6dd1f68e7fd0e44ee4e37a632f221baa7aeaf Mon Sep 17 00:00:00 2001 From: kee nam Date: Tue, 17 Oct 2017 03:28:02 -0700 Subject: [PATCH 35/35] Undid previous commit --- app/controllers/works_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/works_controller.rb b/app/controllers/works_controller.rb index 1508cf404b..9f4cbb24c8 100644 --- a/app/controllers/works_controller.rb +++ b/app/controllers/works_controller.rb @@ -51,7 +51,7 @@ def destroy end end - # private + private def work_params return params.require(:work).permit(:title, :category, :creator, :year, :desc)