diff --git a/.DS_Store b/.DS_Store
new file mode 100644
index 0000000000..256f734719
Binary files /dev/null and b/.DS_Store differ
diff --git a/.github/PULL_REQUEST_TEMPLATE b/.github/PULL_REQUEST_TEMPLATE
index a57f5ec408..f9f305c8fd 100644
--- a/.github/PULL_REQUEST_TEMPLATE
+++ b/.github/PULL_REQUEST_TEMPLATE
@@ -4,12 +4,12 @@ Congratulations! You're submitting your assignment! These comprehension question
## Comprehension Questions
| Question | Answer |
| :------------- | :------------- |
-| How did your team break up the work to be done? | |
-| How did your team utilize git to collaborate? | |
-| What did your group do to try to keep your code DRY while many people collaborated on it? | |
-| What was a technical challenge that you faced as a group? | |
-| What was a team/personal challenge that you faced as a group? | |
-| What could your team have done better? | |
-| What was your application's ERD? (include a link) | |
-| What is your Trello URL? | |
-| What is the Heroku URL of your deployed application? | |
+| How did your team break up the work to be done? | We started with assigning people to Trello cards. the models and controllers for testing and creating the methods. We set up the tasks in waves on Trello and as we completed the tasks, we moved on to different tasks in the waves. |
+| How did your team utilize git to collaborate? | We used to git to work on different branches based on features and tests. We then did a collaborative merge, pull, push after each day's stand up. |
+| What did your group do to try to keep your code DRY while many people collaborated on it? | We tried switching focus areas, such as products and orders, when we started our testing, that way we were reviewing other team member's models and controllers and would essentially proof each other's code to DRY it up. We also used before actions and custom methods that helped us dry the code up. |
+| What was a technical challenge that you faced as a group? | Deploying to Heroku. We had trouble logging in with git and with our database. We reviewed the Heroku logs and StackOverflow to determine the solutions. |
+| What was a team/personal challenge that you faced as a group? | We think we did a good job overall with ask and guess culture. It was a challenge having a group member out for 2 days, but as a group, we feel we communicated well over Slack to move forward with the project. |
+| What could your team have done better? | Deployed earlier to work out those issues. |
+| What was your application's ERD? (include a link) | We will Slack the photos of the ERD. We did it on the white board as opposed to electronically. |
+| What is your Trello URL? | https://trello.com/b/d42fqbbE/whythehexnots |
+| What is the Heroku URL of your deployed application? | http://sourceress.herokuapp.com/ |
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000..42c3e6965b
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,24 @@
+# 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
+.env
+
+public/assets/**
+
+/coverage/
diff --git a/Gemfile b/Gemfile
new file mode 100644
index 0000000000..fb715a7d4f
--- /dev/null
+++ b/Gemfile
@@ -0,0 +1,77 @@
+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
+
+gem 'awesome_print'
+gem "paperclip", "~> 5.0.0"
+gem 'omniauth'
+gem 'omniauth-github'
+gem 'simplecov'
+
+# 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 'dotenv-rails'
+ gem 'simplecov'
+ 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'
+gem 'foundation-rails', '6.4.1.2'
+group :development do
+ gem 'better_errors'
+
+ gem 'binding_of_caller'
+end
+
+group :test do
+ gem 'minitest-rails'
+ gem 'minitest-reporters'
+end
+
+gem 'jquery-rails'
diff --git a/Gemfile.lock b/Gemfile.lock
new file mode 100644
index 0000000000..c8936fbe9d
--- /dev/null
+++ b/Gemfile.lock
@@ -0,0 +1,286 @@
+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)
+ awesome_print (1.8.0)
+ babel-source (5.8.35)
+ babel-transpiler (0.7.0)
+ babel-source (>= 4.0, < 6)
+ execjs (~> 2.0)
+ better_errors (2.4.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)
+ climate_control (0.2.0)
+ cocaine (0.5.8)
+ climate_control (>= 0.0.3, < 1.0)
+ coderay (1.1.2)
+ concurrent-ruby (1.0.5)
+ crass (1.0.2)
+ debug_inspector (0.0.3)
+ docile (1.1.5)
+ dotenv (2.2.1)
+ dotenv-rails (2.2.1)
+ dotenv (= 2.2.1)
+ railties (>= 3.2, < 5.2)
+ erubi (1.7.0)
+ execjs (2.7.0)
+ faraday (0.12.2)
+ multipart-post (>= 1.2, < 3)
+ ffi (1.9.18)
+ foundation-rails (6.4.1.2)
+ railties (>= 3.1.0)
+ sass (>= 3.3.0, < 3.5)
+ sprockets-es6 (>= 0.9.0)
+ globalid (0.4.0)
+ activesupport (>= 4.2.0)
+ hashie (3.5.6)
+ i18n (0.9.0)
+ concurrent-ruby (~> 1.0)
+ jbuilder (2.7.0)
+ activesupport (>= 4.2.0)
+ multi_json (>= 1.2)
+ jquery-rails (4.3.1)
+ rails-dom-testing (>= 1, < 3)
+ railties (>= 4.2.0)
+ thor (>= 0.14, < 2.0)
+ jquery-turbolinks (2.1.0)
+ railties (>= 3.1.0)
+ turbolinks
+ json (2.0.2)
+ jwt (1.5.6)
+ 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)
+ mimemagic (0.3.2)
+ 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)
+ multi_xml (0.6.0)
+ multipart-post (2.0.0)
+ nio4r (2.1.0)
+ nokogiri (1.8.1)
+ mini_portile2 (~> 2.3.0)
+ oauth2 (1.4.0)
+ faraday (>= 0.8, < 0.13)
+ jwt (~> 1.0)
+ multi_json (~> 1.3)
+ multi_xml (~> 0.5)
+ rack (>= 1.2, < 3)
+ omniauth (1.7.1)
+ hashie (>= 3.4.6, < 3.6.0)
+ rack (>= 1.6.2, < 3)
+ omniauth-github (1.3.0)
+ omniauth (~> 1.5)
+ omniauth-oauth2 (>= 1.4.0, < 2.0)
+ omniauth-oauth2 (1.4.0)
+ oauth2 (~> 1.0)
+ omniauth (~> 1.2)
+ paperclip (5.0.0)
+ activemodel (>= 4.2.0)
+ activesupport (>= 4.2.0)
+ cocaine (~> 0.5.5)
+ mime-types
+ mimemagic (~> 0.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.4.25)
+ 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)
+ simplecov (0.15.1)
+ docile (~> 1.1.0)
+ json (>= 1.8, < 3)
+ simplecov-html (~> 0.10.0)
+ simplecov-html (0.10.2)
+ 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-es6 (0.9.2)
+ babel-source (>= 5.8.11)
+ babel-transpiler
+ sprockets (>= 3.0.0)
+ 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
+ awesome_print
+ better_errors
+ binding_of_caller
+ byebug
+ capybara (~> 2.13)
+ dotenv-rails
+ foundation-rails (= 6.4.1.2)
+ jbuilder (~> 2.5)
+ jquery-rails
+ jquery-turbolinks
+ listen (>= 3.0.5, < 3.2)
+ minitest-rails
+ minitest-reporters
+ omniauth
+ omniauth-github
+ paperclip (~> 5.0.0)
+ pg (~> 0.18)
+ pry-rails
+ puma (~> 3.7)
+ rails (~> 5.1.4)
+ sass-rails (~> 5.0)
+ selenium-webdriver
+ simplecov
+ 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.2
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..7c05a81230
--- /dev/null
+++ b/app/assets/javascripts/application.js
@@ -0,0 +1,22 @@
+// 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 jquery
+//= require jquery_ujs
+//= require rails-ujs
+//= require foundation
+//= require turbolinks
+
+//= require_tree .
+
+$(function(){ $(document).foundation(); });
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/categories.js b/app/assets/javascripts/categories.js
new file mode 100644
index 0000000000..dee720facd
--- /dev/null
+++ b/app/assets/javascripts/categories.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/channels/.keep b/app/assets/javascripts/channels/.keep
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/app/assets/javascripts/merchants.js b/app/assets/javascripts/merchants.js
new file mode 100644
index 0000000000..dee720facd
--- /dev/null
+++ b/app/assets/javascripts/merchants.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/orders.js b/app/assets/javascripts/orders.js
new file mode 100644
index 0000000000..dee720facd
--- /dev/null
+++ b/app/assets/javascripts/orders.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/products.js b/app/assets/javascripts/products.js
new file mode 100644
index 0000000000..dee720facd
--- /dev/null
+++ b/app/assets/javascripts/products.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/reviews.js b/app/assets/javascripts/reviews.js
new file mode 100644
index 0000000000..dee720facd
--- /dev/null
+++ b/app/assets/javascripts/reviews.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/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/_settings.scss b/app/assets/stylesheets/_settings.scss
new file mode 100644
index 0000000000..b67ff00cdc
--- /dev/null
+++ b/app/assets/stylesheets/_settings.scss
@@ -0,0 +1,863 @@
+// Foundation for Sites Settings
+// -----------------------------
+//
+// Table of Contents:
+//
+// 1. Global
+// 2. Breakpoints
+// 3. The Grid
+// 4. Base Typography
+// 5. Typography Helpers
+// 6. Abide
+// 7. Accordion
+// 8. Accordion Menu
+// 9. Badge
+// 10. Breadcrumbs
+// 11. Button
+// 12. Button Group
+// 13. Callout
+// 14. Card
+// 15. Close Button
+// 16. Drilldown
+// 17. Dropdown
+// 18. Dropdown Menu
+// 19. Flexbox Utilities
+// 20. Forms
+// 21. Label
+// 22. Media Object
+// 23. Menu
+// 24. Meter
+// 25. Off-canvas
+// 26. Orbit
+// 27. Pagination
+// 28. Progress Bar
+// 29. Prototype Arrow
+// 30. Prototype Border-Box
+// 31. Prototype Border-None
+// 32. Prototype Bordered
+// 33. Prototype Display
+// 34. Prototype Font-Styling
+// 35. Prototype List-Style-Type
+// 36. Prototype Overflow
+// 37. Prototype Position
+// 38. Prototype Rounded
+// 39. Prototype Separator
+// 40. Prototype Shadow
+// 41. Prototype Sizing
+// 42. Prototype Spacing
+// 43. Prototype Text-Decoration
+// 44. Prototype Text-Transformation
+// 45. Prototype Text-Utilities
+// 46. Responsive Embed
+// 47. Reveal
+// 48. Slider
+// 49. Switch
+// 50. Table
+// 51. Tabs
+// 52. Thumbnail
+// 53. Title Bar
+// 54. Tooltip
+// 55. Top Bar
+// 56. Xy Grid
+
+@import 'util/util';
+
+// 1. Global
+// ---------
+
+$global-font-size: 100%;
+$global-width: rem-calc(1200);
+$global-lineheight: 1.5;
+$foundation-palette: (
+ primary: #1779ba,
+ secondary: #767676,
+ success: #3adb76,
+ warning: #ffae00,
+ alert: #cc4b37,
+);
+$light-gray: #e6e6e6;
+$medium-gray: #cacaca;
+$dark-gray: #8a8a8a;
+$black: #0a0a0a;
+$white: #fefefe;
+$body-background: $white;
+$body-font-color: $black;
+$body-font-family: 'Helvetica Neue', Helvetica, Roboto, Arial, sans-serif;
+$body-antialiased: true;
+$global-margin: 1rem;
+$global-padding: 1rem;
+$global-position: 1rem;
+$global-weight-normal: normal;
+$global-weight-bold: bold;
+$global-radius: 0;
+$global-menu-padding: 0.7rem 1rem;
+$global-menu-nested-margin: 1rem;
+$global-text-direction: ltr;
+$global-flexbox: true;
+$global-prototype-breakpoints: false;
+$global-color-pick-contrast-tolerance: 0;
+$print-transparent-backgrounds: true;
+
+@include add-foundation-colors;
+
+// 2. Breakpoints
+// --------------
+
+$breakpoints: (
+ small: 0,
+ medium: 640px,
+ large: 1024px,
+ xlarge: 1200px,
+ xxlarge: 1440px,
+);
+$print-breakpoint: large;
+$breakpoint-classes: (small medium large);
+
+// 3. The Grid
+// -----------
+
+$grid-row-width: $global-width;
+$grid-column-count: 12;
+$grid-column-gutter: (
+ small: 20px,
+ medium: 30px,
+);
+$grid-column-align-edge: true;
+$grid-column-alias: 'columns';
+$block-grid-max: 8;
+
+// 4. Base Typography
+// ------------------
+
+$header-font-family: $body-font-family;
+$header-font-weight: $global-weight-normal;
+$header-font-style: normal;
+$font-family-monospace: Consolas, 'Liberation Mono', Courier, monospace;
+$header-color: inherit;
+$header-lineheight: 1.4;
+$header-margin-bottom: 0.5rem;
+$header-styles: (
+ small: (
+ 'h1': ('font-size': 24),
+ 'h2': ('font-size': 20),
+ 'h3': ('font-size': 19),
+ 'h4': ('font-size': 18),
+ 'h5': ('font-size': 17),
+ 'h6': ('font-size': 16),
+ ),
+ medium: (
+ 'h1': ('font-size': 48),
+ 'h2': ('font-size': 40),
+ 'h3': ('font-size': 31),
+ 'h4': ('font-size': 25),
+ 'h5': ('font-size': 20),
+ 'h6': ('font-size': 16),
+ ),
+);
+$header-text-rendering: optimizeLegibility;
+$small-font-size: 80%;
+$header-small-font-color: $medium-gray;
+$paragraph-lineheight: 1.6;
+$paragraph-margin-bottom: 1rem;
+$paragraph-text-rendering: optimizeLegibility;
+$code-color: $black;
+$code-font-family: $font-family-monospace;
+$code-font-weight: $global-weight-normal;
+$code-background: $light-gray;
+$code-border: 1px solid $medium-gray;
+$code-padding: rem-calc(2 5 1);
+$anchor-color: $primary-color;
+$anchor-color-hover: scale-color($anchor-color, $lightness: -14%);
+$anchor-text-decoration: none;
+$anchor-text-decoration-hover: none;
+$hr-width: $global-width;
+$hr-border: 1px solid $medium-gray;
+$hr-margin: rem-calc(20) auto;
+$list-lineheight: $paragraph-lineheight;
+$list-margin-bottom: $paragraph-margin-bottom;
+$list-style-type: disc;
+$list-style-position: outside;
+$list-side-margin: 1.25rem;
+$list-nested-side-margin: 1.25rem;
+$defnlist-margin-bottom: 1rem;
+$defnlist-term-weight: $global-weight-bold;
+$defnlist-term-margin-bottom: 0.3rem;
+$blockquote-color: $dark-gray;
+$blockquote-padding: rem-calc(9 20 0 19);
+$blockquote-border: 1px solid $medium-gray;
+$cite-font-size: rem-calc(13);
+$cite-color: $dark-gray;
+$cite-pseudo-content: '\2014 \0020';
+$keystroke-font: $font-family-monospace;
+$keystroke-color: $black;
+$keystroke-background: $light-gray;
+$keystroke-padding: rem-calc(2 4 0);
+$keystroke-radius: $global-radius;
+$abbr-underline: 1px dotted $black;
+
+// 5. Typography Helpers
+// ---------------------
+
+$lead-font-size: $global-font-size * 1.25;
+$lead-lineheight: 1.6;
+$subheader-lineheight: 1.4;
+$subheader-color: $dark-gray;
+$subheader-font-weight: $global-weight-normal;
+$subheader-margin-top: 0.2rem;
+$subheader-margin-bottom: 0.5rem;
+$stat-font-size: 2.5rem;
+
+// 6. Abide
+// --------
+
+$abide-inputs: true;
+$abide-labels: true;
+$input-background-invalid: get-color(alert);
+$form-label-color-invalid: get-color(alert);
+$input-error-color: get-color(alert);
+$input-error-font-size: rem-calc(12);
+$input-error-font-weight: $global-weight-bold;
+
+// 7. Accordion
+// ------------
+
+$accordion-background: $white;
+$accordion-plusminus: true;
+$accordion-title-font-size: rem-calc(12);
+$accordion-item-color: $primary-color;
+$accordion-item-background-hover: $light-gray;
+$accordion-item-padding: 1.25rem 1rem;
+$accordion-content-background: $white;
+$accordion-content-border: 1px solid $light-gray;
+$accordion-content-color: $body-font-color;
+$accordion-content-padding: 1rem;
+
+// 8. Accordion Menu
+// -----------------
+
+$accordionmenu-padding: $global-menu-padding;
+$accordionmenu-nested-margin: $global-menu-nested-margin;
+$accordionmenu-submenu-padding: $accordionmenu-padding;
+$accordionmenu-arrows: true;
+$accordionmenu-arrow-color: $primary-color;
+$accordionmenu-item-background: null;
+$accordionmenu-border: null;
+$accordionmenu-submenu-toggle-background: null;
+$accordion-submenu-toggle-border: $accordionmenu-border;
+$accordionmenu-submenu-toggle-width: 40px;
+$accordionmenu-submenu-toggle-height: $accordionmenu-submenu-toggle-width;
+$accordionmenu-arrow-size: 6px;
+
+// 9. Badge
+// --------
+
+$badge-background: $primary-color;
+$badge-color: $white;
+$badge-color-alt: $black;
+$badge-palette: $foundation-palette;
+$badge-padding: 0.3em;
+$badge-minwidth: 2.1em;
+$badge-font-size: 0.6rem;
+
+// 10. Breadcrumbs
+// ---------------
+
+$breadcrumbs-margin: 0 0 $global-margin 0;
+$breadcrumbs-item-font-size: rem-calc(11);
+$breadcrumbs-item-color: $primary-color;
+$breadcrumbs-item-color-current: $black;
+$breadcrumbs-item-color-disabled: $medium-gray;
+$breadcrumbs-item-margin: 0.75rem;
+$breadcrumbs-item-uppercase: true;
+$breadcrumbs-item-separator: true;
+$breadcrumbs-item-separator-item: '/';
+$breadcrumbs-item-separator-item-rtl: '\\';
+$breadcrumbs-item-separator-color: $medium-gray;
+
+// 11. Button
+// ----------
+
+$button-font-family: inherit;
+$button-padding: 0.85em 1em;
+$button-margin: 0 0 $global-margin 0;
+$button-fill: solid;
+$button-background: $primary-color;
+$button-background-hover: scale-color($button-background, $lightness: -15%);
+$button-color: $white;
+$button-color-alt: $black;
+$button-radius: $global-radius;
+$button-hollow-border-width: 1px;
+$button-sizes: (
+ tiny: 0.6rem,
+ small: 0.75rem,
+ default: 0.9rem,
+ large: 1.25rem,
+);
+$button-palette: $foundation-palette;
+$button-opacity-disabled: 0.25;
+$button-background-hover-lightness: -20%;
+$button-hollow-hover-lightness: -50%;
+$button-transition: background-color 0.25s ease-out, color 0.25s ease-out;
+
+// 12. Button Group
+// ----------------
+
+$buttongroup-margin: 1rem;
+$buttongroup-spacing: 1px;
+$buttongroup-child-selector: '.button';
+$buttongroup-expand-max: 6;
+$buttongroup-radius-on-each: true;
+
+// 13. Callout
+// -----------
+
+$callout-background: $white;
+$callout-background-fade: 85%;
+$callout-border: 1px solid rgba($black, 0.25);
+$callout-margin: 0 0 1rem 0;
+$callout-padding: 1rem;
+$callout-font-color: $body-font-color;
+$callout-font-color-alt: $body-background;
+$callout-radius: $global-radius;
+$callout-link-tint: 30%;
+
+// 14. Card
+// --------
+
+$card-background: $white;
+$card-font-color: $body-font-color;
+$card-divider-background: $light-gray;
+$card-border: 1px solid $light-gray;
+$card-shadow: none;
+$card-border-radius: $global-radius;
+$card-padding: $global-padding;
+$card-margin-bottom: $global-margin;
+
+// 15. Close Button
+// ----------------
+
+$closebutton-position: right top;
+$closebutton-offset-horizontal: (
+ small: 0.66rem,
+ medium: 1rem,
+);
+$closebutton-offset-vertical: (
+ small: 0.33em,
+ medium: 0.5rem,
+);
+$closebutton-size: (
+ small: 1.5em,
+ medium: 2em,
+);
+$closebutton-lineheight: 1;
+$closebutton-color: $dark-gray;
+$closebutton-color-hover: $black;
+
+// 16. Drilldown
+// -------------
+
+$drilldown-transition: transform 0.15s linear;
+$drilldown-arrows: true;
+$drilldown-padding: $global-menu-padding;
+$drilldown-nested-margin: 0;
+$drilldown-background: $white;
+$drilldown-submenu-padding: $drilldown-padding;
+$drilldown-submenu-background: $white;
+$drilldown-arrow-color: $primary-color;
+$drilldown-arrow-size: 6px;
+
+// 17. Dropdown
+// ------------
+
+$dropdown-padding: 1rem;
+$dropdown-background: $body-background;
+$dropdown-border: 1px solid $medium-gray;
+$dropdown-font-size: 1rem;
+$dropdown-width: 300px;
+$dropdown-radius: $global-radius;
+$dropdown-sizes: (
+ tiny: 100px,
+ small: 200px,
+ large: 400px,
+);
+
+// 18. Dropdown Menu
+// -----------------
+
+$dropdownmenu-arrows: true;
+$dropdownmenu-arrow-color: $anchor-color;
+$dropdownmenu-arrow-size: 6px;
+$dropdownmenu-arrow-padding: 1.5rem;
+$dropdownmenu-min-width: 200px;
+$dropdownmenu-background: $white;
+$dropdownmenu-submenu-background: $dropdownmenu-background;
+$dropdownmenu-padding: $global-menu-padding;
+$dropdownmenu-nested-margin: 0;
+$dropdownmenu-submenu-padding: $dropdownmenu-padding;
+$dropdownmenu-border: 1px solid $medium-gray;
+$dropdown-menu-item-color-active: get-color(primary);
+$dropdown-menu-item-background-active: transparent;
+
+// 19. Flexbox Utilities
+// ---------------------
+
+$flex-source-ordering-count: 6;
+$flexbox-responsive-breakpoints: true;
+
+// 20. Forms
+// ---------
+
+$fieldset-border: 1px solid $medium-gray;
+$fieldset-padding: rem-calc(20);
+$fieldset-margin: rem-calc(18 0);
+$legend-padding: rem-calc(0 3);
+$form-spacing: rem-calc(16);
+$helptext-color: $black;
+$helptext-font-size: rem-calc(13);
+$helptext-font-style: italic;
+$input-prefix-color: $black;
+$input-prefix-background: $light-gray;
+$input-prefix-border: 1px solid $medium-gray;
+$input-prefix-padding: 1rem;
+$form-label-color: $black;
+$form-label-font-size: rem-calc(14);
+$form-label-font-weight: $global-weight-normal;
+$form-label-line-height: 1.8;
+$select-background: $white;
+$select-triangle-color: $dark-gray;
+$select-radius: $global-radius;
+$input-color: $black;
+$input-placeholder-color: $medium-gray;
+$input-font-family: inherit;
+$input-font-size: rem-calc(16);
+$input-font-weight: $global-weight-normal;
+$input-line-height: $global-lineheight;
+$input-background: $white;
+$input-background-focus: $white;
+$input-background-disabled: $light-gray;
+$input-border: 1px solid $medium-gray;
+$input-border-focus: 1px solid $dark-gray;
+$input-padding: $form-spacing / 2;
+$input-shadow: inset 0 1px 2px rgba($black, 0.1);
+$input-shadow-focus: 0 0 5px $medium-gray;
+$input-cursor-disabled: not-allowed;
+$input-transition: box-shadow 0.5s, border-color 0.25s ease-in-out;
+$input-number-spinners: true;
+$input-radius: $global-radius;
+$form-button-radius: $global-radius;
+
+// 21. Label
+// ---------
+
+$label-background: $primary-color;
+$label-color: $white;
+$label-color-alt: $black;
+$label-palette: $foundation-palette;
+$label-font-size: 0.8rem;
+$label-padding: 0.33333rem 0.5rem;
+$label-radius: $global-radius;
+
+// 22. Media Object
+// ----------------
+
+$mediaobject-margin-bottom: $global-margin;
+$mediaobject-section-padding: $global-padding;
+$mediaobject-image-width-stacked: 100%;
+
+// 23. Menu
+// --------
+
+$menu-margin: 0;
+$menu-nested-margin: $global-menu-nested-margin;
+$menu-items-padding: $global-menu-padding;
+$menu-simple-margin: 1rem;
+$menu-item-color-active: $white;
+$menu-item-background-active: get-color(primary);
+$menu-icon-spacing: 0.25rem;
+$menu-item-background-hover: $light-gray;
+$menu-state-back-compat: true;
+$menu-centered-back-compat: true;
+
+// 24. Meter
+// ---------
+
+$meter-height: 1rem;
+$meter-radius: $global-radius;
+$meter-background: $medium-gray;
+$meter-fill-good: $success-color;
+$meter-fill-medium: $warning-color;
+$meter-fill-bad: $alert-color;
+
+// 25. Off-canvas
+// --------------
+
+$offcanvas-size: 250px;
+$offcanvas-vertical-size: 250px;
+$offcanvas-background: $light-gray;
+$offcanvas-shadow: 0 0 10px rgba($black, 0.7);
+$offcanvas-inner-shadow-size: 20px;
+$offcanvas-inner-shadow-color: rgba($black, 0.25);
+$offcanvas-overlay-zindex: 11;
+$offcanvas-push-zindex: 12;
+$offcanvas-overlap-zindex: 13;
+$offcanvas-reveal-zindex: 12;
+$offcanvas-transition-length: 0.5s;
+$offcanvas-transition-timing: ease;
+$offcanvas-fixed-reveal: true;
+$offcanvas-exit-background: rgba($white, 0.25);
+$maincontent-class: 'off-canvas-content';
+
+// 26. Orbit
+// ---------
+
+$orbit-bullet-background: $medium-gray;
+$orbit-bullet-background-active: $dark-gray;
+$orbit-bullet-diameter: 1.2rem;
+$orbit-bullet-margin: 0.1rem;
+$orbit-bullet-margin-top: 0.8rem;
+$orbit-bullet-margin-bottom: 0.8rem;
+$orbit-caption-background: rgba($black, 0.5);
+$orbit-caption-padding: 1rem;
+$orbit-control-background-hover: rgba($black, 0.5);
+$orbit-control-padding: 1rem;
+$orbit-control-zindex: 10;
+
+// 27. Pagination
+// --------------
+
+$pagination-font-size: rem-calc(14);
+$pagination-margin-bottom: $global-margin;
+$pagination-item-color: $black;
+$pagination-item-padding: rem-calc(3 10);
+$pagination-item-spacing: rem-calc(1);
+$pagination-radius: $global-radius;
+$pagination-item-background-hover: $light-gray;
+$pagination-item-background-current: $primary-color;
+$pagination-item-color-current: $white;
+$pagination-item-color-disabled: $medium-gray;
+$pagination-ellipsis-color: $black;
+$pagination-mobile-items: false;
+$pagination-mobile-current-item: false;
+$pagination-arrows: true;
+
+// 28. Progress Bar
+// ----------------
+
+$progress-height: 1rem;
+$progress-background: $medium-gray;
+$progress-margin-bottom: $global-margin;
+$progress-meter-background: $primary-color;
+$progress-radius: $global-radius;
+
+// 29. Prototype Arrow
+// -------------------
+
+$prototype-arrow-directions: (
+ down,
+ up,
+ right,
+ left
+);
+$prototype-arrow-size: 0.4375rem;
+$prototype-arrow-color: $black;
+
+// 30. Prototype Border-Box
+// ------------------------
+
+$prototype-border-box-breakpoints: $global-prototype-breakpoints;
+
+// 31. Prototype Border-None
+// -------------------------
+
+$prototype-border-none-breakpoints: $global-prototype-breakpoints;
+
+// 32. Prototype Bordered
+// ----------------------
+
+$prototype-bordered-breakpoints: $global-prototype-breakpoints;
+$prototype-border-width: rem-calc(1);
+$prototype-border-type: solid;
+$prototype-border-color: $medium-gray;
+
+// 33. Prototype Display
+// ---------------------
+
+$prototype-display-breakpoints: $global-prototype-breakpoints;
+$prototype-display: (
+ inline,
+ inline-block,
+ block,
+ table,
+ table-cell
+);
+
+// 34. Prototype Font-Styling
+// --------------------------
+
+$prototype-font-breakpoints: $global-prototype-breakpoints;
+$prototype-wide-letter-spacing: rem-calc(4);
+$prototype-font-normal: $global-weight-normal;
+$prototype-font-bold: $global-weight-bold;
+
+// 35. Prototype List-Style-Type
+// -----------------------------
+
+$prototype-list-breakpoints: $global-prototype-breakpoints;
+$prototype-style-type-unordered: (
+ disc,
+ circle,
+ square
+);
+$prototype-style-type-ordered: (
+ decimal,
+ lower-alpha,
+ lower-latin,
+ lower-roman,
+ upper-alpha,
+ upper-latin,
+ upper-roman
+);
+
+// 36. Prototype Overflow
+// ----------------------
+
+$prototype-overflow-breakpoints: $global-prototype-breakpoints;
+$prototype-overflow: (
+ visible,
+ hidden,
+ scroll
+);
+
+// 37. Prototype Position
+// ----------------------
+
+$prototype-position-breakpoints: $global-prototype-breakpoints;
+$prototype-position: (
+ static,
+ relative,
+ absolute,
+ fixed
+);
+$prototype-position-z-index: 975;
+
+// 38. Prototype Rounded
+// ---------------------
+
+$prototype-rounded-breakpoints: $global-prototype-breakpoints;
+$prototype-border-radius: rem-calc(3);
+
+// 39. Prototype Separator
+// -----------------------
+
+$prototype-separator-breakpoints: $global-prototype-breakpoints;
+$prototype-separator-align: center;
+$prototype-separator-height: rem-calc(2);
+$prototype-separator-width: 3rem;
+$prototype-separator-background: $primary-color;
+$prototype-separator-margin-top: $global-margin;
+
+// 40. Prototype Shadow
+// --------------------
+
+$prototype-shadow-breakpoints: $global-prototype-breakpoints;
+$prototype-box-shadow: 0 2px 5px 0 rgba(0,0,0,.16),
+ 0 2px 10px 0 rgba(0,0,0,.12);
+
+// 41. Prototype Sizing
+// --------------------
+
+$prototype-sizing-breakpoints: $global-prototype-breakpoints;
+$prototype-sizing: (
+ width,
+ height
+);
+$prototype-sizes: (
+ 25: 25%,
+ 50: 50%,
+ 75: 75%,
+ 100: 100%
+);
+
+// 42. Prototype Spacing
+// ---------------------
+
+$prototype-spacing-breakpoints: $global-prototype-breakpoints;
+$prototype-spacers-count: 3;
+
+// 43. Prototype Text-Decoration
+// -----------------------------
+
+$prototype-decoration-breakpoints: $global-prototype-breakpoints;
+$prototype-text-decoration: (
+ overline,
+ underline,
+ line-through,
+);
+
+// 44. Prototype Text-Transformation
+// ---------------------------------
+
+$prototype-transformation-breakpoints: $global-prototype-breakpoints;
+$prototype-text-transformation: (
+ lowercase,
+ uppercase,
+ capitalize
+);
+
+// 45. Prototype Text-Utilities
+// ----------------------------
+
+$prototype-utilities-breakpoints: $global-prototype-breakpoints;
+$prototype-text-overflow: ellipsis;
+
+// 46. Responsive Embed
+// --------------------
+
+$responsive-embed-margin-bottom: rem-calc(16);
+$responsive-embed-ratios: (
+ default: 4 by 3,
+ widescreen: 16 by 9,
+);
+
+// 47. Reveal
+// ----------
+
+$reveal-background: $white;
+$reveal-width: 600px;
+$reveal-max-width: $global-width;
+$reveal-padding: $global-padding;
+$reveal-border: 1px solid $medium-gray;
+$reveal-radius: $global-radius;
+$reveal-zindex: 1005;
+$reveal-overlay-background: rgba($black, 0.45);
+
+// 48. Slider
+// ----------
+
+$slider-width-vertical: 0.5rem;
+$slider-transition: all 0.2s ease-in-out;
+$slider-height: 0.5rem;
+$slider-background: $light-gray;
+$slider-fill-background: $medium-gray;
+$slider-handle-height: 1.4rem;
+$slider-handle-width: 1.4rem;
+$slider-handle-background: $primary-color;
+$slider-opacity-disabled: 0.25;
+$slider-radius: $global-radius;
+
+// 49. Switch
+// ----------
+
+$switch-background: $medium-gray;
+$switch-background-active: $primary-color;
+$switch-height: 2rem;
+$switch-height-tiny: 1.5rem;
+$switch-height-small: 1.75rem;
+$switch-height-large: 2.5rem;
+$switch-radius: $global-radius;
+$switch-margin: $global-margin;
+$switch-paddle-background: $white;
+$switch-paddle-offset: 0.25rem;
+$switch-paddle-radius: $global-radius;
+$switch-paddle-transition: all 0.25s ease-out;
+
+// 50. Table
+// ---------
+
+$table-background: $white;
+$table-color-scale: 5%;
+$table-border: 1px solid smart-scale($table-background, $table-color-scale);
+$table-padding: rem-calc(8 10 10);
+$table-hover-scale: 2%;
+$table-row-hover: darken($table-background, $table-hover-scale);
+$table-row-stripe-hover: darken($table-background, $table-color-scale + $table-hover-scale);
+$table-is-striped: true;
+$table-striped-background: smart-scale($table-background, $table-color-scale);
+$table-stripe: even;
+$table-head-background: smart-scale($table-background, $table-color-scale / 2);
+$table-head-row-hover: darken($table-head-background, $table-hover-scale);
+$table-foot-background: smart-scale($table-background, $table-color-scale);
+$table-foot-row-hover: darken($table-foot-background, $table-hover-scale);
+$table-head-font-color: $body-font-color;
+$table-foot-font-color: $body-font-color;
+$show-header-for-stacked: false;
+$table-stack-breakpoint: medium;
+
+// 51. Tabs
+// --------
+
+$tab-margin: 0;
+$tab-background: $white;
+$tab-color: $primary-color;
+$tab-background-active: $light-gray;
+$tab-active-color: $primary-color;
+$tab-item-font-size: rem-calc(12);
+$tab-item-background-hover: $white;
+$tab-item-padding: 1.25rem 1.5rem;
+$tab-expand-max: 6;
+$tab-content-background: $white;
+$tab-content-border: $light-gray;
+$tab-content-color: $body-font-color;
+$tab-content-padding: 1rem;
+
+// 52. Thumbnail
+// -------------
+
+$thumbnail-border: solid 4px $white;
+$thumbnail-margin-bottom: $global-margin;
+$thumbnail-shadow: 0 0 0 1px rgba($black, 0.2);
+$thumbnail-shadow-hover: 0 0 6px 1px rgba($primary-color, 0.5);
+$thumbnail-transition: box-shadow 200ms ease-out;
+$thumbnail-radius: $global-radius;
+
+// 53. Title Bar
+// -------------
+
+$titlebar-background: $black;
+$titlebar-color: $white;
+$titlebar-padding: 0.5rem;
+$titlebar-text-font-weight: bold;
+$titlebar-icon-color: $white;
+$titlebar-icon-color-hover: $medium-gray;
+$titlebar-icon-spacing: 0.25rem;
+
+// 54. Tooltip
+// -----------
+
+$has-tip-cursor: help;
+$has-tip-font-weight: $global-weight-bold;
+$has-tip-border-bottom: dotted 1px $dark-gray;
+$tooltip-background-color: $black;
+$tooltip-color: $white;
+$tooltip-padding: 0.75rem;
+$tooltip-max-width: 10rem;
+$tooltip-font-size: $small-font-size;
+$tooltip-pip-width: 0.75rem;
+$tooltip-pip-height: $tooltip-pip-width * 0.866;
+$tooltip-radius: $global-radius;
+
+// 55. Top Bar
+// -----------
+
+$topbar-padding: 0.5rem;
+$topbar-background: $light-gray;
+$topbar-submenu-background: $topbar-background;
+$topbar-title-spacing: 0.5rem 1rem 0.5rem 0;
+$topbar-input-width: 200px;
+$topbar-unstack-breakpoint: medium;
+
+// 56. Xy Grid
+// -----------
+
+$xy-grid: true;
+$grid-container: $global-width;
+$grid-columns: 12;
+$grid-margin-gutters: (
+ small: 20px,
+ medium: 30px
+);
+$grid-padding-gutters: $grid-margin-gutters;
+$grid-container-padding: $grid-padding-gutters;
+$grid-container-max: $global-width;
+$block-grid-max: 8;
+
diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss
new file mode 100644
index 0000000000..38bc2bc1bc
--- /dev/null
+++ b/app/assets/stylesheets/application.scss
@@ -0,0 +1,602 @@
+/*
+* 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 foundation_and_overrides
+*= require_tree .
+
+/*general element styling*/
+ul, ol {
+ list-style: none;
+}
+
+html {
+ width: 100%;
+ height: 100%;
+}
+
+body {
+ width: 100%;
+ // background-color: black;
+ background: radial-gradient(ellipse at bottom, #1b2735 0%, #090a0f 100%);
+ color: white;
+ font-family: 'Josefin Slab', serif;
+}
+
+em {
+ font-weight: bold;
+ font-style: normal;
+}
+
+a, a:visited {
+ color: inherit;
+}
+
+a:hover {
+ color: grey;
+}
+
+/*flash message styling*/
+.flash, .status {
+ border-radius: 5px;
+ padding: 20px 25px;
+ background-color: transparent;
+ color: white;
+ font-size: 1.25rem;
+ font-family: 'Josefin Slab', serif;
+ text-align: center;
+}
+
+/*application wide header & dropdown menus*/
+header {
+ width: 100%;
+ margin-left: 0;
+ margin-right: 0;
+ padding-top: 1.5rem;
+ padding-bottom: 5rem;
+ display: flex;
+ justify-content: space-evenly;
+ align-items: center;
+}
+
+@media screen and (max-width: 480px) {
+ html {
+ background-color: black;
+ }
+
+ #stars, #stars2, #stars3 {
+ display: none
+ }
+
+ .logo {
+ display: none
+ }
+
+ .dropdown ul {
+ // display: none;
+ }
+}
+
+.logo a, .home-link {
+ /*font-family: 'Berkshire Swash', cursive;*/
+ font-family: 'Cinzel', serif;
+ color: white;
+ text-shadow: 10px;
+ font-weight: bold;
+ font-size: 4rem;
+ float: left;
+ transition: all .2s ease-in-out;
+}
+
+.dropdown {
+ position: relative;
+ display: flex;
+ text-align: left;
+ margin-left: 0;
+}
+
+.navigation .dropdown button {
+ font-family: 'Cinzel', serif;
+ font-size: 2em;
+ text-shadow: 1;
+ text-decoration: none;
+}
+
+.dropdown-button-browse, .dropdown-button-cart, .dropdown-button-login {
+ color: white;
+ padding: 0;
+ font-size: 3em;
+ border: none;
+ cursor: pointer;
+ font-weight: bolder;
+ margin: 0;
+ transition: all .2s ease-in-out;
+}
+
+.dropdown-button-browse:hover, .dropdown-button-cart:hover, .dropdown-button-login:hover, .logo a:hover {
+ transform: scale(1.15);
+}
+
+.dropdown-content-browse, .dropdown-content-cart, .dropdown-content-login {
+ display: none;
+ position: absolute;
+ font-family: 'Josefin Slab', serif;
+ color: white;
+ text-transform: capitalize;
+ font-size: 1.5rem;
+ width: 20em;
+ min-width: 160px;
+ text-align: left;
+ overflow: visible;
+ margin: 0;
+ z-index: 1;
+ transition: all .2s ease-in-out;
+}
+
+.dropdown-content-browse a, .dropdown-content-cart, .dropdown-content-login a {
+ padding: 12px 16px;
+ text-decoration: none;
+ width: 8em;
+ display: block;
+ transition: all .1s ease-in;
+}
+
+.dropdown-content-browse a:hover, .dropdown-content-merchant a:hover, .dropdown-content-cart, .dropdown-content-login a {
+ color: black;
+ width: 8em;
+ background-color: darkgrey;
+}
+
+.dropdown:hover .dropdown-content-browse {
+ display: block;
+}
+
+.dropdown:hover .dropdown-content-cart {
+ display: block;
+}
+
+.dropdown:hover .dropdown-content-cart {
+ display: block;
+}
+
+/*content container across all pages*/
+.content {
+ width: 100%;
+ display: inline-block;
+ margin: 2rem;
+}
+
+/*index views for all models*/
+.all-products, .all-merchants, .all-categories, .show-merchant, .show-category, .home {
+ display: flex;
+ flex-flow: row;
+ flex-wrap: wrap;
+ margin: 0;
+ color: white;
+ text-align: center;
+ justify-content: center;
+}
+
+.index-banner {
+ width: 100%;
+ text-align: center;
+ padding: 1rem;
+ margin-bottom: 1.5rem;
+ font-family: 'Cinzel', serif;
+ font-size: 3em;
+ text-shadow: 1;
+}
+
+.index-banner .email {
+ font-size: 2.5rem;
+}
+
+.index-image {
+ height: 250px;
+ width: 260px;
+ overflow: hidden;
+ margin-right: 0;
+ padding-right: 0;
+ padding-bottom: 1rem;
+}
+
+.merchant .index-image {
+ height: 195px;
+ width: 260px;
+}
+
+.index-image:hover {
+ -webkit-filter: grayscale(100%);
+ filter: grayscale(100%);
+}
+
+.info-card {
+ clear: both;
+ height: 400px;
+ width: 275px;
+ overflow: hidden;
+ transition: all .2s ease-in;
+ font-size: 1.5rem;
+}
+
+.info-card .merchant {
+ font-size: 1rem;
+}
+
+.info-card:hover {
+ transform: scale(1.15);
+}
+
+.product, .merchant, .category {
+ display: flex;
+ flex-flow: column;
+ padding: 1em;
+ text-align: left;
+ color: white;
+ font-family: 'Josefin Slab', serif;
+ width: 25rem;
+ height: 30rem;
+ margin: 1rem;
+}
+
+.category-name em {
+ text-align: center;
+ font-size: 1.5rem;
+}
+
+/*index views for all models*/
+.show {
+ display: inline-block;
+ width: 100%;
+}
+
+.image-details-combo {
+ display: inline-block;
+ width: 100%;
+}
+
+.show-details {
+ margin-top: 2rem;
+ margin-left: 5rem;
+}
+
+.show-details p {
+ /*display: inline-block;*/
+ font-family: 'Josefin Slab', serif;
+ color: white;
+ font-size: 2rem;
+ line-height: 120%;
+}
+
+.show-details button {
+ display: block;
+}
+
+.show-image {
+ display: inline;
+}
+
+.show-image img {
+ display: inline-block;
+ width: 500px;
+ height: 500px;
+}
+
+// reviews for show product page
+.one-review {
+ background-color: darkgrey;
+ color: black;
+ border-radius: 5px;
+ font-size: 3rem;
+}
+
+/*homepage background image*/
+#homepage {
+ background-image: radial-gradient(transparent, rgba(0,0,0,.8)), url("http://1.bp.blogspot.com/-kLbhA08qOUw/Vi5FAnWvs9I/AAAAAAAABBE/vrAlIqU9emk/s1600/seances.jpg%22");
+ min-height: 100%;
+ background-position: center center;
+ background-repeat: no-repeat;
+ background-color: black;
+ background-size: 100% 100%;
+}
+
+.home-link {
+ width: 100%;
+ color: white;
+ font-size: 6rem;
+ display: inline-block;
+ text-align: center;
+ position: relative;
+ margin-bottom: 0;
+ letter-spacing: 7px;
+}
+/*homepage canvas crystal ball*/
+#myCanvas {
+ display: inline-block;
+ width: 100%;
+ height: 100%;
+ margin: 0;
+ border-radius: 80%;
+ position: relative;
+ background: transparent;
+}
+
+.ball {
+ display: inline-block;
+ width: 35%;
+ height: 35%;
+ margin-right: 32.5%;
+ margin-left: 32.5%;
+ margin-bottom: 10%;
+ border-radius: 50%;
+ position: relative;
+ background: radial-gradient(circle at 50% 120%, #4f0e71, #430b5f 10%, #3d0a56 80%, #240633 100%);
+ opacity: .85;
+}
+
+.ball:before {
+ content: "";
+ position: absolute;
+ top: 1%;
+ left: 5%;
+ width: 90%;
+ height: 90%;
+ border-radius: 50%;
+ background: radial-gradient(circle at 50% 0px, #ffffff, rgba(255, 255, 255, 0) 58%);
+ -webkit-filter: blur(5px);
+ z-index: 2;
+}
+
+.ball .shadow {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ background: radial-gradient(circle at 50% 50%, rgba(0, 0, 0, 0.4), rgba(0, 0, 0, 0.1) 40%, rgba(0, 0, 0, 0) 50%);
+ -webkit-transform: rotateX(90deg) translateZ(-150px);
+ -moz-transform: rotateX(90deg) translateZ(-150px);
+ -ms-transform: rotateX(90deg) translateZ(-150px);
+ -o-transform: rotateX(90deg) translateZ(-150px);
+ transform: rotateX(90deg) translateZ(-150px);
+ z-index: -1;
+}
+
+/*order page details*/
+.order {
+ width: 100%;
+ text-align: center;
+}
+
+.order-details, form {
+ width: 70%;
+ margin-left: 20%;
+ margin-right: 20%;
+ padding-top: 1rem;
+ text-align: left;
+}
+
+.order-details {
+ font-size: 1.5rem;
+}
+
+.line-item {
+ width: 100%;
+ display: inline-block;
+}
+
+.product-info {
+ float: left;
+ text-align: center;
+}
+
+.order-info {
+ float: left;
+ text-align: left;
+}
+
+.change-amount {
+ float: right;
+ display: inline-block;
+}
+
+.revenue {
+ font-size: 1.5rem;
+ padding: 1em;
+}
+
+// merchant views
+.view-buttons {
+ display: inline-block;
+ align-items: center;
+}
+
+/*button styling*/
+.button, input[type=text], input[type=submit] {
+ flex: 1 1 auto;
+ margin: 10px;
+ padding: 20px;
+ border: 2px solid grey;
+ text-align: center;
+ font-family: 'Josefin Slab', serif;
+ text-transform: uppercase;
+ font-weight: bolder;
+ color: white;
+ background-color: transparent;
+ position: relative;
+ overflow:hidden;
+ transition: .3s;
+}
+
+
+.button:hover, input[type=submit]:hover {
+ color: black;
+ background-color: white;
+ transform: scale(1.15);
+}
+
+// form styling
+label {
+ color: white;
+ font-size: 1.5rem;
+}
+
+input[type=text], input[type=text]:focus, textarea, textarea:focus {
+ background-color: transparent;
+ color: white;
+}
+
+/*featured product homepage slider*/
+.scrolling-image {
+ display: block;
+ text-align: center;
+}
+
+#slider {
+ position: relative;
+ overflow: hidden;
+ margin: 20px auto 0 auto;
+ border-radius: 4px;
+ width: 80%;
+ transition: all .2s ease-in-out;
+}
+
+#slider ul {
+ position: relative;
+ margin: 0;
+ padding: 0;
+ height: 200px;
+ list-style: none;
+}
+
+#slider ul li {
+ position: relative;
+ display: block;
+ float: left;
+ margin: 0;
+ padding: 0;
+ width: 600px;
+ height: 300px;
+ background: #ccc;
+ text-align: center;
+ line-height: 300px;
+}
+
+a.control_prev, a.control_next {
+ position: absolute;
+ top: 40%;
+ z-index: 999;
+ display: block;
+ padding: 4% 3%;
+ width: auto;
+ height: auto;
+ background: #2a2a2a;
+ color: #fff;
+ text-decoration: none;
+ font-weight: 600;
+ font-size: 18px;
+ opacity: 0.8;
+ cursor: pointer;
+}
+
+a.control_prev:hover, a.control_next:hover {
+ opacity: 1;
+ -webkit-transition: all 0.2s ease;
+}
+
+a.control_prev {
+ border-radius: 0 2px 2px 0;
+}
+
+a.control_next {
+ right: 0;
+ border-radius: 2px 0 0 2px;
+}
+
+.slider_option {
+ display: block;
+ position: absolute;
+ margin: 10px auto;
+ width: 160px;
+ font-size: 18px;
+}
+
+.slider-link {
+ position: absolute;
+}
+
+#checkbox {
+ display: none;
+}
+
+
+// funexciting but ultimately unnecessary parralax background so comment out below this point if you need to for fun/sanity
+
+html {
+ height: 100%;
+ background: radial-gradient(ellipse at bottom, #1b2735 0%, #090a0f 100%);
+ // overflow: hidden;
+}
+
+#stars {
+ content:"";
+ background: transparent;
+ box-shadow: 1744px 122px #FFF , 134px 1321px #FFF , 92px 859px #FFF , 235px 1045px #FFF , 366px 912px #FFF , 491px 942px #FFF , 14px 1831px #FFF , 582px 476px #FFF , 588px 1230px #FFF , 1520px 1343px #FFF , 1671px 203px #FFF , 550px 341px #FFF , 1491px 549px #FFF , 558px 161px #FFF , 896px 1823px #FFF , 999px 1463px #FFF , 1557px 636px #FFF , 1754px 1307px #FFF , 1682px 1494px #FFF , 703px 1707px #FFF , 1945px 1847px #FFF , 1151px 1320px #FFF , 980px 144px #FFF , 478px 948px #FFF , 109px 1762px #FFF , 558px 255px #FFF , 719px 1820px #FFF , 588px 748px #FFF , 1899px 174px #FFF , 841px 1771px #FFF , 571px 1588px #FFF , 1155px 353px #FFF , 1879px 1220px #FFF , 1782px 870px #FFF , 407px 1238px #FFF , 1141px 63px #FFF , 1147px 1097px #FFF , 1406px 159px #FFF , 637px 1215px #FFF , 694px 1114px #FFF , 1536px 727px #FFF , 1708px 1512px #FFF , 1147px 880px #FFF , 684px 988px #FFF , 140px 851px #FFF , 1565px 1788px #FFF , 1573px 889px #FFF , 1172px 628px #FFF , 1474px 1978px #FFF , 435px 447px #FFF , 185px 1808px #FFF , 620px 1560px #FFF , 1387px 1196px #FFF , 138px 1854px #FFF , 137px 1499px #FFF , 1721px 1132px #FFF , 10px 32px #FFF , 1931px 1990px #FFF , 209px 91px #FFF , 1876px 1795px #FFF , 1130px 1551px #FFF , 284px 1848px #FFF , 389px 1603px #FFF , 612px 1121px #FFF , 825px 1926px #FFF , 161px 344px #FFF , 1729px 333px #FFF , 1037px 37px #FFF , 844px 1085px #FFF , 1179px 554px #FFF , 50px 478px #FFF , 1864px 704px #FFF , 233px 723px #FFF , 1202px 445px #FFF , 882px 189px #FFF , 362px 735px #FFF , 924px 411px #FFF , 902px 209px #FFF , 104px 185px #FFF , 1599px 1852px #FFF , 1974px 944px #FFF , 438px 1164px #FFF , 401px 1533px #FFF , 191px 1429px #FFF , 251px 1034px #FFF , 1807px 1412px #FFF , 72px 23px #FFF , 1752px 1146px #FFF , 261px 1481px #FFF , 548px 33px #FFF , 710px 1204px #FFF , 355px 1697px #FFF , 581px 100px #FFF , 318px 1146px #FFF , 929px 79px #FFF , 999px 347px #FFF , 155px 292px #FFF , 271px 677px #FFF , 920px 1596px #FFF , 1736px 184px #FFF , 1022px 1790px #FFF , 1465px 1762px #FFF , 820px 526px #FFF , 175px 37px #FFF , 440px 746px #FFF , 681px 1879px #FFF , 690px 1135px #FFF , 1960px 1453px #FFF , 422px 856px #FFF , 1217px 1232px #FFF , 1015px 1695px #FFF , 1933px 492px #FFF , 272px 448px #FFF , 1578px 1487px #FFF , 437px 874px #FFF , 947px 838px #FFF , 1339px 867px #FFF , 1484px 773px #FFF , 764px 66px #FFF , 418px 707px #FFF , 192px 1909px #FFF , 1629px 215px #FFF , 171px 260px #FFF , 1180px 220px #FFF , 488px 857px #FFF , 593px 493px #FFF , 1794px 886px #FFF , 1673px 1977px #FFF , 905px 1193px #FFF , 1372px 1843px #FFF , 1605px 908px #FFF , 659px 181px #FFF , 700px 1758px #FFF , 812px 1200px #FFF , 1800px 1440px #FFF , 1858px 212px #FFF , 628px 1026px #FFF , 1825px 1556px #FFF , 1641px 1750px #FFF , 1195px 1086px #FFF , 1465px 558px #FFF , 1634px 436px #FFF , 1354px 1831px #FFF , 1212px 1485px #FFF , 1491px 994px #FFF , 604px 1279px #FFF , 413px 1131px #FFF , 1677px 1086px #FFF , 841px 47px #FFF , 146px 489px #FFF , 117px 1195px #FFF , 67px 47px #FFF , 883px 258px #FFF , 1801px 1294px #FFF , 594px 1870px #FFF , 649px 531px #FFF , 721px 132px #FFF , 975px 1616px #FFF , 716px 94px #FFF , 295px 791px #FFF , 174px 1814px #FFF , 1130px 298px #FFF , 1747px 1835px #FFF , 605px 1521px #FFF , 78px 743px #FFF , 1685px 311px #FFF , 804px 341px #FFF , 1440px 852px #FFF , 1607px 1692px #FFF , 698px 1112px #FFF , 1153px 1608px #FFF , 539px 999px #FFF , 262px 353px #FFF , 457px 1246px #FFF , 1858px 998px #FFF , 364px 431px #FFF , 1907px 912px #FFF , 541px 916px #FFF , 168px 1384px #FFF , 357px 1321px #FFF , 1859px 1866px #FFF , 1001px 909px #FFF , 842px 1663px #FFF , 369px 1176px #FFF , 932px 1372px #FFF , 1606px 732px #FFF , 1844px 857px #FFF , 974px 1588px #FFF , 804px 1139px #FFF , 65px 1213px #FFF , 1066px 863px #FFF , 1991px 1734px #FFF , 300px 738px #FFF , 1260px 1141px #FFF , 83px 260px #FFF , 1219px 167px #FFF , 613px 990px #FFF , 873px 81px #FFF , 362px 235px #FFF , 373px 372px #FFF , 80px 247px #FFF , 902px 1141px #FFF , 294px 464px #FFF , 766px 1925px #FFF , 1151px 1305px #FFF , 1250px 1593px #FFF , 1289px 119px #FFF , 1525px 1505px #FFF , 234px 1306px #FFF , 571px 858px #FFF , 571px 996px #FFF , 766px 1342px #FFF , 1371px 716px #FFF , 711px 1939px #FFF , 904px 1797px #FFF , 424px 1710px #FFF , 762px 1614px #FFF , 1389px 1290px #FFF , 905px 689px #FFF , 352px 38px #FFF , 2000px 1317px #FFF , 597px 864px #FFF , 824px 711px #FFF , 966px 1060px #FFF , 958px 992px #FFF , 1121px 324px #FFF , 1624px 688px #FFF , 1737px 702px #FFF , 1566px 1344px #FFF , 697px 368px #FFF , 291px 1126px #FFF , 1732px 50px #FFF , 712px 1941px #FFF , 1257px 372px #FFF , 317px 1462px #FFF , 222px 309px #FFF , 1139px 647px #FFF , 170px 878px #FFF , 1272px 1511px #FFF , 1009px 1912px #FFF , 1875px 1105px #FFF , 1968px 1370px #FFF , 1193px 687px #FFF , 1498px 611px #FFF , 247px 1993px #FFF , 1686px 1611px #FFF , 937px 340px #FFF , 114px 1423px #FFF , 496px 1191px #FFF , 110px 1284px #FFF , 876px 687px #FFF , 1173px 214px #FFF , 210px 628px #FFF , 302px 1173px #FFF , 1318px 939px #FFF , 1665px 1310px #FFF , 66px 338px #FFF , 1355px 615px #FFF , 1139px 1672px #FFF , 91px 1000px #FFF , 112px 422px #FFF , 89px 503px #FFF , 97px 1599px #FFF , 1031px 1955px #FFF , 1755px 1532px #FFF , 1764px 1930px #FFF , 1822px 1751px #FFF , 133px 401px #FFF , 718px 85px #FFF , 1797px 78px #FFF , 520px 1725px #FFF , 226px 406px #FFF , 1561px 1574px #FFF , 340px 1602px #FFF , 718px 976px #FFF , 1823px 570px #FFF , 1298px 484px #FFF , 1023px 1903px #FFF , 1266px 1334px #FFF , 763px 877px #FFF , 223px 631px #FFF , 1761px 1293px #FFF , 878px 1px #FFF , 973px 696px #FFF , 975px 1841px #FFF , 1276px 302px #FFF , 1399px 1324px #FFF , 1706px 872px #FFF , 341px 1960px #FFF , 1384px 1655px #FFF , 1897px 767px #FFF , 68px 405px #FFF , 705px 310px #FFF , 194px 103px #FFF , 1432px 368px #FFF , 1262px 1682px #FFF , 1933px 1526px #FFF , 263px 655px #FFF , 1031px 1031px #FFF , 1557px 788px #FFF , 1558px 1360px #FFF , 812px 421px #FFF , 1951px 734px #FFF , 1567px 498px #FFF , 1832px 1229px #FFF , 913px 164px #FFF , 1907px 1273px #FFF , 533px 749px #FFF , 1235px 951px #FFF , 645px 1959px #FFF , 92px 1570px #FFF , 1169px 1434px #FFF , 118px 1223px #FFF , 583px 957px #FFF , 1245px 316px #FFF , 527px 863px #FFF , 372px 1007px #FFF , 244px 1251px #FFF , 314px 494px #FFF , 1842px 1463px #FFF , 1315px 730px #FFF , 1655px 1366px #FFF , 482px 979px #FFF , 340px 1808px #FFF , 256px 578px #FFF , 858px 1792px #FFF , 1965px 403px #FFF , 454px 253px #FFF , 1664px 698px #FFF , 1974px 750px #FFF , 262px 1801px #FFF , 1652px 1076px #FFF , 992px 711px #FFF , 1792px 1323px #FFF , 700px 1748px #FFF , 855px 966px #FFF , 1833px 1747px #FFF , 402px 1272px #FFF , 1391px 1039px #FFF , 1395px 1538px #FFF , 397px 1972px #FFF , 744px 1403px #FFF , 1784px 1046px #FFF , 111px 198px #FFF , 1827px 473px #FFF , 1347px 1891px #FFF , 1238px 1081px #FFF , 189px 908px #FFF , 1513px 542px #FFF , 673px 981px #FFF , 720px 1184px #FFF , 373px 792px #FFF , 1470px 1631px #FFF , 16px 822px #FFF , 1935px 829px #FFF , 364px 613px #FFF , 223px 899px #FFF , 1233px 874px #FFF , 1441px 1834px #FFF , 719px 894px #FFF , 76px 1610px #FFF , 296px 685px #FFF , 572px 1637px #FFF , 349px 114px #FFF , 1670px 1802px #FFF , 979px 928px #FFF , 1589px 574px #FFF , 756px 194px #FFF , 616px 507px #FFF , 271px 186px #FFF , 198px 360px #FFF , 1916px 418px #FFF , 721px 667px #FFF , 1937px 1908px #FFF , 17px 556px #FFF , 345px 443px #FFF , 718px 760px #FFF , 1922px 310px #FFF , 1185px 887px #FFF , 1745px 1848px #FFF , 909px 847px #FFF , 1170px 134px #FFF , 1773px 1133px #FFF , 1099px 233px #FFF , 1122px 1524px #FFF , 866px 907px #FFF , 398px 213px #FFF , 1287px 886px #FFF , 1194px 149px #FFF , 1876px 1667px #FFF , 332px 1658px #FFF , 146px 1253px #FFF , 958px 211px #FFF , 643px 47px #FFF , 1213px 1339px #FFF , 1637px 1939px #FFF , 1601px 355px #FFF , 256px 1982px #FFF , 989px 1609px #FFF , 1179px 701px #FFF , 685px 1463px #FFF , 1910px 465px #FFF , 764px 1930px #FFF , 1856px 433px #FFF , 720px 367px #FFF , 1821px 416px #FFF , 48px 1114px #FFF , 716px 489px #FFF , 174px 1972px #FFF , 115px 1373px #FFF , 1487px 141px #FFF , 1919px 1362px #FFF , 1662px 859px #FFF , 1168px 490px #FFF , 706px 1820px #FFF , 588px 318px #FFF , 107px 778px #FFF , 621px 1667px #FFF , 1331px 1996px #FFF , 1404px 1154px #FFF , 860px 1019px #FFF , 1385px 1883px #FFF , 1066px 1951px #FFF , 752px 444px #FFF , 955px 1031px #FFF , 1256px 1899px #FFF , 961px 1455px #FFF , 1101px 84px #FFF , 890px 335px #FFF , 798px 40px #FFF , 138px 54px #FFF , 1934px 252px #FFF , 429px 324px #FFF , 1645px 1522px #FFF , 218px 737px #FFF , 1625px 531px #FFF , 605px 1290px #FFF , 1867px 648px #FFF , 82px 1137px #FFF , 231px 1423px #FFF , 471px 944px #FFF , 1363px 1752px #FFF , 482px 1364px #FFF , 1305px 627px #FFF , 1065px 891px #FFF , 217px 1841px #FFF , 1843px 1501px #FFF , 1681px 734px #FFF , 185px 856px #FFF , 609px 1094px #FFF , 49px 1657px #FFF , 783px 594px #FFF , 1018px 1123px #FFF , 644px 1149px #FFF , 739px 1262px #FFF , 1439px 1187px #FFF , 1789px 1507px #FFF , 941px 791px #FFF , 1319px 1308px #FFF , 498px 626px #FFF , 1594px 858px #FFF , 783px 71px #FFF , 576px 1976px #FFF , 1625px 696px #FFF , 1821px 352px #FFF , 1039px 885px #FFF , 208px 430px #FFF , 124px 198px #FFF , 1964px 686px #FFF , 1440px 1952px #FFF , 231px 1435px #FFF , 1846px 853px #FFF , 1174px 536px #FFF , 1228px 310px #FFF , 1380px 699px #FFF , 1116px 169px #FFF , 1416px 1007px #FFF , 178px 192px #FFF , 1302px 1903px #FFF , 1892px 154px #FFF , 962px 1032px #FFF , 1009px 1916px #FFF , 1549px 1206px #FFF , 899px 968px #FFF , 902px 543px #FFF , 1516px 542px #FFF , 965px 527px #FFF , 1594px 696px #FFF , 856px 1719px #FFF , 1522px 248px #FFF , 1795px 283px #FFF , 1144px 946px #FFF , 1365px 199px #FFF , 359px 1347px #FFF , 1506px 263px #FFF , 433px 1793px #FFF , 201px 247px #FFF , 942px 838px #FFF , 1122px 1065px #FFF , 1997px 108px #FFF , 306px 989px #FFF , 641px 1713px #FFF , 1072px 959px #FFF , 1874px 1079px #FFF , 1938px 269px #FFF , 891px 389px #FFF , 22px 574px #FFF , 727px 474px #FFF , 1671px 1649px #FFF , 98px 400px #FFF , 641px 798px #FFF , 1218px 1051px #FFF , 907px 1485px #FFF , 1002px 1549px #FFF , 1932px 1448px #FFF , 1132px 573px #FFF , 1222px 1147px #FFF , 1009px 451px #FFF , 698px 1940px #FFF , 97px 1123px #FFF , 904px 751px #FFF , 1904px 593px #FFF , 1451px 1658px #FFF , 191px 1606px #FFF , 1346px 482px #FFF , 1935px 1086px #FFF , 1052px 224px #FFF , 526px 1810px #FFF , 1607px 606px #FFF , 427px 1830px #FFF , 1546px 407px #FFF , 1771px 208px #FFF , 1714px 181px #FFF , 1332px 943px #FFF , 1663px 1094px #FFF , 1861px 1747px #FFF , 1429px 1217px #FFF , 1733px 1915px #FFF , 925px 1179px #FFF , 735px 781px #FFF , 1775px 1989px #FFF , 1770px 476px #FFF , 844px 400px #FFF , 1793px 1517px #FFF , 544px 281px #FFF , 725px 344px #FFF , 1274px 764px #FFF , 1845px 339px #FFF , 582px 1745px #FFF , 351px 1287px #FFF , 207px 749px #FFF , 1063px 1411px #FFF , 1246px 342px #FFF , 1538px 166px #FFF , 770px 602px #FFF , 1214px 1971px #FFF , 113px 294px #FFF , 1157px 101px #FFF , 1657px 517px #FFF , 637px 1693px #FFF , 961px 1649px #FFF , 1754px 1572px #FFF , 1885px 659px #FFF , 238px 34px #FFF , 413px 1027px #FFF , 1709px 1556px #FFF , 460px 878px #FFF , 1597px 608px #FFF , 544px 434px #FFF , 1258px 477px #FFF , 565px 1863px #FFF , 426px 322px #FFF , 1917px 850px #FFF , 296px 144px #FFF , 643px 1896px #FFF , 511px 116px #FFF , 359px 847px #FFF , 702px 1133px #FFF , 857px 1371px #FFF , 559px 1758px #FFF , 1615px 1223px #FFF , 1927px 1736px #FFF , 704px 941px #FFF , 1932px 942px #FFF , 1462px 335px #FFF , 154px 1915px #FFF , 1387px 918px #FFF , 1512px 1041px #FFF , 1094px 1334px #FFF , 1678px 865px #FFF , 1960px 431px #FFF , 666px 1258px #FFF , 422px 1215px #FFF , 345px 802px #FFF , 1207px 647px #FFF , 1701px 374px #FFF , 1440px 1925px #FFF , 1536px 1163px #FFF , 905px 155px #FFF , 843px 1036px #FFF , 660px 823px #FFF , 1329px 661px #FFF , 1867px 899px #FFF , 1022px 514px #FFF , 1062px 1570px #FFF , 888px 1786px #FFF , 699px 1738px #FFF , 1831px 1712px #FFF , 434px 18px #FFF , 227px 205px #FFF , 520px 1279px #FFF , 1329px 764px #FFF , 1824px 47px #FFF , 112px 266px #FFF , 830px 1140px #FFF , 478px 637px #FFF , 634px 850px #FFF , 711px 873px #FFF , 987px 249px #FFF , 1454px 909px #FFF , 699px 922px #FFF , 1458px 1142px #FFF , 701px 1893px #FFF , 134px 384px #FFF , 904px 354px #FFF , 1913px 1229px #FFF , 1606px 1336px #FFF , 976px 1776px #FFF , 1726px 605px #FFF , 1244px 590px #FFF , 1351px 526px #FFF , 1997px 130px #FFF , 1137px 1134px #FFF , 1293px 283px #FFF , 977px 1608px #FFF , 422px 1252px #FFF , 236px 1653px #FFF , 28px 1722px #FFF , 698px 39px #FFF , 5px 434px #FFF , 1430px 1466px #FFF , 1470px 1596px #FFF , 487px 81px #FFF , 186px 340px #FFF , 1941px 1px #FFF , 1342px 487px #FFF , 813px 1855px #FFF , 1445px 148px #FFF , 1965px 1428px #FFF , 1122px 1277px #FFF , 846px 820px #FFF , 1804px 228px #FFF , 1501px 121px #FFF , 215px 1033px #FFF , 244px 426px #FFF , 976px 453px #FFF , 566px 953px #FFF , 1772px 213px #FFF , 1323px 1778px #FFF , 1350px 817px #FFF , 803px 913px #FFF , 1395px 1359px #FFF , 1995px 119px #FFF , 579px 1963px #FFF , 862px 1621px #FFF , 1718px 825px #FFF , 823px 27px #FFF , 1252px 41px #FFF , 1562px 835px #FFF , 1730px 633px #FFF , 1723px 1939px #FFF , 524px 1824px #FFF , 1921px 1450px #FFF , 1174px 1062px #FFF , 1008px 1932px #FFF , 467px 334px #FFF , 80px 818px #FFF , 1266px 1185px #FFF , 1589px 807px #FFF , 1221px 320px #FFF , 1724px 852px #FFF , 1194px 286px #FFF , 800px 1835px #FFF , 1958px 728px #FFF , 1271px 376px #FFF , 43px 1654px #FFF , 77px 803px #FFF , 1399px 197px #FFF , 591px 1743px #FFF , 652px 1925px #FFF , 107px 1939px #FFF , 1110px 1708px #FFF , 797px 1480px #FFF , 1516px 684px #FFF , 559px 1733px #FFF , 1265px 718px #FFF , 1263px 54px #FFF , 693px 113px #FFF , 1456px 1459px #FFF , 1527px 1324px #FFF;
+ animation: animStar 50s linear infinite;
+}
+#stars:after {
+ content: "";
+ position: absolute;
+ top: 2000px;
+ width: 1px;
+ height: 1px;
+ background: transparent;
+ box-shadow: 1744px 122px #FFF , 134px 1321px #FFF , 92px 859px #FFF , 235px 1045px #FFF , 366px 912px #FFF , 491px 942px #FFF , 14px 1831px #FFF , 582px 476px #FFF , 588px 1230px #FFF , 1520px 1343px #FFF , 1671px 203px #FFF , 550px 341px #FFF , 1491px 549px #FFF , 558px 161px #FFF , 896px 1823px #FFF , 999px 1463px #FFF , 1557px 636px #FFF , 1754px 1307px #FFF , 1682px 1494px #FFF , 703px 1707px #FFF , 1945px 1847px #FFF , 1151px 1320px #FFF , 980px 144px #FFF , 478px 948px #FFF , 109px 1762px #FFF , 558px 255px #FFF , 719px 1820px #FFF , 588px 748px #FFF , 1899px 174px #FFF , 841px 1771px #FFF , 571px 1588px #FFF , 1155px 353px #FFF , 1879px 1220px #FFF , 1782px 870px #FFF , 407px 1238px #FFF , 1141px 63px #FFF , 1147px 1097px #FFF , 1406px 159px #FFF , 637px 1215px #FFF , 694px 1114px #FFF , 1536px 727px #FFF , 1708px 1512px #FFF , 1147px 880px #FFF , 684px 988px #FFF , 140px 851px #FFF , 1565px 1788px #FFF , 1573px 889px #FFF , 1172px 628px #FFF , 1474px 1978px #FFF , 435px 447px #FFF , 185px 1808px #FFF , 620px 1560px #FFF , 1387px 1196px #FFF , 138px 1854px #FFF , 137px 1499px #FFF , 1721px 1132px #FFF , 10px 32px #FFF , 1931px 1990px #FFF , 209px 91px #FFF , 1876px 1795px #FFF , 1130px 1551px #FFF , 284px 1848px #FFF , 389px 1603px #FFF , 612px 1121px #FFF , 825px 1926px #FFF , 161px 344px #FFF , 1729px 333px #FFF , 1037px 37px #FFF , 844px 1085px #FFF , 1179px 554px #FFF , 50px 478px #FFF , 1864px 704px #FFF , 233px 723px #FFF , 1202px 445px #FFF , 882px 189px #FFF , 362px 735px #FFF , 924px 411px #FFF , 902px 209px #FFF , 104px 185px #FFF , 1599px 1852px #FFF , 1974px 944px #FFF , 438px 1164px #FFF , 401px 1533px #FFF , 191px 1429px #FFF , 251px 1034px #FFF , 1807px 1412px #FFF , 72px 23px #FFF , 1752px 1146px #FFF , 261px 1481px #FFF , 548px 33px #FFF , 710px 1204px #FFF , 355px 1697px #FFF , 581px 100px #FFF , 318px 1146px #FFF , 929px 79px #FFF , 999px 347px #FFF , 155px 292px #FFF , 271px 677px #FFF , 920px 1596px #FFF , 1736px 184px #FFF , 1022px 1790px #FFF , 1465px 1762px #FFF , 820px 526px #FFF , 175px 37px #FFF , 440px 746px #FFF , 681px 1879px #FFF , 690px 1135px #FFF , 1960px 1453px #FFF , 422px 856px #FFF , 1217px 1232px #FFF , 1015px 1695px #FFF , 1933px 492px #FFF , 272px 448px #FFF , 1578px 1487px #FFF , 437px 874px #FFF , 947px 838px #FFF , 1339px 867px #FFF , 1484px 773px #FFF , 764px 66px #FFF , 418px 707px #FFF , 192px 1909px #FFF , 1629px 215px #FFF , 171px 260px #FFF , 1180px 220px #FFF , 488px 857px #FFF , 593px 493px #FFF , 1794px 886px #FFF , 1673px 1977px #FFF , 905px 1193px #FFF , 1372px 1843px #FFF , 1605px 908px #FFF , 659px 181px #FFF , 700px 1758px #FFF , 812px 1200px #FFF , 1800px 1440px #FFF , 1858px 212px #FFF , 628px 1026px #FFF , 1825px 1556px #FFF , 1641px 1750px #FFF , 1195px 1086px #FFF , 1465px 558px #FFF , 1634px 436px #FFF , 1354px 1831px #FFF , 1212px 1485px #FFF , 1491px 994px #FFF , 604px 1279px #FFF , 413px 1131px #FFF , 1677px 1086px #FFF , 841px 47px #FFF , 146px 489px #FFF , 117px 1195px #FFF , 67px 47px #FFF , 883px 258px #FFF , 1801px 1294px #FFF , 594px 1870px #FFF , 649px 531px #FFF , 721px 132px #FFF , 975px 1616px #FFF , 716px 94px #FFF , 295px 791px #FFF , 174px 1814px #FFF , 1130px 298px #FFF , 1747px 1835px #FFF , 605px 1521px #FFF , 78px 743px #FFF , 1685px 311px #FFF , 804px 341px #FFF , 1440px 852px #FFF , 1607px 1692px #FFF , 698px 1112px #FFF , 1153px 1608px #FFF , 539px 999px #FFF , 262px 353px #FFF , 457px 1246px #FFF , 1858px 998px #FFF , 364px 431px #FFF , 1907px 912px #FFF , 541px 916px #FFF , 168px 1384px #FFF , 357px 1321px #FFF , 1859px 1866px #FFF , 1001px 909px #FFF , 842px 1663px #FFF , 369px 1176px #FFF , 932px 1372px #FFF , 1606px 732px #FFF , 1844px 857px #FFF , 974px 1588px #FFF , 804px 1139px #FFF , 65px 1213px #FFF , 1066px 863px #FFF , 1991px 1734px #FFF , 300px 738px #FFF , 1260px 1141px #FFF , 83px 260px #FFF , 1219px 167px #FFF , 613px 990px #FFF , 873px 81px #FFF , 362px 235px #FFF , 373px 372px #FFF , 80px 247px #FFF , 902px 1141px #FFF , 294px 464px #FFF , 766px 1925px #FFF , 1151px 1305px #FFF , 1250px 1593px #FFF , 1289px 119px #FFF , 1525px 1505px #FFF , 234px 1306px #FFF , 571px 858px #FFF , 571px 996px #FFF , 766px 1342px #FFF , 1371px 716px #FFF , 711px 1939px #FFF , 904px 1797px #FFF , 424px 1710px #FFF , 762px 1614px #FFF , 1389px 1290px #FFF , 905px 689px #FFF , 352px 38px #FFF , 2000px 1317px #FFF , 597px 864px #FFF , 824px 711px #FFF , 966px 1060px #FFF , 958px 992px #FFF , 1121px 324px #FFF , 1624px 688px #FFF , 1737px 702px #FFF , 1566px 1344px #FFF , 697px 368px #FFF , 291px 1126px #FFF , 1732px 50px #FFF , 712px 1941px #FFF , 1257px 372px #FFF , 317px 1462px #FFF , 222px 309px #FFF , 1139px 647px #FFF , 170px 878px #FFF , 1272px 1511px #FFF , 1009px 1912px #FFF , 1875px 1105px #FFF , 1968px 1370px #FFF , 1193px 687px #FFF , 1498px 611px #FFF , 247px 1993px #FFF , 1686px 1611px #FFF , 937px 340px #FFF , 114px 1423px #FFF , 496px 1191px #FFF , 110px 1284px #FFF , 876px 687px #FFF , 1173px 214px #FFF , 210px 628px #FFF , 302px 1173px #FFF , 1318px 939px #FFF , 1665px 1310px #FFF , 66px 338px #FFF , 1355px 615px #FFF , 1139px 1672px #FFF , 91px 1000px #FFF , 112px 422px #FFF , 89px 503px #FFF , 97px 1599px #FFF , 1031px 1955px #FFF , 1755px 1532px #FFF , 1764px 1930px #FFF , 1822px 1751px #FFF , 133px 401px #FFF , 718px 85px #FFF , 1797px 78px #FFF , 520px 1725px #FFF , 226px 406px #FFF , 1561px 1574px #FFF , 340px 1602px #FFF , 718px 976px #FFF , 1823px 570px #FFF , 1298px 484px #FFF , 1023px 1903px #FFF , 1266px 1334px #FFF , 763px 877px #FFF , 223px 631px #FFF , 1761px 1293px #FFF , 878px 1px #FFF , 973px 696px #FFF , 975px 1841px #FFF , 1276px 302px #FFF , 1399px 1324px #FFF , 1706px 872px #FFF , 341px 1960px #FFF , 1384px 1655px #FFF , 1897px 767px #FFF , 68px 405px #FFF , 705px 310px #FFF , 194px 103px #FFF , 1432px 368px #FFF , 1262px 1682px #FFF , 1933px 1526px #FFF , 263px 655px #FFF , 1031px 1031px #FFF , 1557px 788px #FFF , 1558px 1360px #FFF , 812px 421px #FFF , 1951px 734px #FFF , 1567px 498px #FFF , 1832px 1229px #FFF , 913px 164px #FFF , 1907px 1273px #FFF , 533px 749px #FFF , 1235px 951px #FFF , 645px 1959px #FFF , 92px 1570px #FFF , 1169px 1434px #FFF , 118px 1223px #FFF , 583px 957px #FFF , 1245px 316px #FFF , 527px 863px #FFF , 372px 1007px #FFF , 244px 1251px #FFF , 314px 494px #FFF , 1842px 1463px #FFF , 1315px 730px #FFF , 1655px 1366px #FFF , 482px 979px #FFF , 340px 1808px #FFF , 256px 578px #FFF , 858px 1792px #FFF , 1965px 403px #FFF , 454px 253px #FFF , 1664px 698px #FFF , 1974px 750px #FFF , 262px 1801px #FFF , 1652px 1076px #FFF , 992px 711px #FFF , 1792px 1323px #FFF , 700px 1748px #FFF , 855px 966px #FFF , 1833px 1747px #FFF , 402px 1272px #FFF , 1391px 1039px #FFF , 1395px 1538px #FFF , 397px 1972px #FFF , 744px 1403px #FFF , 1784px 1046px #FFF , 111px 198px #FFF , 1827px 473px #FFF , 1347px 1891px #FFF , 1238px 1081px #FFF , 189px 908px #FFF , 1513px 542px #FFF , 673px 981px #FFF , 720px 1184px #FFF , 373px 792px #FFF , 1470px 1631px #FFF , 16px 822px #FFF , 1935px 829px #FFF , 364px 613px #FFF , 223px 899px #FFF , 1233px 874px #FFF , 1441px 1834px #FFF , 719px 894px #FFF , 76px 1610px #FFF , 296px 685px #FFF , 572px 1637px #FFF , 349px 114px #FFF , 1670px 1802px #FFF , 979px 928px #FFF , 1589px 574px #FFF , 756px 194px #FFF , 616px 507px #FFF , 271px 186px #FFF , 198px 360px #FFF , 1916px 418px #FFF , 721px 667px #FFF , 1937px 1908px #FFF , 17px 556px #FFF , 345px 443px #FFF , 718px 760px #FFF , 1922px 310px #FFF , 1185px 887px #FFF , 1745px 1848px #FFF , 909px 847px #FFF , 1170px 134px #FFF , 1773px 1133px #FFF , 1099px 233px #FFF , 1122px 1524px #FFF , 866px 907px #FFF , 398px 213px #FFF , 1287px 886px #FFF , 1194px 149px #FFF , 1876px 1667px #FFF , 332px 1658px #FFF , 146px 1253px #FFF , 958px 211px #FFF , 643px 47px #FFF , 1213px 1339px #FFF , 1637px 1939px #FFF , 1601px 355px #FFF , 256px 1982px #FFF , 989px 1609px #FFF , 1179px 701px #FFF , 685px 1463px #FFF , 1910px 465px #FFF , 764px 1930px #FFF , 1856px 433px #FFF , 720px 367px #FFF , 1821px 416px #FFF , 48px 1114px #FFF , 716px 489px #FFF , 174px 1972px #FFF , 115px 1373px #FFF , 1487px 141px #FFF , 1919px 1362px #FFF , 1662px 859px #FFF , 1168px 490px #FFF , 706px 1820px #FFF , 588px 318px #FFF , 107px 778px #FFF , 621px 1667px #FFF , 1331px 1996px #FFF , 1404px 1154px #FFF , 860px 1019px #FFF , 1385px 1883px #FFF , 1066px 1951px #FFF , 752px 444px #FFF , 955px 1031px #FFF , 1256px 1899px #FFF , 961px 1455px #FFF , 1101px 84px #FFF , 890px 335px #FFF , 798px 40px #FFF , 138px 54px #FFF , 1934px 252px #FFF , 429px 324px #FFF , 1645px 1522px #FFF , 218px 737px #FFF , 1625px 531px #FFF , 605px 1290px #FFF , 1867px 648px #FFF , 82px 1137px #FFF , 231px 1423px #FFF , 471px 944px #FFF , 1363px 1752px #FFF , 482px 1364px #FFF , 1305px 627px #FFF , 1065px 891px #FFF , 217px 1841px #FFF , 1843px 1501px #FFF , 1681px 734px #FFF , 185px 856px #FFF , 609px 1094px #FFF , 49px 1657px #FFF , 783px 594px #FFF , 1018px 1123px #FFF , 644px 1149px #FFF , 739px 1262px #FFF , 1439px 1187px #FFF , 1789px 1507px #FFF , 941px 791px #FFF , 1319px 1308px #FFF , 498px 626px #FFF , 1594px 858px #FFF , 783px 71px #FFF , 576px 1976px #FFF , 1625px 696px #FFF , 1821px 352px #FFF , 1039px 885px #FFF , 208px 430px #FFF , 124px 198px #FFF , 1964px 686px #FFF , 1440px 1952px #FFF , 231px 1435px #FFF , 1846px 853px #FFF , 1174px 536px #FFF , 1228px 310px #FFF , 1380px 699px #FFF , 1116px 169px #FFF , 1416px 1007px #FFF , 178px 192px #FFF , 1302px 1903px #FFF , 1892px 154px #FFF , 962px 1032px #FFF , 1009px 1916px #FFF , 1549px 1206px #FFF , 899px 968px #FFF , 902px 543px #FFF , 1516px 542px #FFF , 965px 527px #FFF , 1594px 696px #FFF , 856px 1719px #FFF , 1522px 248px #FFF , 1795px 283px #FFF , 1144px 946px #FFF , 1365px 199px #FFF , 359px 1347px #FFF , 1506px 263px #FFF , 433px 1793px #FFF , 201px 247px #FFF , 942px 838px #FFF , 1122px 1065px #FFF , 1997px 108px #FFF , 306px 989px #FFF , 641px 1713px #FFF , 1072px 959px #FFF , 1874px 1079px #FFF , 1938px 269px #FFF , 891px 389px #FFF , 22px 574px #FFF , 727px 474px #FFF , 1671px 1649px #FFF , 98px 400px #FFF , 641px 798px #FFF , 1218px 1051px #FFF , 907px 1485px #FFF , 1002px 1549px #FFF , 1932px 1448px #FFF , 1132px 573px #FFF , 1222px 1147px #FFF , 1009px 451px #FFF , 698px 1940px #FFF , 97px 1123px #FFF , 904px 751px #FFF , 1904px 593px #FFF , 1451px 1658px #FFF , 191px 1606px #FFF , 1346px 482px #FFF , 1935px 1086px #FFF , 1052px 224px #FFF , 526px 1810px #FFF , 1607px 606px #FFF , 427px 1830px #FFF , 1546px 407px #FFF , 1771px 208px #FFF , 1714px 181px #FFF , 1332px 943px #FFF , 1663px 1094px #FFF , 1861px 1747px #FFF , 1429px 1217px #FFF , 1733px 1915px #FFF , 925px 1179px #FFF , 735px 781px #FFF , 1775px 1989px #FFF , 1770px 476px #FFF , 844px 400px #FFF , 1793px 1517px #FFF , 544px 281px #FFF , 725px 344px #FFF , 1274px 764px #FFF , 1845px 339px #FFF , 582px 1745px #FFF , 351px 1287px #FFF , 207px 749px #FFF , 1063px 1411px #FFF , 1246px 342px #FFF , 1538px 166px #FFF , 770px 602px #FFF , 1214px 1971px #FFF , 113px 294px #FFF , 1157px 101px #FFF , 1657px 517px #FFF , 637px 1693px #FFF , 961px 1649px #FFF , 1754px 1572px #FFF , 1885px 659px #FFF , 238px 34px #FFF , 413px 1027px #FFF , 1709px 1556px #FFF , 460px 878px #FFF , 1597px 608px #FFF , 544px 434px #FFF , 1258px 477px #FFF , 565px 1863px #FFF , 426px 322px #FFF , 1917px 850px #FFF , 296px 144px #FFF , 643px 1896px #FFF , 511px 116px #FFF , 359px 847px #FFF , 702px 1133px #FFF , 857px 1371px #FFF , 559px 1758px #FFF , 1615px 1223px #FFF , 1927px 1736px #FFF , 704px 941px #FFF , 1932px 942px #FFF , 1462px 335px #FFF , 154px 1915px #FFF , 1387px 918px #FFF , 1512px 1041px #FFF , 1094px 1334px #FFF , 1678px 865px #FFF , 1960px 431px #FFF , 666px 1258px #FFF , 422px 1215px #FFF , 345px 802px #FFF , 1207px 647px #FFF , 1701px 374px #FFF , 1440px 1925px #FFF , 1536px 1163px #FFF , 905px 155px #FFF , 843px 1036px #FFF , 660px 823px #FFF , 1329px 661px #FFF , 1867px 899px #FFF , 1022px 514px #FFF , 1062px 1570px #FFF , 888px 1786px #FFF , 699px 1738px #FFF , 1831px 1712px #FFF , 434px 18px #FFF , 227px 205px #FFF , 520px 1279px #FFF , 1329px 764px #FFF , 1824px 47px #FFF , 112px 266px #FFF , 830px 1140px #FFF , 478px 637px #FFF , 634px 850px #FFF , 711px 873px #FFF , 987px 249px #FFF , 1454px 909px #FFF , 699px 922px #FFF , 1458px 1142px #FFF , 701px 1893px #FFF , 134px 384px #FFF , 904px 354px #FFF , 1913px 1229px #FFF , 1606px 1336px #FFF , 976px 1776px #FFF , 1726px 605px #FFF , 1244px 590px #FFF , 1351px 526px #FFF , 1997px 130px #FFF , 1137px 1134px #FFF , 1293px 283px #FFF , 977px 1608px #FFF , 422px 1252px #FFF , 236px 1653px #FFF , 28px 1722px #FFF , 698px 39px #FFF , 5px 434px #FFF , 1430px 1466px #FFF , 1470px 1596px #FFF , 487px 81px #FFF , 186px 340px #FFF , 1941px 1px #FFF , 1342px 487px #FFF , 813px 1855px #FFF , 1445px 148px #FFF , 1965px 1428px #FFF , 1122px 1277px #FFF , 846px 820px #FFF , 1804px 228px #FFF , 1501px 121px #FFF , 215px 1033px #FFF , 244px 426px #FFF , 976px 453px #FFF , 566px 953px #FFF , 1772px 213px #FFF , 1323px 1778px #FFF , 1350px 817px #FFF , 803px 913px #FFF , 1395px 1359px #FFF , 1995px 119px #FFF , 579px 1963px #FFF , 862px 1621px #FFF , 1718px 825px #FFF , 823px 27px #FFF , 1252px 41px #FFF , 1562px 835px #FFF , 1730px 633px #FFF , 1723px 1939px #FFF , 524px 1824px #FFF , 1921px 1450px #FFF , 1174px 1062px #FFF , 1008px 1932px #FFF , 467px 334px #FFF , 80px 818px #FFF , 1266px 1185px #FFF , 1589px 807px #FFF , 1221px 320px #FFF , 1724px 852px #FFF , 1194px 286px #FFF , 800px 1835px #FFF , 1958px 728px #FFF , 1271px 376px #FFF , 43px 1654px #FFF , 77px 803px #FFF , 1399px 197px #FFF , 591px 1743px #FFF , 652px 1925px #FFF , 107px 1939px #FFF , 1110px 1708px #FFF , 797px 1480px #FFF , 1516px 684px #FFF , 559px 1733px #FFF , 1265px 718px #FFF , 1263px 54px #FFF , 693px 113px #FFF , 1456px 1459px #FFF , 1527px 1324px #FFF;
+}
+
+#stars2 {
+ width: 2px;
+ height: 2px;
+ background: transparent;
+ box-shadow: 1907px 1575px #FFF , 893px 268px #FFF , 1819px 666px #FFF , 366px 1985px #FFF , 1736px 1062px #FFF , 1124px 45px #FFF , 905px 1674px #FFF , 1570px 711px #FFF , 255px 1747px #FFF , 147px 1032px #FFF , 865px 1813px #FFF , 1721px 1461px #FFF , 202px 724px #FFF , 1860px 812px #FFF , 634px 1410px #FFF , 927px 1264px #FFF , 1648px 620px #FFF , 1915px 1309px #FFF , 731px 778px #FFF , 91px 1185px #FFF , 829px 1003px #FFF , 174px 1784px #FFF , 1094px 1874px #FFF , 1464px 484px #FFF , 1639px 1717px #FFF , 959px 573px #FFF , 1686px 1287px #FFF , 906px 356px #FFF , 970px 499px #FFF , 626px 890px #FFF , 1344px 1070px #FFF , 1351px 544px #FFF , 708px 68px #FFF , 1870px 130px #FFF , 556px 1270px #FFF , 1432px 618px #FFF , 769px 673px #FFF , 1289px 1410px #FFF , 1499px 1969px #FFF , 749px 1163px #FFF , 1198px 198px #FFF , 399px 133px #FFF , 1856px 1280px #FFF , 904px 194px #FFF , 973px 1107px #FFF , 1371px 1785px #FFF , 989px 1835px #FFF , 1043px 1517px #FFF , 787px 916px #FFF , 1635px 1155px #FFF , 752px 524px #FFF , 1926px 1279px #FFF , 1052px 1163px #FFF , 719px 1963px #FFF , 786px 519px #FFF , 1440px 500px #FFF , 156px 1265px #FFF , 1691px 429px #FFF , 1349px 1474px #FFF , 736px 459px #FFF , 248px 1678px #FFF , 1136px 510px #FFF , 1317px 10px #FFF , 1209px 1323px #FFF , 54px 469px #FFF , 730px 1939px #FFF , 960px 23px #FFF , 112px 941px #FFF , 1852px 1522px #FFF , 1993px 1972px #FFF , 265px 129px #FFF , 222px 1897px #FFF , 1766px 1804px #FFF , 1530px 1786px #FFF , 1045px 432px #FFF , 1916px 1980px #FFF , 309px 1780px #FFF , 1420px 559px #FFF , 1708px 103px #FFF , 324px 1407px #FFF , 1175px 943px #FFF , 80px 1221px #FFF , 1016px 1933px #FFF , 318px 560px #FFF , 190px 1489px #FFF , 1095px 892px #FFF , 1975px 1191px #FFF , 1197px 955px #FFF , 1482px 873px #FFF , 1912px 300px #FFF , 2000px 1636px #FFF , 1473px 1808px #FFF , 507px 192px #FFF , 924px 1300px #FFF , 1485px 1636px #FFF , 41px 1822px #FFF , 689px 120px #FFF , 769px 273px #FFF , 1039px 976px #FFF , 1057px 1520px #FFF , 1417px 1187px #FFF , 512px 1507px #FFF , 519px 45px #FFF , 1207px 1687px #FFF , 1824px 1488px #FFF , 1694px 31px #FFF , 1859px 52px #FFF , 1368px 268px #FFF , 190px 1404px #FFF , 940px 1003px #FFF , 167px 942px #FFF , 1641px 647px #FFF , 1051px 654px #FFF , 233px 1640px #FFF , 554px 511px #FFF , 1705px 1866px #FFF , 240px 1430px #FFF , 140px 668px #FFF , 648px 1617px #FFF , 252px 101px #FFF , 676px 1774px #FFF , 889px 1698px #FFF , 595px 853px #FFF , 249px 1768px #FFF , 1091px 1529px #FFF , 223px 839px #FFF , 239px 699px #FFF , 1547px 356px #FFF , 249px 1130px #FFF , 1209px 1946px #FFF , 1967px 1274px #FFF , 430px 298px #FFF , 1305px 134px #FFF , 156px 91px #FFF , 1712px 264px #FFF , 1256px 991px #FFF , 1887px 1844px #FFF , 1957px 1275px #FFF , 1718px 666px #FFF , 1090px 543px #FFF , 933px 1411px #FFF , 801px 323px #FFF , 202px 1659px #FFF , 1117px 549px #FFF , 290px 1859px #FFF , 1380px 1516px #FFF , 557px 1165px #FFF , 1953px 1758px #FFF , 1901px 1407px #FFF , 1144px 347px #FFF , 1640px 271px #FFF , 1996px 43px #FFF , 838px 488px #FFF , 1151px 1529px #FFF , 306px 460px #FFF , 1666px 635px #FFF , 1572px 633px #FFF , 1797px 1076px #FFF , 1727px 1119px #FFF , 474px 871px #FFF , 1491px 1398px #FFF , 1301px 868px #FFF , 1632px 454px #FFF , 1611px 466px #FFF , 498px 1162px #FFF , 796px 269px #FFF , 1988px 747px #FFF , 502px 12px #FFF , 276px 1260px #FFF , 1536px 974px #FFF , 956px 656px #FFF , 107px 701px #FFF , 965px 491px #FFF , 1646px 247px #FFF , 1515px 921px #FFF , 1813px 519px #FFF , 697px 143px #FFF , 591px 1452px #FFF , 1773px 1411px #FFF , 1622px 1401px #FFF , 534px 340px #FFF , 1590px 284px #FFF , 1464px 528px #FFF , 734px 1718px #FFF , 1929px 1683px #FFF , 656px 480px #FFF , 833px 705px #FFF , 1567px 109px #FFF , 1055px 330px #FFF , 1943px 1367px #FFF , 1935px 1512px #FFF , 355px 1024px #FFF , 1894px 218px #FFF , 1703px 1772px #FFF , 781px 1394px #FFF , 367px 42px #FFF , 100px 690px #FFF , 1831px 458px #FFF , 1884px 1878px #FFF , 814px 1013px #FFF;
+ animation: animStar 100s linear infinite;
+}
+#stars2:after {
+ content: "";
+ position: absolute;
+ top: 2000px;
+ width: 2px;
+ height: 2px;
+ background: transparent;
+ box-shadow: 1907px 1575px #FFF , 893px 268px #FFF , 1819px 666px #FFF , 366px 1985px #FFF , 1736px 1062px #FFF , 1124px 45px #FFF , 905px 1674px #FFF , 1570px 711px #FFF , 255px 1747px #FFF , 147px 1032px #FFF , 865px 1813px #FFF , 1721px 1461px #FFF , 202px 724px #FFF , 1860px 812px #FFF , 634px 1410px #FFF , 927px 1264px #FFF , 1648px 620px #FFF , 1915px 1309px #FFF , 731px 778px #FFF , 91px 1185px #FFF , 829px 1003px #FFF , 174px 1784px #FFF , 1094px 1874px #FFF , 1464px 484px #FFF , 1639px 1717px #FFF , 959px 573px #FFF , 1686px 1287px #FFF , 906px 356px #FFF , 970px 499px #FFF , 626px 890px #FFF , 1344px 1070px #FFF , 1351px 544px #FFF , 708px 68px #FFF , 1870px 130px #FFF , 556px 1270px #FFF , 1432px 618px #FFF , 769px 673px #FFF , 1289px 1410px #FFF , 1499px 1969px #FFF , 749px 1163px #FFF , 1198px 198px #FFF , 399px 133px #FFF , 1856px 1280px #FFF , 904px 194px #FFF , 973px 1107px #FFF , 1371px 1785px #FFF , 989px 1835px #FFF , 1043px 1517px #FFF , 787px 916px #FFF , 1635px 1155px #FFF , 752px 524px #FFF , 1926px 1279px #FFF , 1052px 1163px #FFF , 719px 1963px #FFF , 786px 519px #FFF , 1440px 500px #FFF , 156px 1265px #FFF , 1691px 429px #FFF , 1349px 1474px #FFF , 736px 459px #FFF , 248px 1678px #FFF , 1136px 510px #FFF , 1317px 10px #FFF , 1209px 1323px #FFF , 54px 469px #FFF , 730px 1939px #FFF , 960px 23px #FFF , 112px 941px #FFF , 1852px 1522px #FFF , 1993px 1972px #FFF , 265px 129px #FFF , 222px 1897px #FFF , 1766px 1804px #FFF , 1530px 1786px #FFF , 1045px 432px #FFF , 1916px 1980px #FFF , 309px 1780px #FFF , 1420px 559px #FFF , 1708px 103px #FFF , 324px 1407px #FFF , 1175px 943px #FFF , 80px 1221px #FFF , 1016px 1933px #FFF , 318px 560px #FFF , 190px 1489px #FFF , 1095px 892px #FFF , 1975px 1191px #FFF , 1197px 955px #FFF , 1482px 873px #FFF , 1912px 300px #FFF , 2000px 1636px #FFF , 1473px 1808px #FFF , 507px 192px #FFF , 924px 1300px #FFF , 1485px 1636px #FFF , 41px 1822px #FFF , 689px 120px #FFF , 769px 273px #FFF , 1039px 976px #FFF , 1057px 1520px #FFF , 1417px 1187px #FFF , 512px 1507px #FFF , 519px 45px #FFF , 1207px 1687px #FFF , 1824px 1488px #FFF , 1694px 31px #FFF , 1859px 52px #FFF , 1368px 268px #FFF , 190px 1404px #FFF , 940px 1003px #FFF , 167px 942px #FFF , 1641px 647px #FFF , 1051px 654px #FFF , 233px 1640px #FFF , 554px 511px #FFF , 1705px 1866px #FFF , 240px 1430px #FFF , 140px 668px #FFF , 648px 1617px #FFF , 252px 101px #FFF , 676px 1774px #FFF , 889px 1698px #FFF , 595px 853px #FFF , 249px 1768px #FFF , 1091px 1529px #FFF , 223px 839px #FFF , 239px 699px #FFF , 1547px 356px #FFF , 249px 1130px #FFF , 1209px 1946px #FFF , 1967px 1274px #FFF , 430px 298px #FFF , 1305px 134px #FFF , 156px 91px #FFF , 1712px 264px #FFF , 1256px 991px #FFF , 1887px 1844px #FFF , 1957px 1275px #FFF , 1718px 666px #FFF , 1090px 543px #FFF , 933px 1411px #FFF , 801px 323px #FFF , 202px 1659px #FFF , 1117px 549px #FFF , 290px 1859px #FFF , 1380px 1516px #FFF , 557px 1165px #FFF , 1953px 1758px #FFF , 1901px 1407px #FFF , 1144px 347px #FFF , 1640px 271px #FFF , 1996px 43px #FFF , 838px 488px #FFF , 1151px 1529px #FFF , 306px 460px #FFF , 1666px 635px #FFF , 1572px 633px #FFF , 1797px 1076px #FFF , 1727px 1119px #FFF , 474px 871px #FFF , 1491px 1398px #FFF , 1301px 868px #FFF , 1632px 454px #FFF , 1611px 466px #FFF , 498px 1162px #FFF , 796px 269px #FFF , 1988px 747px #FFF , 502px 12px #FFF , 276px 1260px #FFF , 1536px 974px #FFF , 956px 656px #FFF , 107px 701px #FFF , 965px 491px #FFF , 1646px 247px #FFF , 1515px 921px #FFF , 1813px 519px #FFF , 697px 143px #FFF , 591px 1452px #FFF , 1773px 1411px #FFF , 1622px 1401px #FFF , 534px 340px #FFF , 1590px 284px #FFF , 1464px 528px #FFF , 734px 1718px #FFF , 1929px 1683px #FFF , 656px 480px #FFF , 833px 705px #FFF , 1567px 109px #FFF , 1055px 330px #FFF , 1943px 1367px #FFF , 1935px 1512px #FFF , 355px 1024px #FFF , 1894px 218px #FFF , 1703px 1772px #FFF , 781px 1394px #FFF , 367px 42px #FFF , 100px 690px #FFF , 1831px 458px #FFF , 1884px 1878px #FFF , 814px 1013px #FFF;
+}
+
+#stars3 {
+ width: 3px;
+ height: 3px;
+ background: transparent;
+ box-shadow: 1994px 1692px #FFF , 961px 1928px #FFF , 819px 1320px #FFF , 1899px 52px #FFF , 28px 1937px #FFF , 157px 88px #FFF , 860px 1909px #FFF , 720px 427px #FFF , 1319px 1469px #FFF , 677px 960px #FFF , 1265px 1181px #FFF , 1176px 1361px #FFF , 1957px 753px #FFF , 1674px 1355px #FFF , 929px 1206px #FFF , 1038px 898px #FFF , 1229px 365px #FFF , 1085px 51px #FFF , 851px 650px #FFF , 385px 21px #FFF , 41px 1153px #FFF , 718px 70px #FFF , 1321px 579px #FFF , 497px 1458px #FFF , 1981px 813px #FFF , 776px 1187px #FFF , 1345px 31px #FFF , 1571px 400px #FFF , 339px 587px #FFF , 146px 750px #FFF , 64px 61px #FFF , 307px 981px #FFF , 388px 849px #FFF , 1398px 936px #FFF , 522px 765px #FFF , 1146px 350px #FFF , 19px 206px #FFF , 1767px 319px #FFF , 1203px 425px #FFF , 1917px 1018px #FFF , 91px 1401px #FFF , 898px 697px #FFF , 1712px 1121px #FFF , 633px 1119px #FFF , 137px 1266px #FFF , 1006px 931px #FFF , 1644px 1804px #FFF , 1596px 1057px #FFF , 1298px 543px #FFF , 1505px 996px #FFF , 1972px 1383px #FFF , 1210px 1497px #FFF , 804px 1840px #FFF , 913px 1047px #FFF , 187px 1824px #FFF , 1564px 1994px #FFF , 557px 1737px #FFF , 508px 1609px #FFF , 1259px 1911px #FFF , 1294px 1381px #FFF , 1845px 1843px #FFF , 667px 1497px #FFF , 1046px 945px #FFF , 937px 1889px #FFF , 982px 1806px #FFF , 1293px 671px #FFF , 668px 904px #FFF , 358px 1971px #FFF , 133px 766px #FFF , 1152px 1573px #FFF , 318px 694px #FFF , 578px 1184px #FFF , 1620px 1701px #FFF , 1359px 354px #FFF , 1807px 1367px #FFF , 458px 911px #FFF , 1387px 806px #FFF , 523px 81px #FFF , 1243px 341px #FFF , 906px 1730px #FFF , 1629px 474px #FFF , 1690px 419px #FFF , 847px 808px #FFF , 528px 1627px #FFF , 480px 718px #FFF , 537px 593px #FFF , 1432px 1333px #FFF , 200px 1228px #FFF , 1800px 1375px #FFF , 725px 1231px #FFF , 1749px 1432px #FFF , 1948px 303px #FFF , 1889px 252px #FFF , 1114px 1400px #FFF , 759px 646px #FFF , 222px 571px #FFF , 1908px 1401px #FFF , 1856px 1204px #FFF , 338px 1645px #FFF , 1528px 1050px #FFF;
+ animation: animStar 150s linear infinite;
+}
+#stars3:after {
+ content: "";
+ position: absolute;
+ top: 2000px;
+ background: transparent;
+ box-shadow: 1994px 1692px #FFF , 961px 1928px #FFF , 819px 1320px #FFF , 1899px 52px #FFF , 28px 1937px #FFF , 157px 88px #FFF , 860px 1909px #FFF , 720px 427px #FFF , 1319px 1469px #FFF , 677px 960px #FFF , 1265px 1181px #FFF , 1176px 1361px #FFF , 1957px 753px #FFF , 1674px 1355px #FFF , 929px 1206px #FFF , 1038px 898px #FFF , 1229px 365px #FFF , 1085px 51px #FFF , 851px 650px #FFF , 385px 21px #FFF , 41px 1153px #FFF , 718px 70px #FFF , 1321px 579px #FFF , 497px 1458px #FFF , 1981px 813px #FFF , 776px 1187px #FFF , 1345px 31px #FFF , 1571px 400px #FFF , 339px 587px #FFF , 146px 750px #FFF , 64px 61px #FFF , 307px 981px #FFF , 388px 849px #FFF , 1398px 936px #FFF , 522px 765px #FFF , 1146px 350px #FFF , 19px 206px #FFF , 1767px 319px #FFF , 1203px 425px #FFF , 1917px 1018px #FFF , 91px 1401px #FFF , 898px 697px #FFF , 1712px 1121px #FFF , 633px 1119px #FFF , 137px 1266px #FFF , 1006px 931px #FFF , 1644px 1804px #FFF , 1596px 1057px #FFF , 1298px 543px #FFF , 1505px 996px #FFF , 1972px 1383px #FFF , 1210px 1497px #FFF , 804px 1840px #FFF , 913px 1047px #FFF , 187px 1824px #FFF , 1564px 1994px #FFF , 557px 1737px #FFF , 508px 1609px #FFF , 1259px 1911px #FFF , 1294px 1381px #FFF , 1845px 1843px #FFF , 667px 1497px #FFF , 1046px 945px #FFF , 937px 1889px #FFF , 982px 1806px #FFF , 1293px 671px #FFF , 668px 904px #FFF , 358px 1971px #FFF , 133px 766px #FFF , 1152px 1573px #FFF , 318px 694px #FFF , 578px 1184px #FFF , 1620px 1701px #FFF , 1359px 354px #FFF , 1807px 1367px #FFF , 458px 911px #FFF , 1387px 806px #FFF , 523px 81px #FFF , 1243px 341px #FFF , 906px 1730px #FFF , 1629px 474px #FFF , 1690px 419px #FFF , 847px 808px #FFF , 528px 1627px #FFF , 480px 718px #FFF , 537px 593px #FFF , 1432px 1333px #FFF , 200px 1228px #FFF , 1800px 1375px #FFF , 725px 1231px #FFF , 1749px 1432px #FFF , 1948px 303px #FFF , 1889px 252px #FFF , 1114px 1400px #FFF , 759px 646px #FFF , 222px 571px #FFF , 1908px 1401px #FFF , 1856px 1204px #FFF , 338px 1645px #FFF , 1528px 1050px #FFF;
+}
+
+@keyframes animStar {
+ from {
+ transform: translateY(0px);
+ }
+ to {
+ transform: translateY(-2000px);
+ }
+}
diff --git a/app/assets/stylesheets/categories.scss b/app/assets/stylesheets/categories.scss
new file mode 100644
index 0000000000..42976cbc11
--- /dev/null
+++ b/app/assets/stylesheets/categories.scss
@@ -0,0 +1,3 @@
+// Place all the styles related to the Categories 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/foundation_and_overrides.scss b/app/assets/stylesheets/foundation_and_overrides.scss
new file mode 100644
index 0000000000..ae7c087910
--- /dev/null
+++ b/app/assets/stylesheets/foundation_and_overrides.scss
@@ -0,0 +1,56 @@
+@charset 'utf-8';
+
+@import 'settings';
+@import 'foundation';
+
+// If you'd like to include motion-ui the foundation-rails gem comes prepackaged with it, uncomment the 3 @imports, if you are not using the gem you need to install the motion-ui sass package.
+//
+// @import 'motion-ui/motion-ui';
+
+// We include everything by default. To slim your CSS, remove components you don't use.
+
+@include foundation-global-styles;
+@include foundation-grid;
+@include foundation-typography;
+@include foundation-button;
+@include foundation-forms;
+@include foundation-visibility-classes;
+@include foundation-float-classes;
+@include foundation-accordion;
+@include foundation-accordion-menu;
+@include foundation-badge;
+@include foundation-breadcrumbs;
+@include foundation-button-group;
+@include foundation-callout;
+@include foundation-card;
+@include foundation-close-button;
+@include foundation-drilldown-menu;
+@include foundation-dropdown;
+@include foundation-dropdown-menu;
+@include foundation-responsive-embed;
+@include foundation-label;
+@include foundation-media-object;
+@include foundation-menu;
+@include foundation-menu-icon;
+@include foundation-off-canvas;
+@include foundation-orbit;
+@include foundation-pagination;
+@include foundation-progress-bar;
+@include foundation-slider;
+@include foundation-sticky;
+@include foundation-reveal;
+@include foundation-switch;
+@include foundation-table;
+@include foundation-tabs;
+@include foundation-thumbnail;
+@include foundation-title-bar;
+@include foundation-tooltip;
+@include foundation-top-bar;
+
+// If you'd like to include motion-ui the foundation-rails gem comes prepackaged with it, uncomment the 3 @imports, if you are not using the gem you need to install the motion-ui sass package.
+//
+// @include motion-ui-transitions;
+// @include motion-ui-animations;
+@import 'motion-ui/motion-ui';
+@include motion-ui-transitions;
+@include motion-ui-animations;
diff --git a/app/assets/stylesheets/merchants.scss b/app/assets/stylesheets/merchants.scss
new file mode 100644
index 0000000000..f4c164d600
--- /dev/null
+++ b/app/assets/stylesheets/merchants.scss
@@ -0,0 +1,3 @@
+// Place all the styles related to the Merchants 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/orders.scss b/app/assets/stylesheets/orders.scss
new file mode 100644
index 0000000000..741506954d
--- /dev/null
+++ b/app/assets/stylesheets/orders.scss
@@ -0,0 +1,3 @@
+// Place all the styles related to the Orders 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/products.scss b/app/assets/stylesheets/products.scss
new file mode 100644
index 0000000000..bff386e55a
--- /dev/null
+++ b/app/assets/stylesheets/products.scss
@@ -0,0 +1,3 @@
+// Place all the styles related to the Products 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/reviews.scss b/app/assets/stylesheets/reviews.scss
new file mode 100644
index 0000000000..11bbb12cd5
--- /dev/null
+++ b/app/assets/stylesheets/reviews.scss
@@ -0,0 +1,3 @@
+// Place all the styles related to the Reviews 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/sessions.scss b/app/assets/stylesheets/sessions.scss
new file mode 100644
index 0000000000..7bef9cf826
--- /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/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..c10da2d0fa
--- /dev/null
+++ b/app/controllers/application_controller.rb
@@ -0,0 +1,21 @@
+class ApplicationController < ActionController::Base
+ protect_from_forgery with: :exception
+
+ def create_order
+ @order = Order.new
+ @order.status = "pending"
+
+ if @order.save
+ session[:order_id] = @order.id
+ flash[:status] = :success
+ else
+ flash[:status] = :failure
+ flash[:result_text] = "Could not initialize pending order."
+ end
+ end
+
+ def current_user
+ @current_user ||= Merchant.find_by(id: session[:user_id])
+
+ end
+end
diff --git a/app/controllers/categories_controller.rb b/app/controllers/categories_controller.rb
new file mode 100644
index 0000000000..9f20043950
--- /dev/null
+++ b/app/controllers/categories_controller.rb
@@ -0,0 +1,53 @@
+class CategoriesController < ApplicationController
+ before_action :find_category, only: [:show, :destroy]
+
+ def index
+ @categories = Category.all
+ end
+
+ def new
+ @category = Category.new
+ end
+
+ def create
+ @category = Category.new(name: params[:category][:name])
+ if @category.save
+ flash[:status] = :success
+ flash[:result_text] = "Successfully created #{@category.name} category"
+ redirect_to category_path(@category.id)
+ else
+ flash[:status] = :failure
+ flash[:result_text] = "Could not create #{@category.name} category."
+ flash[:messages] = @category.errors.messages
+ render :new, status: :bad_request
+ end
+ end
+
+ def show
+ if @category == nil
+ flash[:status] = :failure
+ flash[:result_text] = "That category does not exist."
+ redirect_to categories_path, status: :not_found
+ end
+ end
+
+ def destroy
+ if !@category
+ redirect_to root_path, status: :not_found
+ elsif @category.destroy
+ flash[:status] = :success
+ flash[:result_text] = "Category deleted"
+ redirect_to categories_path
+ else
+ flash[:status] = :failure
+ flash[:result_text] = "That category is unable to be deleted."
+ end
+ end
+
+ private
+
+ def find_category
+ @category = Category.find_by(id: params[:id])
+ end
+
+end
diff --git a/app/controllers/concerns/.keep b/app/controllers/concerns/.keep
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/app/controllers/merchants_controller.rb b/app/controllers/merchants_controller.rb
new file mode 100644
index 0000000000..d48f87e3c6
--- /dev/null
+++ b/app/controllers/merchants_controller.rb
@@ -0,0 +1,53 @@
+class MerchantsController < ApplicationController
+ before_action :find_merchant, only: [:show, :edit, :update, :destroy]
+
+ def index
+ @merchants = Merchant.all
+ end
+
+ def new
+ @merchant = Merchant.new
+ end
+
+ def show
+ if @merchant == nil
+ flash[:status] = :failure
+ flash[:result_text] = "That merchant does not exist."
+ redirect_to merchants_path, status: :not_found
+ end
+ end
+
+ # def edit
+ # unless @merchant
+ # flash[:status] = :failure
+ # flash[:result_text] = "That merchant could not be found."
+ # end
+ # end
+
+ # def update
+ # redirect_to merchants_path unless @merchant
+ # redirect_to root_path unless @merchant
+ #
+ # if @merchant.update_attributes merchant_params
+ # flash[:status] = :success
+ # flash[:result_text] = "Successfully updated merchant details!"
+ # redirect_to merchant_path(@merchant.id)
+ # else
+ # render :edit
+ # end
+ # end
+
+ # def destroy
+ # find_merchant
+ # redirect_to root_path
+ # end
+
+ private
+ def merchant_params
+ return params.require(:merchant).permit(:username, :email)
+ end
+
+ def find_merchant
+ @merchant = Merchant.find_by(id: params[:id].to_i)
+ end
+end
diff --git a/app/controllers/orders_controller.rb b/app/controllers/orders_controller.rb
new file mode 100644
index 0000000000..feda2a79ae
--- /dev/null
+++ b/app/controllers/orders_controller.rb
@@ -0,0 +1,127 @@
+class OrdersController < ApplicationController
+ before_action :find_order, only: [:show, :edit, :update]
+ before_action :find_merchant, only: [:index]
+
+ def index
+ if current_user != @merchant
+ flash[:result_text] = "You cannot view this page"
+ return redirect_to home_path
+ end
+ if params[:status] == "pending"
+ @merch_orders = Order.joins(:products).where({ "products.merchant_id" => session[:user_id]}).select("orders.*", "products.name as product_name", "products.price as product_price", "products.id as product_id")
+
+ @merch_orders = @merch_orders.where(:status => "pending")
+
+ elsif params[:status] == "complete"
+ @merch_orders = Order.joins(:products).where({ "products.merchant_id" => session[:user_id] }).select("orders.*", "products.name as product_name", "products.price as product_price", "products.id as product_id")
+
+ @merch_orders = @merch_orders.where(:status => "complete")
+
+ elsif params[:status] == "shipped"
+ @merch_orders = Order.joins(:products).where({ "products.merchant_id" => session[:user_id] }).select("orders.*", "products.name as product_name", "products.price as product_price", "products.id as product_id")
+
+ @merch_orders = @merch_orders.where(:status => "shipped")
+
+ else
+ @merch_orders = Order.joins(:products).where({ "products.merchant_id" => session[:user_id] }).select("orders.*", "products.name as product_name", "products.price as product_price", "products.id as product_id")
+ end
+ end
+
+ def show
+ unless @order
+ redirect_to root_path, status: :not_found
+ end
+ end
+
+ def new
+ @order = Order.new
+ end
+
+ def create
+ create_order
+ render :show
+ #see application controller
+ end
+
+ def edit
+ if !@order
+ redirect_to root_path, status: :not_found
+ elsif @order
+ if @order.status == "shipped"
+ flash[:result_text] = "You cannot edit a shipped order"
+ redirect_to home_path
+ end
+ end
+ end
+
+ def update
+ if !@order
+ redirect_to root_path, status: :not_found
+ elsif @order
+ if @order.status == "shipped"
+ flash[:status] = :failure
+ flash[:result_text] = "You cannot update a shipped order"
+ redirect_to home_path
+ else
+ @order.status = "complete"
+ if @order.update_attributes order_params
+ # @order.status = "complete"
+ @order.save
+ flash[:status] = :success
+ flash[:result_text] = "You have successfully submitted your order!"
+ session[:order_id] = nil
+ redirect_to order_confirm_order_path(@order.id)
+ else
+
+ # flash[:result_text] = "All fields are required to complete your order."
+ error = "Please correct the following fields: "
+ @order.errors.messages.each do |field, message|
+ error << "- #{field.capitalize} "
+ end
+ flash[:status] = :failure
+ flash[:result_text] = error
+ render :edit, status: :bad_request
+ end
+ end
+ end
+ end
+
+ def shipped
+ @order = Order.find_by(id: params[:id])
+ if @order.status == "complete"
+ @order.status = "shipped"
+ if @order.save
+ flash[:status] = :success
+ flash[:result_text] = "You have successfully shipped your order!"
+ redirect_back fallback_location: root_path
+ params[:id] = nil
+ else
+ flash[:status] = :failure
+ flash[:result_text] = "Couldn't mark as shipped."
+ end
+ else
+ flash[:status] = :failure
+ flash[:result_text] = "Shipping not allowed for this order"
+ redirect_to home_path
+ end
+ end
+
+ def individual_order
+ @order = Order.find_by(id: params[:id])
+ end
+
+ private
+
+ def order_params
+ return params.require(:order).permit(:status, :name, :address, :city, :state, :zip_code, :email, :card_number, :card_exp, :card_cvv)
+ end
+
+ def find_order
+ @order = Order.find_by(id: session[:order_id])
+ end
+
+ def find_merchant
+ @merchant = Merchant.find_by(id: params[:merchant_id])
+ end
+
+end
diff --git a/app/controllers/products_controller.rb b/app/controllers/products_controller.rb
new file mode 100644
index 0000000000..3ca52ffe33
--- /dev/null
+++ b/app/controllers/products_controller.rb
@@ -0,0 +1,162 @@
+class ProductsController < ApplicationController
+ before_action :find_product, only: [:show, :update, :destroy, :add_product_to_cart, :remove_product_from_cart]
+
+ def index
+ if params[:merchant_id]
+ @merchant = Merchant.find_by(id: params[:merchant_id])
+ if @merchant == nil
+ flash[:status] = :failure
+ flash[:result_text] = "Products for that merchant ID could not be found"
+ redirect_to products_path, status: :not_found
+ elsif @merchant.id == session[:user_id]
+ @products = @merchant.products
+ else
+ @products = @merchant.products.where(available: "Available")
+ end
+ # elsif
+ # params[:review_id]
+ # @products = Review.where(product_id: params[:category_id])
+ # if @products == nil
+ # flash[:status] = :failure
+ # flash[:result_text] = "Products for that review ID could not be found"
+ # redirect_to products_path, status: :not_found
+ # end
+ elsif
+ params[:category_id]
+ @category = Category.find_by(id: params[:category_id])
+ if @category == nil
+ flash[:status] = :failure
+ flash[:result_text] = "Products for that category could not be found"
+ redirect_to products_path, status: :not_found
+ else
+ @products = @category.products.where(available: "Available")
+ end
+ else
+ @products = Product.all.where(available: "Available")
+ end
+ end
+
+ def new
+ @product = Product.new
+ end
+
+ def create
+ @product = Product.new product_params
+ @product.merchant_id = session[:user_id]
+ if @product.save
+ flash[:status] = :success
+ flash[:result_text] = "Successfully created your product!"
+ redirect_to product_path(@product.id)
+ else
+ flash[:status] = :failure
+ flash[:result_text] = "Could not create #{@product.name}."
+ flash[:messages] = @product.errors.messages
+ render :new, status: :bad_request
+ end
+ end
+
+ def show
+ find_product
+ if @product == nil || @product.available == "Retired"
+ flash[:status] = :failure
+ flash[:result_text] = "That product is not available for viewing."
+ redirect_to products_path, status: :not_found
+ end
+ end
+
+ def edit
+ @product = Product.find_by(id: params[:id])
+ unless @product
+ flash[:status] = :failure
+ flash[:result_text] = "That product could not be found."
+ end
+ end
+
+ def update
+ if !@product
+ redirect_to root_path, status: :not_found
+ end
+
+ category = Category.where(name: params[:product][:categories])
+ @product.categories << category
+ @product.save
+
+ if @product.update_attributes product_params
+ flash[:status] = :success
+ flash[:result_text] = "Successfully updated product details!"
+ redirect_to merchant_products_path(session[:user_id])
+ else
+ render :edit
+ end
+ end
+
+ def destroy
+ if !@product
+ redirect_to root_path, status: :not_found
+ elsif @product.destroy
+ flash[:status] = :success
+ flash[:result_text] = "Product deleted"
+ redirect_to products_path
+ else
+ flash[:status] = :failure
+ flash[:result_text] = "That product is unable to be deleted."
+ redirect_to products_path, status: :not_found
+ end
+ end
+
+ def add_product_to_cart
+ @product = Product.find_by(id: params[:id])
+ if @product.remove_one_from_stock
+ if Order.find_by(id: session[:order_id]) == nil
+ create_order
+ order = Order.find_by(id: session[:order_id])
+ order.products << @product
+ order.save
+ flash[:status] = :success
+ flash[:result_text] = "product added to cart"
+ redirect_to order_path(order.id)
+ else
+ order = Order.find_by(id: session[:order_id])
+ order.products << @product
+ order.save
+ flash[:status] = :success
+ flash[:result_text] = "product added to cart"
+ redirect_to order_path(order.id)
+ end
+ else
+ flash[:status] = :failure
+ flash[:result_text] = "Product not available"
+ redirect_back(fallback_location: products_path)
+ # status :bad_request
+ end
+ end
+ def remove_product_from_cart
+ @product = Product.find_by(id: params[:id])
+ order = Order.find_by(id: session[:order_id])
+ if @product && order
+ index_of_first_found = order.products.index {|element| element.id == @product.id}
+ if index_of_first_found
+ orders_products_array = order.products.to_a
+ orders_products_array.delete_at(index_of_first_found)
+ order.products.replace([])
+ order.products.replace(orders_products_array)
+ @product.add_one_to_stock
+ flash[:status] = :success
+ flash[:result_text] = "Successfully removed product from cart"
+ redirect_to order_path(order.id)
+ else
+ flash[:status] = :failure
+ flash[:result_text] = "Error: Product not found in cart"
+ end
+ end
+ end
+
+private
+ def product_params
+ params.require(:product).permit(:name, :price, :quantity_avail, :available, :photo, :description)
+ end
+
+ def find_product
+ @product = Product.find_by(id: params[:id])
+ end
+end
diff --git a/app/controllers/reviews_controller.rb b/app/controllers/reviews_controller.rb
new file mode 100644
index 0000000000..4ff75d8bda
--- /dev/null
+++ b/app/controllers/reviews_controller.rb
@@ -0,0 +1,49 @@
+class ReviewsController < ApplicationController
+
+
+ def new
+ @product = Product.find_by(id: params[:product_id])
+ @review = Review.new
+ end
+
+ def create
+ @product = Product.find_by(id: params[:product_id])
+
+ if current_user && owner?
+ flash[:result_text] = "You cannot review your own product"
+ return redirect_to home_path
+ end
+ @review = Review.new(review_params)
+ @review.product_id = params[:product_id]
+ # @review.rating = @review.rating.to_i
+
+ if @review.save
+ flash[:status] = :success
+ flash[:result_text] = "Successfully reviewed!"
+ # redirect_to root_path
+ redirect_to product_path(@review.product_id)
+ else
+
+ puts "the new model"
+ puts @review
+ puts @review.rating
+ puts @review.text_review
+ flash[:status] = :failure
+ flash[:result_text] = "Could not review this product."
+ flash[:messages] = @review.errors.messages
+ render :new, status: :bad_request
+ end
+ end
+
+
+ private
+
+ def owner?
+ return session[:user_id] == @product.merchant.id ? true : false
+ end
+
+
+ def review_params
+ params.require(:review).permit(:rating, :text_review)
+ end
+end
diff --git a/app/controllers/sessions_controller.rb b/app/controllers/sessions_controller.rb
new file mode 100644
index 0000000000..83a3676e24
--- /dev/null
+++ b/app/controllers/sessions_controller.rb
@@ -0,0 +1,31 @@
+class SessionsController < ApplicationController
+ def create
+ @auth_hash = request.env['omniauth.auth']
+
+ @merchant = Merchant.find_by(uid: @auth_hash['uid'], provider: @auth_hash['provider'])
+
+ if @merchant
+ session[:user_id] = @merchant.id
+ flash[:result_text] = "Welcome back #{@merchant.username}"
+ else
+ @merchant = Merchant.new(uid: @auth_hash['uid'], provider: @auth_hash['provider'], username: @auth_hash['info']['nickname'], email: @auth_hash['info']['email'])
+ if @merchant.save
+ session[:user_id] = @merchant.id
+ flash[:status] = :success
+ flash[:result_text] = "Welcome to Sourceress, #{@merchant.username}"
+ else
+ flash[:result_text] = "Unable to save user!"
+ end
+ end
+ redirect_to home_path
+ end
+
+def logout
+ session[:user_id] = nil
+ session[:order_id] = nil
+ flash[:status] = :success
+ flash[:result_text] = "Successfully logged out!"
+ redirect_to home_path
+end
+
+end
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/helpers/categories_helper.rb b/app/helpers/categories_helper.rb
new file mode 100644
index 0000000000..e06f31554c
--- /dev/null
+++ b/app/helpers/categories_helper.rb
@@ -0,0 +1,2 @@
+module CategoriesHelper
+end
diff --git a/app/helpers/merchants_helper.rb b/app/helpers/merchants_helper.rb
new file mode 100644
index 0000000000..5337747b0f
--- /dev/null
+++ b/app/helpers/merchants_helper.rb
@@ -0,0 +1,2 @@
+module MerchantsHelper
+end
diff --git a/app/helpers/orders_helper.rb b/app/helpers/orders_helper.rb
new file mode 100644
index 0000000000..443227fd48
--- /dev/null
+++ b/app/helpers/orders_helper.rb
@@ -0,0 +1,2 @@
+module OrdersHelper
+end
diff --git a/app/helpers/products_helper.rb b/app/helpers/products_helper.rb
new file mode 100644
index 0000000000..ab5c42b325
--- /dev/null
+++ b/app/helpers/products_helper.rb
@@ -0,0 +1,2 @@
+module ProductsHelper
+end
diff --git a/app/helpers/reviews_helper.rb b/app/helpers/reviews_helper.rb
new file mode 100644
index 0000000000..682b7b1abc
--- /dev/null
+++ b/app/helpers/reviews_helper.rb
@@ -0,0 +1,2 @@
+module ReviewsHelper
+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/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/category.rb b/app/models/category.rb
new file mode 100644
index 0000000000..f47c9aa0c8
--- /dev/null
+++ b/app/models/category.rb
@@ -0,0 +1,5 @@
+class Category < ApplicationRecord
+ has_and_belongs_to_many :products, dependent: :destroy
+
+ validates :name, presence: true, uniqueness: true, length: { maximum: 25 }
+end
diff --git a/app/models/concerns/.keep b/app/models/concerns/.keep
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/app/models/merchant.rb b/app/models/merchant.rb
new file mode 100644
index 0000000000..2495ea8599
--- /dev/null
+++ b/app/models/merchant.rb
@@ -0,0 +1,9 @@
+class Merchant < ApplicationRecord
+ has_many :products
+
+ has_attached_file :photo, styles: { medium: "300x300>", thumb: "100x100>" }, default_url: "/images/:style/missing.png"
+ validates_attachment_content_type :photo, content_type: /\Aimage\/.*\z/
+
+ validates :username, presence: true, uniqueness: true
+ validates :email, presence: true, uniqueness: true
+end
diff --git a/app/models/order.rb b/app/models/order.rb
new file mode 100644
index 0000000000..32391faf65
--- /dev/null
+++ b/app/models/order.rb
@@ -0,0 +1,43 @@
+class Order < ApplicationRecord
+ VALID_STATS = ["pending", "complete", "shipped"]
+ has_and_belongs_to_many :products
+ validates :status, presence: true, inclusion: { in: VALID_STATS }
+ validates :name, presence: true, if: :completed?
+ validates :address, presence: true, if: :completed?
+ validates :city, presence: true, if: :completed?
+ validates :state, presence: true, if: :completed?
+ validates :email, presence: true, if: :completed?, format: { with: /\A(\S+)@(.+)\.(\S+)\z/ }
+ validates :card_number, presence: true, if: :completed?, numericality: true, length: {is: 16}
+ validates :card_exp, presence: true, if: :completed?
+ validates :card_cvv, presence: true, if: :completed?, numericality: true, length: {is: 3}
+ validates :zip_code, presence: true, if: :completed?, format: { with: /\A\d{5}-\d{4}|\A\d{5}\z/ }
+
+ attribute :status, :string, default: "pending"
+
+ def completed?
+ self.status == "complete"
+ end
+
+ def shipped
+ self.status == "shipped"
+ end
+
+ def order_total
+ total = 0
+ self.products.each do |product|
+ total += product.price
+ end
+ return total
+
+ end
+
+ def last_four
+ if self.status == "complete" || self.status == "shipped"
+ cc_last = self.card_number.to_s.slice(12..-1)
+ return cc_last
+ else
+ return "Order not Complete"
+ end
+ end
+
+end
diff --git a/app/models/product.rb b/app/models/product.rb
new file mode 100644
index 0000000000..1a27c88e07
--- /dev/null
+++ b/app/models/product.rb
@@ -0,0 +1,48 @@
+class Product < ApplicationRecord
+ validates :name, presence: true
+ validates :price, presence: true, numericality: { greater_than: 0 }
+ validates :quantity_avail, presence: true, numericality: { greater_than_or_equal_to: 0 }
+
+ belongs_to :merchant
+ has_many :reviews
+ has_and_belongs_to_many :categories
+ has_and_belongs_to_many :orders
+
+ has_attached_file :photo
+ validates_attachment_content_type :photo, content_type: /\Aimage\/.*\z/
+
+ def remove_one_from_stock
+ if self.quantity_avail > 0
+ self.quantity_avail -= 1
+ self.save
+ return true
+ else
+ return false
+ end
+ end
+
+ def add_one_to_stock
+ self.quantity_avail += 1
+ self.save
+ end
+
+ def average_rating
+ rating = 0.0
+ counter = 0
+ if reviews.count == 0
+ return "Not yet rated!"
+ end
+ reviews.each do |review|
+ if review[:rating] == nil
+ next
+ else
+ rating += review[:rating]
+ counter += 1
+ end
+ end
+
+ rating /= counter
+ return rating
+ end
+
+end
diff --git a/app/models/review.rb b/app/models/review.rb
new file mode 100644
index 0000000000..3f2d548ef5
--- /dev/null
+++ b/app/models/review.rb
@@ -0,0 +1,5 @@
+class Review < ApplicationRecord
+ belongs_to :product
+ validates :rating, presence: true, numericality: {only_integer: true, greater_than_or_equal_to: 1, less_than_or_equal_to: 5}
+ validates :product_id, presence: true
+end
diff --git a/app/views/categories/index.html.erb b/app/views/categories/index.html.erb
new file mode 100644
index 0000000000..698c401077
--- /dev/null
+++ b/app/views/categories/index.html.erb
@@ -0,0 +1,18 @@
+
+ Product: <%= link_to product.name, product_path(product.id) %>
+ Average Rating: <%= product.average_rating %>
+ Price: <%= product.price %>
+ Quantity Available: <%= product.quantity_avail %>
+
TOTAL ORDERS: <%= @number_of_orders.length %>
+ + + <% @total_revenue = 0.00 %> + <% @merch_orders.to_a.each do |orders| %> + <% @total = 0.00 %> + +There's nothing in your cart!
+ <% end %> + + <% product_array = @order.products.to_a %> + +<%= @product.name.upcase %> by
++ <%= link_to @product.merchant.username, merchant_path(@product.merchant.id) %>
+ <% if @product.description != nil %> +Description: <%= @product.description %>
+ <% end %> +$<%= @product.price %>
+Average Rating: <%= @product.average_rating %>
+ <% if @product.categories.count > 0 %> +Categories: <% @product.categories.each do |category| %> + <%= link_to category.name, category_path(category.id) %> + <% end %> + <% end %>
+ <% if @product.quantity_avail > 0 %> +In Stock
+ <% if @product.quantity_avail <= 5 %> +Only <%= @product.quantity_avail%> left!
+ <% end %> + <% else %> +Out of Stock
+ <% end %> + <% if @product.quantity_avail == 0 %> + + + <% elsif session[:order_id] == nil && @product.quantity_avail > 0 %> + <%= link_to add_product_path(@product), method: :patch do %> + + <% end %> + <% elsif @product.quantity_avail > 0 %> + <%= link_to add_product_path(@product), method: :patch do%> + + <% end %> + <% end %> + + <%= link_to new_product_review_path(@product.id) do %> + + <% end %> +Rating: <%= review.rating %>
+<%= review.text_review %>
+ +You may have mistyped the address or the page may have moved.
+If you are the application owner check the logs for more information.
+Maybe you tried to change something you didn't have access to.
+If you are the application owner check the logs for more information.
+If you are the application owner check the logs for more information.
+