From 75124e529ef767908a06f11c2d8fd99040f3bab4 Mon Sep 17 00:00:00 2001 From: Wire Date: Sun, 12 Jul 2020 23:43:36 +0200 Subject: [PATCH] First commit --- app/__init__.py | 14 + app/__pycache__/__init__.cpython-38.pyc | Bin 0 -> 530 bytes app/__pycache__/forms.cpython-38.pyc | Bin 0 -> 1825 bytes app/__pycache__/models.cpython-38.pyc | Bin 0 -> 3351 bytes app/__pycache__/routes.cpython-38.pyc | Bin 0 -> 6076 bytes app/forms.py | 33 + app/models.py | 76 + app/routes.py | 197 + app/static/img/avatars/1.png | Bin 0 -> 24356 bytes app/static/img/avatars/10.png | Bin 0 -> 17874 bytes app/static/img/avatars/11.png | Bin 0 -> 80962 bytes app/static/img/avatars/12.png | Bin 0 -> 91182 bytes app/static/img/avatars/2.png | Bin 0 -> 30399 bytes app/static/img/avatars/3.png | Bin 0 -> 32002 bytes app/static/img/avatars/4.png | Bin 0 -> 3998 bytes app/static/img/avatars/5.png | Bin 0 -> 19286 bytes app/static/img/avatars/6.png | Bin 0 -> 28154 bytes app/static/img/avatars/7.png | Bin 0 -> 21539 bytes app/static/img/avatars/8.png | Bin 0 -> 20393 bytes app/static/img/avatars/9.png | Bin 0 -> 22220 bytes app/static/img/logo.png | Bin 0 -> 4092 bytes app/static/semantic/.versions | 4 + app/static/semantic/LICENSE | 22 + app/static/semantic/README.md | 7 + app/static/semantic/components/accordion.css | 253 + app/static/semantic/components/accordion.js | 613 + .../semantic/components/accordion.min.css | 9 + .../semantic/components/accordion.min.js | 1 + app/static/semantic/components/ad.css | 275 + app/static/semantic/components/ad.min.css | 10 + app/static/semantic/components/api.js | 1167 + app/static/semantic/components/api.min.js | 1 + app/static/semantic/components/breadcrumb.css | 124 + .../semantic/components/breadcrumb.min.css | 9 + app/static/semantic/components/button.css | 3838 ++ app/static/semantic/components/button.min.css | 9 + app/static/semantic/components/card.css | 997 + app/static/semantic/components/card.min.css | 9 + app/static/semantic/components/checkbox.css | 632 + app/static/semantic/components/checkbox.js | 831 + .../semantic/components/checkbox.min.css | 9 + .../semantic/components/checkbox.min.js | 1 + app/static/semantic/components/colorize.js | 274 + .../semantic/components/colorize.min.js | 11 + app/static/semantic/components/comment.css | 271 + .../semantic/components/comment.min.css | 9 + app/static/semantic/components/container.css | 147 + .../semantic/components/container.min.css | 9 + app/static/semantic/components/dimmer.css | 253 + app/static/semantic/components/dimmer.js | 733 + app/static/semantic/components/dimmer.min.css | 9 + app/static/semantic/components/dimmer.min.js | 1 + app/static/semantic/components/divider.css | 260 + .../semantic/components/divider.min.css | 9 + app/static/semantic/components/dropdown.css | 1516 + app/static/semantic/components/dropdown.js | 3955 ++ .../semantic/components/dropdown.min.css | 9 + .../semantic/components/dropdown.min.js | 1 + app/static/semantic/components/embed.css | 166 + app/static/semantic/components/embed.js | 706 + app/static/semantic/components/embed.min.css | 9 + app/static/semantic/components/embed.min.js | 1 + app/static/semantic/components/feed.css | 295 + app/static/semantic/components/feed.min.css | 9 + app/static/semantic/components/flag.css | 1036 + app/static/semantic/components/flag.min.css | 9 + app/static/semantic/components/form.css | 1080 + app/static/semantic/components/form.js | 1706 + app/static/semantic/components/form.min.css | 9 + app/static/semantic/components/form.min.js | 1 + app/static/semantic/components/grid.css | 2039 + app/static/semantic/components/grid.min.css | 9 + app/static/semantic/components/header.css | 727 + app/static/semantic/components/header.min.css | 9 + app/static/semantic/components/icon.css | 4806 ++ app/static/semantic/components/icon.min.css | 9 + app/static/semantic/components/image.css | 310 + app/static/semantic/components/image.min.css | 9 + app/static/semantic/components/input.css | 519 + app/static/semantic/components/input.min.css | 9 + app/static/semantic/components/item.css | 487 + app/static/semantic/components/item.min.css | 9 + app/static/semantic/components/label.css | 1313 + app/static/semantic/components/label.min.css | 9 + app/static/semantic/components/list.css | 953 + app/static/semantic/components/list.min.css | 9 + app/static/semantic/components/loader.css | 347 + app/static/semantic/components/loader.min.css | 9 + app/static/semantic/components/menu.css | 2052 + app/static/semantic/components/menu.min.css | 1 + app/static/semantic/components/message.css | 505 + .../semantic/components/message.min.css | 9 + app/static/semantic/components/modal.css | 619 + app/static/semantic/components/modal.js | 1034 + app/static/semantic/components/modal.min.css | 9 + app/static/semantic/components/modal.min.js | 1 + app/static/semantic/components/nag.css | 148 + app/static/semantic/components/nag.js | 507 + app/static/semantic/components/nag.min.css | 9 + app/static/semantic/components/nag.min.js | 1 + .../semantic/components/placeholder.css | 239 + .../semantic/components/placeholder.min.css | 9 + app/static/semantic/components/popup.css | 752 + app/static/semantic/components/popup.js | 1532 + app/static/semantic/components/popup.min.css | 9 + app/static/semantic/components/popup.min.js | 1 + app/static/semantic/components/progress.css | 517 + app/static/semantic/components/progress.js | 931 + .../semantic/components/progress.min.css | 9 + .../semantic/components/progress.min.js | 1 + app/static/semantic/components/rail.css | 152 + app/static/semantic/components/rail.min.css | 9 + app/static/semantic/components/rating.css | 263 + app/static/semantic/components/rating.js | 508 + app/static/semantic/components/rating.min.css | 9 + app/static/semantic/components/rating.min.js | 1 + app/static/semantic/components/reset.css | 485 + app/static/semantic/components/reset.min.css | 9 + app/static/semantic/components/reveal.css | 295 + app/static/semantic/components/reveal.min.css | 9 + app/static/semantic/components/search.css | 445 + app/static/semantic/components/search.js | 1505 + app/static/semantic/components/search.min.css | 9 + app/static/semantic/components/search.min.js | 1 + app/static/semantic/components/segment.css | 879 + .../semantic/components/segment.min.css | 9 + app/static/semantic/components/shape.css | 158 + app/static/semantic/components/shape.js | 921 + app/static/semantic/components/shape.min.css | 9 + app/static/semantic/components/shape.min.js | 1 + app/static/semantic/components/sidebar.css | 628 + app/static/semantic/components/sidebar.js | 1033 + .../semantic/components/sidebar.min.css | 9 + app/static/semantic/components/sidebar.min.js | 1 + app/static/semantic/components/site.css | 204 + app/static/semantic/components/site.js | 487 + app/static/semantic/components/site.min.css | 9 + app/static/semantic/components/site.min.js | 1 + app/static/semantic/components/state.js | 708 + app/static/semantic/components/state.min.js | 1 + app/static/semantic/components/statistic.css | 566 + .../semantic/components/statistic.min.css | 9 + app/static/semantic/components/step.css | 626 + app/static/semantic/components/step.min.css | 9 + app/static/semantic/components/sticky.css | 78 + app/static/semantic/components/sticky.js | 959 + app/static/semantic/components/sticky.min.css | 9 + app/static/semantic/components/sticky.min.js | 1 + app/static/semantic/components/tab.css | 92 + app/static/semantic/components/tab.js | 952 + app/static/semantic/components/tab.min.css | 9 + app/static/semantic/components/tab.min.js | 1 + app/static/semantic/components/table.css | 1138 + app/static/semantic/components/table.min.css | 9 + app/static/semantic/components/transition.css | 2059 + app/static/semantic/components/transition.js | 1095 + .../semantic/components/transition.min.css | 9 + .../semantic/components/transition.min.js | 1 + app/static/semantic/components/video.css | 125 + app/static/semantic/components/video.js | 532 + app/static/semantic/components/video.min.css | 10 + app/static/semantic/components/video.min.js | 11 + app/static/semantic/components/visibility.js | 1311 + .../semantic/components/visibility.min.js | 1 + app/static/semantic/components/visit.js | 517 + app/static/semantic/components/visit.min.js | 11 + app/static/semantic/package.js | 34 + app/static/semantic/package.json | 20 + app/static/semantic/semantic.css | 40304 ++++++++++++++++ app/static/semantic/semantic.js | 22515 +++++++++ app/static/semantic/semantic.min.css | 372 + app/static/semantic/semantic.min.js | 11 + .../default/assets/fonts/brand-icons.eot | Bin 0 -> 98640 bytes .../default/assets/fonts/brand-icons.svg | 1008 + .../default/assets/fonts/brand-icons.ttf | Bin 0 -> 98404 bytes .../default/assets/fonts/brand-icons.woff | Bin 0 -> 63728 bytes .../default/assets/fonts/brand-icons.woff2 | Bin 0 -> 54488 bytes .../themes/default/assets/fonts/icons.eot | Bin 0 -> 106004 bytes .../themes/default/assets/fonts/icons.otf | Bin 0 -> 93888 bytes .../themes/default/assets/fonts/icons.svg | 1518 + .../themes/default/assets/fonts/icons.ttf | Bin 0 -> 105784 bytes .../themes/default/assets/fonts/icons.woff | Bin 0 -> 50524 bytes .../themes/default/assets/fonts/icons.woff2 | Bin 0 -> 40148 bytes .../default/assets/fonts/outline-icons.eot | Bin 0 -> 31156 bytes .../default/assets/fonts/outline-icons.svg | 366 + .../default/assets/fonts/outline-icons.ttf | Bin 0 -> 30928 bytes .../default/assets/fonts/outline-icons.woff | Bin 0 -> 14712 bytes .../default/assets/fonts/outline-icons.woff2 | Bin 0 -> 12240 bytes .../themes/default/assets/images/flags.png | Bin 0 -> 28123 bytes app/templates/_post.html | 24 + app/templates/_post_nort.html | 23 + app/templates/base.html | 46 + app/templates/index.html | 20 + app/templates/login.html | 35 + app/templates/register.html | 39 + app/templates/user.html | 49 + app/tests.py | 45 + config.py | 9 + microblog.py | 7 + tests.py | 45 + 200 files changed, 127500 insertions(+) create mode 100644 app/__init__.py create mode 100644 app/__pycache__/__init__.cpython-38.pyc create mode 100644 app/__pycache__/forms.cpython-38.pyc create mode 100644 app/__pycache__/models.cpython-38.pyc create mode 100644 app/__pycache__/routes.cpython-38.pyc create mode 100644 app/forms.py create mode 100644 app/models.py create mode 100644 app/routes.py create mode 100644 app/static/img/avatars/1.png create mode 100644 app/static/img/avatars/10.png create mode 100644 app/static/img/avatars/11.png create mode 100644 app/static/img/avatars/12.png create mode 100644 app/static/img/avatars/2.png create mode 100644 app/static/img/avatars/3.png create mode 100644 app/static/img/avatars/4.png create mode 100644 app/static/img/avatars/5.png create mode 100644 app/static/img/avatars/6.png create mode 100644 app/static/img/avatars/7.png create mode 100644 app/static/img/avatars/8.png create mode 100644 app/static/img/avatars/9.png create mode 100644 app/static/img/logo.png create mode 100644 app/static/semantic/.versions create mode 100644 app/static/semantic/LICENSE create mode 100644 app/static/semantic/README.md create mode 100755 app/static/semantic/components/accordion.css create mode 100755 app/static/semantic/components/accordion.js create mode 100755 app/static/semantic/components/accordion.min.css create mode 100755 app/static/semantic/components/accordion.min.js create mode 100755 app/static/semantic/components/ad.css create mode 100755 app/static/semantic/components/ad.min.css create mode 100755 app/static/semantic/components/api.js create mode 100755 app/static/semantic/components/api.min.js create mode 100755 app/static/semantic/components/breadcrumb.css create mode 100755 app/static/semantic/components/breadcrumb.min.css create mode 100755 app/static/semantic/components/button.css create mode 100755 app/static/semantic/components/button.min.css create mode 100755 app/static/semantic/components/card.css create mode 100755 app/static/semantic/components/card.min.css create mode 100755 app/static/semantic/components/checkbox.css create mode 100755 app/static/semantic/components/checkbox.js create mode 100755 app/static/semantic/components/checkbox.min.css create mode 100755 app/static/semantic/components/checkbox.min.js create mode 100644 app/static/semantic/components/colorize.js create mode 100644 app/static/semantic/components/colorize.min.js create mode 100755 app/static/semantic/components/comment.css create mode 100755 app/static/semantic/components/comment.min.css create mode 100644 app/static/semantic/components/container.css create mode 100644 app/static/semantic/components/container.min.css create mode 100755 app/static/semantic/components/dimmer.css create mode 100755 app/static/semantic/components/dimmer.js create mode 100755 app/static/semantic/components/dimmer.min.css create mode 100755 app/static/semantic/components/dimmer.min.js create mode 100755 app/static/semantic/components/divider.css create mode 100755 app/static/semantic/components/divider.min.css create mode 100755 app/static/semantic/components/dropdown.css create mode 100755 app/static/semantic/components/dropdown.js create mode 100755 app/static/semantic/components/dropdown.min.css create mode 100755 app/static/semantic/components/dropdown.min.js create mode 100644 app/static/semantic/components/embed.css create mode 100644 app/static/semantic/components/embed.js create mode 100644 app/static/semantic/components/embed.min.css create mode 100644 app/static/semantic/components/embed.min.js create mode 100755 app/static/semantic/components/feed.css create mode 100755 app/static/semantic/components/feed.min.css create mode 100755 app/static/semantic/components/flag.css create mode 100755 app/static/semantic/components/flag.min.css create mode 100755 app/static/semantic/components/form.css create mode 100755 app/static/semantic/components/form.js create mode 100755 app/static/semantic/components/form.min.css create mode 100755 app/static/semantic/components/form.min.js create mode 100755 app/static/semantic/components/grid.css create mode 100755 app/static/semantic/components/grid.min.css create mode 100755 app/static/semantic/components/header.css create mode 100755 app/static/semantic/components/header.min.css create mode 100755 app/static/semantic/components/icon.css create mode 100755 app/static/semantic/components/icon.min.css create mode 100755 app/static/semantic/components/image.css create mode 100755 app/static/semantic/components/image.min.css create mode 100755 app/static/semantic/components/input.css create mode 100755 app/static/semantic/components/input.min.css create mode 100755 app/static/semantic/components/item.css create mode 100755 app/static/semantic/components/item.min.css create mode 100755 app/static/semantic/components/label.css create mode 100755 app/static/semantic/components/label.min.css create mode 100755 app/static/semantic/components/list.css create mode 100755 app/static/semantic/components/list.min.css create mode 100755 app/static/semantic/components/loader.css create mode 100755 app/static/semantic/components/loader.min.css create mode 100755 app/static/semantic/components/menu.css create mode 100755 app/static/semantic/components/menu.min.css create mode 100755 app/static/semantic/components/message.css create mode 100755 app/static/semantic/components/message.min.css create mode 100755 app/static/semantic/components/modal.css create mode 100755 app/static/semantic/components/modal.js create mode 100755 app/static/semantic/components/modal.min.css create mode 100755 app/static/semantic/components/modal.min.js create mode 100755 app/static/semantic/components/nag.css create mode 100755 app/static/semantic/components/nag.js create mode 100755 app/static/semantic/components/nag.min.css create mode 100755 app/static/semantic/components/nag.min.js create mode 100644 app/static/semantic/components/placeholder.css create mode 100644 app/static/semantic/components/placeholder.min.css create mode 100755 app/static/semantic/components/popup.css create mode 100755 app/static/semantic/components/popup.js create mode 100755 app/static/semantic/components/popup.min.css create mode 100755 app/static/semantic/components/popup.min.js create mode 100755 app/static/semantic/components/progress.css create mode 100755 app/static/semantic/components/progress.js create mode 100755 app/static/semantic/components/progress.min.css create mode 100755 app/static/semantic/components/progress.min.js create mode 100755 app/static/semantic/components/rail.css create mode 100755 app/static/semantic/components/rail.min.css create mode 100755 app/static/semantic/components/rating.css create mode 100755 app/static/semantic/components/rating.js create mode 100755 app/static/semantic/components/rating.min.css create mode 100755 app/static/semantic/components/rating.min.js create mode 100755 app/static/semantic/components/reset.css create mode 100755 app/static/semantic/components/reset.min.css create mode 100755 app/static/semantic/components/reveal.css create mode 100755 app/static/semantic/components/reveal.min.css create mode 100755 app/static/semantic/components/search.css create mode 100755 app/static/semantic/components/search.js create mode 100755 app/static/semantic/components/search.min.css create mode 100755 app/static/semantic/components/search.min.js create mode 100755 app/static/semantic/components/segment.css create mode 100755 app/static/semantic/components/segment.min.css create mode 100755 app/static/semantic/components/shape.css create mode 100755 app/static/semantic/components/shape.js create mode 100755 app/static/semantic/components/shape.min.css create mode 100755 app/static/semantic/components/shape.min.js create mode 100755 app/static/semantic/components/sidebar.css create mode 100755 app/static/semantic/components/sidebar.js create mode 100755 app/static/semantic/components/sidebar.min.css create mode 100755 app/static/semantic/components/sidebar.min.js create mode 100755 app/static/semantic/components/site.css create mode 100755 app/static/semantic/components/site.js create mode 100755 app/static/semantic/components/site.min.css create mode 100755 app/static/semantic/components/site.min.js create mode 100755 app/static/semantic/components/state.js create mode 100755 app/static/semantic/components/state.min.js create mode 100755 app/static/semantic/components/statistic.css create mode 100755 app/static/semantic/components/statistic.min.css create mode 100755 app/static/semantic/components/step.css create mode 100755 app/static/semantic/components/step.min.css create mode 100755 app/static/semantic/components/sticky.css create mode 100755 app/static/semantic/components/sticky.js create mode 100755 app/static/semantic/components/sticky.min.css create mode 100755 app/static/semantic/components/sticky.min.js create mode 100755 app/static/semantic/components/tab.css create mode 100755 app/static/semantic/components/tab.js create mode 100755 app/static/semantic/components/tab.min.css create mode 100755 app/static/semantic/components/tab.min.js create mode 100755 app/static/semantic/components/table.css create mode 100755 app/static/semantic/components/table.min.css create mode 100755 app/static/semantic/components/transition.css create mode 100755 app/static/semantic/components/transition.js create mode 100755 app/static/semantic/components/transition.min.css create mode 100755 app/static/semantic/components/transition.min.js create mode 100755 app/static/semantic/components/video.css create mode 100755 app/static/semantic/components/video.js create mode 100755 app/static/semantic/components/video.min.css create mode 100755 app/static/semantic/components/video.min.js create mode 100755 app/static/semantic/components/visibility.js create mode 100755 app/static/semantic/components/visibility.min.js create mode 100644 app/static/semantic/components/visit.js create mode 100644 app/static/semantic/components/visit.min.js create mode 100644 app/static/semantic/package.js create mode 100644 app/static/semantic/package.json create mode 100755 app/static/semantic/semantic.css create mode 100755 app/static/semantic/semantic.js create mode 100644 app/static/semantic/semantic.min.css create mode 100644 app/static/semantic/semantic.min.js create mode 100644 app/static/semantic/themes/default/assets/fonts/brand-icons.eot create mode 100644 app/static/semantic/themes/default/assets/fonts/brand-icons.svg create mode 100644 app/static/semantic/themes/default/assets/fonts/brand-icons.ttf create mode 100644 app/static/semantic/themes/default/assets/fonts/brand-icons.woff create mode 100644 app/static/semantic/themes/default/assets/fonts/brand-icons.woff2 create mode 100644 app/static/semantic/themes/default/assets/fonts/icons.eot create mode 100644 app/static/semantic/themes/default/assets/fonts/icons.otf create mode 100644 app/static/semantic/themes/default/assets/fonts/icons.svg create mode 100644 app/static/semantic/themes/default/assets/fonts/icons.ttf create mode 100644 app/static/semantic/themes/default/assets/fonts/icons.woff create mode 100644 app/static/semantic/themes/default/assets/fonts/icons.woff2 create mode 100644 app/static/semantic/themes/default/assets/fonts/outline-icons.eot create mode 100644 app/static/semantic/themes/default/assets/fonts/outline-icons.svg create mode 100644 app/static/semantic/themes/default/assets/fonts/outline-icons.ttf create mode 100644 app/static/semantic/themes/default/assets/fonts/outline-icons.woff create mode 100644 app/static/semantic/themes/default/assets/fonts/outline-icons.woff2 create mode 100644 app/static/semantic/themes/default/assets/images/flags.png create mode 100644 app/templates/_post.html create mode 100644 app/templates/_post_nort.html create mode 100644 app/templates/base.html create mode 100644 app/templates/index.html create mode 100644 app/templates/login.html create mode 100644 app/templates/register.html create mode 100644 app/templates/user.html create mode 100644 app/tests.py create mode 100644 config.py create mode 100644 microblog.py create mode 100644 tests.py diff --git a/app/__init__.py b/app/__init__.py new file mode 100644 index 0000000..fd1e205 --- /dev/null +++ b/app/__init__.py @@ -0,0 +1,14 @@ +from flask import Flask +from config import Config +from flask_sqlalchemy import SQLAlchemy +from flask_migrate import Migrate +from flask_login import LoginManager + +app = Flask(__name__) +app.config.from_object(Config) +db = SQLAlchemy(app) +migrate = Migrate(app, db) +login = LoginManager(app) +login.login_view = 'login' + +from app import routes, models diff --git a/app/__pycache__/__init__.cpython-38.pyc b/app/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..730bdf5850d85069da0f1277c64d3df6072ebfec GIT binary patch literal 530 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 HE8TAZ0($%g literal 0 HcmV?d00001 diff --git a/app/__pycache__/routes.cpython-38.pyc b/app/__pycache__/routes.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bebfb051c3924e23e37dd5050a294bd73a035436 GIT binary patch literal 6076 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 Wj>0T1GfccIC6pAFr9>Ihm;Mb^2&9hy literal 0 HcmV?d00001 diff --git a/app/forms.py b/app/forms.py new file mode 100644 index 0000000..eb5ab64 --- /dev/null +++ b/app/forms.py @@ -0,0 +1,33 @@ +from flask_wtf import FlaskForm +from wtforms import StringField, PasswordField, BooleanField, SubmitField +from wtforms.validators import ValidationError, DataRequired, Email, EqualTo +from app.models import User + + +class LoginForm(FlaskForm): + username = StringField('Username', validators=[DataRequired()]) + password = PasswordField('Password', validators=[DataRequired()]) + remember_me = BooleanField('Remember Me') + submit = SubmitField('Sign In') + + +class RegistrationForm(FlaskForm): + username = StringField('Username', validators=[DataRequired()]) + email = StringField('Email', validators=[DataRequired(), Email()]) + password = PasswordField('Password', validators=[DataRequired()]) + password2 = PasswordField( + 'Repeat Password', validators=[DataRequired(), EqualTo('password')]) + submit = SubmitField('Register') + + def validate_username(self, username): + user = User.query.filter_by(username=username.data).first() + if user is not None: + raise ValidationError('Please use a different username.') + + def validate_email(self, email): + user = User.query.filter_by(email=email.data).first() + if user is not None: + raise ValidationError('Please use a different email address.') + +class EmptyForm(FlaskForm): + submit = SubmitField('Submit') \ No newline at end of file diff --git a/app/models.py b/app/models.py new file mode 100644 index 0000000..749a696 --- /dev/null +++ b/app/models.py @@ -0,0 +1,76 @@ +from datetime import datetime +from app import db, login +from flask_login import UserMixin +from werkzeug.security import generate_password_hash, check_password_hash + +followers = db.Table('followers', + db.Column('follower_id', db.Integer, db.ForeignKey('user.id')), + db.Column('followed_id', db.Integer, db.ForeignKey('user.id')) +) + +class User(UserMixin, db.Model): + id = db.Column(db.Integer, primary_key=True) + username = db.Column(db.String(64), index=True, unique=True) + email = db.Column(db.String(120), index=True, unique=True) + password_hash = db.Column(db.String(128)) + posts = db.relationship('Post', backref='author', lazy='dynamic') + + def __repr__(self): + return ''.format(self.username) + + def set_password(self, password): + self.password_hash = generate_password_hash(password) + + def check_password(self, password): + return check_password_hash(self.password_hash, password) + + def follow(self, user): + if not self.is_following(user): + self.followed.append(user) + + def unfollow(self, user): + if self.is_following(user): + self.followed.remove(user) + + def is_following(self, user): + return self.followed.filter( + followers.c.followed_id == user.id).count() > 0 + + def following_list(self): + return self.followed.all() + + def followed_posts(self): + return "Soon.." + + followed = db.relationship( + 'User', secondary=followers, + primaryjoin=(followers.c.follower_id == id), + secondaryjoin=(followers.c.followed_id == id), + backref=db.backref('followers', lazy='dynamic'), lazy='dynamic') + + +@login.user_loader +def load_user(id): + return User.query.get(int(id)) + +class twitterPost(): + date = 0 + username = 'Error' + op = 'Error' + isRT = True + urlToPost = "" + validPost = True + content = "El gato siguió a la liebre. Esto es un texto de ejemplo." + profilePic = "url" + twitterAt = "@error" + twitterName = "Error Name" + timeStamp = "error" + +class Post(db.Model): + id = db.Column(db.Integer, primary_key=True) + body = db.Column(db.String(140)) + timestamp = db.Column(db.DateTime, index=True, default=datetime.utcnow) + user_id = db.Column(db.Integer, db.ForeignKey('user.id')) + + def __repr__(self): + return ''.format(self.body) diff --git a/app/routes.py b/app/routes.py new file mode 100644 index 0000000..b1aaaa2 --- /dev/null +++ b/app/routes.py @@ -0,0 +1,197 @@ +from flask_login import login_user, logout_user, current_user, login_required +from flask import render_template, flash, redirect, url_for, request +from app.forms import LoginForm, RegistrationForm, EmptyForm +from app.models import User, twitterPost +from werkzeug.urls import url_parse +from flask import Markup +from app import app, db +import time, datetime +import random, string +import feedparser + +@app.route('/') +@app.route('/index') +@login_required +def index(): + following = current_user.following_list() + followed = current_user.followed.count() + posts = [] + avatarPath = "img/avatars/1.png" + for fwd in following: + avatarPath = "img/avatars/{}.png".format(str(random.randint(1,12))) + + #Gather profile info. + rssFeed = feedparser.parse('https://nitter.net/{}/rss'.format(fwd.username)) + + #Gather posts + if rssFeed.entries != []: + for post in rssFeed.entries: + newPost = twitterPost() + + newPost.profilePic = rssFeed.channel.image.url + newPost.twitterAt = rssFeed.feed.title.split("/")[1].replace(" ", "") + newPost.twitterName = rssFeed.feed.title.split("/")[0] + + newPost.username = rssFeed.feed.title.split("/")[0] + newPost.date = getTimeDiff(post.published_parsed) + newPost.timeStamp = datetime.datetime(*post.published_parsed[:6]) + newPost.op = post.author + newPost.urlToPost = post.link + newPost.content = Markup(post.description) + + if "RT by" in post.title: + newPost.isRT = True + else: + newPost.isRT = False + posts.append(newPost) + posts.sort(key=lambda x: x.timeStamp, reverse=True) + return render_template('index.html', title='Home', posts=posts, avatar=avatarPath, followedCount = followed) + + +@app.route('/login', methods=['GET', 'POST']) +def login(): + if current_user.is_authenticated: + return redirect(url_for('index')) + form = LoginForm() + if form.validate_on_submit(): + user = User.query.filter_by(username=form.username.data).first() + if user is None or not user.check_password(form.password.data): + flash('Invalid username or password') + return redirect(url_for('login')) + login_user(user, remember=form.remember_me.data) + next_page = request.args.get('next') + if not next_page or url_parse(next_page).netloc != '': + next_page = url_for('index') + return redirect(next_page) + return render_template('login.html', title='Sign In', form=form) + + +@app.route('/logout') +def logout(): + logout_user() + return redirect(url_for('index')) + + +@app.route('/register', methods=['GET', 'POST']) +def register(): + if current_user.is_authenticated: + return redirect(url_for('index')) + form = RegistrationForm() + if form.validate_on_submit(): + rssFeed = feedparser.parse('https://nitter.net/{}/rss'.format(form.username.data)) + + if rssFeed.entries == []: + user = User(username=form.username.data, email=form.email.data) + user.set_password(form.password.data) + db.session.add(user) + db.session.commit() + flash('Congratulations, you are now a registered user!') + return redirect(url_for('login')) + else: + flash('This is username is taken! Choose a different one.') + return render_template('register.html', title='Register', form=form) + +@app.route('/follow/', methods=['POST']) +@login_required +def follow(username): + form = EmptyForm() + if form.validate_on_submit(): + user = User.query.filter_by(username=username).first() + isTwitter = True + if user is None and isTwitter: + x = ''.join(random.choice(string.ascii_uppercase + string.ascii_lowercase + string.digits) for _ in range(16)) + newUser = User(username=username, email="{}@person.is".format(x)) + print(x) + db.session.add(newUser) + db.session.commit() + flash('You are now following {}!'.format(username)) + #flash('User {} not found.'.format(username)) + return redirect(url_for('index')) + if user == current_user: + flash('You cannot follow yourself!') + return redirect(url_for('user', username=username)) + current_user.follow(user) + db.session.commit() + flash('You are following {}!'.format(username)) + return redirect(url_for('user', username=username)) + else: + return redirect(url_for('index')) + + +@app.route('/unfollow/', methods=['POST']) +@login_required +def unfollow(username): + form = EmptyForm() + if form.validate_on_submit(): + user = User.query.filter_by(username=username).first() + if user is None: + flash('User {} not found.'.format(username)) + return redirect(url_for('index')) + if user == current_user: + flash('You cannot unfollow yourself!') + return redirect(url_for('user', username=username)) + current_user.unfollow(user) + db.session.commit() + flash('You are not following {}.'.format(username)) + return redirect(url_for('user', username=username)) + else: + return redirect(url_for('index')) + +@app.route('/user/') +@login_required +def user(username): + user = User.query.filter_by(username=username).first() + isTwitter = True + if user is None and isTwitter: + x = ''.join(random.choice(string.ascii_uppercase + string.ascii_lowercase + string.digits) for _ in range(16)) + newUser = User(username=username, email="{}@person.is".format(x)) + db.session.add(newUser) + db.session.commit() + #flash('User {} not found.'.format(username)) + + #Gather profile info. + rssFeed = feedparser.parse('https://nitter.net/{}/rss'.format(username)) + + #Gather posts + posts = [] + for post in rssFeed.entries: + newPost = twitterPost() + + newPost.profilePic = rssFeed.channel.image.url + newPost.twitterAt = rssFeed.feed.title.split("/")[1].replace(" ", "") + newPost.twitterName = rssFeed.feed.title.split("/")[0] + + newPost.username = rssFeed.feed.title.split("/")[0] + newPost.date = getTimeDiff(post.published_parsed) + newPost.timeStamp = datetime.datetime(*post.published_parsed[:6]) + newPost.op = post.author + newPost.urlToPost = post.link + newPost.content = Markup(post.description) + + if "RT by" in post.title: + newPost.isRT = True + else: + newPost.isRT = False + + #validPost = True + posts.append(newPost) + + form = EmptyForm() + return render_template('user.html', user=user, posts=posts, form=form, profilePic=rssFeed.channel.image.url) + +def getTimeDiff(t): + today = datetime.datetime.now() + tweetTime = datetime.datetime(*t[:6]) + diff = today - tweetTime + timeString = "0m" + + if diff.days == 0: + minutes = diff.seconds/60 + if minutes > 60: + hours = minutes/60 + timeString = "{}h".format(hours) + else: + timeString = "{}m".format(minutes) + else: + timeString = "{}d".format(diff.days) + return timeString \ No newline at end of file diff --git a/app/static/img/avatars/1.png b/app/static/img/avatars/1.png new file mode 100644 index 0000000000000000000000000000000000000000..d5bb2b9d990a2c786133a46c56a9e6cb38b932a1 GIT binary patch literal 24356 zcmcGWRd5?Yx2=|J1Fz_uR(7N}_hYzG5#DxVEU042U!MS27;S{<+3%KJT!Rtc_E27bd0IMaca|1to z!Fu@{LVE}6$0CRJ6_kK4A$Zvxm1fpG5wp6pmoU6=ZZQHPKmeQh;*c4~Yu;Re35 zeA^bFM1zNBM_k^cgopk_M&!#+T0j9gBMA89%MTPIMS~A;g#P3k6U9%8215T|ZE^(Z z{eKwff49kh?)1NI`oA0KziVP@y95ZjbsAR3Cv01|WagBC%%8vtW)wL-H)`aj*#BIAfx;HKeuu%@FBCeHZw6>>=kxgPX3rkR4mt>Zt%4Uv1jGMFWv&33boW>znx9>V6APs=)cWi# z%xKd0bSSFx?sRt&HU5t?1cctika^uQX7H8N_nq3uUJ>v6VMFyEqKlt5H;UE_)<#K1 ziGt6|#aRSt$?)_F$5Xic7)_#RzbxtMF1|(zN~MZ2A|vXVD0KWyCU;W0Pogv3XLD0P z9lw$L5v(HjKJ2uI(-s69tOND61bp{dO-kcyLXk|mG^fMCjVxE|6}V7ZAbxoWN{O<7 zqJW|WZ=B9ZLSUQa#TDLY?2J5sD~(S;C-A&LCeImv>T@?h5Vs(UkDD??KlJe2Ke$Bk zNZxbpbh)13T#t9br=6snKE+88APDgLX06=g!u(ASsZr~WXMZ#~S)A15hfpl{>o{|Q zD`%{Jm1faBMHA?EO{0n!;Fw1n38jcu1n_)+mJcfY#Ra7Ch$4J(H7PHCU`9qo?~aOz zBDKJbW-{4o#&gxfPOS9F7J%k-kd4ZK#glw=18nP93UWtAEs4HXhdM6MgIWdO33&w} z!`@2(3e7i#pe8GKrh2o*t0Mn(M3*T*X0fFAGM8M9cOV^g`UO4Vn?l+h5$|w;0}F40 zHp(VHRJDBIZ%1vF0?bk%c!^J}RB!;%y1;;Y!`(#W*vYhu-b{AxKNt1n5F`w%@Lo?} zvgbelZ9g}&Q%a*b2by6LJFl^}7;C$t^Y~s5gaCC!2^!gbmn$4ijD$}Tw_GXqU&~Bp zlQhCa5~hVreEfc2f2n{n0(hl9Ab7wg*SOnrkM#HHa>S5K_j{TWDitLt;!tRg#*!6A z6Y8j=2uS1iV|F>d_~>rc26B(BNC(At^h2{3{Z^6y_OX?=WqIhj^>MBav0e>fv}a82 zttQvHUh>*EVi5p?Ng11kF8Xga55#r#1h(_li4069&a6R^vjT5D3l1Hy`I~plWO;56 zRvF7|U_JOSitEfaE(&D=>?zS_=1~->OC`egrcLh6PXB1wt~N60?W?D~b>fTjY2Dc2%CTMfSC?mhuNdOq5Fm)|s+&tI=WDm^=}93iU|IK=MI-t17dot(Avh!1&A4aRR4s+fuuk!Mn3BUh*1id$>G#Xj9{ zu=iF-@Go1NJLP|YGW0z6`68ce)h#>Z#3vX0Cv?tx9vYKReyB12a9?V+bf}AS?tD)k zPTXjLNW#Z@ZKHM9I0rt|*XGi4nUuFURXOgs#nHBS=mPt;cC_l% z&+a)gmtVu4i8lfvCP5y z$w|-mVcqi+B_Pc;9pUSBR`3D6VCryquQUTGaWaU}H#=R|UOrmOk z^b6teL%Rd^un8Se@@T1SBVs0pN09iAgg*HzT4VH!q)*iAc>td&a1NFlff9E`3c;Jj z3-5K_qIn=|cel}cb_MAOccyNouk8YSwI9lb5_8 zvoD3}YSzahA`$<1FDViB8&Hud+=)8X{KA)NCWUZBnQwcsq&1>dg7XcQn&4EFl*DO< z>nO1H(d5o)OYSEcw@Nqap1*o-*HDrx6>&BVQA1kDs-#npi&F|aKyf4214n3IlMGQN zBEPwpUE_^VD;p;M12q&qzY*IFH%Ii->wPkL8tK@5;U*?RV9yNAV~juCXXhk=B_P;W zfM{uIue^YnW8BKhPTq*rY5kVKM%CTxw`7iEjkop&M`of_eX2ppWkGZ4W&isO60@j6 zI$!s8PBm>21v#rpGQs&qrr(7Qfa`hlbO zGy%9gb`{sSlCM)0Irv)XwNL<`%RI%r10qM8=r3~z)i!2-mJ^do^=L9h@tSpSuI@2-NlbN&pVomIDTHz66vdryl@@F)w2cuM2M4uHg!wvubiTKCgp)T z>WD*C&U9-^iBTDEQ}O^L{kKL5lBI9$9f?F;XJCYuW)q~(IyfI@EuH7kdG`vky|1{3 z4m>tzI%21?_=dn?4Dds;w7cK2BO(!s<|rsU9D*8~9rjS%!oL(9XQs)H@$s5m`R@4I z-$akQPwrc?2af6$U&;r!`6A4_kFYDg7J|Q4qvEXkYN_`9b!lGrpefItOgCxCm@qFk z*a^MRB3L7C#P>Gh;^8RCr!Y_K^YnBJA&KwXA4~pvIg0&6Zl6rgH$+*10|}T)=WX$4 z<=XyP)=MEPjh0d_n+lm(*-yOh8`i`qjN&Hxd%V17AfsQMF;Pdq-1FE_I&cqj6Fes* zNnGt%I}5O)3e#$f=0xW#4~7)aF5xUshA*`CM-#^^wB=Ealn=%e$DX=mTjg*1i~E)u z;6iWTOwiM7A&*#??Kn(bk18oCyymn?mrwkv5x{wckge6`pxm%IHk$1t%h|QXSP@>j zM$yiZlcDcoOxw>=LJsfka60d)zo>~l!|~w-mwh7Jn(3&Q)k)A5xHHH2Q@cf1DXl#oH3W?vk8r-raic;^ zB#6|~L-=}MiccX^rA^IzqGZ~Im5yGg_S5b8X14L`6}{DZLn2T%-^D6dkZ8FYik ze3%L*Xb+)FK5@E$)9dVN@Ww|O6~tt&Gm=U)a7fD1G+tTVReQ7dr>itwONe}>rd2IL z!=_gV3rqMevU~-0{*L(bVByvKZ-nd-9YtASV4g*=XP|4wTji}{<*NfKTve1h3dw6z zYI-~nK?UQeykwni)|^PJ!A23TXlQftAcQ;< zU4k*Q9YZMe5&@F)g4glgQo)_$Rv8tgnIpU=%3A6Z$I8#JwMECs=Q|9Tx0{Mpnw(Fr zr>bp^2N@ze?{eH$`LZjL$%pVF6fj}$k&lKILS%N|)we&*-GD!HN~~OOc?Lg?jrYfY z|5Z+S%M;fS1NAXjC)_PtF88XCkUia_Yxr6!9dysnB?@)#(5;754AyjRgi`@B7`ixFRzRB~Uk_!|qq@ zSU@i!$&zZFPAp;i-3UcLo9@@a?UNpZWwG;O>5~Y;Yylh<6NJWiCoh03XK|968%Is6 zg`-LC>or)73xu8W(Oe~LyE?+hW0JUd!J8+;n?&O$ZU7J+eU~t6tMv32 zD9T8uv{7)cwCAt~wQhzETno<1I~===DoM9;z5U2rYQ zysa&Myr}NDE8Fe-&a9l;IsAkgvVO=M+3{_2E0CW;y-}Y#{sV~q3Y&gMmgY}M^9EBL z3YM`jVZjF@^E(7BtH*($B~PsfH5(EBZc*Z$#Rx)9(5`EA`3cN>RBf!0cd>m_MVWmL z6PlFZ6XzF+>rFnV(=%s>GO6G@$E%yKU58){gE>J?{`_7xP>gK;?mEskmzlxb*Kp5` zr$aBWo#akywGP4L?)Eo@5+e3u`yg;~$w0J#OX11Fjk?9{$f6D|ISrYweih|(F#2kR zJAI`i|5oGiVqu%pv25e}`%v%x8Pynh(vtFNkF4uwyUhn2hriX)FJ+{_IIm8~#H(Y8&j$a)$Z& z6TNC12e|7G?2t7)oPnrJmE$eHwoqTbWumkBo+q4D&C&WrDkbYyWl_bVmrS_S#50>~%hg&zSK$HXI}HEV?RRHc&> zGrZp`S%RRUQ{Hxk+wAudBcoS_+8uwV%ln1ibYD!c@Ey?p?ZlAaz`UeJO9hl7gLLLv z2{8`J+IuM`NeDsNK{nuf&Ke)S#BWNY<(MSwDOKH9*t3XlShU8Ix++CVfkB^BCr%;> z)79_S#n8!e9R)H&<*2s{n$BaCxm7(V1Q+Vn*xpvpiMlf3;9L~b4;`x!`~?BLaXZm+ zjaJD%Q?an88E)b0JGO*E8@oDt`yBWrt;sg zqBwzewY76KdO|8oua|Ic*U*>9lY86OmTEH%f(<1|1s9<6Ry1@y`}XzM?ZcT4esZjB zPwef{CMj`Pi`9;5_qWCE_6J-a5-tgMQ}g7 zDplQSIrgjjV8CTxsoYOWJ3b5lH-USj>*)6w%Qfwl*)7xqMRo8ggu z`$VmlpU7$Rmf-WMP}xUB9P~%?)-5D=w`<4aCKI;J2+b{ox=>qZWycJKRW}VxC%;YW z2l~EFy3Dlo^mHC4PqCvL4u)iQ^arIgx7JdB$F~%&=!voSKx=)zg_x6z?IVX9sT=LE zh^Rb#R&!iVE|@F1S-kw#)sJBUPFTMZqCVep3Yf5AO>7@@7st=AlwEvpmc4k=)xM~w zK*ei+oJWh2f+cXH5%7%9<2{<8o>J`(5(ym$4bp|k9^9R}_|My!=XvBkYt^=oM z_(EVKTC;W?SjPR1i*oCm1#kv!JJZq+*6YCC>OC%2ef zTV>{{9xwI*<%UzaaCjac=__*dc8m^c+>&mO95% zgyU3(%=01Wv3%oBLBKYirN>zSJ#Tu7-p`jA6&|)X<3dvRClxWi%Mn>~MjJx`1EuY&0lX7hYU-_!Vc*DIRnTbm z=u|9@=le~!S|8lD{WhZ-Zz4}TF8!(6j;hT@>~5JtniG2uC@dJ`gubax0oQ#nac!RR zN<$ixQJ9hxD(I2Xyc@3;@u2%8GvxcrGm^>VjDvBwoJVAghd6wKV(ZXZ@z4ede<$js zi{hFFWyneXc+vH-vQ{3DCKw0wRk;)K{$#|oJFu_#dWyU}oxj#Rh?!TW%M+`CJcfvOXVhQ=dPP!b??<~voK9nuRLS`zRg!*f zHuIV+{So1J?XHBn{X5D`!Tn$O%grGvfyN!ochz~mqP&b%>Lzt6wH&^`3?>(!}Ce$ zP#}0@WES$hFjxI*&7#^^F7A1q6g|NxgiX;Q42p@EC+w9LH_T36{Qy>pL2K)t`y7PB zP?=x=4Oc+x`h{+{`GFpYaLCH@iA zcMmQ0Rx^y^NV>0}{{8q&!xdzHS-WyDw>Ds(sSb9N5y5*Uh)E z3>O93+f)6UTJMAMMOUeO?6SS1hmz31R>7K{)tATb&(5D1G=?Jz3dH&?9sAi(3Hl0Z zz=ejYB5tRmQI0twOzq;(MxzP2-S2O!642Z(oN1y#Hg!z3om8U7rbNTHjTb048gu9? zm=0Na6@$paWH>)(BFtt>t;!b^8$CtZu0z}AcK>kai-?$FT-VJ_(eo%w<=Qvso8O(_ zI{y};dJJ%9V~&3&)DZM~Qxn#@pDg+uRgpI%x2kphrx$eLCFhMe3n<$&PmQ*aZ-av)OObXhWrql;EI?PF=a>2gpS0}qWz+Pf7ifD`yJv-)4 zSB6gBXN^**uk&!rBXI018hYtV;CjFT<*O9Bqg*UnL=BWl)NHW{J80|hw#wlzBL!WE z2T?A2qrc<$Q1M*VSyddO2_$c-r zyi?`(@}yqB#1126cnjRmpK5#UvKz<>cJuokC;$&A(mN*+mK__G3qzJ= zhiGoQgOQcnZnVcQKg_3C3;));nWtfVWP@Ru{+1H>Q(qQi{`M~YORM7dgQ#7(ZwrJ@ z3bFIYvuPAIc$tYAphoFvi?b~KX{Ra6GlIV)tsBK{a)?I-#wLhUZP&T4Ry+|-=jq2k z`D{wzBq^rR>09*KhB9wcq`WK7kFrE#G?SY1%XcT$xJ#zu{;0JLQ1(@{gDd+T9D!o=< z1|RC6IJcRk<~!|sJIe_gc78t{;0<;Cj%=h#;n=Oc^0{=EH%s}1M_@xYCt>i8BT+H4&w9~3w zSrOPEmv=7HHexwH1mQj_jU^tqjAkg|HbiG2*$*WvMM{Yv{Ng=h3HB~jo_0+If z<9D7b`uuA1hSmr+8@tpuv@h{dDJuUS3*&M=pww%kEJ#EvG6Y>A_jgm*15I{zB2nzt?B+Sg$?b<+-{TC;qpNnu zT`Q4Fm~8<3`4!P~y@z=16vi|S+a*3YUJ`QiHDV#47*K4BLT{&y7xaHw0DG-9PKStm zBh%LQa{0}i?9#EWO|w6#*mEb-Bo)eAd~TYtf>keWS^)+MoSf5#^zHHA=y-1#xIEnS zODDMPDJiv)_h_-7O;-3$6lD(VtUK$;pQHIHUtDtTFJfWVu5sw#%SPWkJ(HSzyl5s3 zAxo?}k>^jg14Qgs?sIhhgflKSCFPauA>4<6%=$4<;r{lls$U?+FVfcB*<#YmwZ4^A z^QUSVNBpOiZt`DC8~hUNl0r*Fdmr`b>^8NeVT}4H@}F#hM8=p={;1)uTJ4FLEoAK; zLe(ZT9fd%r^uihlf#8SiOiIz_KfXcUoLo<}h{tY~y27gZQLmp-y=38ZW-Z?)GRt88 za8^%r)}~Myjn2iU;&$A{rf$W}>=kQ@ms6rv_X8oh+|TicVW!o!_K!QYb3*sFJETBF z!$7?45NEP)I(Z9P#OU8*5@u9PB5D6clAkfCabSEI_n}?t#bK4xFHX#xM@(94@Zh_m zXoV9I9W_jGbaB7)f%R5RkCIs0kh|)Ok)`>`KflUbH9vWij2lZF*PG_(c})3Vqg)B5 zyl!z*x6?(EI7yMRiX-m&H-I230EBMXU}m(ypvG?De2z~0eE(z|Bm<{sDICR*`&T*2 z1m;sC=qmbWNsYLCTes9c_?VedFA29u>&XHnFo(G7ogn{FPigj%jk6;r>d}pkM=Lrz zJne_4_ujkXI&1jZ`Q~K)08H<}(fXqt1m*yuT>fbYTknrrz+ti!nG{dJQv$`2T6p}5ybSRo;q;gZB$P-2YrReTJP4TFUFH%aVI|uD27QBp|TNs z7Yk43fK2jxSsn_xdRFGwi!PcAA2yMJgG3dc%CE!y3b}Gt#m6o8s6XC>2N@+PgeP94 zzwLj)C8Zc|wWmog?sCs0KHS{cr(p8YuDP*V^MeY2iAUM?bxQ(Vai`*X=N#8IX2*j$cc^U$VRGr#NLR9+&yn}slUe{j}vo5 z3+O()ITxCrLc`ZrKd#wjcbMY zyI{G6EuMd=Q~*}AItJ|b#!h@Z*kOjA>wc5@CW#TW%+g~lh-VJ_$U1!e(b0zB)uTfi zd}j(8(dnRV%y@4twEgg4+)@~{56uQFme_qVww_Y7Muvr}W5;AD%|5vgXw$!z=!K*l zKjd#W5iIVDIT8eFgO4`!$1Qs3R_;&f=$a?cpK2Ay=_u3#*KjlU;I4Wv+fGx=9^G~Q zd{yyf{6^xZ^w{*UYVLL&HvsIR2u|3*g`5qI$ zl06Kp+v98Z*|4h%Lh#60AYTgtJAo1zak_UaHArPE3`4gz~FEH6OG{EcY zAaglF6vMDyd*r?Xb)y&*!eIy%bd3wQ8@paHTr%X_s_cj~#9wgSieRHw6h(2wV1nAW zH+qK0*j^~1cDupX@*+I!tla;wb1FmYGoqo8s8JAFYQOs=8YL|p^PjbwPvE*;d+y_d z50l)Z5HXCEF3M-`N+_+(BRH5po1HAGNh{93Q0q+VU&Bvq%9%!2KWrW>mzUShnMvwv?#zpqnbF3!14=0Jm;b~&mhFe&)F@pM+>)ii2?Wg1^KtvL)bZ-e7PUpH zb+D>ev@@=Aqd%?6ZE}`OrkWwffWJSWF1|JMyYN)*gHwFzZC*7ICcQjBxz;>!`7$zf zLy!YfzL1a-N8A1R;wR4&y|z*G$q0dPzYb{9#%e^~$iEjs&?a>B=VkU*%h(DB_*Ddh zSqVE#CU-@akWS)133dKp1)1!v4u|0-#?+^asn5mDv1Lv)oI$&Zq zNc{m{7qilHzh*OZGxSH;U4M-s8vmz@->_E8hv+5&S3)Zw5lYLr?{BT9cXKLa@&N5W zga)V5+)tgd&GXNP!@?TA}bsI-i-=CoP1wPb2vi>uq&aa)j3#CmLX&a?J>S< zqQe>6I<0fYhYRT0^PKV44LW;vkRS@mt(iX-_U_>$KswRh(Q9GspQ0<2?T0e*dm-@9 zO7OV5=;YC;>xL~_{&Ve{1h{0_O>s5G3p43salh$&Qw~=|nRDRb@}{JxSZ9$;_y;@v zQmG}_zD6|`Wdwp-N#4O_*`Tm~mda^n@PL{@s_pd2ke6bl#}aWg(0q;xAJ<{l*7CzV z!E!jh7h8sxxU4F!2gMuVKUPgw->!uxgnq!uLP5BYA*!hV)rHHG;jsN0LS(5`{(?&l z4Hci{X^s`E7P_u<|9SK3JBuIP=I9qsNI_{1srFmU$klMgB7D8tSp4GOKG96qV~X0j z2vC0N<%42ID1)E6mnkyr@pm1s9nPH4%yKqH!6TeG9Sen*W^DbJb%znDlO`TluVds? zS2ike&ug49?yr2wea+^2#=*Xv2iby=2`aY+7)aFK`g07_B00zFnYRCVoY?(W7=2*L z8NxUskDX}an%0`;h5^P(c?dMziAFfqI(?r5?BS|tknYa{zCeC|>#(OEeaM1y2#>W4Dbm)J5C39TmYo>fTY-!#XNOx7)w!Mp&HzU7GZdq82 zDPV+c7}O0#ahX$L11q*$WdwO4z~|&`k0^QH4x2)E{aEQx?&IA35(d7bH})evIV7lt z2I(wU5wmMR@0CUwUjE}!OXUFS+q6!zo|nmr^=cG!8kKbWKjZ@J6X~Um@OgosA6@dm zG~K_}oyVErY3nu3iPMvRM_C#?vTN6Z4ds z4~#B+Xw@7*RA_Xbl7~nyDYpFl{*5D42T2en)`9h4{x_2EjmJ3O&CdY^!q&IIz`&Va zs_;^=>MX@3MYHhVbS$1B5LraH52K0UW9SO{TFeKrLx7N8ed;;1&F_PACWY!_OSQAS z<)D7IaM9(T!0sB>xqEriNW^u11&X`bvlgTTQ;Hl+8tLf(am=G5lPtDj8Wrb%MgV?R z&3wz2eLg(MbY0yr7byCShQ0(JvMwyN%YJRletMqGwKo8ot?!Na%|OEzkkO zAK(Z&@+%Z(()JkK@uaue*WaY*Vr{W67os7H#~(tfF=U!5?0Yg4$Rm$p(r$03B4S)?hAjBG zKORgy(SN#9Ks=nkxMg9qC$S3U%}1`G|MKy>Mpp#yQf&(CfOUa@zA*v_xNgg$RGRz` zH4W$7J$&P}Dw%tor*-l5ObX4$sxz6A4jf$*Rm%2>!1rQGXe0lShZRSg>Dc6xDv1SK z7QXO&9(de8#bRt#o|!k+q*MC5u~~XQBeLh>p2|tV6(Y6;h|;4Yq5gL3r6a=Y`a-D> z2Q!e7*U~@sgC1QxIuN10 z6;4~z3O$K^_SdtwuAdi1tAEo_7R7hZw=kZ`vSBYW1n5#K!kCHQ5cpGhDhYL`M7ETi z)%{rfc%hREqW(gA-7TB2IE^Z%vAg{EuHF*z<%cT&HF&%*yI4BEy6Y)Sn}jtk&B^i? z_IZ1-PIkTR$73&7U%(qIS!M$jVWH&@SouY*ZaEJT22z5U$+2|rq8}PQxye`~4H}nF zkh+eu^I=uhobANG-R_R&ALWIO{wkcw{w}#b2a%Tj8*Zw0-?Y;_b=?IXB_nx(IG6@0 zuHIoQQ+y=k?D1RpA#mv$jdxROhSx7hQb%C3*&~SMo3Pdm9VpxQ97wyAUu{AzczAt; z$$4MlG)*b}`}Ur(G5&jfnj$IOQg>#G>fr2H7=Mng`r9QZDK!x;xUo(y&SgJa(0An#6opaG8s_APOHsjxthr-lT>JEv6+Zgjb4X>Q%s zGhWm{PdAl$5m6^`2?_-&Mv>kklnI<#2t$|os{4?pKcNukWBYukYO@?Zq`(pnH;A%R zyj{ImzY%|6dt$Ie>a4!dUNU~tS)z95vE=C_Zp#u4vf9h`!S0G*pw7?}1b81)N_8}Z zzw|DG_(>dSP1Fma>fztgAmE|V{HJqoi2PK-U%I1W1+^((imc>wzhC#An!? zZT;`>ye5O3(2ocAuF{*+^EbwauLTgD9KxctgT z!tNnKbEB)l*I5p0B7{@2IuKUje43vc<8_T}&Hd(o;;sbRW=Jn^!LSne3 zsILVMN>R;D%Gew)%!yg0VA7~lPJ7MtA-?wOMu@m_@I=p%yL?#z4-b=j`oP?G2|$k> zpz#-d#k6^mFkQ?ML6WzFKXNg(E*b%i`r*7N)qx2RiX)O z9BwV>Nm}Tk6p!kJL%^-@W#H}Rnak@abt7~Eu>%erzmxXg!2thhE^@;VcVADA%jxjt zeWw|C=#2%Zlrfg(1tcul0{Td(E)i%cG`+vio7oj@cth_6kdkeH@7%|l>X{S8;?J#m zWmlkMl^*+t?Ky&F`oHs1_NiHH^8WE{6QFa|+uyEedBMx`C+9GyXpYg&C|~%ZNm*es zo%2G~r#3&!LiahA=PodTBi|yr=W;?0AQb3Sf$;{^Q zEn!u(Se|>y@$&KzMFFXtEfiD(7i@bWU5{#w^D^NnY1eRv-?p)_P|)>A-q{;rp0I(` zm7aS=@o{j``~juFn!#7;ANj;^2TW#;n(WJ@IMhi99fRNewhb4vD}+^qZ7!XLSmPfa zGqB1RsNl<{x_`OyJf$5^I_InLva%I9`OXdSV_Th2ZOTq|xLI>=yUOwW!~WYWt);-> z>l>O_s+6bKoNY^v9B?$t4r(PQM3N_ytU&Ume`mYr<+1#-is0Vv*n>x*?|8 zU)$btcj#7@Z04wcY8XZ31AaA(UeC?Y^<@UC1vOLZ(fxHIvFx%nT;dw$ z2Rl6p9z~v4FOE`jVw~;ujT=Vu#zXq9VO3n`Et8t&TWdBB$%JTH0*CJ+)eRG2IoW*Gm!)fhg1^$-9 z+uJ8crh**Bt}-DjVA=%7q7Z^i&=!a2C*9bxeJ{a%%2M|^upp<%YT@RkACvP}A^dtC zVvbnmjOR>Mb1J;Bk;HlYAu1WR5QZKWP{EEYYY_qr|BU0tRXtNOZ{hP(V<9B`x=qmR zHiDBb%wN}%4iVWun4DIp_8TW*&$Qtspejx_$9hCqdqS|zL_<(rM8G9$a7h>ZJ6jw zzuNNzzl1H89P5D|$R9a8d496w;Fv@!70v&g`{>3~G-54@Tavt`!0TkLuK=I7n$l|LVD0;nLs{hYGS5g;d)fh|E>E|U=Zrh!Urpf=Wp@zvX9xb%>P3Y! zHAjLBTugLbBg(P`9SK6CNf~WIcj_NFvF~|FEw#(d&H5eKPId88T+E}TiBkUn#!BAG zWpq!TQEIjKe7A2gX=iz<`@o^)AiM7Z6q62>S=+OK*RzdWXl4y8x)XH2p; z-3r%*dd3DlLN*_eTf;7XH4RHt>D#tuubcUb4ew$=lw*CdaW+w^d$gmyDCG{ri?+OD zM$N5Ay1SszmD?~U1Cet2qzH`6|vFQyA;7yq*FGhdCq zMz=Q)tL4&ku3y|rrNm;TxJ(3r^}+cVuXtyk%n0i<4vKD9ZS!8BR)AcR19 zC>Adv{VeH~U5g`WmLjvjldy589Egl)pG_mSuB%R$jwM+Mku~M-dFtKlp_6|ZPP(D_?i#xRapfFcvRfN4BvXaL8!E0|y&=5sqqYeyq!vR!n`(>d_0RNvu!vi70727VvSViv0t z8C|yN$7kP!>JJVO@ONF{5T_oGbOo776?VD>+HM!lD|YqxFOaO|T9}08(+6R4vY62@ z{kXcIUoGA5n4&ewTI0oR1%>Y%6=xTXB}ay$sZ?p^3L7yUpI_SCoh~c3J6pj$y3&%Y z+R2SM`Mf)?HK(ptLipJMtJ9<+M-~1m80Y0T6Xh0j=Z+_W{`=ih-32#VT$_O;9Q?J_qSI0RaPSBQu}M4FgdMt0U^}g?lyOM+o2kj zx!%ej`Y4Ilk+?fUXf)E!$hprwm?1K^21Q#ueX;<62p}u0&)rEf#C6-VyzwD{&)^pZ_7T%>vT>E`)6V_YL#Tx z(uK7q8DluDztP`vHl@H`Vuh1hB&kRU!PR4+Q|-Hm*S03kvk6Y|Gao;(m(6RcLOMD*t&Hhu1PX}&U+-}yYf)+;r)|L*S zO5;fyP&kncd0{X!Z+pAvXkmwCLL9EH@{P+|)Xvb_-*KhU>X%-!!O`E4iIFC$2B6sA zFI~a_cVA>;?j-@hlf|nkd#iLNK*Xl&kvj2*7T{52tBKa8TrJT>qM$b4C)(QTLvN4N zwDNb`HMEcv-91!{Y1oXVX5T~uC zEaTT`I5T^-nSz`~p+xa=J3bs^M(G)%YCIY?Ne%FP_>^a-!V2tm-Hl{7h4}P0TmGNj zBZG?I>~Y4Y%8++M;DW213Yt2;boowdMHM|Viba+-AJr&>7CJs1X>LfcdNkP5X5yrG z@#E-I990faM7>pur>cBE@E&BP?9$gh3Y_lt@%aq0qaprdZBN8$A0Qfuzdw8~{xvlm zM|As>;+1c^n;iS&5m6Pu7}N3^+29i_yy=mPq@b-N#nnK*;~Z+yHRI_-j=Te=j!pXb z4R4dbiu#`X2)wa@C=piNAh30)bG;jo*VszqkM#2VA8)$zezzp?O z#Z8jD{U~NHe~|dh_dK=!%2O{Fb%UFya~%bB$m$MQ|6eb1(Jnz@%= zR0iznr+EDU4cxGtftRVH+I!gP zzfvT{p3T^|ishUg>9WrApP0<%O3R+`5Qz_CZDp1|dDHup1%G6doA3pPG)fubyd z`_n4=+`*L163)lv=yd3U$l( zcZ0wP$~MNIzl8{VNkv%O2cMG#2e!lMux|G;(D_o1QXh>TvXCF2rTn7_n6p^ZBsHQM zS(~8VU#lZZk07GTaCy@GS4=65dlbyYx;V71lK;xORFU*eZHJ+|_Q!`;=8|m!alozU z?E%V0rlW3X2YPMn;g}j7Ulc zIB`*U@y8=G(V|RP0|uoL+x83RW32&ZgK=tF7r^I%mU*OkP^VQ8CxZLVsK(M{eIc)SP>JNOqqSIHYLIlc)g32I6hJ`KKIn=^{U;tlPQYg0uoVr zIgmAb1KD~y+vW94c+yMkSo8c*ESlKMpci~_NkF@QAa#U{$P7zLC>4>T{9RrC4L`Bu z-uDp;t$k#-wMzhC+E(aXX&=3D&V)VAca`~hvsmW{_f|T{vBFP=s=U?}Y1u;F6T18D zsoY;Oj;X#OG|)#DFvWAPx$@U=1^So1Z?Bwcg}PDM%_&7#h&m|${9(oc^L=PH(XLMb z#rH!>#A(s+C_+-|f^+IeVPo8t5%c!#b(`b6G+Jfp3q+4(k?J9F(M(tNV9iIysQcPf z*|x^wEQ6wS{YK3TDxT*)+A^L7W+i2C=qk{aIX;ea>a68;2&aao4~91?Z()A+`&9x?^#VTRfie z)0jX;y%o70r6dB%yCA6FhPK_9&xukXCu?dTX<${{m9Iw-u&PLBU!Lg7nF(GNIiGGj zN=d2%idX&Yk?&nykCjRwB;R4ykDs>r&&6HdnQ0S*eP*Z(YO1%EkEw~D zgU^-=7+0MBKnv`5@Ze2$io0@s))%KzZnKa7R#B5KwVR2(dR*_UxR>hzhWe>A4gjqBkDUd!N9dv&j4(#OxZrYYA{ z;q_)?2dcyBItl=RwYps6`vYPe2AvU&($y|bEVRa+ixirH6g|;1Vg6H5d{^C%*yW}P zLVLqoXl>faw$S-!qg}dd*UqP0xCyaI8_PDfLT>rB3Zvlf#chvU&HM!8qmd^LpOb=v zI{FchN^L}CAux&EJYSwsn{6%g<`(mkT{yK-MTR8ROlrR6Y-Ipv%ohV84B774g3CHL zO+uuhyJ_W|x4BCk8)c{pYH8YS=A*yplsyq7`XPxN29P zPXW2}s|P$6?Mls4VmnR~C?x;T0`a&fjzv&MdwM}v<~Yo$s1Zedj5W^F^(k~*$OH%z ztv1wauRavJa4_+382)uC&t$njBDLAuUi5H%FtFA8Kh>NCLsRd=hDj*_kq~KVP;zwF zB&0!*?(Xi8Mmm(vjhJ*xOLvWK5ClfU=n4Gyd%wl|9nN{4bME`Tt~w!Pwmw*Nv70y) ztMsk{))En72Wso_`Xwy?LJ$tcEB;)elZY9$uH1JjWZdFR{pplaRcHiKM73PwET}sr zs10?>mBu%hX%_as-dMg=+%TmfpZj{qN_sJD5LCWBBzwSC!Y+k2l}I~aZM36!roJ55O3qj5yef5N!(nLbZHtwlzEBsHix&qG{$|qZg~?GR3~CCp(FTkC4}p7 zS68}rqE4U3{$!^arFBcS5l+EjXDx@}>6WwAOKd$^2IA(~0)w#fyQ=C^bGqPaRkiS1 zzh*xCjQ5CFdil1h+U0?Yx+c15p`#N1lJYI_)ptj!XEfNWypH?{IP1M{tREWf1e>Ke zN#D5j#}NGogKR)*4>*n5EVI6K~bDOvo{0Kj;^AzW?TRI)R%2392g z79W4b`r>8}?vdmyaXqI6Yty-M8~e)S$ai|gMUB(t z(-I&sksVsX1FN(`P$qWas?9a~Jx}0)y#bb#9_5^j_rJR55BWUtAKyAzI(H#90wknG zZf?0WiZPJSSc3gR3f~4jXjxUtD+i@I5G|@BkT@f#adACW-!93t=cYV4Gj|y zT5mOWC*B>mq!P5QKYsp5W<6)}UmjUy(Cm)kcIx;@V&hu|^tk0?p^je%isSt(J1PAh z+)<#zcb)Ienl}+yB_gnsE-mjXcs%KAjWDVb<-;Tetmtv zY{X`!7^qz+_0`jW>mies`7vmcDtHRL?oF0q$Hd=1n%Gt{6T-h@l}OtsQYgKB5H@~u zb%^pmFIlJ=Z;+!k{MiHK=*x<7z0-*vm*RrTn^_(#2J?s!R{8TE%Oh>?qo4pz%oDkf zPo0LHQV23EW9RmJ?C1GFJN)3O*Y`!}CCs^30u_zVJUrXHNMy<8n$>6X3X662FeJ8p z_!-n9{#x_w)?uvGBRpudgO^g9;Q|*&uZk>KF>);9a#%SkjVN&siAZ0q>@&8;zBc)I zOn-CBVqE0B-aaC8TLd8=UU1&*65r?P>HaDLdbmE)T5t1e4SVQ9oPq+*Ix{BJNh(odZhOX1>SK}O9tl>(1;DQAy-!j z$F}$8kHY>}2WCX;d%qeK$qf5U!rMliMXfcq>zS&COFmcd`*Yi565_T#xySH*7AY^0 zrol{YP4+3mljJ~d)Kjp+a`A@wN$yH4t?mAx%BsaLIpp={clyVk^~)<@VblfOIwvJ_ z2fo2(0yQ~!dh!8*K;h7WZJ+ZdQ5T7@f3iMA!J z9=q7Q_&zW{HVLe;oi9stOzbt&)KHyuYCdHoqc{womE6@NJ2i*B2ZPekH3}D0@8wryoy3cK31|{$x>{9%`)>S;)Vmp@j*84MLV4$#fA@#uYEF z)3Y8eHUhO^u$p=nvf^7U!>|-CvhT0tP2^6@9eQ%~20BM91TV1j(EO(hs#c{TSQQP) zQpv0wxRSFSFVW_E4}8nshoHq(Lyad#qa!~ ze+OMk`n@vFEpJN2R~->NvJbVqwhgKD$}V1!@qTjsSKToYUmiH^YrKqLWUV6NQ@Vc+Z2v#aRq8pYg5L*xWX|~ zY3L)oi0$-+AA{BmS%6bt2*TR=@v0&o7<9*J@wS@&_$dooT8DaN$UCfJS(|Xeuia^V1?PV^7N9n z-1nM&a^dA3ZM0h%cOTvQG}$};4?lC{8(NH(%f>)SaA5*`ydC55RED&ROo^bj&qf8B zdZCX#*{+<%9m53Ht%(poS?x#|SXM?>h4LELDM3=+<)dRgN#f#L`@Lb7t7uN+9q;`{ zTsRGI8K>o)bic4=!Wko$|Ia+rALa+JF#Ep`XIGyt`+MGREHmbJ4LvJ;rU~_elAsnD zn(NKEIS_@MZ%6BZJ}ff<1|y_8mk;MFs9V`jIgCy=kM?at2-=R;D_d0|8Ui<7Mo4TV zThyhx=}C46WM_RvL{WZ9)IPhEgD2aP0$G5>E(WVC&m#&Sv2Y#DI>C{niY;aVcdoW% zlhnsLZzn3NQuu^(yQs(AoOxVwXWDhL^u5o1>0VyAU%I;Q%RM^f-AQIV0e#lo!LqFH&JpZ2(Q^Jr63&FfIlSJ@Ly%>e}kA`Q`tD zP6@aTP;l(13cYji3lvlfk)&ne~up;z!wC<2G{Ifkl)zpxEVO{Xp@zvSLD;=NG0c z((b|35fg$g8_IoA_#gx4Rv`A!r>K@Ey{vjGh{aH1qwR(H(LW<~ho_8#zJ>9h?-Z5i zYYF=!X!nsbrdHgB^}uTKpf#kQz}jbMB#Jx+`%=7QN2S+mnP---A$XgHgJxpE!}fVn z%TcsA8h163NLm*tCi3$-xSvdfJYeRME&l0%VQ9(Zn5@3g#j){4LN$e;^EihvPx5(9 z_fv5s-Wzu_M=2>3e%tBaDShq$6Ivu3AEc*H{!cxxTQ-_N&ypCq${#CEg4?ppY2pi< zq2C4!8YfTS$`cXzGwP9|CpMDp)SXtWmp8P%aXTyC4$@DT1lRce2ZT4Hzr`c?ukEAu}?k%5~)8v(gLD&tGysO+-mi8q6ruL z6mDkCZ9pO6`havXZU55z*C<-$vV}7Z6ymif3(-?4iGlz;<}{iFXyBv}yLPo)>W>nD!XL>q-E@~KvQD(1@%LyUxr9N4_IEXI*5op-T#E+T0qLMRe_iC~?<~46Tn&=1! z(BfX<@duPss&I}xcAiIy!^Z(vGnqV%7K^IUZ~a+MU#rB4Nip;a*8W@!e;@tp-g!+h z#Bs|XJOw(tZkdY@+F7*LNny8w%!hF$EZe&#uo5NfaBx8LJl80jZ^ifuD1#X^uXp!r zTyx^UF<9_OZXL|}Nn_Ol{dtR9ct^!}6@Hx!>r?%hS*z8N&f#)HnJhGJnMr}GUWM}; zE-l&Nb74grhd~jszTWuHNqS_E}y6qtCDnY-+7Wg$VM|zJ$ zm1V~FZQn~R+@L{_;AJTKnnwvu+t3j!b(Oa}vaVDM0rV=E%ryL7Q05&=hpPSszlYti zXzcW$?@xqHW4&lp`{6e;Ss%sQ!kvcAtgpFommVXp#@RpBm9Qo&YB41`yuYT{$>mHGYRoAopk!@8yIF*7q|c{o^LZGSwtR@?kH>#rE&d@1DnZZr>7PFO;}1zL_SkT=*DbSH+0~0mX!~nZqYkDAGqb za>btJCZh!AJ4DPR4@n;VUs8q`o{v7YXtVDW*>;ecfY>DZLuur&XK~p+kh55=J8Vk` zjfwH6(N`8vr;YtmM$30&&2Ovm0_FO7v}>z+ug2Cv;zeq_cidRKUHt8r7pnu$`Nf`o z{Vw=;3?`i!f(6Q?TbLaSH5N$ZU5R%tJuC+T>{ zoy~X8qTk@mktgQG4vQs3DmXgmGlO{E*e391Sj$tJH9e~KlU0b97r;npEDb;#GMh9G z`a}e{{BVX>9xJcx<>q*5mKEc<2GY~{ zvo!-;P!~WBOCB7_38mlydOYpRWu(hvwQ4=RNMD`VqfLju z3S{sLRHo43Lj8HOPU0d0E?f~>Rk9WyQOnwWU?{FlQ%a$O6>Zrc_#GpRk#y$p@fOYd z%U7%I-@Q_TVB`JqjG-em2=rH%hCY$)c>Bj^!rBg_Yj9Lxl1sVKE)B1VX)G1E&t_l7-UOBDS z87ZE6HJWbAJlI`Ya!OHiyV4JFkiqx#==Clsd0G04c}pgF%Js zO%L*oSs)J=bu!VtDA|gLe{!w?Cb~^NBD+tZG)SL{7-0(tFsUcDd4)6 z|C1DHzrBV6s4qDgU%>1BlNL^F#X^NIjz`&*|6~)NOA}z0-9j@CiS@O+p3Q*MFF@bh zfBkP~Weub)!gsSd_!3BNq}^^5znsTW5|X?*+%07di%nyJ{q6~GbemF`jKOA(lluo~Kw|3)o%Ug2=@*H%>@2ZdE z%b!4t`l8u*MMgg{vLT~fAar91uaR*tQ?o0;&hm~KuoHw|gG1fhT=7PYGIGv0jZZ|V)RFd@8mZD44~?kspa zC|67dolbd1=l>6A)hF>vM+2!%?_~lyOp^xK%#~tFkqbE8^=9Jm)yaHO`R9KD>E5R+ z1Iu%9KR%Q~X3J(+3WAktlE|fl9&SpSomT5D;B`YZJ0JJy*a8NXTl_$^{Zeh%vb<0$nGwqN z7w66chmBfcbH@$Yl@e54U;!wuAeeO#pYF#y|vcnz*1rQ>C^Bx=;>lU^IJ1%u! zD^g?b8jL+f+Rq3OW)gtmXvJYXR3@OzhU&jp1{lg|uX4jzq?a}gbLp7C6%3ny7?=i9 zcKMkOQ6>`Zqkjzilb5b5YbEX3zI$bS&bladN0T+HyJ|v?%l?5rcQRj6{+UK{P%$Zv zjH|e2P9-{QbZ;WZLsK8dTO!<_lWKnH4KE|D<{yn-3|0R0oqb@IAzQ#n3H|%>w+r^+ zugh&gl%jsEDW5g>)gFaz+{Iilu>Nq){LCcg6F+>Fkg%lc65(Qb$z8o;?_eJ$$l~Ik zqU;{z;tP+Twgg0f?(X8c^2d^r`AE6-*3fcdp+|{w`L`XFPzte^+lMZe>fSfmc8V;* zu<{^4?yQF!Kf6Qyu`sScb3ZdI$6@^) z7yfEgK~S?^l+^2M{$%9cwD8^bjB|XkJO&Nu&MzG}Gg_ zL+tIF$x@@MzjxZiB&8g`E79L^7&WIqsvuo)sMn|KIr7D(VlM+#bS-*INVk3iSx_va zHjPf4e;Sn$h$EezbFH6jC@uymudW3*r`P=8w(uVuSDUfVtb@75S-EU@uO(?H2a683 zGPN4j^Tr?=Sgk=U*w)E!Y-&_{@f55`V1ukVrel~rmJJJxlmMuuQ}cVHTlC%yM~=*_ zfd%Wz;TOczwGhhNFY0Xwm%v2NRMF)hu@y_ILCKAI| zs9+)>Qnk<<M6(hRjTPYlRkaD`Awb ze*tQmd^|12NkJUgc*#zDF73fBDQ+IjF9D4<;%NxxZ~s%x&zx>O8*goB^m&%RHEf6? zW*kz>{5?58Lz|$pdnM6{*l6dopJNp`GWNUvEMW5Q@$s#?)+NPR?QQwCn8%5YTD%0NxRRCl`oXurU4Y5qf&>O@y*f#TVcFU`1U zGI8!E_Wq=X^}0JyA;)5B`e`Z7QwCCk=cWPij}-Q1d6J% z_7alRb(AVEp=jyZ_bwzFx6=*=l>6sRRRwjvsOvGe7!a|l|5|La)Ab{yagC4yJE-C8 zqd3+hq%hI-!<%J{b#*Ovtz=bulH_)_s5Bg{ms+w$r1c|+P|s>YP7KP&SMOY@k^gQ>jq#C!%v{(#6yB3P3fdBT z6&jJUxJd+lx9q6mKym>PB#neGqi41|Y5Toz52~bfQppqcLH+bg`++njW|B%Ha@jYG zZ1F*s!)suG<}&hvaZ}s<1RKQCptHkml`NP1TItvg?f6oW%KXlWxMknGMKQO03I5xV zK>jkaVc4lN8ro)TIE8jzny$%v)&bn{U(GF({VwDG8G>~u{t@VCE-yqce4rXF@Q(Ya zkUJS0E6_H$=Idm_85`XMZB2L$?hvY5yt=OuHRT}&I9i{fgZ3%v>km5^-+RPr3=e6|DYx?}uuf&f-q3PK z#sEx`63C|DpFBOEn!cV6FHLQ1Xn*!H4aG<2AV1?#cwXN=()1j+N$>s}RbxYK)wH02 z`wN%p^nHj;^9PT*j=DBK)Mbqd@5o@KwqhO39Sy$+xx$Gt7v{JAjI{Ou#}aQHwLcgY z8Q&{`k~R@EM)lr2qHXV-5CujfyL{(R`y4iMOCSSP9D5{pus>(!+|QD^OmBz|J>+ZE zDN9A)ufa)X!~YYgKC+nWZQ?^VP=S6se9R)_XnhE2kp?*l2PMlq`Q79JX}e|=anmE-{gAY^CA4>W zS4{aNxzh_CP3f3Kk(E|xp;hs3C0&&mv|~G7%#}#J?UA4B`GHk5Qktj7aTb=4sodC* zMo#azhoPPP8ahh^`5hp`wC&+K8KWCZy=&GcY#k;XBM`g4A;&I52i^g^^F2%9Ztq(n zm5BDp#!+M=zCx4nEL_~ibky^ns$uR-`X` zLg4PZfXcp%uBBt2ZlnkWqd38@+HVXlwz|tl!)S?n?|9-#Nr;iytCRxEY_j^d-QCE- zMt7)%RHZ`31BI4)tB&;%*UP(LbvHuHNbnF1Voy^Is7^;Zm%4p_j&m(+EmS4VNk{UV z=A%_4as2|qh6JvJj`ho}++1SG-72LTTJ4YOsv7x>R7`yZN45D-XT zKR%GN8@?|P5X2CYqCzU}tLK@p-l{>^!?+uzU%&qPL5+YIPFhJ?2}SzL*=-3VF7!uS z7*GHsWFYBA6PoZts&cc9>;0LB(^a2tc__Qt;oswnyV3Q(-OWorpV`QJMB>;V-=F-b zqdE{sV}In3eGP*FfFHgCzl4cG5r7}Qf_kC9R< z9q;it&3|e*bwrTeuv65buXO}ZSdpboZIAcWd^SL#?8(FpPA-kj!eV7;3se?lK0rv6 z)+4~U{RKRy(OtDi$MvFx0hj&V-9Dg4wWluPr-*{{WMPW|J%QjUE_sj1|6Vu0Cv$~T z@TGgB=%u>5P?Ouje00p^cMK8A!z>PJt^G$ErNUNK>jV6-f|&M5R)6ItZ*oLrq~dhn z*zlmecb$4Qr3xzGm%={J49HVPh0VU|Z@^R*Clqb&&80w#26PQ>(;kSpQe@s2UYIJV zOzgtRpA}Gv^6m00{_#f#zi#gv{cr*0Q!ukXIQ{5DUo!UOF1pwjCqpV(U^gIfRcqhit@%pC-r|ZFsoJi{pHG0HgLJRdSls6Yl7%AKTTiv#5}fRm2LDU;@v(* zQxKuJxhti0Cw&cI-CPq!{|Dt&*k|DWaoso;A%u zUb|;2FS z$7?;UdUCNFM>4xZa8|NtvRtlySGvrWS16ob#Zi+xZY~ExzbgbsA2p)kbzuvfeipJ5 zz&p3d6&rpj^_m-GCVyz!xlMuq`SoK6_Fxw14vE ztxF3XH+EjL5o57uk|(KLd}B13!p_t9`lgQZ`xHxFikrETFdr&`Bz$ni>G;b@>lu!V zZbP=`i*u-FHLv7`AD{$;)_Uy*b~WsJ!({S0MgQF&?T=|yD3uBivY)AeIjeJ` zhTzTr$7>u>KjW{dQluq9qjSMW^Y5R;tz2N!yydQEup%d{D4E-4qgNIbfteigo)e=V z4=bj6OoDR`1$#8BkjERDZ+kz5_q2&bsmg*UoHLE;d*ln|^7h_r|5b`gtJy9q<0n<` zYMvZcsoJ(f{8|MAu9;z%Q=FLRd^KpU!}vG`(nBPOT}#z8*CIA8@)pfhr~RU7PdWA; zR?BHXYU}eB>3+OkL!T*wQ=M2EI=Ys^@QWkd~}2 ztR~|(;ST;W8D0MKG3KjItwLscUm$3RCwW$n`Gf8nX{xWp1_j%7k5)tWD7SZ(JJgtsWF@c1WSQ-Y zii^+2#RpJ;1{85Cy4A*f)<(w-d)6P;Z+-aa@o#P*ueCCb)?Y!U#50M~*i_p8@Q3yo z)o+~eYWG~j!=_V-jE+%Hta>Ev%#K0Z9`%dZ_<5|_{#7}!wS{)?H{<#QP0*v|7tBuxul=Kx=tof+khZF0@y-|I;s#POPCq0Uv zif^fYxKv)iiq76bLyC7NiY%Moecx+Xa=Xn6VKY3^mAf~5Sn_wlPFQ;R{LYs_hYt{DkSBm(hPXZ|&WEG46T3&~mI;b$OP^E_oE1JN$q56RO0na7nj;CGYb?NOV zHU%1p3)dZo>t_8?w0y=C!DK3H{K8V{ByjoxW`>odv~U(vNW)3QEE!gBUc`f-E43ql z#bi>FVbu!gGr~357@imJ)`#E3531SOE`~zvDZDIW74Lw&-%wrZ^O?7~_I3T_Nyj&# zR!CxOQQ@3W&*8631S{h|Te9)5772x-{c-M40O}!jDmA~2{Fn_X*ZdLnfq!D#Vevlp zG#W+X>NJ+T7!Sh@V~+XP3oa|GiWj|r6kig)p`f(PFm<4FfHym=y=OI7FJvnYu;73* z)vmFcq$E5oX5RQbMVGiGHuLbpBqCpH+?Tmp>`A7 zHaSF;mh|qRf)Li{3oXV$)xq~2sO_?K(^V`>Zd*(rerHJbGoC>HQ}(EnyOh35k=M;F z#XZRSdStga+xH-VGGlNhwCt)OD?v47*b-D zG0bVjmIC%3&CSAcBHNug1`$RnwHS&9D9CIBo2Y>FV3Re=FTjxeIQ#j{n-o4sVlHpb zl2;--JAZ3zqeQD7wXmk+e(o(U z%b*8o@7P2NIgiQsD@&(J1zTeI%x`|8ra#q(_MO)9bTIMV0^9NdJMvU)T%ntu(gcIC z44sze7_{#s-AnzxojVQ3CY^nF!- zKdl)~AWlIIxQa1Dxv~oskHU*64Wc>TSOr)vO*w6F6$LGkDmP^eIaSY1Z-qHKH$ zEeP9O>~D))&AP*W82ilHZP;m7A~=eez-RaNAfHx@aZznsJmYE`_jtX2^=VIHy;V9H zXI%B!M?>`$BROquT+Y)l+Vv(^lQQ4@bu&MK%!^}E$tetW;>77WM^hdeAkwUh4dNnq z{>NKTHMW3LBp~z5Ro$Z1!(g|=S+W%@jlVBFx?Q_^k)xvuxjA*iR}y2Gt75a*KL)_z zb4iM&5pbcTD=J^dmtVmifSh1iz*AgpSWL=`Fy$j{`laoiZTEQ75NxlsLKDR>xjJ77 z%wWVcTuKRC;JAd`l`Xa{uf#j$w63W~2=CBLWaRKK;NCuwxjdla)YozcWK`+Bhe%;C zR`qe%tZGyWt*hD2_xew5PpX5>B@)5GSfsmLW_14E=fz|7RBu?lLP_nZ*#wcF)SH7W zP$N9HPWH)xoi}_@$No=3T|U)#)47y04SPy8GfxIn4LPk}Ym-~5MkK#nuo76R%ogp@ z^7JftRKbG-JX5VFZ1km-QeHXl^$wTxzX#)HZhpwmllxk97{Y-3boQ~0m_vM|T8 zrNMB!Vd%^TaZQLmSpR6;67Y5h$xU*I7|BYfZC%Y4O3&T-+0Fc|-`PJYf=yI*gsn5A zuCXe_FF}~{Eo~9E(3!>C?m5dCUwU77s?0OL4ijvjNJPoBE4E?QtF~Myo5>T4Fh8o& zZScA$T&3LV;crd1tH*l&_ zV<0pZO9pQ;@~2mb+?LRH9sM4DB~!zH>aTJ@nGF_!EHWM&)27JlD}C9Z>r*BF@MU(r zCQm*l$lDJn+!gRsrP!689x0hYj`rnl%!O+%Bo5wbRVQaprgu*Fo~!>?&QXZ|UG2>) zfl#sWC?{w$Q`>pBo082i#x8u_-=Lif^@2PHdhTUI{Je5@;?hSW^Mzi>8%h8ryx{ox z{JHXW34LQqmH$$Te6vE-?Q%VLz*kg4AlDxPiO>D&4}(reNslGtWD0XUp6^PWo>zO? zE@7wqqy&Awq`d>*>)BTr|J@0Zu}|Odd+#}2PT1fnE0Km>uQpM)e8=bMj`1(QSmsc8 zJS*C>&8X9-4MP)P=YJQRM){}hrI)i82^9KGq#m?6Hu_KKM$bW5!q3R*a7^rIDuW`z zkxAzER(6J&Aj8~q5iymbKr5DHw+(f&&3vP&Gx!(f?S1~0hA!HMCEih?#vdNLnT6q4 z3|vgHoiE`SNYs7bz4@fRRQ#cA%PLWN3&RxeLKLC!;LTI?BD!(xUY5eXdY9aUbbbuL zTe|+cX{I4rRg10rduC{V%n;A-+?@|Nw)^LPWC3={@X)5I{#39Zh|37jR(CXRr$WBRE$NUmCp?^)t9)MGbuBE> zJv))XmyCLNjt$)kAh(@UA({A zi-+?Mmk#Y5piq|`Nf3JQZfNi3z^1G!l5I5qG8m!F2i{uE}zXC!Ky5Wqw zavFcv3cy_-?H1*;>K;HknW2&KL6pp@i0<}ag#66#8it?J0USz6>UI6LZI%0wPxj&)Z#2$M zK71vY0=_<@KD5I97N6-bI+QX#x}44GVDx`OQpmkoDwIxOHIoY|Jw(iI*f)5xKX6ak z{=OKELLgem%ePKodWHYVhAf4~JUChdAcytiFeMr)^WnsKg3{>DQ?|wQpvW)5(cqb9 z@V4VOt*OQm(1x?2t3F=58dJvo)nl0E*WhBo%8+ukj1j7uOoH{ z5xL=hV|2cyHA=+G{u{ad95BOX<0lxdRceJoin{I|)~oU1y7P-Iq^^GsQ*+|w+K$!0}j7;i;tk1S5>w%uEguotB_GkW8W^u#RA5` zFRUDRYQMLaPvNI*xNJ))g%!o`umCxjOvR$zp0>=P0aSu>FT1WA{-EIC*}xo1 zYAk^J8v+Mu*4)p3mkE1?zg(x?u6MIPgYdg>lS*=0^LPG54+RgYb)+PGDMC;qlMZ&r z;CH>;wDH@u%uar*;dkpd>Igaazd3>>(3s&TnZfviC1uz3X!fH5FiS?&Aj zv6zokmNZn3a-E7MA_`*ObFaVLm_xO71k}&qdmZ0|G#ZLl8)b^D)7rgZ)gvhfa=%yF zWq&yxcn4v@UUbODAcv-UpU?L{vhiD{#W#~+rYjDw3&+HEgmUnfT3t>#FsYRWcAg{k zs{RR_?bc$q72b5@1`e(Ayq#<}#PFA85rfzWc;$np90Q`!P3`6pS1%$^?a{6+=rRqf z6LWF|k@ygbFklIs?ygFssw=q`56kPsDB>JLUHz*;So%??OINga-nye#$Fv~t;2((^4DD&T*AiTK^B9=JfA z4C?&~;-YnSADMTs1Rg!ZuoLVy+0PhaplxUG<``Wx3%5e-YJ!?+G!Kl(oQj8e_$%*m z#l*!eP6P9oqwr6Uv;CJA*!U9y>wNKf`X3Zw&Y0ohbJXwI3HI@D7YMlU+7mAOY5J%8 zSq3Mva<%t}Hgbkte7o`c2BQvJqVrESE$N??-r0}1%a1-UqOAWzZ=NqZk;?>7A^@^c zXL8Ay2`EFRm^q~Pq>|IEcn~pYWcc~JZZ)_Gi;8nnqE*o}Tl2`W7A&IE7e4E~8soD# zr+k@iy=CgFaoi2>P0`oZK*Fhp$hil~K@Chnv{oT?w1y(<9{;#D6egyCTeKC33-J+Z zT#L$)Zwr)TcwY=CnHfEofK!78R{mKUa&G(YViu1NiI>=6hCGqx2D@4 zhee#}m*C&8*67+I`aun>g@Zmk>^U*#_CRL~~&< z%0@;l!Oj zGg8w@;gmW((xD0*fHgUL(x?Zk#V;x^W<2gjot6MS5-(_hpCZ4fIWQ4#YJ@2BnlYXx z_VO(oa!u8T+MNFRi%r$Du~C+bE@m|aJNSv)+kl?Dq0DYV|6eLa4Euh(!=v;BDfyMfws~hyhOHW?uGq971G4dn1SkTh(jHsBP;b(r z_RW1Q)k>{Ix_}d|h@Kj%r|VGisUve$`_?@QpLGxXgDL%a20~MaLGtstC`#FMIfCtj zuk{8fPln5+E_#h2b{Tg7Q2**<^GOj5EUe;6or#SOW+gePlUmh;xIG_5Sie0(x;J%@86w#EfBZq zRi8by;{_+Na&s94V6)c5y376kBtDzq;{YFfC$y`P3e^nHCwSdj`k-y^1l&?>Fju5e zF8Z8EqZ%HLNh{9S{la20owaeXKijNTBwO4BGjGWgS(Hs|L@TQEF>1sJg}~8l@4u22 z*Iyzl2Q$nET$p~{d9-PG!kvzhu|IP-r|c28pg2^qE79RcX0oGZVM`B};t~2pCQ_XH zEsr_`bHN*&4hCS-Dx3eH;zRKe-YWc)5{(N0`y^3aEO$rZR)f-T*Xs---xQO`dM?cI zXj(7O1F&IFR2FVJY6UTk1R9f3FJlc=tJzkTOd`5~TsjHZWU~f(xZZQVJ5g=(xS@D_ zpsFe}41j@yi>t0?+~{Gc$__a$|}HNg`E-mwpZ3x6`BeO82LKJ z;A9qrq6U2N?gP~gStk6Bq_bIWz$JoN@+P$~L_D^sEfdvqN>ZLaH@(=lK{lmj@Oir3 zKfJKj0Q}$_Ru8joa%Ku+)(xJRFI!mJ@3hN?O4P={#FUkMML@hNoC+LP4l6@0oqx_& z$cL=YK9NGPC+seqT1w@zh~sl^xc_%9ukA2~8}RR_RYlPa`AdwJ!)l)m=L2Z5GQHmj zeT}CJuRZ)UOW`&xEuBx9&iR%T#>$$R4-E@-$Y6+FS%T9_q9uA48bTz`IwXOI$J`;J zoJ41=dZ?nn`IuEB(;svlP}n=@j7X=J8HH>1MW37nD#xf3%A)7j7Bzr$!WE%ZjTXJ~ z_|xfVJS7J1>+in&ECr2ybi}C0qU}&~#Lp2FTiZX{?80*V2t#JWyk^)goiV0S2#JCC9L>8@AK!K?I z1+F$-xiM>~`Mv4YmR25ghR0lXu{vnUoi_@94~CELXk7M|anB7~KI`e}c|%n2p&O(z z?q!qaa+(6|oXRf87?t4BxamcJ&&|1bEkn;Y0aMDFBO) z3Qcz09HvR143o_tf>>K`B;J6R+xt{8s2z#N3@6UG-p(^&&3tIlQQ} zs1|FA1<2ENR6Yf~HoVVOYyaX}WpugO8RdWlF$lx>4r9{}Y#;u49_gSSz$6VhoI!>~ z7#AIGy1qnZgSUOvS+?Ew6ED}pl30$#-?rjh@+JW}`|v(ULd^YnuG3&ptHm{l#cXsJ zm^PVoggJQr5*735CTZfx=dYn9=}^0#2Zo#$Z-$w;QN<~Yyo=J_0}R_7qH|VxAv$Y@ zH*iQ=hj_VW3l$|GKl{%}le=drPtHF*6c%x}qTc~(PflV|?GYRzB~tNIL#ldy(J3{> z?ILEF<@*-&tqv3jr(}{w5MNng(Iz7mD$t>_d)fM8ZGD|zY%yRTpMm8;5d#39>Vw~n zXNEg1p|#F0+2uiH+Ex$mG2w$8?^MKle-=p)A|Sj-TCqR@1Wi zR%p9JoK+9T`}qmpebI)LkCj#j1aEanFed`reffn7%h?+oDIv4+C1UU*?$)b=(%_~k zFGN$(%z|#;899CpGkaGP*>vGZk&uw6w2pbzn$pZXgc;O%}7|)NdFW#$C12z5lsl=xIT~(qg+o_zQ;gke5*cu;BPBpAt_|N%cty~nOn1|*a z-a59dHsU1ZkQ8!mGJ5+V$93;Z76$HAs{SRbG>Yruor2LB{ni3F;%fLCZ!8@PrP)1%^sX4SmkQ$_%Usv2SKy25F7Oy$Xr~SF=eR1rp5nHP~&krXZcm z{8;~l+~p^I%4f@Jjv$vZ0oF#`(!wv#lPR+4)gqb_xywkrk*&I&ewyU27@{01>QO0B zjhZ^CpVzH*1X?ALOW2kZbE`cC2bID)#{`n0vrUnTwI&MSn*zjyoRK;ve| z-Sota6z&muzWkxdn8Qp2l6!$m#ka3^n%IGsSJXF(WDL0=-lYvo$`(P195T<7K0zWB z;{MgrCll0m@o917Z@55*_OBTQmZ!x;BeseWYaI)Xy|u4;N`Y;m!#~ISrp9wsYE8*b z4eI!z+og1UqYRD>WI{gPB_&Mq9hF|&H-pA|eYR!n8_;4tl(dmB8~F&mX_7UU{8Ll8 zzsFroJ8IO*a|#jmkc~k$7u4g!ItZT=*<2o_T*56|{Y6rxSyetHNp9vZ(O)YVX?UPR z@HrZ3fZP~T9t|Z*S?tVuc$jaYfOSr${jp)rTnn?9gqQ=-ygVhHB#m!Fqtw;C1g*bN z;w6xN$=&p?KQea9edShK{k$1CFwQ4dMZQP9F{shUr}i~o2j1~nP6ry-0A5yh(>>x! z^sv)^z7(~xnFoS+x0LIhVF2K2W?orr?3We`b?V?5?$Tv`;jv|Pw#N)X`iYcT zz2;^F%IN%7)}rPs+2oiL_8bU0mv6u%4d16K3vL<={JCmGDW6yuOJ5`RtV=plr4Cmdw zT~OCQ2r$H%E;UPb#HN#j=G0NCC^j%E(>I)ZXdxPi+#Xw*njcM|hezcSp|cn{q}|m6 zm(s(6r<(khXOEezun*`}z=76c?wnSw^B*RCR~F*YsH`%V!svJn503A>Mw0z~{i93M zF@$`cqW5plF>hVoLB1PJQL8SO)9m8$D8X8VTj;9ak1xh?S)A9pRrZn5?Nva=6LFb= zt2l0XDCVdb+X&zugHV)u&rM%U*}RIFg^Ep*A&tW*(mZ+?NBa-&;3QpwqXo`8Fn*xY zeE|n+gSad=BeTD~4S*oG5D^bU1EuF_1=Ir5YZUvORV;vp*bNw6n)iBikh_-uac~n1 z3&=CWnhOhC;@!B$hmG3+?KhRlg+#6|d4oz$rz3f4!?V`1?kgAh-D` zU*Ixi&Ltb64INGL9-3^Fk}DiaIDhmj*5F^Hu)J~9e)Ho`E~L5KNQujIgyQpMdweM0 zG;t8?dgG%p zthcxonWS!GZDEzx5q||qB>JF^vCjlG+uk2QKKIbZjl5D6irZ>6;2Wzl6&A>VvZc-W zGWtJLMd$p7WjJin^hr%m$VyN`+C;r-!5@q8rddlUBcoH_lp9YTaRgG(r~!90pYNqI zO)g%GbD&fGf*+swqOB*QvJ1*ir6%Uscv6mDoZbwiF+CT%CkZyEmeTM%6KgVC!YenJ zOgZ^xAwZ|!o0N@EOP8tH=Ft>8e8??XgaAt)xqEW>#=G`sP~y_qkl=6viyb)gMg5D{ z_$(Bj$v_PJ!siCc;V68Thi~C0FV3QIbzoNA#oE^+n?fTocut^9>v|q*5?RNUTTS7+ zKwa(=YGgi1{EJ0%k;8RGZpn9m-Q+yarvya+W}_$u?C)qf7!(uTr<^z&BK`x$K`dGQ z&1K4eV92G^79P^zz3<#!MI?lP-#%vYa*Is2n1c&oXT!0}WmrcCeVnggly*#{j#7nV zsl^D`M)WGZY3i_L`U5*R$5U2^D>s|mTef<)xba3MedvhQ+p-qbng@uaiq^j?Lh!JG z5MR?|m_0>u$iSo)lA=IU`GRoi4()Nvq)6Lq6^m6(hkjd}-u>TNl!s?%c+$)fxEG() zo|mi6 z(i?BoK^rbfOo7*-9SB-y=les5lUJDOs#=;3<#p^9hGkULo}GPIf5X6#yCr%Z`p;G{ zkorw2k=@zuOA{PbLBZ-8%#%9Fczp2&OM7p(`|=G&alyHkTnIShmBy5aR?{nqd>>AEMZJh}ILlR+F`JD zXYc9x_50H3fQDfJoBbZSt^0ZX2?jXR&*&%7vs--nb*Qf)Kf6B3lwJt`9Hli`D5*4NO^1|5E^p=k)dkiCSQp zb?4ls^|A3-T3|6cREzzf@lm3nM8be33s)=zK?`#YUATJLam|k!+v3`Jcx{Hncnr!@ z7>OFDrEV$#Xu$;c=BCVr1?X1`t?xq zZsZY_pV4-3w|fBLcCai40B3TV$M2exdpY`St>+GVaP|u*G%k&Wu;KdarBk0|P<*xL zsgRnwSEnufbB9MG!-=(8W|Kge4OD}_c=Ds3%Kqei#Ra9$kPI&cR4uLsYxIuE&ML8S zk6dZYh1r7T=K!O_9vFza5)atAlM^O6@-7i^(T>e6US{ocdorERm#C zdOnx!8ggauP=vfNj7R<9gjL&W`Bg8Dd{61x?&~^7z)!WNBypLFeUdHp;?@i1=U(=4 zYTaO&jL|-jd^Bn*i=rtp1Wirw?RJwbwa30x}zx!j@lj>T0Av8e{VwE zj@uq^TmDv5}+J7 z7VxR$TV3#1LV*g7p4!2b#16ml#m2EXkqxLBt5(Y|qw|6vgu))9ohF!!0n0C2l26MT zU*d;MJ8fZ`5L-;)R0l)P&yX6dbbDSQar8fH@7Ihy#@nJdwq-}Sc2{G;>apS}>NBVf zAp*$D=S>tquz{f>BzFS*N!Cd&9i#H++-nXIm)g}szQsa3ReE9_dRs zOjw`5W{N@@o|2Ryk zdX9CWw07xxfR0URw6$Q?QipRTY>);SY}gNmSEBAuxf_VbeCJc%;pmXrxyoH*Z!YcH zdu>s>-XDRm`0h=W-#p9zC1*&^8L_kwz3`scT5qtQA|Au*d`3X}^eYh>0stlVkN44I z9=7NA@SNS`;}JhJn4c=SQ^!xTU>zT_>X-u?5%qdF)Pi)^G{Dn{qZA73kXYl`N46Od zk4Guc&VSSCe&3S6O{a##%5>$HkUcmW(~WveaQv_uf`?{pBz>0WlG%fW?Vlf5JUmN= zj|$as`^X2FxOz}9DB;Y6qVSiJn~baTi7a9KRX!@@deF7=cQlRnA;2+CVocquia z5_?=MnLS~#;Q(c8)Y_e&L?oKsAyTWn|9aVPW6I{?PI&do+F~KXXh&-1!kM#|2TJIJ zfO9NTo@gtGfYq((oOO7bAny8t1>7Cqs}!`6;00(TlxxB)*h;~;ba9vQACH~Q0t2Kp(Ze@)+|0}FLNnASMp0BKTR>oZaX<3MALEqwLgW_rU8A|&w&f_&{&+! zSE&$Y52?k{7VM!BIxF5fskc5Txrk3T6xpP z_)!=BNIu`bS?f~y)q7_iM*B?<$<7hMYte360Fzi1YubR)L1)+%j2Zw0!v64Q%QGog zB*h$@Z@`oLH@PV3)Czo`(Hsr#4>s?xYYUOZp1wF^QsQ9!E{qSWhtWipUB1=|xg1kU zBC|9{J37Iuin&Y4rX{he?Ru;pjn)`R4hvOxgbX?!6M@MBaY0vXksaS7b`~50ZQ(0w zdy7lnghbSQx1CeBsk`b+1-pR!D|i2DZQ1017I$Cl^f0(aP+w z)K>wx_G)m2J)Sc2G$3{<26$CPwtYJ{+ify7?9y-4M70H0yiF4GXlx%%3PeO@Fm|gY zAtrhA6v0WnXEs<6yb(o}>O73#vM*E$KW!?e2ZJf#Qd76B$wAm>sYW~i@7pspLxz;n z4Ekx>>lPu4hOy1EdDB(XlkN-o=y#3mD+Xq@_|m2E&mm*7fYNe5>*X4dUIe zJR|tty6~#Ce~Ic$ezUb{*@H$GW}Be@i{WNiKT&DBCo&y=IqjLL7k=U1ZJn!MH4SD%eV1}(Cz;q*TY6Ze1I%i3`wPaQjM;>6%_$j#X61e-)v8{PB} z4&C}R7is)}{#ZqiUcv9-6EDTCb;kd@kQrw2N7;d@aRZ^6M`*R5t{c zXZ=LC-5pMg|25b9`BP`{wJ!rqp;7rcGZJkAB;Tz&E;D{5Vp{UC2a-Mb791%RTHC@j zMqMt$rrourJQh9S%uS~hzVj-r`lH%uDdYqdNqM7S%fygyKY1PEpxefN9lj)fjmFEs ztAtlR5GMdlrs)Gu!v|GbbTF%I8PxNsv3U%MlV_@WF=zDFf92X1*KiG1xx@+{1x1{L zRw{bat4ivvtm!gS-Y+9C>7sLt-2`-6u$6nvFm48+xH`+0S5FlEuvJHD>VUY>o&*{U z5UFi&M`(5|gG=r>?TV2lO|k<|cq0zraP9TIH-DVW>>`dLBT-1 z)ut(&`_b{-wR~uyb7BEmGS_vbVSV#_T4(>kLtpMTMsI%iITIHKmVY&1+AZ;1x83RL zN~;$|?l%JBg~oef%4*OrhF9|@e^ULT+n{Q&4hJUw=tahAxK;(D>YjSNB*p1L*l%mz_TWVPvqrvo%<@ z{bu#P?|_c4pywND#OS||BlL1{upKB=Q*eY379{!K5|GX-V66+1f;yDswo=0U3|W|q2`qq7 zAp^Qu8AYPzw(aX$HhLI1Ne;g4W~lrw7)|L={Q!~DA`r^c$n5OC{^o$9LIv8iG%2j_6bJQ_K$o@F@*^f>>Z=76gE&>_#LUr z(V~j1OD3*PI$#r=HvaEUHr7!%?5iW)Zc1833kb~rYXD^Z?R;v3$`UXq?b+K&&UuC^ zSUwQ=I=ZN28OB~DN#C<`C|t>+)+zij_zYJH|D$DB$)-MiFTGq)(biWKvkH9S*?^GW z$GqoLV)7e~S+9O*ct>X%e~xj_3B2qd6Cd_@Y|~c^lGpm1HxQOqm@r$J$yT~I`H!^< z2J{|4gd7zC&wDrl6)btJrH748Xc(>99*+|0MJ@&7jB#23X4<3tbCxY0E!tz@*xv37 zHv&@{xu;V{AdJtI#YCuOJv$ zLze!g_i_+L;J~8lQVfq%&a!o)QGe-U%8-V7z?4%GVM9NDQpGCX2Dna$rye{Mc*rDb zzfkK_Z$ytGdek5rkdvX1H*nYTSPMIO>{zKb{Lc)ncm{gVvjhUF2Ck}mWV;vTL4929 zFu?Q)R&l-j$l{nv9b-xN{`33Na%v_us~rJS6^a z$PcEoRgOc($>JZxEQL2bxHOW|-kw;&I#!sAd1A+p^2Xb)9gUhC#aIR(_QEB5CItav z#DZ+!(L?7kWmqLi{V^@r&{!c6K=l3|(5c2?UZ)%&RV)Aq5&bICWTRr)-<#`aRK?Gx z=J7J2$%7J9kX*kW-Z--@g)W1_xAjvg{}Wg`m(i(Gf6i34b;N^rJHDkxEg1{a{M0{P zM2p>qWu#_qf_EG#TeN&#IAr4;X`~tsow<;(@N3My|Ms?(Y?~M%B!PmCOha@C<+6G6 zXhYGGImch(mX4l)-83+^7M$uF?JUpL%Cx!T2R4X&^^URzl@D@FA8gbg=PWx^n^y7PPB8?Ps;;>g_Obsa;*oL)T7 zzlCJtuLZz$Lg@^&Skrv7W-o~D9|Eg7i^vcGSphV`(|3d-!-LI2usW*f?er~&{$@@hsX_qz;E?If_P_dFGiq<&0iS!aJP_#_z<@JLuy${(BdEW@0h@=S(m`gVmX4(W+4J2u8%Lr%eD; zT7pI6V*^s_)T=Ju8n!hcM2;p>SwCm4!|LaQnfaxs!geRGH=j~#KeT~y#WTv6ooNoh z?3ezq7at6$E6JlpRAv1F|}(Tf8#I)31;7=4fV{F$KO>s9S?tqJ0)kSU;)zdB@USmdqcQD z>N_EyMu10EJ50jIY4|(jQgn7h){Q`FC+`N!#qc?^qE#=?uGlW0P#VSI=n*W^Fd6#q zIAqPYmZuXDv=T`6VhPYFHKhDJS9v!j*5(HBH)qz8ZG%rB7)i=xv{@suf~d%(e6*w@M#TmD;poEf`rTa)bq+2m+Dt0r72AGNGJIj4;? zL!J+O{YQei6?{BQvtD?P1S*ljF^kD(D@ut?sCnBVl<0G3&292jx{tl{zUr0wnN5{< zogZAfFnT<9bFST(UfUSxOSdj{-zq4fhoJbY*YK3^da0p0#_^^wdrB18p&z3(B%}G+ zYM9(c%aZp>;-r4}yUU9MDp*&xvGW>s@G(k5$Y`Rdo0>(9bJux2BD`jS->|++rF@ZU`gu;9=|Ul(=YSCx%R3dWECz{kwpX%MI_o) zEaocG638^zKIJqEFRnQ3AfCWBhO5J*r4N`UeI2F*HO<|8a}N= zgSp>ry`T!|UU7J(z4ZKkt#oo;cHXj2%kr@8_lLalq=BfHMyV?N%bH}dN&W4+85qPw z?9j{Fw3!d+0xKHZ82Nwn`@JSp5Fq3pQ-&5%LG*8#Jh(4w3qpMuSlAkShzvbiIi=0K zLS+B%$+Ko7KY}((1QRh4*l~H2y_&!>tpW{M`DHv|pBT&6hp;>Fx^$ue6)U17!%ycu zceQ9#hy@a9bc4r|XeGehu>vi2{yYlgQ{_{;uA%^FIN(4Sy2VgrDw|)gu-4lRqE?If z7uhV{RB$~|Vlthx_++76c{Glk+AWJWfy78W1Z^yh6%~_4HJ0CeGlFMv$5EF1>!=aS zM8wO$33yeMuBjqwvmkF@eFd}}UYIKZ*P$GlcO>`YSRcfl4U|xdErq-*N{q{4^aHaO zXeiK=!26%%WNdoPy5CQ?$I|Rp3weEF;j55THmeOPx0UzD%_GfIKPy%@~TLkdV;+;h{K@ z&uy&YW#HNbx1;j-wH5cW^{M6PGuWJTLM+DEEVXLx+4zI?D}6tQNRVE=0ij?53lLl^ zL_~>Mq$4@t(5em364mZC>+y$F+m=iwL2pcL(u9;Rz;xgD`8aXg!hOr)KkaFB9&u#| zev7eKbZB4*2i*dn)0KwM}NSyT9R8ay8 zdDw|b5(p6&^jx9g*|u@cEX!BaqBh5&1V^8g?^bn0`vO4TaFk`y0N;HoVl|}T?&<(o zC->l2&%mcDK)*69vjlGTy{=F2Q}t^goK1%)7;(?7rmQH;cwE5xgpG|24Y-`QD~F9O z5>$s`}EN2ff&=&5s9`ci!yjUzk+Je zc*RAE2t#H9d%)a~g5>a|yfcrRdf0dpWwj=M#}1W0denN+QXSgqG@QqxQE(GrhlbGu zCe`!Wgq@-rQBh@!g$eXfnDr*8#=+VUF%ry(mgTAs@z zrXLO`rqF-ryjG1f9aNZn-t3AkjCIuGyWwTlJeGTuTIBe*7XM=>U+V(%Ood!u;OfWkoJC)6 z-S%#}R!|UQw|eu^*?iJRYaeAjQEktBaBP3Zm3P12%wsg`i_&^hDh6y2sJ(1ViNAL% zVEu8C)q9_@-e0jI!jk<)?kym*iHf!ZDCCOGQu3ro6ICKfySd|Fuf2go2EHVbTd!0{d zb>39=uhGS3*VdI(>H-5fu<5Z?1K%C(lqCWEi$7O=5@lmQJ6s(49Nh`eA>o3VKD^;ZdYe%*%l(ua3Hs4A?AITj2oM;0xKwyvA= z%S~!e#ZsxL-gDA25pLhO98)4}CM^UF#GIUE<-TWG&Q~>_xs#^8E@E78@0CHp;rN)H zI$>bb=WW^fC@InQ%O2y2 iwg~XVlP@}7?7w?_@AOcXxM5aCdhO?oJ@M1`SRixVr`paBz2bcXxLW1TN28b$`PBc0Wvw z)XdaOPxszyueEw2Rh4B>5D5_>ARtiWWF^%hAOOGrTi_u-kDzVjXMU~#uIe)4fRz#E zfX^L-@3OkC5D-XM|1AKBj4XTzfWVQQq?o2x)_DhlzQIrftKY{&gUao|Bi_O4=)?E( ztp1jvyHtbMeaXh+{zgHX1UTJV%b^fhBBe&FLWH0+Xh>?&2!bHdKq~}0wO>J~v#Yk-Itj(IpOJ@B=MBkB<{@K#YB!oX%wikwOuM&uQHc!TjH~lMw)5 z7{1wX76ud;nWO(VAJzZA!T*Cc7$-Do*eV?EP+Wb#(5n?UwkW{nDYUZD=S=K%hnXz% zd|EHw-0)rU!83O9v>c{Hilck#|83iq=8(?Cz^<2S?MPRH_^~6OrEXR&M+H(hB6uLc^jlBcrl(v8%Vajpq>mp zdcdiso7dPWR%4@jACkw$>q=_^Tee5JKq<&;FGq1?LcC6+uA5BU-=TZA5mhSdZ-4+% zz}y1(+GpdV)9CfP=LMDAXy3*|SI6eHiOyUwD?MIcBDR%tbWd3x4c&*1j!=Un198At zLAMT!(5)?ozD2jt3d_xa0X zP2qSfZ^IM*s;q+Qs;Ha2aLW)vdBHk$+II}_Y`7f~Bj}93 z-O|j0EM(D!!z6q4Ub|yT0?SoK&ks{7qtx-jT zoHHqf>y1%5M^Oc^d#rBcQ>^X~rSPN;VY9k+5Vh{jrzZo=KPOwqjpzFbxOkxQxF_(7D@_415@~ zfe5(5nQ0jm#X>lIXS@_MqdeiJF>PXe!fEsCY)JWIOA2~G*U-4S1)C5a=cad2e;g}U zW!#5T?AqEjtMDdxTl+O>Q3yzJc7Okw@IU7NouO1mQ!={ncusS8-o?S-zol2(n^M=` zZ&CBdt)*c%7kAt>tR1b6K%cFL7*XUl;B{Ke?_hdsLbo~{DFrRh?oH_cyPZq*JzWz- zO+&Uqe$Ogj^)?>s!(l!nkfi8J3Z?c?b1|%s%ZSxwKbxgV_^;F_gzHra=`?u%L!&D8 zhfCzk@omuF2fkm$p?TxZ~xRO%X+`Z?;~(&K}Hxxy9!q5K>D``Qv-RsH?auD-%1 z!bRRd)HIP>khaGyM`>2AbKh}qU?6;2YhR8WujqZz~*D&O{ZA;SJuPUuO@x z8tpjzw?gp@#$YKpSnu?M7Gbxb_d$^v9=G2{1!Kp&ttxCk4%yKGR=;rIjN=s71iVq0 zc4$G3|9s;NmX<4b|817+iB<9AbC(p`#nxz*F0F|_wg+wcrLZS2dix`@9Q}wnujRGy z!h~Q7;;i5Jeb$j$iO3P*_0t6QF`Kw#3QjPQz@FI9+7gFvVrPTNfwj({`fQb#9f^tD z52^2`*;-SZ1Qlr0Su^RVYnhvq&sm_BIF+XTl`2!gRwQad&J}eP2T736;J#E??;)wf zl+6ZeO5OG@h_?>$W(E|5t%-if57NpfoVshi`GttM1 z5RE6-ai+ZSRsCc5ON^}XksH&+Nqe3STNoykJe&TPHrZUTdW--pHd}?xN;6FFretE@ zbRP6OCQYGVjZvKXRrib9xJFrOe*W!v&Opab94he1Xg~sI4(+bUzj813+MF~E-B^z~ zBb9Z)EG(zyu!g;-}$k^ z4>PrIEL6K=y$(tpI0`Js3@P{yJ+}r|d7MW#dtjwy=!qe=(so&M*wE^0Kv(0a>u|EM>wl1nV>V&1pTwZM=|FwsZ&_yCoL>1ym5uc zXF>E0IF&${qV8!(QKv?`n1vIyG0D9>h?Gl9g|MdUV*hjb<&1zG_XQ@NVM5Aj zbK6iA&q4jA-6R*Pv0iit;6QDZS!JvVk9AD|6Lu#Fek)D|{l@X}=71w!*+hy%l!)hl z4GIBdSL#O8Mp>r2gJH*RWf>ddIq*=n@;gI~8#CYXb_UU#|F#ELnl?+budE6g9r6O_ z(SY#_gcERVJ}dS`FUT=adK{&L){o%YWh-|Q)w9;`lo1|>9S)GNJ-zTe1(!#*+UD}+ z3$U&Xa;`3#c5R$Sz^ch#rwI_P-Nps>Wl8VSsWZ-T5{n^AU*hjNd8{K5(qMjRy%`xj z%J`f~vI!7ImYB&vWm|MOI`S8J!0FdTkM7H)#`#|e-g|PfBTa|##j#Mk!q|1VXUrkY zuDN!IR(uBjEHsdT6aMJ>2C1+`SuwLp_R+CR+w?(HrDMw`URp)jA;*i{H1o^t4d&YQ zrM#}W@YH?}RLBtyKBqqImme3qDSIs=jd~6W&-81U1$)-h$hOr#Nw6OC@scek^Q<}V zy0>))kW5__9p46dOcKUw9>ci0JZ^A}s*%n5)j0JcIcj#x@yw-)kvAE zi4hsdwOss;vubJXTj=hZy!n;K8roV1)d;;aj@u#g&}iHkE+R!>C>Nsh_bUgga@#50 z1Q7*-9LGF-p5c^ph?pw0Q{V6jdypLqEvlwukp!PhXskJy!Dwh-e7Yk#Q@x>pQxBvD zc0DBcjS4lY;9u8U-kUk{%jy9B;(UjVjcee=7%Y(#fagwBo?o@GA^?0rLe zZ}t+5m?HKH@9;g{-aaV&FMH)3Fj=LRX=FF0kvOn?$(|w*OuT}k+&)_&TlO-fZx_|q zIl#q3bOP>~Tqe+QzrN51KC}^~P5GwkBh~%@MtMGjE;-(rI1;b#^Xu?HlNZ8PT%`Jh zm#a|)tR(Tki&b2I)r;`RnIdKWu>cK>H&pJ52xb5;F^(Ai`b_vXUkInp7-K+Z*?_>w z^uBjjzL0Ue_gtaC+Y%U`1puNNl{CsW<=F+8%(#DPM!a65v?y}-kSjN-aU4uv#fmi@WtUf zz>XkRWOjo*`*?;zVj*1H;Z8xMDY5S5SWiYF|6^MRL>#!0FBl-F`+IbyV^%wL=iBnp zgn=EP8A@#R#^o2(K<%FR`D%`Zb)IE)`jjQAS!K}FHo)VWWh^wxq(}Owaf&!|vF(xg zet{>>VdX?BeeL~#e&a&OaC^$wbRr26q~w~jd1$qHwxtjo3d39uHQLXnHfDV8yM_)L*R$Gj23;4>j#G~l14ap@-H}!y;py{ z^3vA!v1UJ8nOp(4Q~osGf##gI1!ftnD>U(ro(q z2X!Nrtg^5vP&X}iA93H;4mPx_HH;8IDXMsBNk*6ztZV)wswHS~@CuuZli4;O8oA@2 zbi|VWO(RTVItjCEH1oJMvPN<3O@IBzJJcG@fUnT>RMus>6Hpa9PjYiyen*_!@TNHd z3Z_VuK=YSRzM>z@!F6(IAAij&6%qIErihnv2zqADJ>3)D4>^x4V=5T_9&Lv1;EU}f zc$}ojRSteHX49If)LEPt|2Mdgp|<1C+C)A`P*`;JZI*!#irInlZ?7NX`PLy|bURn| zq+SC;ol@#c-uK3e-?;Dlrqtc#qt`B6HnyZIFEu3ia0=TY12GhOI8iW<5?q1v2~Jt- zkm+deFGl zN*uzii3LiL_qfN3cuBP3c*$pxwZ^V$g5ABX7B#leIurleWxWBIL2(W|`uwywHz+q% zp3{MFHRZ|hMTDLq&6!rr->8qMP7U&mNP#@<7m| zsitY?YIXv7-?sx70<@%NDL%0C&vyeSI#|@F9SRw7SU{u+A4X)Uj@FLPO(oNFdQ^9;-`&%^u`{j7i*$!6jR<6 z(80n&w57!~F?$>!Oa0>ZKISK3OPJA6v`w$?E1==<*YP`|B@+xp#>(MC#VseI#{l1U zxVf0;NvErj%*#lCDhFj_(zmrAEodlxSVjhY zg*P^I7p4rfA(!8}?eZzm%o} zvllbeP$YIZ#BFsKoZHp3yWD5?S+YHG&3manJdKHco0W&Y7`ntsOcxHQ{K2h|;p>M{ zxj7l_L6Dh=$YyPk#!&j&n`SU+z9E>P-|?5|Vzq7=ql^R>#(;in$5}2O#c0XmfEA52 zT=YBXAjpUsSKhuwWdk$k57D6pxqUK93Y6A#ib$t0Po>uA&^BlH-+xM=i8u$3n~u{+ zP|rDy6+TzMypny;K6Ez~mwoXsea^)|FgiI;4(stiI}|7+bHi#(lAJyHt^O9OQg zjR|{it{|HGG|(GJ0b#R+7aPm87qqRZW&8b#lS!JStY>i~K>~U%v;Ev~p(nFcW*9Dp z25k`uXeK#$Yv;Ed$E6}a(3YadfJ>mk{VH*o(`0}z&@eDC`6H*fr!sLs$ffj^lZh~d zHsAEM(=9LFhLP;>xuejF6*0~vr+S05Y}gDz!cdh^6Aq>p4um?a@B4Z=oXxgJ1cx2j*K1bu3aI$#v;-LgyvNh8VlqXRGm_|r4RIo^e$Q=-;kY! z6#((?t(wMo5Jol*0GCj!@Vq5toG>BB>)Aa|;fsT8=We2Z2LEjqW+2u_QNZFJb=v)X zhthYwn0{HDN!TFG6Op)(X&q4_*qD{nP#Yc5br@A~ZJ0+f6#kmhGMO&Rr>1a-L=gCz zzwp?4oA*b=AmeQ9X$l}tY{Q%qEdvMiUE*avWIr!rp9?o65~|COq8BBW=nsnwOnwh) z$hYzmbbDQ2nK5Mg#y2|vyA3-27ejM@T$wQ0Hp5Vlg6nlBZF8l=9GtuOe1{5lN!9me z7I<8S`KUdEVCtM1)}{xfH0W$JXkFcv2hw~?z5a>|*(XkoeQH(%$@U0{8MbHIOxdl= zFi1^5D8!2uRvR}i2Zf#U9 zF!?nn`73Myw!a-+xBUKi1ljy7A337r&hK)%d31Iq-hqx&bo1H=dQ%kAHOWm8I7~P~ z5)*f(_{*N2Kj%%%TyUU8OrG8nh9x>EZHL@?Sg;Y7@6YDBy|r~@FsXH5axXy^Dp(n5 zXL@PsmmLHX07;Sv-{dn9Y2Ua^ufD(l?_+4XXZbeRNYP4=fo6PPS7mBqY2e@{P!7p- zkER!j?^dNrUuKjrqL3-$Ff&q%-GhOwu{FHe0jW>4oF+9#>K`cIrd>w^-EW!)Lm-Mr z0%;6;A%G^MCk3a`+AC>WIyd@}Gb7fN@La>Wp^c`OrU}{+1-?c0KI5tP;!gh@ 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ℜ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 literal 0 HcmV?d00001 diff --git a/app/static/img/avatars/3.png b/app/static/img/avatars/3.png new file mode 100644 index 0000000000000000000000000000000000000000..8ce0d302f2a49c79cf64b4b7bdb57525ab5449d5 GIT binary patch literal 32002 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

L?3cRm*a870c<$sqGL z_q!!=`sX)+*FZ2-HcR{lB2AFN+Vr3~>t?Y=1ga-H8y7qEaAjA3X779!A1tj} zTWk_SHl@GuAaqf%5~w~uHvcDz6bP=Qe}Dj{3z-N8`F+7!E_QsulQ+6M@vF5)bI(;= z-6Ho7lKBSJpkZV4*$({z+)mwkT+r!Fgsv#O8i1zMMUyE>@V*i=2Gdkd`=4@<6nhi; zhBbJz&(0LU!>xX~_RyLa4Ei!jyk4FB&!0(@%!rpU6o+8kK5`l^2#9Aw$jrz6`z&p`g-M?aGk=RA#@mjjx~q=2 zpE$j$&oB=~bwILD|9LD~l7{O{Z5cH*fG^+}#Pn76?~sV1%UIj_dRxp(6f7Ev4xi$; z4GUNdcv?3fl2Lz7yB;jvRb0yKF48CeA402L@U`i2P>Aaop!5oZV%sph8i6^QiT!%xKT)aJ zj*KD$)Me!_uRXh9&jBV7e?%q*37#e1p?iN61r{I!kjsZ!J1hwt@tQ-!ICuUz@UMao zb$~XhS52iWn}$iutiutDw*&z+RGy|+OcA<%sIw+eI81~fJQpe4u(7|d$QhS&22>B3 z?@vdxoZ-Dw)O=+sxGwB__66@;h+^;+DzQrcE@`Ogwll~<_#h!H{A)d(l7gE} zNf{FHI9$wQ&3gki14Mj>|AeykD3IvJp}@B9Hl-Z7;PrV(2kc<{KwG^SfzR!&R$+DZ zB1ZxY`2jRDwT6Yl3F`D|GI?c45lGaQ4&~YFh}_%)g_y%{F*O9%i{<8c&W&|->FKx8 z&wb6t+S*ijFC%Kz0fo=t_Zc4--c!4JM1s;cM9=k0_M78}8_v^v)pxpouhzYDoMXos z&h8TnAfmqmfB|o7`yyqKBp}VPLI?mL4haC50|Nl0VE_Oi=rS>=IKbt9iiLUqckwmM zOwC|l8w02|9cqjlHq5&ssB)YO=%+l(C0_+p3kab2_jCWR43L2I|F%Iws05{DC(r&6 zbM+pfy9R1nO_Xi4Iazk~iBe1uWQ03aTBLY?&5gdWGr1}aGhK)i)al1mJ=Aeu$&7Yy zYd9_2mm9ZN+p%@7&*L~G;qqFvpPwoH4Cr0ko*E+*ua?gquS_i2AgXS$xA*-YPjT@L z^Y#=M*Z3ms19u-{`zMAw2rl9_?z{}O8|zr)FCYVelHS=B(tBK_zb1BWl2~0hY_UaG z*|^g=U&UvkucUQ^Xo8lar2MkSo@r>hD{AZ?qVs+Q%)0QqB&4Loffnh2RV~Vl#Joha zNTX4$12j^zdhPcqG?}NU#g!v``tREm(&+2gZtpEJp3(jmFW1&@Asq_oRJuh(;V^Sx zUmG%wQ8VG>63kE$jI-hg1Q78z#zbnmXU9ii=KpbKfLRg9SDa&Q&h*8Np{;}bnJbxgTsQ77m zD2g((Lc93V#Q3 z3Z|S4GjYmnSDvE_6@S@=6T&t+=sR2XDSv-6TG6Uv?jJq61IrU7(JzySu&ArAZ?{fg zs!;sMXv|;Lf1O(s*=>+IcdkH5HxSJ9YC>QwJH#4*00yL!5Gc?2(2te5ZsjMT0Yfte z>o;-=%wrTZ(8|m#{B>tn=+{?My*i8L$vL|8-D&Ft+79~n;-k%#`v{Tc^> zA|J;|bL%M-y~V^$8vh;6W+0Crqab`S@IHIu#4ge{4l`f_o)fUCpd)joYm0Zo-hfVK zgOAt>A%1NQM=-=Al|&ZwqMJta`(`r3q?dY|Xv*U}CZkMNK^AW3v^%4Fy=e=jd2xP; znUn0$;-@b3NQid>_1!F$7y>jd`C@s&*}6iVeM|*?{I88k%8!pv-#D8S6g$_DIBI>7 zY5DDR?9~S9<@tq*&TfSH3N!|2F|{G?Z~uYOuSX+|!f zp;>^UJjZ_o^*hCrO<9L{_!CT4iaEPWUUv+4#>a=>KWto>AwIw*AaI=CV8GMx1g91L zeUQnQsPqTj>797HYl<9gOLKq4s`HF=s7ru|RCSW|mP2C787mg5(zKX;zbmc|KbHv#vyYZ*< zQ)O%lK}I*y)m~?b^7a@yyMPAn*tqh_YOcdQH_t-e(;M_$tjIn~5EKwV-Y0($^jm1Y zB)gY0&0);sa{lAsm4zb#P? z-!jf^g7)s#D=+B9C)(&8^CgRBR(s&o`2Xss z=ddgmo2j( zBvTZ#cVP?gAsI_iP={mr?J@=RtAyU(|C@H2R9T*hZ$^>=;~^VWR9Q+)ZWP$>`8FGejH?wD~-ByQ8Hqo>;C4z3gV}Yd0!HIG{{qhL^WsRxEk^z`B z3{F`|{~TPpbSrZ=Df+;fT&m84qD@&UyZe;fEe><_+P9+_aUXw>1r!_TaB1I;OFqS@ z!Yk3KPiCM4oG)G# zUsIOjmy(iNi_f-`;i+hj^K6mee!c{C`GL_uo$nT8`tKgm{I%?{1fFYa!A4#BS|wlPw&q{Ce-MfB z=C(yjWgfiz)nh8^uTOfh*zF5>Qsd7|zkiE}i75tw8b_!1rWrp!&<>~nV*mUXlsSz4 z>?FE6Eu0k3P3YGehj1oU7bmqdwt9H`wmG`Hmn73`S^-0a%C1*r#xiQPG61l1rlr5ZeFd>^e{KHk33QJv-F#1a-9j;E@Eg4o09VpL{U z)_8caa)IPR&3B=6E_)&~qR|GrqDUspnL}ny6@_=3F{E@gl`WBfM)d9}A6;k0rb%{p zw+6x2E6hgk;cJXa8SEeRLDA+lG;rv2dVT#TN-{S;5B%*BO^ttQ=3G!3UVS-|+X0L+ zt=E$0qA3Bb1#Yw`P^vb%QV-GjvTm`N3+UI`ORp=_BJD8d<=Z|KYZGj$FL|V~kGg1O z%SKb=)c)Ayli*9k1VpMJk5m81w|P8LNSAxL+s>2AsV=C%4Lf-SIy-%6I2z>@mhP}& zX0wiW>+94;-kNvGnyV(TVPxBY0ii+5h+Gl9Qz}>DSDGrv@%phvX8cQ?(ferpqSUcH>zBE9$`(HbCPg7Lcl4(M37vdgjj;- zC!gk_mDV*`b?_r*Ao>wB=@Uz9kLZgdRsg#L;6iNm`Eg8zyW50fFM%YXgnfBN5 zV+%^;SN8{bfS&H3+fDqs$(6#198=scvVYJy@ghFe6kjLtHW7ZnHr(${{-I28=hm&& z3+rjUOCSvzc1;3k$@JO&=q#a}9#Tr>?i3dUYzYd#(P)IMbV4ZQlL>PeQpZx18OG4_ z;6SUi2L7XHLFEPm0{^3HxH!JG*< z5~e@w)-)Dyn&=7!YBQ1K3UdZ-{JzeJUwJ&kX-Do85s)83{EPJfnJ`6_lyRz@AKJ!_ zRvvr1l1`7;QJ20a!$u$ivWX(ZCm%YrnNIO!M1=U9`X63p0sDQbvzyHw*M zOjVCB!ykE}oB=Mvm?eZvwF{pkc8+AR*30sIt--pD1E_kP>L zYr7WllqIZNPn*A*KvRI)*S3RRvK{nnZ;FfoxM^}xWn124z0sOL_Q{iTku&kV9rP@z zj+V+*x}A7(1+h%dM}(H%akvot1sJ)T#(?I1-%>MF@~3@k+>pI)-$S!}?DqRSyXXwd z;T=PJ?J|RA4Mwk`jFKec5&}W26ykp|6On^n+jm2VLm_)4ljHe7@yB)|QMtO)MaD2b zN8zlZTamvvVxC%#G;PMFn52xh!}su_!K-7ZQvL(3vVxq?8U%p=#Q z!kwjy$}t*m{l490>?Z=6kp7(MK3**T+459~n}40am+)f)8w(C02pw6@$kN{4s)8d` zoxqw;DOFOQ=Kcoh9y?z8^Da}!m#3$2gd)Z5Rok>-xEqowb#8Fmqg$`~#@hg^Xg-{J zW3*tj;NbK`ZC4%oENU77)ojZmn>5{_<$esqEU&9F$N@B3SZ*AQpBWiO$%x{mxs$JD zx`ya8jW>8z`+1R*>7l5@co!NBd{@1JA0bMjPl7&sJEEz=zmYA^py_RNh7MNs@+1EV2t z+#CL@q zAOVM2={u#djiW7D>+p>8{Is8!IED%Ou)qK-hfxGqHWJ0D{Vv2*&a+IIc~ByCl)opVl>{|vBEVuD7;S6O~a>js9=pmDquWG<)H)rr^*90kq7+GQaH zq=-9ChC)I=@c_!4?1&wO?@ZdgHVTDkRnkAU#=yqN=7#B=4ENC5qj#6XV5s6|qaG z-D=PeQsZN9zWPUe-#PcZ^X_}+-e2F1H-qb6Wfo+nqoccOXaKXIqoYs#3&xA*O#PFt z)AL5}YoV`0KiMM}em*dH8`${L(Xnv<1wCD6Hvc(kX?EZ8Ucj%o@SoVIDO^Z#q_&Q> zsHo`q#yQk2W+eSpb5h{1_?YfA^qUt}PpmmOIBwm#6*ZL}O-_rUq`zuPWM^mB)Y5w3 zU=>^xDIy}`6yoahIuHy7Z9c|H;2uhY1B(g zr3oBy9{zinuyW_2Nbc{SqX>|JdjCw5oo;nHPQL4H27ZGC${&IHlr=-rscnf}FAb5OD5il;-3a7Sb%5 zU(h7b{$tH~%CmkQ48FEXWPMWOQa9M@h0puFobhM1)DR3TXhKkP@QYRCO=Oz8bu&3e zpd~0Y!kOSaG!I1aRxmAg*F3@lg}q3t!)vq~AJg()mB&G=yQc0O?-e#$ zX~9GaNb}uy6pdqS@)FB#xL|${k*uq2nxOVVGh+z$#+V@kSc6BtfPn?sr5O2hzrP!f zZJ<4e@m2hq{-!OfJSSJ%M?~d5EKUDZr=v zQo`@e9lw90Xjr1x_9(<^MKDsU?^}Y_c7>pu=-F*jiMC{`;2@=n0ZRsu`g>edjShbpn2(fXcWuc)u)y)hH8QRR}U&l zm1MD}eAm0XI;$B?jv6?6x(@x+7<^Xi+pck5kHdQFjDS`X*qovg3n&7=exhK0qR@7x zcQuKfT%KiTVV0S2=2}b>r^3Yzg>A~{ma2{9)Wh{q@U=POxRj0!c^Wk?ye~H;i5tD-?;1sU0|JY9A7AAu2?sEZV92)LAgC~F)ynCN|L+t}egxGG} z({MS@`#cq7lYd$~JdcWg%5D57N=aT+%nclYo<3^pT%fi}L%GJyjKXz$1n)8us8zd? z11-3CDc%#A5^G84mFQrgMThO2RuW)9JtSQsG~%M$_udQG1Jc9Zi9|;Sh3q|^iog+i z$BwL3tvUbXO%?^i#YLmCh|zM7`Dfs%1s~%dU%Lufmerl=q+Ngqw@ngW_-;ideH0h& zDdgGsS5PMic$)2I{{n>hwlZP;vt}UcRKOpizAcv0p{_f@uW#0+ybX_cQH1!t0lKKY z=|a;`4WE{9{{6OuN_^q1v+Tp24fSi~DLh-R!r(uy;ybHORa6K=qv`S&QohS{zx&K- z>^|D9uB(b42>0ockoBs3!>s1md*kEy!R^7zJ!}gvZ^jIA3@*C7T+*t3G&mA#2#hy( zv)36G>ZbqdF~Bi6FSw#P8R2BpZWqe0g!7=#s1|v8XF12e{Cx`dGJ{*8xVFeVLt7PG zh1)x6^T)gu)>oq!_2o7w$-9q{1|Yn7mNaB_G%O-89UN_3!Nw z9vwbGiPn2zbR3^QCT+=H62G&Z8&@B^f9%PNt>Sz5y4m1LO^Ad|3(bI1m1Rq5cQ_FG zPe6qDEywo7=FPJC+*1iYjNHe*Z(^hVs|3Or`OsPvDNz`7g@ze7sz&D%0ln&lD5T2If7M6%u1j96~~g2@pS z=~8}6tH?!pem35uLrGkubd1K%Bxr7NJdPo&c7jA8OwEaBpaFNaxU@N+13^qBs#MQI zw$o-=a5!qD@Ht0ZUwsB`hJy7wc-A8^QO-h6^{|I_a7rWw4j0y~Z2P}=7;7!$M5+!H zBVA#_bSI!{ee;aI@G^sa@<`%fH`H`G245Rk$4fv&9-LMl8z=M~^r8>;mUyw~bv3IB zAx_KBmn$=XakH$j{jZ$|e#wtMbJzgeOiF^;H1jQXVLIDc9B>mpQzhI@JBK?1Pfkt& z8{bTk!MmL~`}c&DyN*3A3|V;jh%GnunM_r9M$Oj9=7`S|z#-Sxt?k5kVZ7Z+JhH?5 z%FaP+(ylJt)beBNLf{lce&uej)E$mJ-P)u4s6fxswlqu~!$%lUA0js!Y6y$^xO0jI z(%x!dKkU>N8&3b6ttmg%qaCD47Qnukw_^B$Q)Y9o!KdF7E>BfYiSgfTo&f5#^%)%c zG?ru(#b2k2FAmH2g}TA+6OXs6lv*DKacaA3*sq-B@OKIh`o!`1I4;K)(6j7j@R}5R ztMn6AL8fd=!JeK6t5-L~Q&j9fN!<4kO|JP~E-66?-)`bXX?pU7neT+u&%GwSPq-!b zK{!qRgZs%=)O5b2gczJ2(RGBiz>}QnyF`uh?oc6SNdXahHB`^3wyAmF-|CAd(1Jbz z-szRCq%a$i^hv?tfn^1w z^UL3d*QR##WP`b&N>XD9?0`fxk}bCB{Tc;%#1v%cak!v`HpqO2LN}_HbMi6Zs89=k zhwnVJsQynkH@&<0V&2ZG`pWnHE?)kZswD@x$i~l>FL@QVd-=^$QOzp7ynID>07V6q z8+);8x)hRr$bCh8wyUd}b1TyvjSG254!93xXK-ZOfsEx{uRXk>g7`+KDDw_|YTd|xK$r(|k|*&)wk+F^I$eNL6F|-sP=RKF`68)NTrx`|yhY{> zz?fr19Iu=IYJMk3wrsCcI9~8C7rj-C60ZAmTN4&M+vc`$Jn}0A>9x;t^M24!HGMq zO^1mAxBszKC0APCRd-nLG&KR5o`Q^0WsI zQiw4F&K#~;iz9{Ozd=hwz6bUhwRBtNndw%dAMLuNV**-tS;|WEgytP~L@`&Xpyzgg zXxO32@F94P2I&_LMc`w3L2=hf1cQ8s9f7%MMEJF5s7sao(p4Z~bZ?Yl|1`lH+4YC55irn|7Yw5G>@e2X6fa=z zWJ}sgSxeeUY4+^*O{0_#xeP&nx)Uq-+8d!(e>yOPGD=I!XCm>R>Wr$8uw?h&P0@c4 z(|BxdPFQv5Zn#Y#>v=vwfxoRrdt0l5|Iabb;s8GUK>g$E2)tH{4@hWFsG3Z2KV F{s$Jrg}wj) literal 0 HcmV?d00001 diff --git a/app/static/img/avatars/5.png b/app/static/img/avatars/5.png new file mode 100644 index 0000000000000000000000000000000000000000..19b7b34785c38e11dbc8f091bf246f21eefc60dc GIT binary patch literal 19286 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 F{13$iUVH!m literal 0 HcmV?d00001 diff --git a/app/static/img/avatars/7.png b/app/static/img/avatars/7.png new file mode 100644 index 0000000000000000000000000000000000000000..9bf8211e79b0129a9d97ea4897d3754313d4a670 GIT binary patch literal 21539 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 im7@RW-ujs?sX>kO6=z!!p8)G8nXZ?_gVe` literal 0 HcmV?d00001 diff --git a/app/static/img/avatars/8.png b/app/static/img/avatars/8.png new file mode 100644 index 0000000000000000000000000000000000000000..e00716d0ee9c408c67976f1681c0f0db6f613dcd GIT binary patch literal 20393 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 literal 0 HcmV?d00001 diff --git a/app/static/img/avatars/9.png b/app/static/img/avatars/9.png new file mode 100644 index 0000000000000000000000000000000000000000..5c49a4eb6aa098cd72644f7e1ca79c2782a46ddc GIT binary patch literal 22220 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 AbpQYW literal 0 HcmV?d00001 diff --git a/app/static/semantic/.versions b/app/static/semantic/.versions new file mode 100644 index 0000000..6237b36 --- /dev/null +++ b/app/static/semantic/.versions @@ -0,0 +1,4 @@ +jquery@1.11.3_2 +meteor@1.1.6 +semantic:ui-css@2.0.7 +underscore@1.0.3 diff --git a/app/static/semantic/LICENSE b/app/static/semantic/LICENSE new file mode 100644 index 0000000..9818972 --- /dev/null +++ b/app/static/semantic/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2015 Semantic Org + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/app/static/semantic/README.md b/app/static/semantic/README.md new file mode 100644 index 0000000..8df97d0 --- /dev/null +++ b/app/static/semantic/README.md @@ -0,0 +1,7 @@ +# CSS Distribution + +This repository is automatically synced with the main [Semantic UI](https://github.com/Semantic-Org/Semantic-UI) repository to provide lightweight CSS only version of Semantic UI. + +This package **does not support theming** and includes generated CSS files of the default theme only. + +You can view more on Semantic UI at [LearnSemantic.com](http://www.learnsemantic.com) and [Semantic-UI.com](http://www.semantic-ui.com) diff --git a/app/static/semantic/components/accordion.css b/app/static/semantic/components/accordion.css new file mode 100755 index 0000000..e9b104d --- /dev/null +++ b/app/static/semantic/components/accordion.css @@ -0,0 +1,253 @@ +/*! + * # Semantic UI 2.4.1 - Accordion + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */ + + +/******************************* + Accordion +*******************************/ + +.ui.accordion, +.ui.accordion .accordion { + max-width: 100%; +} +.ui.accordion .accordion { + margin: 1em 0em 0em; + padding: 0em; +} + +/* Title */ +.ui.accordion .title, +.ui.accordion .accordion .title { + cursor: pointer; +} + +/* Default Styling */ +.ui.accordion .title:not(.ui) { + padding: 0.5em 0em; + font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif; + font-size: 1em; + color: rgba(0, 0, 0, 0.87); +} + +/* Content */ +.ui.accordion .title ~ .content, +.ui.accordion .accordion .title ~ .content { + display: none; +} + +/* Default Styling */ +.ui.accordion:not(.styled) .title ~ .content:not(.ui), +.ui.accordion:not(.styled) .accordion .title ~ .content:not(.ui) { + margin: ''; + padding: 0.5em 0em 1em; +} +.ui.accordion:not(.styled) .title ~ .content:not(.ui):last-child { + padding-bottom: 0em; +} + +/* Arrow */ +.ui.accordion .title .dropdown.icon, +.ui.accordion .accordion .title .dropdown.icon { + display: inline-block; + float: none; + opacity: 1; + width: 1.25em; + height: 1em; + margin: 0em 0.25rem 0em 0rem; + padding: 0em; + font-size: 1em; + -webkit-transition: opacity 0.1s ease, -webkit-transform 0.1s ease; + transition: opacity 0.1s ease, -webkit-transform 0.1s ease; + transition: transform 0.1s ease, opacity 0.1s ease; + transition: transform 0.1s ease, opacity 0.1s ease, -webkit-transform 0.1s ease; + vertical-align: baseline; + -webkit-transform: none; + transform: none; +} + +/*-------------- + Coupling +---------------*/ + + +/* Menu */ +.ui.accordion.menu .item .title { + display: block; + padding: 0em; +} +.ui.accordion.menu .item .title > .dropdown.icon { + float: right; + margin: 0.21425em 0em 0em 1em; + -webkit-transform: rotate(180deg); + transform: rotate(180deg); +} + +/* Header */ +.ui.accordion .ui.header .dropdown.icon { + font-size: 1em; + margin: 0em 0.25rem 0em 0rem; +} + + +/******************************* + States +*******************************/ + +.ui.accordion .active.title .dropdown.icon, +.ui.accordion .accordion .active.title .dropdown.icon { + -webkit-transform: rotate(90deg); + transform: rotate(90deg); +} +.ui.accordion.menu .item .active.title > .dropdown.icon { + -webkit-transform: rotate(90deg); + transform: rotate(90deg); +} + + +/******************************* + Types +*******************************/ + + +/*-------------- + Styled +---------------*/ + +.ui.styled.accordion { + width: 600px; +} +.ui.styled.accordion, +.ui.styled.accordion .accordion { + border-radius: 0.28571429rem; + background: #FFFFFF; + -webkit-box-shadow: 0px 1px 2px 0 rgba(34, 36, 38, 0.15), 0px 0px 0px 1px rgba(34, 36, 38, 0.15); + box-shadow: 0px 1px 2px 0 rgba(34, 36, 38, 0.15), 0px 0px 0px 1px rgba(34, 36, 38, 0.15); +} +.ui.styled.accordion .title, +.ui.styled.accordion .accordion .title { + margin: 0em; + padding: 0.75em 1em; + color: rgba(0, 0, 0, 0.4); + font-weight: bold; + border-top: 1px solid rgba(34, 36, 38, 0.15); + -webkit-transition: background 0.1s ease, color 0.1s ease; + transition: background 0.1s ease, color 0.1s ease; +} +.ui.styled.accordion > .title:first-child, +.ui.styled.accordion .accordion .title:first-child { + border-top: none; +} + +/* Content */ +.ui.styled.accordion .content, +.ui.styled.accordion .accordion .content { + margin: 0em; + padding: 0.5em 1em 1.5em; +} +.ui.styled.accordion .accordion .content { + padding: 0em; + padding: 0.5em 1em 1.5em; +} + +/* Hover */ +.ui.styled.accordion .title:hover, +.ui.styled.accordion .active.title, +.ui.styled.accordion .accordion .title:hover, +.ui.styled.accordion .accordion .active.title { + background: transparent; + color: rgba(0, 0, 0, 0.87); +} +.ui.styled.accordion .accordion .title:hover, +.ui.styled.accordion .accordion .active.title { + background: transparent; + color: rgba(0, 0, 0, 0.87); +} + +/* Active */ +.ui.styled.accordion .active.title { + background: transparent; + color: rgba(0, 0, 0, 0.95); +} +.ui.styled.accordion .accordion .active.title { + background: transparent; + color: rgba(0, 0, 0, 0.95); +} + + +/******************************* + States +*******************************/ + + +/*-------------- + Active +---------------*/ + +.ui.accordion .active.content, +.ui.accordion .accordion .active.content { + display: block; +} + + +/******************************* + Variations +*******************************/ + + +/*-------------- + Fluid +---------------*/ + +.ui.fluid.accordion, +.ui.fluid.accordion .accordion { + width: 100%; +} + +/*-------------- + Inverted +---------------*/ + +.ui.inverted.accordion .title:not(.ui) { + color: rgba(255, 255, 255, 0.9); +} + + +/******************************* + Theme Overrides +*******************************/ + +@font-face { + font-family: 'Accordion'; + src: url(data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMggjB5AAAAC8AAAAYGNtYXAPfOIKAAABHAAAAExnYXNwAAAAEAAAAWgAAAAIZ2x5Zryj6HgAAAFwAAAAyGhlYWT/0IhHAAACOAAAADZoaGVhApkB5wAAAnAAAAAkaG10eAJuABIAAAKUAAAAGGxvY2EAjABWAAACrAAAAA5tYXhwAAgAFgAAArwAAAAgbmFtZfC1n04AAALcAAABPHBvc3QAAwAAAAAEGAAAACAAAwIAAZAABQAAAUwBZgAAAEcBTAFmAAAA9QAZAIQAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADw2gHg/+D/4AHgACAAAAABAAAAAAAAAAAAAAAgAAAAAAACAAAAAwAAABQAAwABAAAAFAAEADgAAAAKAAgAAgACAAEAIPDa//3//wAAAAAAIPDZ//3//wAB/+MPKwADAAEAAAAAAAAAAAAAAAEAAf//AA8AAQAAAAAAAAAAAAIAADc5AQAAAAABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQASAEkAtwFuABMAADc0PwE2FzYXFh0BFAcGJwYvASY1EgaABQgHBQYGBQcIBYAG2wcGfwcBAQcECf8IBAcBAQd/BgYAAAAAAQAAAEkApQFuABMAADcRNDc2MzIfARYVFA8BBiMiJyY1AAUGBwgFgAYGgAUIBwYFWwEACAUGBoAFCAcFgAYGBQcAAAABAAAAAQAAqWYls18PPPUACwIAAAAAAM/9o+4AAAAAz/2j7gAAAAAAtwFuAAAACAACAAAAAAAAAAEAAAHg/+AAAAIAAAAAAAC3AAEAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAQAAAAC3ABIAtwAAAAAAAAAKABQAHgBCAGQAAAABAAAABgAUAAEAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAADgCuAAEAAAAAAAEADAAAAAEAAAAAAAIADgBAAAEAAAAAAAMADAAiAAEAAAAAAAQADABOAAEAAAAAAAUAFgAMAAEAAAAAAAYABgAuAAEAAAAAAAoANABaAAMAAQQJAAEADAAAAAMAAQQJAAIADgBAAAMAAQQJAAMADAAiAAMAAQQJAAQADABOAAMAAQQJAAUAFgAMAAMAAQQJAAYADAA0AAMAAQQJAAoANABaAHIAYQB0AGkAbgBnAFYAZQByAHMAaQBvAG4AIAAxAC4AMAByAGEAdABpAG4AZ3JhdGluZwByAGEAdABpAG4AZwBSAGUAZwB1AGwAYQByAHIAYQB0AGkAbgBnAEYAbwBuAHQAIABnAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAEkAYwBvAE0AbwBvAG4ALgADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA) format('truetype'), url(data:application/font-woff;charset=utf-8;base64,d09GRk9UVE8AAASwAAoAAAAABGgAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABDRkYgAAAA9AAAAS0AAAEtFpovuE9TLzIAAAIkAAAAYAAAAGAIIweQY21hcAAAAoQAAABMAAAATA984gpnYXNwAAAC0AAAAAgAAAAIAAAAEGhlYWQAAALYAAAANgAAADb/0IhHaGhlYQAAAxAAAAAkAAAAJAKZAedobXR4AAADNAAAABgAAAAYAm4AEm1heHAAAANMAAAABgAAAAYABlAAbmFtZQAAA1QAAAE8AAABPPC1n05wb3N0AAAEkAAAACAAAAAgAAMAAAEABAQAAQEBB3JhdGluZwABAgABADr4HAL4GwP4GAQeCgAZU/+Lix4KABlT/4uLDAeLa/iU+HQFHQAAAHkPHQAAAH4RHQAAAAkdAAABJBIABwEBBw0PERQZHnJhdGluZ3JhdGluZ3UwdTF1MjB1RjBEOXVGMERBAAACAYkABAAGAQEEBwoNVp38lA78lA78lA77lA773Z33bxWLkI2Qj44I9xT3FAWOj5CNkIuQi4+JjoePiI2Gi4YIi/uUBYuGiYeHiIiHh4mGi4aLho2Ijwj7FPcUBYeOiY+LkAgO+92L5hWL95QFi5CNkI6Oj4+PjZCLkIuQiY6HCPcU+xQFj4iNhouGi4aJh4eICPsU+xQFiIeGiYaLhouHjYePiI6Jj4uQCA74lBT4lBWLDAoAAAAAAwIAAZAABQAAAUwBZgAAAEcBTAFmAAAA9QAZAIQAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADw2gHg/+D/4AHgACAAAAABAAAAAAAAAAAAAAAgAAAAAAACAAAAAwAAABQAAwABAAAAFAAEADgAAAAKAAgAAgACAAEAIPDa//3//wAAAAAAIPDZ//3//wAB/+MPKwADAAEAAAAAAAAAAAAAAAEAAf//AA8AAQAAAAEAADfYOJZfDzz1AAsCAAAAAADP/aPuAAAAAM/9o+4AAAAAALcBbgAAAAgAAgAAAAAAAAABAAAB4P/gAAACAAAAAAAAtwABAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAEAAAAAtwASALcAAAAAUAAABgAAAAAADgCuAAEAAAAAAAEADAAAAAEAAAAAAAIADgBAAAEAAAAAAAMADAAiAAEAAAAAAAQADABOAAEAAAAAAAUAFgAMAAEAAAAAAAYABgAuAAEAAAAAAAoANABaAAMAAQQJAAEADAAAAAMAAQQJAAIADgBAAAMAAQQJAAMADAAiAAMAAQQJAAQADABOAAMAAQQJAAUAFgAMAAMAAQQJAAYADAA0AAMAAQQJAAoANABaAHIAYQB0AGkAbgBnAFYAZQByAHMAaQBvAG4AIAAxAC4AMAByAGEAdABpAG4AZ3JhdGluZwByAGEAdABpAG4AZwBSAGUAZwB1AGwAYQByAHIAYQB0AGkAbgBnAEYAbwBuAHQAIABnAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAEkAYwBvAE0AbwBvAG4ALgADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA) format('woff'); + font-weight: normal; + font-style: normal; +} + +/* Dropdown Icon */ +.ui.accordion .title .dropdown.icon, +.ui.accordion .accordion .title .dropdown.icon { + font-family: Accordion; + line-height: 1; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + font-weight: normal; + font-style: normal; + text-align: center; +} +.ui.accordion .title .dropdown.icon:before, +.ui.accordion .accordion .title .dropdown.icon:before { + content: '\f0da' /*rtl:'\f0d9'*/; +} + + +/******************************* + User Overrides +*******************************/ + diff --git a/app/static/semantic/components/accordion.js b/app/static/semantic/components/accordion.js new file mode 100755 index 0000000..94e8830 --- /dev/null +++ b/app/static/semantic/components/accordion.js @@ -0,0 +1,613 @@ +/*! + * # Semantic UI 2.4.1 - Accordion + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */ + +;(function ($, window, document, undefined) { + +'use strict'; + +window = (typeof window != 'undefined' && window.Math == Math) + ? window + : (typeof self != 'undefined' && self.Math == Math) + ? self + : Function('return this')() +; + +$.fn.accordion = function(parameters) { + var + $allModules = $(this), + + time = new Date().getTime(), + performance = [], + + query = arguments[0], + methodInvoked = (typeof query == 'string'), + queryArguments = [].slice.call(arguments, 1), + + requestAnimationFrame = window.requestAnimationFrame + || window.mozRequestAnimationFrame + || window.webkitRequestAnimationFrame + || window.msRequestAnimationFrame + || function(callback) { setTimeout(callback, 0); }, + + returnedValue + ; + $allModules + .each(function() { + var + settings = ( $.isPlainObject(parameters) ) + ? $.extend(true, {}, $.fn.accordion.settings, parameters) + : $.extend({}, $.fn.accordion.settings), + + className = settings.className, + namespace = settings.namespace, + selector = settings.selector, + error = settings.error, + + eventNamespace = '.' + namespace, + moduleNamespace = 'module-' + namespace, + moduleSelector = $allModules.selector || '', + + $module = $(this), + $title = $module.find(selector.title), + $content = $module.find(selector.content), + + element = this, + instance = $module.data(moduleNamespace), + observer, + module + ; + + module = { + + initialize: function() { + module.debug('Initializing', $module); + module.bind.events(); + if(settings.observeChanges) { + module.observeChanges(); + } + module.instantiate(); + }, + + instantiate: function() { + instance = module; + $module + .data(moduleNamespace, module) + ; + }, + + destroy: function() { + module.debug('Destroying previous instance', $module); + $module + .off(eventNamespace) + .removeData(moduleNamespace) + ; + }, + + refresh: function() { + $title = $module.find(selector.title); + $content = $module.find(selector.content); + }, + + observeChanges: function() { + if('MutationObserver' in window) { + observer = new MutationObserver(function(mutations) { + module.debug('DOM tree modified, updating selector cache'); + module.refresh(); + }); + observer.observe(element, { + childList : true, + subtree : true + }); + module.debug('Setting up mutation observer', observer); + } + }, + + bind: { + events: function() { + module.debug('Binding delegated events'); + $module + .on(settings.on + eventNamespace, selector.trigger, module.event.click) + ; + } + }, + + event: { + click: function() { + module.toggle.call(this); + } + }, + + toggle: function(query) { + var + $activeTitle = (query !== undefined) + ? (typeof query === 'number') + ? $title.eq(query) + : $(query).closest(selector.title) + : $(this).closest(selector.title), + $activeContent = $activeTitle.next($content), + isAnimating = $activeContent.hasClass(className.animating), + isActive = $activeContent.hasClass(className.active), + isOpen = (isActive && !isAnimating), + isOpening = (!isActive && isAnimating) + ; + module.debug('Toggling visibility of content', $activeTitle); + if(isOpen || isOpening) { + if(settings.collapsible) { + module.close.call($activeTitle); + } + else { + module.debug('Cannot close accordion content collapsing is disabled'); + } + } + else { + module.open.call($activeTitle); + } + }, + + open: function(query) { + var + $activeTitle = (query !== undefined) + ? (typeof query === 'number') + ? $title.eq(query) + : $(query).closest(selector.title) + : $(this).closest(selector.title), + $activeContent = $activeTitle.next($content), + isAnimating = $activeContent.hasClass(className.animating), + isActive = $activeContent.hasClass(className.active), + isOpen = (isActive || isAnimating) + ; + if(isOpen) { + module.debug('Accordion already open, skipping', $activeContent); + return; + } + module.debug('Opening accordion content', $activeTitle); + settings.onOpening.call($activeContent); + settings.onChanging.call($activeContent); + if(settings.exclusive) { + module.closeOthers.call($activeTitle); + } + $activeTitle + .addClass(className.active) + ; + $activeContent + .stop(true, true) + .addClass(className.animating) + ; + if(settings.animateChildren) { + if($.fn.transition !== undefined && $module.transition('is supported')) { + $activeContent + .children() + .transition({ + animation : 'fade in', + queue : false, + useFailSafe : true, + debug : settings.debug, + verbose : settings.verbose, + duration : settings.duration + }) + ; + } + else { + $activeContent + .children() + .stop(true, true) + .animate({ + opacity: 1 + }, settings.duration, module.resetOpacity) + ; + } + } + $activeContent + .slideDown(settings.duration, settings.easing, function() { + $activeContent + .removeClass(className.animating) + .addClass(className.active) + ; + module.reset.display.call(this); + settings.onOpen.call(this); + settings.onChange.call(this); + }) + ; + }, + + close: function(query) { + var + $activeTitle = (query !== undefined) + ? (typeof query === 'number') + ? $title.eq(query) + : $(query).closest(selector.title) + : $(this).closest(selector.title), + $activeContent = $activeTitle.next($content), + isAnimating = $activeContent.hasClass(className.animating), + isActive = $activeContent.hasClass(className.active), + isOpening = (!isActive && isAnimating), + isClosing = (isActive && isAnimating) + ; + if((isActive || isOpening) && !isClosing) { + module.debug('Closing accordion content', $activeContent); + settings.onClosing.call($activeContent); + settings.onChanging.call($activeContent); + $activeTitle + .removeClass(className.active) + ; + $activeContent + .stop(true, true) + .addClass(className.animating) + ; + if(settings.animateChildren) { + if($.fn.transition !== undefined && $module.transition('is supported')) { + $activeContent + .children() + .transition({ + animation : 'fade out', + queue : false, + useFailSafe : true, + debug : settings.debug, + verbose : settings.verbose, + duration : settings.duration + }) + ; + } + else { + $activeContent + .children() + .stop(true, true) + .animate({ + opacity: 0 + }, settings.duration, module.resetOpacity) + ; + } + } + $activeContent + .slideUp(settings.duration, settings.easing, function() { + $activeContent + .removeClass(className.animating) + .removeClass(className.active) + ; + module.reset.display.call(this); + settings.onClose.call(this); + settings.onChange.call(this); + }) + ; + } + }, + + closeOthers: function(index) { + var + $activeTitle = (index !== undefined) + ? $title.eq(index) + : $(this).closest(selector.title), + $parentTitles = $activeTitle.parents(selector.content).prev(selector.title), + $activeAccordion = $activeTitle.closest(selector.accordion), + activeSelector = selector.title + '.' + className.active + ':visible', + activeContent = selector.content + '.' + className.active + ':visible', + $openTitles, + $nestedTitles, + $openContents + ; + if(settings.closeNested) { + $openTitles = $activeAccordion.find(activeSelector).not($parentTitles); + $openContents = $openTitles.next($content); + } + else { + $openTitles = $activeAccordion.find(activeSelector).not($parentTitles); + $nestedTitles = $activeAccordion.find(activeContent).find(activeSelector).not($parentTitles); + $openTitles = $openTitles.not($nestedTitles); + $openContents = $openTitles.next($content); + } + if( ($openTitles.length > 0) ) { + module.debug('Exclusive enabled, closing other content', $openTitles); + $openTitles + .removeClass(className.active) + ; + $openContents + .removeClass(className.animating) + .stop(true, true) + ; + if(settings.animateChildren) { + if($.fn.transition !== undefined && $module.transition('is supported')) { + $openContents + .children() + .transition({ + animation : 'fade out', + useFailSafe : true, + debug : settings.debug, + verbose : settings.verbose, + duration : settings.duration + }) + ; + } + else { + $openContents + .children() + .stop(true, true) + .animate({ + opacity: 0 + }, settings.duration, module.resetOpacity) + ; + } + } + $openContents + .slideUp(settings.duration , settings.easing, function() { + $(this).removeClass(className.active); + module.reset.display.call(this); + }) + ; + } + }, + + reset: { + + display: function() { + module.verbose('Removing inline display from element', this); + $(this).css('display', ''); + if( $(this).attr('style') === '') { + $(this) + .attr('style', '') + .removeAttr('style') + ; + } + }, + + opacity: function() { + module.verbose('Removing inline opacity from element', this); + $(this).css('opacity', ''); + if( $(this).attr('style') === '') { + $(this) + .attr('style', '') + .removeAttr('style') + ; + } + }, + + }, + + setting: function(name, value) { + module.debug('Changing setting', name, value); + if( $.isPlainObject(name) ) { + $.extend(true, settings, name); + } + else if(value !== undefined) { + if($.isPlainObject(settings[name])) { + $.extend(true, settings[name], value); + } + else { + settings[name] = value; + } + } + else { + return settings[name]; + } + }, + internal: function(name, value) { + module.debug('Changing internal', name, value); + if(value !== undefined) { + if( $.isPlainObject(name) ) { + $.extend(true, module, name); + } + else { + module[name] = value; + } + } + else { + return module[name]; + } + }, + debug: function() { + if(!settings.silent && settings.debug) { + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':'); + module.debug.apply(console, arguments); + } + } + }, + verbose: function() { + if(!settings.silent && settings.verbose && settings.debug) { + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':'); + module.verbose.apply(console, arguments); + } + } + }, + error: function() { + if(!settings.silent) { + module.error = Function.prototype.bind.call(console.error, console, settings.name + ':'); + module.error.apply(console, arguments); + } + }, + performance: { + log: function(message) { + var + currentTime, + executionTime, + previousTime + ; + if(settings.performance) { + currentTime = new Date().getTime(); + previousTime = time || currentTime; + executionTime = currentTime - previousTime; + time = currentTime; + performance.push({ + 'Name' : message[0], + 'Arguments' : [].slice.call(message, 1) || '', + 'Element' : element, + 'Execution Time' : executionTime + }); + } + clearTimeout(module.performance.timer); + module.performance.timer = setTimeout(module.performance.display, 500); + }, + display: function() { + var + title = settings.name + ':', + totalTime = 0 + ; + time = false; + clearTimeout(module.performance.timer); + $.each(performance, function(index, data) { + totalTime += data['Execution Time']; + }); + title += ' ' + totalTime + 'ms'; + if(moduleSelector) { + title += ' \'' + moduleSelector + '\''; + } + if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { + console.groupCollapsed(title); + if(console.table) { + console.table(performance); + } + else { + $.each(performance, function(index, data) { + console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); + }); + } + console.groupEnd(); + } + performance = []; + } + }, + invoke: function(query, passedArguments, context) { + var + object = instance, + maxDepth, + found, + response + ; + passedArguments = passedArguments || queryArguments; + context = element || context; + if(typeof query == 'string' && object !== undefined) { + query = query.split(/[\. ]/); + maxDepth = query.length - 1; + $.each(query, function(depth, value) { + var camelCaseValue = (depth != maxDepth) + ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) + : query + ; + if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) { + object = object[camelCaseValue]; + } + else if( object[camelCaseValue] !== undefined ) { + found = object[camelCaseValue]; + return false; + } + else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) { + object = object[value]; + } + else if( object[value] !== undefined ) { + found = object[value]; + return false; + } + else { + module.error(error.method, query); + return false; + } + }); + } + if ( $.isFunction( found ) ) { + response = found.apply(context, passedArguments); + } + else if(found !== undefined) { + response = found; + } + if($.isArray(returnedValue)) { + returnedValue.push(response); + } + else if(returnedValue !== undefined) { + returnedValue = [returnedValue, response]; + } + else if(response !== undefined) { + returnedValue = response; + } + return found; + } + }; + if(methodInvoked) { + if(instance === undefined) { + module.initialize(); + } + module.invoke(query); + } + else { + if(instance !== undefined) { + instance.invoke('destroy'); + } + module.initialize(); + } + }) + ; + return (returnedValue !== undefined) + ? returnedValue + : this + ; +}; + +$.fn.accordion.settings = { + + name : 'Accordion', + namespace : 'accordion', + + silent : false, + debug : false, + verbose : false, + performance : true, + + on : 'click', // event on title that opens accordion + + observeChanges : true, // whether accordion should automatically refresh on DOM insertion + + exclusive : true, // whether a single accordion content panel should be open at once + collapsible : true, // whether accordion content can be closed + closeNested : false, // whether nested content should be closed when a panel is closed + animateChildren : true, // whether children opacity should be animated + + duration : 350, // duration of animation + easing : 'easeOutQuad', // easing equation for animation + + onOpening : function(){}, // callback before open animation + onClosing : function(){}, // callback before closing animation + onChanging : function(){}, // callback before closing or opening animation + + onOpen : function(){}, // callback after open animation + onClose : function(){}, // callback after closing animation + onChange : function(){}, // callback after closing or opening animation + + error: { + method : 'The method you called is not defined' + }, + + className : { + active : 'active', + animating : 'animating' + }, + + selector : { + accordion : '.accordion', + title : '.title', + trigger : '.title', + content : '.content' + } + +}; + +// Adds easing +$.extend( $.easing, { + easeOutQuad: function (x, t, b, c, d) { + return -c *(t/=d)*(t-2) + b; + } +}); + +})( jQuery, window, document ); + diff --git a/app/static/semantic/components/accordion.min.css b/app/static/semantic/components/accordion.min.css new file mode 100755 index 0000000..80a8e46 --- /dev/null +++ b/app/static/semantic/components/accordion.min.css @@ -0,0 +1,9 @@ +/*! + * # Semantic UI 2.4.1 - Accordion + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */.ui.accordion,.ui.accordion .accordion{max-width:100%}.ui.accordion .accordion{margin:1em 0 0;padding:0}.ui.accordion .accordion .title,.ui.accordion .title{cursor:pointer}.ui.accordion .title:not(.ui){padding:.5em 0;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-size:1em;color:rgba(0,0,0,.87)}.ui.accordion .accordion .title~.content,.ui.accordion .title~.content{display:none}.ui.accordion:not(.styled) .accordion .title~.content:not(.ui),.ui.accordion:not(.styled) .title~.content:not(.ui){margin:'';padding:.5em 0 1em}.ui.accordion:not(.styled) .title~.content:not(.ui):last-child{padding-bottom:0}.ui.accordion .accordion .title .dropdown.icon,.ui.accordion .title .dropdown.icon{display:inline-block;float:none;opacity:1;width:1.25em;height:1em;margin:0 .25rem 0 0;padding:0;font-size:1em;-webkit-transition:opacity .1s ease,-webkit-transform .1s ease;transition:opacity .1s ease,-webkit-transform .1s ease;transition:transform .1s ease,opacity .1s ease;transition:transform .1s ease,opacity .1s ease,-webkit-transform .1s ease;vertical-align:baseline;-webkit-transform:none;transform:none}.ui.accordion.menu .item .title{display:block;padding:0}.ui.accordion.menu .item .title>.dropdown.icon{float:right;margin:.21425em 0 0 1em;-webkit-transform:rotate(180deg);transform:rotate(180deg)}.ui.accordion .ui.header .dropdown.icon{font-size:1em;margin:0 .25rem 0 0}.ui.accordion .accordion .active.title .dropdown.icon,.ui.accordion .active.title .dropdown.icon{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.ui.accordion.menu .item .active.title>.dropdown.icon{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.ui.styled.accordion{width:600px}.ui.styled.accordion,.ui.styled.accordion .accordion{border-radius:.28571429rem;background:#fff;-webkit-box-shadow:0 1px 2px 0 rgba(34,36,38,.15),0 0 0 1px rgba(34,36,38,.15);box-shadow:0 1px 2px 0 rgba(34,36,38,.15),0 0 0 1px rgba(34,36,38,.15)}.ui.styled.accordion .accordion .title,.ui.styled.accordion .title{margin:0;padding:.75em 1em;color:rgba(0,0,0,.4);font-weight:700;border-top:1px solid rgba(34,36,38,.15);-webkit-transition:background .1s ease,color .1s ease;transition:background .1s ease,color .1s ease}.ui.styled.accordion .accordion .title:first-child,.ui.styled.accordion>.title:first-child{border-top:none}.ui.styled.accordion .accordion .content,.ui.styled.accordion .content{margin:0;padding:.5em 1em 1.5em}.ui.styled.accordion .accordion .content{padding:0;padding:.5em 1em 1.5em}.ui.styled.accordion .accordion .active.title,.ui.styled.accordion .accordion .title:hover,.ui.styled.accordion .active.title,.ui.styled.accordion .title:hover{background:0 0;color:rgba(0,0,0,.87)}.ui.styled.accordion .accordion .active.title,.ui.styled.accordion .accordion .title:hover{background:0 0;color:rgba(0,0,0,.87)}.ui.styled.accordion .active.title{background:0 0;color:rgba(0,0,0,.95)}.ui.styled.accordion .accordion .active.title{background:0 0;color:rgba(0,0,0,.95)}.ui.accordion .accordion .active.content,.ui.accordion .active.content{display:block}.ui.fluid.accordion,.ui.fluid.accordion .accordion{width:100%}.ui.inverted.accordion .title:not(.ui){color:rgba(255,255,255,.9)}@font-face{font-family:Accordion;src:url(data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMggjB5AAAAC8AAAAYGNtYXAPfOIKAAABHAAAAExnYXNwAAAAEAAAAWgAAAAIZ2x5Zryj6HgAAAFwAAAAyGhlYWT/0IhHAAACOAAAADZoaGVhApkB5wAAAnAAAAAkaG10eAJuABIAAAKUAAAAGGxvY2EAjABWAAACrAAAAA5tYXhwAAgAFgAAArwAAAAgbmFtZfC1n04AAALcAAABPHBvc3QAAwAAAAAEGAAAACAAAwIAAZAABQAAAUwBZgAAAEcBTAFmAAAA9QAZAIQAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADw2gHg/+D/4AHgACAAAAABAAAAAAAAAAAAAAAgAAAAAAACAAAAAwAAABQAAwABAAAAFAAEADgAAAAKAAgAAgACAAEAIPDa//3//wAAAAAAIPDZ//3//wAB/+MPKwADAAEAAAAAAAAAAAAAAAEAAf//AA8AAQAAAAAAAAAAAAIAADc5AQAAAAABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQASAEkAtwFuABMAADc0PwE2FzYXFh0BFAcGJwYvASY1EgaABQgHBQYGBQcIBYAG2wcGfwcBAQcECf8IBAcBAQd/BgYAAAAAAQAAAEkApQFuABMAADcRNDc2MzIfARYVFA8BBiMiJyY1AAUGBwgFgAYGgAUIBwYFWwEACAUGBoAFCAcFgAYGBQcAAAABAAAAAQAAqWYls18PPPUACwIAAAAAAM/9o+4AAAAAz/2j7gAAAAAAtwFuAAAACAACAAAAAAAAAAEAAAHg/+AAAAIAAAAAAAC3AAEAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAQAAAAC3ABIAtwAAAAAAAAAKABQAHgBCAGQAAAABAAAABgAUAAEAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAADgCuAAEAAAAAAAEADAAAAAEAAAAAAAIADgBAAAEAAAAAAAMADAAiAAEAAAAAAAQADABOAAEAAAAAAAUAFgAMAAEAAAAAAAYABgAuAAEAAAAAAAoANABaAAMAAQQJAAEADAAAAAMAAQQJAAIADgBAAAMAAQQJAAMADAAiAAMAAQQJAAQADABOAAMAAQQJAAUAFgAMAAMAAQQJAAYADAA0AAMAAQQJAAoANABaAHIAYQB0AGkAbgBnAFYAZQByAHMAaQBvAG4AIAAxAC4AMAByAGEAdABpAG4AZ3JhdGluZwByAGEAdABpAG4AZwBSAGUAZwB1AGwAYQByAHIAYQB0AGkAbgBnAEYAbwBuAHQAIABnAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAEkAYwBvAE0AbwBvAG4ALgADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA) format('truetype'),url(data:application/font-woff;charset=utf-8;base64,d09GRk9UVE8AAASwAAoAAAAABGgAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABDRkYgAAAA9AAAAS0AAAEtFpovuE9TLzIAAAIkAAAAYAAAAGAIIweQY21hcAAAAoQAAABMAAAATA984gpnYXNwAAAC0AAAAAgAAAAIAAAAEGhlYWQAAALYAAAANgAAADb/0IhHaGhlYQAAAxAAAAAkAAAAJAKZAedobXR4AAADNAAAABgAAAAYAm4AEm1heHAAAANMAAAABgAAAAYABlAAbmFtZQAAA1QAAAE8AAABPPC1n05wb3N0AAAEkAAAACAAAAAgAAMAAAEABAQAAQEBB3JhdGluZwABAgABADr4HAL4GwP4GAQeCgAZU/+Lix4KABlT/4uLDAeLa/iU+HQFHQAAAHkPHQAAAH4RHQAAAAkdAAABJBIABwEBBw0PERQZHnJhdGluZ3JhdGluZ3UwdTF1MjB1RjBEOXVGMERBAAACAYkABAAGAQEEBwoNVp38lA78lA78lA77lA773Z33bxWLkI2Qj44I9xT3FAWOj5CNkIuQi4+JjoePiI2Gi4YIi/uUBYuGiYeHiIiHh4mGi4aLho2Ijwj7FPcUBYeOiY+LkAgO+92L5hWL95QFi5CNkI6Oj4+PjZCLkIuQiY6HCPcU+xQFj4iNhouGi4aJh4eICPsU+xQFiIeGiYaLhouHjYePiI6Jj4uQCA74lBT4lBWLDAoAAAAAAwIAAZAABQAAAUwBZgAAAEcBTAFmAAAA9QAZAIQAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADw2gHg/+D/4AHgACAAAAABAAAAAAAAAAAAAAAgAAAAAAACAAAAAwAAABQAAwABAAAAFAAEADgAAAAKAAgAAgACAAEAIPDa//3//wAAAAAAIPDZ//3//wAB/+MPKwADAAEAAAAAAAAAAAAAAAEAAf//AA8AAQAAAAEAADfYOJZfDzz1AAsCAAAAAADP/aPuAAAAAM/9o+4AAAAAALcBbgAAAAgAAgAAAAAAAAABAAAB4P/gAAACAAAAAAAAtwABAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAEAAAAAtwASALcAAAAAUAAABgAAAAAADgCuAAEAAAAAAAEADAAAAAEAAAAAAAIADgBAAAEAAAAAAAMADAAiAAEAAAAAAAQADABOAAEAAAAAAAUAFgAMAAEAAAAAAAYABgAuAAEAAAAAAAoANABaAAMAAQQJAAEADAAAAAMAAQQJAAIADgBAAAMAAQQJAAMADAAiAAMAAQQJAAQADABOAAMAAQQJAAUAFgAMAAMAAQQJAAYADAA0AAMAAQQJAAoANABaAHIAYQB0AGkAbgBnAFYAZQByAHMAaQBvAG4AIAAxAC4AMAByAGEAdABpAG4AZ3JhdGluZwByAGEAdABpAG4AZwBSAGUAZwB1AGwAYQByAHIAYQB0AGkAbgBnAEYAbwBuAHQAIABnAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAEkAYwBvAE0AbwBvAG4ALgADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA) format('woff');font-weight:400;font-style:normal}.ui.accordion .accordion .title .dropdown.icon,.ui.accordion .title .dropdown.icon{font-family:Accordion;line-height:1;-webkit-backface-visibility:hidden;backface-visibility:hidden;font-weight:400;font-style:normal;text-align:center}.ui.accordion .accordion .title .dropdown.icon:before,.ui.accordion .title .dropdown.icon:before{content:'\f0da'} \ No newline at end of file diff --git a/app/static/semantic/components/accordion.min.js b/app/static/semantic/components/accordion.min.js new file mode 100755 index 0000000..1dd73b8 --- /dev/null +++ b/app/static/semantic/components/accordion.min.js @@ -0,0 +1 @@ +!function(F,A,e,q){"use strict";A=void 0!==A&&A.Math==Math?A:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),F.fn.accordion=function(a){var v,s=F(this),b=(new Date).getTime(),y=[],C=a,O="string"==typeof C,x=[].slice.call(arguments,1);A.requestAnimationFrame||A.mozRequestAnimationFrame||A.webkitRequestAnimationFrame||A.msRequestAnimationFrame;return s.each(function(){var e,c,u=F.isPlainObject(a)?F.extend(!0,{},F.fn.accordion.settings,a):F.extend({},F.fn.accordion.settings),d=u.className,n=u.namespace,g=u.selector,l=u.error,t="."+n,i="module-"+n,o=s.selector||"",f=F(this),m=f.find(g.title),p=f.find(g.content),r=this,h=f.data(i);c={initialize:function(){c.debug("Initializing",f),c.bind.events(),u.observeChanges&&c.observeChanges(),c.instantiate()},instantiate:function(){h=c,f.data(i,c)},destroy:function(){c.debug("Destroying previous instance",f),f.off(t).removeData(i)},refresh:function(){m=f.find(g.title),p=f.find(g.content)},observeChanges:function(){"MutationObserver"in A&&((e=new MutationObserver(function(e){c.debug("DOM tree modified, updating selector cache"),c.refresh()})).observe(r,{childList:!0,subtree:!0}),c.debug("Setting up mutation observer",e))},bind:{events:function(){c.debug("Binding delegated events"),f.on(u.on+t,g.trigger,c.event.click)}},event:{click:function(){c.toggle.call(this)}},toggle:function(e){var n=e!==q?"number"==typeof e?m.eq(e):F(e).closest(g.title):F(this).closest(g.title),t=n.next(p),i=t.hasClass(d.animating),o=t.hasClass(d.active),a=o&&!i,s=!o&&i;c.debug("Toggling visibility of content",n),a||s?u.collapsible?c.close.call(n):c.debug("Cannot close accordion content collapsing is disabled"):c.open.call(n)},open:function(e){var n=e!==q?"number"==typeof e?m.eq(e):F(e).closest(g.title):F(this).closest(g.title),t=n.next(p),i=t.hasClass(d.animating);t.hasClass(d.active)||i?c.debug("Accordion already open, skipping",t):(c.debug("Opening accordion content",n),u.onOpening.call(t),u.onChanging.call(t),u.exclusive&&c.closeOthers.call(n),n.addClass(d.active),t.stop(!0,!0).addClass(d.animating),u.animateChildren&&(F.fn.transition!==q&&f.transition("is supported")?t.children().transition({animation:"fade in",queue:!1,useFailSafe:!0,debug:u.debug,verbose:u.verbose,duration:u.duration}):t.children().stop(!0,!0).animate({opacity:1},u.duration,c.resetOpacity)),t.slideDown(u.duration,u.easing,function(){t.removeClass(d.animating).addClass(d.active),c.reset.display.call(this),u.onOpen.call(this),u.onChange.call(this)}))},close:function(e){var n=e!==q?"number"==typeof e?m.eq(e):F(e).closest(g.title):F(this).closest(g.title),t=n.next(p),i=t.hasClass(d.animating),o=t.hasClass(d.active);!o&&!(!o&&i)||o&&i||(c.debug("Closing accordion content",t),u.onClosing.call(t),u.onChanging.call(t),n.removeClass(d.active),t.stop(!0,!0).addClass(d.animating),u.animateChildren&&(F.fn.transition!==q&&f.transition("is supported")?t.children().transition({animation:"fade out",queue:!1,useFailSafe:!0,debug:u.debug,verbose:u.verbose,duration:u.duration}):t.children().stop(!0,!0).animate({opacity:0},u.duration,c.resetOpacity)),t.slideUp(u.duration,u.easing,function(){t.removeClass(d.animating).removeClass(d.active),c.reset.display.call(this),u.onClose.call(this),u.onChange.call(this)}))},closeOthers:function(e){var n,t,i,o=e!==q?m.eq(e):F(this).closest(g.title),a=o.parents(g.content).prev(g.title),s=o.closest(g.accordion),l=g.title+"."+d.active+":visible",r=g.content+"."+d.active+":visible";i=u.closeNested?(n=s.find(l).not(a)).next(p):(n=s.find(l).not(a),t=s.find(r).find(l).not(a),(n=n.not(t)).next(p)),0 0); + }, + expectingJSON: function() { + return settings.dataType === 'json' || settings.dataType === 'jsonp'; + }, + form: function() { + return $module.is('form') || $context.is('form'); + }, + mocked: function() { + return (settings.mockResponse || settings.mockResponseAsync || settings.response || settings.responseAsync); + }, + input: function() { + return $module.is('input'); + }, + loading: function() { + return (module.request) + ? (module.request.state() == 'pending') + : false + ; + }, + abortedRequest: function(xhr) { + if(xhr && xhr.readyState !== undefined && xhr.readyState === 0) { + module.verbose('XHR request determined to be aborted'); + return true; + } + else { + module.verbose('XHR request was not aborted'); + return false; + } + }, + validResponse: function(response) { + if( (!module.is.expectingJSON()) || !$.isFunction(settings.successTest) ) { + module.verbose('Response is not JSON, skipping validation', settings.successTest, response); + return true; + } + module.debug('Checking JSON returned success', settings.successTest, response); + if( settings.successTest(response) ) { + module.debug('Response passed success test', response); + return true; + } + else { + module.debug('Response failed success test', response); + return false; + } + } + }, + + was: { + cancelled: function() { + return (module.cancelled || false); + }, + succesful: function() { + return (module.request && module.request.state() == 'resolved'); + }, + failure: function() { + return (module.request && module.request.state() == 'rejected'); + }, + complete: function() { + return (module.request && (module.request.state() == 'resolved' || module.request.state() == 'rejected') ); + } + }, + + add: { + urlData: function(url, urlData) { + var + requiredVariables, + optionalVariables + ; + if(url) { + requiredVariables = url.match(settings.regExp.required); + optionalVariables = url.match(settings.regExp.optional); + urlData = urlData || settings.urlData; + if(requiredVariables) { + module.debug('Looking for required URL variables', requiredVariables); + $.each(requiredVariables, function(index, templatedString) { + var + // allow legacy {$var} style + variable = (templatedString.indexOf('$') !== -1) + ? templatedString.substr(2, templatedString.length - 3) + : templatedString.substr(1, templatedString.length - 2), + value = ($.isPlainObject(urlData) && urlData[variable] !== undefined) + ? urlData[variable] + : ($module.data(variable) !== undefined) + ? $module.data(variable) + : ($context.data(variable) !== undefined) + ? $context.data(variable) + : urlData[variable] + ; + // remove value + if(value === undefined) { + module.error(error.requiredParameter, variable, url); + url = false; + return false; + } + else { + module.verbose('Found required variable', variable, value); + value = (settings.encodeParameters) + ? module.get.urlEncodedValue(value) + : value + ; + url = url.replace(templatedString, value); + } + }); + } + if(optionalVariables) { + module.debug('Looking for optional URL variables', requiredVariables); + $.each(optionalVariables, function(index, templatedString) { + var + // allow legacy {/$var} style + variable = (templatedString.indexOf('$') !== -1) + ? templatedString.substr(3, templatedString.length - 4) + : templatedString.substr(2, templatedString.length - 3), + value = ($.isPlainObject(urlData) && urlData[variable] !== undefined) + ? urlData[variable] + : ($module.data(variable) !== undefined) + ? $module.data(variable) + : ($context.data(variable) !== undefined) + ? $context.data(variable) + : urlData[variable] + ; + // optional replacement + if(value !== undefined) { + module.verbose('Optional variable Found', variable, value); + url = url.replace(templatedString, value); + } + else { + module.verbose('Optional variable not found', variable); + // remove preceding slash if set + if(url.indexOf('/' + templatedString) !== -1) { + url = url.replace('/' + templatedString, ''); + } + else { + url = url.replace(templatedString, ''); + } + } + }); + } + } + return url; + }, + formData: function(data) { + var + canSerialize = ($.fn.serializeObject !== undefined), + formData = (canSerialize) + ? $form.serializeObject() + : $form.serialize(), + hasOtherData + ; + data = data || settings.data; + hasOtherData = $.isPlainObject(data); + + if(hasOtherData) { + if(canSerialize) { + module.debug('Extending existing data with form data', data, formData); + data = $.extend(true, {}, data, formData); + } + else { + module.error(error.missingSerialize); + module.debug('Cant extend data. Replacing data with form data', data, formData); + data = formData; + } + } + else { + module.debug('Adding form data', formData); + data = formData; + } + return data; + } + }, + + send: { + request: function() { + module.set.loading(); + module.request = module.create.request(); + if( module.is.mocked() ) { + module.mockedXHR = module.create.mockedXHR(); + } + else { + module.xhr = module.create.xhr(); + } + settings.onRequest.call(context, module.request, module.xhr); + } + }, + + event: { + trigger: function(event) { + module.query(); + if(event.type == 'submit' || event.type == 'click') { + event.preventDefault(); + } + }, + xhr: { + always: function() { + // nothing special + }, + done: function(response, textStatus, xhr) { + var + context = this, + elapsedTime = (new Date().getTime() - requestStartTime), + timeLeft = (settings.loadingDuration - elapsedTime), + translatedResponse = ( $.isFunction(settings.onResponse) ) + ? module.is.expectingJSON() + ? settings.onResponse.call(context, $.extend(true, {}, response)) + : settings.onResponse.call(context, response) + : false + ; + timeLeft = (timeLeft > 0) + ? timeLeft + : 0 + ; + if(translatedResponse) { + module.debug('Modified API response in onResponse callback', settings.onResponse, translatedResponse, response); + response = translatedResponse; + } + if(timeLeft > 0) { + module.debug('Response completed early delaying state change by', timeLeft); + } + setTimeout(function() { + if( module.is.validResponse(response) ) { + module.request.resolveWith(context, [response, xhr]); + } + else { + module.request.rejectWith(context, [xhr, 'invalid']); + } + }, timeLeft); + }, + fail: function(xhr, status, httpMessage) { + var + context = this, + elapsedTime = (new Date().getTime() - requestStartTime), + timeLeft = (settings.loadingDuration - elapsedTime) + ; + timeLeft = (timeLeft > 0) + ? timeLeft + : 0 + ; + if(timeLeft > 0) { + module.debug('Response completed early delaying state change by', timeLeft); + } + setTimeout(function() { + if( module.is.abortedRequest(xhr) ) { + module.request.rejectWith(context, [xhr, 'aborted', httpMessage]); + } + else { + module.request.rejectWith(context, [xhr, 'error', status, httpMessage]); + } + }, timeLeft); + } + }, + request: { + done: function(response, xhr) { + module.debug('Successful API Response', response); + if(settings.cache === 'local' && url) { + module.write.cachedResponse(url, response); + module.debug('Saving server response locally', module.cache); + } + settings.onSuccess.call(context, response, $module, xhr); + }, + complete: function(firstParameter, secondParameter) { + var + xhr, + response + ; + // have to guess callback parameters based on request success + if( module.was.succesful() ) { + response = firstParameter; + xhr = secondParameter; + } + else { + xhr = firstParameter; + response = module.get.responseFromXHR(xhr); + } + module.remove.loading(); + settings.onComplete.call(context, response, $module, xhr); + }, + fail: function(xhr, status, httpMessage) { + var + // pull response from xhr if available + response = module.get.responseFromXHR(xhr), + errorMessage = module.get.errorFromRequest(response, status, httpMessage) + ; + if(status == 'aborted') { + module.debug('XHR Aborted (Most likely caused by page navigation or CORS Policy)', status, httpMessage); + settings.onAbort.call(context, status, $module, xhr); + return true; + } + else if(status == 'invalid') { + module.debug('JSON did not pass success test. A server-side error has most likely occurred', response); + } + else if(status == 'error') { + if(xhr !== undefined) { + module.debug('XHR produced a server error', status, httpMessage); + // make sure we have an error to display to console + if( xhr.status != 200 && httpMessage !== undefined && httpMessage !== '') { + module.error(error.statusMessage + httpMessage, ajaxSettings.url); + } + settings.onError.call(context, errorMessage, $module, xhr); + } + } + + if(settings.errorDuration && status !== 'aborted') { + module.debug('Adding error state'); + module.set.error(); + if( module.should.removeError() ) { + setTimeout(module.remove.error, settings.errorDuration); + } + } + module.debug('API Request failed', errorMessage, xhr); + settings.onFailure.call(context, response, $module, xhr); + } + } + }, + + create: { + + request: function() { + // api request promise + return $.Deferred() + .always(module.event.request.complete) + .done(module.event.request.done) + .fail(module.event.request.fail) + ; + }, + + mockedXHR: function () { + var + // xhr does not simulate these properties of xhr but must return them + textStatus = false, + status = false, + httpMessage = false, + responder = settings.mockResponse || settings.response, + asyncResponder = settings.mockResponseAsync || settings.responseAsync, + asyncCallback, + response, + mockedXHR + ; + + mockedXHR = $.Deferred() + .always(module.event.xhr.complete) + .done(module.event.xhr.done) + .fail(module.event.xhr.fail) + ; + + if(responder) { + if( $.isFunction(responder) ) { + module.debug('Using specified synchronous callback', responder); + response = responder.call(context, requestSettings); + } + else { + module.debug('Using settings specified response', responder); + response = responder; + } + // simulating response + mockedXHR.resolveWith(context, [ response, textStatus, { responseText: response }]); + } + else if( $.isFunction(asyncResponder) ) { + asyncCallback = function(response) { + module.debug('Async callback returned response', response); + + if(response) { + mockedXHR.resolveWith(context, [ response, textStatus, { responseText: response }]); + } + else { + mockedXHR.rejectWith(context, [{ responseText: response }, status, httpMessage]); + } + }; + module.debug('Using specified async response callback', asyncResponder); + asyncResponder.call(context, requestSettings, asyncCallback); + } + return mockedXHR; + }, + + xhr: function() { + var + xhr + ; + // ajax request promise + xhr = $.ajax(ajaxSettings) + .always(module.event.xhr.always) + .done(module.event.xhr.done) + .fail(module.event.xhr.fail) + ; + module.verbose('Created server request', xhr, ajaxSettings); + return xhr; + } + }, + + set: { + error: function() { + module.verbose('Adding error state to element', $context); + $context.addClass(className.error); + }, + loading: function() { + module.verbose('Adding loading state to element', $context); + $context.addClass(className.loading); + requestStartTime = new Date().getTime(); + } + }, + + remove: { + error: function() { + module.verbose('Removing error state from element', $context); + $context.removeClass(className.error); + }, + loading: function() { + module.verbose('Removing loading state from element', $context); + $context.removeClass(className.loading); + } + }, + + get: { + responseFromXHR: function(xhr) { + return $.isPlainObject(xhr) + ? (module.is.expectingJSON()) + ? module.decode.json(xhr.responseText) + : xhr.responseText + : false + ; + }, + errorFromRequest: function(response, status, httpMessage) { + return ($.isPlainObject(response) && response.error !== undefined) + ? response.error // use json error message + : (settings.error[status] !== undefined) // use server error message + ? settings.error[status] + : httpMessage + ; + }, + request: function() { + return module.request || false; + }, + xhr: function() { + return module.xhr || false; + }, + settings: function() { + var + runSettings + ; + runSettings = settings.beforeSend.call(context, settings); + if(runSettings) { + if(runSettings.success !== undefined) { + module.debug('Legacy success callback detected', runSettings); + module.error(error.legacyParameters, runSettings.success); + runSettings.onSuccess = runSettings.success; + } + if(runSettings.failure !== undefined) { + module.debug('Legacy failure callback detected', runSettings); + module.error(error.legacyParameters, runSettings.failure); + runSettings.onFailure = runSettings.failure; + } + if(runSettings.complete !== undefined) { + module.debug('Legacy complete callback detected', runSettings); + module.error(error.legacyParameters, runSettings.complete); + runSettings.onComplete = runSettings.complete; + } + } + if(runSettings === undefined) { + module.error(error.noReturnedValue); + } + if(runSettings === false) { + return runSettings; + } + return (runSettings !== undefined) + ? $.extend(true, {}, runSettings) + : $.extend(true, {}, settings) + ; + }, + urlEncodedValue: function(value) { + var + decodedValue = window.decodeURIComponent(value), + encodedValue = window.encodeURIComponent(value), + alreadyEncoded = (decodedValue !== value) + ; + if(alreadyEncoded) { + module.debug('URL value is already encoded, avoiding double encoding', value); + return value; + } + module.verbose('Encoding value using encodeURIComponent', value, encodedValue); + return encodedValue; + }, + defaultData: function() { + var + data = {} + ; + if( !$.isWindow(element) ) { + if( module.is.input() ) { + data.value = $module.val(); + } + else if( module.is.form() ) { + + } + else { + data.text = $module.text(); + } + } + return data; + }, + event: function() { + if( $.isWindow(element) || settings.on == 'now' ) { + module.debug('API called without element, no events attached'); + return false; + } + else if(settings.on == 'auto') { + if( $module.is('input') ) { + return (element.oninput !== undefined) + ? 'input' + : (element.onpropertychange !== undefined) + ? 'propertychange' + : 'keyup' + ; + } + else if( $module.is('form') ) { + return 'submit'; + } + else { + return 'click'; + } + } + else { + return settings.on; + } + }, + templatedURL: function(action) { + action = action || $module.data(metadata.action) || settings.action || false; + url = $module.data(metadata.url) || settings.url || false; + if(url) { + module.debug('Using specified url', url); + return url; + } + if(action) { + module.debug('Looking up url for action', action, settings.api); + if(settings.api[action] === undefined && !module.is.mocked()) { + module.error(error.missingAction, settings.action, settings.api); + return; + } + url = settings.api[action]; + } + else if( module.is.form() ) { + url = $module.attr('action') || $context.attr('action') || false; + module.debug('No url or action specified, defaulting to form action', url); + } + return url; + } + }, + + abort: function() { + var + xhr = module.get.xhr() + ; + if( xhr && xhr.state() !== 'resolved') { + module.debug('Cancelling API request'); + xhr.abort(); + } + }, + + // reset state + reset: function() { + module.remove.error(); + module.remove.loading(); + }, + + setting: function(name, value) { + module.debug('Changing setting', name, value); + if( $.isPlainObject(name) ) { + $.extend(true, settings, name); + } + else if(value !== undefined) { + if($.isPlainObject(settings[name])) { + $.extend(true, settings[name], value); + } + else { + settings[name] = value; + } + } + else { + return settings[name]; + } + }, + internal: function(name, value) { + if( $.isPlainObject(name) ) { + $.extend(true, module, name); + } + else if(value !== undefined) { + module[name] = value; + } + else { + return module[name]; + } + }, + debug: function() { + if(!settings.silent && settings.debug) { + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':'); + module.debug.apply(console, arguments); + } + } + }, + verbose: function() { + if(!settings.silent && settings.verbose && settings.debug) { + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':'); + module.verbose.apply(console, arguments); + } + } + }, + error: function() { + if(!settings.silent) { + module.error = Function.prototype.bind.call(console.error, console, settings.name + ':'); + module.error.apply(console, arguments); + } + }, + performance: { + log: function(message) { + var + currentTime, + executionTime, + previousTime + ; + if(settings.performance) { + currentTime = new Date().getTime(); + previousTime = time || currentTime; + executionTime = currentTime - previousTime; + time = currentTime; + performance.push({ + 'Name' : message[0], + 'Arguments' : [].slice.call(message, 1) || '', + //'Element' : element, + 'Execution Time' : executionTime + }); + } + clearTimeout(module.performance.timer); + module.performance.timer = setTimeout(module.performance.display, 500); + }, + display: function() { + var + title = settings.name + ':', + totalTime = 0 + ; + time = false; + clearTimeout(module.performance.timer); + $.each(performance, function(index, data) { + totalTime += data['Execution Time']; + }); + title += ' ' + totalTime + 'ms'; + if(moduleSelector) { + title += ' \'' + moduleSelector + '\''; + } + if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { + console.groupCollapsed(title); + if(console.table) { + console.table(performance); + } + else { + $.each(performance, function(index, data) { + console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); + }); + } + console.groupEnd(); + } + performance = []; + } + }, + invoke: function(query, passedArguments, context) { + var + object = instance, + maxDepth, + found, + response + ; + passedArguments = passedArguments || queryArguments; + context = element || context; + if(typeof query == 'string' && object !== undefined) { + query = query.split(/[\. ]/); + maxDepth = query.length - 1; + $.each(query, function(depth, value) { + var camelCaseValue = (depth != maxDepth) + ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) + : query + ; + if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) { + object = object[camelCaseValue]; + } + else if( object[camelCaseValue] !== undefined ) { + found = object[camelCaseValue]; + return false; + } + else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) { + object = object[value]; + } + else if( object[value] !== undefined ) { + found = object[value]; + return false; + } + else { + module.error(error.method, query); + return false; + } + }); + } + if ( $.isFunction( found ) ) { + response = found.apply(context, passedArguments); + } + else if(found !== undefined) { + response = found; + } + if($.isArray(returnedValue)) { + returnedValue.push(response); + } + else if(returnedValue !== undefined) { + returnedValue = [returnedValue, response]; + } + else if(response !== undefined) { + returnedValue = response; + } + return found; + } + }; + + if(methodInvoked) { + if(instance === undefined) { + module.initialize(); + } + module.invoke(query); + } + else { + if(instance !== undefined) { + instance.invoke('destroy'); + } + module.initialize(); + } + }) + ; + + return (returnedValue !== undefined) + ? returnedValue + : this + ; +}; + +$.api.settings = { + + name : 'API', + namespace : 'api', + + debug : false, + verbose : false, + performance : true, + + // object containing all templates endpoints + api : {}, + + // whether to cache responses + cache : true, + + // whether new requests should abort previous requests + interruptRequests : true, + + // event binding + on : 'auto', + + // context for applying state classes + stateContext : false, + + // duration for loading state + loadingDuration : 0, + + // whether to hide errors after a period of time + hideError : 'auto', + + // duration for error state + errorDuration : 2000, + + // whether parameters should be encoded with encodeURIComponent + encodeParameters : true, + + // API action to use + action : false, + + // templated URL to use + url : false, + + // base URL to apply to all endpoints + base : '', + + // data that will + urlData : {}, + + // whether to add default data to url data + defaultData : true, + + // whether to serialize closest form + serializeForm : false, + + // how long to wait before request should occur + throttle : 0, + + // whether to throttle first request or only repeated + throttleFirstRequest : true, + + // standard ajax settings + method : 'get', + data : {}, + dataType : 'json', + + // mock response + mockResponse : false, + mockResponseAsync : false, + + // aliases for mock + response : false, + responseAsync : false, + + // callbacks before request + beforeSend : function(settings) { return settings; }, + beforeXHR : function(xhr) {}, + onRequest : function(promise, xhr) {}, + + // after request + onResponse : false, // function(response) { }, + + // response was successful, if JSON passed validation + onSuccess : function(response, $module) {}, + + // request finished without aborting + onComplete : function(response, $module) {}, + + // failed JSON success test + onFailure : function(response, $module) {}, + + // server error + onError : function(errorMessage, $module) {}, + + // request aborted + onAbort : function(errorMessage, $module) {}, + + successTest : false, + + // errors + error : { + beforeSend : 'The before send function has aborted the request', + error : 'There was an error with your request', + exitConditions : 'API Request Aborted. Exit conditions met', + JSONParse : 'JSON could not be parsed during error handling', + legacyParameters : 'You are using legacy API success callback names', + method : 'The method you called is not defined', + missingAction : 'API action used but no url was defined', + missingSerialize : 'jquery-serialize-object is required to add form data to an existing data object', + missingURL : 'No URL specified for api event', + noReturnedValue : 'The beforeSend callback must return a settings object, beforeSend ignored.', + noStorage : 'Caching responses locally requires session storage', + parseError : 'There was an error parsing your request', + requiredParameter : 'Missing a required URL parameter: ', + statusMessage : 'Server gave an error: ', + timeout : 'Your request timed out' + }, + + regExp : { + required : /\{\$*[A-z0-9]+\}/g, + optional : /\{\/\$*[A-z0-9]+\}/g, + }, + + className: { + loading : 'loading', + error : 'error' + }, + + selector: { + disabled : '.disabled', + form : 'form' + }, + + metadata: { + action : 'action', + url : 'url' + } +}; + + + +})( jQuery, window, document ); diff --git a/app/static/semantic/components/api.min.js b/app/static/semantic/components/api.min.js new file mode 100755 index 0000000..bc1ce08 --- /dev/null +++ b/app/static/semantic/components/api.min.js @@ -0,0 +1 @@ +!function(j,O,e,w){"use strict";O=void 0!==O&&O.Math==Math?O:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();j.api=j.fn.api=function(q){var R,e=j.isFunction(this)?j(O):j(this),x=e.selector||"",S=(new Date).getTime(),A=[],k=q,T="string"==typeof k,P=[].slice.call(arguments,1);return e.each(function(){var s,i,r,e,a,u,c=j.isPlainObject(q)?j.extend(!0,{},j.fn.api.settings,q):j.extend({},j.fn.api.settings),t=c.namespace,n=c.metadata,o=c.selector,d=c.error,l=c.className,g="."+t,f="module-"+t,p=j(this),m=p.closest(o.form),b=c.stateContext?j(c.stateContext):p,v=this,h=b[0],y=p.data(f);u={initialize:function(){T||u.bind.events(),u.instantiate()},instantiate:function(){u.verbose("Storing instance of module",u),y=u,p.data(f,y)},destroy:function(){u.verbose("Destroying previous module for",v),p.removeData(f).off(g)},bind:{events:function(){var e=u.get.event();e?(u.verbose("Attaching API events to element",e),p.on(e+g,u.event.trigger)):"now"==c.on&&(u.debug("Querying API endpoint immediately"),u.query())}},decode:{json:function(e){if(e!==w&&"string"==typeof e)try{e=JSON.parse(e)}catch(e){}return e}},read:{cachedResponse:function(e){var t;if(O.Storage!==w)return t=sessionStorage.getItem(e),u.debug("Using cached response",e,t),t=u.decode.json(t);u.error(d.noStorage)}},write:{cachedResponse:function(e,t){t&&""===t?u.debug("Response empty, not caching",t):O.Storage!==w?(j.isPlainObject(t)&&(t=JSON.stringify(t)),sessionStorage.setItem(e,t),u.verbose("Storing cached response for url",e,t)):u.error(d.noStorage)}},query:function(){if(u.is.disabled())u.debug("Element is disabled API request aborted");else{if(u.is.loading()){if(!c.interruptRequests)return void u.debug("Cancelling request, previous request is still pending");u.debug("Interrupting previous request"),u.abort()}if(c.defaultData&&j.extend(!0,c.urlData,u.get.defaultData()),c.serializeForm&&(c.data=u.add.formData(c.data)),!1===(i=u.get.settings()))return u.cancelled=!0,void u.error(d.beforeSend);if(u.cancelled=!1,(r=u.get.templatedURL())||u.is.mocked()){if((r=u.add.urlData(r))||u.is.mocked()){if(i.url=c.base+r,s=j.extend(!0,{},c,{type:c.method||c.type,data:e,url:c.base+r,beforeSend:c.beforeXHR,success:function(){},failure:function(){},complete:function(){}}),u.debug("Querying URL",s.url),u.verbose("Using AJAX settings",s),"local"===c.cache&&u.read.cachedResponse(r))return u.debug("Response returned from local cache"),u.request=u.create.request(),void u.request.resolveWith(h,[u.read.cachedResponse(r)]);c.throttle?c.throttleFirstRequest||u.timer?(u.debug("Throttling request",c.throttle),clearTimeout(u.timer),u.timer=setTimeout(function(){u.timer&&delete u.timer,u.debug("Sending throttled request",e,s.method),u.send.request()},c.throttle)):(u.debug("Sending request",e,s.method),u.send.request(),u.timer=setTimeout(function(){},c.throttle)):(u.debug("Sending request",e,s.method),u.send.request())}}else u.error(d.missingURL)}},should:{removeError:function(){return!0===c.hideError||"auto"===c.hideError&&!u.is.form()}},is:{disabled:function(){return 0 .button { + margin: 0px; +} +.ui.labeled.button > .label { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + margin: 0px 0px 0px -1px !important; + padding: ''; + font-size: 1em; + border-color: rgba(34, 36, 38, 0.15); +} + +/* Tag */ +.ui.labeled.button > .tag.label:before { + width: 1.85em; + height: 1.85em; +} + +/* Right */ +.ui.labeled.button:not([class*="left labeled"]) > .button { + border-top-right-radius: 0px; + border-bottom-right-radius: 0px; +} +.ui.labeled.button:not([class*="left labeled"]) > .label { + border-top-left-radius: 0px; + border-bottom-left-radius: 0px; +} + +/* Left Side */ +.ui[class*="left labeled"].button > .button { + border-top-left-radius: 0px; + border-bottom-left-radius: 0px; +} +.ui[class*="left labeled"].button > .label { + border-top-right-radius: 0px; + border-bottom-right-radius: 0px; +} + +/*------------------- + Social +--------------------*/ + + +/* Facebook */ +.ui.facebook.button { + background-color: #3B5998; + color: #FFFFFF; + text-shadow: none; + background-image: none; + -webkit-box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; + box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; +} +.ui.facebook.button:hover { + background-color: #304d8a; + color: #FFFFFF; + text-shadow: none; +} +.ui.facebook.button:active { + background-color: #2d4373; + color: #FFFFFF; + text-shadow: none; +} + +/* Twitter */ +.ui.twitter.button { + background-color: #55ACEE; + color: #FFFFFF; + text-shadow: none; + background-image: none; + -webkit-box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; + box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; +} +.ui.twitter.button:hover { + background-color: #35a2f4; + color: #FFFFFF; + text-shadow: none; +} +.ui.twitter.button:active { + background-color: #2795e9; + color: #FFFFFF; + text-shadow: none; +} + +/* Google Plus */ +.ui.google.plus.button { + background-color: #DD4B39; + color: #FFFFFF; + text-shadow: none; + background-image: none; + -webkit-box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; + box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; +} +.ui.google.plus.button:hover { + background-color: #e0321c; + color: #FFFFFF; + text-shadow: none; +} +.ui.google.plus.button:active { + background-color: #c23321; + color: #FFFFFF; + text-shadow: none; +} + +/* Linked In */ +.ui.linkedin.button { + background-color: #1F88BE; + color: #FFFFFF; + text-shadow: none; +} +.ui.linkedin.button:hover { + background-color: #147baf; + color: #FFFFFF; + text-shadow: none; +} +.ui.linkedin.button:active { + background-color: #186992; + color: #FFFFFF; + text-shadow: none; +} + +/* YouTube */ +.ui.youtube.button { + background-color: #FF0000; + color: #FFFFFF; + text-shadow: none; + background-image: none; + -webkit-box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; + box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; +} +.ui.youtube.button:hover { + background-color: #e60000; + color: #FFFFFF; + text-shadow: none; +} +.ui.youtube.button:active { + background-color: #cc0000; + color: #FFFFFF; + text-shadow: none; +} + +/* Instagram */ +.ui.instagram.button { + background-color: #49769C; + color: #FFFFFF; + text-shadow: none; + background-image: none; + -webkit-box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; + box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; +} +.ui.instagram.button:hover { + background-color: #3d698e; + color: #FFFFFF; + text-shadow: none; +} +.ui.instagram.button:active { + background-color: #395c79; + color: #FFFFFF; + text-shadow: none; +} + +/* Pinterest */ +.ui.pinterest.button { + background-color: #BD081C; + color: #FFFFFF; + text-shadow: none; + background-image: none; + -webkit-box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; + box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; +} +.ui.pinterest.button:hover { + background-color: #ac0013; + color: #FFFFFF; + text-shadow: none; +} +.ui.pinterest.button:active { + background-color: #8c0615; + color: #FFFFFF; + text-shadow: none; +} + +/* VK */ +.ui.vk.button { + background-color: #4D7198; + color: #FFFFFF; + background-image: none; + -webkit-box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; + box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; +} +.ui.vk.button:hover { + background-color: #41648a; + color: #FFFFFF; +} +.ui.vk.button:active { + background-color: #3c5876; + color: #FFFFFF; +} + +/*-------------- + Icon +---------------*/ + +.ui.button > .icon:not(.button) { + height: 0.85714286em; + opacity: 0.8; + margin: 0em 0.42857143em 0em -0.21428571em; + -webkit-transition: opacity 0.1s ease; + transition: opacity 0.1s ease; + vertical-align: ''; + color: ''; +} +.ui.button:not(.icon) > .icon:not(.button):not(.dropdown) { + margin: 0em 0.42857143em 0em -0.21428571em; +} +.ui.button:not(.icon) > .right.icon:not(.button):not(.dropdown) { + margin: 0em -0.21428571em 0em 0.42857143em; +} + + +/******************************* + Variations +*******************************/ + + +/*------------------- + Floated +--------------------*/ + +.ui[class*="left floated"].buttons, +.ui[class*="left floated"].button { + float: left; + margin-left: 0em; + margin-right: 0.25em; +} +.ui[class*="right floated"].buttons, +.ui[class*="right floated"].button { + float: right; + margin-right: 0em; + margin-left: 0.25em; +} + +/*------------------- + Compact +--------------------*/ + +.ui.compact.buttons .button, +.ui.compact.button { + padding: 0.58928571em 1.125em 0.58928571em; +} +.ui.compact.icon.buttons .button, +.ui.compact.icon.button { + padding: 0.58928571em 0.58928571em 0.58928571em; +} +.ui.compact.labeled.icon.buttons .button, +.ui.compact.labeled.icon.button { + padding: 0.58928571em 3.69642857em 0.58928571em; +} + +/*------------------- + Sizes +--------------------*/ + +.ui.mini.buttons .button, +.ui.mini.buttons .or, +.ui.mini.button { + font-size: 0.78571429rem; +} +.ui.tiny.buttons .button, +.ui.tiny.buttons .or, +.ui.tiny.button { + font-size: 0.85714286rem; +} +.ui.small.buttons .button, +.ui.small.buttons .or, +.ui.small.button { + font-size: 0.92857143rem; +} +.ui.buttons .button, +.ui.buttons .or, +.ui.button { + font-size: 1rem; +} +.ui.large.buttons .button, +.ui.large.buttons .or, +.ui.large.button { + font-size: 1.14285714rem; +} +.ui.big.buttons .button, +.ui.big.buttons .or, +.ui.big.button { + font-size: 1.28571429rem; +} +.ui.huge.buttons .button, +.ui.huge.buttons .or, +.ui.huge.button { + font-size: 1.42857143rem; +} +.ui.massive.buttons .button, +.ui.massive.buttons .or, +.ui.massive.button { + font-size: 1.71428571rem; +} + +/*-------------- + Icon Only +---------------*/ + +.ui.icon.buttons .button, +.ui.icon.button { + padding: 0.78571429em 0.78571429em 0.78571429em; +} +.ui.icon.buttons .button > .icon, +.ui.icon.button > .icon { + opacity: 0.9; + margin: 0em !important; + vertical-align: top; +} + +/*------------------- + Basic +--------------------*/ + +.ui.basic.buttons .button, +.ui.basic.button { + background: transparent none !important; + color: rgba(0, 0, 0, 0.6) !important; + font-weight: normal; + border-radius: 0.28571429rem; + text-transform: none; + text-shadow: none !important; + -webkit-box-shadow: 0px 0px 0px 1px rgba(34, 36, 38, 0.15) inset; + box-shadow: 0px 0px 0px 1px rgba(34, 36, 38, 0.15) inset; +} +.ui.basic.buttons { + -webkit-box-shadow: none; + box-shadow: none; + border: 1px solid rgba(34, 36, 38, 0.15); + border-radius: 0.28571429rem; +} +.ui.basic.buttons .button { + border-radius: 0em; +} +.ui.basic.buttons .button:hover, +.ui.basic.button:hover { + background: #FFFFFF !important; + color: rgba(0, 0, 0, 0.8) !important; + -webkit-box-shadow: 0px 0px 0px 1px rgba(34, 36, 38, 0.35) inset, 0px 0px 0px 0px rgba(34, 36, 38, 0.15) inset; + box-shadow: 0px 0px 0px 1px rgba(34, 36, 38, 0.35) inset, 0px 0px 0px 0px rgba(34, 36, 38, 0.15) inset; +} +.ui.basic.buttons .button:focus, +.ui.basic.button:focus { + background: #FFFFFF !important; + color: rgba(0, 0, 0, 0.8) !important; + -webkit-box-shadow: 0px 0px 0px 1px rgba(34, 36, 38, 0.35) inset, 0px 0px 0px 0px rgba(34, 36, 38, 0.15) inset; + box-shadow: 0px 0px 0px 1px rgba(34, 36, 38, 0.35) inset, 0px 0px 0px 0px rgba(34, 36, 38, 0.15) inset; +} +.ui.basic.buttons .button:active, +.ui.basic.button:active { + background: #F8F8F8 !important; + color: rgba(0, 0, 0, 0.9) !important; + -webkit-box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.15) inset, 0px 1px 4px 0px rgba(34, 36, 38, 0.15) inset; + box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.15) inset, 0px 1px 4px 0px rgba(34, 36, 38, 0.15) inset; +} +.ui.basic.buttons .active.button, +.ui.basic.active.button { + background: rgba(0, 0, 0, 0.05) !important; + -webkit-box-shadow: '' !important; + box-shadow: '' !important; + color: rgba(0, 0, 0, 0.95) !important; +} +.ui.basic.buttons .active.button:hover, +.ui.basic.active.button:hover { + background-color: rgba(0, 0, 0, 0.05); +} + +/* Vertical */ +.ui.basic.buttons .button:hover { + -webkit-box-shadow: 0px 0px 0px 1px rgba(34, 36, 38, 0.35) inset, 0px 0px 0px 0px rgba(34, 36, 38, 0.15) inset inset; + box-shadow: 0px 0px 0px 1px rgba(34, 36, 38, 0.35) inset, 0px 0px 0px 0px rgba(34, 36, 38, 0.15) inset inset; +} +.ui.basic.buttons .button:active { + -webkit-box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.15) inset, 0px 1px 4px 0px rgba(34, 36, 38, 0.15) inset inset; + box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.15) inset, 0px 1px 4px 0px rgba(34, 36, 38, 0.15) inset inset; +} +.ui.basic.buttons .active.button { + -webkit-box-shadow: '' !important; + box-shadow: '' !important; +} + +/* Standard Basic Inverted */ +.ui.basic.inverted.buttons .button, +.ui.basic.inverted.button { + background-color: transparent !important; + color: #F9FAFB !important; + -webkit-box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 0.5) inset !important; + box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 0.5) inset !important; +} +.ui.basic.inverted.buttons .button:hover, +.ui.basic.inverted.button:hover { + color: #FFFFFF !important; + -webkit-box-shadow: 0px 0px 0px 2px #ffffff inset !important; + box-shadow: 0px 0px 0px 2px #ffffff inset !important; +} +.ui.basic.inverted.buttons .button:focus, +.ui.basic.inverted.button:focus { + color: #FFFFFF !important; + -webkit-box-shadow: 0px 0px 0px 2px #ffffff inset !important; + box-shadow: 0px 0px 0px 2px #ffffff inset !important; +} +.ui.basic.inverted.buttons .button:active, +.ui.basic.inverted.button:active { + background-color: rgba(255, 255, 255, 0.08) !important; + color: #FFFFFF !important; + -webkit-box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 0.9) inset !important; + box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 0.9) inset !important; +} +.ui.basic.inverted.buttons .active.button, +.ui.basic.inverted.active.button { + background-color: rgba(255, 255, 255, 0.08); + color: #FFFFFF; + text-shadow: none; + -webkit-box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 0.7) inset; + box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 0.7) inset; +} +.ui.basic.inverted.buttons .active.button:hover, +.ui.basic.inverted.active.button:hover { + background-color: rgba(255, 255, 255, 0.15); + -webkit-box-shadow: 0px 0px 0px 2px #ffffff inset !important; + box-shadow: 0px 0px 0px 2px #ffffff inset !important; +} + +/* Basic Group */ +.ui.basic.buttons .button { + border-left: 1px solid rgba(34, 36, 38, 0.15); + -webkit-box-shadow: none; + box-shadow: none; +} +.ui.basic.vertical.buttons .button { + border-left: none; +} +.ui.basic.vertical.buttons .button { + border-left-width: 0px; + border-top: 1px solid rgba(34, 36, 38, 0.15); +} +.ui.basic.vertical.buttons .button:first-child { + border-top-width: 0px; +} + +/*-------------- + Labeled Icon +---------------*/ + +.ui.labeled.icon.buttons .button, +.ui.labeled.icon.button { + position: relative; + padding-left: 4.07142857em !important; + padding-right: 1.5em !important; +} + +/* Left Labeled */ +.ui.labeled.icon.buttons > .button > .icon, +.ui.labeled.icon.button > .icon { + position: absolute; + height: 100%; + line-height: 1; + border-radius: 0px; + border-top-left-radius: inherit; + border-bottom-left-radius: inherit; + text-align: center; + margin: 0em; + width: 2.57142857em; + background-color: rgba(0, 0, 0, 0.05); + color: ''; + -webkit-box-shadow: -1px 0px 0px 0px transparent inset; + box-shadow: -1px 0px 0px 0px transparent inset; +} + +/* Left Labeled */ +.ui.labeled.icon.buttons > .button > .icon, +.ui.labeled.icon.button > .icon { + top: 0em; + left: 0em; +} + +/* Right Labeled */ +.ui[class*="right labeled"].icon.button { + padding-right: 4.07142857em !important; + padding-left: 1.5em !important; +} +.ui[class*="right labeled"].icon.button > .icon { + left: auto; + right: 0em; + border-radius: 0px; + border-top-right-radius: inherit; + border-bottom-right-radius: inherit; + -webkit-box-shadow: 1px 0px 0px 0px transparent inset; + box-shadow: 1px 0px 0px 0px transparent inset; +} +.ui.labeled.icon.buttons > .button > .icon:before, +.ui.labeled.icon.button > .icon:before, +.ui.labeled.icon.buttons > .button > .icon:after, +.ui.labeled.icon.button > .icon:after { + display: block; + position: absolute; + width: 100%; + top: 50%; + text-align: center; + -webkit-transform: translateY(-50%); + transform: translateY(-50%); +} +.ui.labeled.icon.buttons .button > .icon { + border-radius: 0em; +} +.ui.labeled.icon.buttons .button:first-child > .icon { + border-top-left-radius: 0.28571429rem; + border-bottom-left-radius: 0.28571429rem; +} +.ui.labeled.icon.buttons .button:last-child > .icon { + border-top-right-radius: 0.28571429rem; + border-bottom-right-radius: 0.28571429rem; +} +.ui.vertical.labeled.icon.buttons .button:first-child > .icon { + border-radius: 0em; + border-top-left-radius: 0.28571429rem; +} +.ui.vertical.labeled.icon.buttons .button:last-child > .icon { + border-radius: 0em; + border-bottom-left-radius: 0.28571429rem; +} + +/* Fluid Labeled */ +.ui.fluid[class*="left labeled"].icon.button, +.ui.fluid[class*="right labeled"].icon.button { + padding-left: 1.5em !important; + padding-right: 1.5em !important; +} + +/*-------------- + Toggle +---------------*/ + + +/* Toggle (Modifies active state to give affordances) */ +.ui.toggle.buttons .active.button, +.ui.buttons .button.toggle.active, +.ui.button.toggle.active { + background-color: #21BA45 !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; + text-shadow: none; + color: #FFFFFF !important; +} +.ui.button.toggle.active:hover { + background-color: #16ab39 !important; + text-shadow: none; + color: #FFFFFF !important; +} + +/*-------------- + Circular +---------------*/ + +.ui.circular.button { + border-radius: 10em; +} +.ui.circular.button > .icon { + width: 1em; + vertical-align: baseline; +} + +/*------------------- + Or Buttons +--------------------*/ + +.ui.buttons .or { + position: relative; + width: 0.3em; + height: 2.57142857em; + z-index: 3; +} +.ui.buttons .or:before { + position: absolute; + text-align: center; + border-radius: 500rem; + content: 'or'; + top: 50%; + left: 50%; + background-color: #FFFFFF; + text-shadow: none; + margin-top: -0.89285714em; + margin-left: -0.89285714em; + width: 1.78571429em; + height: 1.78571429em; + line-height: 1.78571429em; + color: rgba(0, 0, 0, 0.4); + font-style: normal; + font-weight: bold; + -webkit-box-shadow: 0px 0px 0px 1px transparent inset; + box-shadow: 0px 0px 0px 1px transparent inset; +} +.ui.buttons .or[data-text]:before { + content: attr(data-text); +} + +/* Fluid Or */ +.ui.fluid.buttons .or { + width: 0em !important; +} +.ui.fluid.buttons .or:after { + display: none; +} + +/*------------------- + Attached +--------------------*/ + + +/* Singular */ +.ui.attached.button { + position: relative; + display: block; + margin: 0em; + border-radius: 0em; + -webkit-box-shadow: 0px 0px 0px 1px rgba(34, 36, 38, 0.15) !important; + box-shadow: 0px 0px 0px 1px rgba(34, 36, 38, 0.15) !important; +} + +/* Top / Bottom */ +.ui.attached.top.button { + border-radius: 0.28571429rem 0.28571429rem 0em 0em; +} +.ui.attached.bottom.button { + border-radius: 0em 0em 0.28571429rem 0.28571429rem; +} + +/* Left / Right */ +.ui.left.attached.button { + display: inline-block; + border-left: none; + text-align: right; + padding-right: 0.75em; + border-radius: 0.28571429rem 0em 0em 0.28571429rem; +} +.ui.right.attached.button { + display: inline-block; + text-align: left; + padding-left: 0.75em; + border-radius: 0em 0.28571429rem 0.28571429rem 0em; +} + +/* Plural */ +.ui.attached.buttons { + position: relative; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + border-radius: 0em; + width: auto !important; + z-index: 2; + margin-left: -1px; + margin-right: -1px; +} +.ui.attached.buttons .button { + margin: 0em; +} +.ui.attached.buttons .button:first-child { + border-radius: 0em; +} +.ui.attached.buttons .button:last-child { + border-radius: 0em; +} + +/* Top / Bottom */ +.ui[class*="top attached"].buttons { + margin-bottom: -1px; + border-radius: 0.28571429rem 0.28571429rem 0em 0em; +} +.ui[class*="top attached"].buttons .button:first-child { + border-radius: 0.28571429rem 0em 0em 0em; +} +.ui[class*="top attached"].buttons .button:last-child { + border-radius: 0em 0.28571429rem 0em 0em; +} +.ui[class*="bottom attached"].buttons { + margin-top: -1px; + border-radius: 0em 0em 0.28571429rem 0.28571429rem; +} +.ui[class*="bottom attached"].buttons .button:first-child { + border-radius: 0em 0em 0em 0.28571429rem; +} +.ui[class*="bottom attached"].buttons .button:last-child { + border-radius: 0em 0em 0.28571429rem 0em; +} + +/* Left / Right */ +.ui[class*="left attached"].buttons { + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; + margin-right: 0em; + margin-left: -1px; + border-radius: 0em 0.28571429rem 0.28571429rem 0em; +} +.ui[class*="left attached"].buttons .button:first-child { + margin-left: -1px; + border-radius: 0em 0.28571429rem 0em 0em; +} +.ui[class*="left attached"].buttons .button:last-child { + margin-left: -1px; + border-radius: 0em 0em 0.28571429rem 0em; +} +.ui[class*="right attached"].buttons { + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; + margin-left: 0em; + margin-right: -1px; + border-radius: 0.28571429rem 0em 0em 0.28571429rem; +} +.ui[class*="right attached"].buttons .button:first-child { + margin-left: -1px; + border-radius: 0.28571429rem 0em 0em 0em; +} +.ui[class*="right attached"].buttons .button:last-child { + margin-left: -1px; + border-radius: 0em 0em 0em 0.28571429rem; +} + +/*------------------- + Fluid +--------------------*/ + +.ui.fluid.buttons, +.ui.fluid.button { + width: 100%; +} +.ui.fluid.button { + display: block; +} +.ui.two.buttons { + width: 100%; +} +.ui.two.buttons > .button { + width: 50%; +} +.ui.three.buttons { + width: 100%; +} +.ui.three.buttons > .button { + width: 33.333%; +} +.ui.four.buttons { + width: 100%; +} +.ui.four.buttons > .button { + width: 25%; +} +.ui.five.buttons { + width: 100%; +} +.ui.five.buttons > .button { + width: 20%; +} +.ui.six.buttons { + width: 100%; +} +.ui.six.buttons > .button { + width: 16.666%; +} +.ui.seven.buttons { + width: 100%; +} +.ui.seven.buttons > .button { + width: 14.285%; +} +.ui.eight.buttons { + width: 100%; +} +.ui.eight.buttons > .button { + width: 12.5%; +} +.ui.nine.buttons { + width: 100%; +} +.ui.nine.buttons > .button { + width: 11.11%; +} +.ui.ten.buttons { + width: 100%; +} +.ui.ten.buttons > .button { + width: 10%; +} +.ui.eleven.buttons { + width: 100%; +} +.ui.eleven.buttons > .button { + width: 9.09%; +} +.ui.twelve.buttons { + width: 100%; +} +.ui.twelve.buttons > .button { + width: 8.3333%; +} + +/* Fluid Vertical Buttons */ +.ui.fluid.vertical.buttons, +.ui.fluid.vertical.buttons > .button { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + width: auto; +} +.ui.two.vertical.buttons > .button { + height: 50%; +} +.ui.three.vertical.buttons > .button { + height: 33.333%; +} +.ui.four.vertical.buttons > .button { + height: 25%; +} +.ui.five.vertical.buttons > .button { + height: 20%; +} +.ui.six.vertical.buttons > .button { + height: 16.666%; +} +.ui.seven.vertical.buttons > .button { + height: 14.285%; +} +.ui.eight.vertical.buttons > .button { + height: 12.5%; +} +.ui.nine.vertical.buttons > .button { + height: 11.11%; +} +.ui.ten.vertical.buttons > .button { + height: 10%; +} +.ui.eleven.vertical.buttons > .button { + height: 9.09%; +} +.ui.twelve.vertical.buttons > .button { + height: 8.3333%; +} + +/*------------------- + Colors +--------------------*/ + + +/*--- Black ---*/ + +.ui.black.buttons .button, +.ui.black.button { + background-color: #1B1C1D; + color: #FFFFFF; + text-shadow: none; + background-image: none; +} +.ui.black.button { + -webkit-box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; + box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; +} +.ui.black.buttons .button:hover, +.ui.black.button:hover { + background-color: #27292a; + color: #FFFFFF; + text-shadow: none; +} +.ui.black.buttons .button:focus, +.ui.black.button:focus { + background-color: #2f3032; + color: #FFFFFF; + text-shadow: none; +} +.ui.black.buttons .button:active, +.ui.black.button:active { + background-color: #343637; + color: #FFFFFF; + text-shadow: none; +} +.ui.black.buttons .active.button, +.ui.black.buttons .active.button:active, +.ui.black.active.button, +.ui.black.button .active.button:active { + background-color: #0f0f10; + color: #FFFFFF; + text-shadow: none; +} + +/* Basic */ +.ui.basic.black.buttons .button, +.ui.basic.black.button { + -webkit-box-shadow: 0px 0px 0px 1px #1B1C1D inset !important; + box-shadow: 0px 0px 0px 1px #1B1C1D inset !important; + color: #1B1C1D !important; +} +.ui.basic.black.buttons .button:hover, +.ui.basic.black.button:hover { + background: transparent !important; + -webkit-box-shadow: 0px 0px 0px 1px #27292a inset !important; + box-shadow: 0px 0px 0px 1px #27292a inset !important; + color: #27292a !important; +} +.ui.basic.black.buttons .button:focus, +.ui.basic.black.button:focus { + background: transparent !important; + -webkit-box-shadow: 0px 0px 0px 1px #2f3032 inset !important; + box-shadow: 0px 0px 0px 1px #2f3032 inset !important; + color: #27292a !important; +} +.ui.basic.black.buttons .active.button, +.ui.basic.black.active.button { + background: transparent !important; + -webkit-box-shadow: 0px 0px 0px 1px #0f0f10 inset !important; + box-shadow: 0px 0px 0px 1px #0f0f10 inset !important; + color: #343637 !important; +} +.ui.basic.black.buttons .button:active, +.ui.basic.black.button:active { + -webkit-box-shadow: 0px 0px 0px 1px #343637 inset !important; + box-shadow: 0px 0px 0px 1px #343637 inset !important; + color: #343637 !important; +} +.ui.buttons:not(.vertical) > .basic.black.button:not(:first-child) { + margin-left: -1px; +} + +/* Inverted */ +.ui.inverted.black.buttons .button, +.ui.inverted.black.button { + background-color: transparent; + -webkit-box-shadow: 0px 0px 0px 2px #D4D4D5 inset !important; + box-shadow: 0px 0px 0px 2px #D4D4D5 inset !important; + color: #FFFFFF; +} +.ui.inverted.black.buttons .button:hover, +.ui.inverted.black.button:hover, +.ui.inverted.black.buttons .button:focus, +.ui.inverted.black.button:focus, +.ui.inverted.black.buttons .button.active, +.ui.inverted.black.button.active, +.ui.inverted.black.buttons .button:active, +.ui.inverted.black.button:active { + -webkit-box-shadow: none !important; + box-shadow: none !important; + color: #FFFFFF; +} +.ui.inverted.black.buttons .button:hover, +.ui.inverted.black.button:hover { + background-color: #000000; +} +.ui.inverted.black.buttons .button:focus, +.ui.inverted.black.button:focus { + background-color: #000000; +} +.ui.inverted.black.buttons .active.button, +.ui.inverted.black.active.button { + background-color: #000000; +} +.ui.inverted.black.buttons .button:active, +.ui.inverted.black.button:active { + background-color: #000000; +} + +/* Inverted Basic */ +.ui.inverted.black.basic.buttons .button, +.ui.inverted.black.buttons .basic.button, +.ui.inverted.black.basic.button { + background-color: transparent; + -webkit-box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 0.5) inset !important; + box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 0.5) inset !important; + color: #FFFFFF !important; +} +.ui.inverted.black.basic.buttons .button:hover, +.ui.inverted.black.buttons .basic.button:hover, +.ui.inverted.black.basic.button:hover { + -webkit-box-shadow: 0px 0px 0px 2px #000000 inset !important; + box-shadow: 0px 0px 0px 2px #000000 inset !important; + color: #FFFFFF !important; +} +.ui.inverted.black.basic.buttons .button:focus, +.ui.inverted.black.basic.buttons .button:focus, +.ui.inverted.black.basic.button:focus { + -webkit-box-shadow: 0px 0px 0px 2px #000000 inset !important; + box-shadow: 0px 0px 0px 2px #000000 inset !important; + color: #545454 !important; +} +.ui.inverted.black.basic.buttons .active.button, +.ui.inverted.black.buttons .basic.active.button, +.ui.inverted.black.basic.active.button { + -webkit-box-shadow: 0px 0px 0px 2px #000000 inset !important; + box-shadow: 0px 0px 0px 2px #000000 inset !important; + color: #FFFFFF !important; +} +.ui.inverted.black.basic.buttons .button:active, +.ui.inverted.black.buttons .basic.button:active, +.ui.inverted.black.basic.button:active { + -webkit-box-shadow: 0px 0px 0px 2px #000000 inset !important; + box-shadow: 0px 0px 0px 2px #000000 inset !important; + color: #FFFFFF !important; +} + +/*--- Grey ---*/ + +.ui.grey.buttons .button, +.ui.grey.button { + background-color: #767676; + color: #FFFFFF; + text-shadow: none; + background-image: none; +} +.ui.grey.button { + -webkit-box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; + box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; +} +.ui.grey.buttons .button:hover, +.ui.grey.button:hover { + background-color: #838383; + color: #FFFFFF; + text-shadow: none; +} +.ui.grey.buttons .button:focus, +.ui.grey.button:focus { + background-color: #8a8a8a; + color: #FFFFFF; + text-shadow: none; +} +.ui.grey.buttons .button:active, +.ui.grey.button:active { + background-color: #909090; + color: #FFFFFF; + text-shadow: none; +} +.ui.grey.buttons .active.button, +.ui.grey.buttons .active.button:active, +.ui.grey.active.button, +.ui.grey.button .active.button:active { + background-color: #696969; + color: #FFFFFF; + text-shadow: none; +} + +/* Basic */ +.ui.basic.grey.buttons .button, +.ui.basic.grey.button { + -webkit-box-shadow: 0px 0px 0px 1px #767676 inset !important; + box-shadow: 0px 0px 0px 1px #767676 inset !important; + color: #767676 !important; +} +.ui.basic.grey.buttons .button:hover, +.ui.basic.grey.button:hover { + background: transparent !important; + -webkit-box-shadow: 0px 0px 0px 1px #838383 inset !important; + box-shadow: 0px 0px 0px 1px #838383 inset !important; + color: #838383 !important; +} +.ui.basic.grey.buttons .button:focus, +.ui.basic.grey.button:focus { + background: transparent !important; + -webkit-box-shadow: 0px 0px 0px 1px #8a8a8a inset !important; + box-shadow: 0px 0px 0px 1px #8a8a8a inset !important; + color: #838383 !important; +} +.ui.basic.grey.buttons .active.button, +.ui.basic.grey.active.button { + background: transparent !important; + -webkit-box-shadow: 0px 0px 0px 1px #696969 inset !important; + box-shadow: 0px 0px 0px 1px #696969 inset !important; + color: #909090 !important; +} +.ui.basic.grey.buttons .button:active, +.ui.basic.grey.button:active { + -webkit-box-shadow: 0px 0px 0px 1px #909090 inset !important; + box-shadow: 0px 0px 0px 1px #909090 inset !important; + color: #909090 !important; +} +.ui.buttons:not(.vertical) > .basic.grey.button:not(:first-child) { + margin-left: -1px; +} + +/* Inverted */ +.ui.inverted.grey.buttons .button, +.ui.inverted.grey.button { + background-color: transparent; + -webkit-box-shadow: 0px 0px 0px 2px #D4D4D5 inset !important; + box-shadow: 0px 0px 0px 2px #D4D4D5 inset !important; + color: #FFFFFF; +} +.ui.inverted.grey.buttons .button:hover, +.ui.inverted.grey.button:hover, +.ui.inverted.grey.buttons .button:focus, +.ui.inverted.grey.button:focus, +.ui.inverted.grey.buttons .button.active, +.ui.inverted.grey.button.active, +.ui.inverted.grey.buttons .button:active, +.ui.inverted.grey.button:active { + -webkit-box-shadow: none !important; + box-shadow: none !important; + color: rgba(0, 0, 0, 0.6); +} +.ui.inverted.grey.buttons .button:hover, +.ui.inverted.grey.button:hover { + background-color: #cfd0d2; +} +.ui.inverted.grey.buttons .button:focus, +.ui.inverted.grey.button:focus { + background-color: #c7c9cb; +} +.ui.inverted.grey.buttons .active.button, +.ui.inverted.grey.active.button { + background-color: #cfd0d2; +} +.ui.inverted.grey.buttons .button:active, +.ui.inverted.grey.button:active { + background-color: #c2c4c5; +} + +/* Inverted Basic */ +.ui.inverted.grey.basic.buttons .button, +.ui.inverted.grey.buttons .basic.button, +.ui.inverted.grey.basic.button { + background-color: transparent; + -webkit-box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 0.5) inset !important; + box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 0.5) inset !important; + color: #FFFFFF !important; +} +.ui.inverted.grey.basic.buttons .button:hover, +.ui.inverted.grey.buttons .basic.button:hover, +.ui.inverted.grey.basic.button:hover { + -webkit-box-shadow: 0px 0px 0px 2px #cfd0d2 inset !important; + box-shadow: 0px 0px 0px 2px #cfd0d2 inset !important; + color: #FFFFFF !important; +} +.ui.inverted.grey.basic.buttons .button:focus, +.ui.inverted.grey.basic.buttons .button:focus, +.ui.inverted.grey.basic.button:focus { + -webkit-box-shadow: 0px 0px 0px 2px #c7c9cb inset !important; + box-shadow: 0px 0px 0px 2px #c7c9cb inset !important; + color: #DCDDDE !important; +} +.ui.inverted.grey.basic.buttons .active.button, +.ui.inverted.grey.buttons .basic.active.button, +.ui.inverted.grey.basic.active.button { + -webkit-box-shadow: 0px 0px 0px 2px #cfd0d2 inset !important; + box-shadow: 0px 0px 0px 2px #cfd0d2 inset !important; + color: #FFFFFF !important; +} +.ui.inverted.grey.basic.buttons .button:active, +.ui.inverted.grey.buttons .basic.button:active, +.ui.inverted.grey.basic.button:active { + -webkit-box-shadow: 0px 0px 0px 2px #c2c4c5 inset !important; + box-shadow: 0px 0px 0px 2px #c2c4c5 inset !important; + color: #FFFFFF !important; +} + +/*--- Brown ---*/ + +.ui.brown.buttons .button, +.ui.brown.button { + background-color: #A5673F; + color: #FFFFFF; + text-shadow: none; + background-image: none; +} +.ui.brown.button { + -webkit-box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; + box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; +} +.ui.brown.buttons .button:hover, +.ui.brown.button:hover { + background-color: #975b33; + color: #FFFFFF; + text-shadow: none; +} +.ui.brown.buttons .button:focus, +.ui.brown.button:focus { + background-color: #90532b; + color: #FFFFFF; + text-shadow: none; +} +.ui.brown.buttons .button:active, +.ui.brown.button:active { + background-color: #805031; + color: #FFFFFF; + text-shadow: none; +} +.ui.brown.buttons .active.button, +.ui.brown.buttons .active.button:active, +.ui.brown.active.button, +.ui.brown.button .active.button:active { + background-color: #995a31; + color: #FFFFFF; + text-shadow: none; +} + +/* Basic */ +.ui.basic.brown.buttons .button, +.ui.basic.brown.button { + -webkit-box-shadow: 0px 0px 0px 1px #A5673F inset !important; + box-shadow: 0px 0px 0px 1px #A5673F inset !important; + color: #A5673F !important; +} +.ui.basic.brown.buttons .button:hover, +.ui.basic.brown.button:hover { + background: transparent !important; + -webkit-box-shadow: 0px 0px 0px 1px #975b33 inset !important; + box-shadow: 0px 0px 0px 1px #975b33 inset !important; + color: #975b33 !important; +} +.ui.basic.brown.buttons .button:focus, +.ui.basic.brown.button:focus { + background: transparent !important; + -webkit-box-shadow: 0px 0px 0px 1px #90532b inset !important; + box-shadow: 0px 0px 0px 1px #90532b inset !important; + color: #975b33 !important; +} +.ui.basic.brown.buttons .active.button, +.ui.basic.brown.active.button { + background: transparent !important; + -webkit-box-shadow: 0px 0px 0px 1px #995a31 inset !important; + box-shadow: 0px 0px 0px 1px #995a31 inset !important; + color: #805031 !important; +} +.ui.basic.brown.buttons .button:active, +.ui.basic.brown.button:active { + -webkit-box-shadow: 0px 0px 0px 1px #805031 inset !important; + box-shadow: 0px 0px 0px 1px #805031 inset !important; + color: #805031 !important; +} +.ui.buttons:not(.vertical) > .basic.brown.button:not(:first-child) { + margin-left: -1px; +} + +/* Inverted */ +.ui.inverted.brown.buttons .button, +.ui.inverted.brown.button { + background-color: transparent; + -webkit-box-shadow: 0px 0px 0px 2px #D67C1C inset !important; + box-shadow: 0px 0px 0px 2px #D67C1C inset !important; + color: #D67C1C; +} +.ui.inverted.brown.buttons .button:hover, +.ui.inverted.brown.button:hover, +.ui.inverted.brown.buttons .button:focus, +.ui.inverted.brown.button:focus, +.ui.inverted.brown.buttons .button.active, +.ui.inverted.brown.button.active, +.ui.inverted.brown.buttons .button:active, +.ui.inverted.brown.button:active { + -webkit-box-shadow: none !important; + box-shadow: none !important; + color: #FFFFFF; +} +.ui.inverted.brown.buttons .button:hover, +.ui.inverted.brown.button:hover { + background-color: #c86f11; +} +.ui.inverted.brown.buttons .button:focus, +.ui.inverted.brown.button:focus { + background-color: #c16808; +} +.ui.inverted.brown.buttons .active.button, +.ui.inverted.brown.active.button { + background-color: #cc6f0d; +} +.ui.inverted.brown.buttons .button:active, +.ui.inverted.brown.button:active { + background-color: #a96216; +} + +/* Inverted Basic */ +.ui.inverted.brown.basic.buttons .button, +.ui.inverted.brown.buttons .basic.button, +.ui.inverted.brown.basic.button { + background-color: transparent; + -webkit-box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 0.5) inset !important; + box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 0.5) inset !important; + color: #FFFFFF !important; +} +.ui.inverted.brown.basic.buttons .button:hover, +.ui.inverted.brown.buttons .basic.button:hover, +.ui.inverted.brown.basic.button:hover { + -webkit-box-shadow: 0px 0px 0px 2px #c86f11 inset !important; + box-shadow: 0px 0px 0px 2px #c86f11 inset !important; + color: #D67C1C !important; +} +.ui.inverted.brown.basic.buttons .button:focus, +.ui.inverted.brown.basic.buttons .button:focus, +.ui.inverted.brown.basic.button:focus { + -webkit-box-shadow: 0px 0px 0px 2px #c16808 inset !important; + box-shadow: 0px 0px 0px 2px #c16808 inset !important; + color: #D67C1C !important; +} +.ui.inverted.brown.basic.buttons .active.button, +.ui.inverted.brown.buttons .basic.active.button, +.ui.inverted.brown.basic.active.button { + -webkit-box-shadow: 0px 0px 0px 2px #cc6f0d inset !important; + box-shadow: 0px 0px 0px 2px #cc6f0d inset !important; + color: #D67C1C !important; +} +.ui.inverted.brown.basic.buttons .button:active, +.ui.inverted.brown.buttons .basic.button:active, +.ui.inverted.brown.basic.button:active { + -webkit-box-shadow: 0px 0px 0px 2px #a96216 inset !important; + box-shadow: 0px 0px 0px 2px #a96216 inset !important; + color: #D67C1C !important; +} + +/*--- Blue ---*/ + +.ui.blue.buttons .button, +.ui.blue.button { + background-color: #2185D0; + color: #FFFFFF; + text-shadow: none; + background-image: none; +} +.ui.blue.button { + -webkit-box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; + box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; +} +.ui.blue.buttons .button:hover, +.ui.blue.button:hover { + background-color: #1678c2; + color: #FFFFFF; + text-shadow: none; +} +.ui.blue.buttons .button:focus, +.ui.blue.button:focus { + background-color: #0d71bb; + color: #FFFFFF; + text-shadow: none; +} +.ui.blue.buttons .button:active, +.ui.blue.button:active { + background-color: #1a69a4; + color: #FFFFFF; + text-shadow: none; +} +.ui.blue.buttons .active.button, +.ui.blue.buttons .active.button:active, +.ui.blue.active.button, +.ui.blue.button .active.button:active { + background-color: #1279c6; + color: #FFFFFF; + text-shadow: none; +} + +/* Basic */ +.ui.basic.blue.buttons .button, +.ui.basic.blue.button { + -webkit-box-shadow: 0px 0px 0px 1px #2185D0 inset !important; + box-shadow: 0px 0px 0px 1px #2185D0 inset !important; + color: #2185D0 !important; +} +.ui.basic.blue.buttons .button:hover, +.ui.basic.blue.button:hover { + background: transparent !important; + -webkit-box-shadow: 0px 0px 0px 1px #1678c2 inset !important; + box-shadow: 0px 0px 0px 1px #1678c2 inset !important; + color: #1678c2 !important; +} +.ui.basic.blue.buttons .button:focus, +.ui.basic.blue.button:focus { + background: transparent !important; + -webkit-box-shadow: 0px 0px 0px 1px #0d71bb inset !important; + box-shadow: 0px 0px 0px 1px #0d71bb inset !important; + color: #1678c2 !important; +} +.ui.basic.blue.buttons .active.button, +.ui.basic.blue.active.button { + background: transparent !important; + -webkit-box-shadow: 0px 0px 0px 1px #1279c6 inset !important; + box-shadow: 0px 0px 0px 1px #1279c6 inset !important; + color: #1a69a4 !important; +} +.ui.basic.blue.buttons .button:active, +.ui.basic.blue.button:active { + -webkit-box-shadow: 0px 0px 0px 1px #1a69a4 inset !important; + box-shadow: 0px 0px 0px 1px #1a69a4 inset !important; + color: #1a69a4 !important; +} +.ui.buttons:not(.vertical) > .basic.blue.button:not(:first-child) { + margin-left: -1px; +} + +/* Inverted */ +.ui.inverted.blue.buttons .button, +.ui.inverted.blue.button { + background-color: transparent; + -webkit-box-shadow: 0px 0px 0px 2px #54C8FF inset !important; + box-shadow: 0px 0px 0px 2px #54C8FF inset !important; + color: #54C8FF; +} +.ui.inverted.blue.buttons .button:hover, +.ui.inverted.blue.button:hover, +.ui.inverted.blue.buttons .button:focus, +.ui.inverted.blue.button:focus, +.ui.inverted.blue.buttons .button.active, +.ui.inverted.blue.button.active, +.ui.inverted.blue.buttons .button:active, +.ui.inverted.blue.button:active { + -webkit-box-shadow: none !important; + box-shadow: none !important; + color: #FFFFFF; +} +.ui.inverted.blue.buttons .button:hover, +.ui.inverted.blue.button:hover { + background-color: #3ac0ff; +} +.ui.inverted.blue.buttons .button:focus, +.ui.inverted.blue.button:focus { + background-color: #2bbbff; +} +.ui.inverted.blue.buttons .active.button, +.ui.inverted.blue.active.button { + background-color: #3ac0ff; +} +.ui.inverted.blue.buttons .button:active, +.ui.inverted.blue.button:active { + background-color: #21b8ff; +} + +/* Inverted Basic */ +.ui.inverted.blue.basic.buttons .button, +.ui.inverted.blue.buttons .basic.button, +.ui.inverted.blue.basic.button { + background-color: transparent; + -webkit-box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 0.5) inset !important; + box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 0.5) inset !important; + color: #FFFFFF !important; +} +.ui.inverted.blue.basic.buttons .button:hover, +.ui.inverted.blue.buttons .basic.button:hover, +.ui.inverted.blue.basic.button:hover { + -webkit-box-shadow: 0px 0px 0px 2px #3ac0ff inset !important; + box-shadow: 0px 0px 0px 2px #3ac0ff inset !important; + color: #54C8FF !important; +} +.ui.inverted.blue.basic.buttons .button:focus, +.ui.inverted.blue.basic.buttons .button:focus, +.ui.inverted.blue.basic.button:focus { + -webkit-box-shadow: 0px 0px 0px 2px #2bbbff inset !important; + box-shadow: 0px 0px 0px 2px #2bbbff inset !important; + color: #54C8FF !important; +} +.ui.inverted.blue.basic.buttons .active.button, +.ui.inverted.blue.buttons .basic.active.button, +.ui.inverted.blue.basic.active.button { + -webkit-box-shadow: 0px 0px 0px 2px #3ac0ff inset !important; + box-shadow: 0px 0px 0px 2px #3ac0ff inset !important; + color: #54C8FF !important; +} +.ui.inverted.blue.basic.buttons .button:active, +.ui.inverted.blue.buttons .basic.button:active, +.ui.inverted.blue.basic.button:active { + -webkit-box-shadow: 0px 0px 0px 2px #21b8ff inset !important; + box-shadow: 0px 0px 0px 2px #21b8ff inset !important; + color: #54C8FF !important; +} + +/*--- Green ---*/ + +.ui.green.buttons .button, +.ui.green.button { + background-color: #21BA45; + color: #FFFFFF; + text-shadow: none; + background-image: none; +} +.ui.green.button { + -webkit-box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; + box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; +} +.ui.green.buttons .button:hover, +.ui.green.button:hover { + background-color: #16ab39; + color: #FFFFFF; + text-shadow: none; +} +.ui.green.buttons .button:focus, +.ui.green.button:focus { + background-color: #0ea432; + color: #FFFFFF; + text-shadow: none; +} +.ui.green.buttons .button:active, +.ui.green.button:active { + background-color: #198f35; + color: #FFFFFF; + text-shadow: none; +} +.ui.green.buttons .active.button, +.ui.green.buttons .active.button:active, +.ui.green.active.button, +.ui.green.button .active.button:active { + background-color: #13ae38; + color: #FFFFFF; + text-shadow: none; +} + +/* Basic */ +.ui.basic.green.buttons .button, +.ui.basic.green.button { + -webkit-box-shadow: 0px 0px 0px 1px #21BA45 inset !important; + box-shadow: 0px 0px 0px 1px #21BA45 inset !important; + color: #21BA45 !important; +} +.ui.basic.green.buttons .button:hover, +.ui.basic.green.button:hover { + background: transparent !important; + -webkit-box-shadow: 0px 0px 0px 1px #16ab39 inset !important; + box-shadow: 0px 0px 0px 1px #16ab39 inset !important; + color: #16ab39 !important; +} +.ui.basic.green.buttons .button:focus, +.ui.basic.green.button:focus { + background: transparent !important; + -webkit-box-shadow: 0px 0px 0px 1px #0ea432 inset !important; + box-shadow: 0px 0px 0px 1px #0ea432 inset !important; + color: #16ab39 !important; +} +.ui.basic.green.buttons .active.button, +.ui.basic.green.active.button { + background: transparent !important; + -webkit-box-shadow: 0px 0px 0px 1px #13ae38 inset !important; + box-shadow: 0px 0px 0px 1px #13ae38 inset !important; + color: #198f35 !important; +} +.ui.basic.green.buttons .button:active, +.ui.basic.green.button:active { + -webkit-box-shadow: 0px 0px 0px 1px #198f35 inset !important; + box-shadow: 0px 0px 0px 1px #198f35 inset !important; + color: #198f35 !important; +} +.ui.buttons:not(.vertical) > .basic.green.button:not(:first-child) { + margin-left: -1px; +} + +/* Inverted */ +.ui.inverted.green.buttons .button, +.ui.inverted.green.button { + background-color: transparent; + -webkit-box-shadow: 0px 0px 0px 2px #2ECC40 inset !important; + box-shadow: 0px 0px 0px 2px #2ECC40 inset !important; + color: #2ECC40; +} +.ui.inverted.green.buttons .button:hover, +.ui.inverted.green.button:hover, +.ui.inverted.green.buttons .button:focus, +.ui.inverted.green.button:focus, +.ui.inverted.green.buttons .button.active, +.ui.inverted.green.button.active, +.ui.inverted.green.buttons .button:active, +.ui.inverted.green.button:active { + -webkit-box-shadow: none !important; + box-shadow: none !important; + color: #FFFFFF; +} +.ui.inverted.green.buttons .button:hover, +.ui.inverted.green.button:hover { + background-color: #22be34; +} +.ui.inverted.green.buttons .button:focus, +.ui.inverted.green.button:focus { + background-color: #19b82b; +} +.ui.inverted.green.buttons .active.button, +.ui.inverted.green.active.button { + background-color: #1fc231; +} +.ui.inverted.green.buttons .button:active, +.ui.inverted.green.button:active { + background-color: #25a233; +} + +/* Inverted Basic */ +.ui.inverted.green.basic.buttons .button, +.ui.inverted.green.buttons .basic.button, +.ui.inverted.green.basic.button { + background-color: transparent; + -webkit-box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 0.5) inset !important; + box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 0.5) inset !important; + color: #FFFFFF !important; +} +.ui.inverted.green.basic.buttons .button:hover, +.ui.inverted.green.buttons .basic.button:hover, +.ui.inverted.green.basic.button:hover { + -webkit-box-shadow: 0px 0px 0px 2px #22be34 inset !important; + box-shadow: 0px 0px 0px 2px #22be34 inset !important; + color: #2ECC40 !important; +} +.ui.inverted.green.basic.buttons .button:focus, +.ui.inverted.green.basic.buttons .button:focus, +.ui.inverted.green.basic.button:focus { + -webkit-box-shadow: 0px 0px 0px 2px #19b82b inset !important; + box-shadow: 0px 0px 0px 2px #19b82b inset !important; + color: #2ECC40 !important; +} +.ui.inverted.green.basic.buttons .active.button, +.ui.inverted.green.buttons .basic.active.button, +.ui.inverted.green.basic.active.button { + -webkit-box-shadow: 0px 0px 0px 2px #1fc231 inset !important; + box-shadow: 0px 0px 0px 2px #1fc231 inset !important; + color: #2ECC40 !important; +} +.ui.inverted.green.basic.buttons .button:active, +.ui.inverted.green.buttons .basic.button:active, +.ui.inverted.green.basic.button:active { + -webkit-box-shadow: 0px 0px 0px 2px #25a233 inset !important; + box-shadow: 0px 0px 0px 2px #25a233 inset !important; + color: #2ECC40 !important; +} + +/*--- Orange ---*/ + +.ui.orange.buttons .button, +.ui.orange.button { + background-color: #F2711C; + color: #FFFFFF; + text-shadow: none; + background-image: none; +} +.ui.orange.button { + -webkit-box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; + box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; +} +.ui.orange.buttons .button:hover, +.ui.orange.button:hover { + background-color: #f26202; + color: #FFFFFF; + text-shadow: none; +} +.ui.orange.buttons .button:focus, +.ui.orange.button:focus { + background-color: #e55b00; + color: #FFFFFF; + text-shadow: none; +} +.ui.orange.buttons .button:active, +.ui.orange.button:active { + background-color: #cf590c; + color: #FFFFFF; + text-shadow: none; +} +.ui.orange.buttons .active.button, +.ui.orange.buttons .active.button:active, +.ui.orange.active.button, +.ui.orange.button .active.button:active { + background-color: #f56100; + color: #FFFFFF; + text-shadow: none; +} + +/* Basic */ +.ui.basic.orange.buttons .button, +.ui.basic.orange.button { + -webkit-box-shadow: 0px 0px 0px 1px #F2711C inset !important; + box-shadow: 0px 0px 0px 1px #F2711C inset !important; + color: #F2711C !important; +} +.ui.basic.orange.buttons .button:hover, +.ui.basic.orange.button:hover { + background: transparent !important; + -webkit-box-shadow: 0px 0px 0px 1px #f26202 inset !important; + box-shadow: 0px 0px 0px 1px #f26202 inset !important; + color: #f26202 !important; +} +.ui.basic.orange.buttons .button:focus, +.ui.basic.orange.button:focus { + background: transparent !important; + -webkit-box-shadow: 0px 0px 0px 1px #e55b00 inset !important; + box-shadow: 0px 0px 0px 1px #e55b00 inset !important; + color: #f26202 !important; +} +.ui.basic.orange.buttons .active.button, +.ui.basic.orange.active.button { + background: transparent !important; + -webkit-box-shadow: 0px 0px 0px 1px #f56100 inset !important; + box-shadow: 0px 0px 0px 1px #f56100 inset !important; + color: #cf590c !important; +} +.ui.basic.orange.buttons .button:active, +.ui.basic.orange.button:active { + -webkit-box-shadow: 0px 0px 0px 1px #cf590c inset !important; + box-shadow: 0px 0px 0px 1px #cf590c inset !important; + color: #cf590c !important; +} +.ui.buttons:not(.vertical) > .basic.orange.button:not(:first-child) { + margin-left: -1px; +} + +/* Inverted */ +.ui.inverted.orange.buttons .button, +.ui.inverted.orange.button { + background-color: transparent; + -webkit-box-shadow: 0px 0px 0px 2px #FF851B inset !important; + box-shadow: 0px 0px 0px 2px #FF851B inset !important; + color: #FF851B; +} +.ui.inverted.orange.buttons .button:hover, +.ui.inverted.orange.button:hover, +.ui.inverted.orange.buttons .button:focus, +.ui.inverted.orange.button:focus, +.ui.inverted.orange.buttons .button.active, +.ui.inverted.orange.button.active, +.ui.inverted.orange.buttons .button:active, +.ui.inverted.orange.button:active { + -webkit-box-shadow: none !important; + box-shadow: none !important; + color: #FFFFFF; +} +.ui.inverted.orange.buttons .button:hover, +.ui.inverted.orange.button:hover { + background-color: #ff7701; +} +.ui.inverted.orange.buttons .button:focus, +.ui.inverted.orange.button:focus { + background-color: #f17000; +} +.ui.inverted.orange.buttons .active.button, +.ui.inverted.orange.active.button { + background-color: #ff7701; +} +.ui.inverted.orange.buttons .button:active, +.ui.inverted.orange.button:active { + background-color: #e76b00; +} + +/* Inverted Basic */ +.ui.inverted.orange.basic.buttons .button, +.ui.inverted.orange.buttons .basic.button, +.ui.inverted.orange.basic.button { + background-color: transparent; + -webkit-box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 0.5) inset !important; + box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 0.5) inset !important; + color: #FFFFFF !important; +} +.ui.inverted.orange.basic.buttons .button:hover, +.ui.inverted.orange.buttons .basic.button:hover, +.ui.inverted.orange.basic.button:hover { + -webkit-box-shadow: 0px 0px 0px 2px #ff7701 inset !important; + box-shadow: 0px 0px 0px 2px #ff7701 inset !important; + color: #FF851B !important; +} +.ui.inverted.orange.basic.buttons .button:focus, +.ui.inverted.orange.basic.buttons .button:focus, +.ui.inverted.orange.basic.button:focus { + -webkit-box-shadow: 0px 0px 0px 2px #f17000 inset !important; + box-shadow: 0px 0px 0px 2px #f17000 inset !important; + color: #FF851B !important; +} +.ui.inverted.orange.basic.buttons .active.button, +.ui.inverted.orange.buttons .basic.active.button, +.ui.inverted.orange.basic.active.button { + -webkit-box-shadow: 0px 0px 0px 2px #ff7701 inset !important; + box-shadow: 0px 0px 0px 2px #ff7701 inset !important; + color: #FF851B !important; +} +.ui.inverted.orange.basic.buttons .button:active, +.ui.inverted.orange.buttons .basic.button:active, +.ui.inverted.orange.basic.button:active { + -webkit-box-shadow: 0px 0px 0px 2px #e76b00 inset !important; + box-shadow: 0px 0px 0px 2px #e76b00 inset !important; + color: #FF851B !important; +} + +/*--- Pink ---*/ + +.ui.pink.buttons .button, +.ui.pink.button { + background-color: #E03997; + color: #FFFFFF; + text-shadow: none; + background-image: none; +} +.ui.pink.button { + -webkit-box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; + box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; +} +.ui.pink.buttons .button:hover, +.ui.pink.button:hover { + background-color: #e61a8d; + color: #FFFFFF; + text-shadow: none; +} +.ui.pink.buttons .button:focus, +.ui.pink.button:focus { + background-color: #e10f85; + color: #FFFFFF; + text-shadow: none; +} +.ui.pink.buttons .button:active, +.ui.pink.button:active { + background-color: #c71f7e; + color: #FFFFFF; + text-shadow: none; +} +.ui.pink.buttons .active.button, +.ui.pink.buttons .active.button:active, +.ui.pink.active.button, +.ui.pink.button .active.button:active { + background-color: #ea158d; + color: #FFFFFF; + text-shadow: none; +} + +/* Basic */ +.ui.basic.pink.buttons .button, +.ui.basic.pink.button { + -webkit-box-shadow: 0px 0px 0px 1px #E03997 inset !important; + box-shadow: 0px 0px 0px 1px #E03997 inset !important; + color: #E03997 !important; +} +.ui.basic.pink.buttons .button:hover, +.ui.basic.pink.button:hover { + background: transparent !important; + -webkit-box-shadow: 0px 0px 0px 1px #e61a8d inset !important; + box-shadow: 0px 0px 0px 1px #e61a8d inset !important; + color: #e61a8d !important; +} +.ui.basic.pink.buttons .button:focus, +.ui.basic.pink.button:focus { + background: transparent !important; + -webkit-box-shadow: 0px 0px 0px 1px #e10f85 inset !important; + box-shadow: 0px 0px 0px 1px #e10f85 inset !important; + color: #e61a8d !important; +} +.ui.basic.pink.buttons .active.button, +.ui.basic.pink.active.button { + background: transparent !important; + -webkit-box-shadow: 0px 0px 0px 1px #ea158d inset !important; + box-shadow: 0px 0px 0px 1px #ea158d inset !important; + color: #c71f7e !important; +} +.ui.basic.pink.buttons .button:active, +.ui.basic.pink.button:active { + -webkit-box-shadow: 0px 0px 0px 1px #c71f7e inset !important; + box-shadow: 0px 0px 0px 1px #c71f7e inset !important; + color: #c71f7e !important; +} +.ui.buttons:not(.vertical) > .basic.pink.button:not(:first-child) { + margin-left: -1px; +} + +/* Inverted */ +.ui.inverted.pink.buttons .button, +.ui.inverted.pink.button { + background-color: transparent; + -webkit-box-shadow: 0px 0px 0px 2px #FF8EDF inset !important; + box-shadow: 0px 0px 0px 2px #FF8EDF inset !important; + color: #FF8EDF; +} +.ui.inverted.pink.buttons .button:hover, +.ui.inverted.pink.button:hover, +.ui.inverted.pink.buttons .button:focus, +.ui.inverted.pink.button:focus, +.ui.inverted.pink.buttons .button.active, +.ui.inverted.pink.button.active, +.ui.inverted.pink.buttons .button:active, +.ui.inverted.pink.button:active { + -webkit-box-shadow: none !important; + box-shadow: none !important; + color: #FFFFFF; +} +.ui.inverted.pink.buttons .button:hover, +.ui.inverted.pink.button:hover { + background-color: #ff74d8; +} +.ui.inverted.pink.buttons .button:focus, +.ui.inverted.pink.button:focus { + background-color: #ff65d3; +} +.ui.inverted.pink.buttons .active.button, +.ui.inverted.pink.active.button { + background-color: #ff74d8; +} +.ui.inverted.pink.buttons .button:active, +.ui.inverted.pink.button:active { + background-color: #ff5bd1; +} + +/* Inverted Basic */ +.ui.inverted.pink.basic.buttons .button, +.ui.inverted.pink.buttons .basic.button, +.ui.inverted.pink.basic.button { + background-color: transparent; + -webkit-box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 0.5) inset !important; + box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 0.5) inset !important; + color: #FFFFFF !important; +} +.ui.inverted.pink.basic.buttons .button:hover, +.ui.inverted.pink.buttons .basic.button:hover, +.ui.inverted.pink.basic.button:hover { + -webkit-box-shadow: 0px 0px 0px 2px #ff74d8 inset !important; + box-shadow: 0px 0px 0px 2px #ff74d8 inset !important; + color: #FF8EDF !important; +} +.ui.inverted.pink.basic.buttons .button:focus, +.ui.inverted.pink.basic.buttons .button:focus, +.ui.inverted.pink.basic.button:focus { + -webkit-box-shadow: 0px 0px 0px 2px #ff65d3 inset !important; + box-shadow: 0px 0px 0px 2px #ff65d3 inset !important; + color: #FF8EDF !important; +} +.ui.inverted.pink.basic.buttons .active.button, +.ui.inverted.pink.buttons .basic.active.button, +.ui.inverted.pink.basic.active.button { + -webkit-box-shadow: 0px 0px 0px 2px #ff74d8 inset !important; + box-shadow: 0px 0px 0px 2px #ff74d8 inset !important; + color: #FF8EDF !important; +} +.ui.inverted.pink.basic.buttons .button:active, +.ui.inverted.pink.buttons .basic.button:active, +.ui.inverted.pink.basic.button:active { + -webkit-box-shadow: 0px 0px 0px 2px #ff5bd1 inset !important; + box-shadow: 0px 0px 0px 2px #ff5bd1 inset !important; + color: #FF8EDF !important; +} + +/*--- Violet ---*/ + +.ui.violet.buttons .button, +.ui.violet.button { + background-color: #6435C9; + color: #FFFFFF; + text-shadow: none; + background-image: none; +} +.ui.violet.button { + -webkit-box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; + box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; +} +.ui.violet.buttons .button:hover, +.ui.violet.button:hover { + background-color: #5829bb; + color: #FFFFFF; + text-shadow: none; +} +.ui.violet.buttons .button:focus, +.ui.violet.button:focus { + background-color: #4f20b5; + color: #FFFFFF; + text-shadow: none; +} +.ui.violet.buttons .button:active, +.ui.violet.button:active { + background-color: #502aa1; + color: #FFFFFF; + text-shadow: none; +} +.ui.violet.buttons .active.button, +.ui.violet.buttons .active.button:active, +.ui.violet.active.button, +.ui.violet.button .active.button:active { + background-color: #5626bf; + color: #FFFFFF; + text-shadow: none; +} + +/* Basic */ +.ui.basic.violet.buttons .button, +.ui.basic.violet.button { + -webkit-box-shadow: 0px 0px 0px 1px #6435C9 inset !important; + box-shadow: 0px 0px 0px 1px #6435C9 inset !important; + color: #6435C9 !important; +} +.ui.basic.violet.buttons .button:hover, +.ui.basic.violet.button:hover { + background: transparent !important; + -webkit-box-shadow: 0px 0px 0px 1px #5829bb inset !important; + box-shadow: 0px 0px 0px 1px #5829bb inset !important; + color: #5829bb !important; +} +.ui.basic.violet.buttons .button:focus, +.ui.basic.violet.button:focus { + background: transparent !important; + -webkit-box-shadow: 0px 0px 0px 1px #4f20b5 inset !important; + box-shadow: 0px 0px 0px 1px #4f20b5 inset !important; + color: #5829bb !important; +} +.ui.basic.violet.buttons .active.button, +.ui.basic.violet.active.button { + background: transparent !important; + -webkit-box-shadow: 0px 0px 0px 1px #5626bf inset !important; + box-shadow: 0px 0px 0px 1px #5626bf inset !important; + color: #502aa1 !important; +} +.ui.basic.violet.buttons .button:active, +.ui.basic.violet.button:active { + -webkit-box-shadow: 0px 0px 0px 1px #502aa1 inset !important; + box-shadow: 0px 0px 0px 1px #502aa1 inset !important; + color: #502aa1 !important; +} +.ui.buttons:not(.vertical) > .basic.violet.button:not(:first-child) { + margin-left: -1px; +} + +/* Inverted */ +.ui.inverted.violet.buttons .button, +.ui.inverted.violet.button { + background-color: transparent; + -webkit-box-shadow: 0px 0px 0px 2px #A291FB inset !important; + box-shadow: 0px 0px 0px 2px #A291FB inset !important; + color: #A291FB; +} +.ui.inverted.violet.buttons .button:hover, +.ui.inverted.violet.button:hover, +.ui.inverted.violet.buttons .button:focus, +.ui.inverted.violet.button:focus, +.ui.inverted.violet.buttons .button.active, +.ui.inverted.violet.button.active, +.ui.inverted.violet.buttons .button:active, +.ui.inverted.violet.button:active { + -webkit-box-shadow: none !important; + box-shadow: none !important; + color: #FFFFFF; +} +.ui.inverted.violet.buttons .button:hover, +.ui.inverted.violet.button:hover { + background-color: #8a73ff; +} +.ui.inverted.violet.buttons .button:focus, +.ui.inverted.violet.button:focus { + background-color: #7d64ff; +} +.ui.inverted.violet.buttons .active.button, +.ui.inverted.violet.active.button { + background-color: #8a73ff; +} +.ui.inverted.violet.buttons .button:active, +.ui.inverted.violet.button:active { + background-color: #7860f9; +} + +/* Inverted Basic */ +.ui.inverted.violet.basic.buttons .button, +.ui.inverted.violet.buttons .basic.button, +.ui.inverted.violet.basic.button { + background-color: transparent; + -webkit-box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 0.5) inset !important; + box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 0.5) inset !important; + color: #FFFFFF !important; +} +.ui.inverted.violet.basic.buttons .button:hover, +.ui.inverted.violet.buttons .basic.button:hover, +.ui.inverted.violet.basic.button:hover { + -webkit-box-shadow: 0px 0px 0px 2px #8a73ff inset !important; + box-shadow: 0px 0px 0px 2px #8a73ff inset !important; + color: #A291FB !important; +} +.ui.inverted.violet.basic.buttons .button:focus, +.ui.inverted.violet.basic.buttons .button:focus, +.ui.inverted.violet.basic.button:focus { + -webkit-box-shadow: 0px 0px 0px 2px #7d64ff inset !important; + box-shadow: 0px 0px 0px 2px #7d64ff inset !important; + color: #A291FB !important; +} +.ui.inverted.violet.basic.buttons .active.button, +.ui.inverted.violet.buttons .basic.active.button, +.ui.inverted.violet.basic.active.button { + -webkit-box-shadow: 0px 0px 0px 2px #8a73ff inset !important; + box-shadow: 0px 0px 0px 2px #8a73ff inset !important; + color: #A291FB !important; +} +.ui.inverted.violet.basic.buttons .button:active, +.ui.inverted.violet.buttons .basic.button:active, +.ui.inverted.violet.basic.button:active { + -webkit-box-shadow: 0px 0px 0px 2px #7860f9 inset !important; + box-shadow: 0px 0px 0px 2px #7860f9 inset !important; + color: #A291FB !important; +} + +/*--- Purple ---*/ + +.ui.purple.buttons .button, +.ui.purple.button { + background-color: #A333C8; + color: #FFFFFF; + text-shadow: none; + background-image: none; +} +.ui.purple.button { + -webkit-box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; + box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; +} +.ui.purple.buttons .button:hover, +.ui.purple.button:hover { + background-color: #9627ba; + color: #FFFFFF; + text-shadow: none; +} +.ui.purple.buttons .button:focus, +.ui.purple.button:focus { + background-color: #8f1eb4; + color: #FFFFFF; + text-shadow: none; +} +.ui.purple.buttons .button:active, +.ui.purple.button:active { + background-color: #82299f; + color: #FFFFFF; + text-shadow: none; +} +.ui.purple.buttons .active.button, +.ui.purple.buttons .active.button:active, +.ui.purple.active.button, +.ui.purple.button .active.button:active { + background-color: #9724be; + color: #FFFFFF; + text-shadow: none; +} + +/* Basic */ +.ui.basic.purple.buttons .button, +.ui.basic.purple.button { + -webkit-box-shadow: 0px 0px 0px 1px #A333C8 inset !important; + box-shadow: 0px 0px 0px 1px #A333C8 inset !important; + color: #A333C8 !important; +} +.ui.basic.purple.buttons .button:hover, +.ui.basic.purple.button:hover { + background: transparent !important; + -webkit-box-shadow: 0px 0px 0px 1px #9627ba inset !important; + box-shadow: 0px 0px 0px 1px #9627ba inset !important; + color: #9627ba !important; +} +.ui.basic.purple.buttons .button:focus, +.ui.basic.purple.button:focus { + background: transparent !important; + -webkit-box-shadow: 0px 0px 0px 1px #8f1eb4 inset !important; + box-shadow: 0px 0px 0px 1px #8f1eb4 inset !important; + color: #9627ba !important; +} +.ui.basic.purple.buttons .active.button, +.ui.basic.purple.active.button { + background: transparent !important; + -webkit-box-shadow: 0px 0px 0px 1px #9724be inset !important; + box-shadow: 0px 0px 0px 1px #9724be inset !important; + color: #82299f !important; +} +.ui.basic.purple.buttons .button:active, +.ui.basic.purple.button:active { + -webkit-box-shadow: 0px 0px 0px 1px #82299f inset !important; + box-shadow: 0px 0px 0px 1px #82299f inset !important; + color: #82299f !important; +} +.ui.buttons:not(.vertical) > .basic.purple.button:not(:first-child) { + margin-left: -1px; +} + +/* Inverted */ +.ui.inverted.purple.buttons .button, +.ui.inverted.purple.button { + background-color: transparent; + -webkit-box-shadow: 0px 0px 0px 2px #DC73FF inset !important; + box-shadow: 0px 0px 0px 2px #DC73FF inset !important; + color: #DC73FF; +} +.ui.inverted.purple.buttons .button:hover, +.ui.inverted.purple.button:hover, +.ui.inverted.purple.buttons .button:focus, +.ui.inverted.purple.button:focus, +.ui.inverted.purple.buttons .button.active, +.ui.inverted.purple.button.active, +.ui.inverted.purple.buttons .button:active, +.ui.inverted.purple.button:active { + -webkit-box-shadow: none !important; + box-shadow: none !important; + color: #FFFFFF; +} +.ui.inverted.purple.buttons .button:hover, +.ui.inverted.purple.button:hover { + background-color: #d65aff; +} +.ui.inverted.purple.buttons .button:focus, +.ui.inverted.purple.button:focus { + background-color: #d24aff; +} +.ui.inverted.purple.buttons .active.button, +.ui.inverted.purple.active.button { + background-color: #d65aff; +} +.ui.inverted.purple.buttons .button:active, +.ui.inverted.purple.button:active { + background-color: #cf40ff; +} + +/* Inverted Basic */ +.ui.inverted.purple.basic.buttons .button, +.ui.inverted.purple.buttons .basic.button, +.ui.inverted.purple.basic.button { + background-color: transparent; + -webkit-box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 0.5) inset !important; + box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 0.5) inset !important; + color: #FFFFFF !important; +} +.ui.inverted.purple.basic.buttons .button:hover, +.ui.inverted.purple.buttons .basic.button:hover, +.ui.inverted.purple.basic.button:hover { + -webkit-box-shadow: 0px 0px 0px 2px #d65aff inset !important; + box-shadow: 0px 0px 0px 2px #d65aff inset !important; + color: #DC73FF !important; +} +.ui.inverted.purple.basic.buttons .button:focus, +.ui.inverted.purple.basic.buttons .button:focus, +.ui.inverted.purple.basic.button:focus { + -webkit-box-shadow: 0px 0px 0px 2px #d24aff inset !important; + box-shadow: 0px 0px 0px 2px #d24aff inset !important; + color: #DC73FF !important; +} +.ui.inverted.purple.basic.buttons .active.button, +.ui.inverted.purple.buttons .basic.active.button, +.ui.inverted.purple.basic.active.button { + -webkit-box-shadow: 0px 0px 0px 2px #d65aff inset !important; + box-shadow: 0px 0px 0px 2px #d65aff inset !important; + color: #DC73FF !important; +} +.ui.inverted.purple.basic.buttons .button:active, +.ui.inverted.purple.buttons .basic.button:active, +.ui.inverted.purple.basic.button:active { + -webkit-box-shadow: 0px 0px 0px 2px #cf40ff inset !important; + box-shadow: 0px 0px 0px 2px #cf40ff inset !important; + color: #DC73FF !important; +} + +/*--- Red ---*/ + +.ui.red.buttons .button, +.ui.red.button { + background-color: #DB2828; + color: #FFFFFF; + text-shadow: none; + background-image: none; +} +.ui.red.button { + -webkit-box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; + box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; +} +.ui.red.buttons .button:hover, +.ui.red.button:hover { + background-color: #d01919; + color: #FFFFFF; + text-shadow: none; +} +.ui.red.buttons .button:focus, +.ui.red.button:focus { + background-color: #ca1010; + color: #FFFFFF; + text-shadow: none; +} +.ui.red.buttons .button:active, +.ui.red.button:active { + background-color: #b21e1e; + color: #FFFFFF; + text-shadow: none; +} +.ui.red.buttons .active.button, +.ui.red.buttons .active.button:active, +.ui.red.active.button, +.ui.red.button .active.button:active { + background-color: #d41515; + color: #FFFFFF; + text-shadow: none; +} + +/* Basic */ +.ui.basic.red.buttons .button, +.ui.basic.red.button { + -webkit-box-shadow: 0px 0px 0px 1px #DB2828 inset !important; + box-shadow: 0px 0px 0px 1px #DB2828 inset !important; + color: #DB2828 !important; +} +.ui.basic.red.buttons .button:hover, +.ui.basic.red.button:hover { + background: transparent !important; + -webkit-box-shadow: 0px 0px 0px 1px #d01919 inset !important; + box-shadow: 0px 0px 0px 1px #d01919 inset !important; + color: #d01919 !important; +} +.ui.basic.red.buttons .button:focus, +.ui.basic.red.button:focus { + background: transparent !important; + -webkit-box-shadow: 0px 0px 0px 1px #ca1010 inset !important; + box-shadow: 0px 0px 0px 1px #ca1010 inset !important; + color: #d01919 !important; +} +.ui.basic.red.buttons .active.button, +.ui.basic.red.active.button { + background: transparent !important; + -webkit-box-shadow: 0px 0px 0px 1px #d41515 inset !important; + box-shadow: 0px 0px 0px 1px #d41515 inset !important; + color: #b21e1e !important; +} +.ui.basic.red.buttons .button:active, +.ui.basic.red.button:active { + -webkit-box-shadow: 0px 0px 0px 1px #b21e1e inset !important; + box-shadow: 0px 0px 0px 1px #b21e1e inset !important; + color: #b21e1e !important; +} +.ui.buttons:not(.vertical) > .basic.red.button:not(:first-child) { + margin-left: -1px; +} + +/* Inverted */ +.ui.inverted.red.buttons .button, +.ui.inverted.red.button { + background-color: transparent; + -webkit-box-shadow: 0px 0px 0px 2px #FF695E inset !important; + box-shadow: 0px 0px 0px 2px #FF695E inset !important; + color: #FF695E; +} +.ui.inverted.red.buttons .button:hover, +.ui.inverted.red.button:hover, +.ui.inverted.red.buttons .button:focus, +.ui.inverted.red.button:focus, +.ui.inverted.red.buttons .button.active, +.ui.inverted.red.button.active, +.ui.inverted.red.buttons .button:active, +.ui.inverted.red.button:active { + -webkit-box-shadow: none !important; + box-shadow: none !important; + color: #FFFFFF; +} +.ui.inverted.red.buttons .button:hover, +.ui.inverted.red.button:hover { + background-color: #ff5144; +} +.ui.inverted.red.buttons .button:focus, +.ui.inverted.red.button:focus { + background-color: #ff4335; +} +.ui.inverted.red.buttons .active.button, +.ui.inverted.red.active.button { + background-color: #ff5144; +} +.ui.inverted.red.buttons .button:active, +.ui.inverted.red.button:active { + background-color: #ff392b; +} + +/* Inverted Basic */ +.ui.inverted.red.basic.buttons .button, +.ui.inverted.red.buttons .basic.button, +.ui.inverted.red.basic.button { + background-color: transparent; + -webkit-box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 0.5) inset !important; + box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 0.5) inset !important; + color: #FFFFFF !important; +} +.ui.inverted.red.basic.buttons .button:hover, +.ui.inverted.red.buttons .basic.button:hover, +.ui.inverted.red.basic.button:hover { + -webkit-box-shadow: 0px 0px 0px 2px #ff5144 inset !important; + box-shadow: 0px 0px 0px 2px #ff5144 inset !important; + color: #FF695E !important; +} +.ui.inverted.red.basic.buttons .button:focus, +.ui.inverted.red.basic.buttons .button:focus, +.ui.inverted.red.basic.button:focus { + -webkit-box-shadow: 0px 0px 0px 2px #ff4335 inset !important; + box-shadow: 0px 0px 0px 2px #ff4335 inset !important; + color: #FF695E !important; +} +.ui.inverted.red.basic.buttons .active.button, +.ui.inverted.red.buttons .basic.active.button, +.ui.inverted.red.basic.active.button { + -webkit-box-shadow: 0px 0px 0px 2px #ff5144 inset !important; + box-shadow: 0px 0px 0px 2px #ff5144 inset !important; + color: #FF695E !important; +} +.ui.inverted.red.basic.buttons .button:active, +.ui.inverted.red.buttons .basic.button:active, +.ui.inverted.red.basic.button:active { + -webkit-box-shadow: 0px 0px 0px 2px #ff392b inset !important; + box-shadow: 0px 0px 0px 2px #ff392b inset !important; + color: #FF695E !important; +} + +/*--- Teal ---*/ + +.ui.teal.buttons .button, +.ui.teal.button { + background-color: #00B5AD; + color: #FFFFFF; + text-shadow: none; + background-image: none; +} +.ui.teal.button { + -webkit-box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; + box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; +} +.ui.teal.buttons .button:hover, +.ui.teal.button:hover { + background-color: #009c95; + color: #FFFFFF; + text-shadow: none; +} +.ui.teal.buttons .button:focus, +.ui.teal.button:focus { + background-color: #008c86; + color: #FFFFFF; + text-shadow: none; +} +.ui.teal.buttons .button:active, +.ui.teal.button:active { + background-color: #00827c; + color: #FFFFFF; + text-shadow: none; +} +.ui.teal.buttons .active.button, +.ui.teal.buttons .active.button:active, +.ui.teal.active.button, +.ui.teal.button .active.button:active { + background-color: #009c95; + color: #FFFFFF; + text-shadow: none; +} + +/* Basic */ +.ui.basic.teal.buttons .button, +.ui.basic.teal.button { + -webkit-box-shadow: 0px 0px 0px 1px #00B5AD inset !important; + box-shadow: 0px 0px 0px 1px #00B5AD inset !important; + color: #00B5AD !important; +} +.ui.basic.teal.buttons .button:hover, +.ui.basic.teal.button:hover { + background: transparent !important; + -webkit-box-shadow: 0px 0px 0px 1px #009c95 inset !important; + box-shadow: 0px 0px 0px 1px #009c95 inset !important; + color: #009c95 !important; +} +.ui.basic.teal.buttons .button:focus, +.ui.basic.teal.button:focus { + background: transparent !important; + -webkit-box-shadow: 0px 0px 0px 1px #008c86 inset !important; + box-shadow: 0px 0px 0px 1px #008c86 inset !important; + color: #009c95 !important; +} +.ui.basic.teal.buttons .active.button, +.ui.basic.teal.active.button { + background: transparent !important; + -webkit-box-shadow: 0px 0px 0px 1px #009c95 inset !important; + box-shadow: 0px 0px 0px 1px #009c95 inset !important; + color: #00827c !important; +} +.ui.basic.teal.buttons .button:active, +.ui.basic.teal.button:active { + -webkit-box-shadow: 0px 0px 0px 1px #00827c inset !important; + box-shadow: 0px 0px 0px 1px #00827c inset !important; + color: #00827c !important; +} +.ui.buttons:not(.vertical) > .basic.teal.button:not(:first-child) { + margin-left: -1px; +} + +/* Inverted */ +.ui.inverted.teal.buttons .button, +.ui.inverted.teal.button { + background-color: transparent; + -webkit-box-shadow: 0px 0px 0px 2px #6DFFFF inset !important; + box-shadow: 0px 0px 0px 2px #6DFFFF inset !important; + color: #6DFFFF; +} +.ui.inverted.teal.buttons .button:hover, +.ui.inverted.teal.button:hover, +.ui.inverted.teal.buttons .button:focus, +.ui.inverted.teal.button:focus, +.ui.inverted.teal.buttons .button.active, +.ui.inverted.teal.button.active, +.ui.inverted.teal.buttons .button:active, +.ui.inverted.teal.button:active { + -webkit-box-shadow: none !important; + box-shadow: none !important; + color: rgba(0, 0, 0, 0.6); +} +.ui.inverted.teal.buttons .button:hover, +.ui.inverted.teal.button:hover { + background-color: #54ffff; +} +.ui.inverted.teal.buttons .button:focus, +.ui.inverted.teal.button:focus { + background-color: #44ffff; +} +.ui.inverted.teal.buttons .active.button, +.ui.inverted.teal.active.button { + background-color: #54ffff; +} +.ui.inverted.teal.buttons .button:active, +.ui.inverted.teal.button:active { + background-color: #3affff; +} + +/* Inverted Basic */ +.ui.inverted.teal.basic.buttons .button, +.ui.inverted.teal.buttons .basic.button, +.ui.inverted.teal.basic.button { + background-color: transparent; + -webkit-box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 0.5) inset !important; + box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 0.5) inset !important; + color: #FFFFFF !important; +} +.ui.inverted.teal.basic.buttons .button:hover, +.ui.inverted.teal.buttons .basic.button:hover, +.ui.inverted.teal.basic.button:hover { + -webkit-box-shadow: 0px 0px 0px 2px #54ffff inset !important; + box-shadow: 0px 0px 0px 2px #54ffff inset !important; + color: #6DFFFF !important; +} +.ui.inverted.teal.basic.buttons .button:focus, +.ui.inverted.teal.basic.buttons .button:focus, +.ui.inverted.teal.basic.button:focus { + -webkit-box-shadow: 0px 0px 0px 2px #44ffff inset !important; + box-shadow: 0px 0px 0px 2px #44ffff inset !important; + color: #6DFFFF !important; +} +.ui.inverted.teal.basic.buttons .active.button, +.ui.inverted.teal.buttons .basic.active.button, +.ui.inverted.teal.basic.active.button { + -webkit-box-shadow: 0px 0px 0px 2px #54ffff inset !important; + box-shadow: 0px 0px 0px 2px #54ffff inset !important; + color: #6DFFFF !important; +} +.ui.inverted.teal.basic.buttons .button:active, +.ui.inverted.teal.buttons .basic.button:active, +.ui.inverted.teal.basic.button:active { + -webkit-box-shadow: 0px 0px 0px 2px #3affff inset !important; + box-shadow: 0px 0px 0px 2px #3affff inset !important; + color: #6DFFFF !important; +} + +/*--- Olive ---*/ + +.ui.olive.buttons .button, +.ui.olive.button { + background-color: #B5CC18; + color: #FFFFFF; + text-shadow: none; + background-image: none; +} +.ui.olive.button { + -webkit-box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; + box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; +} +.ui.olive.buttons .button:hover, +.ui.olive.button:hover { + background-color: #a7bd0d; + color: #FFFFFF; + text-shadow: none; +} +.ui.olive.buttons .button:focus, +.ui.olive.button:focus { + background-color: #a0b605; + color: #FFFFFF; + text-shadow: none; +} +.ui.olive.buttons .button:active, +.ui.olive.button:active { + background-color: #8d9e13; + color: #FFFFFF; + text-shadow: none; +} +.ui.olive.buttons .active.button, +.ui.olive.buttons .active.button:active, +.ui.olive.active.button, +.ui.olive.button .active.button:active { + background-color: #aac109; + color: #FFFFFF; + text-shadow: none; +} + +/* Basic */ +.ui.basic.olive.buttons .button, +.ui.basic.olive.button { + -webkit-box-shadow: 0px 0px 0px 1px #B5CC18 inset !important; + box-shadow: 0px 0px 0px 1px #B5CC18 inset !important; + color: #B5CC18 !important; +} +.ui.basic.olive.buttons .button:hover, +.ui.basic.olive.button:hover { + background: transparent !important; + -webkit-box-shadow: 0px 0px 0px 1px #a7bd0d inset !important; + box-shadow: 0px 0px 0px 1px #a7bd0d inset !important; + color: #a7bd0d !important; +} +.ui.basic.olive.buttons .button:focus, +.ui.basic.olive.button:focus { + background: transparent !important; + -webkit-box-shadow: 0px 0px 0px 1px #a0b605 inset !important; + box-shadow: 0px 0px 0px 1px #a0b605 inset !important; + color: #a7bd0d !important; +} +.ui.basic.olive.buttons .active.button, +.ui.basic.olive.active.button { + background: transparent !important; + -webkit-box-shadow: 0px 0px 0px 1px #aac109 inset !important; + box-shadow: 0px 0px 0px 1px #aac109 inset !important; + color: #8d9e13 !important; +} +.ui.basic.olive.buttons .button:active, +.ui.basic.olive.button:active { + -webkit-box-shadow: 0px 0px 0px 1px #8d9e13 inset !important; + box-shadow: 0px 0px 0px 1px #8d9e13 inset !important; + color: #8d9e13 !important; +} +.ui.buttons:not(.vertical) > .basic.olive.button:not(:first-child) { + margin-left: -1px; +} + +/* Inverted */ +.ui.inverted.olive.buttons .button, +.ui.inverted.olive.button { + background-color: transparent; + -webkit-box-shadow: 0px 0px 0px 2px #D9E778 inset !important; + box-shadow: 0px 0px 0px 2px #D9E778 inset !important; + color: #D9E778; +} +.ui.inverted.olive.buttons .button:hover, +.ui.inverted.olive.button:hover, +.ui.inverted.olive.buttons .button:focus, +.ui.inverted.olive.button:focus, +.ui.inverted.olive.buttons .button.active, +.ui.inverted.olive.button.active, +.ui.inverted.olive.buttons .button:active, +.ui.inverted.olive.button:active { + -webkit-box-shadow: none !important; + box-shadow: none !important; + color: rgba(0, 0, 0, 0.6); +} +.ui.inverted.olive.buttons .button:hover, +.ui.inverted.olive.button:hover { + background-color: #d8ea5c; +} +.ui.inverted.olive.buttons .button:focus, +.ui.inverted.olive.button:focus { + background-color: #daef47; +} +.ui.inverted.olive.buttons .active.button, +.ui.inverted.olive.active.button { + background-color: #daed59; +} +.ui.inverted.olive.buttons .button:active, +.ui.inverted.olive.button:active { + background-color: #cddf4d; +} + +/* Inverted Basic */ +.ui.inverted.olive.basic.buttons .button, +.ui.inverted.olive.buttons .basic.button, +.ui.inverted.olive.basic.button { + background-color: transparent; + -webkit-box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 0.5) inset !important; + box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 0.5) inset !important; + color: #FFFFFF !important; +} +.ui.inverted.olive.basic.buttons .button:hover, +.ui.inverted.olive.buttons .basic.button:hover, +.ui.inverted.olive.basic.button:hover { + -webkit-box-shadow: 0px 0px 0px 2px #d8ea5c inset !important; + box-shadow: 0px 0px 0px 2px #d8ea5c inset !important; + color: #D9E778 !important; +} +.ui.inverted.olive.basic.buttons .button:focus, +.ui.inverted.olive.basic.buttons .button:focus, +.ui.inverted.olive.basic.button:focus { + -webkit-box-shadow: 0px 0px 0px 2px #daef47 inset !important; + box-shadow: 0px 0px 0px 2px #daef47 inset !important; + color: #D9E778 !important; +} +.ui.inverted.olive.basic.buttons .active.button, +.ui.inverted.olive.buttons .basic.active.button, +.ui.inverted.olive.basic.active.button { + -webkit-box-shadow: 0px 0px 0px 2px #daed59 inset !important; + box-shadow: 0px 0px 0px 2px #daed59 inset !important; + color: #D9E778 !important; +} +.ui.inverted.olive.basic.buttons .button:active, +.ui.inverted.olive.buttons .basic.button:active, +.ui.inverted.olive.basic.button:active { + -webkit-box-shadow: 0px 0px 0px 2px #cddf4d inset !important; + box-shadow: 0px 0px 0px 2px #cddf4d inset !important; + color: #D9E778 !important; +} + +/*--- Yellow ---*/ + +.ui.yellow.buttons .button, +.ui.yellow.button { + background-color: #FBBD08; + color: #FFFFFF; + text-shadow: none; + background-image: none; +} +.ui.yellow.button { + -webkit-box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; + box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; +} +.ui.yellow.buttons .button:hover, +.ui.yellow.button:hover { + background-color: #eaae00; + color: #FFFFFF; + text-shadow: none; +} +.ui.yellow.buttons .button:focus, +.ui.yellow.button:focus { + background-color: #daa300; + color: #FFFFFF; + text-shadow: none; +} +.ui.yellow.buttons .button:active, +.ui.yellow.button:active { + background-color: #cd9903; + color: #FFFFFF; + text-shadow: none; +} +.ui.yellow.buttons .active.button, +.ui.yellow.buttons .active.button:active, +.ui.yellow.active.button, +.ui.yellow.button .active.button:active { + background-color: #eaae00; + color: #FFFFFF; + text-shadow: none; +} + +/* Basic */ +.ui.basic.yellow.buttons .button, +.ui.basic.yellow.button { + -webkit-box-shadow: 0px 0px 0px 1px #FBBD08 inset !important; + box-shadow: 0px 0px 0px 1px #FBBD08 inset !important; + color: #FBBD08 !important; +} +.ui.basic.yellow.buttons .button:hover, +.ui.basic.yellow.button:hover { + background: transparent !important; + -webkit-box-shadow: 0px 0px 0px 1px #eaae00 inset !important; + box-shadow: 0px 0px 0px 1px #eaae00 inset !important; + color: #eaae00 !important; +} +.ui.basic.yellow.buttons .button:focus, +.ui.basic.yellow.button:focus { + background: transparent !important; + -webkit-box-shadow: 0px 0px 0px 1px #daa300 inset !important; + box-shadow: 0px 0px 0px 1px #daa300 inset !important; + color: #eaae00 !important; +} +.ui.basic.yellow.buttons .active.button, +.ui.basic.yellow.active.button { + background: transparent !important; + -webkit-box-shadow: 0px 0px 0px 1px #eaae00 inset !important; + box-shadow: 0px 0px 0px 1px #eaae00 inset !important; + color: #cd9903 !important; +} +.ui.basic.yellow.buttons .button:active, +.ui.basic.yellow.button:active { + -webkit-box-shadow: 0px 0px 0px 1px #cd9903 inset !important; + box-shadow: 0px 0px 0px 1px #cd9903 inset !important; + color: #cd9903 !important; +} +.ui.buttons:not(.vertical) > .basic.yellow.button:not(:first-child) { + margin-left: -1px; +} + +/* Inverted */ +.ui.inverted.yellow.buttons .button, +.ui.inverted.yellow.button { + background-color: transparent; + -webkit-box-shadow: 0px 0px 0px 2px #FFE21F inset !important; + box-shadow: 0px 0px 0px 2px #FFE21F inset !important; + color: #FFE21F; +} +.ui.inverted.yellow.buttons .button:hover, +.ui.inverted.yellow.button:hover, +.ui.inverted.yellow.buttons .button:focus, +.ui.inverted.yellow.button:focus, +.ui.inverted.yellow.buttons .button.active, +.ui.inverted.yellow.button.active, +.ui.inverted.yellow.buttons .button:active, +.ui.inverted.yellow.button:active { + -webkit-box-shadow: none !important; + box-shadow: none !important; + color: rgba(0, 0, 0, 0.6); +} +.ui.inverted.yellow.buttons .button:hover, +.ui.inverted.yellow.button:hover { + background-color: #ffdf05; +} +.ui.inverted.yellow.buttons .button:focus, +.ui.inverted.yellow.button:focus { + background-color: #f5d500; +} +.ui.inverted.yellow.buttons .active.button, +.ui.inverted.yellow.active.button { + background-color: #ffdf05; +} +.ui.inverted.yellow.buttons .button:active, +.ui.inverted.yellow.button:active { + background-color: #ebcd00; +} + +/* Inverted Basic */ +.ui.inverted.yellow.basic.buttons .button, +.ui.inverted.yellow.buttons .basic.button, +.ui.inverted.yellow.basic.button { + background-color: transparent; + -webkit-box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 0.5) inset !important; + box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 0.5) inset !important; + color: #FFFFFF !important; +} +.ui.inverted.yellow.basic.buttons .button:hover, +.ui.inverted.yellow.buttons .basic.button:hover, +.ui.inverted.yellow.basic.button:hover { + -webkit-box-shadow: 0px 0px 0px 2px #ffdf05 inset !important; + box-shadow: 0px 0px 0px 2px #ffdf05 inset !important; + color: #FFE21F !important; +} +.ui.inverted.yellow.basic.buttons .button:focus, +.ui.inverted.yellow.basic.buttons .button:focus, +.ui.inverted.yellow.basic.button:focus { + -webkit-box-shadow: 0px 0px 0px 2px #f5d500 inset !important; + box-shadow: 0px 0px 0px 2px #f5d500 inset !important; + color: #FFE21F !important; +} +.ui.inverted.yellow.basic.buttons .active.button, +.ui.inverted.yellow.buttons .basic.active.button, +.ui.inverted.yellow.basic.active.button { + -webkit-box-shadow: 0px 0px 0px 2px #ffdf05 inset !important; + box-shadow: 0px 0px 0px 2px #ffdf05 inset !important; + color: #FFE21F !important; +} +.ui.inverted.yellow.basic.buttons .button:active, +.ui.inverted.yellow.buttons .basic.button:active, +.ui.inverted.yellow.basic.button:active { + -webkit-box-shadow: 0px 0px 0px 2px #ebcd00 inset !important; + box-shadow: 0px 0px 0px 2px #ebcd00 inset !important; + color: #FFE21F !important; +} + +/*------------------- + Primary +--------------------*/ + + +/*--- Standard ---*/ + +.ui.primary.buttons .button, +.ui.primary.button { + background-color: #2185D0; + color: #FFFFFF; + text-shadow: none; + background-image: none; +} +.ui.primary.button { + -webkit-box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; + box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; +} +.ui.primary.buttons .button:hover, +.ui.primary.button:hover { + background-color: #1678c2; + color: #FFFFFF; + text-shadow: none; +} +.ui.primary.buttons .button:focus, +.ui.primary.button:focus { + background-color: #0d71bb; + color: #FFFFFF; + text-shadow: none; +} +.ui.primary.buttons .button:active, +.ui.primary.button:active { + background-color: #1a69a4; + color: #FFFFFF; + text-shadow: none; +} +.ui.primary.buttons .active.button, +.ui.primary.buttons .active.button:active, +.ui.primary.active.button, +.ui.primary.button .active.button:active { + background-color: #1279c6; + color: #FFFFFF; + text-shadow: none; +} + +/* Basic */ +.ui.basic.primary.buttons .button, +.ui.basic.primary.button { + -webkit-box-shadow: 0px 0px 0px 1px #2185D0 inset !important; + box-shadow: 0px 0px 0px 1px #2185D0 inset !important; + color: #2185D0 !important; +} +.ui.basic.primary.buttons .button:hover, +.ui.basic.primary.button:hover { + background: transparent !important; + -webkit-box-shadow: 0px 0px 0px 1px #1678c2 inset !important; + box-shadow: 0px 0px 0px 1px #1678c2 inset !important; + color: #1678c2 !important; +} +.ui.basic.primary.buttons .button:focus, +.ui.basic.primary.button:focus { + background: transparent !important; + -webkit-box-shadow: 0px 0px 0px 1px #0d71bb inset !important; + box-shadow: 0px 0px 0px 1px #0d71bb inset !important; + color: #1678c2 !important; +} +.ui.basic.primary.buttons .active.button, +.ui.basic.primary.active.button { + background: transparent !important; + -webkit-box-shadow: 0px 0px 0px 1px #1279c6 inset !important; + box-shadow: 0px 0px 0px 1px #1279c6 inset !important; + color: #1a69a4 !important; +} +.ui.basic.primary.buttons .button:active, +.ui.basic.primary.button:active { + -webkit-box-shadow: 0px 0px 0px 1px #1a69a4 inset !important; + box-shadow: 0px 0px 0px 1px #1a69a4 inset !important; + color: #1a69a4 !important; +} +.ui.buttons:not(.vertical) > .basic.primary.button:not(:first-child) { + margin-left: -1px; +} + +/* Inverted */ +.ui.inverted.primary.buttons .button, +.ui.inverted.primary.button { + background-color: transparent; + -webkit-box-shadow: 0px 0px 0px 2px #54C8FF inset !important; + box-shadow: 0px 0px 0px 2px #54C8FF inset !important; + color: #54C8FF; +} +.ui.inverted.primary.buttons .button:hover, +.ui.inverted.primary.button:hover, +.ui.inverted.primary.buttons .button:focus, +.ui.inverted.primary.button:focus, +.ui.inverted.primary.buttons .button.active, +.ui.inverted.primary.button.active, +.ui.inverted.primary.buttons .button:active, +.ui.inverted.primary.button:active { + -webkit-box-shadow: none !important; + box-shadow: none !important; + color: #FFFFFF; +} +.ui.inverted.primary.buttons .button:hover, +.ui.inverted.primary.button:hover { + background-color: #3ac0ff; +} +.ui.inverted.primary.buttons .button:focus, +.ui.inverted.primary.button:focus { + background-color: #2bbbff; +} +.ui.inverted.primary.buttons .active.button, +.ui.inverted.primary.active.button { + background-color: #3ac0ff; +} +.ui.inverted.primary.buttons .button:active, +.ui.inverted.primary.button:active { + background-color: #21b8ff; +} + +/* Inverted Basic */ +.ui.inverted.primary.basic.buttons .button, +.ui.inverted.primary.buttons .basic.button, +.ui.inverted.primary.basic.button { + background-color: transparent; + -webkit-box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 0.5) inset !important; + box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 0.5) inset !important; + color: #FFFFFF !important; +} +.ui.inverted.primary.basic.buttons .button:hover, +.ui.inverted.primary.buttons .basic.button:hover, +.ui.inverted.primary.basic.button:hover { + -webkit-box-shadow: 0px 0px 0px 2px #3ac0ff inset !important; + box-shadow: 0px 0px 0px 2px #3ac0ff inset !important; + color: #54C8FF !important; +} +.ui.inverted.primary.basic.buttons .button:focus, +.ui.inverted.primary.basic.buttons .button:focus, +.ui.inverted.primary.basic.button:focus { + -webkit-box-shadow: 0px 0px 0px 2px #2bbbff inset !important; + box-shadow: 0px 0px 0px 2px #2bbbff inset !important; + color: #54C8FF !important; +} +.ui.inverted.primary.basic.buttons .active.button, +.ui.inverted.primary.buttons .basic.active.button, +.ui.inverted.primary.basic.active.button { + -webkit-box-shadow: 0px 0px 0px 2px #3ac0ff inset !important; + box-shadow: 0px 0px 0px 2px #3ac0ff inset !important; + color: #54C8FF !important; +} +.ui.inverted.primary.basic.buttons .button:active, +.ui.inverted.primary.buttons .basic.button:active, +.ui.inverted.primary.basic.button:active { + -webkit-box-shadow: 0px 0px 0px 2px #21b8ff inset !important; + box-shadow: 0px 0px 0px 2px #21b8ff inset !important; + color: #54C8FF !important; +} + +/*------------------- + Secondary +--------------------*/ + + +/* Standard */ +.ui.secondary.buttons .button, +.ui.secondary.button { + background-color: #1B1C1D; + color: #FFFFFF; + text-shadow: none; + background-image: none; +} +.ui.secondary.button { + -webkit-box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; + box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; +} +.ui.secondary.buttons .button:hover, +.ui.secondary.button:hover { + background-color: #27292a; + color: #FFFFFF; + text-shadow: none; +} +.ui.secondary.buttons .button:focus, +.ui.secondary.button:focus { + background-color: #2e3032; + color: #FFFFFF; + text-shadow: none; +} +.ui.secondary.buttons .button:active, +.ui.secondary.button:active { + background-color: #343637; + color: #FFFFFF; + text-shadow: none; +} +.ui.secondary.buttons .active.button, +.ui.secondary.buttons .active.button:active, +.ui.secondary.active.button, +.ui.secondary.button .active.button:active { + background-color: #27292a; + color: #FFFFFF; + text-shadow: none; +} + +/* Basic */ +.ui.basic.secondary.buttons .button, +.ui.basic.secondary.button { + -webkit-box-shadow: 0px 0px 0px 1px #1B1C1D inset !important; + box-shadow: 0px 0px 0px 1px #1B1C1D inset !important; + color: #1B1C1D !important; +} +.ui.basic.secondary.buttons .button:hover, +.ui.basic.secondary.button:hover { + background: transparent !important; + -webkit-box-shadow: 0px 0px 0px 1px #27292a inset !important; + box-shadow: 0px 0px 0px 1px #27292a inset !important; + color: #27292a !important; +} +.ui.basic.secondary.buttons .button:focus, +.ui.basic.secondary.button:focus { + background: transparent !important; + -webkit-box-shadow: 0px 0px 0px 1px #2e3032 inset !important; + box-shadow: 0px 0px 0px 1px #2e3032 inset !important; + color: #27292a !important; +} +.ui.basic.secondary.buttons .active.button, +.ui.basic.secondary.active.button { + background: transparent !important; + -webkit-box-shadow: 0px 0px 0px 1px #27292a inset !important; + box-shadow: 0px 0px 0px 1px #27292a inset !important; + color: #343637 !important; +} +.ui.basic.secondary.buttons .button:active, +.ui.basic.secondary.button:active { + -webkit-box-shadow: 0px 0px 0px 1px #343637 inset !important; + box-shadow: 0px 0px 0px 1px #343637 inset !important; + color: #343637 !important; +} +.ui.buttons:not(.vertical) > .basic.primary.button:not(:first-child) { + margin-left: -1px; +} + +/* Inverted */ +.ui.inverted.secondary.buttons .button, +.ui.inverted.secondary.button { + background-color: transparent; + -webkit-box-shadow: 0px 0px 0px 2px #545454 inset !important; + box-shadow: 0px 0px 0px 2px #545454 inset !important; + color: #545454; +} +.ui.inverted.secondary.buttons .button:hover, +.ui.inverted.secondary.button:hover, +.ui.inverted.secondary.buttons .button:focus, +.ui.inverted.secondary.button:focus, +.ui.inverted.secondary.buttons .button.active, +.ui.inverted.secondary.button.active, +.ui.inverted.secondary.buttons .button:active, +.ui.inverted.secondary.button:active { + -webkit-box-shadow: none !important; + box-shadow: none !important; + color: #FFFFFF; +} +.ui.inverted.secondary.buttons .button:hover, +.ui.inverted.secondary.button:hover { + background-color: #616161; +} +.ui.inverted.secondary.buttons .button:focus, +.ui.inverted.secondary.button:focus { + background-color: #686868; +} +.ui.inverted.secondary.buttons .active.button, +.ui.inverted.secondary.active.button { + background-color: #616161; +} +.ui.inverted.secondary.buttons .button:active, +.ui.inverted.secondary.button:active { + background-color: #6e6e6e; +} + +/* Inverted Basic */ +.ui.inverted.secondary.basic.buttons .button, +.ui.inverted.secondary.buttons .basic.button, +.ui.inverted.secondary.basic.button { + background-color: transparent; + -webkit-box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 0.5) inset !important; + box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 0.5) inset !important; + color: #FFFFFF !important; +} +.ui.inverted.secondary.basic.buttons .button:hover, +.ui.inverted.secondary.buttons .basic.button:hover, +.ui.inverted.secondary.basic.button:hover { + -webkit-box-shadow: 0px 0px 0px 2px #616161 inset !important; + box-shadow: 0px 0px 0px 2px #616161 inset !important; + color: #545454 !important; +} +.ui.inverted.secondary.basic.buttons .button:focus, +.ui.inverted.secondary.basic.buttons .button:focus, +.ui.inverted.secondary.basic.button:focus { + -webkit-box-shadow: 0px 0px 0px 2px #686868 inset !important; + box-shadow: 0px 0px 0px 2px #686868 inset !important; + color: #545454 !important; +} +.ui.inverted.secondary.basic.buttons .active.button, +.ui.inverted.secondary.buttons .basic.active.button, +.ui.inverted.secondary.basic.active.button { + -webkit-box-shadow: 0px 0px 0px 2px #616161 inset !important; + box-shadow: 0px 0px 0px 2px #616161 inset !important; + color: #545454 !important; +} +.ui.inverted.secondary.basic.buttons .button:active, +.ui.inverted.secondary.buttons .basic.button:active, +.ui.inverted.secondary.basic.button:active { + -webkit-box-shadow: 0px 0px 0px 2px #6e6e6e inset !important; + box-shadow: 0px 0px 0px 2px #6e6e6e inset !important; + color: #545454 !important; +} + +/*--------------- + Positive +----------------*/ + + +/* Standard */ +.ui.positive.buttons .button, +.ui.positive.button { + background-color: #21BA45; + color: #FFFFFF; + text-shadow: none; + background-image: none; +} +.ui.positive.button { + -webkit-box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; + box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; +} +.ui.positive.buttons .button:hover, +.ui.positive.button:hover { + background-color: #16ab39; + color: #FFFFFF; + text-shadow: none; +} +.ui.positive.buttons .button:focus, +.ui.positive.button:focus { + background-color: #0ea432; + color: #FFFFFF; + text-shadow: none; +} +.ui.positive.buttons .button:active, +.ui.positive.button:active { + background-color: #198f35; + color: #FFFFFF; + text-shadow: none; +} +.ui.positive.buttons .active.button, +.ui.positive.buttons .active.button:active, +.ui.positive.active.button, +.ui.positive.button .active.button:active { + background-color: #13ae38; + color: #FFFFFF; + text-shadow: none; +} + +/* Basic */ +.ui.basic.positive.buttons .button, +.ui.basic.positive.button { + -webkit-box-shadow: 0px 0px 0px 1px #21BA45 inset !important; + box-shadow: 0px 0px 0px 1px #21BA45 inset !important; + color: #21BA45 !important; +} +.ui.basic.positive.buttons .button:hover, +.ui.basic.positive.button:hover { + background: transparent !important; + -webkit-box-shadow: 0px 0px 0px 1px #16ab39 inset !important; + box-shadow: 0px 0px 0px 1px #16ab39 inset !important; + color: #16ab39 !important; +} +.ui.basic.positive.buttons .button:focus, +.ui.basic.positive.button:focus { + background: transparent !important; + -webkit-box-shadow: 0px 0px 0px 1px #0ea432 inset !important; + box-shadow: 0px 0px 0px 1px #0ea432 inset !important; + color: #16ab39 !important; +} +.ui.basic.positive.buttons .active.button, +.ui.basic.positive.active.button { + background: transparent !important; + -webkit-box-shadow: 0px 0px 0px 1px #13ae38 inset !important; + box-shadow: 0px 0px 0px 1px #13ae38 inset !important; + color: #198f35 !important; +} +.ui.basic.positive.buttons .button:active, +.ui.basic.positive.button:active { + -webkit-box-shadow: 0px 0px 0px 1px #198f35 inset !important; + box-shadow: 0px 0px 0px 1px #198f35 inset !important; + color: #198f35 !important; +} +.ui.buttons:not(.vertical) > .basic.primary.button:not(:first-child) { + margin-left: -1px; +} + +/*--------------- + Negative +----------------*/ + + +/* Standard */ +.ui.negative.buttons .button, +.ui.negative.button { + background-color: #DB2828; + color: #FFFFFF; + text-shadow: none; + background-image: none; +} +.ui.negative.button { + -webkit-box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; + box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; +} +.ui.negative.buttons .button:hover, +.ui.negative.button:hover { + background-color: #d01919; + color: #FFFFFF; + text-shadow: none; +} +.ui.negative.buttons .button:focus, +.ui.negative.button:focus { + background-color: #ca1010; + color: #FFFFFF; + text-shadow: none; +} +.ui.negative.buttons .button:active, +.ui.negative.button:active { + background-color: #b21e1e; + color: #FFFFFF; + text-shadow: none; +} +.ui.negative.buttons .active.button, +.ui.negative.buttons .active.button:active, +.ui.negative.active.button, +.ui.negative.button .active.button:active { + background-color: #d41515; + color: #FFFFFF; + text-shadow: none; +} + +/* Basic */ +.ui.basic.negative.buttons .button, +.ui.basic.negative.button { + -webkit-box-shadow: 0px 0px 0px 1px #DB2828 inset !important; + box-shadow: 0px 0px 0px 1px #DB2828 inset !important; + color: #DB2828 !important; +} +.ui.basic.negative.buttons .button:hover, +.ui.basic.negative.button:hover { + background: transparent !important; + -webkit-box-shadow: 0px 0px 0px 1px #d01919 inset !important; + box-shadow: 0px 0px 0px 1px #d01919 inset !important; + color: #d01919 !important; +} +.ui.basic.negative.buttons .button:focus, +.ui.basic.negative.button:focus { + background: transparent !important; + -webkit-box-shadow: 0px 0px 0px 1px #ca1010 inset !important; + box-shadow: 0px 0px 0px 1px #ca1010 inset !important; + color: #d01919 !important; +} +.ui.basic.negative.buttons .active.button, +.ui.basic.negative.active.button { + background: transparent !important; + -webkit-box-shadow: 0px 0px 0px 1px #d41515 inset !important; + box-shadow: 0px 0px 0px 1px #d41515 inset !important; + color: #b21e1e !important; +} +.ui.basic.negative.buttons .button:active, +.ui.basic.negative.button:active { + -webkit-box-shadow: 0px 0px 0px 1px #b21e1e inset !important; + box-shadow: 0px 0px 0px 1px #b21e1e inset !important; + color: #b21e1e !important; +} +.ui.buttons:not(.vertical) > .basic.primary.button:not(:first-child) { + margin-left: -1px; +} + + +/******************************* + Groups +*******************************/ + +.ui.buttons { + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + font-size: 0em; + vertical-align: baseline; + margin: 0em 0.25em 0em 0em; +} +.ui.buttons:not(.basic):not(.inverted) { + -webkit-box-shadow: none; + box-shadow: none; +} + +/* Clearfix */ +.ui.buttons:after { + content: "."; + display: block; + height: 0; + clear: both; + visibility: hidden; +} + +/* Standard Group */ +.ui.buttons .button { + -webkit-box-flex: 1; + -ms-flex: 1 0 auto; + flex: 1 0 auto; + margin: 0em; + border-radius: 0em; + margin: 0px 0px 0px 0px; +} +.ui.buttons > .ui.button:not(.basic):not(.inverted), +.ui.buttons:not(.basic):not(.inverted) > .button { + -webkit-box-shadow: 0px 0px 0px 1px transparent inset, 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; + box-shadow: 0px 0px 0px 1px transparent inset, 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; +} +.ui.buttons .button:first-child { + border-left: none; + margin-left: 0em; + border-top-left-radius: 0.28571429rem; + border-bottom-left-radius: 0.28571429rem; +} +.ui.buttons .button:last-child { + border-top-right-radius: 0.28571429rem; + border-bottom-right-radius: 0.28571429rem; +} + +/* Vertical Style */ +.ui.vertical.buttons { + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} +.ui.vertical.buttons .button { + display: block; + float: none; + width: 100%; + margin: 0px 0px 0px 0px; + -webkit-box-shadow: none; + box-shadow: none; + border-radius: 0em; +} +.ui.vertical.buttons .button:first-child { + border-top-left-radius: 0.28571429rem; + border-top-right-radius: 0.28571429rem; +} +.ui.vertical.buttons .button:last-child { + margin-bottom: 0px; + border-bottom-left-radius: 0.28571429rem; + border-bottom-right-radius: 0.28571429rem; +} +.ui.vertical.buttons .button:only-child { + border-radius: 0.28571429rem; +} + + +/******************************* + Theme Overrides +*******************************/ + + + +/******************************* + Site Overrides +*******************************/ + diff --git a/app/static/semantic/components/button.min.css b/app/static/semantic/components/button.min.css new file mode 100755 index 0000000..9e093e8 --- /dev/null +++ b/app/static/semantic/components/button.min.css @@ -0,0 +1,9 @@ +/*! + * # Semantic UI 2.4.1 - Button + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */.ui.button{cursor:pointer;display:inline-block;min-height:1em;outline:0;border:none;vertical-align:baseline;background:#e0e1e2 none;color:rgba(0,0,0,.6);font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;margin:0 .25em 0 0;padding:.78571429em 1.5em .78571429em;text-transform:none;text-shadow:none;font-weight:700;line-height:1em;font-style:normal;text-align:center;text-decoration:none;border-radius:.28571429rem;-webkit-box-shadow:0 0 0 1px transparent inset,0 0 0 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 1px transparent inset,0 0 0 0 rgba(34,36,38,.15) inset;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:opacity .1s ease,background-color .1s ease,color .1s ease,background .1s ease,-webkit-box-shadow .1s ease;transition:opacity .1s ease,background-color .1s ease,color .1s ease,background .1s ease,-webkit-box-shadow .1s ease;transition:opacity .1s ease,background-color .1s ease,color .1s ease,box-shadow .1s ease,background .1s ease;transition:opacity .1s ease,background-color .1s ease,color .1s ease,box-shadow .1s ease,background .1s ease,-webkit-box-shadow .1s ease;will-change:'';-webkit-tap-highlight-color:transparent}.ui.button:hover{background-color:#cacbcd;background-image:none;-webkit-box-shadow:0 0 0 1px transparent inset,0 0 0 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 1px transparent inset,0 0 0 0 rgba(34,36,38,.15) inset;color:rgba(0,0,0,.8)}.ui.button:hover .icon{opacity:.85}.ui.button:focus{background-color:#cacbcd;color:rgba(0,0,0,.8);background-image:''!important;-webkit-box-shadow:''!important;box-shadow:''!important}.ui.button:focus .icon{opacity:.85}.ui.active.button:active,.ui.button:active{background-color:#babbbc;background-image:'';color:rgba(0,0,0,.9);-webkit-box-shadow:0 0 0 1px transparent inset,none;box-shadow:0 0 0 1px transparent inset,none}.ui.active.button{background-color:#c0c1c2;background-image:none;-webkit-box-shadow:0 0 0 1px transparent inset;box-shadow:0 0 0 1px transparent inset;color:rgba(0,0,0,.95)}.ui.active.button:hover{background-color:#c0c1c2;background-image:none;color:rgba(0,0,0,.95)}.ui.active.button:active{background-color:#c0c1c2;background-image:none}.ui.loading.loading.loading.loading.loading.loading.button{position:relative;cursor:default;text-shadow:none!important;color:transparent!important;opacity:1;pointer-events:auto;-webkit-transition:all 0s linear,opacity .1s ease;transition:all 0s linear,opacity .1s ease}.ui.loading.button:before{position:absolute;content:'';top:50%;left:50%;margin:-.64285714em 0 0 -.64285714em;width:1.28571429em;height:1.28571429em;border-radius:500rem;border:.2em solid rgba(0,0,0,.15)}.ui.loading.button:after{position:absolute;content:'';top:50%;left:50%;margin:-.64285714em 0 0 -.64285714em;width:1.28571429em;height:1.28571429em;-webkit-animation:button-spin .6s linear;animation:button-spin .6s linear;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;border-radius:500rem;border-color:#fff transparent transparent;border-style:solid;border-width:.2em;-webkit-box-shadow:0 0 0 1px transparent;box-shadow:0 0 0 1px transparent}.ui.labeled.icon.loading.button .icon{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}@-webkit-keyframes button-spin{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes button-spin{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.ui.basic.loading.button:not(.inverted):before{border-color:rgba(0,0,0,.1)}.ui.basic.loading.button:not(.inverted):after{border-top-color:#767676}.ui.button:disabled,.ui.buttons .disabled.button,.ui.disabled.active.button,.ui.disabled.button,.ui.disabled.button:hover{cursor:default;opacity:.45!important;background-image:none!important;-webkit-box-shadow:none!important;box-shadow:none!important;pointer-events:none!important}.ui.basic.buttons .ui.disabled.button{border-color:rgba(34,36,38,.5)}.ui.animated.button{position:relative;overflow:hidden;padding-right:0!important;vertical-align:middle;z-index:1}.ui.animated.button .content{will-change:transform,opacity}.ui.animated.button .visible.content{position:relative;margin-right:1.5em}.ui.animated.button .hidden.content{position:absolute;width:100%}.ui.animated.button .hidden.content,.ui.animated.button .visible.content{-webkit-transition:right .3s ease 0s;transition:right .3s ease 0s}.ui.animated.button .visible.content{left:auto;right:0}.ui.animated.button .hidden.content{top:50%;left:auto;right:-100%;margin-top:-.5em}.ui.animated.button:focus .visible.content,.ui.animated.button:hover .visible.content{left:auto;right:200%}.ui.animated.button:focus .hidden.content,.ui.animated.button:hover .hidden.content{left:auto;right:0}.ui.vertical.animated.button .hidden.content,.ui.vertical.animated.button .visible.content{-webkit-transition:top .3s ease,-webkit-transform .3s ease;transition:top .3s ease,-webkit-transform .3s ease;transition:top .3s ease,transform .3s ease;transition:top .3s ease,transform .3s ease,-webkit-transform .3s ease}.ui.vertical.animated.button .visible.content{-webkit-transform:translateY(0);transform:translateY(0);right:auto}.ui.vertical.animated.button .hidden.content{top:-50%;left:0;right:auto}.ui.vertical.animated.button:focus .visible.content,.ui.vertical.animated.button:hover .visible.content{-webkit-transform:translateY(200%);transform:translateY(200%);right:auto}.ui.vertical.animated.button:focus .hidden.content,.ui.vertical.animated.button:hover .hidden.content{top:50%;right:auto}.ui.fade.animated.button .hidden.content,.ui.fade.animated.button .visible.content{-webkit-transition:opacity .3s ease,-webkit-transform .3s ease;transition:opacity .3s ease,-webkit-transform .3s ease;transition:opacity .3s ease,transform .3s ease;transition:opacity .3s ease,transform .3s ease,-webkit-transform .3s ease}.ui.fade.animated.button .visible.content{left:auto;right:auto;opacity:1;-webkit-transform:scale(1);transform:scale(1)}.ui.fade.animated.button .hidden.content{opacity:0;left:0;right:auto;-webkit-transform:scale(1.5);transform:scale(1.5)}.ui.fade.animated.button:focus .visible.content,.ui.fade.animated.button:hover .visible.content{left:auto;right:auto;opacity:0;-webkit-transform:scale(.75);transform:scale(.75)}.ui.fade.animated.button:focus .hidden.content,.ui.fade.animated.button:hover .hidden.content{left:0;right:auto;opacity:1;-webkit-transform:scale(1);transform:scale(1)}.ui.inverted.button{-webkit-box-shadow:0 0 0 2px #fff inset!important;box-shadow:0 0 0 2px #fff inset!important;background:transparent none;color:#fff;text-shadow:none!important}.ui.inverted.buttons .button{margin:0 0 0 -2px}.ui.inverted.buttons .button:first-child{margin-left:0}.ui.inverted.vertical.buttons .button{margin:0 0 -2px 0}.ui.inverted.vertical.buttons .button:first-child{margin-top:0}.ui.inverted.button:hover{background:#fff;-webkit-box-shadow:0 0 0 2px #fff inset!important;box-shadow:0 0 0 2px #fff inset!important;color:rgba(0,0,0,.8)}.ui.inverted.button.active,.ui.inverted.button:focus{background:#fff;-webkit-box-shadow:0 0 0 2px #fff inset!important;box-shadow:0 0 0 2px #fff inset!important;color:rgba(0,0,0,.8)}.ui.inverted.button.active:focus{background:#dcddde;-webkit-box-shadow:0 0 0 2px #dcddde inset!important;box-shadow:0 0 0 2px #dcddde inset!important;color:rgba(0,0,0,.8)}.ui.labeled.button:not(.icon){display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;background:0 0!important;padding:0!important;border:none!important;-webkit-box-shadow:none!important;box-shadow:none!important}.ui.labeled.button>.button{margin:0}.ui.labeled.button>.label{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:0 0 0 -1px!important;padding:'';font-size:1em;border-color:rgba(34,36,38,.15)}.ui.labeled.button>.tag.label:before{width:1.85em;height:1.85em}.ui.labeled.button:not([class*="left labeled"])>.button{border-top-right-radius:0;border-bottom-right-radius:0}.ui.labeled.button:not([class*="left labeled"])>.label{border-top-left-radius:0;border-bottom-left-radius:0}.ui[class*="left labeled"].button>.button{border-top-left-radius:0;border-bottom-left-radius:0}.ui[class*="left labeled"].button>.label{border-top-right-radius:0;border-bottom-right-radius:0}.ui.facebook.button{background-color:#3b5998;color:#fff;text-shadow:none;background-image:none;-webkit-box-shadow:0 0 0 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.facebook.button:hover{background-color:#304d8a;color:#fff;text-shadow:none}.ui.facebook.button:active{background-color:#2d4373;color:#fff;text-shadow:none}.ui.twitter.button{background-color:#55acee;color:#fff;text-shadow:none;background-image:none;-webkit-box-shadow:0 0 0 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.twitter.button:hover{background-color:#35a2f4;color:#fff;text-shadow:none}.ui.twitter.button:active{background-color:#2795e9;color:#fff;text-shadow:none}.ui.google.plus.button{background-color:#dd4b39;color:#fff;text-shadow:none;background-image:none;-webkit-box-shadow:0 0 0 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.google.plus.button:hover{background-color:#e0321c;color:#fff;text-shadow:none}.ui.google.plus.button:active{background-color:#c23321;color:#fff;text-shadow:none}.ui.linkedin.button{background-color:#1f88be;color:#fff;text-shadow:none}.ui.linkedin.button:hover{background-color:#147baf;color:#fff;text-shadow:none}.ui.linkedin.button:active{background-color:#186992;color:#fff;text-shadow:none}.ui.youtube.button{background-color:red;color:#fff;text-shadow:none;background-image:none;-webkit-box-shadow:0 0 0 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.youtube.button:hover{background-color:#e60000;color:#fff;text-shadow:none}.ui.youtube.button:active{background-color:#c00;color:#fff;text-shadow:none}.ui.instagram.button{background-color:#49769c;color:#fff;text-shadow:none;background-image:none;-webkit-box-shadow:0 0 0 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.instagram.button:hover{background-color:#3d698e;color:#fff;text-shadow:none}.ui.instagram.button:active{background-color:#395c79;color:#fff;text-shadow:none}.ui.pinterest.button{background-color:#bd081c;color:#fff;text-shadow:none;background-image:none;-webkit-box-shadow:0 0 0 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.pinterest.button:hover{background-color:#ac0013;color:#fff;text-shadow:none}.ui.pinterest.button:active{background-color:#8c0615;color:#fff;text-shadow:none}.ui.vk.button{background-color:#4d7198;color:#fff;background-image:none;-webkit-box-shadow:0 0 0 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.vk.button:hover{background-color:#41648a;color:#fff}.ui.vk.button:active{background-color:#3c5876;color:#fff}.ui.button>.icon:not(.button){height:.85714286em;opacity:.8;margin:0 .42857143em 0 -.21428571em;-webkit-transition:opacity .1s ease;transition:opacity .1s ease;vertical-align:'';color:''}.ui.button:not(.icon)>.icon:not(.button):not(.dropdown){margin:0 .42857143em 0 -.21428571em}.ui.button:not(.icon)>.right.icon:not(.button):not(.dropdown){margin:0 -.21428571em 0 .42857143em}.ui[class*="left floated"].button,.ui[class*="left floated"].buttons{float:left;margin-left:0;margin-right:.25em}.ui[class*="right floated"].button,.ui[class*="right floated"].buttons{float:right;margin-right:0;margin-left:.25em}.ui.compact.button,.ui.compact.buttons .button{padding:.58928571em 1.125em .58928571em}.ui.compact.icon.button,.ui.compact.icon.buttons .button{padding:.58928571em .58928571em .58928571em}.ui.compact.labeled.icon.button,.ui.compact.labeled.icon.buttons .button{padding:.58928571em 3.69642857em .58928571em}.ui.mini.button,.ui.mini.buttons .button,.ui.mini.buttons .or{font-size:.78571429rem}.ui.tiny.button,.ui.tiny.buttons .button,.ui.tiny.buttons .or{font-size:.85714286rem}.ui.small.button,.ui.small.buttons .button,.ui.small.buttons .or{font-size:.92857143rem}.ui.button,.ui.buttons .button,.ui.buttons .or{font-size:1rem}.ui.large.button,.ui.large.buttons .button,.ui.large.buttons .or{font-size:1.14285714rem}.ui.big.button,.ui.big.buttons .button,.ui.big.buttons .or{font-size:1.28571429rem}.ui.huge.button,.ui.huge.buttons .button,.ui.huge.buttons .or{font-size:1.42857143rem}.ui.massive.button,.ui.massive.buttons .button,.ui.massive.buttons .or{font-size:1.71428571rem}.ui.icon.button,.ui.icon.buttons .button{padding:.78571429em .78571429em .78571429em}.ui.icon.button>.icon,.ui.icon.buttons .button>.icon{opacity:.9;margin:0!important;vertical-align:top}.ui.basic.button,.ui.basic.buttons .button{background:transparent none!important;color:rgba(0,0,0,.6)!important;font-weight:400;border-radius:.28571429rem;text-transform:none;text-shadow:none!important;-webkit-box-shadow:0 0 0 1px rgba(34,36,38,.15) inset;box-shadow:0 0 0 1px rgba(34,36,38,.15) inset}.ui.basic.buttons{-webkit-box-shadow:none;box-shadow:none;border:1px solid rgba(34,36,38,.15);border-radius:.28571429rem}.ui.basic.buttons .button{border-radius:0}.ui.basic.button:hover,.ui.basic.buttons .button:hover{background:#fff!important;color:rgba(0,0,0,.8)!important;-webkit-box-shadow:0 0 0 1px rgba(34,36,38,.35) inset,0 0 0 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 1px rgba(34,36,38,.35) inset,0 0 0 0 rgba(34,36,38,.15) inset}.ui.basic.button:focus,.ui.basic.buttons .button:focus{background:#fff!important;color:rgba(0,0,0,.8)!important;-webkit-box-shadow:0 0 0 1px rgba(34,36,38,.35) inset,0 0 0 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 1px rgba(34,36,38,.35) inset,0 0 0 0 rgba(34,36,38,.15) inset}.ui.basic.button:active,.ui.basic.buttons .button:active{background:#f8f8f8!important;color:rgba(0,0,0,.9)!important;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.15) inset,0 1px 4px 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 1px rgba(0,0,0,.15) inset,0 1px 4px 0 rgba(34,36,38,.15) inset}.ui.basic.active.button,.ui.basic.buttons .active.button{background:rgba(0,0,0,.05)!important;-webkit-box-shadow:''!important;box-shadow:''!important;color:rgba(0,0,0,.95)!important}.ui.basic.active.button:hover,.ui.basic.buttons .active.button:hover{background-color:rgba(0,0,0,.05)}.ui.basic.buttons .button:hover{-webkit-box-shadow:0 0 0 1px rgba(34,36,38,.35) inset,0 0 0 0 rgba(34,36,38,.15) inset inset;box-shadow:0 0 0 1px rgba(34,36,38,.35) inset,0 0 0 0 rgba(34,36,38,.15) inset inset}.ui.basic.buttons .button:active{-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.15) inset,0 1px 4px 0 rgba(34,36,38,.15) inset inset;box-shadow:0 0 0 1px rgba(0,0,0,.15) inset,0 1px 4px 0 rgba(34,36,38,.15) inset inset}.ui.basic.buttons .active.button{-webkit-box-shadow:''!important;box-shadow:''!important}.ui.basic.inverted.button,.ui.basic.inverted.buttons .button{background-color:transparent!important;color:#f9fafb!important;-webkit-box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important}.ui.basic.inverted.button:hover,.ui.basic.inverted.buttons .button:hover{color:#fff!important;-webkit-box-shadow:0 0 0 2px #fff inset!important;box-shadow:0 0 0 2px #fff inset!important}.ui.basic.inverted.button:focus,.ui.basic.inverted.buttons .button:focus{color:#fff!important;-webkit-box-shadow:0 0 0 2px #fff inset!important;box-shadow:0 0 0 2px #fff inset!important}.ui.basic.inverted.button:active,.ui.basic.inverted.buttons .button:active{background-color:rgba(255,255,255,.08)!important;color:#fff!important;-webkit-box-shadow:0 0 0 2px rgba(255,255,255,.9) inset!important;box-shadow:0 0 0 2px rgba(255,255,255,.9) inset!important}.ui.basic.inverted.active.button,.ui.basic.inverted.buttons .active.button{background-color:rgba(255,255,255,.08);color:#fff;text-shadow:none;-webkit-box-shadow:0 0 0 2px rgba(255,255,255,.7) inset;box-shadow:0 0 0 2px rgba(255,255,255,.7) inset}.ui.basic.inverted.active.button:hover,.ui.basic.inverted.buttons .active.button:hover{background-color:rgba(255,255,255,.15);-webkit-box-shadow:0 0 0 2px #fff inset!important;box-shadow:0 0 0 2px #fff inset!important}.ui.basic.buttons .button{border-left:1px solid rgba(34,36,38,.15);-webkit-box-shadow:none;box-shadow:none}.ui.basic.vertical.buttons .button{border-left:none}.ui.basic.vertical.buttons .button{border-left-width:0;border-top:1px solid rgba(34,36,38,.15)}.ui.basic.vertical.buttons .button:first-child{border-top-width:0}.ui.labeled.icon.button,.ui.labeled.icon.buttons .button{position:relative;padding-left:4.07142857em!important;padding-right:1.5em!important}.ui.labeled.icon.button>.icon,.ui.labeled.icon.buttons>.button>.icon{position:absolute;height:100%;line-height:1;border-radius:0;border-top-left-radius:inherit;border-bottom-left-radius:inherit;text-align:center;margin:0;width:2.57142857em;background-color:rgba(0,0,0,.05);color:'';-webkit-box-shadow:-1px 0 0 0 transparent inset;box-shadow:-1px 0 0 0 transparent inset}.ui.labeled.icon.button>.icon,.ui.labeled.icon.buttons>.button>.icon{top:0;left:0}.ui[class*="right labeled"].icon.button{padding-right:4.07142857em!important;padding-left:1.5em!important}.ui[class*="right labeled"].icon.button>.icon{left:auto;right:0;border-radius:0;border-top-right-radius:inherit;border-bottom-right-radius:inherit;-webkit-box-shadow:1px 0 0 0 transparent inset;box-shadow:1px 0 0 0 transparent inset}.ui.labeled.icon.button>.icon:after,.ui.labeled.icon.button>.icon:before,.ui.labeled.icon.buttons>.button>.icon:after,.ui.labeled.icon.buttons>.button>.icon:before{display:block;position:absolute;width:100%;top:50%;text-align:center;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.ui.labeled.icon.buttons .button>.icon{border-radius:0}.ui.labeled.icon.buttons .button:first-child>.icon{border-top-left-radius:.28571429rem;border-bottom-left-radius:.28571429rem}.ui.labeled.icon.buttons .button:last-child>.icon{border-top-right-radius:.28571429rem;border-bottom-right-radius:.28571429rem}.ui.vertical.labeled.icon.buttons .button:first-child>.icon{border-radius:0;border-top-left-radius:.28571429rem}.ui.vertical.labeled.icon.buttons .button:last-child>.icon{border-radius:0;border-bottom-left-radius:.28571429rem}.ui.fluid[class*="left labeled"].icon.button,.ui.fluid[class*="right labeled"].icon.button{padding-left:1.5em!important;padding-right:1.5em!important}.ui.button.toggle.active,.ui.buttons .button.toggle.active,.ui.toggle.buttons .active.button{background-color:#21ba45!important;-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:none;color:#fff!important}.ui.button.toggle.active:hover{background-color:#16ab39!important;text-shadow:none;color:#fff!important}.ui.circular.button{border-radius:10em}.ui.circular.button>.icon{width:1em;vertical-align:baseline}.ui.buttons .or{position:relative;width:.3em;height:2.57142857em;z-index:3}.ui.buttons .or:before{position:absolute;text-align:center;border-radius:500rem;content:'or';top:50%;left:50%;background-color:#fff;text-shadow:none;margin-top:-.89285714em;margin-left:-.89285714em;width:1.78571429em;height:1.78571429em;line-height:1.78571429em;color:rgba(0,0,0,.4);font-style:normal;font-weight:700;-webkit-box-shadow:0 0 0 1px transparent inset;box-shadow:0 0 0 1px transparent inset}.ui.buttons .or[data-text]:before{content:attr(data-text)}.ui.fluid.buttons .or{width:0!important}.ui.fluid.buttons .or:after{display:none}.ui.attached.button{position:relative;display:block;margin:0;border-radius:0;-webkit-box-shadow:0 0 0 1px rgba(34,36,38,.15)!important;box-shadow:0 0 0 1px rgba(34,36,38,.15)!important}.ui.attached.top.button{border-radius:.28571429rem .28571429rem 0 0}.ui.attached.bottom.button{border-radius:0 0 .28571429rem .28571429rem}.ui.left.attached.button{display:inline-block;border-left:none;text-align:right;padding-right:.75em;border-radius:.28571429rem 0 0 .28571429rem}.ui.right.attached.button{display:inline-block;text-align:left;padding-left:.75em;border-radius:0 .28571429rem .28571429rem 0}.ui.attached.buttons{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;border-radius:0;width:auto!important;z-index:2;margin-left:-1px;margin-right:-1px}.ui.attached.buttons .button{margin:0}.ui.attached.buttons .button:first-child{border-radius:0}.ui.attached.buttons .button:last-child{border-radius:0}.ui[class*="top attached"].buttons{margin-bottom:-1px;border-radius:.28571429rem .28571429rem 0 0}.ui[class*="top attached"].buttons .button:first-child{border-radius:.28571429rem 0 0 0}.ui[class*="top attached"].buttons .button:last-child{border-radius:0 .28571429rem 0 0}.ui[class*="bottom attached"].buttons{margin-top:-1px;border-radius:0 0 .28571429rem .28571429rem}.ui[class*="bottom attached"].buttons .button:first-child{border-radius:0 0 0 .28571429rem}.ui[class*="bottom attached"].buttons .button:last-child{border-radius:0 0 .28571429rem 0}.ui[class*="left attached"].buttons{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;margin-right:0;margin-left:-1px;border-radius:0 .28571429rem .28571429rem 0}.ui[class*="left attached"].buttons .button:first-child{margin-left:-1px;border-radius:0 .28571429rem 0 0}.ui[class*="left attached"].buttons .button:last-child{margin-left:-1px;border-radius:0 0 .28571429rem 0}.ui[class*="right attached"].buttons{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;margin-left:0;margin-right:-1px;border-radius:.28571429rem 0 0 .28571429rem}.ui[class*="right attached"].buttons .button:first-child{margin-left:-1px;border-radius:.28571429rem 0 0 0}.ui[class*="right attached"].buttons .button:last-child{margin-left:-1px;border-radius:0 0 0 .28571429rem}.ui.fluid.button,.ui.fluid.buttons{width:100%}.ui.fluid.button{display:block}.ui.two.buttons{width:100%}.ui.two.buttons>.button{width:50%}.ui.three.buttons{width:100%}.ui.three.buttons>.button{width:33.333%}.ui.four.buttons{width:100%}.ui.four.buttons>.button{width:25%}.ui.five.buttons{width:100%}.ui.five.buttons>.button{width:20%}.ui.six.buttons{width:100%}.ui.six.buttons>.button{width:16.666%}.ui.seven.buttons{width:100%}.ui.seven.buttons>.button{width:14.285%}.ui.eight.buttons{width:100%}.ui.eight.buttons>.button{width:12.5%}.ui.nine.buttons{width:100%}.ui.nine.buttons>.button{width:11.11%}.ui.ten.buttons{width:100%}.ui.ten.buttons>.button{width:10%}.ui.eleven.buttons{width:100%}.ui.eleven.buttons>.button{width:9.09%}.ui.twelve.buttons{width:100%}.ui.twelve.buttons>.button{width:8.3333%}.ui.fluid.vertical.buttons,.ui.fluid.vertical.buttons>.button{display:-webkit-box;display:-ms-flexbox;display:flex;width:auto}.ui.two.vertical.buttons>.button{height:50%}.ui.three.vertical.buttons>.button{height:33.333%}.ui.four.vertical.buttons>.button{height:25%}.ui.five.vertical.buttons>.button{height:20%}.ui.six.vertical.buttons>.button{height:16.666%}.ui.seven.vertical.buttons>.button{height:14.285%}.ui.eight.vertical.buttons>.button{height:12.5%}.ui.nine.vertical.buttons>.button{height:11.11%}.ui.ten.vertical.buttons>.button{height:10%}.ui.eleven.vertical.buttons>.button{height:9.09%}.ui.twelve.vertical.buttons>.button{height:8.3333%}.ui.black.button,.ui.black.buttons .button{background-color:#1b1c1d;color:#fff;text-shadow:none;background-image:none}.ui.black.button{-webkit-box-shadow:0 0 0 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.black.button:hover,.ui.black.buttons .button:hover{background-color:#27292a;color:#fff;text-shadow:none}.ui.black.button:focus,.ui.black.buttons .button:focus{background-color:#2f3032;color:#fff;text-shadow:none}.ui.black.button:active,.ui.black.buttons .button:active{background-color:#343637;color:#fff;text-shadow:none}.ui.black.active.button,.ui.black.button .active.button:active,.ui.black.buttons .active.button,.ui.black.buttons .active.button:active{background-color:#0f0f10;color:#fff;text-shadow:none}.ui.basic.black.button,.ui.basic.black.buttons .button{-webkit-box-shadow:0 0 0 1px #1b1c1d inset!important;box-shadow:0 0 0 1px #1b1c1d inset!important;color:#1b1c1d!important}.ui.basic.black.button:hover,.ui.basic.black.buttons .button:hover{background:0 0!important;-webkit-box-shadow:0 0 0 1px #27292a inset!important;box-shadow:0 0 0 1px #27292a inset!important;color:#27292a!important}.ui.basic.black.button:focus,.ui.basic.black.buttons .button:focus{background:0 0!important;-webkit-box-shadow:0 0 0 1px #2f3032 inset!important;box-shadow:0 0 0 1px #2f3032 inset!important;color:#27292a!important}.ui.basic.black.active.button,.ui.basic.black.buttons .active.button{background:0 0!important;-webkit-box-shadow:0 0 0 1px #0f0f10 inset!important;box-shadow:0 0 0 1px #0f0f10 inset!important;color:#343637!important}.ui.basic.black.button:active,.ui.basic.black.buttons .button:active{-webkit-box-shadow:0 0 0 1px #343637 inset!important;box-shadow:0 0 0 1px #343637 inset!important;color:#343637!important}.ui.buttons:not(.vertical)>.basic.black.button:not(:first-child){margin-left:-1px}.ui.inverted.black.button,.ui.inverted.black.buttons .button{background-color:transparent;-webkit-box-shadow:0 0 0 2px #d4d4d5 inset!important;box-shadow:0 0 0 2px #d4d4d5 inset!important;color:#fff}.ui.inverted.black.button.active,.ui.inverted.black.button:active,.ui.inverted.black.button:focus,.ui.inverted.black.button:hover,.ui.inverted.black.buttons .button.active,.ui.inverted.black.buttons .button:active,.ui.inverted.black.buttons .button:focus,.ui.inverted.black.buttons .button:hover{-webkit-box-shadow:none!important;box-shadow:none!important;color:#fff}.ui.inverted.black.button:hover,.ui.inverted.black.buttons .button:hover{background-color:#000}.ui.inverted.black.button:focus,.ui.inverted.black.buttons .button:focus{background-color:#000}.ui.inverted.black.active.button,.ui.inverted.black.buttons .active.button{background-color:#000}.ui.inverted.black.button:active,.ui.inverted.black.buttons .button:active{background-color:#000}.ui.inverted.black.basic.button,.ui.inverted.black.basic.buttons .button,.ui.inverted.black.buttons .basic.button{background-color:transparent;-webkit-box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;color:#fff!important}.ui.inverted.black.basic.button:hover,.ui.inverted.black.basic.buttons .button:hover,.ui.inverted.black.buttons .basic.button:hover{-webkit-box-shadow:0 0 0 2px #000 inset!important;box-shadow:0 0 0 2px #000 inset!important;color:#fff!important}.ui.inverted.black.basic.button:focus,.ui.inverted.black.basic.buttons .button:focus{-webkit-box-shadow:0 0 0 2px #000 inset!important;box-shadow:0 0 0 2px #000 inset!important;color:#545454!important}.ui.inverted.black.basic.active.button,.ui.inverted.black.basic.buttons .active.button,.ui.inverted.black.buttons .basic.active.button{-webkit-box-shadow:0 0 0 2px #000 inset!important;box-shadow:0 0 0 2px #000 inset!important;color:#fff!important}.ui.inverted.black.basic.button:active,.ui.inverted.black.basic.buttons .button:active,.ui.inverted.black.buttons .basic.button:active{-webkit-box-shadow:0 0 0 2px #000 inset!important;box-shadow:0 0 0 2px #000 inset!important;color:#fff!important}.ui.grey.button,.ui.grey.buttons .button{background-color:#767676;color:#fff;text-shadow:none;background-image:none}.ui.grey.button{-webkit-box-shadow:0 0 0 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.grey.button:hover,.ui.grey.buttons .button:hover{background-color:#838383;color:#fff;text-shadow:none}.ui.grey.button:focus,.ui.grey.buttons .button:focus{background-color:#8a8a8a;color:#fff;text-shadow:none}.ui.grey.button:active,.ui.grey.buttons .button:active{background-color:#909090;color:#fff;text-shadow:none}.ui.grey.active.button,.ui.grey.button .active.button:active,.ui.grey.buttons .active.button,.ui.grey.buttons .active.button:active{background-color:#696969;color:#fff;text-shadow:none}.ui.basic.grey.button,.ui.basic.grey.buttons .button{-webkit-box-shadow:0 0 0 1px #767676 inset!important;box-shadow:0 0 0 1px #767676 inset!important;color:#767676!important}.ui.basic.grey.button:hover,.ui.basic.grey.buttons .button:hover{background:0 0!important;-webkit-box-shadow:0 0 0 1px #838383 inset!important;box-shadow:0 0 0 1px #838383 inset!important;color:#838383!important}.ui.basic.grey.button:focus,.ui.basic.grey.buttons .button:focus{background:0 0!important;-webkit-box-shadow:0 0 0 1px #8a8a8a inset!important;box-shadow:0 0 0 1px #8a8a8a inset!important;color:#838383!important}.ui.basic.grey.active.button,.ui.basic.grey.buttons .active.button{background:0 0!important;-webkit-box-shadow:0 0 0 1px #696969 inset!important;box-shadow:0 0 0 1px #696969 inset!important;color:#909090!important}.ui.basic.grey.button:active,.ui.basic.grey.buttons .button:active{-webkit-box-shadow:0 0 0 1px #909090 inset!important;box-shadow:0 0 0 1px #909090 inset!important;color:#909090!important}.ui.buttons:not(.vertical)>.basic.grey.button:not(:first-child){margin-left:-1px}.ui.inverted.grey.button,.ui.inverted.grey.buttons .button{background-color:transparent;-webkit-box-shadow:0 0 0 2px #d4d4d5 inset!important;box-shadow:0 0 0 2px #d4d4d5 inset!important;color:#fff}.ui.inverted.grey.button.active,.ui.inverted.grey.button:active,.ui.inverted.grey.button:focus,.ui.inverted.grey.button:hover,.ui.inverted.grey.buttons .button.active,.ui.inverted.grey.buttons .button:active,.ui.inverted.grey.buttons .button:focus,.ui.inverted.grey.buttons .button:hover{-webkit-box-shadow:none!important;box-shadow:none!important;color:rgba(0,0,0,.6)}.ui.inverted.grey.button:hover,.ui.inverted.grey.buttons .button:hover{background-color:#cfd0d2}.ui.inverted.grey.button:focus,.ui.inverted.grey.buttons .button:focus{background-color:#c7c9cb}.ui.inverted.grey.active.button,.ui.inverted.grey.buttons .active.button{background-color:#cfd0d2}.ui.inverted.grey.button:active,.ui.inverted.grey.buttons .button:active{background-color:#c2c4c5}.ui.inverted.grey.basic.button,.ui.inverted.grey.basic.buttons .button,.ui.inverted.grey.buttons .basic.button{background-color:transparent;-webkit-box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;color:#fff!important}.ui.inverted.grey.basic.button:hover,.ui.inverted.grey.basic.buttons .button:hover,.ui.inverted.grey.buttons .basic.button:hover{-webkit-box-shadow:0 0 0 2px #cfd0d2 inset!important;box-shadow:0 0 0 2px #cfd0d2 inset!important;color:#fff!important}.ui.inverted.grey.basic.button:focus,.ui.inverted.grey.basic.buttons .button:focus{-webkit-box-shadow:0 0 0 2px #c7c9cb inset!important;box-shadow:0 0 0 2px #c7c9cb inset!important;color:#dcddde!important}.ui.inverted.grey.basic.active.button,.ui.inverted.grey.basic.buttons .active.button,.ui.inverted.grey.buttons .basic.active.button{-webkit-box-shadow:0 0 0 2px #cfd0d2 inset!important;box-shadow:0 0 0 2px #cfd0d2 inset!important;color:#fff!important}.ui.inverted.grey.basic.button:active,.ui.inverted.grey.basic.buttons .button:active,.ui.inverted.grey.buttons .basic.button:active{-webkit-box-shadow:0 0 0 2px #c2c4c5 inset!important;box-shadow:0 0 0 2px #c2c4c5 inset!important;color:#fff!important}.ui.brown.button,.ui.brown.buttons .button{background-color:#a5673f;color:#fff;text-shadow:none;background-image:none}.ui.brown.button{-webkit-box-shadow:0 0 0 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.brown.button:hover,.ui.brown.buttons .button:hover{background-color:#975b33;color:#fff;text-shadow:none}.ui.brown.button:focus,.ui.brown.buttons .button:focus{background-color:#90532b;color:#fff;text-shadow:none}.ui.brown.button:active,.ui.brown.buttons .button:active{background-color:#805031;color:#fff;text-shadow:none}.ui.brown.active.button,.ui.brown.button .active.button:active,.ui.brown.buttons .active.button,.ui.brown.buttons .active.button:active{background-color:#995a31;color:#fff;text-shadow:none}.ui.basic.brown.button,.ui.basic.brown.buttons .button{-webkit-box-shadow:0 0 0 1px #a5673f inset!important;box-shadow:0 0 0 1px #a5673f inset!important;color:#a5673f!important}.ui.basic.brown.button:hover,.ui.basic.brown.buttons .button:hover{background:0 0!important;-webkit-box-shadow:0 0 0 1px #975b33 inset!important;box-shadow:0 0 0 1px #975b33 inset!important;color:#975b33!important}.ui.basic.brown.button:focus,.ui.basic.brown.buttons .button:focus{background:0 0!important;-webkit-box-shadow:0 0 0 1px #90532b inset!important;box-shadow:0 0 0 1px #90532b inset!important;color:#975b33!important}.ui.basic.brown.active.button,.ui.basic.brown.buttons .active.button{background:0 0!important;-webkit-box-shadow:0 0 0 1px #995a31 inset!important;box-shadow:0 0 0 1px #995a31 inset!important;color:#805031!important}.ui.basic.brown.button:active,.ui.basic.brown.buttons .button:active{-webkit-box-shadow:0 0 0 1px #805031 inset!important;box-shadow:0 0 0 1px #805031 inset!important;color:#805031!important}.ui.buttons:not(.vertical)>.basic.brown.button:not(:first-child){margin-left:-1px}.ui.inverted.brown.button,.ui.inverted.brown.buttons .button{background-color:transparent;-webkit-box-shadow:0 0 0 2px #d67c1c inset!important;box-shadow:0 0 0 2px #d67c1c inset!important;color:#d67c1c}.ui.inverted.brown.button.active,.ui.inverted.brown.button:active,.ui.inverted.brown.button:focus,.ui.inverted.brown.button:hover,.ui.inverted.brown.buttons .button.active,.ui.inverted.brown.buttons .button:active,.ui.inverted.brown.buttons .button:focus,.ui.inverted.brown.buttons .button:hover{-webkit-box-shadow:none!important;box-shadow:none!important;color:#fff}.ui.inverted.brown.button:hover,.ui.inverted.brown.buttons .button:hover{background-color:#c86f11}.ui.inverted.brown.button:focus,.ui.inverted.brown.buttons .button:focus{background-color:#c16808}.ui.inverted.brown.active.button,.ui.inverted.brown.buttons .active.button{background-color:#cc6f0d}.ui.inverted.brown.button:active,.ui.inverted.brown.buttons .button:active{background-color:#a96216}.ui.inverted.brown.basic.button,.ui.inverted.brown.basic.buttons .button,.ui.inverted.brown.buttons .basic.button{background-color:transparent;-webkit-box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;color:#fff!important}.ui.inverted.brown.basic.button:hover,.ui.inverted.brown.basic.buttons .button:hover,.ui.inverted.brown.buttons .basic.button:hover{-webkit-box-shadow:0 0 0 2px #c86f11 inset!important;box-shadow:0 0 0 2px #c86f11 inset!important;color:#d67c1c!important}.ui.inverted.brown.basic.button:focus,.ui.inverted.brown.basic.buttons .button:focus{-webkit-box-shadow:0 0 0 2px #c16808 inset!important;box-shadow:0 0 0 2px #c16808 inset!important;color:#d67c1c!important}.ui.inverted.brown.basic.active.button,.ui.inverted.brown.basic.buttons .active.button,.ui.inverted.brown.buttons .basic.active.button{-webkit-box-shadow:0 0 0 2px #cc6f0d inset!important;box-shadow:0 0 0 2px #cc6f0d inset!important;color:#d67c1c!important}.ui.inverted.brown.basic.button:active,.ui.inverted.brown.basic.buttons .button:active,.ui.inverted.brown.buttons .basic.button:active{-webkit-box-shadow:0 0 0 2px #a96216 inset!important;box-shadow:0 0 0 2px #a96216 inset!important;color:#d67c1c!important}.ui.blue.button,.ui.blue.buttons .button{background-color:#2185d0;color:#fff;text-shadow:none;background-image:none}.ui.blue.button{-webkit-box-shadow:0 0 0 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.blue.button:hover,.ui.blue.buttons .button:hover{background-color:#1678c2;color:#fff;text-shadow:none}.ui.blue.button:focus,.ui.blue.buttons .button:focus{background-color:#0d71bb;color:#fff;text-shadow:none}.ui.blue.button:active,.ui.blue.buttons .button:active{background-color:#1a69a4;color:#fff;text-shadow:none}.ui.blue.active.button,.ui.blue.button .active.button:active,.ui.blue.buttons .active.button,.ui.blue.buttons .active.button:active{background-color:#1279c6;color:#fff;text-shadow:none}.ui.basic.blue.button,.ui.basic.blue.buttons .button{-webkit-box-shadow:0 0 0 1px #2185d0 inset!important;box-shadow:0 0 0 1px #2185d0 inset!important;color:#2185d0!important}.ui.basic.blue.button:hover,.ui.basic.blue.buttons .button:hover{background:0 0!important;-webkit-box-shadow:0 0 0 1px #1678c2 inset!important;box-shadow:0 0 0 1px #1678c2 inset!important;color:#1678c2!important}.ui.basic.blue.button:focus,.ui.basic.blue.buttons .button:focus{background:0 0!important;-webkit-box-shadow:0 0 0 1px #0d71bb inset!important;box-shadow:0 0 0 1px #0d71bb inset!important;color:#1678c2!important}.ui.basic.blue.active.button,.ui.basic.blue.buttons .active.button{background:0 0!important;-webkit-box-shadow:0 0 0 1px #1279c6 inset!important;box-shadow:0 0 0 1px #1279c6 inset!important;color:#1a69a4!important}.ui.basic.blue.button:active,.ui.basic.blue.buttons .button:active{-webkit-box-shadow:0 0 0 1px #1a69a4 inset!important;box-shadow:0 0 0 1px #1a69a4 inset!important;color:#1a69a4!important}.ui.buttons:not(.vertical)>.basic.blue.button:not(:first-child){margin-left:-1px}.ui.inverted.blue.button,.ui.inverted.blue.buttons .button{background-color:transparent;-webkit-box-shadow:0 0 0 2px #54c8ff inset!important;box-shadow:0 0 0 2px #54c8ff inset!important;color:#54c8ff}.ui.inverted.blue.button.active,.ui.inverted.blue.button:active,.ui.inverted.blue.button:focus,.ui.inverted.blue.button:hover,.ui.inverted.blue.buttons .button.active,.ui.inverted.blue.buttons .button:active,.ui.inverted.blue.buttons .button:focus,.ui.inverted.blue.buttons .button:hover{-webkit-box-shadow:none!important;box-shadow:none!important;color:#fff}.ui.inverted.blue.button:hover,.ui.inverted.blue.buttons .button:hover{background-color:#3ac0ff}.ui.inverted.blue.button:focus,.ui.inverted.blue.buttons .button:focus{background-color:#2bbbff}.ui.inverted.blue.active.button,.ui.inverted.blue.buttons .active.button{background-color:#3ac0ff}.ui.inverted.blue.button:active,.ui.inverted.blue.buttons .button:active{background-color:#21b8ff}.ui.inverted.blue.basic.button,.ui.inverted.blue.basic.buttons .button,.ui.inverted.blue.buttons .basic.button{background-color:transparent;-webkit-box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;color:#fff!important}.ui.inverted.blue.basic.button:hover,.ui.inverted.blue.basic.buttons .button:hover,.ui.inverted.blue.buttons .basic.button:hover{-webkit-box-shadow:0 0 0 2px #3ac0ff inset!important;box-shadow:0 0 0 2px #3ac0ff inset!important;color:#54c8ff!important}.ui.inverted.blue.basic.button:focus,.ui.inverted.blue.basic.buttons .button:focus{-webkit-box-shadow:0 0 0 2px #2bbbff inset!important;box-shadow:0 0 0 2px #2bbbff inset!important;color:#54c8ff!important}.ui.inverted.blue.basic.active.button,.ui.inverted.blue.basic.buttons .active.button,.ui.inverted.blue.buttons .basic.active.button{-webkit-box-shadow:0 0 0 2px #3ac0ff inset!important;box-shadow:0 0 0 2px #3ac0ff inset!important;color:#54c8ff!important}.ui.inverted.blue.basic.button:active,.ui.inverted.blue.basic.buttons .button:active,.ui.inverted.blue.buttons .basic.button:active{-webkit-box-shadow:0 0 0 2px #21b8ff inset!important;box-shadow:0 0 0 2px #21b8ff inset!important;color:#54c8ff!important}.ui.green.button,.ui.green.buttons .button{background-color:#21ba45;color:#fff;text-shadow:none;background-image:none}.ui.green.button{-webkit-box-shadow:0 0 0 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.green.button:hover,.ui.green.buttons .button:hover{background-color:#16ab39;color:#fff;text-shadow:none}.ui.green.button:focus,.ui.green.buttons .button:focus{background-color:#0ea432;color:#fff;text-shadow:none}.ui.green.button:active,.ui.green.buttons .button:active{background-color:#198f35;color:#fff;text-shadow:none}.ui.green.active.button,.ui.green.button .active.button:active,.ui.green.buttons .active.button,.ui.green.buttons .active.button:active{background-color:#13ae38;color:#fff;text-shadow:none}.ui.basic.green.button,.ui.basic.green.buttons .button{-webkit-box-shadow:0 0 0 1px #21ba45 inset!important;box-shadow:0 0 0 1px #21ba45 inset!important;color:#21ba45!important}.ui.basic.green.button:hover,.ui.basic.green.buttons .button:hover{background:0 0!important;-webkit-box-shadow:0 0 0 1px #16ab39 inset!important;box-shadow:0 0 0 1px #16ab39 inset!important;color:#16ab39!important}.ui.basic.green.button:focus,.ui.basic.green.buttons .button:focus{background:0 0!important;-webkit-box-shadow:0 0 0 1px #0ea432 inset!important;box-shadow:0 0 0 1px #0ea432 inset!important;color:#16ab39!important}.ui.basic.green.active.button,.ui.basic.green.buttons .active.button{background:0 0!important;-webkit-box-shadow:0 0 0 1px #13ae38 inset!important;box-shadow:0 0 0 1px #13ae38 inset!important;color:#198f35!important}.ui.basic.green.button:active,.ui.basic.green.buttons .button:active{-webkit-box-shadow:0 0 0 1px #198f35 inset!important;box-shadow:0 0 0 1px #198f35 inset!important;color:#198f35!important}.ui.buttons:not(.vertical)>.basic.green.button:not(:first-child){margin-left:-1px}.ui.inverted.green.button,.ui.inverted.green.buttons .button{background-color:transparent;-webkit-box-shadow:0 0 0 2px #2ecc40 inset!important;box-shadow:0 0 0 2px #2ecc40 inset!important;color:#2ecc40}.ui.inverted.green.button.active,.ui.inverted.green.button:active,.ui.inverted.green.button:focus,.ui.inverted.green.button:hover,.ui.inverted.green.buttons .button.active,.ui.inverted.green.buttons .button:active,.ui.inverted.green.buttons .button:focus,.ui.inverted.green.buttons .button:hover{-webkit-box-shadow:none!important;box-shadow:none!important;color:#fff}.ui.inverted.green.button:hover,.ui.inverted.green.buttons .button:hover{background-color:#22be34}.ui.inverted.green.button:focus,.ui.inverted.green.buttons .button:focus{background-color:#19b82b}.ui.inverted.green.active.button,.ui.inverted.green.buttons .active.button{background-color:#1fc231}.ui.inverted.green.button:active,.ui.inverted.green.buttons .button:active{background-color:#25a233}.ui.inverted.green.basic.button,.ui.inverted.green.basic.buttons .button,.ui.inverted.green.buttons .basic.button{background-color:transparent;-webkit-box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;color:#fff!important}.ui.inverted.green.basic.button:hover,.ui.inverted.green.basic.buttons .button:hover,.ui.inverted.green.buttons .basic.button:hover{-webkit-box-shadow:0 0 0 2px #22be34 inset!important;box-shadow:0 0 0 2px #22be34 inset!important;color:#2ecc40!important}.ui.inverted.green.basic.button:focus,.ui.inverted.green.basic.buttons .button:focus{-webkit-box-shadow:0 0 0 2px #19b82b inset!important;box-shadow:0 0 0 2px #19b82b inset!important;color:#2ecc40!important}.ui.inverted.green.basic.active.button,.ui.inverted.green.basic.buttons .active.button,.ui.inverted.green.buttons .basic.active.button{-webkit-box-shadow:0 0 0 2px #1fc231 inset!important;box-shadow:0 0 0 2px #1fc231 inset!important;color:#2ecc40!important}.ui.inverted.green.basic.button:active,.ui.inverted.green.basic.buttons .button:active,.ui.inverted.green.buttons .basic.button:active{-webkit-box-shadow:0 0 0 2px #25a233 inset!important;box-shadow:0 0 0 2px #25a233 inset!important;color:#2ecc40!important}.ui.orange.button,.ui.orange.buttons .button{background-color:#f2711c;color:#fff;text-shadow:none;background-image:none}.ui.orange.button{-webkit-box-shadow:0 0 0 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.orange.button:hover,.ui.orange.buttons .button:hover{background-color:#f26202;color:#fff;text-shadow:none}.ui.orange.button:focus,.ui.orange.buttons .button:focus{background-color:#e55b00;color:#fff;text-shadow:none}.ui.orange.button:active,.ui.orange.buttons .button:active{background-color:#cf590c;color:#fff;text-shadow:none}.ui.orange.active.button,.ui.orange.button .active.button:active,.ui.orange.buttons .active.button,.ui.orange.buttons .active.button:active{background-color:#f56100;color:#fff;text-shadow:none}.ui.basic.orange.button,.ui.basic.orange.buttons .button{-webkit-box-shadow:0 0 0 1px #f2711c inset!important;box-shadow:0 0 0 1px #f2711c inset!important;color:#f2711c!important}.ui.basic.orange.button:hover,.ui.basic.orange.buttons .button:hover{background:0 0!important;-webkit-box-shadow:0 0 0 1px #f26202 inset!important;box-shadow:0 0 0 1px #f26202 inset!important;color:#f26202!important}.ui.basic.orange.button:focus,.ui.basic.orange.buttons .button:focus{background:0 0!important;-webkit-box-shadow:0 0 0 1px #e55b00 inset!important;box-shadow:0 0 0 1px #e55b00 inset!important;color:#f26202!important}.ui.basic.orange.active.button,.ui.basic.orange.buttons .active.button{background:0 0!important;-webkit-box-shadow:0 0 0 1px #f56100 inset!important;box-shadow:0 0 0 1px #f56100 inset!important;color:#cf590c!important}.ui.basic.orange.button:active,.ui.basic.orange.buttons .button:active{-webkit-box-shadow:0 0 0 1px #cf590c inset!important;box-shadow:0 0 0 1px #cf590c inset!important;color:#cf590c!important}.ui.buttons:not(.vertical)>.basic.orange.button:not(:first-child){margin-left:-1px}.ui.inverted.orange.button,.ui.inverted.orange.buttons .button{background-color:transparent;-webkit-box-shadow:0 0 0 2px #ff851b inset!important;box-shadow:0 0 0 2px #ff851b inset!important;color:#ff851b}.ui.inverted.orange.button.active,.ui.inverted.orange.button:active,.ui.inverted.orange.button:focus,.ui.inverted.orange.button:hover,.ui.inverted.orange.buttons .button.active,.ui.inverted.orange.buttons .button:active,.ui.inverted.orange.buttons .button:focus,.ui.inverted.orange.buttons .button:hover{-webkit-box-shadow:none!important;box-shadow:none!important;color:#fff}.ui.inverted.orange.button:hover,.ui.inverted.orange.buttons .button:hover{background-color:#ff7701}.ui.inverted.orange.button:focus,.ui.inverted.orange.buttons .button:focus{background-color:#f17000}.ui.inverted.orange.active.button,.ui.inverted.orange.buttons .active.button{background-color:#ff7701}.ui.inverted.orange.button:active,.ui.inverted.orange.buttons .button:active{background-color:#e76b00}.ui.inverted.orange.basic.button,.ui.inverted.orange.basic.buttons .button,.ui.inverted.orange.buttons .basic.button{background-color:transparent;-webkit-box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;color:#fff!important}.ui.inverted.orange.basic.button:hover,.ui.inverted.orange.basic.buttons .button:hover,.ui.inverted.orange.buttons .basic.button:hover{-webkit-box-shadow:0 0 0 2px #ff7701 inset!important;box-shadow:0 0 0 2px #ff7701 inset!important;color:#ff851b!important}.ui.inverted.orange.basic.button:focus,.ui.inverted.orange.basic.buttons .button:focus{-webkit-box-shadow:0 0 0 2px #f17000 inset!important;box-shadow:0 0 0 2px #f17000 inset!important;color:#ff851b!important}.ui.inverted.orange.basic.active.button,.ui.inverted.orange.basic.buttons .active.button,.ui.inverted.orange.buttons .basic.active.button{-webkit-box-shadow:0 0 0 2px #ff7701 inset!important;box-shadow:0 0 0 2px #ff7701 inset!important;color:#ff851b!important}.ui.inverted.orange.basic.button:active,.ui.inverted.orange.basic.buttons .button:active,.ui.inverted.orange.buttons .basic.button:active{-webkit-box-shadow:0 0 0 2px #e76b00 inset!important;box-shadow:0 0 0 2px #e76b00 inset!important;color:#ff851b!important}.ui.pink.button,.ui.pink.buttons .button{background-color:#e03997;color:#fff;text-shadow:none;background-image:none}.ui.pink.button{-webkit-box-shadow:0 0 0 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.pink.button:hover,.ui.pink.buttons .button:hover{background-color:#e61a8d;color:#fff;text-shadow:none}.ui.pink.button:focus,.ui.pink.buttons .button:focus{background-color:#e10f85;color:#fff;text-shadow:none}.ui.pink.button:active,.ui.pink.buttons .button:active{background-color:#c71f7e;color:#fff;text-shadow:none}.ui.pink.active.button,.ui.pink.button .active.button:active,.ui.pink.buttons .active.button,.ui.pink.buttons .active.button:active{background-color:#ea158d;color:#fff;text-shadow:none}.ui.basic.pink.button,.ui.basic.pink.buttons .button{-webkit-box-shadow:0 0 0 1px #e03997 inset!important;box-shadow:0 0 0 1px #e03997 inset!important;color:#e03997!important}.ui.basic.pink.button:hover,.ui.basic.pink.buttons .button:hover{background:0 0!important;-webkit-box-shadow:0 0 0 1px #e61a8d inset!important;box-shadow:0 0 0 1px #e61a8d inset!important;color:#e61a8d!important}.ui.basic.pink.button:focus,.ui.basic.pink.buttons .button:focus{background:0 0!important;-webkit-box-shadow:0 0 0 1px #e10f85 inset!important;box-shadow:0 0 0 1px #e10f85 inset!important;color:#e61a8d!important}.ui.basic.pink.active.button,.ui.basic.pink.buttons .active.button{background:0 0!important;-webkit-box-shadow:0 0 0 1px #ea158d inset!important;box-shadow:0 0 0 1px #ea158d inset!important;color:#c71f7e!important}.ui.basic.pink.button:active,.ui.basic.pink.buttons .button:active{-webkit-box-shadow:0 0 0 1px #c71f7e inset!important;box-shadow:0 0 0 1px #c71f7e inset!important;color:#c71f7e!important}.ui.buttons:not(.vertical)>.basic.pink.button:not(:first-child){margin-left:-1px}.ui.inverted.pink.button,.ui.inverted.pink.buttons .button{background-color:transparent;-webkit-box-shadow:0 0 0 2px #ff8edf inset!important;box-shadow:0 0 0 2px #ff8edf inset!important;color:#ff8edf}.ui.inverted.pink.button.active,.ui.inverted.pink.button:active,.ui.inverted.pink.button:focus,.ui.inverted.pink.button:hover,.ui.inverted.pink.buttons .button.active,.ui.inverted.pink.buttons .button:active,.ui.inverted.pink.buttons .button:focus,.ui.inverted.pink.buttons .button:hover{-webkit-box-shadow:none!important;box-shadow:none!important;color:#fff}.ui.inverted.pink.button:hover,.ui.inverted.pink.buttons .button:hover{background-color:#ff74d8}.ui.inverted.pink.button:focus,.ui.inverted.pink.buttons .button:focus{background-color:#ff65d3}.ui.inverted.pink.active.button,.ui.inverted.pink.buttons .active.button{background-color:#ff74d8}.ui.inverted.pink.button:active,.ui.inverted.pink.buttons .button:active{background-color:#ff5bd1}.ui.inverted.pink.basic.button,.ui.inverted.pink.basic.buttons .button,.ui.inverted.pink.buttons .basic.button{background-color:transparent;-webkit-box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;color:#fff!important}.ui.inverted.pink.basic.button:hover,.ui.inverted.pink.basic.buttons .button:hover,.ui.inverted.pink.buttons .basic.button:hover{-webkit-box-shadow:0 0 0 2px #ff74d8 inset!important;box-shadow:0 0 0 2px #ff74d8 inset!important;color:#ff8edf!important}.ui.inverted.pink.basic.button:focus,.ui.inverted.pink.basic.buttons .button:focus{-webkit-box-shadow:0 0 0 2px #ff65d3 inset!important;box-shadow:0 0 0 2px #ff65d3 inset!important;color:#ff8edf!important}.ui.inverted.pink.basic.active.button,.ui.inverted.pink.basic.buttons .active.button,.ui.inverted.pink.buttons .basic.active.button{-webkit-box-shadow:0 0 0 2px #ff74d8 inset!important;box-shadow:0 0 0 2px #ff74d8 inset!important;color:#ff8edf!important}.ui.inverted.pink.basic.button:active,.ui.inverted.pink.basic.buttons .button:active,.ui.inverted.pink.buttons .basic.button:active{-webkit-box-shadow:0 0 0 2px #ff5bd1 inset!important;box-shadow:0 0 0 2px #ff5bd1 inset!important;color:#ff8edf!important}.ui.violet.button,.ui.violet.buttons .button{background-color:#6435c9;color:#fff;text-shadow:none;background-image:none}.ui.violet.button{-webkit-box-shadow:0 0 0 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.violet.button:hover,.ui.violet.buttons .button:hover{background-color:#5829bb;color:#fff;text-shadow:none}.ui.violet.button:focus,.ui.violet.buttons .button:focus{background-color:#4f20b5;color:#fff;text-shadow:none}.ui.violet.button:active,.ui.violet.buttons .button:active{background-color:#502aa1;color:#fff;text-shadow:none}.ui.violet.active.button,.ui.violet.button .active.button:active,.ui.violet.buttons .active.button,.ui.violet.buttons .active.button:active{background-color:#5626bf;color:#fff;text-shadow:none}.ui.basic.violet.button,.ui.basic.violet.buttons .button{-webkit-box-shadow:0 0 0 1px #6435c9 inset!important;box-shadow:0 0 0 1px #6435c9 inset!important;color:#6435c9!important}.ui.basic.violet.button:hover,.ui.basic.violet.buttons .button:hover{background:0 0!important;-webkit-box-shadow:0 0 0 1px #5829bb inset!important;box-shadow:0 0 0 1px #5829bb inset!important;color:#5829bb!important}.ui.basic.violet.button:focus,.ui.basic.violet.buttons .button:focus{background:0 0!important;-webkit-box-shadow:0 0 0 1px #4f20b5 inset!important;box-shadow:0 0 0 1px #4f20b5 inset!important;color:#5829bb!important}.ui.basic.violet.active.button,.ui.basic.violet.buttons .active.button{background:0 0!important;-webkit-box-shadow:0 0 0 1px #5626bf inset!important;box-shadow:0 0 0 1px #5626bf inset!important;color:#502aa1!important}.ui.basic.violet.button:active,.ui.basic.violet.buttons .button:active{-webkit-box-shadow:0 0 0 1px #502aa1 inset!important;box-shadow:0 0 0 1px #502aa1 inset!important;color:#502aa1!important}.ui.buttons:not(.vertical)>.basic.violet.button:not(:first-child){margin-left:-1px}.ui.inverted.violet.button,.ui.inverted.violet.buttons .button{background-color:transparent;-webkit-box-shadow:0 0 0 2px #a291fb inset!important;box-shadow:0 0 0 2px #a291fb inset!important;color:#a291fb}.ui.inverted.violet.button.active,.ui.inverted.violet.button:active,.ui.inverted.violet.button:focus,.ui.inverted.violet.button:hover,.ui.inverted.violet.buttons .button.active,.ui.inverted.violet.buttons .button:active,.ui.inverted.violet.buttons .button:focus,.ui.inverted.violet.buttons .button:hover{-webkit-box-shadow:none!important;box-shadow:none!important;color:#fff}.ui.inverted.violet.button:hover,.ui.inverted.violet.buttons .button:hover{background-color:#8a73ff}.ui.inverted.violet.button:focus,.ui.inverted.violet.buttons .button:focus{background-color:#7d64ff}.ui.inverted.violet.active.button,.ui.inverted.violet.buttons .active.button{background-color:#8a73ff}.ui.inverted.violet.button:active,.ui.inverted.violet.buttons .button:active{background-color:#7860f9}.ui.inverted.violet.basic.button,.ui.inverted.violet.basic.buttons .button,.ui.inverted.violet.buttons .basic.button{background-color:transparent;-webkit-box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;color:#fff!important}.ui.inverted.violet.basic.button:hover,.ui.inverted.violet.basic.buttons .button:hover,.ui.inverted.violet.buttons .basic.button:hover{-webkit-box-shadow:0 0 0 2px #8a73ff inset!important;box-shadow:0 0 0 2px #8a73ff inset!important;color:#a291fb!important}.ui.inverted.violet.basic.button:focus,.ui.inverted.violet.basic.buttons .button:focus{-webkit-box-shadow:0 0 0 2px #7d64ff inset!important;box-shadow:0 0 0 2px #7d64ff inset!important;color:#a291fb!important}.ui.inverted.violet.basic.active.button,.ui.inverted.violet.basic.buttons .active.button,.ui.inverted.violet.buttons .basic.active.button{-webkit-box-shadow:0 0 0 2px #8a73ff inset!important;box-shadow:0 0 0 2px #8a73ff inset!important;color:#a291fb!important}.ui.inverted.violet.basic.button:active,.ui.inverted.violet.basic.buttons .button:active,.ui.inverted.violet.buttons .basic.button:active{-webkit-box-shadow:0 0 0 2px #7860f9 inset!important;box-shadow:0 0 0 2px #7860f9 inset!important;color:#a291fb!important}.ui.purple.button,.ui.purple.buttons .button{background-color:#a333c8;color:#fff;text-shadow:none;background-image:none}.ui.purple.button{-webkit-box-shadow:0 0 0 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.purple.button:hover,.ui.purple.buttons .button:hover{background-color:#9627ba;color:#fff;text-shadow:none}.ui.purple.button:focus,.ui.purple.buttons .button:focus{background-color:#8f1eb4;color:#fff;text-shadow:none}.ui.purple.button:active,.ui.purple.buttons .button:active{background-color:#82299f;color:#fff;text-shadow:none}.ui.purple.active.button,.ui.purple.button .active.button:active,.ui.purple.buttons .active.button,.ui.purple.buttons .active.button:active{background-color:#9724be;color:#fff;text-shadow:none}.ui.basic.purple.button,.ui.basic.purple.buttons .button{-webkit-box-shadow:0 0 0 1px #a333c8 inset!important;box-shadow:0 0 0 1px #a333c8 inset!important;color:#a333c8!important}.ui.basic.purple.button:hover,.ui.basic.purple.buttons .button:hover{background:0 0!important;-webkit-box-shadow:0 0 0 1px #9627ba inset!important;box-shadow:0 0 0 1px #9627ba inset!important;color:#9627ba!important}.ui.basic.purple.button:focus,.ui.basic.purple.buttons .button:focus{background:0 0!important;-webkit-box-shadow:0 0 0 1px #8f1eb4 inset!important;box-shadow:0 0 0 1px #8f1eb4 inset!important;color:#9627ba!important}.ui.basic.purple.active.button,.ui.basic.purple.buttons .active.button{background:0 0!important;-webkit-box-shadow:0 0 0 1px #9724be inset!important;box-shadow:0 0 0 1px #9724be inset!important;color:#82299f!important}.ui.basic.purple.button:active,.ui.basic.purple.buttons .button:active{-webkit-box-shadow:0 0 0 1px #82299f inset!important;box-shadow:0 0 0 1px #82299f inset!important;color:#82299f!important}.ui.buttons:not(.vertical)>.basic.purple.button:not(:first-child){margin-left:-1px}.ui.inverted.purple.button,.ui.inverted.purple.buttons .button{background-color:transparent;-webkit-box-shadow:0 0 0 2px #dc73ff inset!important;box-shadow:0 0 0 2px #dc73ff inset!important;color:#dc73ff}.ui.inverted.purple.button.active,.ui.inverted.purple.button:active,.ui.inverted.purple.button:focus,.ui.inverted.purple.button:hover,.ui.inverted.purple.buttons .button.active,.ui.inverted.purple.buttons .button:active,.ui.inverted.purple.buttons .button:focus,.ui.inverted.purple.buttons .button:hover{-webkit-box-shadow:none!important;box-shadow:none!important;color:#fff}.ui.inverted.purple.button:hover,.ui.inverted.purple.buttons .button:hover{background-color:#d65aff}.ui.inverted.purple.button:focus,.ui.inverted.purple.buttons .button:focus{background-color:#d24aff}.ui.inverted.purple.active.button,.ui.inverted.purple.buttons .active.button{background-color:#d65aff}.ui.inverted.purple.button:active,.ui.inverted.purple.buttons .button:active{background-color:#cf40ff}.ui.inverted.purple.basic.button,.ui.inverted.purple.basic.buttons .button,.ui.inverted.purple.buttons .basic.button{background-color:transparent;-webkit-box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;color:#fff!important}.ui.inverted.purple.basic.button:hover,.ui.inverted.purple.basic.buttons .button:hover,.ui.inverted.purple.buttons .basic.button:hover{-webkit-box-shadow:0 0 0 2px #d65aff inset!important;box-shadow:0 0 0 2px #d65aff inset!important;color:#dc73ff!important}.ui.inverted.purple.basic.button:focus,.ui.inverted.purple.basic.buttons .button:focus{-webkit-box-shadow:0 0 0 2px #d24aff inset!important;box-shadow:0 0 0 2px #d24aff inset!important;color:#dc73ff!important}.ui.inverted.purple.basic.active.button,.ui.inverted.purple.basic.buttons .active.button,.ui.inverted.purple.buttons .basic.active.button{-webkit-box-shadow:0 0 0 2px #d65aff inset!important;box-shadow:0 0 0 2px #d65aff inset!important;color:#dc73ff!important}.ui.inverted.purple.basic.button:active,.ui.inverted.purple.basic.buttons .button:active,.ui.inverted.purple.buttons .basic.button:active{-webkit-box-shadow:0 0 0 2px #cf40ff inset!important;box-shadow:0 0 0 2px #cf40ff inset!important;color:#dc73ff!important}.ui.red.button,.ui.red.buttons .button{background-color:#db2828;color:#fff;text-shadow:none;background-image:none}.ui.red.button{-webkit-box-shadow:0 0 0 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.red.button:hover,.ui.red.buttons .button:hover{background-color:#d01919;color:#fff;text-shadow:none}.ui.red.button:focus,.ui.red.buttons .button:focus{background-color:#ca1010;color:#fff;text-shadow:none}.ui.red.button:active,.ui.red.buttons .button:active{background-color:#b21e1e;color:#fff;text-shadow:none}.ui.red.active.button,.ui.red.button .active.button:active,.ui.red.buttons .active.button,.ui.red.buttons .active.button:active{background-color:#d41515;color:#fff;text-shadow:none}.ui.basic.red.button,.ui.basic.red.buttons .button{-webkit-box-shadow:0 0 0 1px #db2828 inset!important;box-shadow:0 0 0 1px #db2828 inset!important;color:#db2828!important}.ui.basic.red.button:hover,.ui.basic.red.buttons .button:hover{background:0 0!important;-webkit-box-shadow:0 0 0 1px #d01919 inset!important;box-shadow:0 0 0 1px #d01919 inset!important;color:#d01919!important}.ui.basic.red.button:focus,.ui.basic.red.buttons .button:focus{background:0 0!important;-webkit-box-shadow:0 0 0 1px #ca1010 inset!important;box-shadow:0 0 0 1px #ca1010 inset!important;color:#d01919!important}.ui.basic.red.active.button,.ui.basic.red.buttons .active.button{background:0 0!important;-webkit-box-shadow:0 0 0 1px #d41515 inset!important;box-shadow:0 0 0 1px #d41515 inset!important;color:#b21e1e!important}.ui.basic.red.button:active,.ui.basic.red.buttons .button:active{-webkit-box-shadow:0 0 0 1px #b21e1e inset!important;box-shadow:0 0 0 1px #b21e1e inset!important;color:#b21e1e!important}.ui.buttons:not(.vertical)>.basic.red.button:not(:first-child){margin-left:-1px}.ui.inverted.red.button,.ui.inverted.red.buttons .button{background-color:transparent;-webkit-box-shadow:0 0 0 2px #ff695e inset!important;box-shadow:0 0 0 2px #ff695e inset!important;color:#ff695e}.ui.inverted.red.button.active,.ui.inverted.red.button:active,.ui.inverted.red.button:focus,.ui.inverted.red.button:hover,.ui.inverted.red.buttons .button.active,.ui.inverted.red.buttons .button:active,.ui.inverted.red.buttons .button:focus,.ui.inverted.red.buttons .button:hover{-webkit-box-shadow:none!important;box-shadow:none!important;color:#fff}.ui.inverted.red.button:hover,.ui.inverted.red.buttons .button:hover{background-color:#ff5144}.ui.inverted.red.button:focus,.ui.inverted.red.buttons .button:focus{background-color:#ff4335}.ui.inverted.red.active.button,.ui.inverted.red.buttons .active.button{background-color:#ff5144}.ui.inverted.red.button:active,.ui.inverted.red.buttons .button:active{background-color:#ff392b}.ui.inverted.red.basic.button,.ui.inverted.red.basic.buttons .button,.ui.inverted.red.buttons .basic.button{background-color:transparent;-webkit-box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;color:#fff!important}.ui.inverted.red.basic.button:hover,.ui.inverted.red.basic.buttons .button:hover,.ui.inverted.red.buttons .basic.button:hover{-webkit-box-shadow:0 0 0 2px #ff5144 inset!important;box-shadow:0 0 0 2px #ff5144 inset!important;color:#ff695e!important}.ui.inverted.red.basic.button:focus,.ui.inverted.red.basic.buttons .button:focus{-webkit-box-shadow:0 0 0 2px #ff4335 inset!important;box-shadow:0 0 0 2px #ff4335 inset!important;color:#ff695e!important}.ui.inverted.red.basic.active.button,.ui.inverted.red.basic.buttons .active.button,.ui.inverted.red.buttons .basic.active.button{-webkit-box-shadow:0 0 0 2px #ff5144 inset!important;box-shadow:0 0 0 2px #ff5144 inset!important;color:#ff695e!important}.ui.inverted.red.basic.button:active,.ui.inverted.red.basic.buttons .button:active,.ui.inverted.red.buttons .basic.button:active{-webkit-box-shadow:0 0 0 2px #ff392b inset!important;box-shadow:0 0 0 2px #ff392b inset!important;color:#ff695e!important}.ui.teal.button,.ui.teal.buttons .button{background-color:#00b5ad;color:#fff;text-shadow:none;background-image:none}.ui.teal.button{-webkit-box-shadow:0 0 0 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.teal.button:hover,.ui.teal.buttons .button:hover{background-color:#009c95;color:#fff;text-shadow:none}.ui.teal.button:focus,.ui.teal.buttons .button:focus{background-color:#008c86;color:#fff;text-shadow:none}.ui.teal.button:active,.ui.teal.buttons .button:active{background-color:#00827c;color:#fff;text-shadow:none}.ui.teal.active.button,.ui.teal.button .active.button:active,.ui.teal.buttons .active.button,.ui.teal.buttons .active.button:active{background-color:#009c95;color:#fff;text-shadow:none}.ui.basic.teal.button,.ui.basic.teal.buttons .button{-webkit-box-shadow:0 0 0 1px #00b5ad inset!important;box-shadow:0 0 0 1px #00b5ad inset!important;color:#00b5ad!important}.ui.basic.teal.button:hover,.ui.basic.teal.buttons .button:hover{background:0 0!important;-webkit-box-shadow:0 0 0 1px #009c95 inset!important;box-shadow:0 0 0 1px #009c95 inset!important;color:#009c95!important}.ui.basic.teal.button:focus,.ui.basic.teal.buttons .button:focus{background:0 0!important;-webkit-box-shadow:0 0 0 1px #008c86 inset!important;box-shadow:0 0 0 1px #008c86 inset!important;color:#009c95!important}.ui.basic.teal.active.button,.ui.basic.teal.buttons .active.button{background:0 0!important;-webkit-box-shadow:0 0 0 1px #009c95 inset!important;box-shadow:0 0 0 1px #009c95 inset!important;color:#00827c!important}.ui.basic.teal.button:active,.ui.basic.teal.buttons .button:active{-webkit-box-shadow:0 0 0 1px #00827c inset!important;box-shadow:0 0 0 1px #00827c inset!important;color:#00827c!important}.ui.buttons:not(.vertical)>.basic.teal.button:not(:first-child){margin-left:-1px}.ui.inverted.teal.button,.ui.inverted.teal.buttons .button{background-color:transparent;-webkit-box-shadow:0 0 0 2px #6dffff inset!important;box-shadow:0 0 0 2px #6dffff inset!important;color:#6dffff}.ui.inverted.teal.button.active,.ui.inverted.teal.button:active,.ui.inverted.teal.button:focus,.ui.inverted.teal.button:hover,.ui.inverted.teal.buttons .button.active,.ui.inverted.teal.buttons .button:active,.ui.inverted.teal.buttons .button:focus,.ui.inverted.teal.buttons .button:hover{-webkit-box-shadow:none!important;box-shadow:none!important;color:rgba(0,0,0,.6)}.ui.inverted.teal.button:hover,.ui.inverted.teal.buttons .button:hover{background-color:#54ffff}.ui.inverted.teal.button:focus,.ui.inverted.teal.buttons .button:focus{background-color:#4ff}.ui.inverted.teal.active.button,.ui.inverted.teal.buttons .active.button{background-color:#54ffff}.ui.inverted.teal.button:active,.ui.inverted.teal.buttons .button:active{background-color:#3affff}.ui.inverted.teal.basic.button,.ui.inverted.teal.basic.buttons .button,.ui.inverted.teal.buttons .basic.button{background-color:transparent;-webkit-box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;color:#fff!important}.ui.inverted.teal.basic.button:hover,.ui.inverted.teal.basic.buttons .button:hover,.ui.inverted.teal.buttons .basic.button:hover{-webkit-box-shadow:0 0 0 2px #54ffff inset!important;box-shadow:0 0 0 2px #54ffff inset!important;color:#6dffff!important}.ui.inverted.teal.basic.button:focus,.ui.inverted.teal.basic.buttons .button:focus{-webkit-box-shadow:0 0 0 2px #4ff inset!important;box-shadow:0 0 0 2px #4ff inset!important;color:#6dffff!important}.ui.inverted.teal.basic.active.button,.ui.inverted.teal.basic.buttons .active.button,.ui.inverted.teal.buttons .basic.active.button{-webkit-box-shadow:0 0 0 2px #54ffff inset!important;box-shadow:0 0 0 2px #54ffff inset!important;color:#6dffff!important}.ui.inverted.teal.basic.button:active,.ui.inverted.teal.basic.buttons .button:active,.ui.inverted.teal.buttons .basic.button:active{-webkit-box-shadow:0 0 0 2px #3affff inset!important;box-shadow:0 0 0 2px #3affff inset!important;color:#6dffff!important}.ui.olive.button,.ui.olive.buttons .button{background-color:#b5cc18;color:#fff;text-shadow:none;background-image:none}.ui.olive.button{-webkit-box-shadow:0 0 0 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.olive.button:hover,.ui.olive.buttons .button:hover{background-color:#a7bd0d;color:#fff;text-shadow:none}.ui.olive.button:focus,.ui.olive.buttons .button:focus{background-color:#a0b605;color:#fff;text-shadow:none}.ui.olive.button:active,.ui.olive.buttons .button:active{background-color:#8d9e13;color:#fff;text-shadow:none}.ui.olive.active.button,.ui.olive.button .active.button:active,.ui.olive.buttons .active.button,.ui.olive.buttons .active.button:active{background-color:#aac109;color:#fff;text-shadow:none}.ui.basic.olive.button,.ui.basic.olive.buttons .button{-webkit-box-shadow:0 0 0 1px #b5cc18 inset!important;box-shadow:0 0 0 1px #b5cc18 inset!important;color:#b5cc18!important}.ui.basic.olive.button:hover,.ui.basic.olive.buttons .button:hover{background:0 0!important;-webkit-box-shadow:0 0 0 1px #a7bd0d inset!important;box-shadow:0 0 0 1px #a7bd0d inset!important;color:#a7bd0d!important}.ui.basic.olive.button:focus,.ui.basic.olive.buttons .button:focus{background:0 0!important;-webkit-box-shadow:0 0 0 1px #a0b605 inset!important;box-shadow:0 0 0 1px #a0b605 inset!important;color:#a7bd0d!important}.ui.basic.olive.active.button,.ui.basic.olive.buttons .active.button{background:0 0!important;-webkit-box-shadow:0 0 0 1px #aac109 inset!important;box-shadow:0 0 0 1px #aac109 inset!important;color:#8d9e13!important}.ui.basic.olive.button:active,.ui.basic.olive.buttons .button:active{-webkit-box-shadow:0 0 0 1px #8d9e13 inset!important;box-shadow:0 0 0 1px #8d9e13 inset!important;color:#8d9e13!important}.ui.buttons:not(.vertical)>.basic.olive.button:not(:first-child){margin-left:-1px}.ui.inverted.olive.button,.ui.inverted.olive.buttons .button{background-color:transparent;-webkit-box-shadow:0 0 0 2px #d9e778 inset!important;box-shadow:0 0 0 2px #d9e778 inset!important;color:#d9e778}.ui.inverted.olive.button.active,.ui.inverted.olive.button:active,.ui.inverted.olive.button:focus,.ui.inverted.olive.button:hover,.ui.inverted.olive.buttons .button.active,.ui.inverted.olive.buttons .button:active,.ui.inverted.olive.buttons .button:focus,.ui.inverted.olive.buttons .button:hover{-webkit-box-shadow:none!important;box-shadow:none!important;color:rgba(0,0,0,.6)}.ui.inverted.olive.button:hover,.ui.inverted.olive.buttons .button:hover{background-color:#d8ea5c}.ui.inverted.olive.button:focus,.ui.inverted.olive.buttons .button:focus{background-color:#daef47}.ui.inverted.olive.active.button,.ui.inverted.olive.buttons .active.button{background-color:#daed59}.ui.inverted.olive.button:active,.ui.inverted.olive.buttons .button:active{background-color:#cddf4d}.ui.inverted.olive.basic.button,.ui.inverted.olive.basic.buttons .button,.ui.inverted.olive.buttons .basic.button{background-color:transparent;-webkit-box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;color:#fff!important}.ui.inverted.olive.basic.button:hover,.ui.inverted.olive.basic.buttons .button:hover,.ui.inverted.olive.buttons .basic.button:hover{-webkit-box-shadow:0 0 0 2px #d8ea5c inset!important;box-shadow:0 0 0 2px #d8ea5c inset!important;color:#d9e778!important}.ui.inverted.olive.basic.button:focus,.ui.inverted.olive.basic.buttons .button:focus{-webkit-box-shadow:0 0 0 2px #daef47 inset!important;box-shadow:0 0 0 2px #daef47 inset!important;color:#d9e778!important}.ui.inverted.olive.basic.active.button,.ui.inverted.olive.basic.buttons .active.button,.ui.inverted.olive.buttons .basic.active.button{-webkit-box-shadow:0 0 0 2px #daed59 inset!important;box-shadow:0 0 0 2px #daed59 inset!important;color:#d9e778!important}.ui.inverted.olive.basic.button:active,.ui.inverted.olive.basic.buttons .button:active,.ui.inverted.olive.buttons .basic.button:active{-webkit-box-shadow:0 0 0 2px #cddf4d inset!important;box-shadow:0 0 0 2px #cddf4d inset!important;color:#d9e778!important}.ui.yellow.button,.ui.yellow.buttons .button{background-color:#fbbd08;color:#fff;text-shadow:none;background-image:none}.ui.yellow.button{-webkit-box-shadow:0 0 0 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.yellow.button:hover,.ui.yellow.buttons .button:hover{background-color:#eaae00;color:#fff;text-shadow:none}.ui.yellow.button:focus,.ui.yellow.buttons .button:focus{background-color:#daa300;color:#fff;text-shadow:none}.ui.yellow.button:active,.ui.yellow.buttons .button:active{background-color:#cd9903;color:#fff;text-shadow:none}.ui.yellow.active.button,.ui.yellow.button .active.button:active,.ui.yellow.buttons .active.button,.ui.yellow.buttons .active.button:active{background-color:#eaae00;color:#fff;text-shadow:none}.ui.basic.yellow.button,.ui.basic.yellow.buttons .button{-webkit-box-shadow:0 0 0 1px #fbbd08 inset!important;box-shadow:0 0 0 1px #fbbd08 inset!important;color:#fbbd08!important}.ui.basic.yellow.button:hover,.ui.basic.yellow.buttons .button:hover{background:0 0!important;-webkit-box-shadow:0 0 0 1px #eaae00 inset!important;box-shadow:0 0 0 1px #eaae00 inset!important;color:#eaae00!important}.ui.basic.yellow.button:focus,.ui.basic.yellow.buttons .button:focus{background:0 0!important;-webkit-box-shadow:0 0 0 1px #daa300 inset!important;box-shadow:0 0 0 1px #daa300 inset!important;color:#eaae00!important}.ui.basic.yellow.active.button,.ui.basic.yellow.buttons .active.button{background:0 0!important;-webkit-box-shadow:0 0 0 1px #eaae00 inset!important;box-shadow:0 0 0 1px #eaae00 inset!important;color:#cd9903!important}.ui.basic.yellow.button:active,.ui.basic.yellow.buttons .button:active{-webkit-box-shadow:0 0 0 1px #cd9903 inset!important;box-shadow:0 0 0 1px #cd9903 inset!important;color:#cd9903!important}.ui.buttons:not(.vertical)>.basic.yellow.button:not(:first-child){margin-left:-1px}.ui.inverted.yellow.button,.ui.inverted.yellow.buttons .button{background-color:transparent;-webkit-box-shadow:0 0 0 2px #ffe21f inset!important;box-shadow:0 0 0 2px #ffe21f inset!important;color:#ffe21f}.ui.inverted.yellow.button.active,.ui.inverted.yellow.button:active,.ui.inverted.yellow.button:focus,.ui.inverted.yellow.button:hover,.ui.inverted.yellow.buttons .button.active,.ui.inverted.yellow.buttons .button:active,.ui.inverted.yellow.buttons .button:focus,.ui.inverted.yellow.buttons .button:hover{-webkit-box-shadow:none!important;box-shadow:none!important;color:rgba(0,0,0,.6)}.ui.inverted.yellow.button:hover,.ui.inverted.yellow.buttons .button:hover{background-color:#ffdf05}.ui.inverted.yellow.button:focus,.ui.inverted.yellow.buttons .button:focus{background-color:#f5d500}.ui.inverted.yellow.active.button,.ui.inverted.yellow.buttons .active.button{background-color:#ffdf05}.ui.inverted.yellow.button:active,.ui.inverted.yellow.buttons .button:active{background-color:#ebcd00}.ui.inverted.yellow.basic.button,.ui.inverted.yellow.basic.buttons .button,.ui.inverted.yellow.buttons .basic.button{background-color:transparent;-webkit-box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;color:#fff!important}.ui.inverted.yellow.basic.button:hover,.ui.inverted.yellow.basic.buttons .button:hover,.ui.inverted.yellow.buttons .basic.button:hover{-webkit-box-shadow:0 0 0 2px #ffdf05 inset!important;box-shadow:0 0 0 2px #ffdf05 inset!important;color:#ffe21f!important}.ui.inverted.yellow.basic.button:focus,.ui.inverted.yellow.basic.buttons .button:focus{-webkit-box-shadow:0 0 0 2px #f5d500 inset!important;box-shadow:0 0 0 2px #f5d500 inset!important;color:#ffe21f!important}.ui.inverted.yellow.basic.active.button,.ui.inverted.yellow.basic.buttons .active.button,.ui.inverted.yellow.buttons .basic.active.button{-webkit-box-shadow:0 0 0 2px #ffdf05 inset!important;box-shadow:0 0 0 2px #ffdf05 inset!important;color:#ffe21f!important}.ui.inverted.yellow.basic.button:active,.ui.inverted.yellow.basic.buttons .button:active,.ui.inverted.yellow.buttons .basic.button:active{-webkit-box-shadow:0 0 0 2px #ebcd00 inset!important;box-shadow:0 0 0 2px #ebcd00 inset!important;color:#ffe21f!important}.ui.primary.button,.ui.primary.buttons .button{background-color:#2185d0;color:#fff;text-shadow:none;background-image:none}.ui.primary.button{-webkit-box-shadow:0 0 0 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.primary.button:hover,.ui.primary.buttons .button:hover{background-color:#1678c2;color:#fff;text-shadow:none}.ui.primary.button:focus,.ui.primary.buttons .button:focus{background-color:#0d71bb;color:#fff;text-shadow:none}.ui.primary.button:active,.ui.primary.buttons .button:active{background-color:#1a69a4;color:#fff;text-shadow:none}.ui.primary.active.button,.ui.primary.button .active.button:active,.ui.primary.buttons .active.button,.ui.primary.buttons .active.button:active{background-color:#1279c6;color:#fff;text-shadow:none}.ui.basic.primary.button,.ui.basic.primary.buttons .button{-webkit-box-shadow:0 0 0 1px #2185d0 inset!important;box-shadow:0 0 0 1px #2185d0 inset!important;color:#2185d0!important}.ui.basic.primary.button:hover,.ui.basic.primary.buttons .button:hover{background:0 0!important;-webkit-box-shadow:0 0 0 1px #1678c2 inset!important;box-shadow:0 0 0 1px #1678c2 inset!important;color:#1678c2!important}.ui.basic.primary.button:focus,.ui.basic.primary.buttons .button:focus{background:0 0!important;-webkit-box-shadow:0 0 0 1px #0d71bb inset!important;box-shadow:0 0 0 1px #0d71bb inset!important;color:#1678c2!important}.ui.basic.primary.active.button,.ui.basic.primary.buttons .active.button{background:0 0!important;-webkit-box-shadow:0 0 0 1px #1279c6 inset!important;box-shadow:0 0 0 1px #1279c6 inset!important;color:#1a69a4!important}.ui.basic.primary.button:active,.ui.basic.primary.buttons .button:active{-webkit-box-shadow:0 0 0 1px #1a69a4 inset!important;box-shadow:0 0 0 1px #1a69a4 inset!important;color:#1a69a4!important}.ui.buttons:not(.vertical)>.basic.primary.button:not(:first-child){margin-left:-1px}.ui.inverted.primary.button,.ui.inverted.primary.buttons .button{background-color:transparent;-webkit-box-shadow:0 0 0 2px #54c8ff inset!important;box-shadow:0 0 0 2px #54c8ff inset!important;color:#54c8ff}.ui.inverted.primary.button.active,.ui.inverted.primary.button:active,.ui.inverted.primary.button:focus,.ui.inverted.primary.button:hover,.ui.inverted.primary.buttons .button.active,.ui.inverted.primary.buttons .button:active,.ui.inverted.primary.buttons .button:focus,.ui.inverted.primary.buttons .button:hover{-webkit-box-shadow:none!important;box-shadow:none!important;color:#fff}.ui.inverted.primary.button:hover,.ui.inverted.primary.buttons .button:hover{background-color:#3ac0ff}.ui.inverted.primary.button:focus,.ui.inverted.primary.buttons .button:focus{background-color:#2bbbff}.ui.inverted.primary.active.button,.ui.inverted.primary.buttons .active.button{background-color:#3ac0ff}.ui.inverted.primary.button:active,.ui.inverted.primary.buttons .button:active{background-color:#21b8ff}.ui.inverted.primary.basic.button,.ui.inverted.primary.basic.buttons .button,.ui.inverted.primary.buttons .basic.button{background-color:transparent;-webkit-box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;color:#fff!important}.ui.inverted.primary.basic.button:hover,.ui.inverted.primary.basic.buttons .button:hover,.ui.inverted.primary.buttons .basic.button:hover{-webkit-box-shadow:0 0 0 2px #3ac0ff inset!important;box-shadow:0 0 0 2px #3ac0ff inset!important;color:#54c8ff!important}.ui.inverted.primary.basic.button:focus,.ui.inverted.primary.basic.buttons .button:focus{-webkit-box-shadow:0 0 0 2px #2bbbff inset!important;box-shadow:0 0 0 2px #2bbbff inset!important;color:#54c8ff!important}.ui.inverted.primary.basic.active.button,.ui.inverted.primary.basic.buttons .active.button,.ui.inverted.primary.buttons .basic.active.button{-webkit-box-shadow:0 0 0 2px #3ac0ff inset!important;box-shadow:0 0 0 2px #3ac0ff inset!important;color:#54c8ff!important}.ui.inverted.primary.basic.button:active,.ui.inverted.primary.basic.buttons .button:active,.ui.inverted.primary.buttons .basic.button:active{-webkit-box-shadow:0 0 0 2px #21b8ff inset!important;box-shadow:0 0 0 2px #21b8ff inset!important;color:#54c8ff!important}.ui.secondary.button,.ui.secondary.buttons .button{background-color:#1b1c1d;color:#fff;text-shadow:none;background-image:none}.ui.secondary.button{-webkit-box-shadow:0 0 0 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.secondary.button:hover,.ui.secondary.buttons .button:hover{background-color:#27292a;color:#fff;text-shadow:none}.ui.secondary.button:focus,.ui.secondary.buttons .button:focus{background-color:#2e3032;color:#fff;text-shadow:none}.ui.secondary.button:active,.ui.secondary.buttons .button:active{background-color:#343637;color:#fff;text-shadow:none}.ui.secondary.active.button,.ui.secondary.button .active.button:active,.ui.secondary.buttons .active.button,.ui.secondary.buttons .active.button:active{background-color:#27292a;color:#fff;text-shadow:none}.ui.basic.secondary.button,.ui.basic.secondary.buttons .button{-webkit-box-shadow:0 0 0 1px #1b1c1d inset!important;box-shadow:0 0 0 1px #1b1c1d inset!important;color:#1b1c1d!important}.ui.basic.secondary.button:hover,.ui.basic.secondary.buttons .button:hover{background:0 0!important;-webkit-box-shadow:0 0 0 1px #27292a inset!important;box-shadow:0 0 0 1px #27292a inset!important;color:#27292a!important}.ui.basic.secondary.button:focus,.ui.basic.secondary.buttons .button:focus{background:0 0!important;-webkit-box-shadow:0 0 0 1px #2e3032 inset!important;box-shadow:0 0 0 1px #2e3032 inset!important;color:#27292a!important}.ui.basic.secondary.active.button,.ui.basic.secondary.buttons .active.button{background:0 0!important;-webkit-box-shadow:0 0 0 1px #27292a inset!important;box-shadow:0 0 0 1px #27292a inset!important;color:#343637!important}.ui.basic.secondary.button:active,.ui.basic.secondary.buttons .button:active{-webkit-box-shadow:0 0 0 1px #343637 inset!important;box-shadow:0 0 0 1px #343637 inset!important;color:#343637!important}.ui.buttons:not(.vertical)>.basic.primary.button:not(:first-child){margin-left:-1px}.ui.inverted.secondary.button,.ui.inverted.secondary.buttons .button{background-color:transparent;-webkit-box-shadow:0 0 0 2px #545454 inset!important;box-shadow:0 0 0 2px #545454 inset!important;color:#545454}.ui.inverted.secondary.button.active,.ui.inverted.secondary.button:active,.ui.inverted.secondary.button:focus,.ui.inverted.secondary.button:hover,.ui.inverted.secondary.buttons .button.active,.ui.inverted.secondary.buttons .button:active,.ui.inverted.secondary.buttons .button:focus,.ui.inverted.secondary.buttons .button:hover{-webkit-box-shadow:none!important;box-shadow:none!important;color:#fff}.ui.inverted.secondary.button:hover,.ui.inverted.secondary.buttons .button:hover{background-color:#616161}.ui.inverted.secondary.button:focus,.ui.inverted.secondary.buttons .button:focus{background-color:#686868}.ui.inverted.secondary.active.button,.ui.inverted.secondary.buttons .active.button{background-color:#616161}.ui.inverted.secondary.button:active,.ui.inverted.secondary.buttons .button:active{background-color:#6e6e6e}.ui.inverted.secondary.basic.button,.ui.inverted.secondary.basic.buttons .button,.ui.inverted.secondary.buttons .basic.button{background-color:transparent;-webkit-box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;color:#fff!important}.ui.inverted.secondary.basic.button:hover,.ui.inverted.secondary.basic.buttons .button:hover,.ui.inverted.secondary.buttons .basic.button:hover{-webkit-box-shadow:0 0 0 2px #616161 inset!important;box-shadow:0 0 0 2px #616161 inset!important;color:#545454!important}.ui.inverted.secondary.basic.button:focus,.ui.inverted.secondary.basic.buttons .button:focus{-webkit-box-shadow:0 0 0 2px #686868 inset!important;box-shadow:0 0 0 2px #686868 inset!important;color:#545454!important}.ui.inverted.secondary.basic.active.button,.ui.inverted.secondary.basic.buttons .active.button,.ui.inverted.secondary.buttons .basic.active.button{-webkit-box-shadow:0 0 0 2px #616161 inset!important;box-shadow:0 0 0 2px #616161 inset!important;color:#545454!important}.ui.inverted.secondary.basic.button:active,.ui.inverted.secondary.basic.buttons .button:active,.ui.inverted.secondary.buttons .basic.button:active{-webkit-box-shadow:0 0 0 2px #6e6e6e inset!important;box-shadow:0 0 0 2px #6e6e6e inset!important;color:#545454!important}.ui.positive.button,.ui.positive.buttons .button{background-color:#21ba45;color:#fff;text-shadow:none;background-image:none}.ui.positive.button{-webkit-box-shadow:0 0 0 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.positive.button:hover,.ui.positive.buttons .button:hover{background-color:#16ab39;color:#fff;text-shadow:none}.ui.positive.button:focus,.ui.positive.buttons .button:focus{background-color:#0ea432;color:#fff;text-shadow:none}.ui.positive.button:active,.ui.positive.buttons .button:active{background-color:#198f35;color:#fff;text-shadow:none}.ui.positive.active.button,.ui.positive.button .active.button:active,.ui.positive.buttons .active.button,.ui.positive.buttons .active.button:active{background-color:#13ae38;color:#fff;text-shadow:none}.ui.basic.positive.button,.ui.basic.positive.buttons .button{-webkit-box-shadow:0 0 0 1px #21ba45 inset!important;box-shadow:0 0 0 1px #21ba45 inset!important;color:#21ba45!important}.ui.basic.positive.button:hover,.ui.basic.positive.buttons .button:hover{background:0 0!important;-webkit-box-shadow:0 0 0 1px #16ab39 inset!important;box-shadow:0 0 0 1px #16ab39 inset!important;color:#16ab39!important}.ui.basic.positive.button:focus,.ui.basic.positive.buttons .button:focus{background:0 0!important;-webkit-box-shadow:0 0 0 1px #0ea432 inset!important;box-shadow:0 0 0 1px #0ea432 inset!important;color:#16ab39!important}.ui.basic.positive.active.button,.ui.basic.positive.buttons .active.button{background:0 0!important;-webkit-box-shadow:0 0 0 1px #13ae38 inset!important;box-shadow:0 0 0 1px #13ae38 inset!important;color:#198f35!important}.ui.basic.positive.button:active,.ui.basic.positive.buttons .button:active{-webkit-box-shadow:0 0 0 1px #198f35 inset!important;box-shadow:0 0 0 1px #198f35 inset!important;color:#198f35!important}.ui.buttons:not(.vertical)>.basic.primary.button:not(:first-child){margin-left:-1px}.ui.negative.button,.ui.negative.buttons .button{background-color:#db2828;color:#fff;text-shadow:none;background-image:none}.ui.negative.button{-webkit-box-shadow:0 0 0 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.negative.button:hover,.ui.negative.buttons .button:hover{background-color:#d01919;color:#fff;text-shadow:none}.ui.negative.button:focus,.ui.negative.buttons .button:focus{background-color:#ca1010;color:#fff;text-shadow:none}.ui.negative.button:active,.ui.negative.buttons .button:active{background-color:#b21e1e;color:#fff;text-shadow:none}.ui.negative.active.button,.ui.negative.button .active.button:active,.ui.negative.buttons .active.button,.ui.negative.buttons .active.button:active{background-color:#d41515;color:#fff;text-shadow:none}.ui.basic.negative.button,.ui.basic.negative.buttons .button{-webkit-box-shadow:0 0 0 1px #db2828 inset!important;box-shadow:0 0 0 1px #db2828 inset!important;color:#db2828!important}.ui.basic.negative.button:hover,.ui.basic.negative.buttons .button:hover{background:0 0!important;-webkit-box-shadow:0 0 0 1px #d01919 inset!important;box-shadow:0 0 0 1px #d01919 inset!important;color:#d01919!important}.ui.basic.negative.button:focus,.ui.basic.negative.buttons .button:focus{background:0 0!important;-webkit-box-shadow:0 0 0 1px #ca1010 inset!important;box-shadow:0 0 0 1px #ca1010 inset!important;color:#d01919!important}.ui.basic.negative.active.button,.ui.basic.negative.buttons .active.button{background:0 0!important;-webkit-box-shadow:0 0 0 1px #d41515 inset!important;box-shadow:0 0 0 1px #d41515 inset!important;color:#b21e1e!important}.ui.basic.negative.button:active,.ui.basic.negative.buttons .button:active{-webkit-box-shadow:0 0 0 1px #b21e1e inset!important;box-shadow:0 0 0 1px #b21e1e inset!important;color:#b21e1e!important}.ui.buttons:not(.vertical)>.basic.primary.button:not(:first-child){margin-left:-1px}.ui.buttons{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;font-size:0;vertical-align:baseline;margin:0 .25em 0 0}.ui.buttons:not(.basic):not(.inverted){-webkit-box-shadow:none;box-shadow:none}.ui.buttons:after{content:".";display:block;height:0;clear:both;visibility:hidden}.ui.buttons .button{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;margin:0;border-radius:0;margin:0}.ui.buttons:not(.basic):not(.inverted)>.button,.ui.buttons>.ui.button:not(.basic):not(.inverted){-webkit-box-shadow:0 0 0 1px transparent inset,0 0 0 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 1px transparent inset,0 0 0 0 rgba(34,36,38,.15) inset}.ui.buttons .button:first-child{border-left:none;margin-left:0;border-top-left-radius:.28571429rem;border-bottom-left-radius:.28571429rem}.ui.buttons .button:last-child{border-top-right-radius:.28571429rem;border-bottom-right-radius:.28571429rem}.ui.vertical.buttons{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.ui.vertical.buttons .button{display:block;float:none;width:100%;margin:0;-webkit-box-shadow:none;box-shadow:none;border-radius:0}.ui.vertical.buttons .button:first-child{border-top-left-radius:.28571429rem;border-top-right-radius:.28571429rem}.ui.vertical.buttons .button:last-child{margin-bottom:0;border-bottom-left-radius:.28571429rem;border-bottom-right-radius:.28571429rem}.ui.vertical.buttons .button:only-child{border-radius:.28571429rem} \ No newline at end of file diff --git a/app/static/semantic/components/card.css b/app/static/semantic/components/card.css new file mode 100755 index 0000000..da7add2 --- /dev/null +++ b/app/static/semantic/components/card.css @@ -0,0 +1,997 @@ +/*! + * # Semantic UI 2.4.1 - Item + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */ + + +/******************************* + Standard +*******************************/ + + +/*-------------- + Card +---------------*/ + +.ui.cards > .card, +.ui.card { + max-width: 100%; + position: relative; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + width: 290px; + min-height: 0px; + background: #FFFFFF; + padding: 0em; + border: none; + border-radius: 0.28571429rem; + -webkit-box-shadow: 0px 1px 3px 0px #D4D4D5, 0px 0px 0px 1px #D4D4D5; + box-shadow: 0px 1px 3px 0px #D4D4D5, 0px 0px 0px 1px #D4D4D5; + -webkit-transition: -webkit-box-shadow 0.1s ease, -webkit-transform 0.1s ease; + transition: -webkit-box-shadow 0.1s ease, -webkit-transform 0.1s ease; + transition: box-shadow 0.1s ease, transform 0.1s ease; + transition: box-shadow 0.1s ease, transform 0.1s ease, -webkit-box-shadow 0.1s ease, -webkit-transform 0.1s ease; + z-index: ''; +} +.ui.card { + margin: 1em 0em; +} +.ui.cards > .card a, +.ui.card a { + cursor: pointer; +} +.ui.card:first-child { + margin-top: 0em; +} +.ui.card:last-child { + margin-bottom: 0em; +} + +/*-------------- + Cards +---------------*/ + +.ui.cards { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + margin: -0.875em -0.5em; + -ms-flex-wrap: wrap; + flex-wrap: wrap; +} +.ui.cards > .card { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + margin: 0.875em 0.5em; + float: none; +} + +/* Clearing */ +.ui.cards:after, +.ui.card:after { + display: block; + content: ' '; + height: 0px; + clear: both; + overflow: hidden; + visibility: hidden; +} + +/* Consecutive Card Groups Preserve Row Spacing */ +.ui.cards ~ .ui.cards { + margin-top: 0.875em; +} + +/*-------------- + Rounded Edges +---------------*/ + +.ui.cards > .card > :first-child, +.ui.card > :first-child { + border-radius: 0.28571429rem 0.28571429rem 0em 0em !important; + border-top: none !important; +} +.ui.cards > .card > :last-child, +.ui.card > :last-child { + border-radius: 0em 0em 0.28571429rem 0.28571429rem !important; +} +.ui.cards > .card > :only-child, +.ui.card > :only-child { + border-radius: 0.28571429rem !important; +} + +/*-------------- + Images +---------------*/ + +.ui.cards > .card > .image, +.ui.card > .image { + position: relative; + display: block; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + padding: 0em; + background: rgba(0, 0, 0, 0.05); +} +.ui.cards > .card > .image > img, +.ui.card > .image > img { + display: block; + width: 100%; + height: auto; + border-radius: inherit; +} +.ui.cards > .card > .image:not(.ui) > img, +.ui.card > .image:not(.ui) > img { + border: none; +} + +/*-------------- + Content +---------------*/ + +.ui.cards > .card > .content, +.ui.card > .content { + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + border: none; + border-top: 1px solid rgba(34, 36, 38, 0.1); + background: none; + margin: 0em; + padding: 1em 1em; + -webkit-box-shadow: none; + box-shadow: none; + font-size: 1em; + border-radius: 0em; +} +.ui.cards > .card > .content:after, +.ui.card > .content:after { + display: block; + content: ' '; + height: 0px; + clear: both; + overflow: hidden; + visibility: hidden; +} +.ui.cards > .card > .content > .header, +.ui.card > .content > .header { + display: block; + margin: ''; + font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif; + color: rgba(0, 0, 0, 0.85); +} + +/* Default Header Size */ +.ui.cards > .card > .content > .header:not(.ui), +.ui.card > .content > .header:not(.ui) { + font-weight: bold; + font-size: 1.28571429em; + margin-top: -0.21425em; + line-height: 1.28571429em; +} +.ui.cards > .card > .content > .meta + .description, +.ui.cards > .card > .content > .header + .description, +.ui.card > .content > .meta + .description, +.ui.card > .content > .header + .description { + margin-top: 0.5em; +} + +/*---------------- + Floated Content +-----------------*/ + +.ui.cards > .card [class*="left floated"], +.ui.card [class*="left floated"] { + float: left; +} +.ui.cards > .card [class*="right floated"], +.ui.card [class*="right floated"] { + float: right; +} + +/*-------------- + Aligned +---------------*/ + +.ui.cards > .card [class*="left aligned"], +.ui.card [class*="left aligned"] { + text-align: left; +} +.ui.cards > .card [class*="center aligned"], +.ui.card [class*="center aligned"] { + text-align: center; +} +.ui.cards > .card [class*="right aligned"], +.ui.card [class*="right aligned"] { + text-align: right; +} + +/*-------------- + Content Image +---------------*/ + +.ui.cards > .card .content img, +.ui.card .content img { + display: inline-block; + vertical-align: middle; + width: ''; +} +.ui.cards > .card img.avatar, +.ui.cards > .card .avatar img, +.ui.card img.avatar, +.ui.card .avatar img { + width: 2em; + height: 2em; + border-radius: 500rem; +} + +/*-------------- + Description +---------------*/ + +.ui.cards > .card > .content > .description, +.ui.card > .content > .description { + clear: both; + color: rgba(0, 0, 0, 0.68); +} + +/*-------------- + Paragraph +---------------*/ + +.ui.cards > .card > .content p, +.ui.card > .content p { + margin: 0em 0em 0.5em; +} +.ui.cards > .card > .content p:last-child, +.ui.card > .content p:last-child { + margin-bottom: 0em; +} + +/*-------------- + Meta +---------------*/ + +.ui.cards > .card .meta, +.ui.card .meta { + font-size: 1em; + color: rgba(0, 0, 0, 0.4); +} +.ui.cards > .card .meta *, +.ui.card .meta * { + margin-right: 0.3em; +} +.ui.cards > .card .meta :last-child, +.ui.card .meta :last-child { + margin-right: 0em; +} +.ui.cards > .card .meta [class*="right floated"], +.ui.card .meta [class*="right floated"] { + margin-right: 0em; + margin-left: 0.3em; +} + +/*-------------- + Links +---------------*/ + + +/* Generic */ +.ui.cards > .card > .content a:not(.ui), +.ui.card > .content a:not(.ui) { + color: ''; + -webkit-transition: color 0.1s ease; + transition: color 0.1s ease; +} +.ui.cards > .card > .content a:not(.ui):hover, +.ui.card > .content a:not(.ui):hover { + color: ''; +} + +/* Header */ +.ui.cards > .card > .content > a.header, +.ui.card > .content > a.header { + color: rgba(0, 0, 0, 0.85); +} +.ui.cards > .card > .content > a.header:hover, +.ui.card > .content > a.header:hover { + color: #1e70bf; +} + +/* Meta */ +.ui.cards > .card .meta > a:not(.ui), +.ui.card .meta > a:not(.ui) { + color: rgba(0, 0, 0, 0.4); +} +.ui.cards > .card .meta > a:not(.ui):hover, +.ui.card .meta > a:not(.ui):hover { + color: rgba(0, 0, 0, 0.87); +} + +/*-------------- + Buttons +---------------*/ + +.ui.cards > .card > .buttons, +.ui.card > .buttons, +.ui.cards > .card > .button, +.ui.card > .button { + margin: 0px -1px; + width: calc(100% + 2px ); +} + +/*-------------- + Dimmer +---------------*/ + +.ui.cards > .card .dimmer, +.ui.card .dimmer { + background-color: ''; + z-index: 10; +} + +/*-------------- + Labels +---------------*/ + + +/*-----Star----- */ + + +/* Icon */ +.ui.cards > .card > .content .star.icon, +.ui.card > .content .star.icon { + cursor: pointer; + opacity: 0.75; + -webkit-transition: color 0.1s ease; + transition: color 0.1s ease; +} +.ui.cards > .card > .content .star.icon:hover, +.ui.card > .content .star.icon:hover { + opacity: 1; + color: #FFB70A; +} +.ui.cards > .card > .content .active.star.icon, +.ui.card > .content .active.star.icon { + color: #FFE623; +} + +/*-----Like----- */ + + +/* Icon */ +.ui.cards > .card > .content .like.icon, +.ui.card > .content .like.icon { + cursor: pointer; + opacity: 0.75; + -webkit-transition: color 0.1s ease; + transition: color 0.1s ease; +} +.ui.cards > .card > .content .like.icon:hover, +.ui.card > .content .like.icon:hover { + opacity: 1; + color: #FF2733; +} +.ui.cards > .card > .content .active.like.icon, +.ui.card > .content .active.like.icon { + color: #FF2733; +} + +/*---------------- + Extra Content +-----------------*/ + +.ui.cards > .card > .extra, +.ui.card > .extra { + max-width: 100%; + min-height: 0em !important; + -webkit-box-flex: 0; + -ms-flex-positive: 0; + flex-grow: 0; + border-top: 1px solid rgba(0, 0, 0, 0.05) !important; + position: static; + background: none; + width: auto; + margin: 0em 0em; + padding: 0.75em 1em; + top: 0em; + left: 0em; + color: rgba(0, 0, 0, 0.4); + -webkit-box-shadow: none; + box-shadow: none; + -webkit-transition: color 0.1s ease; + transition: color 0.1s ease; +} +.ui.cards > .card > .extra a:not(.ui), +.ui.card > .extra a:not(.ui) { + color: rgba(0, 0, 0, 0.4); +} +.ui.cards > .card > .extra a:not(.ui):hover, +.ui.card > .extra a:not(.ui):hover { + color: #1e70bf; +} + + +/******************************* + Variations +*******************************/ + + +/*------------------- + Raised +--------------------*/ + +.ui.raised.cards > .card, +.ui.raised.card { + -webkit-box-shadow: 0px 0px 0px 1px #D4D4D5, 0px 2px 4px 0px rgba(34, 36, 38, 0.12), 0px 2px 10px 0px rgba(34, 36, 38, 0.15); + box-shadow: 0px 0px 0px 1px #D4D4D5, 0px 2px 4px 0px rgba(34, 36, 38, 0.12), 0px 2px 10px 0px rgba(34, 36, 38, 0.15); +} +.ui.raised.cards a.card:hover, +.ui.link.cards .raised.card:hover, +a.ui.raised.card:hover, +.ui.link.raised.card:hover { + -webkit-box-shadow: 0px 0px 0px 1px #D4D4D5, 0px 2px 4px 0px rgba(34, 36, 38, 0.15), 0px 2px 10px 0px rgba(34, 36, 38, 0.25); + box-shadow: 0px 0px 0px 1px #D4D4D5, 0px 2px 4px 0px rgba(34, 36, 38, 0.15), 0px 2px 10px 0px rgba(34, 36, 38, 0.25); +} +.ui.raised.cards > .card, +.ui.raised.card { + -webkit-box-shadow: 0px 0px 0px 1px #D4D4D5, 0px 2px 4px 0px rgba(34, 36, 38, 0.12), 0px 2px 10px 0px rgba(34, 36, 38, 0.15); + box-shadow: 0px 0px 0px 1px #D4D4D5, 0px 2px 4px 0px rgba(34, 36, 38, 0.12), 0px 2px 10px 0px rgba(34, 36, 38, 0.15); +} + +/*------------------- + Centered +--------------------*/ + +.ui.centered.cards { + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; +} +.ui.centered.card { + margin-left: auto; + margin-right: auto; +} + +/*------------------- + Fluid +--------------------*/ + +.ui.fluid.card { + width: 100%; + max-width: 9999px; +} + +/*------------------- + Link +--------------------*/ + +.ui.cards a.card, +.ui.link.cards .card, +a.ui.card, +.ui.link.card { + -webkit-transform: none; + transform: none; +} +.ui.cards a.card:hover, +.ui.link.cards .card:hover, +a.ui.card:hover, +.ui.link.card:hover { + cursor: pointer; + z-index: 5; + background: #FFFFFF; + border: none; + -webkit-box-shadow: 0px 1px 3px 0px #BCBDBD, 0px 0px 0px 1px #D4D4D5; + box-shadow: 0px 1px 3px 0px #BCBDBD, 0px 0px 0px 1px #D4D4D5; + -webkit-transform: translateY(-3px); + transform: translateY(-3px); +} + +/*------------------- + Colors +--------------------*/ + + +/* Red */ +.ui.red.cards > .card, +.ui.cards > .red.card, +.ui.red.card { + -webkit-box-shadow: 0px 0px 0px 1px #D4D4D5, 0px 2px 0px 0px #DB2828, 0px 1px 3px 0px #D4D4D5; + box-shadow: 0px 0px 0px 1px #D4D4D5, 0px 2px 0px 0px #DB2828, 0px 1px 3px 0px #D4D4D5; +} +.ui.red.cards > .card:hover, +.ui.cards > .red.card:hover, +.ui.red.card:hover { + -webkit-box-shadow: 0px 0px 0px 1px #D4D4D5, 0px 2px 0px 0px #d01919, 0px 1px 3px 0px #BCBDBD; + box-shadow: 0px 0px 0px 1px #D4D4D5, 0px 2px 0px 0px #d01919, 0px 1px 3px 0px #BCBDBD; +} + +/* Orange */ +.ui.orange.cards > .card, +.ui.cards > .orange.card, +.ui.orange.card { + -webkit-box-shadow: 0px 0px 0px 1px #D4D4D5, 0px 2px 0px 0px #F2711C, 0px 1px 3px 0px #D4D4D5; + box-shadow: 0px 0px 0px 1px #D4D4D5, 0px 2px 0px 0px #F2711C, 0px 1px 3px 0px #D4D4D5; +} +.ui.orange.cards > .card:hover, +.ui.cards > .orange.card:hover, +.ui.orange.card:hover { + -webkit-box-shadow: 0px 0px 0px 1px #D4D4D5, 0px 2px 0px 0px #f26202, 0px 1px 3px 0px #BCBDBD; + box-shadow: 0px 0px 0px 1px #D4D4D5, 0px 2px 0px 0px #f26202, 0px 1px 3px 0px #BCBDBD; +} + +/* Yellow */ +.ui.yellow.cards > .card, +.ui.cards > .yellow.card, +.ui.yellow.card { + -webkit-box-shadow: 0px 0px 0px 1px #D4D4D5, 0px 2px 0px 0px #FBBD08, 0px 1px 3px 0px #D4D4D5; + box-shadow: 0px 0px 0px 1px #D4D4D5, 0px 2px 0px 0px #FBBD08, 0px 1px 3px 0px #D4D4D5; +} +.ui.yellow.cards > .card:hover, +.ui.cards > .yellow.card:hover, +.ui.yellow.card:hover { + -webkit-box-shadow: 0px 0px 0px 1px #D4D4D5, 0px 2px 0px 0px #eaae00, 0px 1px 3px 0px #BCBDBD; + box-shadow: 0px 0px 0px 1px #D4D4D5, 0px 2px 0px 0px #eaae00, 0px 1px 3px 0px #BCBDBD; +} + +/* Olive */ +.ui.olive.cards > .card, +.ui.cards > .olive.card, +.ui.olive.card { + -webkit-box-shadow: 0px 0px 0px 1px #D4D4D5, 0px 2px 0px 0px #B5CC18, 0px 1px 3px 0px #D4D4D5; + box-shadow: 0px 0px 0px 1px #D4D4D5, 0px 2px 0px 0px #B5CC18, 0px 1px 3px 0px #D4D4D5; +} +.ui.olive.cards > .card:hover, +.ui.cards > .olive.card:hover, +.ui.olive.card:hover { + -webkit-box-shadow: 0px 0px 0px 1px #D4D4D5, 0px 2px 0px 0px #a7bd0d, 0px 1px 3px 0px #BCBDBD; + box-shadow: 0px 0px 0px 1px #D4D4D5, 0px 2px 0px 0px #a7bd0d, 0px 1px 3px 0px #BCBDBD; +} + +/* Green */ +.ui.green.cards > .card, +.ui.cards > .green.card, +.ui.green.card { + -webkit-box-shadow: 0px 0px 0px 1px #D4D4D5, 0px 2px 0px 0px #21BA45, 0px 1px 3px 0px #D4D4D5; + box-shadow: 0px 0px 0px 1px #D4D4D5, 0px 2px 0px 0px #21BA45, 0px 1px 3px 0px #D4D4D5; +} +.ui.green.cards > .card:hover, +.ui.cards > .green.card:hover, +.ui.green.card:hover { + -webkit-box-shadow: 0px 0px 0px 1px #D4D4D5, 0px 2px 0px 0px #16ab39, 0px 1px 3px 0px #BCBDBD; + box-shadow: 0px 0px 0px 1px #D4D4D5, 0px 2px 0px 0px #16ab39, 0px 1px 3px 0px #BCBDBD; +} + +/* Teal */ +.ui.teal.cards > .card, +.ui.cards > .teal.card, +.ui.teal.card { + -webkit-box-shadow: 0px 0px 0px 1px #D4D4D5, 0px 2px 0px 0px #00B5AD, 0px 1px 3px 0px #D4D4D5; + box-shadow: 0px 0px 0px 1px #D4D4D5, 0px 2px 0px 0px #00B5AD, 0px 1px 3px 0px #D4D4D5; +} +.ui.teal.cards > .card:hover, +.ui.cards > .teal.card:hover, +.ui.teal.card:hover { + -webkit-box-shadow: 0px 0px 0px 1px #D4D4D5, 0px 2px 0px 0px #009c95, 0px 1px 3px 0px #BCBDBD; + box-shadow: 0px 0px 0px 1px #D4D4D5, 0px 2px 0px 0px #009c95, 0px 1px 3px 0px #BCBDBD; +} + +/* Blue */ +.ui.blue.cards > .card, +.ui.cards > .blue.card, +.ui.blue.card { + -webkit-box-shadow: 0px 0px 0px 1px #D4D4D5, 0px 2px 0px 0px #2185D0, 0px 1px 3px 0px #D4D4D5; + box-shadow: 0px 0px 0px 1px #D4D4D5, 0px 2px 0px 0px #2185D0, 0px 1px 3px 0px #D4D4D5; +} +.ui.blue.cards > .card:hover, +.ui.cards > .blue.card:hover, +.ui.blue.card:hover { + -webkit-box-shadow: 0px 0px 0px 1px #D4D4D5, 0px 2px 0px 0px #1678c2, 0px 1px 3px 0px #BCBDBD; + box-shadow: 0px 0px 0px 1px #D4D4D5, 0px 2px 0px 0px #1678c2, 0px 1px 3px 0px #BCBDBD; +} + +/* Violet */ +.ui.violet.cards > .card, +.ui.cards > .violet.card, +.ui.violet.card { + -webkit-box-shadow: 0px 0px 0px 1px #D4D4D5, 0px 2px 0px 0px #6435C9, 0px 1px 3px 0px #D4D4D5; + box-shadow: 0px 0px 0px 1px #D4D4D5, 0px 2px 0px 0px #6435C9, 0px 1px 3px 0px #D4D4D5; +} +.ui.violet.cards > .card:hover, +.ui.cards > .violet.card:hover, +.ui.violet.card:hover { + -webkit-box-shadow: 0px 0px 0px 1px #D4D4D5, 0px 2px 0px 0px #5829bb, 0px 1px 3px 0px #BCBDBD; + box-shadow: 0px 0px 0px 1px #D4D4D5, 0px 2px 0px 0px #5829bb, 0px 1px 3px 0px #BCBDBD; +} + +/* Purple */ +.ui.purple.cards > .card, +.ui.cards > .purple.card, +.ui.purple.card { + -webkit-box-shadow: 0px 0px 0px 1px #D4D4D5, 0px 2px 0px 0px #A333C8, 0px 1px 3px 0px #D4D4D5; + box-shadow: 0px 0px 0px 1px #D4D4D5, 0px 2px 0px 0px #A333C8, 0px 1px 3px 0px #D4D4D5; +} +.ui.purple.cards > .card:hover, +.ui.cards > .purple.card:hover, +.ui.purple.card:hover { + -webkit-box-shadow: 0px 0px 0px 1px #D4D4D5, 0px 2px 0px 0px #9627ba, 0px 1px 3px 0px #BCBDBD; + box-shadow: 0px 0px 0px 1px #D4D4D5, 0px 2px 0px 0px #9627ba, 0px 1px 3px 0px #BCBDBD; +} + +/* Pink */ +.ui.pink.cards > .card, +.ui.cards > .pink.card, +.ui.pink.card { + -webkit-box-shadow: 0px 0px 0px 1px #D4D4D5, 0px 2px 0px 0px #E03997, 0px 1px 3px 0px #D4D4D5; + box-shadow: 0px 0px 0px 1px #D4D4D5, 0px 2px 0px 0px #E03997, 0px 1px 3px 0px #D4D4D5; +} +.ui.pink.cards > .card:hover, +.ui.cards > .pink.card:hover, +.ui.pink.card:hover { + -webkit-box-shadow: 0px 0px 0px 1px #D4D4D5, 0px 2px 0px 0px #e61a8d, 0px 1px 3px 0px #BCBDBD; + box-shadow: 0px 0px 0px 1px #D4D4D5, 0px 2px 0px 0px #e61a8d, 0px 1px 3px 0px #BCBDBD; +} + +/* Brown */ +.ui.brown.cards > .card, +.ui.cards > .brown.card, +.ui.brown.card { + -webkit-box-shadow: 0px 0px 0px 1px #D4D4D5, 0px 2px 0px 0px #A5673F, 0px 1px 3px 0px #D4D4D5; + box-shadow: 0px 0px 0px 1px #D4D4D5, 0px 2px 0px 0px #A5673F, 0px 1px 3px 0px #D4D4D5; +} +.ui.brown.cards > .card:hover, +.ui.cards > .brown.card:hover, +.ui.brown.card:hover { + -webkit-box-shadow: 0px 0px 0px 1px #D4D4D5, 0px 2px 0px 0px #975b33, 0px 1px 3px 0px #BCBDBD; + box-shadow: 0px 0px 0px 1px #D4D4D5, 0px 2px 0px 0px #975b33, 0px 1px 3px 0px #BCBDBD; +} + +/* Grey */ +.ui.grey.cards > .card, +.ui.cards > .grey.card, +.ui.grey.card { + -webkit-box-shadow: 0px 0px 0px 1px #D4D4D5, 0px 2px 0px 0px #767676, 0px 1px 3px 0px #D4D4D5; + box-shadow: 0px 0px 0px 1px #D4D4D5, 0px 2px 0px 0px #767676, 0px 1px 3px 0px #D4D4D5; +} +.ui.grey.cards > .card:hover, +.ui.cards > .grey.card:hover, +.ui.grey.card:hover { + -webkit-box-shadow: 0px 0px 0px 1px #D4D4D5, 0px 2px 0px 0px #838383, 0px 1px 3px 0px #BCBDBD; + box-shadow: 0px 0px 0px 1px #D4D4D5, 0px 2px 0px 0px #838383, 0px 1px 3px 0px #BCBDBD; +} + +/* Black */ +.ui.black.cards > .card, +.ui.cards > .black.card, +.ui.black.card { + -webkit-box-shadow: 0px 0px 0px 1px #D4D4D5, 0px 2px 0px 0px #1B1C1D, 0px 1px 3px 0px #D4D4D5; + box-shadow: 0px 0px 0px 1px #D4D4D5, 0px 2px 0px 0px #1B1C1D, 0px 1px 3px 0px #D4D4D5; +} +.ui.black.cards > .card:hover, +.ui.cards > .black.card:hover, +.ui.black.card:hover { + -webkit-box-shadow: 0px 0px 0px 1px #D4D4D5, 0px 2px 0px 0px #27292a, 0px 1px 3px 0px #BCBDBD; + box-shadow: 0px 0px 0px 1px #D4D4D5, 0px 2px 0px 0px #27292a, 0px 1px 3px 0px #BCBDBD; +} + +/*-------------- + Card Count +---------------*/ + +.ui.one.cards { + margin-left: 0em; + margin-right: 0em; +} +.ui.one.cards > .card { + width: 100%; +} +.ui.two.cards { + margin-left: -1em; + margin-right: -1em; +} +.ui.two.cards > .card { + width: calc( 50% - 2em ); + margin-left: 1em; + margin-right: 1em; +} +.ui.three.cards { + margin-left: -1em; + margin-right: -1em; +} +.ui.three.cards > .card { + width: calc( 33.33333333% - 2em ); + margin-left: 1em; + margin-right: 1em; +} +.ui.four.cards { + margin-left: -0.75em; + margin-right: -0.75em; +} +.ui.four.cards > .card { + width: calc( 25% - 1.5em ); + margin-left: 0.75em; + margin-right: 0.75em; +} +.ui.five.cards { + margin-left: -0.75em; + margin-right: -0.75em; +} +.ui.five.cards > .card { + width: calc( 20% - 1.5em ); + margin-left: 0.75em; + margin-right: 0.75em; +} +.ui.six.cards { + margin-left: -0.75em; + margin-right: -0.75em; +} +.ui.six.cards > .card { + width: calc( 16.66666667% - 1.5em ); + margin-left: 0.75em; + margin-right: 0.75em; +} +.ui.seven.cards { + margin-left: -0.5em; + margin-right: -0.5em; +} +.ui.seven.cards > .card { + width: calc( 14.28571429% - 1em ); + margin-left: 0.5em; + margin-right: 0.5em; +} +.ui.eight.cards { + margin-left: -0.5em; + margin-right: -0.5em; +} +.ui.eight.cards > .card { + width: calc( 12.5% - 1em ); + margin-left: 0.5em; + margin-right: 0.5em; + font-size: 11px; +} +.ui.nine.cards { + margin-left: -0.5em; + margin-right: -0.5em; +} +.ui.nine.cards > .card { + width: calc( 11.11111111% - 1em ); + margin-left: 0.5em; + margin-right: 0.5em; + font-size: 10px; +} +.ui.ten.cards { + margin-left: -0.5em; + margin-right: -0.5em; +} +.ui.ten.cards > .card { + width: calc( 10% - 1em ); + margin-left: 0.5em; + margin-right: 0.5em; +} + +/*------------------- + Doubling +--------------------*/ + + +/* Mobile Only */ +@media only screen and (max-width: 767px) { + .ui.two.doubling.cards { + margin-left: 0em; + margin-right: 0em; + } + .ui.two.doubling.cards > .card { + width: 100%; + margin-left: 0em; + margin-right: 0em; + } + .ui.three.doubling.cards { + margin-left: -1em; + margin-right: -1em; + } + .ui.three.doubling.cards > .card { + width: calc( 50% - 2em ); + margin-left: 1em; + margin-right: 1em; + } + .ui.four.doubling.cards { + margin-left: -1em; + margin-right: -1em; + } + .ui.four.doubling.cards > .card { + width: calc( 50% - 2em ); + margin-left: 1em; + margin-right: 1em; + } + .ui.five.doubling.cards { + margin-left: -1em; + margin-right: -1em; + } + .ui.five.doubling.cards > .card { + width: calc( 50% - 2em ); + margin-left: 1em; + margin-right: 1em; + } + .ui.six.doubling.cards { + margin-left: -1em; + margin-right: -1em; + } + .ui.six.doubling.cards > .card { + width: calc( 50% - 2em ); + margin-left: 1em; + margin-right: 1em; + } + .ui.seven.doubling.cards { + margin-left: -1em; + margin-right: -1em; + } + .ui.seven.doubling.cards > .card { + width: calc( 33.33333333% - 2em ); + margin-left: 1em; + margin-right: 1em; + } + .ui.eight.doubling.cards { + margin-left: -1em; + margin-right: -1em; + } + .ui.eight.doubling.cards > .card { + width: calc( 33.33333333% - 2em ); + margin-left: 1em; + margin-right: 1em; + } + .ui.nine.doubling.cards { + margin-left: -1em; + margin-right: -1em; + } + .ui.nine.doubling.cards > .card { + width: calc( 33.33333333% - 2em ); + margin-left: 1em; + margin-right: 1em; + } + .ui.ten.doubling.cards { + margin-left: -1em; + margin-right: -1em; + } + .ui.ten.doubling.cards > .card { + width: calc( 33.33333333% - 2em ); + margin-left: 1em; + margin-right: 1em; + } +} + +/* Tablet Only */ +@media only screen and (min-width: 768px) and (max-width: 991px) { + .ui.two.doubling.cards { + margin-left: 0em; + margin-right: 0em; + } + .ui.two.doubling.cards > .card { + width: 100%; + margin-left: 0em; + margin-right: 0em; + } + .ui.three.doubling.cards { + margin-left: -1em; + margin-right: -1em; + } + .ui.three.doubling.cards > .card { + width: calc( 50% - 2em ); + margin-left: 1em; + margin-right: 1em; + } + .ui.four.doubling.cards { + margin-left: -1em; + margin-right: -1em; + } + .ui.four.doubling.cards > .card { + width: calc( 50% - 2em ); + margin-left: 1em; + margin-right: 1em; + } + .ui.five.doubling.cards { + margin-left: -1em; + margin-right: -1em; + } + .ui.five.doubling.cards > .card { + width: calc( 33.33333333% - 2em ); + margin-left: 1em; + margin-right: 1em; + } + .ui.six.doubling.cards { + margin-left: -1em; + margin-right: -1em; + } + .ui.six.doubling.cards > .card { + width: calc( 33.33333333% - 2em ); + margin-left: 1em; + margin-right: 1em; + } + .ui.eight.doubling.cards { + margin-left: -1em; + margin-right: -1em; + } + .ui.eight.doubling.cards > .card { + width: calc( 33.33333333% - 2em ); + margin-left: 1em; + margin-right: 1em; + } + .ui.eight.doubling.cards { + margin-left: -0.75em; + margin-right: -0.75em; + } + .ui.eight.doubling.cards > .card { + width: calc( 25% - 1.5em ); + margin-left: 0.75em; + margin-right: 0.75em; + } + .ui.nine.doubling.cards { + margin-left: -0.75em; + margin-right: -0.75em; + } + .ui.nine.doubling.cards > .card { + width: calc( 25% - 1.5em ); + margin-left: 0.75em; + margin-right: 0.75em; + } + .ui.ten.doubling.cards { + margin-left: -0.75em; + margin-right: -0.75em; + } + .ui.ten.doubling.cards > .card { + width: calc( 20% - 1.5em ); + margin-left: 0.75em; + margin-right: 0.75em; + } +} + +/*------------------- + Stackable +--------------------*/ + +@media only screen and (max-width: 767px) { + .ui.stackable.cards { + display: block !important; + } + .ui.stackable.cards .card:first-child { + margin-top: 0em !important; + } + .ui.stackable.cards > .card { + display: block !important; + height: auto !important; + margin: 1em 1em; + padding: 0 !important; + width: calc( 100% - 2em ) !important; + } +} + +/*-------------- + Size +---------------*/ + +.ui.cards > .card { + font-size: 1em; +} + + +/******************************* + Theme Overrides +*******************************/ + + + +/******************************* + User Variable Overrides +*******************************/ + diff --git a/app/static/semantic/components/card.min.css b/app/static/semantic/components/card.min.css new file mode 100755 index 0000000..573b260 --- /dev/null +++ b/app/static/semantic/components/card.min.css @@ -0,0 +1,9 @@ +/*! + * # Semantic UI 2.4.1 - Item + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */.ui.card,.ui.cards>.card{max-width:100%;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:290px;min-height:0;background:#fff;padding:0;border:none;border-radius:.28571429rem;-webkit-box-shadow:0 1px 3px 0 #d4d4d5,0 0 0 1px #d4d4d5;box-shadow:0 1px 3px 0 #d4d4d5,0 0 0 1px #d4d4d5;-webkit-transition:-webkit-box-shadow .1s ease,-webkit-transform .1s ease;transition:-webkit-box-shadow .1s ease,-webkit-transform .1s ease;transition:box-shadow .1s ease,transform .1s ease;transition:box-shadow .1s ease,transform .1s ease,-webkit-box-shadow .1s ease,-webkit-transform .1s ease;z-index:''}.ui.card{margin:1em 0}.ui.card a,.ui.cards>.card a{cursor:pointer}.ui.card:first-child{margin-top:0}.ui.card:last-child{margin-bottom:0}.ui.cards{display:-webkit-box;display:-ms-flexbox;display:flex;margin:-.875em -.5em;-ms-flex-wrap:wrap;flex-wrap:wrap}.ui.cards>.card{display:-webkit-box;display:-ms-flexbox;display:flex;margin:.875em .5em;float:none}.ui.card:after,.ui.cards:after{display:block;content:' ';height:0;clear:both;overflow:hidden;visibility:hidden}.ui.cards~.ui.cards{margin-top:.875em}.ui.card>:first-child,.ui.cards>.card>:first-child{border-radius:.28571429rem .28571429rem 0 0!important;border-top:none!important}.ui.card>:last-child,.ui.cards>.card>:last-child{border-radius:0 0 .28571429rem .28571429rem!important}.ui.card>:only-child,.ui.cards>.card>:only-child{border-radius:.28571429rem!important}.ui.card>.image,.ui.cards>.card>.image{position:relative;display:block;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;padding:0;background:rgba(0,0,0,.05)}.ui.card>.image>img,.ui.cards>.card>.image>img{display:block;width:100%;height:auto;border-radius:inherit}.ui.card>.image:not(.ui)>img,.ui.cards>.card>.image:not(.ui)>img{border:none}.ui.card>.content,.ui.cards>.card>.content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;border:none;border-top:1px solid rgba(34,36,38,.1);background:0 0;margin:0;padding:1em 1em;-webkit-box-shadow:none;box-shadow:none;font-size:1em;border-radius:0}.ui.card>.content:after,.ui.cards>.card>.content:after{display:block;content:' ';height:0;clear:both;overflow:hidden;visibility:hidden}.ui.card>.content>.header,.ui.cards>.card>.content>.header{display:block;margin:'';font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;color:rgba(0,0,0,.85)}.ui.card>.content>.header:not(.ui),.ui.cards>.card>.content>.header:not(.ui){font-weight:700;font-size:1.28571429em;margin-top:-.21425em;line-height:1.28571429em}.ui.card>.content>.header+.description,.ui.card>.content>.meta+.description,.ui.cards>.card>.content>.header+.description,.ui.cards>.card>.content>.meta+.description{margin-top:.5em}.ui.card [class*="left floated"],.ui.cards>.card [class*="left floated"]{float:left}.ui.card [class*="right floated"],.ui.cards>.card [class*="right floated"]{float:right}.ui.card [class*="left aligned"],.ui.cards>.card [class*="left aligned"]{text-align:left}.ui.card [class*="center aligned"],.ui.cards>.card [class*="center aligned"]{text-align:center}.ui.card [class*="right aligned"],.ui.cards>.card [class*="right aligned"]{text-align:right}.ui.card .content img,.ui.cards>.card .content img{display:inline-block;vertical-align:middle;width:''}.ui.card .avatar img,.ui.card img.avatar,.ui.cards>.card .avatar img,.ui.cards>.card img.avatar{width:2em;height:2em;border-radius:500rem}.ui.card>.content>.description,.ui.cards>.card>.content>.description{clear:both;color:rgba(0,0,0,.68)}.ui.card>.content p,.ui.cards>.card>.content p{margin:0 0 .5em}.ui.card>.content p:last-child,.ui.cards>.card>.content p:last-child{margin-bottom:0}.ui.card .meta,.ui.cards>.card .meta{font-size:1em;color:rgba(0,0,0,.4)}.ui.card .meta *,.ui.cards>.card .meta *{margin-right:.3em}.ui.card .meta :last-child,.ui.cards>.card .meta :last-child{margin-right:0}.ui.card .meta [class*="right floated"],.ui.cards>.card .meta [class*="right floated"]{margin-right:0;margin-left:.3em}.ui.card>.content a:not(.ui),.ui.cards>.card>.content a:not(.ui){color:'';-webkit-transition:color .1s ease;transition:color .1s ease}.ui.card>.content a:not(.ui):hover,.ui.cards>.card>.content a:not(.ui):hover{color:''}.ui.card>.content>a.header,.ui.cards>.card>.content>a.header{color:rgba(0,0,0,.85)}.ui.card>.content>a.header:hover,.ui.cards>.card>.content>a.header:hover{color:#1e70bf}.ui.card .meta>a:not(.ui),.ui.cards>.card .meta>a:not(.ui){color:rgba(0,0,0,.4)}.ui.card .meta>a:not(.ui):hover,.ui.cards>.card .meta>a:not(.ui):hover{color:rgba(0,0,0,.87)}.ui.card>.button,.ui.card>.buttons,.ui.cards>.card>.button,.ui.cards>.card>.buttons{margin:0 -1px;width:calc(100% + 2px)}.ui.card .dimmer,.ui.cards>.card .dimmer{background-color:'';z-index:10}.ui.card>.content .star.icon,.ui.cards>.card>.content .star.icon{cursor:pointer;opacity:.75;-webkit-transition:color .1s ease;transition:color .1s ease}.ui.card>.content .star.icon:hover,.ui.cards>.card>.content .star.icon:hover{opacity:1;color:#ffb70a}.ui.card>.content .active.star.icon,.ui.cards>.card>.content .active.star.icon{color:#ffe623}.ui.card>.content .like.icon,.ui.cards>.card>.content .like.icon{cursor:pointer;opacity:.75;-webkit-transition:color .1s ease;transition:color .1s ease}.ui.card>.content .like.icon:hover,.ui.cards>.card>.content .like.icon:hover{opacity:1;color:#ff2733}.ui.card>.content .active.like.icon,.ui.cards>.card>.content .active.like.icon{color:#ff2733}.ui.card>.extra,.ui.cards>.card>.extra{max-width:100%;min-height:0!important;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;border-top:1px solid rgba(0,0,0,.05)!important;position:static;background:0 0;width:auto;margin:0 0;padding:.75em 1em;top:0;left:0;color:rgba(0,0,0,.4);-webkit-box-shadow:none;box-shadow:none;-webkit-transition:color .1s ease;transition:color .1s ease}.ui.card>.extra a:not(.ui),.ui.cards>.card>.extra a:not(.ui){color:rgba(0,0,0,.4)}.ui.card>.extra a:not(.ui):hover,.ui.cards>.card>.extra a:not(.ui):hover{color:#1e70bf}.ui.raised.card,.ui.raised.cards>.card{-webkit-box-shadow:0 0 0 1px #d4d4d5,0 2px 4px 0 rgba(34,36,38,.12),0 2px 10px 0 rgba(34,36,38,.15);box-shadow:0 0 0 1px #d4d4d5,0 2px 4px 0 rgba(34,36,38,.12),0 2px 10px 0 rgba(34,36,38,.15)}.ui.link.cards .raised.card:hover,.ui.link.raised.card:hover,.ui.raised.cards a.card:hover,a.ui.raised.card:hover{-webkit-box-shadow:0 0 0 1px #d4d4d5,0 2px 4px 0 rgba(34,36,38,.15),0 2px 10px 0 rgba(34,36,38,.25);box-shadow:0 0 0 1px #d4d4d5,0 2px 4px 0 rgba(34,36,38,.15),0 2px 10px 0 rgba(34,36,38,.25)}.ui.raised.card,.ui.raised.cards>.card{-webkit-box-shadow:0 0 0 1px #d4d4d5,0 2px 4px 0 rgba(34,36,38,.12),0 2px 10px 0 rgba(34,36,38,.15);box-shadow:0 0 0 1px #d4d4d5,0 2px 4px 0 rgba(34,36,38,.12),0 2px 10px 0 rgba(34,36,38,.15)}.ui.centered.cards{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.ui.centered.card{margin-left:auto;margin-right:auto}.ui.fluid.card{width:100%;max-width:9999px}.ui.cards a.card,.ui.link.card,.ui.link.cards .card,a.ui.card{-webkit-transform:none;transform:none}.ui.cards a.card:hover,.ui.link.card:hover,.ui.link.cards .card:hover,a.ui.card:hover{cursor:pointer;z-index:5;background:#fff;border:none;-webkit-box-shadow:0 1px 3px 0 #bcbdbd,0 0 0 1px #d4d4d5;box-shadow:0 1px 3px 0 #bcbdbd,0 0 0 1px #d4d4d5;-webkit-transform:translateY(-3px);transform:translateY(-3px)}.ui.cards>.red.card,.ui.red.card,.ui.red.cards>.card{-webkit-box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #db2828,0 1px 3px 0 #d4d4d5;box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #db2828,0 1px 3px 0 #d4d4d5}.ui.cards>.red.card:hover,.ui.red.card:hover,.ui.red.cards>.card:hover{-webkit-box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #d01919,0 1px 3px 0 #bcbdbd;box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #d01919,0 1px 3px 0 #bcbdbd}.ui.cards>.orange.card,.ui.orange.card,.ui.orange.cards>.card{-webkit-box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #f2711c,0 1px 3px 0 #d4d4d5;box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #f2711c,0 1px 3px 0 #d4d4d5}.ui.cards>.orange.card:hover,.ui.orange.card:hover,.ui.orange.cards>.card:hover{-webkit-box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #f26202,0 1px 3px 0 #bcbdbd;box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #f26202,0 1px 3px 0 #bcbdbd}.ui.cards>.yellow.card,.ui.yellow.card,.ui.yellow.cards>.card{-webkit-box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #fbbd08,0 1px 3px 0 #d4d4d5;box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #fbbd08,0 1px 3px 0 #d4d4d5}.ui.cards>.yellow.card:hover,.ui.yellow.card:hover,.ui.yellow.cards>.card:hover{-webkit-box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #eaae00,0 1px 3px 0 #bcbdbd;box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #eaae00,0 1px 3px 0 #bcbdbd}.ui.cards>.olive.card,.ui.olive.card,.ui.olive.cards>.card{-webkit-box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #b5cc18,0 1px 3px 0 #d4d4d5;box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #b5cc18,0 1px 3px 0 #d4d4d5}.ui.cards>.olive.card:hover,.ui.olive.card:hover,.ui.olive.cards>.card:hover{-webkit-box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #a7bd0d,0 1px 3px 0 #bcbdbd;box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #a7bd0d,0 1px 3px 0 #bcbdbd}.ui.cards>.green.card,.ui.green.card,.ui.green.cards>.card{-webkit-box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #21ba45,0 1px 3px 0 #d4d4d5;box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #21ba45,0 1px 3px 0 #d4d4d5}.ui.cards>.green.card:hover,.ui.green.card:hover,.ui.green.cards>.card:hover{-webkit-box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #16ab39,0 1px 3px 0 #bcbdbd;box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #16ab39,0 1px 3px 0 #bcbdbd}.ui.cards>.teal.card,.ui.teal.card,.ui.teal.cards>.card{-webkit-box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #00b5ad,0 1px 3px 0 #d4d4d5;box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #00b5ad,0 1px 3px 0 #d4d4d5}.ui.cards>.teal.card:hover,.ui.teal.card:hover,.ui.teal.cards>.card:hover{-webkit-box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #009c95,0 1px 3px 0 #bcbdbd;box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #009c95,0 1px 3px 0 #bcbdbd}.ui.blue.card,.ui.blue.cards>.card,.ui.cards>.blue.card{-webkit-box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #2185d0,0 1px 3px 0 #d4d4d5;box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #2185d0,0 1px 3px 0 #d4d4d5}.ui.blue.card:hover,.ui.blue.cards>.card:hover,.ui.cards>.blue.card:hover{-webkit-box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #1678c2,0 1px 3px 0 #bcbdbd;box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #1678c2,0 1px 3px 0 #bcbdbd}.ui.cards>.violet.card,.ui.violet.card,.ui.violet.cards>.card{-webkit-box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #6435c9,0 1px 3px 0 #d4d4d5;box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #6435c9,0 1px 3px 0 #d4d4d5}.ui.cards>.violet.card:hover,.ui.violet.card:hover,.ui.violet.cards>.card:hover{-webkit-box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #5829bb,0 1px 3px 0 #bcbdbd;box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #5829bb,0 1px 3px 0 #bcbdbd}.ui.cards>.purple.card,.ui.purple.card,.ui.purple.cards>.card{-webkit-box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #a333c8,0 1px 3px 0 #d4d4d5;box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #a333c8,0 1px 3px 0 #d4d4d5}.ui.cards>.purple.card:hover,.ui.purple.card:hover,.ui.purple.cards>.card:hover{-webkit-box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #9627ba,0 1px 3px 0 #bcbdbd;box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #9627ba,0 1px 3px 0 #bcbdbd}.ui.cards>.pink.card,.ui.pink.card,.ui.pink.cards>.card{-webkit-box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #e03997,0 1px 3px 0 #d4d4d5;box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #e03997,0 1px 3px 0 #d4d4d5}.ui.cards>.pink.card:hover,.ui.pink.card:hover,.ui.pink.cards>.card:hover{-webkit-box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #e61a8d,0 1px 3px 0 #bcbdbd;box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #e61a8d,0 1px 3px 0 #bcbdbd}.ui.brown.card,.ui.brown.cards>.card,.ui.cards>.brown.card{-webkit-box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #a5673f,0 1px 3px 0 #d4d4d5;box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #a5673f,0 1px 3px 0 #d4d4d5}.ui.brown.card:hover,.ui.brown.cards>.card:hover,.ui.cards>.brown.card:hover{-webkit-box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #975b33,0 1px 3px 0 #bcbdbd;box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #975b33,0 1px 3px 0 #bcbdbd}.ui.cards>.grey.card,.ui.grey.card,.ui.grey.cards>.card{-webkit-box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #767676,0 1px 3px 0 #d4d4d5;box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #767676,0 1px 3px 0 #d4d4d5}.ui.cards>.grey.card:hover,.ui.grey.card:hover,.ui.grey.cards>.card:hover{-webkit-box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #838383,0 1px 3px 0 #bcbdbd;box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #838383,0 1px 3px 0 #bcbdbd}.ui.black.card,.ui.black.cards>.card,.ui.cards>.black.card{-webkit-box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #1b1c1d,0 1px 3px 0 #d4d4d5;box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #1b1c1d,0 1px 3px 0 #d4d4d5}.ui.black.card:hover,.ui.black.cards>.card:hover,.ui.cards>.black.card:hover{-webkit-box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #27292a,0 1px 3px 0 #bcbdbd;box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #27292a,0 1px 3px 0 #bcbdbd}.ui.one.cards{margin-left:0;margin-right:0}.ui.one.cards>.card{width:100%}.ui.two.cards{margin-left:-1em;margin-right:-1em}.ui.two.cards>.card{width:calc(50% - 2em);margin-left:1em;margin-right:1em}.ui.three.cards{margin-left:-1em;margin-right:-1em}.ui.three.cards>.card{width:calc(33.33333333% - 2em);margin-left:1em;margin-right:1em}.ui.four.cards{margin-left:-.75em;margin-right:-.75em}.ui.four.cards>.card{width:calc(25% - 1.5em);margin-left:.75em;margin-right:.75em}.ui.five.cards{margin-left:-.75em;margin-right:-.75em}.ui.five.cards>.card{width:calc(20% - 1.5em);margin-left:.75em;margin-right:.75em}.ui.six.cards{margin-left:-.75em;margin-right:-.75em}.ui.six.cards>.card{width:calc(16.66666667% - 1.5em);margin-left:.75em;margin-right:.75em}.ui.seven.cards{margin-left:-.5em;margin-right:-.5em}.ui.seven.cards>.card{width:calc(14.28571429% - 1em);margin-left:.5em;margin-right:.5em}.ui.eight.cards{margin-left:-.5em;margin-right:-.5em}.ui.eight.cards>.card{width:calc(12.5% - 1em);margin-left:.5em;margin-right:.5em;font-size:11px}.ui.nine.cards{margin-left:-.5em;margin-right:-.5em}.ui.nine.cards>.card{width:calc(11.11111111% - 1em);margin-left:.5em;margin-right:.5em;font-size:10px}.ui.ten.cards{margin-left:-.5em;margin-right:-.5em}.ui.ten.cards>.card{width:calc(10% - 1em);margin-left:.5em;margin-right:.5em}@media only screen and (max-width:767px){.ui.two.doubling.cards{margin-left:0;margin-right:0}.ui.two.doubling.cards>.card{width:100%;margin-left:0;margin-right:0}.ui.three.doubling.cards{margin-left:-1em;margin-right:-1em}.ui.three.doubling.cards>.card{width:calc(50% - 2em);margin-left:1em;margin-right:1em}.ui.four.doubling.cards{margin-left:-1em;margin-right:-1em}.ui.four.doubling.cards>.card{width:calc(50% - 2em);margin-left:1em;margin-right:1em}.ui.five.doubling.cards{margin-left:-1em;margin-right:-1em}.ui.five.doubling.cards>.card{width:calc(50% - 2em);margin-left:1em;margin-right:1em}.ui.six.doubling.cards{margin-left:-1em;margin-right:-1em}.ui.six.doubling.cards>.card{width:calc(50% - 2em);margin-left:1em;margin-right:1em}.ui.seven.doubling.cards{margin-left:-1em;margin-right:-1em}.ui.seven.doubling.cards>.card{width:calc(33.33333333% - 2em);margin-left:1em;margin-right:1em}.ui.eight.doubling.cards{margin-left:-1em;margin-right:-1em}.ui.eight.doubling.cards>.card{width:calc(33.33333333% - 2em);margin-left:1em;margin-right:1em}.ui.nine.doubling.cards{margin-left:-1em;margin-right:-1em}.ui.nine.doubling.cards>.card{width:calc(33.33333333% - 2em);margin-left:1em;margin-right:1em}.ui.ten.doubling.cards{margin-left:-1em;margin-right:-1em}.ui.ten.doubling.cards>.card{width:calc(33.33333333% - 2em);margin-left:1em;margin-right:1em}}@media only screen and (min-width:768px) and (max-width:991px){.ui.two.doubling.cards{margin-left:0;margin-right:0}.ui.two.doubling.cards>.card{width:100%;margin-left:0;margin-right:0}.ui.three.doubling.cards{margin-left:-1em;margin-right:-1em}.ui.three.doubling.cards>.card{width:calc(50% - 2em);margin-left:1em;margin-right:1em}.ui.four.doubling.cards{margin-left:-1em;margin-right:-1em}.ui.four.doubling.cards>.card{width:calc(50% - 2em);margin-left:1em;margin-right:1em}.ui.five.doubling.cards{margin-left:-1em;margin-right:-1em}.ui.five.doubling.cards>.card{width:calc(33.33333333% - 2em);margin-left:1em;margin-right:1em}.ui.six.doubling.cards{margin-left:-1em;margin-right:-1em}.ui.six.doubling.cards>.card{width:calc(33.33333333% - 2em);margin-left:1em;margin-right:1em}.ui.eight.doubling.cards{margin-left:-1em;margin-right:-1em}.ui.eight.doubling.cards>.card{width:calc(33.33333333% - 2em);margin-left:1em;margin-right:1em}.ui.eight.doubling.cards{margin-left:-.75em;margin-right:-.75em}.ui.eight.doubling.cards>.card{width:calc(25% - 1.5em);margin-left:.75em;margin-right:.75em}.ui.nine.doubling.cards{margin-left:-.75em;margin-right:-.75em}.ui.nine.doubling.cards>.card{width:calc(25% - 1.5em);margin-left:.75em;margin-right:.75em}.ui.ten.doubling.cards{margin-left:-.75em;margin-right:-.75em}.ui.ten.doubling.cards>.card{width:calc(20% - 1.5em);margin-left:.75em;margin-right:.75em}}@media only screen and (max-width:767px){.ui.stackable.cards{display:block!important}.ui.stackable.cards .card:first-child{margin-top:0!important}.ui.stackable.cards>.card{display:block!important;height:auto!important;margin:1em 1em;padding:0!important;width:calc(100% - 2em)!important}}.ui.cards>.card{font-size:1em} \ No newline at end of file diff --git a/app/static/semantic/components/checkbox.css b/app/static/semantic/components/checkbox.css new file mode 100755 index 0000000..0746f5c --- /dev/null +++ b/app/static/semantic/components/checkbox.css @@ -0,0 +1,632 @@ +/*! + * # Semantic UI 2.4.1 - Checkbox + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */ + + +/******************************* + Checkbox +*******************************/ + + +/*-------------- + Content +---------------*/ + +.ui.checkbox { + position: relative; + display: inline-block; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + outline: none; + vertical-align: baseline; + font-style: normal; + min-height: 17px; + font-size: 1rem; + line-height: 17px; + min-width: 17px; +} + +/* HTML Checkbox */ +.ui.checkbox input[type="checkbox"], +.ui.checkbox input[type="radio"] { + cursor: pointer; + position: absolute; + top: 0px; + left: 0px; + opacity: 0 !important; + outline: none; + z-index: 3; + width: 17px; + height: 17px; +} + +/*-------------- + Box +---------------*/ + +.ui.checkbox .box, +.ui.checkbox label { + cursor: auto; + position: relative; + display: block; + padding-left: 1.85714em; + outline: none; + font-size: 1em; +} +.ui.checkbox .box:before, +.ui.checkbox label:before { + position: absolute; + top: 0px; + left: 0px; + width: 17px; + height: 17px; + content: ''; + background: #FFFFFF; + border-radius: 0.21428571rem; + -webkit-transition: border 0.1s ease, opacity 0.1s ease, -webkit-transform 0.1s ease, -webkit-box-shadow 0.1s ease; + transition: border 0.1s ease, opacity 0.1s ease, -webkit-transform 0.1s ease, -webkit-box-shadow 0.1s ease; + transition: border 0.1s ease, opacity 0.1s ease, transform 0.1s ease, box-shadow 0.1s ease; + transition: border 0.1s ease, opacity 0.1s ease, transform 0.1s ease, box-shadow 0.1s ease, -webkit-transform 0.1s ease, -webkit-box-shadow 0.1s ease; + border: 1px solid #D4D4D5; +} + +/*-------------- + Checkmark +---------------*/ + +.ui.checkbox .box:after, +.ui.checkbox label:after { + position: absolute; + font-size: 14px; + top: 0px; + left: 0px; + width: 17px; + height: 17px; + text-align: center; + opacity: 0; + color: rgba(0, 0, 0, 0.87); + -webkit-transition: border 0.1s ease, opacity 0.1s ease, -webkit-transform 0.1s ease, -webkit-box-shadow 0.1s ease; + transition: border 0.1s ease, opacity 0.1s ease, -webkit-transform 0.1s ease, -webkit-box-shadow 0.1s ease; + transition: border 0.1s ease, opacity 0.1s ease, transform 0.1s ease, box-shadow 0.1s ease; + transition: border 0.1s ease, opacity 0.1s ease, transform 0.1s ease, box-shadow 0.1s ease, -webkit-transform 0.1s ease, -webkit-box-shadow 0.1s ease; +} + +/*-------------- + Label +---------------*/ + + +/* Inside */ +.ui.checkbox label, +.ui.checkbox + label { + color: rgba(0, 0, 0, 0.87); + -webkit-transition: color 0.1s ease; + transition: color 0.1s ease; +} + +/* Outside */ +.ui.checkbox + label { + vertical-align: middle; +} + + +/******************************* + States +*******************************/ + + +/*-------------- + Hover +---------------*/ + +.ui.checkbox .box:hover::before, +.ui.checkbox label:hover::before { + background: #FFFFFF; + border-color: rgba(34, 36, 38, 0.35); +} +.ui.checkbox label:hover, +.ui.checkbox + label:hover { + color: rgba(0, 0, 0, 0.8); +} + +/*-------------- + Down +---------------*/ + +.ui.checkbox .box:active::before, +.ui.checkbox label:active::before { + background: #F9FAFB; + border-color: rgba(34, 36, 38, 0.35); +} +.ui.checkbox .box:active::after, +.ui.checkbox label:active::after { + color: rgba(0, 0, 0, 0.95); +} +.ui.checkbox input:active ~ label { + color: rgba(0, 0, 0, 0.95); +} + +/*-------------- + Focus +---------------*/ + +.ui.checkbox input:focus ~ .box:before, +.ui.checkbox input:focus ~ label:before { + background: #FFFFFF; + border-color: #96C8DA; +} +.ui.checkbox input:focus ~ .box:after, +.ui.checkbox input:focus ~ label:after { + color: rgba(0, 0, 0, 0.95); +} +.ui.checkbox input:focus ~ label { + color: rgba(0, 0, 0, 0.95); +} + +/*-------------- + Active +---------------*/ + +.ui.checkbox input:checked ~ .box:before, +.ui.checkbox input:checked ~ label:before { + background: #FFFFFF; + border-color: rgba(34, 36, 38, 0.35); +} +.ui.checkbox input:checked ~ .box:after, +.ui.checkbox input:checked ~ label:after { + opacity: 1; + color: rgba(0, 0, 0, 0.95); +} + +/*-------------- + Indeterminate +---------------*/ + +.ui.checkbox input:not([type=radio]):indeterminate ~ .box:before, +.ui.checkbox input:not([type=radio]):indeterminate ~ label:before { + background: #FFFFFF; + border-color: rgba(34, 36, 38, 0.35); +} +.ui.checkbox input:not([type=radio]):indeterminate ~ .box:after, +.ui.checkbox input:not([type=radio]):indeterminate ~ label:after { + opacity: 1; + color: rgba(0, 0, 0, 0.95); +} + +/*-------------- + Active Focus +---------------*/ + +.ui.checkbox input:not([type=radio]):indeterminate:focus ~ .box:before, +.ui.checkbox input:not([type=radio]):indeterminate:focus ~ label:before, +.ui.checkbox input:checked:focus ~ .box:before, +.ui.checkbox input:checked:focus ~ label:before { + background: #FFFFFF; + border-color: #96C8DA; +} +.ui.checkbox input:not([type=radio]):indeterminate:focus ~ .box:after, +.ui.checkbox input:not([type=radio]):indeterminate:focus ~ label:after, +.ui.checkbox input:checked:focus ~ .box:after, +.ui.checkbox input:checked:focus ~ label:after { + color: rgba(0, 0, 0, 0.95); +} + +/*-------------- + Read-Only +---------------*/ + +.ui.read-only.checkbox, +.ui.read-only.checkbox label { + cursor: default; +} + +/*-------------- + Disabled +---------------*/ + +.ui.disabled.checkbox .box:after, +.ui.disabled.checkbox label, +.ui.checkbox input[disabled] ~ .box:after, +.ui.checkbox input[disabled] ~ label { + cursor: default !important; + opacity: 0.5; + color: #000000; +} + +/*-------------- + Hidden +---------------*/ + + +/* Initialized checkbox moves input below element + to prevent manually triggering */ +.ui.checkbox input.hidden { + z-index: -1; +} + +/* Selectable Label */ +.ui.checkbox input.hidden + label { + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + + +/******************************* + Types +*******************************/ + + +/*-------------- + Radio +---------------*/ + +.ui.radio.checkbox { + min-height: 15px; +} +.ui.radio.checkbox .box, +.ui.radio.checkbox label { + padding-left: 1.85714em; +} + +/* Box */ +.ui.radio.checkbox .box:before, +.ui.radio.checkbox label:before { + content: ''; + -webkit-transform: none; + transform: none; + width: 15px; + height: 15px; + border-radius: 500rem; + top: 1px; + left: 0px; +} + +/* Bullet */ +.ui.radio.checkbox .box:after, +.ui.radio.checkbox label:after { + border: none; + content: '' !important; + width: 15px; + height: 15px; + line-height: 15px; +} + +/* Radio Checkbox */ +.ui.radio.checkbox .box:after, +.ui.radio.checkbox label:after { + top: 1px; + left: 0px; + width: 15px; + height: 15px; + border-radius: 500rem; + -webkit-transform: scale(0.46666667); + transform: scale(0.46666667); + background-color: rgba(0, 0, 0, 0.87); +} + +/* Focus */ +.ui.radio.checkbox input:focus ~ .box:before, +.ui.radio.checkbox input:focus ~ label:before { + background-color: #FFFFFF; +} +.ui.radio.checkbox input:focus ~ .box:after, +.ui.radio.checkbox input:focus ~ label:after { + background-color: rgba(0, 0, 0, 0.95); +} + +/* Indeterminate */ +.ui.radio.checkbox input:indeterminate ~ .box:after, +.ui.radio.checkbox input:indeterminate ~ label:after { + opacity: 0; +} + +/* Active */ +.ui.radio.checkbox input:checked ~ .box:before, +.ui.radio.checkbox input:checked ~ label:before { + background-color: #FFFFFF; +} +.ui.radio.checkbox input:checked ~ .box:after, +.ui.radio.checkbox input:checked ~ label:after { + background-color: rgba(0, 0, 0, 0.95); +} + +/* Active Focus */ +.ui.radio.checkbox input:focus:checked ~ .box:before, +.ui.radio.checkbox input:focus:checked ~ label:before { + background-color: #FFFFFF; +} +.ui.radio.checkbox input:focus:checked ~ .box:after, +.ui.radio.checkbox input:focus:checked ~ label:after { + background-color: rgba(0, 0, 0, 0.95); +} + +/*-------------- + Slider +---------------*/ + +.ui.slider.checkbox { + min-height: 1.25rem; +} + +/* Input */ +.ui.slider.checkbox input { + width: 3.5rem; + height: 1.25rem; +} + +/* Label */ +.ui.slider.checkbox .box, +.ui.slider.checkbox label { + padding-left: 4.5rem; + line-height: 1rem; + color: rgba(0, 0, 0, 0.4); +} + +/* Line */ +.ui.slider.checkbox .box:before, +.ui.slider.checkbox label:before { + display: block; + position: absolute; + content: ''; + border: none !important; + left: 0em; + z-index: 1; + top: 0.4rem; + background-color: rgba(0, 0, 0, 0.05); + width: 3.5rem; + height: 0.21428571rem; + -webkit-transform: none; + transform: none; + border-radius: 500rem; + -webkit-transition: background 0.3s ease; + transition: background 0.3s ease; +} + +/* Handle */ +.ui.slider.checkbox .box:after, +.ui.slider.checkbox label:after { + background: #FFFFFF -webkit-gradient(linear, left top, left bottom, from(transparent), to(rgba(0, 0, 0, 0.05))); + background: #FFFFFF -webkit-linear-gradient(transparent, rgba(0, 0, 0, 0.05)); + background: #FFFFFF linear-gradient(transparent, rgba(0, 0, 0, 0.05)); + position: absolute; + content: '' !important; + opacity: 1; + z-index: 2; + border: none; + -webkit-box-shadow: 0px 1px 2px 0 rgba(34, 36, 38, 0.15), 0px 0px 0px 1px rgba(34, 36, 38, 0.15) inset; + box-shadow: 0px 1px 2px 0 rgba(34, 36, 38, 0.15), 0px 0px 0px 1px rgba(34, 36, 38, 0.15) inset; + width: 1.5rem; + height: 1.5rem; + top: -0.25rem; + left: 0em; + -webkit-transform: none; + transform: none; + border-radius: 500rem; + -webkit-transition: left 0.3s ease; + transition: left 0.3s ease; +} + +/* Focus */ +.ui.slider.checkbox input:focus ~ .box:before, +.ui.slider.checkbox input:focus ~ label:before { + background-color: rgba(0, 0, 0, 0.15); + border: none; +} + +/* Hover */ +.ui.slider.checkbox .box:hover, +.ui.slider.checkbox label:hover { + color: rgba(0, 0, 0, 0.8); +} +.ui.slider.checkbox .box:hover::before, +.ui.slider.checkbox label:hover::before { + background: rgba(0, 0, 0, 0.15); +} + +/* Active */ +.ui.slider.checkbox input:checked ~ .box, +.ui.slider.checkbox input:checked ~ label { + color: rgba(0, 0, 0, 0.95) !important; +} +.ui.slider.checkbox input:checked ~ .box:before, +.ui.slider.checkbox input:checked ~ label:before { + background-color: #545454 !important; +} +.ui.slider.checkbox input:checked ~ .box:after, +.ui.slider.checkbox input:checked ~ label:after { + left: 2rem; +} + +/* Active Focus */ +.ui.slider.checkbox input:focus:checked ~ .box, +.ui.slider.checkbox input:focus:checked ~ label { + color: rgba(0, 0, 0, 0.95) !important; +} +.ui.slider.checkbox input:focus:checked ~ .box:before, +.ui.slider.checkbox input:focus:checked ~ label:before { + background-color: #000000 !important; +} + +/*-------------- + Toggle +---------------*/ + +.ui.toggle.checkbox { + min-height: 1.5rem; +} + +/* Input */ +.ui.toggle.checkbox input { + width: 3.5rem; + height: 1.5rem; +} + +/* Label */ +.ui.toggle.checkbox .box, +.ui.toggle.checkbox label { + min-height: 1.5rem; + padding-left: 4.5rem; + color: rgba(0, 0, 0, 0.87); +} +.ui.toggle.checkbox label { + padding-top: 0.15em; +} + +/* Switch */ +.ui.toggle.checkbox .box:before, +.ui.toggle.checkbox label:before { + display: block; + position: absolute; + content: ''; + z-index: 1; + -webkit-transform: none; + transform: none; + border: none; + top: 0rem; + background: rgba(0, 0, 0, 0.05); + -webkit-box-shadow: none; + box-shadow: none; + width: 3.5rem; + height: 1.5rem; + border-radius: 500rem; +} + +/* Handle */ +.ui.toggle.checkbox .box:after, +.ui.toggle.checkbox label:after { + background: #FFFFFF -webkit-gradient(linear, left top, left bottom, from(transparent), to(rgba(0, 0, 0, 0.05))); + background: #FFFFFF -webkit-linear-gradient(transparent, rgba(0, 0, 0, 0.05)); + background: #FFFFFF linear-gradient(transparent, rgba(0, 0, 0, 0.05)); + position: absolute; + content: '' !important; + opacity: 1; + z-index: 2; + border: none; + -webkit-box-shadow: 0px 1px 2px 0 rgba(34, 36, 38, 0.15), 0px 0px 0px 1px rgba(34, 36, 38, 0.15) inset; + box-shadow: 0px 1px 2px 0 rgba(34, 36, 38, 0.15), 0px 0px 0px 1px rgba(34, 36, 38, 0.15) inset; + width: 1.5rem; + height: 1.5rem; + top: 0rem; + left: 0em; + border-radius: 500rem; + -webkit-transition: background 0.3s ease, left 0.3s ease; + transition: background 0.3s ease, left 0.3s ease; +} +.ui.toggle.checkbox input ~ .box:after, +.ui.toggle.checkbox input ~ label:after { + left: -0.05rem; + -webkit-box-shadow: 0px 1px 2px 0 rgba(34, 36, 38, 0.15), 0px 0px 0px 1px rgba(34, 36, 38, 0.15) inset; + box-shadow: 0px 1px 2px 0 rgba(34, 36, 38, 0.15), 0px 0px 0px 1px rgba(34, 36, 38, 0.15) inset; +} + +/* Focus */ +.ui.toggle.checkbox input:focus ~ .box:before, +.ui.toggle.checkbox input:focus ~ label:before { + background-color: rgba(0, 0, 0, 0.15); + border: none; +} + +/* Hover */ +.ui.toggle.checkbox .box:hover::before, +.ui.toggle.checkbox label:hover::before { + background-color: rgba(0, 0, 0, 0.15); + border: none; +} + +/* Active */ +.ui.toggle.checkbox input:checked ~ .box, +.ui.toggle.checkbox input:checked ~ label { + color: rgba(0, 0, 0, 0.95) !important; +} +.ui.toggle.checkbox input:checked ~ .box:before, +.ui.toggle.checkbox input:checked ~ label:before { + background-color: #2185D0 !important; +} +.ui.toggle.checkbox input:checked ~ .box:after, +.ui.toggle.checkbox input:checked ~ label:after { + left: 2.15rem; + -webkit-box-shadow: 0px 1px 2px 0 rgba(34, 36, 38, 0.15), 0px 0px 0px 1px rgba(34, 36, 38, 0.15) inset; + box-shadow: 0px 1px 2px 0 rgba(34, 36, 38, 0.15), 0px 0px 0px 1px rgba(34, 36, 38, 0.15) inset; +} + +/* Active Focus */ +.ui.toggle.checkbox input:focus:checked ~ .box, +.ui.toggle.checkbox input:focus:checked ~ label { + color: rgba(0, 0, 0, 0.95) !important; +} +.ui.toggle.checkbox input:focus:checked ~ .box:before, +.ui.toggle.checkbox input:focus:checked ~ label:before { + background-color: #0d71bb !important; +} + + +/******************************* + Variations +*******************************/ + + +/*-------------- + Fitted +---------------*/ + +.ui.fitted.checkbox .box, +.ui.fitted.checkbox label { + padding-left: 0em !important; +} +.ui.fitted.toggle.checkbox, +.ui.fitted.toggle.checkbox { + width: 3.5rem; +} +.ui.fitted.slider.checkbox, +.ui.fitted.slider.checkbox { + width: 3.5rem; +} + + +/******************************* + Theme Overrides +*******************************/ + +@font-face { + font-family: 'Checkbox'; + src: url(data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMg8SBD8AAAC8AAAAYGNtYXAYVtCJAAABHAAAAFRnYXNwAAAAEAAAAXAAAAAIZ2x5Zn4huwUAAAF4AAABYGhlYWQGPe1ZAAAC2AAAADZoaGVhB30DyAAAAxAAAAAkaG10eBBKAEUAAAM0AAAAHGxvY2EAmgESAAADUAAAABBtYXhwAAkALwAAA2AAAAAgbmFtZSC8IugAAAOAAAABknBvc3QAAwAAAAAFFAAAACAAAwMTAZAABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADoAgPA/8AAQAPAAEAAAAABAAAAAAAAAAAAAAAgAAAAAAADAAAAAwAAABwAAQADAAAAHAADAAEAAAAcAAQAOAAAAAoACAACAAIAAQAg6AL//f//AAAAAAAg6AD//f//AAH/4xgEAAMAAQAAAAAAAAAAAAAAAQAB//8ADwABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAABAEUAUQO7AvgAGgAAARQHAQYjIicBJjU0PwE2MzIfAQE2MzIfARYVA7sQ/hQQFhcQ/uMQEE4QFxcQqAF2EBcXEE4QAnMWEP4UEBABHRAXFhBOEBCoAXcQEE4QFwAAAAABAAABbgMlAkkAFAAAARUUBwYjISInJj0BNDc2MyEyFxYVAyUQEBf9SRcQEBAQFwK3FxAQAhJtFxAQEBAXbRcQEBAQFwAAAAABAAAASQMlA24ALAAAARUUBwYrARUUBwYrASInJj0BIyInJj0BNDc2OwE1NDc2OwEyFxYdATMyFxYVAyUQEBfuEBAXbhYQEO4XEBAQEBfuEBAWbhcQEO4XEBACEm0XEBDuFxAQEBAX7hAQF20XEBDuFxAQEBAX7hAQFwAAAQAAAAIAAHRSzT9fDzz1AAsEAAAAAADRsdR3AAAAANGx1HcAAAAAA7sDbgAAAAgAAgAAAAAAAAABAAADwP/AAAAEAAAAAAADuwABAAAAAAAAAAAAAAAAAAAABwQAAAAAAAAAAAAAAAIAAAAEAABFAyUAAAMlAAAAAAAAAAoAFAAeAE4AcgCwAAEAAAAHAC0AAQAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAOAK4AAQAAAAAAAQAIAAAAAQAAAAAAAgAHAGkAAQAAAAAAAwAIADkAAQAAAAAABAAIAH4AAQAAAAAABQALABgAAQAAAAAABgAIAFEAAQAAAAAACgAaAJYAAwABBAkAAQAQAAgAAwABBAkAAgAOAHAAAwABBAkAAwAQAEEAAwABBAkABAAQAIYAAwABBAkABQAWACMAAwABBAkABgAQAFkAAwABBAkACgA0ALBDaGVja2JveABDAGgAZQBjAGsAYgBvAHhWZXJzaW9uIDIuMABWAGUAcgBzAGkAbwBuACAAMgAuADBDaGVja2JveABDAGgAZQBjAGsAYgBvAHhDaGVja2JveABDAGgAZQBjAGsAYgBvAHhSZWd1bGFyAFIAZQBnAHUAbABhAHJDaGVja2JveABDAGgAZQBjAGsAYgBvAHhGb250IGdlbmVyYXRlZCBieSBJY29Nb29uLgBGAG8AbgB0ACAAZwBlAG4AZQByAGEAdABlAGQAIABiAHkAIABJAGMAbwBNAG8AbwBuAC4AAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA) format('truetype'); +} + +/* Checkmark */ +.ui.checkbox label:after, +.ui.checkbox .box:after { + font-family: 'Checkbox'; +} + +/* Checked */ +.ui.checkbox input:checked ~ .box:after, +.ui.checkbox input:checked ~ label:after { + content: '\e800'; +} + +/* Indeterminate */ +.ui.checkbox input:indeterminate ~ .box:after, +.ui.checkbox input:indeterminate ~ label:after { + font-size: 12px; + content: '\e801'; +} +/* UTF Reference +.check:before { content: '\e800'; } +.dash:before { content: '\e801'; } +.plus:before { content: '\e802'; } +*/ + + +/******************************* + Site Overrides +*******************************/ + diff --git a/app/static/semantic/components/checkbox.js b/app/static/semantic/components/checkbox.js new file mode 100755 index 0000000..d97d5e3 --- /dev/null +++ b/app/static/semantic/components/checkbox.js @@ -0,0 +1,831 @@ +/*! + * # Semantic UI 2.4.1 - Checkbox + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */ + +;(function ($, window, document, undefined) { + +'use strict'; + +window = (typeof window != 'undefined' && window.Math == Math) + ? window + : (typeof self != 'undefined' && self.Math == Math) + ? self + : Function('return this')() +; + +$.fn.checkbox = function(parameters) { + var + $allModules = $(this), + moduleSelector = $allModules.selector || '', + + time = new Date().getTime(), + performance = [], + + query = arguments[0], + methodInvoked = (typeof query == 'string'), + queryArguments = [].slice.call(arguments, 1), + returnedValue + ; + + $allModules + .each(function() { + var + settings = $.extend(true, {}, $.fn.checkbox.settings, parameters), + + className = settings.className, + namespace = settings.namespace, + selector = settings.selector, + error = settings.error, + + eventNamespace = '.' + namespace, + moduleNamespace = 'module-' + namespace, + + $module = $(this), + $label = $(this).children(selector.label), + $input = $(this).children(selector.input), + input = $input[0], + + initialLoad = false, + shortcutPressed = false, + instance = $module.data(moduleNamespace), + + observer, + element = this, + module + ; + + module = { + + initialize: function() { + module.verbose('Initializing checkbox', settings); + + module.create.label(); + module.bind.events(); + + module.set.tabbable(); + module.hide.input(); + + module.observeChanges(); + module.instantiate(); + module.setup(); + }, + + instantiate: function() { + module.verbose('Storing instance of module', module); + instance = module; + $module + .data(moduleNamespace, module) + ; + }, + + destroy: function() { + module.verbose('Destroying module'); + module.unbind.events(); + module.show.input(); + $module.removeData(moduleNamespace); + }, + + fix: { + reference: function() { + if( $module.is(selector.input) ) { + module.debug('Behavior called on adjusting invoked element'); + $module = $module.closest(selector.checkbox); + module.refresh(); + } + } + }, + + setup: function() { + module.set.initialLoad(); + if( module.is.indeterminate() ) { + module.debug('Initial value is indeterminate'); + module.indeterminate(); + } + else if( module.is.checked() ) { + module.debug('Initial value is checked'); + module.check(); + } + else { + module.debug('Initial value is unchecked'); + module.uncheck(); + } + module.remove.initialLoad(); + }, + + refresh: function() { + $label = $module.children(selector.label); + $input = $module.children(selector.input); + input = $input[0]; + }, + + hide: { + input: function() { + module.verbose('Modifying z-index to be unselectable'); + $input.addClass(className.hidden); + } + }, + show: { + input: function() { + module.verbose('Modifying z-index to be selectable'); + $input.removeClass(className.hidden); + } + }, + + observeChanges: function() { + if('MutationObserver' in window) { + observer = new MutationObserver(function(mutations) { + module.debug('DOM tree modified, updating selector cache'); + module.refresh(); + }); + observer.observe(element, { + childList : true, + subtree : true + }); + module.debug('Setting up mutation observer', observer); + } + }, + + attachEvents: function(selector, event) { + var + $element = $(selector) + ; + event = $.isFunction(module[event]) + ? module[event] + : module.toggle + ; + if($element.length > 0) { + module.debug('Attaching checkbox events to element', selector, event); + $element + .on('click' + eventNamespace, event) + ; + } + else { + module.error(error.notFound); + } + }, + + event: { + click: function(event) { + var + $target = $(event.target) + ; + if( $target.is(selector.input) ) { + module.verbose('Using default check action on initialized checkbox'); + return; + } + if( $target.is(selector.link) ) { + module.debug('Clicking link inside checkbox, skipping toggle'); + return; + } + module.toggle(); + $input.focus(); + event.preventDefault(); + }, + keydown: function(event) { + var + key = event.which, + keyCode = { + enter : 13, + space : 32, + escape : 27 + } + ; + if(key == keyCode.escape) { + module.verbose('Escape key pressed blurring field'); + $input.blur(); + shortcutPressed = true; + } + else if(!event.ctrlKey && ( key == keyCode.space || key == keyCode.enter) ) { + module.verbose('Enter/space key pressed, toggling checkbox'); + module.toggle(); + shortcutPressed = true; + } + else { + shortcutPressed = false; + } + }, + keyup: function(event) { + if(shortcutPressed) { + event.preventDefault(); + } + } + }, + + check: function() { + if( !module.should.allowCheck() ) { + return; + } + module.debug('Checking checkbox', $input); + module.set.checked(); + if( !module.should.ignoreCallbacks() ) { + settings.onChecked.call(input); + settings.onChange.call(input); + } + }, + + uncheck: function() { + if( !module.should.allowUncheck() ) { + return; + } + module.debug('Unchecking checkbox'); + module.set.unchecked(); + if( !module.should.ignoreCallbacks() ) { + settings.onUnchecked.call(input); + settings.onChange.call(input); + } + }, + + indeterminate: function() { + if( module.should.allowIndeterminate() ) { + module.debug('Checkbox is already indeterminate'); + return; + } + module.debug('Making checkbox indeterminate'); + module.set.indeterminate(); + if( !module.should.ignoreCallbacks() ) { + settings.onIndeterminate.call(input); + settings.onChange.call(input); + } + }, + + determinate: function() { + if( module.should.allowDeterminate() ) { + module.debug('Checkbox is already determinate'); + return; + } + module.debug('Making checkbox determinate'); + module.set.determinate(); + if( !module.should.ignoreCallbacks() ) { + settings.onDeterminate.call(input); + settings.onChange.call(input); + } + }, + + enable: function() { + if( module.is.enabled() ) { + module.debug('Checkbox is already enabled'); + return; + } + module.debug('Enabling checkbox'); + module.set.enabled(); + settings.onEnable.call(input); + // preserve legacy callbacks + settings.onEnabled.call(input); + }, + + disable: function() { + if( module.is.disabled() ) { + module.debug('Checkbox is already disabled'); + return; + } + module.debug('Disabling checkbox'); + module.set.disabled(); + settings.onDisable.call(input); + // preserve legacy callbacks + settings.onDisabled.call(input); + }, + + get: { + radios: function() { + var + name = module.get.name() + ; + return $('input[name="' + name + '"]').closest(selector.checkbox); + }, + otherRadios: function() { + return module.get.radios().not($module); + }, + name: function() { + return $input.attr('name'); + } + }, + + is: { + initialLoad: function() { + return initialLoad; + }, + radio: function() { + return ($input.hasClass(className.radio) || $input.attr('type') == 'radio'); + }, + indeterminate: function() { + return $input.prop('indeterminate') !== undefined && $input.prop('indeterminate'); + }, + checked: function() { + return $input.prop('checked') !== undefined && $input.prop('checked'); + }, + disabled: function() { + return $input.prop('disabled') !== undefined && $input.prop('disabled'); + }, + enabled: function() { + return !module.is.disabled(); + }, + determinate: function() { + return !module.is.indeterminate(); + }, + unchecked: function() { + return !module.is.checked(); + } + }, + + should: { + allowCheck: function() { + if(module.is.determinate() && module.is.checked() && !module.should.forceCallbacks() ) { + module.debug('Should not allow check, checkbox is already checked'); + return false; + } + if(settings.beforeChecked.apply(input) === false) { + module.debug('Should not allow check, beforeChecked cancelled'); + return false; + } + return true; + }, + allowUncheck: function() { + if(module.is.determinate() && module.is.unchecked() && !module.should.forceCallbacks() ) { + module.debug('Should not allow uncheck, checkbox is already unchecked'); + return false; + } + if(settings.beforeUnchecked.apply(input) === false) { + module.debug('Should not allow uncheck, beforeUnchecked cancelled'); + return false; + } + return true; + }, + allowIndeterminate: function() { + if(module.is.indeterminate() && !module.should.forceCallbacks() ) { + module.debug('Should not allow indeterminate, checkbox is already indeterminate'); + return false; + } + if(settings.beforeIndeterminate.apply(input) === false) { + module.debug('Should not allow indeterminate, beforeIndeterminate cancelled'); + return false; + } + return true; + }, + allowDeterminate: function() { + if(module.is.determinate() && !module.should.forceCallbacks() ) { + module.debug('Should not allow determinate, checkbox is already determinate'); + return false; + } + if(settings.beforeDeterminate.apply(input) === false) { + module.debug('Should not allow determinate, beforeDeterminate cancelled'); + return false; + } + return true; + }, + forceCallbacks: function() { + return (module.is.initialLoad() && settings.fireOnInit); + }, + ignoreCallbacks: function() { + return (initialLoad && !settings.fireOnInit); + } + }, + + can: { + change: function() { + return !( $module.hasClass(className.disabled) || $module.hasClass(className.readOnly) || $input.prop('disabled') || $input.prop('readonly') ); + }, + uncheck: function() { + return (typeof settings.uncheckable === 'boolean') + ? settings.uncheckable + : !module.is.radio() + ; + } + }, + + set: { + initialLoad: function() { + initialLoad = true; + }, + checked: function() { + module.verbose('Setting class to checked'); + $module + .removeClass(className.indeterminate) + .addClass(className.checked) + ; + if( module.is.radio() ) { + module.uncheckOthers(); + } + if(!module.is.indeterminate() && module.is.checked()) { + module.debug('Input is already checked, skipping input property change'); + return; + } + module.verbose('Setting state to checked', input); + $input + .prop('indeterminate', false) + .prop('checked', true) + ; + module.trigger.change(); + }, + unchecked: function() { + module.verbose('Removing checked class'); + $module + .removeClass(className.indeterminate) + .removeClass(className.checked) + ; + if(!module.is.indeterminate() && module.is.unchecked() ) { + module.debug('Input is already unchecked'); + return; + } + module.debug('Setting state to unchecked'); + $input + .prop('indeterminate', false) + .prop('checked', false) + ; + module.trigger.change(); + }, + indeterminate: function() { + module.verbose('Setting class to indeterminate'); + $module + .addClass(className.indeterminate) + ; + if( module.is.indeterminate() ) { + module.debug('Input is already indeterminate, skipping input property change'); + return; + } + module.debug('Setting state to indeterminate'); + $input + .prop('indeterminate', true) + ; + module.trigger.change(); + }, + determinate: function() { + module.verbose('Removing indeterminate class'); + $module + .removeClass(className.indeterminate) + ; + if( module.is.determinate() ) { + module.debug('Input is already determinate, skipping input property change'); + return; + } + module.debug('Setting state to determinate'); + $input + .prop('indeterminate', false) + ; + }, + disabled: function() { + module.verbose('Setting class to disabled'); + $module + .addClass(className.disabled) + ; + if( module.is.disabled() ) { + module.debug('Input is already disabled, skipping input property change'); + return; + } + module.debug('Setting state to disabled'); + $input + .prop('disabled', 'disabled') + ; + module.trigger.change(); + }, + enabled: function() { + module.verbose('Removing disabled class'); + $module.removeClass(className.disabled); + if( module.is.enabled() ) { + module.debug('Input is already enabled, skipping input property change'); + return; + } + module.debug('Setting state to enabled'); + $input + .prop('disabled', false) + ; + module.trigger.change(); + }, + tabbable: function() { + module.verbose('Adding tabindex to checkbox'); + if( $input.attr('tabindex') === undefined) { + $input.attr('tabindex', 0); + } + } + }, + + remove: { + initialLoad: function() { + initialLoad = false; + } + }, + + trigger: { + change: function() { + var + events = document.createEvent('HTMLEvents'), + inputElement = $input[0] + ; + if(inputElement) { + module.verbose('Triggering native change event'); + events.initEvent('change', true, false); + inputElement.dispatchEvent(events); + } + } + }, + + + create: { + label: function() { + if($input.prevAll(selector.label).length > 0) { + $input.prev(selector.label).detach().insertAfter($input); + module.debug('Moving existing label', $label); + } + else if( !module.has.label() ) { + $label = $('

').attr('class', 'ui dimmer'); + } + } + +}; + +})( jQuery, window, document ); diff --git a/app/static/semantic/components/dimmer.min.css b/app/static/semantic/components/dimmer.min.css new file mode 100755 index 0000000..bd72457 --- /dev/null +++ b/app/static/semantic/components/dimmer.min.css @@ -0,0 +1,9 @@ +/*! + * # Semantic UI 2.4.0 - Dimmer + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */.dimmable:not(body){position:relative}.ui.dimmer{display:none;position:absolute;top:0!important;left:0!important;width:100%;height:100%;text-align:center;vertical-align:middle;padding:1em;background-color:rgba(0,0,0,.85);opacity:0;line-height:1;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.5s;animation-duration:.5s;-webkit-transition:background-color .5s linear;transition:background-color .5s linear;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;will-change:opacity;z-index:1000}.ui.dimmer>.content{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;color:#fff}.ui.segment>.ui.dimmer{border-radius:inherit!important}.ui.dimmer:not(.inverted)::-webkit-scrollbar-track{background:rgba(255,255,255,.1)}.ui.dimmer:not(.inverted)::-webkit-scrollbar-thumb{background:rgba(255,255,255,.25)}.ui.dimmer:not(.inverted)::-webkit-scrollbar-thumb:window-inactive{background:rgba(255,255,255,.15)}.ui.dimmer:not(.inverted)::-webkit-scrollbar-thumb:hover{background:rgba(255,255,255,.35)}.animating.dimmable:not(body),.dimmed.dimmable:not(body){overflow:hidden}.dimmed.dimmable>.ui.animating.dimmer,.dimmed.dimmable>.ui.visible.dimmer,.ui.active.dimmer{display:-webkit-box;display:-ms-flexbox;display:flex;opacity:1}.ui.disabled.dimmer{width:0!important;height:0!important}.dimmed.dimmable>.ui.animating.legacy.dimmer,.dimmed.dimmable>.ui.visible.legacy.dimmer,.ui.active.legacy.dimmer{display:block}.ui[class*="top aligned"].dimmer{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.ui[class*="bottom aligned"].dimmer{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.ui.page.dimmer{position:fixed;-webkit-transform-style:'';transform-style:'';-webkit-perspective:2000px;perspective:2000px;-webkit-transform-origin:center center;transform-origin:center center}body.animating.in.dimmable,body.dimmed.dimmable{overflow:hidden}body.dimmable>.dimmer{position:fixed}.blurring.dimmable>:not(.dimmer){-webkit-filter:blur(0) grayscale(0);filter:blur(0) grayscale(0);-webkit-transition:.8s -webkit-filter ease;transition:.8s -webkit-filter ease;transition:.8s filter ease;transition:.8s filter ease,.8s -webkit-filter ease}.blurring.dimmed.dimmable>:not(.dimmer){-webkit-filter:blur(5px) grayscale(.7);filter:blur(5px) grayscale(.7)}.blurring.dimmable>.dimmer{background-color:rgba(0,0,0,.6)}.blurring.dimmable>.inverted.dimmer{background-color:rgba(255,255,255,.6)}.ui.dimmer>.top.aligned.content>*{vertical-align:top}.ui.dimmer>.bottom.aligned.content>*{vertical-align:bottom}.ui.inverted.dimmer{background-color:rgba(255,255,255,.85)}.ui.inverted.dimmer>.content>*{color:#fff}.ui.simple.dimmer{display:block;overflow:hidden;opacity:1;width:0%;height:0%;z-index:-100;background-color:rgba(0,0,0,0)}.dimmed.dimmable>.ui.simple.dimmer{overflow:visible;opacity:1;width:100%;height:100%;background-color:rgba(0,0,0,.85);z-index:1}.ui.simple.inverted.dimmer{background-color:rgba(255,255,255,0)}.dimmed.dimmable>.ui.simple.inverted.dimmer{background-color:rgba(255,255,255,.85)} \ No newline at end of file diff --git a/app/static/semantic/components/dimmer.min.js b/app/static/semantic/components/dimmer.min.js new file mode 100755 index 0000000..219e81e --- /dev/null +++ b/app/static/semantic/components/dimmer.min.js @@ -0,0 +1 @@ +!function(x,e,F,T){"use strict";e=void 0!==e&&e.Math==Math?e:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),x.fn.dimmer=function(p){var b,v=x(this),h=(new Date).getTime(),y=[],C=p,w="string"==typeof C,S=[].slice.call(arguments,1);return v.each(function(){var a,i,s,r=x.isPlainObject(p)?x.extend(!0,{},x.fn.dimmer.settings,p):x.extend({},x.fn.dimmer.settings),n=r.selector,e=r.namespace,t=r.className,m=r.error,o="."+e,d="module-"+e,c=v.selector||"",l="ontouchstart"in F.documentElement?"touchstart":"click",u=x(this),f=this,g=u.data(d);(s={preinitialize:function(){a=s.is.dimmer()?(i=u.parent(),u):(i=u,s.has.dimmer()?r.dimmerName?i.find(n.dimmer).filter("."+r.dimmerName):i.find(n.dimmer):s.create())},initialize:function(){s.debug("Initializing dimmer",r),s.bind.events(),s.set.dimmable(),s.instantiate()},instantiate:function(){s.verbose("Storing instance of module",s),g=s,u.data(d,g)},destroy:function(){s.verbose("Destroying previous module",a),s.unbind.events(),s.remove.variation(),i.off(o)},bind:{events:function(){"hover"==r.on?i.on("mouseenter"+o,s.show).on("mouseleave"+o,s.hide):"click"==r.on&&i.on(l+o,s.toggle),s.is.page()&&(s.debug("Setting as a page dimmer",i),s.set.pageDimmer()),s.is.closable()&&(s.verbose("Adding dimmer close event",a),i.on(l+o,n.dimmer,s.event.click))}},unbind:{events:function(){u.removeData(d),i.off(o)}},event:{click:function(e){s.verbose("Determining if event occured on dimmer",e),(0===a.find(e.target).length||x(e.target).is(n.content))&&(s.hide(),e.stopImmediatePropagation())}},addContent:function(e){var i=x(e);s.debug("Add content to dimmer",i),i.parent()[0]!==a[0]&&i.detach().appendTo(a)},create:function(){var e=x(r.template.dimmer());return r.dimmerName&&(s.debug("Creating named dimmer",r.dimmerName),e.addClass(r.dimmerName)),e.appendTo(i),e},show:function(e){e=x.isFunction(e)?e:function(){},s.debug("Showing dimmer",a,r),s.set.variation(),s.is.dimmed()&&!s.is.animating()||!s.is.enabled()?s.debug("Dimmer is already shown or disabled"):(s.animate.show(e),r.onShow.call(f),r.onChange.call(f))},hide:function(e){e=x.isFunction(e)?e:function(){},s.is.dimmed()||s.is.animating()?(s.debug("Hiding dimmer",a),s.animate.hide(e),r.onHide.call(f),r.onChange.call(f)):s.debug("Dimmer is not visible")},toggle:function(){s.verbose("Toggling dimmer visibility",a),s.is.dimmed()?s.hide():s.show()},animate:{show:function(e){e=x.isFunction(e)?e:function(){},r.useCSS&&x.fn.transition!==T&&a.transition("is supported")?(r.useFlex?(s.debug("Using flex dimmer"),s.remove.legacy()):(s.debug("Using legacy non-flex dimmer"),s.set.legacy()),"auto"!==r.opacity&&s.set.opacity(),a.transition({displayType:r.useFlex?"flex":"block",animation:r.transition+" in",queue:!1,duration:s.get.duration(),useFailSafe:!0,onStart:function(){s.set.dimmed()},onComplete:function(){s.set.active(),e()}})):(s.verbose("Showing dimmer animation with javascript"),s.set.dimmed(),"auto"==r.opacity&&(r.opacity=.8),a.stop().css({opacity:0,width:"100%",height:"100%"}).fadeTo(s.get.duration(),r.opacity,function(){a.removeAttr("style"),s.set.active(),e()}))},hide:function(e){e=x.isFunction(e)?e:function(){},r.useCSS&&x.fn.transition!==T&&a.transition("is supported")?(s.verbose("Hiding dimmer with css"),a.transition({displayType:r.useFlex?"flex":"block",animation:r.transition+" out",queue:!1,duration:s.get.duration(),useFailSafe:!0,onStart:function(){s.remove.dimmed()},onComplete:function(){s.remove.variation(),s.remove.active(),e()}})):(s.verbose("Hiding dimmer with javascript"),s.remove.dimmed(),a.stop().fadeOut(s.get.duration(),function(){s.remove.active(),a.removeAttr("style"),e()}))}},get:{dimmer:function(){return a},duration:function(){return"object"==typeof r.duration?s.is.active()?r.duration.hide:r.duration.show:r.duration}},has:{dimmer:function(){return r.dimmerName?0 .ui.dimmer",content:".ui.dimmer > .content, .ui.dimmer > .content > .center"},template:{dimmer:function(){return x("
").attr("class","ui dimmer")}}}}(jQuery,window,document); \ No newline at end of file diff --git a/app/static/semantic/components/divider.css b/app/static/semantic/components/divider.css new file mode 100755 index 0000000..bfea850 --- /dev/null +++ b/app/static/semantic/components/divider.css @@ -0,0 +1,260 @@ +/*! + * # Semantic UI 2.4.1 - Divider + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */ + + +/******************************* + Divider +*******************************/ + +.ui.divider { + margin: 1rem 0rem; + line-height: 1; + height: 0em; + font-weight: bold; + text-transform: uppercase; + letter-spacing: 0.05em; + color: rgba(0, 0, 0, 0.85); + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} + +/*-------------- + Basic +---------------*/ + +.ui.divider:not(.vertical):not(.horizontal) { + border-top: 1px solid rgba(34, 36, 38, 0.15); + border-bottom: 1px solid rgba(255, 255, 255, 0.1); +} + +/*-------------- + Coupling +---------------*/ + + +/* Allow divider between each column row */ +.ui.grid > .column + .divider, +.ui.grid > .row > .column + .divider { + left: auto; +} + +/*-------------- + Horizontal +---------------*/ + +.ui.horizontal.divider { + display: table; + white-space: nowrap; + height: auto; + margin: ''; + line-height: 1; + text-align: center; +} +.ui.horizontal.divider:before, +.ui.horizontal.divider:after { + content: ''; + display: table-cell; + position: relative; + top: 50%; + width: 50%; + background-repeat: no-repeat; +} +.ui.horizontal.divider:before { + background-position: right 1em top 50%; +} +.ui.horizontal.divider:after { + background-position: left 1em top 50%; +} + +/*-------------- + Vertical +---------------*/ + +.ui.vertical.divider { + position: absolute; + z-index: 2; + top: 50%; + left: 50%; + margin: 0rem; + padding: 0em; + width: auto; + height: 50%; + line-height: 0em; + text-align: center; + -webkit-transform: translateX(-50%); + transform: translateX(-50%); +} +.ui.vertical.divider:before, +.ui.vertical.divider:after { + position: absolute; + left: 50%; + content: ''; + z-index: 3; + border-left: 1px solid rgba(34, 36, 38, 0.15); + border-right: 1px solid rgba(255, 255, 255, 0.1); + width: 0%; + height: calc(100% - 1rem ); +} +.ui.vertical.divider:before { + top: -100%; +} +.ui.vertical.divider:after { + top: auto; + bottom: 0px; +} + +/* Inside grid */ +@media only screen and (max-width: 767px) { + .ui.stackable.grid .ui.vertical.divider, + .ui.grid .stackable.row .ui.vertical.divider { + display: table; + white-space: nowrap; + height: auto; + margin: ''; + overflow: hidden; + line-height: 1; + text-align: center; + position: static; + top: 0; + left: 0; + -webkit-transform: none; + transform: none; + } + .ui.stackable.grid .ui.vertical.divider:before, + .ui.grid .stackable.row .ui.vertical.divider:before, + .ui.stackable.grid .ui.vertical.divider:after, + .ui.grid .stackable.row .ui.vertical.divider:after { + position: static; + left: 0; + border-left: none; + border-right: none; + content: ''; + display: table-cell; + position: relative; + top: 50%; + width: 50%; + background-repeat: no-repeat; + } + .ui.stackable.grid .ui.vertical.divider:before, + .ui.grid .stackable.row .ui.vertical.divider:before { + background-position: right 1em top 50%; + } + .ui.stackable.grid .ui.vertical.divider:after, + .ui.grid .stackable.row .ui.vertical.divider:after { + background-position: left 1em top 50%; + } +} + +/*-------------- + Icon +---------------*/ + +.ui.divider > .icon { + margin: 0rem; + font-size: 1rem; + height: 1em; + vertical-align: middle; +} + + +/******************************* + Variations +*******************************/ + + +/*-------------- + Hidden +---------------*/ + +.ui.hidden.divider { + border-color: transparent !important; +} +.ui.hidden.divider:before, +.ui.hidden.divider:after { + display: none; +} + +/*-------------- + Inverted +---------------*/ + +.ui.divider.inverted, +.ui.vertical.inverted.divider, +.ui.horizontal.inverted.divider { + color: #FFFFFF; +} +.ui.divider.inverted, +.ui.divider.inverted:after, +.ui.divider.inverted:before { + border-top-color: rgba(34, 36, 38, 0.15) !important; + border-left-color: rgba(34, 36, 38, 0.15) !important; + border-bottom-color: rgba(255, 255, 255, 0.15) !important; + border-right-color: rgba(255, 255, 255, 0.15) !important; +} + +/*-------------- + Fitted +---------------*/ + +.ui.fitted.divider { + margin: 0em; +} + +/*-------------- + Clearing +---------------*/ + +.ui.clearing.divider { + clear: both; +} + +/*-------------- + Section +---------------*/ + +.ui.section.divider { + margin-top: 2rem; + margin-bottom: 2rem; +} + +/*-------------- + Sizes +---------------*/ + +.ui.divider { + font-size: 1rem; +} + + +/******************************* + Theme Overrides +*******************************/ + +.ui.horizontal.divider:before, +.ui.horizontal.divider:after { + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABaAAAAACCAYAAACuTHuKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyFpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1OThBRDY4OUNDMTYxMUU0OUE3NUVGOEJDMzMzMjE2NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1OThBRDY4QUNDMTYxMUU0OUE3NUVGOEJDMzMzMjE2NyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU5OEFENjg3Q0MxNjExRTQ5QTc1RUY4QkMzMzMyMTY3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU5OEFENjg4Q0MxNjExRTQ5QTc1RUY4QkMzMzMyMTY3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+VU513gAAADVJREFUeNrs0DENACAQBDBIWLGBJQby/mUcJn5sJXQmOQMAAAAAAJqt+2prAAAAAACg2xdgANk6BEVuJgyMAAAAAElFTkSuQmCC'); +} +@media only screen and (max-width: 767px) { + .ui.stackable.grid .ui.vertical.divider:before, + .ui.grid .stackable.row .ui.vertical.divider:before, + .ui.stackable.grid .ui.vertical.divider:after, + .ui.grid .stackable.row .ui.vertical.divider:after { + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABaAAAAACCAYAAACuTHuKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyFpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1OThBRDY4OUNDMTYxMUU0OUE3NUVGOEJDMzMzMjE2NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1OThBRDY4QUNDMTYxMUU0OUE3NUVGOEJDMzMzMjE2NyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU5OEFENjg3Q0MxNjExRTQ5QTc1RUY4QkMzMzMyMTY3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU5OEFENjg4Q0MxNjExRTQ5QTc1RUY4QkMzMzMyMTY3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+VU513gAAADVJREFUeNrs0DENACAQBDBIWLGBJQby/mUcJn5sJXQmOQMAAAAAAJqt+2prAAAAAACg2xdgANk6BEVuJgyMAAAAAElFTkSuQmCC'); + } +} + + +/******************************* + Site Overrides +*******************************/ + diff --git a/app/static/semantic/components/divider.min.css b/app/static/semantic/components/divider.min.css new file mode 100755 index 0000000..aecd2c1 --- /dev/null +++ b/app/static/semantic/components/divider.min.css @@ -0,0 +1,9 @@ +/*! + * # Semantic UI 2.4.1 - Divider + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */.ui.divider{margin:1rem 0;line-height:1;height:0;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:rgba(0,0,0,.85);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.ui.divider:not(.vertical):not(.horizontal){border-top:1px solid rgba(34,36,38,.15);border-bottom:1px solid rgba(255,255,255,.1)}.ui.grid>.column+.divider,.ui.grid>.row>.column+.divider{left:auto}.ui.horizontal.divider{display:table;white-space:nowrap;height:auto;margin:'';line-height:1;text-align:center}.ui.horizontal.divider:after,.ui.horizontal.divider:before{content:'';display:table-cell;position:relative;top:50%;width:50%;background-repeat:no-repeat}.ui.horizontal.divider:before{background-position:right 1em top 50%}.ui.horizontal.divider:after{background-position:left 1em top 50%}.ui.vertical.divider{position:absolute;z-index:2;top:50%;left:50%;margin:0;padding:0;width:auto;height:50%;line-height:0;text-align:center;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.ui.vertical.divider:after,.ui.vertical.divider:before{position:absolute;left:50%;content:'';z-index:3;border-left:1px solid rgba(34,36,38,.15);border-right:1px solid rgba(255,255,255,.1);width:0%;height:calc(100% - 1rem)}.ui.vertical.divider:before{top:-100%}.ui.vertical.divider:after{top:auto;bottom:0}@media only screen and (max-width:767px){.ui.grid .stackable.row .ui.vertical.divider,.ui.stackable.grid .ui.vertical.divider{display:table;white-space:nowrap;height:auto;margin:'';overflow:hidden;line-height:1;text-align:center;position:static;top:0;left:0;-webkit-transform:none;transform:none}.ui.grid .stackable.row .ui.vertical.divider:after,.ui.grid .stackable.row .ui.vertical.divider:before,.ui.stackable.grid .ui.vertical.divider:after,.ui.stackable.grid .ui.vertical.divider:before{position:static;left:0;border-left:none;border-right:none;content:'';display:table-cell;position:relative;top:50%;width:50%;background-repeat:no-repeat}.ui.grid .stackable.row .ui.vertical.divider:before,.ui.stackable.grid .ui.vertical.divider:before{background-position:right 1em top 50%}.ui.grid .stackable.row .ui.vertical.divider:after,.ui.stackable.grid .ui.vertical.divider:after{background-position:left 1em top 50%}}.ui.divider>.icon{margin:0;font-size:1rem;height:1em;vertical-align:middle}.ui.hidden.divider{border-color:transparent!important}.ui.hidden.divider:after,.ui.hidden.divider:before{display:none}.ui.divider.inverted,.ui.horizontal.inverted.divider,.ui.vertical.inverted.divider{color:#fff}.ui.divider.inverted,.ui.divider.inverted:after,.ui.divider.inverted:before{border-top-color:rgba(34,36,38,.15)!important;border-left-color:rgba(34,36,38,.15)!important;border-bottom-color:rgba(255,255,255,.15)!important;border-right-color:rgba(255,255,255,.15)!important}.ui.fitted.divider{margin:0}.ui.clearing.divider{clear:both}.ui.section.divider{margin-top:2rem;margin-bottom:2rem}.ui.divider{font-size:1rem}.ui.horizontal.divider:after,.ui.horizontal.divider:before{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABaAAAAACCAYAAACuTHuKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyFpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1OThBRDY4OUNDMTYxMUU0OUE3NUVGOEJDMzMzMjE2NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1OThBRDY4QUNDMTYxMUU0OUE3NUVGOEJDMzMzMjE2NyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU5OEFENjg3Q0MxNjExRTQ5QTc1RUY4QkMzMzMyMTY3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU5OEFENjg4Q0MxNjExRTQ5QTc1RUY4QkMzMzMyMTY3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+VU513gAAADVJREFUeNrs0DENACAQBDBIWLGBJQby/mUcJn5sJXQmOQMAAAAAAJqt+2prAAAAAACg2xdgANk6BEVuJgyMAAAAAElFTkSuQmCC)}@media only screen and (max-width:767px){.ui.grid .stackable.row .ui.vertical.divider:after,.ui.grid .stackable.row .ui.vertical.divider:before,.ui.stackable.grid .ui.vertical.divider:after,.ui.stackable.grid .ui.vertical.divider:before{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABaAAAAACCAYAAACuTHuKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyFpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1OThBRDY4OUNDMTYxMUU0OUE3NUVGOEJDMzMzMjE2NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1OThBRDY4QUNDMTYxMUU0OUE3NUVGOEJDMzMzMjE2NyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU5OEFENjg3Q0MxNjExRTQ5QTc1RUY4QkMzMzMyMTY3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU5OEFENjg4Q0MxNjExRTQ5QTc1RUY4QkMzMzMyMTY3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+VU513gAAADVJREFUeNrs0DENACAQBDBIWLGBJQby/mUcJn5sJXQmOQMAAAAAAJqt+2prAAAAAACg2xdgANk6BEVuJgyMAAAAAElFTkSuQmCC)}} \ No newline at end of file diff --git a/app/static/semantic/components/dropdown.css b/app/static/semantic/components/dropdown.css new file mode 100755 index 0000000..11dbd0a --- /dev/null +++ b/app/static/semantic/components/dropdown.css @@ -0,0 +1,1516 @@ +/*! + * # Semantic UI 2.4.0 - Dropdown + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */ + + +/******************************* + Dropdown +*******************************/ + +.ui.dropdown { + cursor: pointer; + position: relative; + display: inline-block; + outline: none; + text-align: left; + -webkit-transition: width 0.1s ease, -webkit-box-shadow 0.1s ease; + transition: width 0.1s ease, -webkit-box-shadow 0.1s ease; + transition: box-shadow 0.1s ease, width 0.1s ease; + transition: box-shadow 0.1s ease, width 0.1s ease, -webkit-box-shadow 0.1s ease; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} + + +/******************************* + Content +*******************************/ + + +/*-------------- + Menu +---------------*/ + +.ui.dropdown .menu { + cursor: auto; + position: absolute; + display: none; + outline: none; + top: 100%; + min-width: -webkit-max-content; + min-width: -moz-max-content; + min-width: max-content; + margin: 0em; + padding: 0em 0em; + background: #FFFFFF; + font-size: 1em; + text-shadow: none; + text-align: left; + -webkit-box-shadow: 0px 2px 3px 0px rgba(34, 36, 38, 0.15); + box-shadow: 0px 2px 3px 0px rgba(34, 36, 38, 0.15); + border: 1px solid rgba(34, 36, 38, 0.15); + border-radius: 0.28571429rem; + -webkit-transition: opacity 0.1s ease; + transition: opacity 0.1s ease; + z-index: 11; + will-change: transform, opacity; +} +.ui.dropdown .menu > * { + white-space: nowrap; +} + +/*-------------- + Hidden Input +---------------*/ + +.ui.dropdown > input:not(.search):first-child, +.ui.dropdown > select { + display: none !important; +} + +/*-------------- + Dropdown Icon +---------------*/ + +.ui.dropdown > .dropdown.icon { + position: relative; + width: auto; + font-size: 0.85714286em; + margin: 0em 0em 0em 1em; +} +.ui.dropdown .menu > .item .dropdown.icon { + width: auto; + float: right; + margin: 0em 0em 0em 1em; +} +.ui.dropdown .menu > .item .dropdown.icon + .text { + margin-right: 1em; +} + +/*-------------- + Text +---------------*/ + +.ui.dropdown > .text { + display: inline-block; + -webkit-transition: none; + transition: none; +} + +/*-------------- + Menu Item +---------------*/ + +.ui.dropdown .menu > .item { + position: relative; + cursor: pointer; + display: block; + border: none; + height: auto; + text-align: left; + border-top: none; + line-height: 1em; + color: rgba(0, 0, 0, 0.87); + padding: 0.78571429rem 1.14285714rem !important; + font-size: 1rem; + text-transform: none; + font-weight: normal; + -webkit-box-shadow: none; + box-shadow: none; + -webkit-touch-callout: none; +} +.ui.dropdown .menu > .item:first-child { + border-top-width: 0px; +} + +/*-------------- + Floated Content +---------------*/ + +.ui.dropdown > .text > [class*="right floated"], +.ui.dropdown .menu .item > [class*="right floated"] { + float: right !important; + margin-right: 0em !important; + margin-left: 1em !important; +} +.ui.dropdown > .text > [class*="left floated"], +.ui.dropdown .menu .item > [class*="left floated"] { + float: left !important; + margin-left: 0em !important; + margin-right: 1em !important; +} +.ui.dropdown .menu .item > .icon.floated, +.ui.dropdown .menu .item > .flag.floated, +.ui.dropdown .menu .item > .image.floated, +.ui.dropdown .menu .item > img.floated { + margin-top: 0em; +} + +/*-------------- + Menu Divider +---------------*/ + +.ui.dropdown .menu > .header { + margin: 1rem 0rem 0.75rem; + padding: 0em 1.14285714rem; + color: rgba(0, 0, 0, 0.85); + font-size: 0.78571429em; + font-weight: bold; + text-transform: uppercase; +} +.ui.dropdown .menu > .divider { + border-top: 1px solid rgba(34, 36, 38, 0.1); + height: 0em; + margin: 0.5em 0em; +} +.ui.dropdown.dropdown .menu > .input { + width: auto; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + margin: 1.14285714rem 0.78571429rem; + min-width: 10rem; +} +.ui.dropdown .menu > .header + .input { + margin-top: 0em; +} +.ui.dropdown .menu > .input:not(.transparent) input { + padding: 0.5em 1em; +} +.ui.dropdown .menu > .input:not(.transparent) .button, +.ui.dropdown .menu > .input:not(.transparent) .icon, +.ui.dropdown .menu > .input:not(.transparent) .label { + padding-top: 0.5em; + padding-bottom: 0.5em; +} + +/*----------------- + Item Description +-------------------*/ + +.ui.dropdown > .text > .description, +.ui.dropdown .menu > .item > .description { + float: right; + margin: 0em 0em 0em 1em; + color: rgba(0, 0, 0, 0.4); +} + +/*----------------- + Message +-------------------*/ + +.ui.dropdown .menu > .message { + padding: 0.78571429rem 1.14285714rem; + font-weight: normal; +} +.ui.dropdown .menu > .message:not(.ui) { + color: rgba(0, 0, 0, 0.4); +} + +/*-------------- + Sub Menu +---------------*/ + +.ui.dropdown .menu .menu { + top: 0% !important; + left: 100%; + right: auto; + margin: 0em 0em 0em -0.5em !important; + border-radius: 0.28571429rem !important; + z-index: 21 !important; +} + +/* Hide Arrow */ +.ui.dropdown .menu .menu:after { + display: none; +} + +/*-------------- + Sub Elements +---------------*/ + + +/* Icons / Flags / Labels / Image */ +.ui.dropdown > .text > .icon, +.ui.dropdown > .text > .label, +.ui.dropdown > .text > .flag, +.ui.dropdown > .text > img, +.ui.dropdown > .text > .image { + margin-top: 0em; +} +.ui.dropdown .menu > .item > .icon, +.ui.dropdown .menu > .item > .label, +.ui.dropdown .menu > .item > .flag, +.ui.dropdown .menu > .item > .image, +.ui.dropdown .menu > .item > img { + margin-top: 0em; +} +.ui.dropdown > .text > .icon, +.ui.dropdown > .text > .label, +.ui.dropdown > .text > .flag, +.ui.dropdown > .text > img, +.ui.dropdown > .text > .image, +.ui.dropdown .menu > .item > .icon, +.ui.dropdown .menu > .item > .label, +.ui.dropdown .menu > .item > .flag, +.ui.dropdown .menu > .item > .image, +.ui.dropdown .menu > .item > img { + margin-left: 0em; + float: none; + margin-right: 0.78571429rem; +} + +/*-------------- + Image +---------------*/ + +.ui.dropdown > .text > img, +.ui.dropdown > .text > .image, +.ui.dropdown .menu > .item > .image, +.ui.dropdown .menu > .item > img { + display: inline-block; + vertical-align: top; + width: auto; + margin-top: -0.5em; + margin-bottom: -0.5em; + max-height: 2em; +} + + +/******************************* + Coupling +*******************************/ + + +/*-------------- + Menu +---------------*/ + + +/* Remove Menu Item Divider */ +.ui.dropdown .ui.menu > .item:before, +.ui.menu .ui.dropdown .menu > .item:before { + display: none; +} + +/* Prevent Menu Item Border */ +.ui.menu .ui.dropdown .menu .active.item { + border-left: none; +} + +/* Automatically float dropdown menu right on last menu item */ +.ui.menu .right.menu .dropdown:last-child .menu, +.ui.menu .right.dropdown.item .menu, +.ui.buttons > .ui.dropdown:last-child .menu { + left: auto; + right: 0em; +} + +/*-------------- + Label +---------------*/ + + +/* Dropdown Menu */ +.ui.label.dropdown .menu { + min-width: 100%; +} + +/*-------------- + Button +---------------*/ + + +/* No Margin On Icon Button */ +.ui.dropdown.icon.button > .dropdown.icon { + margin: 0em; +} +.ui.button.dropdown .menu { + min-width: 100%; +} + + +/******************************* + Types +*******************************/ + + +/*-------------- + Selection +---------------*/ + + +/* Displays like a select box */ +.ui.selection.dropdown { + cursor: pointer; + word-wrap: break-word; + line-height: 1em; + white-space: normal; + outline: 0; + -webkit-transform: rotateZ(0deg); + transform: rotateZ(0deg); + min-width: 14em; + min-height: 2.71428571em; + background: #FFFFFF; + display: inline-block; + padding: 0.78571429em 2.1em 0.78571429em 1em; + color: rgba(0, 0, 0, 0.87); + -webkit-box-shadow: none; + box-shadow: none; + border: 1px solid rgba(34, 36, 38, 0.15); + border-radius: 0.28571429rem; + -webkit-transition: width 0.1s ease, -webkit-box-shadow 0.1s ease; + transition: width 0.1s ease, -webkit-box-shadow 0.1s ease; + transition: box-shadow 0.1s ease, width 0.1s ease; + transition: box-shadow 0.1s ease, width 0.1s ease, -webkit-box-shadow 0.1s ease; +} +.ui.selection.dropdown.visible, +.ui.selection.dropdown.active { + z-index: 10; +} +select.ui.dropdown { + height: 38px; + padding: 0.5em; + border: 1px solid rgba(34, 36, 38, 0.15); + visibility: visible; +} +.ui.selection.dropdown > .search.icon, +.ui.selection.dropdown > .delete.icon, +.ui.selection.dropdown > .dropdown.icon { + cursor: pointer; + position: absolute; + width: auto; + height: auto; + line-height: 1.21428571em; + top: 0.78571429em; + right: 1em; + z-index: 3; + margin: -0.78571429em; + padding: 0.91666667em; + opacity: 0.8; + -webkit-transition: opacity 0.1s ease; + transition: opacity 0.1s ease; +} + +/* Compact */ +.ui.compact.selection.dropdown { + min-width: 0px; +} + +/* Selection Menu */ +.ui.selection.dropdown .menu { + overflow-x: hidden; + overflow-y: auto; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-overflow-scrolling: touch; + border-top-width: 0px !important; + width: auto; + outline: none; + margin: 0px -1px; + min-width: calc(100% + 2px ); + width: calc(100% + 2px ); + border-radius: 0em 0em 0.28571429rem 0.28571429rem; + -webkit-box-shadow: 0px 2px 3px 0px rgba(34, 36, 38, 0.15); + box-shadow: 0px 2px 3px 0px rgba(34, 36, 38, 0.15); + -webkit-transition: opacity 0.1s ease; + transition: opacity 0.1s ease; +} +.ui.selection.dropdown .menu:after, +.ui.selection.dropdown .menu:before { + display: none; +} + +/*-------------- + Message +---------------*/ + +.ui.selection.dropdown .menu > .message { + padding: 0.78571429rem 1.14285714rem; +} +@media only screen and (max-width: 767px) { + .ui.selection.dropdown .menu { + max-height: 8.01428571rem; + } +} +@media only screen and (min-width: 768px) { + .ui.selection.dropdown .menu { + max-height: 10.68571429rem; + } +} +@media only screen and (min-width: 992px) { + .ui.selection.dropdown .menu { + max-height: 16.02857143rem; + } +} +@media only screen and (min-width: 1920px) { + .ui.selection.dropdown .menu { + max-height: 21.37142857rem; + } +} + +/* Menu Item */ +.ui.selection.dropdown .menu > .item { + border-top: 1px solid #FAFAFA; + padding: 0.78571429rem 1.14285714rem !important; + white-space: normal; + word-wrap: normal; +} + +/* User Item */ +.ui.selection.dropdown .menu > .hidden.addition.item { + display: none; +} + +/* Hover */ +.ui.selection.dropdown:hover { + border-color: rgba(34, 36, 38, 0.35); + -webkit-box-shadow: none; + box-shadow: none; +} + +/* Active */ +.ui.selection.active.dropdown { + border-color: #96C8DA; + -webkit-box-shadow: 0px 2px 3px 0px rgba(34, 36, 38, 0.15); + box-shadow: 0px 2px 3px 0px rgba(34, 36, 38, 0.15); +} +.ui.selection.active.dropdown .menu { + border-color: #96C8DA; + -webkit-box-shadow: 0px 2px 3px 0px rgba(34, 36, 38, 0.15); + box-shadow: 0px 2px 3px 0px rgba(34, 36, 38, 0.15); +} + +/* Focus */ +.ui.selection.dropdown:focus { + border-color: #96C8DA; + -webkit-box-shadow: none; + box-shadow: none; +} +.ui.selection.dropdown:focus .menu { + border-color: #96C8DA; + -webkit-box-shadow: 0px 2px 3px 0px rgba(34, 36, 38, 0.15); + box-shadow: 0px 2px 3px 0px rgba(34, 36, 38, 0.15); +} + +/* Visible */ +.ui.selection.visible.dropdown > .text:not(.default) { + font-weight: normal; + color: rgba(0, 0, 0, 0.8); +} + +/* Visible Hover */ +.ui.selection.active.dropdown:hover { + border-color: #96C8DA; + -webkit-box-shadow: 0px 2px 3px 0px rgba(34, 36, 38, 0.15); + box-shadow: 0px 2px 3px 0px rgba(34, 36, 38, 0.15); +} +.ui.selection.active.dropdown:hover .menu { + border-color: #96C8DA; + -webkit-box-shadow: 0px 2px 3px 0px rgba(34, 36, 38, 0.15); + box-shadow: 0px 2px 3px 0px rgba(34, 36, 38, 0.15); +} + +/* Dropdown Icon */ +.ui.active.selection.dropdown > .dropdown.icon, +.ui.visible.selection.dropdown > .dropdown.icon { + opacity: ''; + z-index: 3; +} + +/* Connecting Border */ +.ui.active.selection.dropdown { + border-bottom-left-radius: 0em !important; + border-bottom-right-radius: 0em !important; +} + +/* Empty Connecting Border */ +.ui.active.empty.selection.dropdown { + border-radius: 0.28571429rem !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; +} +.ui.active.empty.selection.dropdown .menu { + border: none !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; +} + +/*-------------- + Searchable +---------------*/ + + +/* Search Selection */ +.ui.search.dropdown { + min-width: ''; +} + +/* Search Dropdown */ +.ui.search.dropdown > input.search { + background: none transparent !important; + border: none !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; + cursor: text; + top: 0em; + left: 1px; + width: 100%; + outline: none; + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); + padding: inherit; +} + +/* Text Layering */ +.ui.search.dropdown > input.search { + position: absolute; + z-index: 2; +} +.ui.search.dropdown > .text { + cursor: text; + position: relative; + left: 1px; + z-index: 3; +} + +/* Search Selection */ +.ui.search.selection.dropdown > input.search { + line-height: 1.21428571em; + padding: 0.67857143em 2.1em 0.67857143em 1em; +} + +/* Used to size multi select input to character width */ +.ui.search.selection.dropdown > span.sizer { + line-height: 1.21428571em; + padding: 0.67857143em 2.1em 0.67857143em 1em; + display: none; + white-space: pre; +} + +/* Active/Visible Search */ +.ui.search.dropdown.active > input.search, +.ui.search.dropdown.visible > input.search { + cursor: auto; +} +.ui.search.dropdown.active > .text, +.ui.search.dropdown.visible > .text { + pointer-events: none; +} + +/* Filtered Text */ +.ui.active.search.dropdown input.search:focus + .text .icon, +.ui.active.search.dropdown input.search:focus + .text .flag { + opacity: 0.45; +} +.ui.active.search.dropdown input.search:focus + .text { + color: rgba(115, 115, 115, 0.87) !important; +} + +/* Search Menu */ +.ui.search.dropdown .menu { + overflow-x: hidden; + overflow-y: auto; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-overflow-scrolling: touch; +} +@media only screen and (max-width: 767px) { + .ui.search.dropdown .menu { + max-height: 8.01428571rem; + } +} +@media only screen and (min-width: 768px) { + .ui.search.dropdown .menu { + max-height: 10.68571429rem; + } +} +@media only screen and (min-width: 992px) { + .ui.search.dropdown .menu { + max-height: 16.02857143rem; + } +} +@media only screen and (min-width: 1920px) { + .ui.search.dropdown .menu { + max-height: 21.37142857rem; + } +} + +/*-------------- + Multiple +---------------*/ + + +/* Multiple Selection */ +.ui.multiple.dropdown { + padding: 0.22619048em 2.1em 0.22619048em 0.35714286em; +} +.ui.multiple.dropdown .menu { + cursor: auto; +} + +/* Multiple Search Selection */ +.ui.multiple.search.dropdown, +.ui.multiple.search.dropdown > input.search { + cursor: text; +} + +/* Selection Label */ +.ui.multiple.dropdown > .label { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + display: inline-block; + vertical-align: top; + white-space: normal; + font-size: 1em; + padding: 0.35714286em 0.78571429em; + margin: 0.14285714rem 0.28571429rem 0.14285714rem 0em; + -webkit-box-shadow: 0px 0px 0px 1px rgba(34, 36, 38, 0.15) inset; + box-shadow: 0px 0px 0px 1px rgba(34, 36, 38, 0.15) inset; +} + +/* Dropdown Icon */ +.ui.multiple.dropdown .dropdown.icon { + margin: ''; + padding: ''; +} + +/* Text */ +.ui.multiple.dropdown > .text { + position: static; + padding: 0; + max-width: 100%; + margin: 0.45238095em 0em 0.45238095em 0.64285714em; + line-height: 1.21428571em; +} +.ui.multiple.dropdown > .label ~ input.search { + margin-left: 0.14285714em !important; +} +.ui.multiple.dropdown > .label ~ .text { + display: none; +} + +/*----------------- + Multiple Search +-----------------*/ + + +/* Prompt Text */ +.ui.multiple.search.dropdown > .text { + display: inline-block; + position: absolute; + top: 0; + left: 0; + padding: inherit; + margin: 0.45238095em 0em 0.45238095em 0.64285714em; + line-height: 1.21428571em; +} +.ui.multiple.search.dropdown > .label ~ .text { + display: none; +} + +/* Search */ +.ui.multiple.search.dropdown > input.search { + position: static; + padding: 0; + max-width: 100%; + margin: 0.45238095em 0em 0.45238095em 0.64285714em; + width: 2.2em; + line-height: 1.21428571em; +} + +/*-------------- + Inline +---------------*/ + +.ui.inline.dropdown { + cursor: pointer; + display: inline-block; + color: inherit; +} +.ui.inline.dropdown .dropdown.icon { + margin: 0em 0.21428571em 0em 0.21428571em; + vertical-align: baseline; +} +.ui.inline.dropdown > .text { + font-weight: bold; +} +.ui.inline.dropdown .menu { + cursor: auto; + margin-top: 0.21428571em; + border-radius: 0.28571429rem; +} + + +/******************************* + States +*******************************/ + + +/*-------------------- + Active +----------------------*/ + + +/* Menu Item Active */ +.ui.dropdown .menu .active.item { + background: transparent; + font-weight: bold; + color: rgba(0, 0, 0, 0.95); + -webkit-box-shadow: none; + box-shadow: none; + z-index: 12; +} + +/*-------------------- + Hover +----------------------*/ + + +/* Menu Item Hover */ +.ui.dropdown .menu > .item:hover { + background: rgba(0, 0, 0, 0.05); + color: rgba(0, 0, 0, 0.95); + z-index: 13; +} + +/*-------------------- + Loading +---------------------*/ + +.ui.loading.dropdown > i.icon { + height: 1em !important; +} +.ui.loading.selection.dropdown > i.icon { + padding: 1.5em 1.28571429em !important; +} +.ui.loading.dropdown > i.icon:before { + position: absolute; + content: ''; + top: 50%; + left: 50%; + margin: -0.64285714em 0em 0em -0.64285714em; + width: 1.28571429em; + height: 1.28571429em; + border-radius: 500rem; + border: 0.2em solid rgba(0, 0, 0, 0.1); +} +.ui.loading.dropdown > i.icon:after { + position: absolute; + content: ''; + top: 50%; + left: 50%; + -webkit-box-shadow: 0px 0px 0px 1px transparent; + box-shadow: 0px 0px 0px 1px transparent; + margin: -0.64285714em 0em 0em -0.64285714em; + width: 1.28571429em; + height: 1.28571429em; + -webkit-animation: dropdown-spin 0.6s linear; + animation: dropdown-spin 0.6s linear; + -webkit-animation-iteration-count: infinite; + animation-iteration-count: infinite; + border-radius: 500rem; + border-color: #767676 transparent transparent; + border-style: solid; + border-width: 0.2em; +} + +/* Coupling */ +.ui.loading.dropdown.button > i.icon:before, +.ui.loading.dropdown.button > i.icon:after { + display: none; +} +@-webkit-keyframes dropdown-spin { + from { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + to { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} +@keyframes dropdown-spin { + from { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + to { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +/*-------------------- + Default Text +----------------------*/ + +.ui.dropdown:not(.button) > .default.text, +.ui.default.dropdown:not(.button) > .text { + color: rgba(191, 191, 191, 0.87); +} +.ui.dropdown:not(.button) > input:focus ~ .default.text, +.ui.default.dropdown:not(.button) > input:focus ~ .text { + color: rgba(115, 115, 115, 0.87); +} + +/*-------------------- + Loading +----------------------*/ + +.ui.loading.dropdown > .text { + -webkit-transition: none; + transition: none; +} + +/* Used To Check Position */ +.ui.dropdown .loading.menu { + display: block; + visibility: hidden; + z-index: -1; +} +.ui.dropdown > .loading.menu { + left: 0px !important; + right: auto !important; +} +.ui.dropdown > .menu .loading.menu { + left: 100% !important; + right: auto !important; +} + +/*-------------------- + Keyboard Select +----------------------*/ + + +/* Selected Item */ +.ui.dropdown.selected, +.ui.dropdown .menu .selected.item { + background: rgba(0, 0, 0, 0.03); + color: rgba(0, 0, 0, 0.95); +} + +/*-------------------- + Search Filtered +----------------------*/ + + +/* Filtered Item */ +.ui.dropdown > .filtered.text { + visibility: hidden; +} +.ui.dropdown .filtered.item { + display: none !important; +} + +/*-------------------- + Error +----------------------*/ + +.ui.dropdown.error, +.ui.dropdown.error > .text, +.ui.dropdown.error > .default.text { + color: #9F3A38; +} +.ui.selection.dropdown.error { + background: #FFF6F6; + border-color: #E0B4B4; +} +.ui.selection.dropdown.error:hover { + border-color: #E0B4B4; +} +.ui.dropdown.error > .menu, +.ui.dropdown.error > .menu .menu { + border-color: #E0B4B4; +} +.ui.dropdown.error > .menu > .item { + color: #9F3A38; +} +.ui.multiple.selection.error.dropdown > .label { + border-color: #E0B4B4; +} + +/* Item Hover */ +.ui.dropdown.error > .menu > .item:hover { + background-color: #FFF2F2; +} + +/* Item Active */ +.ui.dropdown.error > .menu .active.item { + background-color: #FDCFCF; +} + +/*-------------------- + Clear +----------------------*/ + +.ui.dropdown > .clear.dropdown.icon { + opacity: 0.8; + -webkit-transition: opacity 0.1s ease; + transition: opacity 0.1s ease; +} +.ui.dropdown > .clear.dropdown.icon:hover { + opacity: 1; +} + +/*-------------------- + Disabled +----------------------*/ + + +/* Disabled */ +.ui.disabled.dropdown, +.ui.dropdown .menu > .disabled.item { + cursor: default; + pointer-events: none; + opacity: 0.45; +} + + +/******************************* + Variations +*******************************/ + + +/*-------------- + Direction +---------------*/ + + +/* Flyout Direction */ +.ui.dropdown .menu { + left: 0px; +} + +/* Default Side (Right) */ +.ui.dropdown .right.menu > .menu, +.ui.dropdown .menu .right.menu { + left: 100% !important; + right: auto !important; + border-radius: 0.28571429rem !important; +} + +/* Leftward Opening Menu */ +.ui.dropdown > .left.menu { + left: auto !important; + right: 0px !important; +} +.ui.dropdown > .left.menu .menu, +.ui.dropdown .menu .left.menu { + left: auto; + right: 100%; + margin: 0em -0.5em 0em 0em !important; + border-radius: 0.28571429rem !important; +} +.ui.dropdown .item .left.dropdown.icon, +.ui.dropdown .left.menu .item .dropdown.icon { + width: auto; + float: left; + margin: 0em 0em 0em 0em; +} +.ui.dropdown .item .left.dropdown.icon, +.ui.dropdown .left.menu .item .dropdown.icon { + width: auto; + float: left; + margin: 0em 0em 0em 0em; +} +.ui.dropdown .item .left.dropdown.icon + .text, +.ui.dropdown .left.menu .item .dropdown.icon + .text { + margin-left: 1em; + margin-right: 0em; +} + +/*-------------- + Upward +---------------*/ + + +/* Upward Main Menu */ +.ui.upward.dropdown > .menu { + top: auto; + bottom: 100%; + -webkit-box-shadow: 0px 0px 3px 0px rgba(0, 0, 0, 0.08); + box-shadow: 0px 0px 3px 0px rgba(0, 0, 0, 0.08); + border-radius: 0.28571429rem 0.28571429rem 0em 0em; +} + +/* Upward Sub Menu */ +.ui.dropdown .upward.menu { + top: auto !important; + bottom: 0 !important; +} + +/* Active Upward */ +.ui.simple.upward.active.dropdown, +.ui.simple.upward.dropdown:hover { + border-radius: 0.28571429rem 0.28571429rem 0em 0em !important; +} +.ui.upward.dropdown.button:not(.pointing):not(.floating).active { + border-radius: 0.28571429rem 0.28571429rem 0em 0em; +} + +/* Selection */ +.ui.upward.selection.dropdown .menu { + border-top-width: 1px !important; + border-bottom-width: 0px !important; + -webkit-box-shadow: 0px -2px 3px 0px rgba(0, 0, 0, 0.08); + box-shadow: 0px -2px 3px 0px rgba(0, 0, 0, 0.08); +} +.ui.upward.selection.dropdown:hover { + -webkit-box-shadow: 0px 0px 2px 0px rgba(0, 0, 0, 0.05); + box-shadow: 0px 0px 2px 0px rgba(0, 0, 0, 0.05); +} + +/* Active Upward */ +.ui.active.upward.selection.dropdown { + border-radius: 0em 0em 0.28571429rem 0.28571429rem !important; +} + +/* Visible Upward */ +.ui.upward.selection.dropdown.visible { + -webkit-box-shadow: 0px 0px 3px 0px rgba(0, 0, 0, 0.08); + box-shadow: 0px 0px 3px 0px rgba(0, 0, 0, 0.08); + border-radius: 0em 0em 0.28571429rem 0.28571429rem !important; +} + +/* Visible Hover Upward */ +.ui.upward.active.selection.dropdown:hover { + -webkit-box-shadow: 0px 0px 3px 0px rgba(0, 0, 0, 0.05); + box-shadow: 0px 0px 3px 0px rgba(0, 0, 0, 0.05); +} +.ui.upward.active.selection.dropdown:hover .menu { + -webkit-box-shadow: 0px -2px 3px 0px rgba(0, 0, 0, 0.08); + box-shadow: 0px -2px 3px 0px rgba(0, 0, 0, 0.08); +} + +/*-------------- + Simple +---------------*/ + + +/* Selection Menu */ +.ui.scrolling.dropdown .menu, +.ui.dropdown .scrolling.menu { + overflow-x: hidden; + overflow-y: auto; +} +.ui.scrolling.dropdown .menu { + overflow-x: hidden; + overflow-y: auto; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-overflow-scrolling: touch; + min-width: 100% !important; + width: auto !important; +} +.ui.dropdown .scrolling.menu { + position: static; + overflow-y: auto; + border: none; + -webkit-box-shadow: none !important; + box-shadow: none !important; + border-radius: 0 !important; + margin: 0 !important; + min-width: 100% !important; + width: auto !important; + border-top: 1px solid rgba(34, 36, 38, 0.15); +} +.ui.scrolling.dropdown .menu .item.item.item, +.ui.dropdown .scrolling.menu > .item.item.item { + border-top: none; +} +.ui.scrolling.dropdown .menu .item:first-child, +.ui.dropdown .scrolling.menu .item:first-child { + border-top: none; +} +.ui.dropdown > .animating.menu .scrolling.menu, +.ui.dropdown > .visible.menu .scrolling.menu { + display: block; +} + +/* Scrollbar in IE */ +@media all and (-ms-high-contrast: none) { + .ui.scrolling.dropdown .menu, + .ui.dropdown .scrolling.menu { + min-width: calc(100% - 17px ); + } +} +@media only screen and (max-width: 767px) { + .ui.scrolling.dropdown .menu, + .ui.dropdown .scrolling.menu { + max-height: 10.28571429rem; + } +} +@media only screen and (min-width: 768px) { + .ui.scrolling.dropdown .menu, + .ui.dropdown .scrolling.menu { + max-height: 15.42857143rem; + } +} +@media only screen and (min-width: 992px) { + .ui.scrolling.dropdown .menu, + .ui.dropdown .scrolling.menu { + max-height: 20.57142857rem; + } +} +@media only screen and (min-width: 1920px) { + .ui.scrolling.dropdown .menu, + .ui.dropdown .scrolling.menu { + max-height: 20.57142857rem; + } +} + +/*-------------- + Simple +---------------*/ + + +/* Displays without javascript */ +.ui.simple.dropdown .menu:before, +.ui.simple.dropdown .menu:after { + display: none; +} +.ui.simple.dropdown .menu { + position: absolute; + display: block; + overflow: hidden; + top: -9999px !important; + opacity: 0; + width: 0; + height: 0; + -webkit-transition: opacity 0.1s ease; + transition: opacity 0.1s ease; +} +.ui.simple.active.dropdown, +.ui.simple.dropdown:hover { + border-bottom-left-radius: 0em !important; + border-bottom-right-radius: 0em !important; +} +.ui.simple.active.dropdown > .menu, +.ui.simple.dropdown:hover > .menu { + overflow: visible; + width: auto; + height: auto; + top: 100% !important; + opacity: 1; +} +.ui.simple.dropdown > .menu > .item:active > .menu, +.ui.simple.dropdown:hover > .menu > .item:hover > .menu { + overflow: visible; + width: auto; + height: auto; + top: 0% !important; + left: 100% !important; + opacity: 1; +} +.ui.simple.disabled.dropdown:hover .menu { + display: none; + height: 0px; + width: 0px; + overflow: hidden; +} + +/* Visible */ +.ui.simple.visible.dropdown > .menu { + display: block; +} + +/*-------------- + Fluid +---------------*/ + +.ui.fluid.dropdown { + display: block; + width: 100%; + min-width: 0em; +} +.ui.fluid.dropdown > .dropdown.icon { + float: right; +} + +/*-------------- + Floating +---------------*/ + +.ui.floating.dropdown .menu { + left: 0; + right: auto; + -webkit-box-shadow: 0px 2px 4px 0px rgba(34, 36, 38, 0.12), 0px 2px 10px 0px rgba(34, 36, 38, 0.15) !important; + box-shadow: 0px 2px 4px 0px rgba(34, 36, 38, 0.12), 0px 2px 10px 0px rgba(34, 36, 38, 0.15) !important; + border-radius: 0.28571429rem !important; +} +.ui.floating.dropdown > .menu { + margin-top: 0.5em !important; + border-radius: 0.28571429rem !important; +} + +/*-------------- + Pointing +---------------*/ + +.ui.pointing.dropdown > .menu { + top: 100%; + margin-top: 0.78571429rem; + border-radius: 0.28571429rem; +} +.ui.pointing.dropdown > .menu:after { + display: block; + position: absolute; + pointer-events: none; + content: ''; + visibility: visible; + -webkit-transform: rotate(45deg); + transform: rotate(45deg); + width: 0.5em; + height: 0.5em; + -webkit-box-shadow: -1px -1px 0px 0px rgba(34, 36, 38, 0.15); + box-shadow: -1px -1px 0px 0px rgba(34, 36, 38, 0.15); + background: #FFFFFF; + z-index: 2; +} +.ui.pointing.dropdown > .menu:after { + top: -0.25em; + left: 50%; + margin: 0em 0em 0em -0.25em; +} + +/* Top Left Pointing */ +.ui.top.left.pointing.dropdown > .menu { + top: 100%; + bottom: auto; + left: 0%; + right: auto; + margin: 1em 0em 0em; +} +.ui.top.left.pointing.dropdown > .menu { + top: 100%; + bottom: auto; + left: 0%; + right: auto; + margin: 1em 0em 0em; +} +.ui.top.left.pointing.dropdown > .menu:after { + top: -0.25em; + left: 1em; + right: auto; + margin: 0em; + -webkit-transform: rotate(45deg); + transform: rotate(45deg); +} + +/* Top Right Pointing */ +.ui.top.right.pointing.dropdown > .menu { + top: 100%; + bottom: auto; + right: 0%; + left: auto; + margin: 1em 0em 0em; +} +.ui.top.pointing.dropdown > .left.menu:after, +.ui.top.right.pointing.dropdown > .menu:after { + top: -0.25em; + left: auto !important; + right: 1em !important; + margin: 0em; + -webkit-transform: rotate(45deg); + transform: rotate(45deg); +} + +/* Left Pointing */ +.ui.left.pointing.dropdown > .menu { + top: 0%; + left: 100%; + right: auto; + margin: 0em 0em 0em 1em; +} +.ui.left.pointing.dropdown > .menu:after { + top: 1em; + left: -0.25em; + margin: 0em 0em 0em 0em; + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); +} +.ui.left:not(.top):not(.bottom).pointing.dropdown > .left.menu { + left: auto !important; + right: 100% !important; + margin: 0em 1em 0em 0em; +} +.ui.left:not(.top):not(.bottom).pointing.dropdown > .left.menu:after { + top: 1em; + left: auto; + right: -0.25em; + margin: 0em 0em 0em 0em; + -webkit-transform: rotate(135deg); + transform: rotate(135deg); +} + +/* Right Pointing */ +.ui.right.pointing.dropdown > .menu { + top: 0%; + left: auto; + right: 100%; + margin: 0em 1em 0em 0em; +} +.ui.right.pointing.dropdown > .menu:after { + top: 1em; + left: auto; + right: -0.25em; + margin: 0em 0em 0em 0em; + -webkit-transform: rotate(135deg); + transform: rotate(135deg); +} + +/* Bottom Pointing */ +.ui.bottom.pointing.dropdown > .menu { + top: auto; + bottom: 100%; + left: 0%; + right: auto; + margin: 0em 0em 1em; +} +.ui.bottom.pointing.dropdown > .menu:after { + top: auto; + bottom: -0.25em; + right: auto; + margin: 0em; + -webkit-transform: rotate(-135deg); + transform: rotate(-135deg); +} + +/* Reverse Sub-Menu Direction */ +.ui.bottom.pointing.dropdown > .menu .menu { + top: auto !important; + bottom: 0px !important; +} + +/* Bottom Left */ +.ui.bottom.left.pointing.dropdown > .menu { + left: 0%; + right: auto; +} +.ui.bottom.left.pointing.dropdown > .menu:after { + left: 1em; + right: auto; +} + +/* Bottom Right */ +.ui.bottom.right.pointing.dropdown > .menu { + right: 0%; + left: auto; +} +.ui.bottom.right.pointing.dropdown > .menu:after { + left: auto; + right: 1em; +} + +/* Upward pointing */ +.ui.pointing.upward.dropdown .menu, +.ui.top.pointing.upward.dropdown .menu { + top: auto !important; + bottom: 100% !important; + margin: 0em 0em 0.78571429rem; + border-radius: 0.28571429rem; +} +.ui.pointing.upward.dropdown .menu:after, +.ui.top.pointing.upward.dropdown .menu:after { + top: 100% !important; + bottom: auto !important; + -webkit-box-shadow: 1px 1px 0px 0px rgba(34, 36, 38, 0.15); + box-shadow: 1px 1px 0px 0px rgba(34, 36, 38, 0.15); + margin: -0.25em 0em 0em; +} + +/* Right Pointing Upward */ +.ui.right.pointing.upward.dropdown:not(.top):not(.bottom) .menu { + top: auto !important; + bottom: 0 !important; + margin: 0em 1em 0em 0em; +} +.ui.right.pointing.upward.dropdown:not(.top):not(.bottom) .menu:after { + top: auto !important; + bottom: 0 !important; + margin: 0em 0em 1em 0em; + -webkit-box-shadow: -1px -1px 0px 0px rgba(34, 36, 38, 0.15); + box-shadow: -1px -1px 0px 0px rgba(34, 36, 38, 0.15); +} + +/* Left Pointing Upward */ +.ui.left.pointing.upward.dropdown:not(.top):not(.bottom) .menu { + top: auto !important; + bottom: 0 !important; + margin: 0em 0em 0em 1em; +} +.ui.left.pointing.upward.dropdown:not(.top):not(.bottom) .menu:after { + top: auto !important; + bottom: 0 !important; + margin: 0em 0em 1em 0em; + -webkit-box-shadow: -1px -1px 0px 0px rgba(34, 36, 38, 0.15); + box-shadow: -1px -1px 0px 0px rgba(34, 36, 38, 0.15); +} + + +/******************************* + Theme Overrides +*******************************/ + + +/* Dropdown Carets */ +@font-face { + font-family: 'Dropdown'; + src: url(data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAAAVgAA8AAAAACFAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAABWAAAABwAAAAchGgaq0dERUYAAAF0AAAAHAAAAB4AJwAPT1MvMgAAAZAAAABDAAAAVnW4TJdjbWFwAAAB1AAAAEsAAAFS8CcaqmN2dCAAAAIgAAAABAAAAAQAEQFEZ2FzcAAAAiQAAAAIAAAACP//AANnbHlmAAACLAAAAQoAAAGkrRHP9WhlYWQAAAM4AAAAMAAAADYPK8YyaGhlYQAAA2gAAAAdAAAAJANCAb1obXR4AAADiAAAACIAAAAiCBkAOGxvY2EAAAOsAAAAFAAAABQBnAIybWF4cAAAA8AAAAAfAAAAIAEVAF5uYW1lAAAD4AAAATAAAAKMFGlj5HBvc3QAAAUQAAAARgAAAHJoedjqd2ViZgAABVgAAAAGAAAABrO7W5UAAAABAAAAANXulPUAAAAA1r4hgAAAAADXu2Q1eNpjYGRgYOABYjEgZmJgBEIOIGYB8xgAA/YAN3jaY2BktGOcwMDKwMI4jTGNgYHBHUp/ZZBkaGFgYGJgZWbACgLSXFMYHFT/fLjFeOD/AQY9xjMMbkBhRpAcAN48DQYAeNpjYGBgZoBgGQZGBhDwAfIYwXwWBgMgzQGETAwMqn8+8H649f8/lHX9//9b7Pzf+fWgusCAkY0BzmUE6gHpQwGMDMMeAACbxg7SAAARAUQAAAAB//8AAnjadZBPSsNAGMXfS+yMqYgOhpSuSlKadmUhiVEhEMQzFF22m17BbbvzCh5BXCUn6EG8gjeQ4DepwYo4i+/ffL95j4EDA+CFC7jQuKyIeVHrI3wkleq9F7XrSInKteOeHdda8bOoaeepSc00NWPz/LRec9G8GabyGtEdF7h19z033GAMTK7zbM42xNEZpzYof0RtQ5CUHAQJ73OtVyutc+3b7Ou//b8XNlsPx3jgjUifABdhEohKJJL5iM5p39uqc7X1+sRQSqmGrUVhlsJ4lpmEUVwyT8SUYtg0P9DyNzPADDs+tjrGV6KRCRfsui3eHcL4/p8ZXvfMlcnEU+CLv7hDykOP+AKTPTxbAAB42mNgZGBgAGKuf5KP4vltvjLIMzGAwLV9ig0g+vruFFMQzdjACOJzMIClARh0CTJ42mNgZGBgPPD/AJD8wgAEjA0MjAyogAMAbOQEAQAAAAC7ABEAAAAAAKoAAAH0AAABgAAAAUAACAFAAAgAwAAXAAAAAAAAACoAKgAqADIAbACGAKAAugDSeNpjYGRgYOBkUGFgYgABEMkFhAwM/xn0QAIADdUBdAB42qWQvUoDQRSFv3GjaISUQaymSmGxJoGAsRC0iPYLsU50Y6IxrvlRtPCJJKUPIBb+PIHv4EN4djKuKAqCDHfmu+feOdwZoMCUAJNbAlYUMzaUlM14jjxbngOq7HnOia89z1Pk1vMCa9x7ztPkzfMyJbPj+ZGi6Xp+omxuPD+zaD7meaFg7mb8GrBqHmhwxoAxlm0uiRkpP9X5m26pKRoMxTGR1D49Dv/Yb/91o6l8qL6eu5n2hZQzn68utR9m3FU2cB4t9cdSLG2utI+44Eh/P9bqKO+oJ/WxmXssj77YkrjasZQD6SFddythk3Wtzrf+UF2p076Udla1VNzsERP3kkjVRKel7mp1udXYcHtZSlV7RfmJe1GiFWveluaeKD5/MuJcSk8Tpm/vvwPIbmJleNpjYGKAAFYG7ICTgYGRiZGZkYWRlZGNkZ2Rg5GTLT2nsiDDEEIZsZfmZRqZujmDaDcDAxcI7WIOpS2gtCWUdgQAZkcSmQAAAAFblbO6AAA=) format('woff'); + font-weight: normal; + font-style: normal; +} +.ui.dropdown > .dropdown.icon { + font-family: 'Dropdown'; + line-height: 1; + height: 1em; + width: 1.23em; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + font-weight: normal; + font-style: normal; + text-align: center; +} +.ui.dropdown > .dropdown.icon { + width: auto; +} +.ui.dropdown > .dropdown.icon:before { + content: '\f0d7'; +} + +/* Sub Menu */ +.ui.dropdown .menu .item .dropdown.icon:before { + content: '\f0da' /*rtl:'\f0d9'*/; +} +.ui.dropdown .item .left.dropdown.icon:before, +.ui.dropdown .left.menu .item .dropdown.icon:before { + content: "\f0d9" /*rtl:"\f0da"*/; +} + +/* Vertical Menu Dropdown */ +.ui.vertical.menu .dropdown.item > .dropdown.icon:before { + content: "\f0da" /*rtl:"\f0d9"*/; +} +.ui.dropdown > .clear.icon:before { + content: "\f00d"; +} +/* Icons for Reference (Subsetted in 2.4.0) + .dropdown.down:before { content: "\f0d7"; } + .dropdown.up:before { content: "\f0d8"; } + .dropdown.left:before { content: "\f0d9"; } + .dropdown.right:before { content: "\f0da"; } + .dropdown.close:before { content: "\f00d"; } +*/ + + +/******************************* + User Overrides +*******************************/ + diff --git a/app/static/semantic/components/dropdown.js b/app/static/semantic/components/dropdown.js new file mode 100755 index 0000000..d0cd217 --- /dev/null +++ b/app/static/semantic/components/dropdown.js @@ -0,0 +1,3955 @@ +/*! + * # Semantic UI 2.4.1 - Dropdown + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */ + +;(function ($, window, document, undefined) { + +'use strict'; + +window = (typeof window != 'undefined' && window.Math == Math) + ? window + : (typeof self != 'undefined' && self.Math == Math) + ? self + : Function('return this')() +; + +$.fn.dropdown = function(parameters) { + var + $allModules = $(this), + $document = $(document), + + moduleSelector = $allModules.selector || '', + + hasTouch = ('ontouchstart' in document.documentElement), + time = new Date().getTime(), + performance = [], + + query = arguments[0], + methodInvoked = (typeof query == 'string'), + queryArguments = [].slice.call(arguments, 1), + returnedValue + ; + + $allModules + .each(function(elementIndex) { + var + settings = ( $.isPlainObject(parameters) ) + ? $.extend(true, {}, $.fn.dropdown.settings, parameters) + : $.extend({}, $.fn.dropdown.settings), + + className = settings.className, + message = settings.message, + fields = settings.fields, + keys = settings.keys, + metadata = settings.metadata, + namespace = settings.namespace, + regExp = settings.regExp, + selector = settings.selector, + error = settings.error, + templates = settings.templates, + + eventNamespace = '.' + namespace, + moduleNamespace = 'module-' + namespace, + + $module = $(this), + $context = $(settings.context), + $text = $module.find(selector.text), + $search = $module.find(selector.search), + $sizer = $module.find(selector.sizer), + $input = $module.find(selector.input), + $icon = $module.find(selector.icon), + + $combo = ($module.prev().find(selector.text).length > 0) + ? $module.prev().find(selector.text) + : $module.prev(), + + $menu = $module.children(selector.menu), + $item = $menu.find(selector.item), + + activated = false, + itemActivated = false, + internalChange = false, + element = this, + instance = $module.data(moduleNamespace), + + initialLoad, + pageLostFocus, + willRefocus, + elementNamespace, + id, + selectObserver, + menuObserver, + module + ; + + module = { + + initialize: function() { + module.debug('Initializing dropdown', settings); + + if( module.is.alreadySetup() ) { + module.setup.reference(); + } + else { + + module.setup.layout(); + + if(settings.values) { + module.change.values(settings.values); + } + + module.refreshData(); + + module.save.defaults(); + module.restore.selected(); + + module.create.id(); + module.bind.events(); + + module.observeChanges(); + module.instantiate(); + } + + }, + + instantiate: function() { + module.verbose('Storing instance of dropdown', module); + instance = module; + $module + .data(moduleNamespace, module) + ; + }, + + destroy: function() { + module.verbose('Destroying previous dropdown', $module); + module.remove.tabbable(); + $module + .off(eventNamespace) + .removeData(moduleNamespace) + ; + $menu + .off(eventNamespace) + ; + $document + .off(elementNamespace) + ; + module.disconnect.menuObserver(); + module.disconnect.selectObserver(); + }, + + observeChanges: function() { + if('MutationObserver' in window) { + selectObserver = new MutationObserver(module.event.select.mutation); + menuObserver = new MutationObserver(module.event.menu.mutation); + module.debug('Setting up mutation observer', selectObserver, menuObserver); + module.observe.select(); + module.observe.menu(); + } + }, + + disconnect: { + menuObserver: function() { + if(menuObserver) { + menuObserver.disconnect(); + } + }, + selectObserver: function() { + if(selectObserver) { + selectObserver.disconnect(); + } + } + }, + observe: { + select: function() { + if(module.has.input()) { + selectObserver.observe($module[0], { + childList : true, + subtree : true + }); + } + }, + menu: function() { + if(module.has.menu()) { + menuObserver.observe($menu[0], { + childList : true, + subtree : true + }); + } + } + }, + + create: { + id: function() { + id = (Math.random().toString(16) + '000000000').substr(2, 8); + elementNamespace = '.' + id; + module.verbose('Creating unique id for element', id); + }, + userChoice: function(values) { + var + $userChoices, + $userChoice, + isUserValue, + html + ; + values = values || module.get.userValues(); + if(!values) { + return false; + } + values = $.isArray(values) + ? values + : [values] + ; + $.each(values, function(index, value) { + if(module.get.item(value) === false) { + html = settings.templates.addition( module.add.variables(message.addResult, value) ); + $userChoice = $('
') + .html(html) + .attr('data-' + metadata.value, value) + .attr('data-' + metadata.text, value) + .addClass(className.addition) + .addClass(className.item) + ; + if(settings.hideAdditions) { + $userChoice.addClass(className.hidden); + } + $userChoices = ($userChoices === undefined) + ? $userChoice + : $userChoices.add($userChoice) + ; + module.verbose('Creating user choices for value', value, $userChoice); + } + }); + return $userChoices; + }, + userLabels: function(value) { + var + userValues = module.get.userValues() + ; + if(userValues) { + module.debug('Adding user labels', userValues); + $.each(userValues, function(index, value) { + module.verbose('Adding custom user value'); + module.add.label(value, value); + }); + } + }, + menu: function() { + $menu = $('
') + .addClass(className.menu) + .appendTo($module) + ; + }, + sizer: function() { + $sizer = $('') + .addClass(className.sizer) + .insertAfter($search) + ; + } + }, + + search: function(query) { + query = (query !== undefined) + ? query + : module.get.query() + ; + module.verbose('Searching for query', query); + if(module.has.minCharacters(query)) { + module.filter(query); + } + else { + module.hide(); + } + }, + + select: { + firstUnfiltered: function() { + module.verbose('Selecting first non-filtered element'); + module.remove.selectedItem(); + $item + .not(selector.unselectable) + .not(selector.addition + selector.hidden) + .eq(0) + .addClass(className.selected) + ; + }, + nextAvailable: function($selected) { + $selected = $selected.eq(0); + var + $nextAvailable = $selected.nextAll(selector.item).not(selector.unselectable).eq(0), + $prevAvailable = $selected.prevAll(selector.item).not(selector.unselectable).eq(0), + hasNext = ($nextAvailable.length > 0) + ; + if(hasNext) { + module.verbose('Moving selection to', $nextAvailable); + $nextAvailable.addClass(className.selected); + } + else { + module.verbose('Moving selection to', $prevAvailable); + $prevAvailable.addClass(className.selected); + } + } + }, + + setup: { + api: function() { + var + apiSettings = { + debug : settings.debug, + urlData : { + value : module.get.value(), + query : module.get.query() + }, + on : false + } + ; + module.verbose('First request, initializing API'); + $module + .api(apiSettings) + ; + }, + layout: function() { + if( $module.is('select') ) { + module.setup.select(); + module.setup.returnedObject(); + } + if( !module.has.menu() ) { + module.create.menu(); + } + if( module.is.search() && !module.has.search() ) { + module.verbose('Adding search input'); + $search = $('') + .addClass(className.search) + .prop('autocomplete', 'off') + .insertBefore($text) + ; + } + if( module.is.multiple() && module.is.searchSelection() && !module.has.sizer()) { + module.create.sizer(); + } + if(settings.allowTab) { + module.set.tabbable(); + } + }, + select: function() { + var + selectValues = module.get.selectValues() + ; + module.debug('Dropdown initialized on a select', selectValues); + if( $module.is('select') ) { + $input = $module; + } + // see if select is placed correctly already + if($input.parent(selector.dropdown).length > 0) { + module.debug('UI dropdown already exists. Creating dropdown menu only'); + $module = $input.closest(selector.dropdown); + if( !module.has.menu() ) { + module.create.menu(); + } + $menu = $module.children(selector.menu); + module.setup.menu(selectValues); + } + else { + module.debug('Creating entire dropdown from select'); + $module = $('
') + .attr('class', $input.attr('class') ) + .addClass(className.selection) + .addClass(className.dropdown) + .html( templates.dropdown(selectValues) ) + .insertBefore($input) + ; + if($input.hasClass(className.multiple) && $input.prop('multiple') === false) { + module.error(error.missingMultiple); + $input.prop('multiple', true); + } + if($input.is('[multiple]')) { + module.set.multiple(); + } + if ($input.prop('disabled')) { + module.debug('Disabling dropdown'); + $module.addClass(className.disabled); + } + $input + .removeAttr('class') + .detach() + .prependTo($module) + ; + } + module.refresh(); + }, + menu: function(values) { + $menu.html( templates.menu(values, fields)); + $item = $menu.find(selector.item); + }, + reference: function() { + module.debug('Dropdown behavior was called on select, replacing with closest dropdown'); + // replace module reference + $module = $module.parent(selector.dropdown); + instance = $module.data(moduleNamespace); + element = $module.get(0); + module.refresh(); + module.setup.returnedObject(); + }, + returnedObject: function() { + var + $firstModules = $allModules.slice(0, elementIndex), + $lastModules = $allModules.slice(elementIndex + 1) + ; + // adjust all modules to use correct reference + $allModules = $firstModules.add($module).add($lastModules); + } + }, + + refresh: function() { + module.refreshSelectors(); + module.refreshData(); + }, + + refreshItems: function() { + $item = $menu.find(selector.item); + }, + + refreshSelectors: function() { + module.verbose('Refreshing selector cache'); + $text = $module.find(selector.text); + $search = $module.find(selector.search); + $input = $module.find(selector.input); + $icon = $module.find(selector.icon); + $combo = ($module.prev().find(selector.text).length > 0) + ? $module.prev().find(selector.text) + : $module.prev() + ; + $menu = $module.children(selector.menu); + $item = $menu.find(selector.item); + }, + + refreshData: function() { + module.verbose('Refreshing cached metadata'); + $item + .removeData(metadata.text) + .removeData(metadata.value) + ; + }, + + clearData: function() { + module.verbose('Clearing metadata'); + $item + .removeData(metadata.text) + .removeData(metadata.value) + ; + $module + .removeData(metadata.defaultText) + .removeData(metadata.defaultValue) + .removeData(metadata.placeholderText) + ; + }, + + toggle: function() { + module.verbose('Toggling menu visibility'); + if( !module.is.active() ) { + module.show(); + } + else { + module.hide(); + } + }, + + show: function(callback) { + callback = $.isFunction(callback) + ? callback + : function(){} + ; + if(!module.can.show() && module.is.remote()) { + module.debug('No API results retrieved, searching before show'); + module.queryRemote(module.get.query(), module.show); + } + if( module.can.show() && !module.is.active() ) { + module.debug('Showing dropdown'); + if(module.has.message() && !(module.has.maxSelections() || module.has.allResultsFiltered()) ) { + module.remove.message(); + } + if(module.is.allFiltered()) { + return true; + } + if(settings.onShow.call(element) !== false) { + module.animate.show(function() { + if( module.can.click() ) { + module.bind.intent(); + } + if(module.has.menuSearch()) { + module.focusSearch(); + } + module.set.visible(); + callback.call(element); + }); + } + } + }, + + hide: function(callback) { + callback = $.isFunction(callback) + ? callback + : function(){} + ; + if( module.is.active() && !module.is.animatingOutward() ) { + module.debug('Hiding dropdown'); + if(settings.onHide.call(element) !== false) { + module.animate.hide(function() { + module.remove.visible(); + callback.call(element); + }); + } + } + }, + + hideOthers: function() { + module.verbose('Finding other dropdowns to hide'); + $allModules + .not($module) + .has(selector.menu + '.' + className.visible) + .dropdown('hide') + ; + }, + + hideMenu: function() { + module.verbose('Hiding menu instantaneously'); + module.remove.active(); + module.remove.visible(); + $menu.transition('hide'); + }, + + hideSubMenus: function() { + var + $subMenus = $menu.children(selector.item).find(selector.menu) + ; + module.verbose('Hiding sub menus', $subMenus); + $subMenus.transition('hide'); + }, + + bind: { + events: function() { + if(hasTouch) { + module.bind.touchEvents(); + } + module.bind.keyboardEvents(); + module.bind.inputEvents(); + module.bind.mouseEvents(); + }, + touchEvents: function() { + module.debug('Touch device detected binding additional touch events'); + if( module.is.searchSelection() ) { + // do nothing special yet + } + else if( module.is.single() ) { + $module + .on('touchstart' + eventNamespace, module.event.test.toggle) + ; + } + $menu + .on('touchstart' + eventNamespace, selector.item, module.event.item.mouseenter) + ; + }, + keyboardEvents: function() { + module.verbose('Binding keyboard events'); + $module + .on('keydown' + eventNamespace, module.event.keydown) + ; + if( module.has.search() ) { + $module + .on(module.get.inputEvent() + eventNamespace, selector.search, module.event.input) + ; + } + if( module.is.multiple() ) { + $document + .on('keydown' + elementNamespace, module.event.document.keydown) + ; + } + }, + inputEvents: function() { + module.verbose('Binding input change events'); + $module + .on('change' + eventNamespace, selector.input, module.event.change) + ; + }, + mouseEvents: function() { + module.verbose('Binding mouse events'); + if(module.is.multiple()) { + $module + .on('click' + eventNamespace, selector.label, module.event.label.click) + .on('click' + eventNamespace, selector.remove, module.event.remove.click) + ; + } + if( module.is.searchSelection() ) { + $module + .on('mousedown' + eventNamespace, module.event.mousedown) + .on('mouseup' + eventNamespace, module.event.mouseup) + .on('mousedown' + eventNamespace, selector.menu, module.event.menu.mousedown) + .on('mouseup' + eventNamespace, selector.menu, module.event.menu.mouseup) + .on('click' + eventNamespace, selector.icon, module.event.icon.click) + .on('focus' + eventNamespace, selector.search, module.event.search.focus) + .on('click' + eventNamespace, selector.search, module.event.search.focus) + .on('blur' + eventNamespace, selector.search, module.event.search.blur) + .on('click' + eventNamespace, selector.text, module.event.text.focus) + ; + if(module.is.multiple()) { + $module + .on('click' + eventNamespace, module.event.click) + ; + } + } + else { + if(settings.on == 'click') { + $module + .on('click' + eventNamespace, module.event.test.toggle) + ; + } + else if(settings.on == 'hover') { + $module + .on('mouseenter' + eventNamespace, module.delay.show) + .on('mouseleave' + eventNamespace, module.delay.hide) + ; + } + else { + $module + .on(settings.on + eventNamespace, module.toggle) + ; + } + $module + .on('click' + eventNamespace, selector.icon, module.event.icon.click) + .on('mousedown' + eventNamespace, module.event.mousedown) + .on('mouseup' + eventNamespace, module.event.mouseup) + .on('focus' + eventNamespace, module.event.focus) + ; + if(module.has.menuSearch() ) { + $module + .on('blur' + eventNamespace, selector.search, module.event.search.blur) + ; + } + else { + $module + .on('blur' + eventNamespace, module.event.blur) + ; + } + } + $menu + .on('mouseenter' + eventNamespace, selector.item, module.event.item.mouseenter) + .on('mouseleave' + eventNamespace, selector.item, module.event.item.mouseleave) + .on('click' + eventNamespace, selector.item, module.event.item.click) + ; + }, + intent: function() { + module.verbose('Binding hide intent event to document'); + if(hasTouch) { + $document + .on('touchstart' + elementNamespace, module.event.test.touch) + .on('touchmove' + elementNamespace, module.event.test.touch) + ; + } + $document + .on('click' + elementNamespace, module.event.test.hide) + ; + } + }, + + unbind: { + intent: function() { + module.verbose('Removing hide intent event from document'); + if(hasTouch) { + $document + .off('touchstart' + elementNamespace) + .off('touchmove' + elementNamespace) + ; + } + $document + .off('click' + elementNamespace) + ; + } + }, + + filter: function(query) { + var + searchTerm = (query !== undefined) + ? query + : module.get.query(), + afterFiltered = function() { + if(module.is.multiple()) { + module.filterActive(); + } + if(query || (!query && module.get.activeItem().length == 0)) { + module.select.firstUnfiltered(); + } + if( module.has.allResultsFiltered() ) { + if( settings.onNoResults.call(element, searchTerm) ) { + if(settings.allowAdditions) { + if(settings.hideAdditions) { + module.verbose('User addition with no menu, setting empty style'); + module.set.empty(); + module.hideMenu(); + } + } + else { + module.verbose('All items filtered, showing message', searchTerm); + module.add.message(message.noResults); + } + } + else { + module.verbose('All items filtered, hiding dropdown', searchTerm); + module.hideMenu(); + } + } + else { + module.remove.empty(); + module.remove.message(); + } + if(settings.allowAdditions) { + module.add.userSuggestion(query); + } + if(module.is.searchSelection() && module.can.show() && module.is.focusedOnSearch() ) { + module.show(); + } + } + ; + if(settings.useLabels && module.has.maxSelections()) { + return; + } + if(settings.apiSettings) { + if( module.can.useAPI() ) { + module.queryRemote(searchTerm, function() { + if(settings.filterRemoteData) { + module.filterItems(searchTerm); + } + afterFiltered(); + }); + } + else { + module.error(error.noAPI); + } + } + else { + module.filterItems(searchTerm); + afterFiltered(); + } + }, + + queryRemote: function(query, callback) { + var + apiSettings = { + errorDuration : false, + cache : 'local', + throttle : settings.throttle, + urlData : { + query: query + }, + onError: function() { + module.add.message(message.serverError); + callback(); + }, + onFailure: function() { + module.add.message(message.serverError); + callback(); + }, + onSuccess : function(response) { + var + values = response[fields.remoteValues], + hasRemoteValues = ($.isArray(values) && values.length > 0) + ; + if(hasRemoteValues) { + module.remove.message(); + module.setup.menu({ + values: response[fields.remoteValues] + }); + } + else { + module.add.message(message.noResults); + } + callback(); + } + } + ; + if( !$module.api('get request') ) { + module.setup.api(); + } + apiSettings = $.extend(true, {}, apiSettings, settings.apiSettings); + $module + .api('setting', apiSettings) + .api('query') + ; + }, + + filterItems: function(query) { + var + searchTerm = (query !== undefined) + ? query + : module.get.query(), + results = null, + escapedTerm = module.escape.string(searchTerm), + beginsWithRegExp = new RegExp('^' + escapedTerm, 'igm') + ; + // avoid loop if we're matching nothing + if( module.has.query() ) { + results = []; + + module.verbose('Searching for matching values', searchTerm); + $item + .each(function(){ + var + $choice = $(this), + text, + value + ; + if(settings.match == 'both' || settings.match == 'text') { + text = String(module.get.choiceText($choice, false)); + if(text.search(beginsWithRegExp) !== -1) { + results.push(this); + return true; + } + else if (settings.fullTextSearch === 'exact' && module.exactSearch(searchTerm, text)) { + results.push(this); + return true; + } + else if (settings.fullTextSearch === true && module.fuzzySearch(searchTerm, text)) { + results.push(this); + return true; + } + } + if(settings.match == 'both' || settings.match == 'value') { + value = String(module.get.choiceValue($choice, text)); + if(value.search(beginsWithRegExp) !== -1) { + results.push(this); + return true; + } + else if (settings.fullTextSearch === 'exact' && module.exactSearch(searchTerm, value)) { + results.push(this); + return true; + } + else if (settings.fullTextSearch === true && module.fuzzySearch(searchTerm, value)) { + results.push(this); + return true; + } + } + }) + ; + } + module.debug('Showing only matched items', searchTerm); + module.remove.filteredItem(); + if(results) { + $item + .not(results) + .addClass(className.filtered) + ; + } + }, + + fuzzySearch: function(query, term) { + var + termLength = term.length, + queryLength = query.length + ; + query = query.toLowerCase(); + term = term.toLowerCase(); + if(queryLength > termLength) { + return false; + } + if(queryLength === termLength) { + return (query === term); + } + search: for (var characterIndex = 0, nextCharacterIndex = 0; characterIndex < queryLength; characterIndex++) { + var + queryCharacter = query.charCodeAt(characterIndex) + ; + while(nextCharacterIndex < termLength) { + if(term.charCodeAt(nextCharacterIndex++) === queryCharacter) { + continue search; + } + } + return false; + } + return true; + }, + exactSearch: function (query, term) { + query = query.toLowerCase(); + term = term.toLowerCase(); + if(term.indexOf(query) > -1) { + return true; + } + return false; + }, + filterActive: function() { + if(settings.useLabels) { + $item.filter('.' + className.active) + .addClass(className.filtered) + ; + } + }, + + focusSearch: function(skipHandler) { + if( module.has.search() && !module.is.focusedOnSearch() ) { + if(skipHandler) { + $module.off('focus' + eventNamespace, selector.search); + $search.focus(); + $module.on('focus' + eventNamespace, selector.search, module.event.search.focus); + } + else { + $search.focus(); + } + } + }, + + forceSelection: function() { + var + $currentlySelected = $item.not(className.filtered).filter('.' + className.selected).eq(0), + $activeItem = $item.not(className.filtered).filter('.' + className.active).eq(0), + $selectedItem = ($currentlySelected.length > 0) + ? $currentlySelected + : $activeItem, + hasSelected = ($selectedItem.length > 0) + ; + if(hasSelected && !module.is.multiple()) { + module.debug('Forcing partial selection to selected item', $selectedItem); + module.event.item.click.call($selectedItem, {}, true); + return; + } + else { + if(settings.allowAdditions) { + module.set.selected(module.get.query()); + module.remove.searchTerm(); + } + else { + module.remove.searchTerm(); + } + } + }, + + change: { + values: function(values) { + if(!settings.allowAdditions) { + module.clear(); + } + module.debug('Creating dropdown with specified values', values); + module.setup.menu({values: values}); + $.each(values, function(index, item) { + if(item.selected == true) { + module.debug('Setting initial selection to', item.value); + module.set.selected(item.value); + return true; + } + }); + } + }, + + event: { + change: function() { + if(!internalChange) { + module.debug('Input changed, updating selection'); + module.set.selected(); + } + }, + focus: function() { + if(settings.showOnFocus && !activated && module.is.hidden() && !pageLostFocus) { + module.show(); + } + }, + blur: function(event) { + pageLostFocus = (document.activeElement === this); + if(!activated && !pageLostFocus) { + module.remove.activeLabel(); + module.hide(); + } + }, + mousedown: function() { + if(module.is.searchSelection()) { + // prevent menu hiding on immediate re-focus + willRefocus = true; + } + else { + // prevents focus callback from occurring on mousedown + activated = true; + } + }, + mouseup: function() { + if(module.is.searchSelection()) { + // prevent menu hiding on immediate re-focus + willRefocus = false; + } + else { + activated = false; + } + }, + click: function(event) { + var + $target = $(event.target) + ; + // focus search + if($target.is($module)) { + if(!module.is.focusedOnSearch()) { + module.focusSearch(); + } + else { + module.show(); + } + } + }, + search: { + focus: function() { + activated = true; + if(module.is.multiple()) { + module.remove.activeLabel(); + } + if(settings.showOnFocus) { + module.search(); + } + }, + blur: function(event) { + pageLostFocus = (document.activeElement === this); + if(module.is.searchSelection() && !willRefocus) { + if(!itemActivated && !pageLostFocus) { + if(settings.forceSelection) { + module.forceSelection(); + } + module.hide(); + } + } + willRefocus = false; + } + }, + icon: { + click: function(event) { + if($icon.hasClass(className.clear)) { + module.clear(); + } + else if (module.can.click()) { + module.toggle(); + } + } + }, + text: { + focus: function(event) { + activated = true; + module.focusSearch(); + } + }, + input: function(event) { + if(module.is.multiple() || module.is.searchSelection()) { + module.set.filtered(); + } + clearTimeout(module.timer); + module.timer = setTimeout(module.search, settings.delay.search); + }, + label: { + click: function(event) { + var + $label = $(this), + $labels = $module.find(selector.label), + $activeLabels = $labels.filter('.' + className.active), + $nextActive = $label.nextAll('.' + className.active), + $prevActive = $label.prevAll('.' + className.active), + $range = ($nextActive.length > 0) + ? $label.nextUntil($nextActive).add($activeLabels).add($label) + : $label.prevUntil($prevActive).add($activeLabels).add($label) + ; + if(event.shiftKey) { + $activeLabels.removeClass(className.active); + $range.addClass(className.active); + } + else if(event.ctrlKey) { + $label.toggleClass(className.active); + } + else { + $activeLabels.removeClass(className.active); + $label.addClass(className.active); + } + settings.onLabelSelect.apply(this, $labels.filter('.' + className.active)); + } + }, + remove: { + click: function() { + var + $label = $(this).parent() + ; + if( $label.hasClass(className.active) ) { + // remove all selected labels + module.remove.activeLabels(); + } + else { + // remove this label only + module.remove.activeLabels( $label ); + } + } + }, + test: { + toggle: function(event) { + var + toggleBehavior = (module.is.multiple()) + ? module.show + : module.toggle + ; + if(module.is.bubbledLabelClick(event) || module.is.bubbledIconClick(event)) { + return; + } + if( module.determine.eventOnElement(event, toggleBehavior) ) { + event.preventDefault(); + } + }, + touch: function(event) { + module.determine.eventOnElement(event, function() { + if(event.type == 'touchstart') { + module.timer = setTimeout(function() { + module.hide(); + }, settings.delay.touch); + } + else if(event.type == 'touchmove') { + clearTimeout(module.timer); + } + }); + event.stopPropagation(); + }, + hide: function(event) { + module.determine.eventInModule(event, module.hide); + } + }, + select: { + mutation: function(mutations) { + module.debug(' removing selected option', removedValue); + newValue = module.remove.arrayValue(removedValue, values); + module.remove.optionValue(removedValue); + } + else { + module.verbose('Removing from delimited values', removedValue); + newValue = module.remove.arrayValue(removedValue, values); + newValue = newValue.join(settings.delimiter); + } + if(settings.fireOnInit === false && module.is.initialLoad()) { + module.verbose('No callback on initial load', settings.onRemove); + } + else { + settings.onRemove.call(element, removedValue, removedText, $removedItem); + } + module.set.value(newValue, removedText, $removedItem); + module.check.maxSelections(); + }, + arrayValue: function(removedValue, values) { + if( !$.isArray(values) ) { + values = [values]; + } + values = $.grep(values, function(value){ + return (removedValue != value); + }); + module.verbose('Removed value from delimited string', removedValue, values); + return values; + }, + label: function(value, shouldAnimate) { + var + $labels = $module.find(selector.label), + $removedLabel = $labels.filter('[data-' + metadata.value + '="' + module.escape.string(value) +'"]') + ; + module.verbose('Removing label', $removedLabel); + $removedLabel.remove(); + }, + activeLabels: function($activeLabels) { + $activeLabels = $activeLabels || $module.find(selector.label).filter('.' + className.active); + module.verbose('Removing active label selections', $activeLabels); + module.remove.labels($activeLabels); + }, + labels: function($labels) { + $labels = $labels || $module.find(selector.label); + module.verbose('Removing labels', $labels); + $labels + .each(function(){ + var + $label = $(this), + value = $label.data(metadata.value), + stringValue = (value !== undefined) + ? String(value) + : value, + isUserValue = module.is.userValue(stringValue) + ; + if(settings.onLabelRemove.call($label, value) === false) { + module.debug('Label remove callback cancelled removal'); + return; + } + module.remove.message(); + if(isUserValue) { + module.remove.value(stringValue); + module.remove.label(stringValue); + } + else { + // selected will also remove label + module.remove.selected(stringValue); + } + }) + ; + }, + tabbable: function() { + if( module.is.searchSelection() ) { + module.debug('Searchable dropdown initialized'); + $search + .removeAttr('tabindex') + ; + $menu + .removeAttr('tabindex') + ; + } + else { + module.debug('Simple selection dropdown initialized'); + $module + .removeAttr('tabindex') + ; + $menu + .removeAttr('tabindex') + ; + } + }, + clearable: function() { + $icon.removeClass(className.clear); + } + }, + + has: { + menuSearch: function() { + return (module.has.search() && $search.closest($menu).length > 0); + }, + search: function() { + return ($search.length > 0); + }, + sizer: function() { + return ($sizer.length > 0); + }, + selectInput: function() { + return ( $input.is('select') ); + }, + minCharacters: function(searchTerm) { + if(settings.minCharacters) { + searchTerm = (searchTerm !== undefined) + ? String(searchTerm) + : String(module.get.query()) + ; + return (searchTerm.length >= settings.minCharacters); + } + return true; + }, + firstLetter: function($item, letter) { + var + text, + firstLetter + ; + if(!$item || $item.length === 0 || typeof letter !== 'string') { + return false; + } + text = module.get.choiceText($item, false); + letter = letter.toLowerCase(); + firstLetter = String(text).charAt(0).toLowerCase(); + return (letter == firstLetter); + }, + input: function() { + return ($input.length > 0); + }, + items: function() { + return ($item.length > 0); + }, + menu: function() { + return ($menu.length > 0); + }, + message: function() { + return ($menu.children(selector.message).length !== 0); + }, + label: function(value) { + var + escapedValue = module.escape.value(value), + $labels = $module.find(selector.label) + ; + if(settings.ignoreCase) { + escapedValue = escapedValue.toLowerCase(); + } + return ($labels.filter('[data-' + metadata.value + '="' + module.escape.string(escapedValue) +'"]').length > 0); + }, + maxSelections: function() { + return (settings.maxSelections && module.get.selectionCount() >= settings.maxSelections); + }, + allResultsFiltered: function() { + var + $normalResults = $item.not(selector.addition) + ; + return ($normalResults.filter(selector.unselectable).length === $normalResults.length); + }, + userSuggestion: function() { + return ($menu.children(selector.addition).length > 0); + }, + query: function() { + return (module.get.query() !== ''); + }, + value: function(value) { + return (settings.ignoreCase) + ? module.has.valueIgnoringCase(value) + : module.has.valueMatchingCase(value) + ; + }, + valueMatchingCase: function(value) { + var + values = module.get.values(), + hasValue = $.isArray(values) + ? values && ($.inArray(value, values) !== -1) + : (values == value) + ; + return (hasValue) + ? true + : false + ; + }, + valueIgnoringCase: function(value) { + var + values = module.get.values(), + hasValue = false + ; + if(!$.isArray(values)) { + values = [values]; + } + $.each(values, function(index, existingValue) { + if(String(value).toLowerCase() == String(existingValue).toLowerCase()) { + hasValue = true; + return false; + } + }); + return hasValue; + } + }, + + is: { + active: function() { + return $module.hasClass(className.active); + }, + animatingInward: function() { + return $menu.transition('is inward'); + }, + animatingOutward: function() { + return $menu.transition('is outward'); + }, + bubbledLabelClick: function(event) { + return $(event.target).is('select, input') && $module.closest('label').length > 0; + }, + bubbledIconClick: function(event) { + return $(event.target).closest($icon).length > 0; + }, + alreadySetup: function() { + return ($module.is('select') && $module.parent(selector.dropdown).data(moduleNamespace) !== undefined && $module.prev().length === 0); + }, + animating: function($subMenu) { + return ($subMenu) + ? $subMenu.transition && $subMenu.transition('is animating') + : $menu.transition && $menu.transition('is animating') + ; + }, + leftward: function($subMenu) { + var $selectedMenu = $subMenu || $menu; + return $selectedMenu.hasClass(className.leftward); + }, + disabled: function() { + return $module.hasClass(className.disabled); + }, + focused: function() { + return (document.activeElement === $module[0]); + }, + focusedOnSearch: function() { + return (document.activeElement === $search[0]); + }, + allFiltered: function() { + return( (module.is.multiple() || module.has.search()) && !(settings.hideAdditions == false && module.has.userSuggestion()) && !module.has.message() && module.has.allResultsFiltered() ); + }, + hidden: function($subMenu) { + return !module.is.visible($subMenu); + }, + initialLoad: function() { + return initialLoad; + }, + inObject: function(needle, object) { + var + found = false + ; + $.each(object, function(index, property) { + if(property == needle) { + found = true; + return true; + } + }); + return found; + }, + multiple: function() { + return $module.hasClass(className.multiple); + }, + remote: function() { + return settings.apiSettings && module.can.useAPI(); + }, + single: function() { + return !module.is.multiple(); + }, + selectMutation: function(mutations) { + var + selectChanged = false + ; + $.each(mutations, function(index, mutation) { + if(mutation.target && $(mutation.target).is('select')) { + selectChanged = true; + return true; + } + }); + return selectChanged; + }, + search: function() { + return $module.hasClass(className.search); + }, + searchSelection: function() { + return ( module.has.search() && $search.parent(selector.dropdown).length === 1 ); + }, + selection: function() { + return $module.hasClass(className.selection); + }, + userValue: function(value) { + return ($.inArray(value, module.get.userValues()) !== -1); + }, + upward: function($menu) { + var $element = $menu || $module; + return $element.hasClass(className.upward); + }, + visible: function($subMenu) { + return ($subMenu) + ? $subMenu.hasClass(className.visible) + : $menu.hasClass(className.visible) + ; + }, + verticallyScrollableContext: function() { + var + overflowY = ($context.get(0) !== window) + ? $context.css('overflow-y') + : false + ; + return (overflowY == 'auto' || overflowY == 'scroll'); + }, + horizontallyScrollableContext: function() { + var + overflowX = ($context.get(0) !== window) + ? $context.css('overflow-X') + : false + ; + return (overflowX == 'auto' || overflowX == 'scroll'); + } + }, + + can: { + activate: function($item) { + if(settings.useLabels) { + return true; + } + if(!module.has.maxSelections()) { + return true; + } + if(module.has.maxSelections() && $item.hasClass(className.active)) { + return true; + } + return false; + }, + openDownward: function($subMenu) { + var + $currentMenu = $subMenu || $menu, + canOpenDownward = true, + onScreen = {}, + calculations + ; + $currentMenu + .addClass(className.loading) + ; + calculations = { + context: { + offset : ($context.get(0) === window) + ? { top: 0, left: 0} + : $context.offset(), + scrollTop : $context.scrollTop(), + height : $context.outerHeight() + }, + menu : { + offset: $currentMenu.offset(), + height: $currentMenu.outerHeight() + } + }; + if(module.is.verticallyScrollableContext()) { + calculations.menu.offset.top += calculations.context.scrollTop; + } + onScreen = { + above : (calculations.context.scrollTop) <= calculations.menu.offset.top - calculations.context.offset.top - calculations.menu.height, + below : (calculations.context.scrollTop + calculations.context.height) >= calculations.menu.offset.top - calculations.context.offset.top + calculations.menu.height + }; + if(onScreen.below) { + module.verbose('Dropdown can fit in context downward', onScreen); + canOpenDownward = true; + } + else if(!onScreen.below && !onScreen.above) { + module.verbose('Dropdown cannot fit in either direction, favoring downward', onScreen); + canOpenDownward = true; + } + else { + module.verbose('Dropdown cannot fit below, opening upward', onScreen); + canOpenDownward = false; + } + $currentMenu.removeClass(className.loading); + return canOpenDownward; + }, + openRightward: function($subMenu) { + var + $currentMenu = $subMenu || $menu, + canOpenRightward = true, + isOffscreenRight = false, + calculations + ; + $currentMenu + .addClass(className.loading) + ; + calculations = { + context: { + offset : ($context.get(0) === window) + ? { top: 0, left: 0} + : $context.offset(), + scrollLeft : $context.scrollLeft(), + width : $context.outerWidth() + }, + menu: { + offset : $currentMenu.offset(), + width : $currentMenu.outerWidth() + } + }; + if(module.is.horizontallyScrollableContext()) { + calculations.menu.offset.left += calculations.context.scrollLeft; + } + isOffscreenRight = (calculations.menu.offset.left - calculations.context.offset.left + calculations.menu.width >= calculations.context.scrollLeft + calculations.context.width); + if(isOffscreenRight) { + module.verbose('Dropdown cannot fit in context rightward', isOffscreenRight); + canOpenRightward = false; + } + $currentMenu.removeClass(className.loading); + return canOpenRightward; + }, + click: function() { + return (hasTouch || settings.on == 'click'); + }, + extendSelect: function() { + return settings.allowAdditions || settings.apiSettings; + }, + show: function() { + return !module.is.disabled() && (module.has.items() || module.has.message()); + }, + useAPI: function() { + return $.fn.api !== undefined; + } + }, + + animate: { + show: function(callback, $subMenu) { + var + $currentMenu = $subMenu || $menu, + start = ($subMenu) + ? function() {} + : function() { + module.hideSubMenus(); + module.hideOthers(); + module.set.active(); + }, + transition + ; + callback = $.isFunction(callback) + ? callback + : function(){} + ; + module.verbose('Doing menu show animation', $currentMenu); + module.set.direction($subMenu); + transition = module.get.transition($subMenu); + if( module.is.selection() ) { + module.set.scrollPosition(module.get.selectedItem(), true); + } + if( module.is.hidden($currentMenu) || module.is.animating($currentMenu) ) { + if(transition == 'none') { + start(); + $currentMenu.transition('show'); + callback.call(element); + } + else if($.fn.transition !== undefined && $module.transition('is supported')) { + $currentMenu + .transition({ + animation : transition + ' in', + debug : settings.debug, + verbose : settings.verbose, + duration : settings.duration, + queue : true, + onStart : start, + onComplete : function() { + callback.call(element); + } + }) + ; + } + else { + module.error(error.noTransition, transition); + } + } + }, + hide: function(callback, $subMenu) { + var + $currentMenu = $subMenu || $menu, + duration = ($subMenu) + ? (settings.duration * 0.9) + : settings.duration, + start = ($subMenu) + ? function() {} + : function() { + if( module.can.click() ) { + module.unbind.intent(); + } + module.remove.active(); + }, + transition = module.get.transition($subMenu) + ; + callback = $.isFunction(callback) + ? callback + : function(){} + ; + if( module.is.visible($currentMenu) || module.is.animating($currentMenu) ) { + module.verbose('Doing menu hide animation', $currentMenu); + + if(transition == 'none') { + start(); + $currentMenu.transition('hide'); + callback.call(element); + } + else if($.fn.transition !== undefined && $module.transition('is supported')) { + $currentMenu + .transition({ + animation : transition + ' out', + duration : settings.duration, + debug : settings.debug, + verbose : settings.verbose, + queue : false, + onStart : start, + onComplete : function() { + callback.call(element); + } + }) + ; + } + else { + module.error(error.transition); + } + } + } + }, + + hideAndClear: function() { + module.remove.searchTerm(); + if( module.has.maxSelections() ) { + return; + } + if(module.has.search()) { + module.hide(function() { + module.remove.filteredItem(); + }); + } + else { + module.hide(); + } + }, + + delay: { + show: function() { + module.verbose('Delaying show event to ensure user intent'); + clearTimeout(module.timer); + module.timer = setTimeout(module.show, settings.delay.show); + }, + hide: function() { + module.verbose('Delaying hide event to ensure user intent'); + clearTimeout(module.timer); + module.timer = setTimeout(module.hide, settings.delay.hide); + } + }, + + escape: { + value: function(value) { + var + multipleValues = $.isArray(value), + stringValue = (typeof value === 'string'), + isUnparsable = (!stringValue && !multipleValues), + hasQuotes = (stringValue && value.search(regExp.quote) !== -1), + values = [] + ; + if(isUnparsable || !hasQuotes) { + return value; + } + module.debug('Encoding quote values for use in select', value); + if(multipleValues) { + $.each(value, function(index, value){ + values.push(value.replace(regExp.quote, '"')); + }); + return values; + } + return value.replace(regExp.quote, '"'); + }, + string: function(text) { + text = String(text); + return text.replace(regExp.escape, '\\$&'); + } + }, + + setting: function(name, value) { + module.debug('Changing setting', name, value); + if( $.isPlainObject(name) ) { + $.extend(true, settings, name); + } + else if(value !== undefined) { + if($.isPlainObject(settings[name])) { + $.extend(true, settings[name], value); + } + else { + settings[name] = value; + } + } + else { + return settings[name]; + } + }, + internal: function(name, value) { + if( $.isPlainObject(name) ) { + $.extend(true, module, name); + } + else if(value !== undefined) { + module[name] = value; + } + else { + return module[name]; + } + }, + debug: function() { + if(!settings.silent && settings.debug) { + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':'); + module.debug.apply(console, arguments); + } + } + }, + verbose: function() { + if(!settings.silent && settings.verbose && settings.debug) { + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':'); + module.verbose.apply(console, arguments); + } + } + }, + error: function() { + if(!settings.silent) { + module.error = Function.prototype.bind.call(console.error, console, settings.name + ':'); + module.error.apply(console, arguments); + } + }, + performance: { + log: function(message) { + var + currentTime, + executionTime, + previousTime + ; + if(settings.performance) { + currentTime = new Date().getTime(); + previousTime = time || currentTime; + executionTime = currentTime - previousTime; + time = currentTime; + performance.push({ + 'Name' : message[0], + 'Arguments' : [].slice.call(message, 1) || '', + 'Element' : element, + 'Execution Time' : executionTime + }); + } + clearTimeout(module.performance.timer); + module.performance.timer = setTimeout(module.performance.display, 500); + }, + display: function() { + var + title = settings.name + ':', + totalTime = 0 + ; + time = false; + clearTimeout(module.performance.timer); + $.each(performance, function(index, data) { + totalTime += data['Execution Time']; + }); + title += ' ' + totalTime + 'ms'; + if(moduleSelector) { + title += ' \'' + moduleSelector + '\''; + } + if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { + console.groupCollapsed(title); + if(console.table) { + console.table(performance); + } + else { + $.each(performance, function(index, data) { + console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); + }); + } + console.groupEnd(); + } + performance = []; + } + }, + invoke: function(query, passedArguments, context) { + var + object = instance, + maxDepth, + found, + response + ; + passedArguments = passedArguments || queryArguments; + context = element || context; + if(typeof query == 'string' && object !== undefined) { + query = query.split(/[\. ]/); + maxDepth = query.length - 1; + $.each(query, function(depth, value) { + var camelCaseValue = (depth != maxDepth) + ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) + : query + ; + if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) { + object = object[camelCaseValue]; + } + else if( object[camelCaseValue] !== undefined ) { + found = object[camelCaseValue]; + return false; + } + else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) { + object = object[value]; + } + else if( object[value] !== undefined ) { + found = object[value]; + return false; + } + else { + module.error(error.method, query); + return false; + } + }); + } + if ( $.isFunction( found ) ) { + response = found.apply(context, passedArguments); + } + else if(found !== undefined) { + response = found; + } + if($.isArray(returnedValue)) { + returnedValue.push(response); + } + else if(returnedValue !== undefined) { + returnedValue = [returnedValue, response]; + } + else if(response !== undefined) { + returnedValue = response; + } + return found; + } + }; + + if(methodInvoked) { + if(instance === undefined) { + module.initialize(); + } + module.invoke(query); + } + else { + if(instance !== undefined) { + instance.invoke('destroy'); + } + module.initialize(); + } + }) + ; + return (returnedValue !== undefined) + ? returnedValue + : $allModules + ; +}; + +$.fn.dropdown.settings = { + + silent : false, + debug : false, + verbose : false, + performance : true, + + on : 'click', // what event should show menu action on item selection + action : 'activate', // action on item selection (nothing, activate, select, combo, hide, function(){}) + + values : false, // specify values to use for dropdown + + clearable : false, // whether the value of the dropdown can be cleared + + apiSettings : false, + selectOnKeydown : true, // Whether selection should occur automatically when keyboard shortcuts used + minCharacters : 0, // Minimum characters required to trigger API call + + filterRemoteData : false, // Whether API results should be filtered after being returned for query term + saveRemoteData : true, // Whether remote name/value pairs should be stored in sessionStorage to allow remote data to be restored on page refresh + + throttle : 200, // How long to wait after last user input to search remotely + + context : window, // Context to use when determining if on screen + direction : 'auto', // Whether dropdown should always open in one direction + keepOnScreen : true, // Whether dropdown should check whether it is on screen before showing + + match : 'both', // what to match against with search selection (both, text, or label) + fullTextSearch : false, // search anywhere in value (set to 'exact' to require exact matches) + + placeholder : 'auto', // whether to convert blank the values will be delimited with this character + + showOnFocus : true, // show menu on focus + allowReselection : false, // whether current value should trigger callbacks when reselected + allowTab : true, // add tabindex to element + allowCategorySelection : false, // allow elements with sub-menus to be selected + + fireOnInit : false, // Whether callbacks should fire when initializing dropdown values + + transition : 'auto', // auto transition will slide down or up based on direction + duration : 200, // duration of transition + + glyphWidth : 1.037, // widest glyph width in em (W is 1.037 em) used to calculate multiselect input width + + // label settings on multi-select + label: { + transition : 'scale', + duration : 200, + variation : false + }, + + // delay before event + delay : { + hide : 300, + show : 200, + search : 20, + touch : 50 + }, + + /* Callbacks */ + onChange : function(value, text, $selected){}, + onAdd : function(value, text, $selected){}, + onRemove : function(value, text, $selected){}, + + onLabelSelect : function($selectedLabels){}, + onLabelCreate : function(value, text) { return $(this); }, + onLabelRemove : function(value) { return true; }, + onNoResults : function(searchTerm) { return true; }, + onShow : function(){}, + onHide : function(){}, + + /* Component */ + name : 'Dropdown', + namespace : 'dropdown', + + message: { + addResult : 'Add {term}', + count : '{count} selected', + maxSelections : 'Max {maxCount} selections', + noResults : 'No results found.', + serverError : 'There was an error contacting the server' + }, + + error : { + action : 'You called a dropdown action that was not defined', + alreadySetup : 'Once a select has been initialized behaviors must be called on the created ui dropdown', + labels : 'Allowing user additions currently requires the use of labels.', + missingMultiple : ' removing selected option",e),i=m.remove.arrayValue(e,a),m.remove.optionValue(e)):(m.verbose("Removing from delimited values",e),i=(i=m.remove.arrayValue(e,a)).join(h.delimiter)),!1===h.fireOnInit&&m.is.initialLoad()?m.verbose("No callback on initial load",h.onRemove):h.onRemove.call(M,e,t,n),m.set.value(i,t,n),m.check.maxSelections()},arrayValue:function(t,e){return X.isArray(e)||(e=[e]),e=X.grep(e,function(e){return t!=e}),m.verbose("Removed value from delimited string",t,e),e},label:function(e,t){var n=S.find(w.label).filter("[data-"+b.value+'="'+m.escape.string(e)+'"]');m.verbose("Removing label",n),n.remove()},activeLabels:function(e){e=e||S.find(w.label).filter("."+g.active),m.verbose("Removing active label selections",e),m.remove.labels(e)},labels:function(e){e=e||S.find(w.label),m.verbose("Removing labels",e),e.each(function(){var e=X(this),t=e.data(b.value),n=t!==J?String(t):t,i=m.is.userValue(n);!1!==h.onLabelRemove.call(e,t)?(m.remove.message(),i?(m.remove.value(n),m.remove.label(n)):m.remove.selected(n)):m.debug("Label remove callback cancelled removal")})},tabbable:function(){m.is.searchSelection()?(m.debug("Searchable dropdown initialized"),T.removeAttr("tabindex")):(m.debug("Simple selection dropdown initialized"),S.removeAttr("tabindex")),q.removeAttr("tabindex")},clearable:function(){I.removeClass(g.clear)}},has:{menuSearch:function(){return m.has.search()&&0=h.minCharacters},firstLetter:function(e,t){var n;return!(!e||0===e.length||"string"!=typeof t)&&(n=m.get.choiceText(e,!1),(t=t.toLowerCase())==String(n).charAt(0).toLowerCase())},input:function(){return 0=h.maxSelections},allResultsFiltered:function(){var e=R.not(w.addition);return e.filter(w.unselectable).length===e.length},userSuggestion:function(){return 0=n.menu.offset.top-n.context.offset.top+n.menu.height}).below?(m.verbose("Dropdown can fit in context downward",t),!0):t.below||t.above?(m.verbose("Dropdown cannot fit below, opening upward",t),!1):(m.verbose("Dropdown cannot fit in either direction, favoring downward",t),!0),i.removeClass(g.loading),a},openRightward:function(e){var t,n,i=e||q,a=!0;return i.addClass(g.loading),n={context:{offset:y.get(0)===Y?{top:0,left:0}:y.offset(),scrollLeft:y.scrollLeft(),width:y.outerWidth()},menu:{offset:i.offset(),width:i.outerWidth()}},m.is.horizontallyScrollableContext()&&(n.menu.offset.left+=n.context.scrollLeft),(t=n.menu.offset.left-n.context.offset.left+n.menu.width>=n.context.scrollLeft+n.context.width)&&(m.verbose("Dropdown cannot fit in context rightward",t),a=!1),i.removeClass(g.loading),a},click:function(){return U||"click"==h.on},extendSelect:function(){return h.allowAdditions||h.apiSettings},show:function(){return!m.is.disabled()&&(m.has.items()||m.has.message())},useAPI:function(){return X.fn.api!==J}},animate:{show:function(e,t){var n,i=t||q,a=t?function(){}:function(){m.hideSubMenus(),m.hideOthers(),m.set.active()};e=X.isFunction(e)?e:function(){},m.verbose("Doing menu show animation",i),m.set.direction(t),n=m.get.transition(t),m.is.selection()&&m.set.scrollPosition(m.get.selectedItem(),!0),(m.is.hidden(i)||m.is.animating(i))&&("none"==n?(a(),i.transition("show"),e.call(M)):X.fn.transition!==J&&S.transition("is supported")?i.transition({animation:n+" in",debug:h.debug,verbose:h.verbose,duration:h.duration,queue:!0,onStart:a,onComplete:function(){e.call(M)}}):m.error(v.noTransition,n))},hide:function(e,t){var n=t||q,i=(t?h.duration:h.duration,t?function(){}:function(){m.can.click()&&m.unbind.intent(),m.remove.active()}),a=m.get.transition(t);e=X.isFunction(e)?e:function(){},(m.is.visible(n)||m.is.animating(n))&&(m.verbose("Doing menu hide animation",n),"none"==a?(i(),n.transition("hide"),e.call(M)):X.fn.transition!==J&&S.transition("is supported")?n.transition({animation:a+" out",duration:h.duration,debug:h.debug,verbose:h.verbose,queue:!1,onStart:i,onComplete:function(){e.call(M)}}):m.error(v.transition))}},hideAndClear:function(){m.remove.searchTerm(),m.has.maxSelections()||(m.has.search()?m.hide(function(){m.remove.filteredItem()}):m.hide())},delay:{show:function(){m.verbose("Delaying show event to ensure user intent"),clearTimeout(m.timer),m.timer=setTimeout(m.show,h.delay.show)},hide:function(){m.verbose("Delaying hide event to ensure user intent"),clearTimeout(m.timer),m.timer=setTimeout(m.hide,h.delay.hide)}},escape:{value:function(e){var t=X.isArray(e),n="string"==typeof e,i=!n&&!t,a=n&&-1!==e.search(d.quote),o=[];return i||!a?e:(m.debug("Encoding quote values for use in select",e),t?(X.each(e,function(e,t){o.push(t.replace(d.quote,"""))}),o):e.replace(d.quote,"""))},string:function(e){return(e=String(e)).replace(d.escape,"\\$&")}},setting:function(e,t){if(m.debug("Changing setting",e,t),X.isPlainObject(e))X.extend(!0,h,e);else{if(t===J)return h[e];X.isPlainObject(h[e])?X.extend(!0,h[e],t):h[e]=t}},internal:function(e,t){if(X.isPlainObject(e))X.extend(!0,m,e);else{if(t===J)return m[e];m[e]=t}},debug:function(){!h.silent&&h.debug&&(h.performance?m.performance.log(arguments):(m.debug=Function.prototype.bind.call(console.info,console,h.name+":"),m.debug.apply(console,arguments)))},verbose:function(){!h.silent&&h.verbose&&h.debug&&(h.performance?m.performance.log(arguments):(m.verbose=Function.prototype.bind.call(console.info,console,h.name+":"),m.verbose.apply(console,arguments)))},error:function(){h.silent||(m.error=Function.prototype.bind.call(console.error,console,h.name+":"),m.error.apply(console,arguments))},performance:{log:function(e){var t,n;h.performance&&(n=(t=(new Date).getTime())-(K||t),K=t,W.push({Name:e[0],Arguments:[].slice.call(e,1)||"",Element:M,"Execution Time":n})),clearTimeout(m.performance.timer),m.performance.timer=setTimeout(m.performance.display,500)},display:function(){var e=h.name+":",n=0;K=!1,clearTimeout(m.performance.timer),X.each(W,function(e,t){n+=t["Execution Time"]}),e+=" "+n+"ms",N&&(e+=" '"+N+"'"),(console.group!==J||console.table!==J)&&0{term}",count:"{count} selected",maxSelections:"Max {maxCount} selections",noResults:"No results found.",serverError:"There was an error contacting the server"},error:{action:"You called a dropdown action that was not defined",alreadySetup:"Once a select has been initialized behaviors must be called on the created ui dropdown",labels:"Allowing user additions currently requires the use of labels.",missingMultiple:"'); + }, + fields: function(fields) { + var + $fields = $() + ; + $.each(fields, function(index, name) { + $fields = $fields.add( module.get.field(name) ); + }); + return $fields; + }, + validation: function($field) { + var + fieldValidation, + identifier + ; + if(!validation) { + return false; + } + $.each(validation, function(fieldName, field) { + identifier = field.identifier || fieldName; + if( module.get.field(identifier)[0] == $field[0] ) { + field.identifier = identifier; + fieldValidation = field; + } + }); + return fieldValidation || false; + }, + value: function (field) { + var + fields = [], + results + ; + fields.push(field); + results = module.get.values.call(element, fields); + return results[field]; + }, + values: function (fields) { + var + $fields = $.isArray(fields) + ? module.get.fields(fields) + : $field, + values = {} + ; + $fields.each(function(index, field) { + var + $field = $(field), + type = $field.prop('type'), + name = $field.prop('name'), + value = $field.val(), + isCheckbox = $field.is(selector.checkbox), + isRadio = $field.is(selector.radio), + isMultiple = (name.indexOf('[]') !== -1), + isChecked = (isCheckbox) + ? $field.is(':checked') + : false + ; + if(name) { + if(isMultiple) { + name = name.replace('[]', ''); + if(!values[name]) { + values[name] = []; + } + if(isCheckbox) { + if(isChecked) { + values[name].push(value || true); + } + else { + values[name].push(false); + } + } + else { + values[name].push(value); + } + } + else { + if(isRadio) { + if(values[name] === undefined || values[name] == false) { + values[name] = (isChecked) + ? value || true + : false + ; + } + } + else if(isCheckbox) { + if(isChecked) { + values[name] = value || true; + } + else { + values[name] = false; + } + } + else { + values[name] = value; + } + } + } + }); + return values; + } + }, + + has: { + + field: function(identifier) { + module.verbose('Checking for existence of a field with identifier', identifier); + identifier = module.escape.string(identifier); + if(typeof identifier !== 'string') { + module.error(error.identifier, identifier); + } + if($field.filter('#' + identifier).length > 0 ) { + return true; + } + else if( $field.filter('[name="' + identifier +'"]').length > 0 ) { + return true; + } + else if( $field.filter('[data-' + metadata.validate + '="'+ identifier +'"]').length > 0 ) { + return true; + } + return false; + } + + }, + + escape: { + string: function(text) { + text = String(text); + return text.replace(regExp.escape, '\\$&'); + } + }, + + add: { + // alias + rule: function(name, rules) { + module.add.field(name, rules); + }, + field: function(name, rules) { + var + newValidation = {} + ; + if(module.is.shorthandRules(rules)) { + rules = $.isArray(rules) + ? rules + : [rules] + ; + newValidation[name] = { + rules: [] + }; + $.each(rules, function(index, rule) { + newValidation[name].rules.push({ type: rule }); + }); + } + else { + newValidation[name] = rules; + } + validation = $.extend({}, validation, newValidation); + module.debug('Adding rules', newValidation, validation); + }, + fields: function(fields) { + var + newValidation + ; + if(fields && module.is.shorthandFields(fields)) { + newValidation = module.get.fieldsFromShorthand(fields); + } + else { + newValidation = fields; + } + validation = $.extend({}, validation, newValidation); + }, + prompt: function(identifier, errors) { + var + $field = module.get.field(identifier), + $fieldGroup = $field.closest($group), + $prompt = $fieldGroup.children(selector.prompt), + promptExists = ($prompt.length !== 0) + ; + errors = (typeof errors == 'string') + ? [errors] + : errors + ; + module.verbose('Adding field error state', identifier); + $fieldGroup + .addClass(className.error) + ; + if(settings.inline) { + if(!promptExists) { + $prompt = settings.templates.prompt(errors); + $prompt + .appendTo($fieldGroup) + ; + } + $prompt + .html(errors[0]) + ; + if(!promptExists) { + if(settings.transition && $.fn.transition !== undefined && $module.transition('is supported')) { + module.verbose('Displaying error with css transition', settings.transition); + $prompt.transition(settings.transition + ' in', settings.duration); + } + else { + module.verbose('Displaying error with fallback javascript animation'); + $prompt + .fadeIn(settings.duration) + ; + } + } + else { + module.verbose('Inline errors are disabled, no inline error added', identifier); + } + } + }, + errors: function(errors) { + module.debug('Adding form error messages', errors); + module.set.error(); + $message + .html( settings.templates.error(errors) ) + ; + } + }, + + remove: { + rule: function(field, rule) { + var + rules = $.isArray(rule) + ? rule + : [rule] + ; + if(rule == undefined) { + module.debug('Removed all rules'); + validation[field].rules = []; + return; + } + if(validation[field] == undefined || !$.isArray(validation[field].rules)) { + return; + } + $.each(validation[field].rules, function(index, rule) { + if(rules.indexOf(rule.type) !== -1) { + module.debug('Removed rule', rule.type); + validation[field].rules.splice(index, 1); + } + }); + }, + field: function(field) { + var + fields = $.isArray(field) + ? field + : [field] + ; + $.each(fields, function(index, field) { + module.remove.rule(field); + }); + }, + // alias + rules: function(field, rules) { + if($.isArray(field)) { + $.each(fields, function(index, field) { + module.remove.rule(field, rules); + }); + } + else { + module.remove.rule(field, rules); + } + }, + fields: function(fields) { + module.remove.field(fields); + }, + prompt: function(identifier) { + var + $field = module.get.field(identifier), + $fieldGroup = $field.closest($group), + $prompt = $fieldGroup.children(selector.prompt) + ; + $fieldGroup + .removeClass(className.error) + ; + if(settings.inline && $prompt.is(':visible')) { + module.verbose('Removing prompt for field', identifier); + if(settings.transition && $.fn.transition !== undefined && $module.transition('is supported')) { + $prompt.transition(settings.transition + ' out', settings.duration, function() { + $prompt.remove(); + }); + } + else { + $prompt + .fadeOut(settings.duration, function(){ + $prompt.remove(); + }) + ; + } + } + } + }, + + set: { + success: function() { + $module + .removeClass(className.error) + .addClass(className.success) + ; + }, + defaults: function () { + $field + .each(function () { + var + $field = $(this), + isCheckbox = ($field.filter(selector.checkbox).length > 0), + value = (isCheckbox) + ? $field.is(':checked') + : $field.val() + ; + $field.data(metadata.defaultValue, value); + }) + ; + }, + error: function() { + $module + .removeClass(className.success) + .addClass(className.error) + ; + }, + value: function (field, value) { + var + fields = {} + ; + fields[field] = value; + return module.set.values.call(element, fields); + }, + values: function (fields) { + if($.isEmptyObject(fields)) { + return; + } + $.each(fields, function(key, value) { + var + $field = module.get.field(key), + $element = $field.parent(), + isMultiple = $.isArray(value), + isCheckbox = $element.is(selector.uiCheckbox), + isDropdown = $element.is(selector.uiDropdown), + isRadio = ($field.is(selector.radio) && isCheckbox), + fieldExists = ($field.length > 0), + $multipleField + ; + if(fieldExists) { + if(isMultiple && isCheckbox) { + module.verbose('Selecting multiple', value, $field); + $element.checkbox('uncheck'); + $.each(value, function(index, value) { + $multipleField = $field.filter('[value="' + value + '"]'); + $element = $multipleField.parent(); + if($multipleField.length > 0) { + $element.checkbox('check'); + } + }); + } + else if(isRadio) { + module.verbose('Selecting radio value', value, $field); + $field.filter('[value="' + value + '"]') + .parent(selector.uiCheckbox) + .checkbox('check') + ; + } + else if(isCheckbox) { + module.verbose('Setting checkbox value', value, $element); + if(value === true) { + $element.checkbox('check'); + } + else { + $element.checkbox('uncheck'); + } + } + else if(isDropdown) { + module.verbose('Setting dropdown value', value, $element); + $element.dropdown('set selected', value); + } + else { + module.verbose('Setting field value', value, $field); + $field.val(value); + } + } + }); + } + }, + + validate: { + + form: function(event, ignoreCallbacks) { + var + values = module.get.values(), + apiRequest + ; + + // input keydown event will fire submit repeatedly by browser default + if(keyHeldDown) { + return false; + } + + // reset errors + formErrors = []; + if( module.determine.isValid() ) { + module.debug('Form has no validation errors, submitting'); + module.set.success(); + if(ignoreCallbacks !== true) { + return settings.onSuccess.call(element, event, values); + } + } + else { + module.debug('Form has errors'); + module.set.error(); + if(!settings.inline) { + module.add.errors(formErrors); + } + // prevent ajax submit + if($module.data('moduleApi') !== undefined) { + event.stopImmediatePropagation(); + } + if(ignoreCallbacks !== true) { + return settings.onFailure.call(element, formErrors, values); + } + } + }, + + // takes a validation object and returns whether field passes validation + field: function(field, fieldName, showErrors) { + showErrors = (showErrors !== undefined) + ? showErrors + : true + ; + if(typeof field == 'string') { + module.verbose('Validating field', field); + fieldName = field; + field = validation[field]; + } + var + identifier = field.identifier || fieldName, + $field = module.get.field(identifier), + $dependsField = (field.depends) + ? module.get.field(field.depends) + : false, + fieldValid = true, + fieldErrors = [] + ; + if(!field.identifier) { + module.debug('Using field name as identifier', identifier); + field.identifier = identifier; + } + if($field.prop('disabled')) { + module.debug('Field is disabled. Skipping', identifier); + fieldValid = true; + } + else if(field.optional && module.is.blank($field)){ + module.debug('Field is optional and blank. Skipping', identifier); + fieldValid = true; + } + else if(field.depends && module.is.empty($dependsField)) { + module.debug('Field depends on another value that is not present or empty. Skipping', $dependsField); + fieldValid = true; + } + else if(field.rules !== undefined) { + $.each(field.rules, function(index, rule) { + if( module.has.field(identifier) && !( module.validate.rule(field, rule) ) ) { + module.debug('Field is invalid', identifier, rule.type); + fieldErrors.push(module.get.prompt(rule, field)); + fieldValid = false; + } + }); + } + if(fieldValid) { + if(showErrors) { + module.remove.prompt(identifier, fieldErrors); + settings.onValid.call($field); + } + } + else { + if(showErrors) { + formErrors = formErrors.concat(fieldErrors); + module.add.prompt(identifier, fieldErrors); + settings.onInvalid.call($field, fieldErrors); + } + return false; + } + return true; + }, + + // takes validation rule and returns whether field passes rule + rule: function(field, rule) { + var + $field = module.get.field(field.identifier), + type = rule.type, + value = $field.val(), + isValid = true, + ancillary = module.get.ancillaryValue(rule), + ruleName = module.get.ruleName(rule), + ruleFunction = settings.rules[ruleName] + ; + if( !$.isFunction(ruleFunction) ) { + module.error(error.noRule, ruleName); + return; + } + // cast to string avoiding encoding special values + value = (value === undefined || value === '' || value === null) + ? '' + : $.trim(value + '') + ; + return ruleFunction.call($field, value, ancillary); + } + }, + + setting: function(name, value) { + if( $.isPlainObject(name) ) { + $.extend(true, settings, name); + } + else if(value !== undefined) { + settings[name] = value; + } + else { + return settings[name]; + } + }, + internal: function(name, value) { + if( $.isPlainObject(name) ) { + $.extend(true, module, name); + } + else if(value !== undefined) { + module[name] = value; + } + else { + return module[name]; + } + }, + debug: function() { + if(!settings.silent && settings.debug) { + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':'); + module.debug.apply(console, arguments); + } + } + }, + verbose: function() { + if(!settings.silent && settings.verbose && settings.debug) { + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':'); + module.verbose.apply(console, arguments); + } + } + }, + error: function() { + if(!settings.silent) { + module.error = Function.prototype.bind.call(console.error, console, settings.name + ':'); + module.error.apply(console, arguments); + } + }, + performance: { + log: function(message) { + var + currentTime, + executionTime, + previousTime + ; + if(settings.performance) { + currentTime = new Date().getTime(); + previousTime = time || currentTime; + executionTime = currentTime - previousTime; + time = currentTime; + performance.push({ + 'Name' : message[0], + 'Arguments' : [].slice.call(message, 1) || '', + 'Element' : element, + 'Execution Time' : executionTime + }); + } + clearTimeout(module.performance.timer); + module.performance.timer = setTimeout(module.performance.display, 500); + }, + display: function() { + var + title = settings.name + ':', + totalTime = 0 + ; + time = false; + clearTimeout(module.performance.timer); + $.each(performance, function(index, data) { + totalTime += data['Execution Time']; + }); + title += ' ' + totalTime + 'ms'; + if(moduleSelector) { + title += ' \'' + moduleSelector + '\''; + } + if($allModules.length > 1) { + title += ' ' + '(' + $allModules.length + ')'; + } + if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { + console.groupCollapsed(title); + if(console.table) { + console.table(performance); + } + else { + $.each(performance, function(index, data) { + console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); + }); + } + console.groupEnd(); + } + performance = []; + } + }, + invoke: function(query, passedArguments, context) { + var + object = instance, + maxDepth, + found, + response + ; + passedArguments = passedArguments || queryArguments; + context = element || context; + if(typeof query == 'string' && object !== undefined) { + query = query.split(/[\. ]/); + maxDepth = query.length - 1; + $.each(query, function(depth, value) { + var camelCaseValue = (depth != maxDepth) + ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) + : query + ; + if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) { + object = object[camelCaseValue]; + } + else if( object[camelCaseValue] !== undefined ) { + found = object[camelCaseValue]; + return false; + } + else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) { + object = object[value]; + } + else if( object[value] !== undefined ) { + found = object[value]; + return false; + } + else { + return false; + } + }); + } + if( $.isFunction( found ) ) { + response = found.apply(context, passedArguments); + } + else if(found !== undefined) { + response = found; + } + if($.isArray(returnedValue)) { + returnedValue.push(response); + } + else if(returnedValue !== undefined) { + returnedValue = [returnedValue, response]; + } + else if(response !== undefined) { + returnedValue = response; + } + return found; + } + }; + module.initialize(); + }) + ; + + return (returnedValue !== undefined) + ? returnedValue + : this + ; +}; + +$.fn.form.settings = { + + name : 'Form', + namespace : 'form', + + debug : false, + verbose : false, + performance : true, + + fields : false, + + keyboardShortcuts : true, + on : 'submit', + inline : false, + + delay : 200, + revalidate : true, + + transition : 'scale', + duration : 200, + + onValid : function() {}, + onInvalid : function() {}, + onSuccess : function() { return true; }, + onFailure : function() { return false; }, + + metadata : { + defaultValue : 'default', + validate : 'validate' + }, + + regExp: { + htmlID : /^[a-zA-Z][\w:.-]*$/g, + bracket : /\[(.*)\]/i, + decimal : /^\d+\.?\d*$/, + email : /^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i, + escape : /[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, + flags : /^\/(.*)\/(.*)?/, + integer : /^\-?\d+$/, + number : /^\-?\d*(\.\d+)?$/, + url : /(https?:\/\/(?:www\.|(?!www))[^\s\.]+\.[^\s]{2,}|www\.[^\s]+\.[^\s]{2,})/i + }, + + text: { + unspecifiedRule : 'Please enter a valid value', + unspecifiedField : 'This field' + }, + + prompt: { + empty : '{name} must have a value', + checked : '{name} must be checked', + email : '{name} must be a valid e-mail', + url : '{name} must be a valid url', + regExp : '{name} is not formatted correctly', + integer : '{name} must be an integer', + decimal : '{name} must be a decimal number', + number : '{name} must be set to a number', + is : '{name} must be "{ruleValue}"', + isExactly : '{name} must be exactly "{ruleValue}"', + not : '{name} cannot be set to "{ruleValue}"', + notExactly : '{name} cannot be set to exactly "{ruleValue}"', + contain : '{name} must contain "{ruleValue}"', + containExactly : '{name} must contain exactly "{ruleValue}"', + doesntContain : '{name} cannot contain "{ruleValue}"', + doesntContainExactly : '{name} cannot contain exactly "{ruleValue}"', + minLength : '{name} must be at least {ruleValue} characters', + length : '{name} must be at least {ruleValue} characters', + exactLength : '{name} must be exactly {ruleValue} characters', + maxLength : '{name} cannot be longer than {ruleValue} characters', + match : '{name} must match {ruleValue} field', + different : '{name} must have a different value than {ruleValue} field', + creditCard : '{name} must be a valid credit card number', + minCount : '{name} must have at least {ruleValue} choices', + exactCount : '{name} must have exactly {ruleValue} choices', + maxCount : '{name} must have {ruleValue} or less choices' + }, + + selector : { + checkbox : 'input[type="checkbox"], input[type="radio"]', + clear : '.clear', + field : 'input, textarea, select', + group : '.field', + input : 'input', + message : '.error.message', + prompt : '.prompt.label', + radio : 'input[type="radio"]', + reset : '.reset:not([type="reset"])', + submit : '.submit:not([type="submit"])', + uiCheckbox : '.ui.checkbox', + uiDropdown : '.ui.dropdown' + }, + + className : { + error : 'error', + label : 'ui prompt label', + pressed : 'down', + success : 'success' + }, + + error: { + identifier : 'You must specify a string identifier for each field', + method : 'The method you called is not defined.', + noRule : 'There is no rule matching the one you specified', + oldSyntax : 'Starting in 2.0 forms now only take a single settings object. Validation settings converted to new syntax automatically.' + }, + + templates: { + + // template that produces error message + error: function(errors) { + var + html = '
    ' + ; + $.each(errors, function(index, value) { + html += '
  • ' + value + '
  • '; + }); + html += '
'; + return $(html); + }, + + // template that produces label + prompt: function(errors) { + return $('
') + .addClass('ui basic red pointing prompt label') + .html(errors[0]) + ; + } + }, + + rules: { + + // is not empty or blank string + empty: function(value) { + return !(value === undefined || '' === value || $.isArray(value) && value.length === 0); + }, + + // checkbox checked + checked: function() { + return ($(this).filter(':checked').length > 0); + }, + + // is most likely an email + email: function(value){ + return $.fn.form.settings.regExp.email.test(value); + }, + + // value is most likely url + url: function(value) { + return $.fn.form.settings.regExp.url.test(value); + }, + + // matches specified regExp + regExp: function(value, regExp) { + if(regExp instanceof RegExp) { + return value.match(regExp); + } + var + regExpParts = regExp.match($.fn.form.settings.regExp.flags), + flags + ; + // regular expression specified as /baz/gi (flags) + if(regExpParts) { + regExp = (regExpParts.length >= 2) + ? regExpParts[1] + : regExp + ; + flags = (regExpParts.length >= 3) + ? regExpParts[2] + : '' + ; + } + return value.match( new RegExp(regExp, flags) ); + }, + + // is valid integer or matches range + integer: function(value, range) { + var + intRegExp = $.fn.form.settings.regExp.integer, + min, + max, + parts + ; + if( !range || ['', '..'].indexOf(range) !== -1) { + // do nothing + } + else if(range.indexOf('..') == -1) { + if(intRegExp.test(range)) { + min = max = range - 0; + } + } + else { + parts = range.split('..', 2); + if(intRegExp.test(parts[0])) { + min = parts[0] - 0; + } + if(intRegExp.test(parts[1])) { + max = parts[1] - 0; + } + } + return ( + intRegExp.test(value) && + (min === undefined || value >= min) && + (max === undefined || value <= max) + ); + }, + + // is valid number (with decimal) + decimal: function(value) { + return $.fn.form.settings.regExp.decimal.test(value); + }, + + // is valid number + number: function(value) { + return $.fn.form.settings.regExp.number.test(value); + }, + + // is value (case insensitive) + is: function(value, text) { + text = (typeof text == 'string') + ? text.toLowerCase() + : text + ; + value = (typeof value == 'string') + ? value.toLowerCase() + : value + ; + return (value == text); + }, + + // is value + isExactly: function(value, text) { + return (value == text); + }, + + // value is not another value (case insensitive) + not: function(value, notValue) { + value = (typeof value == 'string') + ? value.toLowerCase() + : value + ; + notValue = (typeof notValue == 'string') + ? notValue.toLowerCase() + : notValue + ; + return (value != notValue); + }, + + // value is not another value (case sensitive) + notExactly: function(value, notValue) { + return (value != notValue); + }, + + // value contains text (insensitive) + contains: function(value, text) { + // escape regex characters + text = text.replace($.fn.form.settings.regExp.escape, "\\$&"); + return (value.search( new RegExp(text, 'i') ) !== -1); + }, + + // value contains text (case sensitive) + containsExactly: function(value, text) { + // escape regex characters + text = text.replace($.fn.form.settings.regExp.escape, "\\$&"); + return (value.search( new RegExp(text) ) !== -1); + }, + + // value contains text (insensitive) + doesntContain: function(value, text) { + // escape regex characters + text = text.replace($.fn.form.settings.regExp.escape, "\\$&"); + return (value.search( new RegExp(text, 'i') ) === -1); + }, + + // value contains text (case sensitive) + doesntContainExactly: function(value, text) { + // escape regex characters + text = text.replace($.fn.form.settings.regExp.escape, "\\$&"); + return (value.search( new RegExp(text) ) === -1); + }, + + // is at least string length + minLength: function(value, requiredLength) { + return (value !== undefined) + ? (value.length >= requiredLength) + : false + ; + }, + + // see rls notes for 2.0.6 (this is a duplicate of minLength) + length: function(value, requiredLength) { + return (value !== undefined) + ? (value.length >= requiredLength) + : false + ; + }, + + // is exactly length + exactLength: function(value, requiredLength) { + return (value !== undefined) + ? (value.length == requiredLength) + : false + ; + }, + + // is less than length + maxLength: function(value, maxLength) { + return (value !== undefined) + ? (value.length <= maxLength) + : false + ; + }, + + // matches another field + match: function(value, identifier) { + var + $form = $(this), + matchingValue + ; + if( $('[data-validate="'+ identifier +'"]').length > 0 ) { + matchingValue = $('[data-validate="'+ identifier +'"]').val(); + } + else if($('#' + identifier).length > 0) { + matchingValue = $('#' + identifier).val(); + } + else if($('[name="' + identifier +'"]').length > 0) { + matchingValue = $('[name="' + identifier + '"]').val(); + } + else if( $('[name="' + identifier +'[]"]').length > 0 ) { + matchingValue = $('[name="' + identifier +'[]"]'); + } + return (matchingValue !== undefined) + ? ( value.toString() == matchingValue.toString() ) + : false + ; + }, + + // different than another field + different: function(value, identifier) { + // use either id or name of field + var + $form = $(this), + matchingValue + ; + if( $('[data-validate="'+ identifier +'"]').length > 0 ) { + matchingValue = $('[data-validate="'+ identifier +'"]').val(); + } + else if($('#' + identifier).length > 0) { + matchingValue = $('#' + identifier).val(); + } + else if($('[name="' + identifier +'"]').length > 0) { + matchingValue = $('[name="' + identifier + '"]').val(); + } + else if( $('[name="' + identifier +'[]"]').length > 0 ) { + matchingValue = $('[name="' + identifier +'[]"]'); + } + return (matchingValue !== undefined) + ? ( value.toString() !== matchingValue.toString() ) + : false + ; + }, + + creditCard: function(cardNumber, cardTypes) { + var + cards = { + visa: { + pattern : /^4/, + length : [16] + }, + amex: { + pattern : /^3[47]/, + length : [15] + }, + mastercard: { + pattern : /^5[1-5]/, + length : [16] + }, + discover: { + pattern : /^(6011|622(12[6-9]|1[3-9][0-9]|[2-8][0-9]{2}|9[0-1][0-9]|92[0-5]|64[4-9])|65)/, + length : [16] + }, + unionPay: { + pattern : /^(62|88)/, + length : [16, 17, 18, 19] + }, + jcb: { + pattern : /^35(2[89]|[3-8][0-9])/, + length : [16] + }, + maestro: { + pattern : /^(5018|5020|5038|6304|6759|676[1-3])/, + length : [12, 13, 14, 15, 16, 17, 18, 19] + }, + dinersClub: { + pattern : /^(30[0-5]|^36)/, + length : [14] + }, + laser: { + pattern : /^(6304|670[69]|6771)/, + length : [16, 17, 18, 19] + }, + visaElectron: { + pattern : /^(4026|417500|4508|4844|491(3|7))/, + length : [16] + } + }, + valid = {}, + validCard = false, + requiredTypes = (typeof cardTypes == 'string') + ? cardTypes.split(',') + : false, + unionPay, + validation + ; + + if(typeof cardNumber !== 'string' || cardNumber.length === 0) { + return; + } + + // allow dashes in card + cardNumber = cardNumber.replace(/[\-]/g, ''); + + // verify card types + if(requiredTypes) { + $.each(requiredTypes, function(index, type){ + // verify each card type + validation = cards[type]; + if(validation) { + valid = { + length : ($.inArray(cardNumber.length, validation.length) !== -1), + pattern : (cardNumber.search(validation.pattern) !== -1) + }; + if(valid.length && valid.pattern) { + validCard = true; + } + } + }); + + if(!validCard) { + return false; + } + } + + // skip luhn for UnionPay + unionPay = { + number : ($.inArray(cardNumber.length, cards.unionPay.length) !== -1), + pattern : (cardNumber.search(cards.unionPay.pattern) !== -1) + }; + if(unionPay.number && unionPay.pattern) { + return true; + } + + // verify luhn, adapted from + var + length = cardNumber.length, + multiple = 0, + producedValue = [ + [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], + [0, 2, 4, 6, 8, 1, 3, 5, 7, 9] + ], + sum = 0 + ; + while (length--) { + sum += producedValue[multiple][parseInt(cardNumber.charAt(length), 10)]; + multiple ^= 1; + } + return (sum % 10 === 0 && sum > 0); + }, + + minCount: function(value, minCount) { + if(minCount == 0) { + return true; + } + if(minCount == 1) { + return (value !== ''); + } + return (value.split(',').length >= minCount); + }, + + exactCount: function(value, exactCount) { + if(exactCount == 0) { + return (value === ''); + } + if(exactCount == 1) { + return (value !== '' && value.search(',') === -1); + } + return (value.split(',').length == exactCount); + }, + + maxCount: function(value, maxCount) { + if(maxCount == 0) { + return false; + } + if(maxCount == 1) { + return (value.search(',') === -1); + } + return (value.split(',').length <= maxCount); + } + } + +}; + +})( jQuery, window, document ); diff --git a/app/static/semantic/components/form.min.css b/app/static/semantic/components/form.min.css new file mode 100755 index 0000000..6afcd64 --- /dev/null +++ b/app/static/semantic/components/form.min.css @@ -0,0 +1,9 @@ +/*! + * # Semantic UI 2.4.1 - Form + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */.ui.form{position:relative;max-width:100%}.ui.form>p{margin:1em 0}.ui.form .field{clear:both;margin:0 0 1em}.ui.form .field:last-child,.ui.form .fields:last-child .field{margin-bottom:0}.ui.form .fields .field{clear:both;margin:0}.ui.form .field>label{display:block;margin:0 0 .28571429rem 0;color:rgba(0,0,0,.87);font-size:.92857143em;font-weight:700;text-transform:none}.ui.form input:not([type]),.ui.form input[type=date],.ui.form input[type=datetime-local],.ui.form input[type=email],.ui.form input[type=file],.ui.form input[type=number],.ui.form input[type=password],.ui.form input[type=search],.ui.form input[type=tel],.ui.form input[type=text],.ui.form input[type=time],.ui.form input[type=url],.ui.form textarea{width:100%;vertical-align:top}.ui.form ::-webkit-datetime-edit,.ui.form ::-webkit-inner-spin-button{height:1.21428571em}.ui.form input:not([type]),.ui.form input[type=date],.ui.form input[type=datetime-local],.ui.form input[type=email],.ui.form input[type=file],.ui.form input[type=number],.ui.form input[type=password],.ui.form input[type=search],.ui.form input[type=tel],.ui.form input[type=text],.ui.form input[type=time],.ui.form input[type=url]{font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;margin:0;outline:0;-webkit-appearance:none;tap-highlight-color:rgba(255,255,255,0);line-height:1.21428571em;padding:.67857143em 1em;font-size:1em;background:#fff;border:1px solid rgba(34,36,38,.15);color:rgba(0,0,0,.87);border-radius:.28571429rem;-webkit-box-shadow:0 0 0 0 transparent inset;box-shadow:0 0 0 0 transparent inset;-webkit-transition:color .1s ease,border-color .1s ease;transition:color .1s ease,border-color .1s ease}.ui.form textarea{margin:0;-webkit-appearance:none;tap-highlight-color:rgba(255,255,255,0);padding:.78571429em 1em;background:#fff;border:1px solid rgba(34,36,38,.15);outline:0;color:rgba(0,0,0,.87);border-radius:.28571429rem;-webkit-box-shadow:0 0 0 0 transparent inset;box-shadow:0 0 0 0 transparent inset;-webkit-transition:color .1s ease,border-color .1s ease;transition:color .1s ease,border-color .1s ease;font-size:1em;line-height:1.2857;resize:vertical}.ui.form textarea:not([rows]){height:12em;min-height:8em;max-height:24em}.ui.form input[type=checkbox],.ui.form textarea{vertical-align:top}.ui.form input.attached{width:auto}.ui.form select{display:block;height:auto;width:100%;background:#fff;border:1px solid rgba(34,36,38,.15);border-radius:.28571429rem;-webkit-box-shadow:0 0 0 0 transparent inset;box-shadow:0 0 0 0 transparent inset;padding:.62em 1em;color:rgba(0,0,0,.87);-webkit-transition:color .1s ease,border-color .1s ease;transition:color .1s ease,border-color .1s ease}.ui.form .field>.selection.dropdown{width:100%}.ui.form .field>.selection.dropdown>.dropdown.icon{float:right}.ui.form .inline.field>.selection.dropdown,.ui.form .inline.fields .field>.selection.dropdown{width:auto}.ui.form .inline.field>.selection.dropdown>.dropdown.icon,.ui.form .inline.fields .field>.selection.dropdown>.dropdown.icon{float:none}.ui.form .field .ui.input,.ui.form .fields .field .ui.input,.ui.form .wide.field .ui.input{width:100%}.ui.form .inline.field:not(.wide) .ui.input,.ui.form .inline.fields .field:not(.wide) .ui.input{width:auto;vertical-align:middle}.ui.form .field .ui.input input,.ui.form .fields .field .ui.input input{width:auto}.ui.form .eight.fields .ui.input input,.ui.form .five.fields .ui.input input,.ui.form .four.fields .ui.input input,.ui.form .nine.fields .ui.input input,.ui.form .seven.fields .ui.input input,.ui.form .six.fields .ui.input input,.ui.form .ten.fields .ui.input input,.ui.form .three.fields .ui.input input,.ui.form .two.fields .ui.input input,.ui.form .wide.field .ui.input input{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;width:0}.ui.form .error.message,.ui.form .success.message,.ui.form .warning.message{display:none}.ui.form .message:first-child{margin-top:0}.ui.form .field .prompt.label{white-space:normal;background:#fff!important;border:1px solid #e0b4b4!important;color:#9f3a38!important}.ui.form .inline.field .prompt,.ui.form .inline.fields .field .prompt{vertical-align:top;margin:-.25em 0 -.5em .5em}.ui.form .inline.field .prompt:before,.ui.form .inline.fields .field .prompt:before{border-width:0 0 1px 1px;bottom:auto;right:auto;top:50%;left:0}.ui.form .field.field input:-webkit-autofill{-webkit-box-shadow:0 0 0 100px ivory inset!important;box-shadow:0 0 0 100px ivory inset!important;border-color:#e5dfa1!important}.ui.form .field.field input:-webkit-autofill:focus{-webkit-box-shadow:0 0 0 100px ivory inset!important;box-shadow:0 0 0 100px ivory inset!important;border-color:#d5c315!important}.ui.form .error.error input:-webkit-autofill{-webkit-box-shadow:0 0 0 100px #fffaf0 inset!important;box-shadow:0 0 0 100px #fffaf0 inset!important;border-color:#e0b4b4!important}.ui.form ::-webkit-input-placeholder{color:rgba(191,191,191,.87)}.ui.form :-ms-input-placeholder{color:rgba(191,191,191,.87)!important}.ui.form ::-moz-placeholder{color:rgba(191,191,191,.87)}.ui.form :focus::-webkit-input-placeholder{color:rgba(115,115,115,.87)}.ui.form :focus:-ms-input-placeholder{color:rgba(115,115,115,.87)!important}.ui.form :focus::-moz-placeholder{color:rgba(115,115,115,.87)}.ui.form .error ::-webkit-input-placeholder{color:#e7bdbc}.ui.form .error :-ms-input-placeholder{color:#e7bdbc!important}.ui.form .error ::-moz-placeholder{color:#e7bdbc}.ui.form .error :focus::-webkit-input-placeholder{color:#da9796}.ui.form .error :focus:-ms-input-placeholder{color:#da9796!important}.ui.form .error :focus::-moz-placeholder{color:#da9796}.ui.form input:not([type]):focus,.ui.form input[type=date]:focus,.ui.form input[type=datetime-local]:focus,.ui.form input[type=email]:focus,.ui.form input[type=file]:focus,.ui.form input[type=number]:focus,.ui.form input[type=password]:focus,.ui.form input[type=search]:focus,.ui.form input[type=tel]:focus,.ui.form input[type=text]:focus,.ui.form input[type=time]:focus,.ui.form input[type=url]:focus{color:rgba(0,0,0,.95);border-color:#85b7d9;border-radius:.28571429rem;background:#fff;-webkit-box-shadow:0 0 0 0 rgba(34,36,38,.35) inset;box-shadow:0 0 0 0 rgba(34,36,38,.35) inset}.ui.form textarea:focus{color:rgba(0,0,0,.95);border-color:#85b7d9;border-radius:.28571429rem;background:#fff;-webkit-box-shadow:0 0 0 0 rgba(34,36,38,.35) inset;box-shadow:0 0 0 0 rgba(34,36,38,.35) inset;-webkit-appearance:none}.ui.form.success .success.message:not(:empty){display:block}.ui.form.success .compact.success.message:not(:empty){display:inline-block}.ui.form.success .icon.success.message:not(:empty){display:-webkit-box;display:-ms-flexbox;display:flex}.ui.form.warning .warning.message:not(:empty){display:block}.ui.form.warning .compact.warning.message:not(:empty){display:inline-block}.ui.form.warning .icon.warning.message:not(:empty){display:-webkit-box;display:-ms-flexbox;display:flex}.ui.form.error .error.message:not(:empty){display:block}.ui.form.error .compact.error.message:not(:empty){display:inline-block}.ui.form.error .icon.error.message:not(:empty){display:-webkit-box;display:-ms-flexbox;display:flex}.ui.form .field.error .input,.ui.form .field.error label,.ui.form .fields.error .field .input,.ui.form .fields.error .field label{color:#9f3a38}.ui.form .field.error .corner.label,.ui.form .fields.error .field .corner.label{border-color:#9f3a38;color:#fff}.ui.form .field.error input:not([type]),.ui.form .field.error input[type=date],.ui.form .field.error input[type=datetime-local],.ui.form .field.error input[type=email],.ui.form .field.error input[type=file],.ui.form .field.error input[type=number],.ui.form .field.error input[type=password],.ui.form .field.error input[type=search],.ui.form .field.error input[type=tel],.ui.form .field.error input[type=text],.ui.form .field.error input[type=time],.ui.form .field.error input[type=url],.ui.form .field.error select,.ui.form .field.error textarea,.ui.form .fields.error .field input:not([type]),.ui.form .fields.error .field input[type=date],.ui.form .fields.error .field input[type=datetime-local],.ui.form .fields.error .field input[type=email],.ui.form .fields.error .field input[type=file],.ui.form .fields.error .field input[type=number],.ui.form .fields.error .field input[type=password],.ui.form .fields.error .field input[type=search],.ui.form .fields.error .field input[type=tel],.ui.form .fields.error .field input[type=text],.ui.form .fields.error .field input[type=time],.ui.form .fields.error .field input[type=url],.ui.form .fields.error .field select,.ui.form .fields.error .field textarea{background:#fff6f6;border-color:#e0b4b4;color:#9f3a38;border-radius:'';-webkit-box-shadow:none;box-shadow:none}.ui.form .field.error input:not([type]):focus,.ui.form .field.error input[type=date]:focus,.ui.form .field.error input[type=datetime-local]:focus,.ui.form .field.error input[type=email]:focus,.ui.form .field.error input[type=file]:focus,.ui.form .field.error input[type=number]:focus,.ui.form .field.error input[type=password]:focus,.ui.form .field.error input[type=search]:focus,.ui.form .field.error input[type=tel]:focus,.ui.form .field.error input[type=text]:focus,.ui.form .field.error input[type=time]:focus,.ui.form .field.error input[type=url]:focus,.ui.form .field.error select:focus,.ui.form .field.error textarea:focus{background:#fff6f6;border-color:#e0b4b4;color:#9f3a38;-webkit-appearance:none;-webkit-box-shadow:none;box-shadow:none}.ui.form .field.error select{-webkit-appearance:menulist-button}.ui.form .field.error .ui.dropdown,.ui.form .field.error .ui.dropdown .item,.ui.form .field.error .ui.dropdown .text,.ui.form .fields.error .field .ui.dropdown,.ui.form .fields.error .field .ui.dropdown .item{background:#fff6f6;color:#9f3a38}.ui.form .field.error .ui.dropdown,.ui.form .fields.error .field .ui.dropdown{border-color:#e0b4b4!important}.ui.form .field.error .ui.dropdown:hover,.ui.form .fields.error .field .ui.dropdown:hover{border-color:#e0b4b4!important}.ui.form .field.error .ui.dropdown:hover .menu,.ui.form .fields.error .field .ui.dropdown:hover .menu{border-color:#e0b4b4}.ui.form .field.error .ui.multiple.selection.dropdown>.label,.ui.form .fields.error .field .ui.multiple.selection.dropdown>.label{background-color:#eacbcb;color:#9f3a38}.ui.form .field.error .ui.dropdown .menu .item:hover,.ui.form .fields.error .field .ui.dropdown .menu .item:hover{background-color:#fbe7e7}.ui.form .field.error .ui.dropdown .menu .selected.item,.ui.form .fields.error .field .ui.dropdown .menu .selected.item{background-color:#fbe7e7}.ui.form .field.error .ui.dropdown .menu .active.item,.ui.form .fields.error .field .ui.dropdown .menu .active.item{background-color:#fdcfcf!important}.ui.form .field.error .checkbox:not(.toggle):not(.slider) .box,.ui.form .field.error .checkbox:not(.toggle):not(.slider) label,.ui.form .fields.error .field .checkbox:not(.toggle):not(.slider) .box,.ui.form .fields.error .field .checkbox:not(.toggle):not(.slider) label{color:#9f3a38}.ui.form .field.error .checkbox:not(.toggle):not(.slider) .box:before,.ui.form .field.error .checkbox:not(.toggle):not(.slider) label:before,.ui.form .fields.error .field .checkbox:not(.toggle):not(.slider) .box:before,.ui.form .fields.error .field .checkbox:not(.toggle):not(.slider) label:before{background:#fff6f6;border-color:#e0b4b4}.ui.form .field.error .checkbox .box:after,.ui.form .field.error .checkbox label:after,.ui.form .fields.error .field .checkbox .box:after,.ui.form .fields.error .field .checkbox label:after{color:#9f3a38}.ui.form .disabled.field,.ui.form .disabled.fields .field,.ui.form .field :disabled{pointer-events:none;opacity:.45}.ui.form .field.disabled>label,.ui.form .fields.disabled>label{opacity:.45}.ui.form .field.disabled :disabled{opacity:1}.ui.loading.form{position:relative;cursor:default;pointer-events:none}.ui.loading.form:before{position:absolute;content:'';top:0;left:0;background:rgba(255,255,255,.8);width:100%;height:100%;z-index:100}.ui.loading.form:after{position:absolute;content:'';top:50%;left:50%;margin:-1.5em 0 0 -1.5em;width:3em;height:3em;-webkit-animation:form-spin .6s linear;animation:form-spin .6s linear;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;border-radius:500rem;border-color:#767676 rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.1);border-style:solid;border-width:.2em;-webkit-box-shadow:0 0 0 1px transparent;box-shadow:0 0 0 1px transparent;visibility:visible;z-index:101}@-webkit-keyframes form-spin{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes form-spin{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.ui.form .required.field>.checkbox:after,.ui.form .required.field>label:after,.ui.form .required.fields.grouped>label:after,.ui.form .required.fields:not(.grouped)>.field>.checkbox:after,.ui.form .required.fields:not(.grouped)>.field>label:after{margin:-.2em 0 0 .2em;content:'*';color:#db2828}.ui.form .required.field>label:after,.ui.form .required.fields.grouped>label:after,.ui.form .required.fields:not(.grouped)>.field>label:after{display:inline-block;vertical-align:top}.ui.form .required.field>.checkbox:after,.ui.form .required.fields:not(.grouped)>.field>.checkbox:after{position:absolute;top:0;left:100%}.ui.form .inverted.segment .ui.checkbox .box,.ui.form .inverted.segment .ui.checkbox label,.ui.form .inverted.segment label,.ui.inverted.form .inline.field>label,.ui.inverted.form .inline.field>p,.ui.inverted.form .inline.fields .field>label,.ui.inverted.form .inline.fields .field>p,.ui.inverted.form .inline.fields>label,.ui.inverted.form .ui.checkbox .box,.ui.inverted.form .ui.checkbox label,.ui.inverted.form label{color:rgba(255,255,255,.9)}.ui.inverted.form input:not([type]),.ui.inverted.form input[type=date],.ui.inverted.form input[type=datetime-local],.ui.inverted.form input[type=email],.ui.inverted.form input[type=file],.ui.inverted.form input[type=number],.ui.inverted.form input[type=password],.ui.inverted.form input[type=search],.ui.inverted.form input[type=tel],.ui.inverted.form input[type=text],.ui.inverted.form input[type=time],.ui.inverted.form input[type=url]{background:#fff;border-color:rgba(255,255,255,.1);color:rgba(0,0,0,.87);-webkit-box-shadow:none;box-shadow:none}.ui.form .grouped.fields{display:block;margin:0 0 1em}.ui.form .grouped.fields:last-child{margin-bottom:0}.ui.form .grouped.fields>label{margin:0 0 .28571429rem 0;color:rgba(0,0,0,.87);font-size:.92857143em;font-weight:700;text-transform:none}.ui.form .grouped.fields .field,.ui.form .grouped.inline.fields .field{display:block;margin:.5em 0;padding:0}.ui.form .fields{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;margin:0 -.5em 1em}.ui.form .fields>.field{-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;padding-left:.5em;padding-right:.5em}.ui.form .fields>.field:first-child{border-left:none;-webkit-box-shadow:none;box-shadow:none}.ui.form .two.fields>.field,.ui.form .two.fields>.fields{width:50%}.ui.form .three.fields>.field,.ui.form .three.fields>.fields{width:33.33333333%}.ui.form .four.fields>.field,.ui.form .four.fields>.fields{width:25%}.ui.form .five.fields>.field,.ui.form .five.fields>.fields{width:20%}.ui.form .six.fields>.field,.ui.form .six.fields>.fields{width:16.66666667%}.ui.form .seven.fields>.field,.ui.form .seven.fields>.fields{width:14.28571429%}.ui.form .eight.fields>.field,.ui.form .eight.fields>.fields{width:12.5%}.ui.form .nine.fields>.field,.ui.form .nine.fields>.fields{width:11.11111111%}.ui.form .ten.fields>.field,.ui.form .ten.fields>.fields{width:10%}@media only screen and (max-width:767px){.ui.form .fields{-ms-flex-wrap:wrap;flex-wrap:wrap}.ui.form:not(.unstackable) .eight.fields:not(.unstackable)>.field,.ui.form:not(.unstackable) .eight.fields:not(.unstackable)>.fields,.ui.form:not(.unstackable) .five.fields:not(.unstackable)>.field,.ui.form:not(.unstackable) .five.fields:not(.unstackable)>.fields,.ui.form:not(.unstackable) .four.fields:not(.unstackable)>.field,.ui.form:not(.unstackable) .four.fields:not(.unstackable)>.fields,.ui.form:not(.unstackable) .nine.fields:not(.unstackable)>.field,.ui.form:not(.unstackable) .nine.fields:not(.unstackable)>.fields,.ui.form:not(.unstackable) .seven.fields:not(.unstackable)>.field,.ui.form:not(.unstackable) .seven.fields:not(.unstackable)>.fields,.ui.form:not(.unstackable) .six.fields:not(.unstackable)>.field,.ui.form:not(.unstackable) .six.fields:not(.unstackable)>.fields,.ui.form:not(.unstackable) .ten.fields:not(.unstackable)>.field,.ui.form:not(.unstackable) .ten.fields:not(.unstackable)>.fields,.ui.form:not(.unstackable) .three.fields:not(.unstackable)>.field,.ui.form:not(.unstackable) .three.fields:not(.unstackable)>.fields,.ui.form:not(.unstackable) .two.fields:not(.unstackable)>.field,.ui.form:not(.unstackable) .two.fields:not(.unstackable)>.fields,.ui.form:not(.unstackable) [class*="equal width"].fields:not(.unstackable)>.field,.ui[class*="equal width"].form:not(.unstackable) .fields>.field{width:100%!important;margin:0 0 1em}}.ui.form .fields .wide.field{width:6.25%;padding-left:.5em;padding-right:.5em}.ui.form .one.wide.field{width:6.25%!important}.ui.form .two.wide.field{width:12.5%!important}.ui.form .three.wide.field{width:18.75%!important}.ui.form .four.wide.field{width:25%!important}.ui.form .five.wide.field{width:31.25%!important}.ui.form .six.wide.field{width:37.5%!important}.ui.form .seven.wide.field{width:43.75%!important}.ui.form .eight.wide.field{width:50%!important}.ui.form .nine.wide.field{width:56.25%!important}.ui.form .ten.wide.field{width:62.5%!important}.ui.form .eleven.wide.field{width:68.75%!important}.ui.form .twelve.wide.field{width:75%!important}.ui.form .thirteen.wide.field{width:81.25%!important}.ui.form .fourteen.wide.field{width:87.5%!important}.ui.form .fifteen.wide.field{width:93.75%!important}.ui.form .sixteen.wide.field{width:100%!important}@media only screen and (max-width:767px){.ui.form:not(.unstackable) .fields:not(.unstackable)>.eight.wide.field,.ui.form:not(.unstackable) .fields:not(.unstackable)>.eleven.wide.field,.ui.form:not(.unstackable) .fields:not(.unstackable)>.fifteen.wide.field,.ui.form:not(.unstackable) .fields:not(.unstackable)>.five.wide.field,.ui.form:not(.unstackable) .fields:not(.unstackable)>.four.wide.field,.ui.form:not(.unstackable) .fields:not(.unstackable)>.fourteen.wide.field,.ui.form:not(.unstackable) .fields:not(.unstackable)>.nine.wide.field,.ui.form:not(.unstackable) .fields:not(.unstackable)>.seven.wide.field,.ui.form:not(.unstackable) .fields:not(.unstackable)>.six.wide.field,.ui.form:not(.unstackable) .fields:not(.unstackable)>.sixteen.wide.field,.ui.form:not(.unstackable) .fields:not(.unstackable)>.ten.wide.field,.ui.form:not(.unstackable) .fields:not(.unstackable)>.thirteen.wide.field,.ui.form:not(.unstackable) .fields:not(.unstackable)>.three.wide.field,.ui.form:not(.unstackable) .fields:not(.unstackable)>.twelve.wide.field,.ui.form:not(.unstackable) .fields:not(.unstackable)>.two.wide.field,.ui.form:not(.unstackable) .five.fields:not(.unstackable)>.field,.ui.form:not(.unstackable) .five.fields:not(.unstackable)>.fields,.ui.form:not(.unstackable) .four.fields:not(.unstackable)>.field,.ui.form:not(.unstackable) .four.fields:not(.unstackable)>.fields,.ui.form:not(.unstackable) .three.fields:not(.unstackable)>.field,.ui.form:not(.unstackable) .three.fields:not(.unstackable)>.fields,.ui.form:not(.unstackable) .two.fields:not(.unstackable)>.field,.ui.form:not(.unstackable) .two.fields:not(.unstackable)>.fields{width:100%!important}.ui.form .fields{margin-bottom:0}}.ui.form [class*="equal width"].fields>.field,.ui[class*="equal width"].form .fields>.field{width:100%;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.ui.form .inline.fields{margin:0 0 1em;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.ui.form .inline.fields .field{margin:0;padding:0 1em 0 0}.ui.form .inline.field>label,.ui.form .inline.field>p,.ui.form .inline.fields .field>label,.ui.form .inline.fields .field>p,.ui.form .inline.fields>label{display:inline-block;width:auto;margin-top:0;margin-bottom:0;vertical-align:baseline;font-size:.92857143em;font-weight:700;color:rgba(0,0,0,.87);text-transform:none}.ui.form .inline.fields>label{margin:.035714em 1em 0 0}.ui.form .inline.field>input,.ui.form .inline.field>select,.ui.form .inline.fields .field>input,.ui.form .inline.fields .field>select{display:inline-block;width:auto;margin-top:0;margin-bottom:0;vertical-align:middle;font-size:1em}.ui.form .inline.field>:first-child,.ui.form .inline.fields .field>:first-child{margin:0 .85714286em 0 0}.ui.form .inline.field>:only-child,.ui.form .inline.fields .field>:only-child{margin:0}.ui.form .inline.fields .wide.field{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.ui.form .inline.fields .wide.field>input,.ui.form .inline.fields .wide.field>select{width:100%}.ui.mini.form{font-size:.78571429rem}.ui.tiny.form{font-size:.85714286rem}.ui.small.form{font-size:.92857143rem}.ui.form{font-size:1rem}.ui.large.form{font-size:1.14285714rem}.ui.big.form{font-size:1.28571429rem}.ui.huge.form{font-size:1.42857143rem}.ui.massive.form{font-size:1.71428571rem} \ No newline at end of file diff --git a/app/static/semantic/components/form.min.js b/app/static/semantic/components/form.min.js new file mode 100755 index 0000000..619ba1a --- /dev/null +++ b/app/static/semantic/components/form.min.js @@ -0,0 +1 @@ +!function(T,e,D,O){"use strict";e=void 0!==e&&e.Math==Math?e:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),T.fn.form=function(x){var k,E=T(this),w=E.selector||"",C=(new Date).getTime(),V=[],R=x,F=arguments[1],S="string"==typeof R,A=[].slice.call(arguments,1);return E.each(function(){var n,s,t,e,d,u,c,f,p,r,l,i,a,m,g,h,o=T(this),v=this,b=[],y=!1;(h={initialize:function(){h.get.settings(),S?(g===O&&h.instantiate(),h.invoke(R)):(g!==O&&g.invoke("destroy"),h.verbose("Initializing form validation",o,d),h.bindEvents(),h.set.defaults(),h.instantiate())},instantiate:function(){h.verbose("Storing instance of module",h),g=h,o.data(a,h)},destroy:function(){h.verbose("Destroying previous module",g),h.removeEvents(),o.removeData(a)},refresh:function(){h.verbose("Refreshing selector cache"),n=o.find(f.field),s=o.find(f.group),t=o.find(f.message),o.find(f.prompt),e=o.find(f.submit),o.find(f.clear),o.find(f.reset)},submit:function(){h.verbose("Submitting form",o),o.submit()},attachEvents:function(e,t){t=t||"submit",T(e).on("click"+m,function(e){h[t](),e.preventDefault()})},bindEvents:function(){h.verbose("Attaching form events"),o.on("submit"+m,h.validate.form).on("blur"+m,f.field,h.event.field.blur).on("click"+m,f.submit,h.submit).on("click"+m,f.reset,h.reset).on("click"+m,f.clear,h.clear),d.keyboardShortcuts&&o.on("keydown"+m,f.field,h.event.field.keydown),n.each(function(){var e=T(this),t=e.prop("type"),n=h.get.changeEvent(t,e);T(this).on(n+m,h.event.field.change)})},clear:function(){n.each(function(){var e=T(this),t=e.parent(),n=e.closest(s),r=n.find(f.prompt),i=e.data(c.defaultValue)||"",a=t.is(f.uiCheckbox),o=t.is(f.uiDropdown);n.hasClass(p.error)&&(h.verbose("Resetting error on field",n),n.removeClass(p.error),r.remove()),o?(h.verbose("Resetting dropdown value",t,i),t.dropdown("clear")):a?e.prop("checked",!1):(h.verbose("Resetting field value",e,i),e.val(""))})},reset:function(){n.each(function(){var e=T(this),t=e.parent(),n=e.closest(s),r=n.find(f.prompt),i=e.data(c.defaultValue),a=t.is(f.uiCheckbox),o=t.is(f.uiDropdown),l=n.hasClass(p.error);i!==O&&(l&&(h.verbose("Resetting error on field",n),n.removeClass(p.error),r.remove()),o?(h.verbose("Resetting dropdown value",t,i),t.dropdown("restore defaults")):a?(h.verbose("Resetting checkbox value",t,i),e.prop("checked",i)):(h.verbose("Resetting field value",e,i),e.val(i)))})},determine:{isValid:function(){var n=!0;return T.each(u,function(e,t){h.validate.field(t,e,!0)||(n=!1)}),n}},is:{bracketedRule:function(e){return e.type&&e.type.match(d.regExp.bracket)},shorthandFields:function(e){var t=e[Object.keys(e)[0]];return h.is.shorthandRules(t)},shorthandRules:function(e){return"string"==typeof e||T.isArray(e)},empty:function(e){return!e||0===e.length||(e.is('input[type="checkbox"]')?!e.is(":checked"):h.is.blank(e))},blank:function(e){return""===T.trim(e.val())},valid:function(e){var n=!0;return e?(h.verbose("Checking if field is valid",e),h.validate.field(u[e],e,!1)):(h.verbose("Checking if form is valid"),T.each(u,function(e,t){h.is.valid(e)||(n=!1)}),n)}},removeEvents:function(){o.off(m),n.off(m),e.off(m),n.off(m)},event:{field:{keydown:function(e){var t=T(this),n=e.which,r=t.is(f.input),i=t.is(f.checkbox),a=0")},fields:function(e){var n=T();return T.each(e,function(e,t){n=n.add(h.get.field(t))}),n},validation:function(n){var r,i;return!!u&&(T.each(u,function(e,t){i=t.identifier||e,h.get.field(i)[0]==n[0]&&(t.identifier=i,r=t)}),r||!1)},value:function(e){var t=[];return t.push(e),h.get.values.call(v,t)[e]},values:function(e){var t=T.isArray(e)?h.get.fields(e):n,u={};return t.each(function(e,t){var n=T(t),r=(n.prop("type"),n.prop("name")),i=n.val(),a=n.is(f.checkbox),o=n.is(f.radio),l=-1!==r.indexOf("[]"),s=!!a&&n.is(":checked");r&&(l?(r=r.replace("[]",""),u[r]||(u[r]=[]),a?s?u[r].push(i||!0):u[r].push(!1):u[r].push(i)):o?u[r]!==O&&0!=u[r]||(u[r]=!!s&&(i||!0)):u[r]=a?!!s&&(i||!0):i)}),u}},has:{field:function(e){return h.verbose("Checking for existence of a field with identifier",e),"string"!=typeof(e=h.escape.string(e))&&h.error(l.identifier,e),0"}),T(n+="")},prompt:function(e){return T("
").addClass("ui basic red pointing prompt label").html(e[0])}},rules:{empty:function(e){return!(e===O||""===e||T.isArray(e)&&0===e.length)},checked:function(){return 0=t},length:function(e,t){return e!==O&&e.length>=t},exactLength:function(e,t){return e!==O&&e.length==t},maxLength:function(e,t){return e!==O&&e.length<=t},match:function(e,t){var n;T(this);return 0=t)},exactCount:function(e,t){return 0==t?""===e:1==t?""!==e&&-1===e.search(","):e.split(",").length==t},maxCount:function(e,t){return 0!=t&&(1==t?-1===e.search(","):e.split(",").length<=t)}}}}(jQuery,window,document); \ No newline at end of file diff --git a/app/static/semantic/components/grid.css b/app/static/semantic/components/grid.css new file mode 100755 index 0000000..82aa7b7 --- /dev/null +++ b/app/static/semantic/components/grid.css @@ -0,0 +1,2039 @@ +/*! + * # Semantic UI 2.4.1 - Grid + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */ + + +/******************************* + Standard +*******************************/ + +.ui.grid { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-align: stretch; + -ms-flex-align: stretch; + align-items: stretch; + padding: 0em; +} + +/*---------------------- + Remove Gutters +-----------------------*/ + +.ui.grid { + margin-top: -1rem; + margin-bottom: -1rem; + margin-left: -1rem; + margin-right: -1rem; +} +.ui.relaxed.grid { + margin-left: -1.5rem; + margin-right: -1.5rem; +} +.ui[class*="very relaxed"].grid { + margin-left: -2.5rem; + margin-right: -2.5rem; +} + +/* Preserve Rows Spacing on Consecutive Grids */ +.ui.grid + .grid { + margin-top: 1rem; +} + +/*------------------- + Columns +--------------------*/ + + +/* Standard 16 column */ +.ui.grid > .column:not(.row), +.ui.grid > .row > .column { + position: relative; + display: inline-block; + width: 6.25%; + padding-left: 1rem; + padding-right: 1rem; + vertical-align: top; +} +.ui.grid > * { + padding-left: 1rem; + padding-right: 1rem; +} + +/*------------------- + Rows +--------------------*/ + +.ui.grid > .row { + position: relative; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-pack: inherit; + -ms-flex-pack: inherit; + justify-content: inherit; + -webkit-box-align: stretch; + -ms-flex-align: stretch; + align-items: stretch; + width: 100% !important; + padding: 0rem; + padding-top: 1rem; + padding-bottom: 1rem; +} + +/*------------------- + Columns +--------------------*/ + + +/* Vertical padding when no rows */ +.ui.grid > .column:not(.row) { + padding-top: 1rem; + padding-bottom: 1rem; +} +.ui.grid > .row > .column { + margin-top: 0em; + margin-bottom: 0em; +} + +/*------------------- + Content +--------------------*/ + +.ui.grid > .row > img, +.ui.grid > .row > .column > img { + max-width: 100%; +} + +/*------------------- + Loose Coupling +--------------------*/ + + +/* Collapse Margin on Consecutive Grid */ +.ui.grid > .ui.grid:first-child { + margin-top: 0em; +} +.ui.grid > .ui.grid:last-child { + margin-bottom: 0em; +} + +/* Segment inside Aligned Grid */ +.ui.grid .aligned.row > .column > .segment:not(.compact):not(.attached), +.ui.aligned.grid .column > .segment:not(.compact):not(.attached) { + width: 100%; +} + +/* Align Dividers with Gutter */ +.ui.grid .row + .ui.divider { + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + margin: 1rem 1rem; +} +.ui.grid .column + .ui.vertical.divider { + height: calc(50% - (2rem / 2)); +} + +/* Remove Border on Last Horizontal Segment */ +.ui.grid > .row > .column:last-child > .horizontal.segment, +.ui.grid > .column:last-child > .horizontal.segment { + -webkit-box-shadow: none; + box-shadow: none; +} + + +/******************************* + Variations +*******************************/ + + +/*----------------------- + Page Grid +-------------------------*/ + +@media only screen and (max-width: 767px) { + .ui.page.grid { + width: auto; + padding-left: 0em; + padding-right: 0em; + margin-left: 0em; + margin-right: 0em; + } +} +@media only screen and (min-width: 768px) and (max-width: 991px) { + .ui.page.grid { + width: auto; + margin-left: 0em; + margin-right: 0em; + padding-left: 2em; + padding-right: 2em; + } +} +@media only screen and (min-width: 992px) and (max-width: 1199px) { + .ui.page.grid { + width: auto; + margin-left: 0em; + margin-right: 0em; + padding-left: 3%; + padding-right: 3%; + } +} +@media only screen and (min-width: 1200px) and (max-width: 1919px) { + .ui.page.grid { + width: auto; + margin-left: 0em; + margin-right: 0em; + padding-left: 15%; + padding-right: 15%; + } +} +@media only screen and (min-width: 1920px) { + .ui.page.grid { + width: auto; + margin-left: 0em; + margin-right: 0em; + padding-left: 23%; + padding-right: 23%; + } +} + +/*------------------- + Column Count +--------------------*/ + + +/* Assume full width with one column */ +.ui.grid > .column:only-child, +.ui.grid > .row > .column:only-child { + width: 100%; +} + +/* Grid Based */ +.ui[class*="one column"].grid > .row > .column, +.ui[class*="one column"].grid > .column:not(.row) { + width: 100%; +} +.ui[class*="two column"].grid > .row > .column, +.ui[class*="two column"].grid > .column:not(.row) { + width: 50%; +} +.ui[class*="three column"].grid > .row > .column, +.ui[class*="three column"].grid > .column:not(.row) { + width: 33.33333333%; +} +.ui[class*="four column"].grid > .row > .column, +.ui[class*="four column"].grid > .column:not(.row) { + width: 25%; +} +.ui[class*="five column"].grid > .row > .column, +.ui[class*="five column"].grid > .column:not(.row) { + width: 20%; +} +.ui[class*="six column"].grid > .row > .column, +.ui[class*="six column"].grid > .column:not(.row) { + width: 16.66666667%; +} +.ui[class*="seven column"].grid > .row > .column, +.ui[class*="seven column"].grid > .column:not(.row) { + width: 14.28571429%; +} +.ui[class*="eight column"].grid > .row > .column, +.ui[class*="eight column"].grid > .column:not(.row) { + width: 12.5%; +} +.ui[class*="nine column"].grid > .row > .column, +.ui[class*="nine column"].grid > .column:not(.row) { + width: 11.11111111%; +} +.ui[class*="ten column"].grid > .row > .column, +.ui[class*="ten column"].grid > .column:not(.row) { + width: 10%; +} +.ui[class*="eleven column"].grid > .row > .column, +.ui[class*="eleven column"].grid > .column:not(.row) { + width: 9.09090909%; +} +.ui[class*="twelve column"].grid > .row > .column, +.ui[class*="twelve column"].grid > .column:not(.row) { + width: 8.33333333%; +} +.ui[class*="thirteen column"].grid > .row > .column, +.ui[class*="thirteen column"].grid > .column:not(.row) { + width: 7.69230769%; +} +.ui[class*="fourteen column"].grid > .row > .column, +.ui[class*="fourteen column"].grid > .column:not(.row) { + width: 7.14285714%; +} +.ui[class*="fifteen column"].grid > .row > .column, +.ui[class*="fifteen column"].grid > .column:not(.row) { + width: 6.66666667%; +} +.ui[class*="sixteen column"].grid > .row > .column, +.ui[class*="sixteen column"].grid > .column:not(.row) { + width: 6.25%; +} + +/* Row Based Overrides */ +.ui.grid > [class*="one column"].row > .column { + width: 100% !important; +} +.ui.grid > [class*="two column"].row > .column { + width: 50% !important; +} +.ui.grid > [class*="three column"].row > .column { + width: 33.33333333% !important; +} +.ui.grid > [class*="four column"].row > .column { + width: 25% !important; +} +.ui.grid > [class*="five column"].row > .column { + width: 20% !important; +} +.ui.grid > [class*="six column"].row > .column { + width: 16.66666667% !important; +} +.ui.grid > [class*="seven column"].row > .column { + width: 14.28571429% !important; +} +.ui.grid > [class*="eight column"].row > .column { + width: 12.5% !important; +} +.ui.grid > [class*="nine column"].row > .column { + width: 11.11111111% !important; +} +.ui.grid > [class*="ten column"].row > .column { + width: 10% !important; +} +.ui.grid > [class*="eleven column"].row > .column { + width: 9.09090909% !important; +} +.ui.grid > [class*="twelve column"].row > .column { + width: 8.33333333% !important; +} +.ui.grid > [class*="thirteen column"].row > .column { + width: 7.69230769% !important; +} +.ui.grid > [class*="fourteen column"].row > .column { + width: 7.14285714% !important; +} +.ui.grid > [class*="fifteen column"].row > .column { + width: 6.66666667% !important; +} +.ui.grid > [class*="sixteen column"].row > .column { + width: 6.25% !important; +} + +/* Celled Page */ +.ui.celled.page.grid { + -webkit-box-shadow: none; + box-shadow: none; +} + +/*------------------- + Column Width +--------------------*/ + + +/* Sizing Combinations */ +.ui.grid > .row > [class*="one wide"].column, +.ui.grid > .column.row > [class*="one wide"].column, +.ui.grid > [class*="one wide"].column, +.ui.column.grid > [class*="one wide"].column { + width: 6.25% !important; +} +.ui.grid > .row > [class*="two wide"].column, +.ui.grid > .column.row > [class*="two wide"].column, +.ui.grid > [class*="two wide"].column, +.ui.column.grid > [class*="two wide"].column { + width: 12.5% !important; +} +.ui.grid > .row > [class*="three wide"].column, +.ui.grid > .column.row > [class*="three wide"].column, +.ui.grid > [class*="three wide"].column, +.ui.column.grid > [class*="three wide"].column { + width: 18.75% !important; +} +.ui.grid > .row > [class*="four wide"].column, +.ui.grid > .column.row > [class*="four wide"].column, +.ui.grid > [class*="four wide"].column, +.ui.column.grid > [class*="four wide"].column { + width: 25% !important; +} +.ui.grid > .row > [class*="five wide"].column, +.ui.grid > .column.row > [class*="five wide"].column, +.ui.grid > [class*="five wide"].column, +.ui.column.grid > [class*="five wide"].column { + width: 31.25% !important; +} +.ui.grid > .row > [class*="six wide"].column, +.ui.grid > .column.row > [class*="six wide"].column, +.ui.grid > [class*="six wide"].column, +.ui.column.grid > [class*="six wide"].column { + width: 37.5% !important; +} +.ui.grid > .row > [class*="seven wide"].column, +.ui.grid > .column.row > [class*="seven wide"].column, +.ui.grid > [class*="seven wide"].column, +.ui.column.grid > [class*="seven wide"].column { + width: 43.75% !important; +} +.ui.grid > .row > [class*="eight wide"].column, +.ui.grid > .column.row > [class*="eight wide"].column, +.ui.grid > [class*="eight wide"].column, +.ui.column.grid > [class*="eight wide"].column { + width: 50% !important; +} +.ui.grid > .row > [class*="nine wide"].column, +.ui.grid > .column.row > [class*="nine wide"].column, +.ui.grid > [class*="nine wide"].column, +.ui.column.grid > [class*="nine wide"].column { + width: 56.25% !important; +} +.ui.grid > .row > [class*="ten wide"].column, +.ui.grid > .column.row > [class*="ten wide"].column, +.ui.grid > [class*="ten wide"].column, +.ui.column.grid > [class*="ten wide"].column { + width: 62.5% !important; +} +.ui.grid > .row > [class*="eleven wide"].column, +.ui.grid > .column.row > [class*="eleven wide"].column, +.ui.grid > [class*="eleven wide"].column, +.ui.column.grid > [class*="eleven wide"].column { + width: 68.75% !important; +} +.ui.grid > .row > [class*="twelve wide"].column, +.ui.grid > .column.row > [class*="twelve wide"].column, +.ui.grid > [class*="twelve wide"].column, +.ui.column.grid > [class*="twelve wide"].column { + width: 75% !important; +} +.ui.grid > .row > [class*="thirteen wide"].column, +.ui.grid > .column.row > [class*="thirteen wide"].column, +.ui.grid > [class*="thirteen wide"].column, +.ui.column.grid > [class*="thirteen wide"].column { + width: 81.25% !important; +} +.ui.grid > .row > [class*="fourteen wide"].column, +.ui.grid > .column.row > [class*="fourteen wide"].column, +.ui.grid > [class*="fourteen wide"].column, +.ui.column.grid > [class*="fourteen wide"].column { + width: 87.5% !important; +} +.ui.grid > .row > [class*="fifteen wide"].column, +.ui.grid > .column.row > [class*="fifteen wide"].column, +.ui.grid > [class*="fifteen wide"].column, +.ui.column.grid > [class*="fifteen wide"].column { + width: 93.75% !important; +} +.ui.grid > .row > [class*="sixteen wide"].column, +.ui.grid > .column.row > [class*="sixteen wide"].column, +.ui.grid > [class*="sixteen wide"].column, +.ui.column.grid > [class*="sixteen wide"].column { + width: 100% !important; +} + +/*---------------------- + Width per Device +-----------------------*/ + + +/* Mobile Sizing Combinations */ +@media only screen and (min-width: 320px) and (max-width: 767px) { + .ui.grid > .row > [class*="one wide mobile"].column, + .ui.grid > .column.row > [class*="one wide mobile"].column, + .ui.grid > [class*="one wide mobile"].column, + .ui.column.grid > [class*="one wide mobile"].column { + width: 6.25% !important; + } + .ui.grid > .row > [class*="two wide mobile"].column, + .ui.grid > .column.row > [class*="two wide mobile"].column, + .ui.grid > [class*="two wide mobile"].column, + .ui.column.grid > [class*="two wide mobile"].column { + width: 12.5% !important; + } + .ui.grid > .row > [class*="three wide mobile"].column, + .ui.grid > .column.row > [class*="three wide mobile"].column, + .ui.grid > [class*="three wide mobile"].column, + .ui.column.grid > [class*="three wide mobile"].column { + width: 18.75% !important; + } + .ui.grid > .row > [class*="four wide mobile"].column, + .ui.grid > .column.row > [class*="four wide mobile"].column, + .ui.grid > [class*="four wide mobile"].column, + .ui.column.grid > [class*="four wide mobile"].column { + width: 25% !important; + } + .ui.grid > .row > [class*="five wide mobile"].column, + .ui.grid > .column.row > [class*="five wide mobile"].column, + .ui.grid > [class*="five wide mobile"].column, + .ui.column.grid > [class*="five wide mobile"].column { + width: 31.25% !important; + } + .ui.grid > .row > [class*="six wide mobile"].column, + .ui.grid > .column.row > [class*="six wide mobile"].column, + .ui.grid > [class*="six wide mobile"].column, + .ui.column.grid > [class*="six wide mobile"].column { + width: 37.5% !important; + } + .ui.grid > .row > [class*="seven wide mobile"].column, + .ui.grid > .column.row > [class*="seven wide mobile"].column, + .ui.grid > [class*="seven wide mobile"].column, + .ui.column.grid > [class*="seven wide mobile"].column { + width: 43.75% !important; + } + .ui.grid > .row > [class*="eight wide mobile"].column, + .ui.grid > .column.row > [class*="eight wide mobile"].column, + .ui.grid > [class*="eight wide mobile"].column, + .ui.column.grid > [class*="eight wide mobile"].column { + width: 50% !important; + } + .ui.grid > .row > [class*="nine wide mobile"].column, + .ui.grid > .column.row > [class*="nine wide mobile"].column, + .ui.grid > [class*="nine wide mobile"].column, + .ui.column.grid > [class*="nine wide mobile"].column { + width: 56.25% !important; + } + .ui.grid > .row > [class*="ten wide mobile"].column, + .ui.grid > .column.row > [class*="ten wide mobile"].column, + .ui.grid > [class*="ten wide mobile"].column, + .ui.column.grid > [class*="ten wide mobile"].column { + width: 62.5% !important; + } + .ui.grid > .row > [class*="eleven wide mobile"].column, + .ui.grid > .column.row > [class*="eleven wide mobile"].column, + .ui.grid > [class*="eleven wide mobile"].column, + .ui.column.grid > [class*="eleven wide mobile"].column { + width: 68.75% !important; + } + .ui.grid > .row > [class*="twelve wide mobile"].column, + .ui.grid > .column.row > [class*="twelve wide mobile"].column, + .ui.grid > [class*="twelve wide mobile"].column, + .ui.column.grid > [class*="twelve wide mobile"].column { + width: 75% !important; + } + .ui.grid > .row > [class*="thirteen wide mobile"].column, + .ui.grid > .column.row > [class*="thirteen wide mobile"].column, + .ui.grid > [class*="thirteen wide mobile"].column, + .ui.column.grid > [class*="thirteen wide mobile"].column { + width: 81.25% !important; + } + .ui.grid > .row > [class*="fourteen wide mobile"].column, + .ui.grid > .column.row > [class*="fourteen wide mobile"].column, + .ui.grid > [class*="fourteen wide mobile"].column, + .ui.column.grid > [class*="fourteen wide mobile"].column { + width: 87.5% !important; + } + .ui.grid > .row > [class*="fifteen wide mobile"].column, + .ui.grid > .column.row > [class*="fifteen wide mobile"].column, + .ui.grid > [class*="fifteen wide mobile"].column, + .ui.column.grid > [class*="fifteen wide mobile"].column { + width: 93.75% !important; + } + .ui.grid > .row > [class*="sixteen wide mobile"].column, + .ui.grid > .column.row > [class*="sixteen wide mobile"].column, + .ui.grid > [class*="sixteen wide mobile"].column, + .ui.column.grid > [class*="sixteen wide mobile"].column { + width: 100% !important; + } +} + +/* Tablet Sizing Combinations */ +@media only screen and (min-width: 768px) and (max-width: 991px) { + .ui.grid > .row > [class*="one wide tablet"].column, + .ui.grid > .column.row > [class*="one wide tablet"].column, + .ui.grid > [class*="one wide tablet"].column, + .ui.column.grid > [class*="one wide tablet"].column { + width: 6.25% !important; + } + .ui.grid > .row > [class*="two wide tablet"].column, + .ui.grid > .column.row > [class*="two wide tablet"].column, + .ui.grid > [class*="two wide tablet"].column, + .ui.column.grid > [class*="two wide tablet"].column { + width: 12.5% !important; + } + .ui.grid > .row > [class*="three wide tablet"].column, + .ui.grid > .column.row > [class*="three wide tablet"].column, + .ui.grid > [class*="three wide tablet"].column, + .ui.column.grid > [class*="three wide tablet"].column { + width: 18.75% !important; + } + .ui.grid > .row > [class*="four wide tablet"].column, + .ui.grid > .column.row > [class*="four wide tablet"].column, + .ui.grid > [class*="four wide tablet"].column, + .ui.column.grid > [class*="four wide tablet"].column { + width: 25% !important; + } + .ui.grid > .row > [class*="five wide tablet"].column, + .ui.grid > .column.row > [class*="five wide tablet"].column, + .ui.grid > [class*="five wide tablet"].column, + .ui.column.grid > [class*="five wide tablet"].column { + width: 31.25% !important; + } + .ui.grid > .row > [class*="six wide tablet"].column, + .ui.grid > .column.row > [class*="six wide tablet"].column, + .ui.grid > [class*="six wide tablet"].column, + .ui.column.grid > [class*="six wide tablet"].column { + width: 37.5% !important; + } + .ui.grid > .row > [class*="seven wide tablet"].column, + .ui.grid > .column.row > [class*="seven wide tablet"].column, + .ui.grid > [class*="seven wide tablet"].column, + .ui.column.grid > [class*="seven wide tablet"].column { + width: 43.75% !important; + } + .ui.grid > .row > [class*="eight wide tablet"].column, + .ui.grid > .column.row > [class*="eight wide tablet"].column, + .ui.grid > [class*="eight wide tablet"].column, + .ui.column.grid > [class*="eight wide tablet"].column { + width: 50% !important; + } + .ui.grid > .row > [class*="nine wide tablet"].column, + .ui.grid > .column.row > [class*="nine wide tablet"].column, + .ui.grid > [class*="nine wide tablet"].column, + .ui.column.grid > [class*="nine wide tablet"].column { + width: 56.25% !important; + } + .ui.grid > .row > [class*="ten wide tablet"].column, + .ui.grid > .column.row > [class*="ten wide tablet"].column, + .ui.grid > [class*="ten wide tablet"].column, + .ui.column.grid > [class*="ten wide tablet"].column { + width: 62.5% !important; + } + .ui.grid > .row > [class*="eleven wide tablet"].column, + .ui.grid > .column.row > [class*="eleven wide tablet"].column, + .ui.grid > [class*="eleven wide tablet"].column, + .ui.column.grid > [class*="eleven wide tablet"].column { + width: 68.75% !important; + } + .ui.grid > .row > [class*="twelve wide tablet"].column, + .ui.grid > .column.row > [class*="twelve wide tablet"].column, + .ui.grid > [class*="twelve wide tablet"].column, + .ui.column.grid > [class*="twelve wide tablet"].column { + width: 75% !important; + } + .ui.grid > .row > [class*="thirteen wide tablet"].column, + .ui.grid > .column.row > [class*="thirteen wide tablet"].column, + .ui.grid > [class*="thirteen wide tablet"].column, + .ui.column.grid > [class*="thirteen wide tablet"].column { + width: 81.25% !important; + } + .ui.grid > .row > [class*="fourteen wide tablet"].column, + .ui.grid > .column.row > [class*="fourteen wide tablet"].column, + .ui.grid > [class*="fourteen wide tablet"].column, + .ui.column.grid > [class*="fourteen wide tablet"].column { + width: 87.5% !important; + } + .ui.grid > .row > [class*="fifteen wide tablet"].column, + .ui.grid > .column.row > [class*="fifteen wide tablet"].column, + .ui.grid > [class*="fifteen wide tablet"].column, + .ui.column.grid > [class*="fifteen wide tablet"].column { + width: 93.75% !important; + } + .ui.grid > .row > [class*="sixteen wide tablet"].column, + .ui.grid > .column.row > [class*="sixteen wide tablet"].column, + .ui.grid > [class*="sixteen wide tablet"].column, + .ui.column.grid > [class*="sixteen wide tablet"].column { + width: 100% !important; + } +} + +/* Computer/Desktop Sizing Combinations */ +@media only screen and (min-width: 992px) { + .ui.grid > .row > [class*="one wide computer"].column, + .ui.grid > .column.row > [class*="one wide computer"].column, + .ui.grid > [class*="one wide computer"].column, + .ui.column.grid > [class*="one wide computer"].column { + width: 6.25% !important; + } + .ui.grid > .row > [class*="two wide computer"].column, + .ui.grid > .column.row > [class*="two wide computer"].column, + .ui.grid > [class*="two wide computer"].column, + .ui.column.grid > [class*="two wide computer"].column { + width: 12.5% !important; + } + .ui.grid > .row > [class*="three wide computer"].column, + .ui.grid > .column.row > [class*="three wide computer"].column, + .ui.grid > [class*="three wide computer"].column, + .ui.column.grid > [class*="three wide computer"].column { + width: 18.75% !important; + } + .ui.grid > .row > [class*="four wide computer"].column, + .ui.grid > .column.row > [class*="four wide computer"].column, + .ui.grid > [class*="four wide computer"].column, + .ui.column.grid > [class*="four wide computer"].column { + width: 25% !important; + } + .ui.grid > .row > [class*="five wide computer"].column, + .ui.grid > .column.row > [class*="five wide computer"].column, + .ui.grid > [class*="five wide computer"].column, + .ui.column.grid > [class*="five wide computer"].column { + width: 31.25% !important; + } + .ui.grid > .row > [class*="six wide computer"].column, + .ui.grid > .column.row > [class*="six wide computer"].column, + .ui.grid > [class*="six wide computer"].column, + .ui.column.grid > [class*="six wide computer"].column { + width: 37.5% !important; + } + .ui.grid > .row > [class*="seven wide computer"].column, + .ui.grid > .column.row > [class*="seven wide computer"].column, + .ui.grid > [class*="seven wide computer"].column, + .ui.column.grid > [class*="seven wide computer"].column { + width: 43.75% !important; + } + .ui.grid > .row > [class*="eight wide computer"].column, + .ui.grid > .column.row > [class*="eight wide computer"].column, + .ui.grid > [class*="eight wide computer"].column, + .ui.column.grid > [class*="eight wide computer"].column { + width: 50% !important; + } + .ui.grid > .row > [class*="nine wide computer"].column, + .ui.grid > .column.row > [class*="nine wide computer"].column, + .ui.grid > [class*="nine wide computer"].column, + .ui.column.grid > [class*="nine wide computer"].column { + width: 56.25% !important; + } + .ui.grid > .row > [class*="ten wide computer"].column, + .ui.grid > .column.row > [class*="ten wide computer"].column, + .ui.grid > [class*="ten wide computer"].column, + .ui.column.grid > [class*="ten wide computer"].column { + width: 62.5% !important; + } + .ui.grid > .row > [class*="eleven wide computer"].column, + .ui.grid > .column.row > [class*="eleven wide computer"].column, + .ui.grid > [class*="eleven wide computer"].column, + .ui.column.grid > [class*="eleven wide computer"].column { + width: 68.75% !important; + } + .ui.grid > .row > [class*="twelve wide computer"].column, + .ui.grid > .column.row > [class*="twelve wide computer"].column, + .ui.grid > [class*="twelve wide computer"].column, + .ui.column.grid > [class*="twelve wide computer"].column { + width: 75% !important; + } + .ui.grid > .row > [class*="thirteen wide computer"].column, + .ui.grid > .column.row > [class*="thirteen wide computer"].column, + .ui.grid > [class*="thirteen wide computer"].column, + .ui.column.grid > [class*="thirteen wide computer"].column { + width: 81.25% !important; + } + .ui.grid > .row > [class*="fourteen wide computer"].column, + .ui.grid > .column.row > [class*="fourteen wide computer"].column, + .ui.grid > [class*="fourteen wide computer"].column, + .ui.column.grid > [class*="fourteen wide computer"].column { + width: 87.5% !important; + } + .ui.grid > .row > [class*="fifteen wide computer"].column, + .ui.grid > .column.row > [class*="fifteen wide computer"].column, + .ui.grid > [class*="fifteen wide computer"].column, + .ui.column.grid > [class*="fifteen wide computer"].column { + width: 93.75% !important; + } + .ui.grid > .row > [class*="sixteen wide computer"].column, + .ui.grid > .column.row > [class*="sixteen wide computer"].column, + .ui.grid > [class*="sixteen wide computer"].column, + .ui.column.grid > [class*="sixteen wide computer"].column { + width: 100% !important; + } +} + +/* Large Monitor Sizing Combinations */ +@media only screen and (min-width: 1200px) and (max-width: 1919px) { + .ui.grid > .row > [class*="one wide large screen"].column, + .ui.grid > .column.row > [class*="one wide large screen"].column, + .ui.grid > [class*="one wide large screen"].column, + .ui.column.grid > [class*="one wide large screen"].column { + width: 6.25% !important; + } + .ui.grid > .row > [class*="two wide large screen"].column, + .ui.grid > .column.row > [class*="two wide large screen"].column, + .ui.grid > [class*="two wide large screen"].column, + .ui.column.grid > [class*="two wide large screen"].column { + width: 12.5% !important; + } + .ui.grid > .row > [class*="three wide large screen"].column, + .ui.grid > .column.row > [class*="three wide large screen"].column, + .ui.grid > [class*="three wide large screen"].column, + .ui.column.grid > [class*="three wide large screen"].column { + width: 18.75% !important; + } + .ui.grid > .row > [class*="four wide large screen"].column, + .ui.grid > .column.row > [class*="four wide large screen"].column, + .ui.grid > [class*="four wide large screen"].column, + .ui.column.grid > [class*="four wide large screen"].column { + width: 25% !important; + } + .ui.grid > .row > [class*="five wide large screen"].column, + .ui.grid > .column.row > [class*="five wide large screen"].column, + .ui.grid > [class*="five wide large screen"].column, + .ui.column.grid > [class*="five wide large screen"].column { + width: 31.25% !important; + } + .ui.grid > .row > [class*="six wide large screen"].column, + .ui.grid > .column.row > [class*="six wide large screen"].column, + .ui.grid > [class*="six wide large screen"].column, + .ui.column.grid > [class*="six wide large screen"].column { + width: 37.5% !important; + } + .ui.grid > .row > [class*="seven wide large screen"].column, + .ui.grid > .column.row > [class*="seven wide large screen"].column, + .ui.grid > [class*="seven wide large screen"].column, + .ui.column.grid > [class*="seven wide large screen"].column { + width: 43.75% !important; + } + .ui.grid > .row > [class*="eight wide large screen"].column, + .ui.grid > .column.row > [class*="eight wide large screen"].column, + .ui.grid > [class*="eight wide large screen"].column, + .ui.column.grid > [class*="eight wide large screen"].column { + width: 50% !important; + } + .ui.grid > .row > [class*="nine wide large screen"].column, + .ui.grid > .column.row > [class*="nine wide large screen"].column, + .ui.grid > [class*="nine wide large screen"].column, + .ui.column.grid > [class*="nine wide large screen"].column { + width: 56.25% !important; + } + .ui.grid > .row > [class*="ten wide large screen"].column, + .ui.grid > .column.row > [class*="ten wide large screen"].column, + .ui.grid > [class*="ten wide large screen"].column, + .ui.column.grid > [class*="ten wide large screen"].column { + width: 62.5% !important; + } + .ui.grid > .row > [class*="eleven wide large screen"].column, + .ui.grid > .column.row > [class*="eleven wide large screen"].column, + .ui.grid > [class*="eleven wide large screen"].column, + .ui.column.grid > [class*="eleven wide large screen"].column { + width: 68.75% !important; + } + .ui.grid > .row > [class*="twelve wide large screen"].column, + .ui.grid > .column.row > [class*="twelve wide large screen"].column, + .ui.grid > [class*="twelve wide large screen"].column, + .ui.column.grid > [class*="twelve wide large screen"].column { + width: 75% !important; + } + .ui.grid > .row > [class*="thirteen wide large screen"].column, + .ui.grid > .column.row > [class*="thirteen wide large screen"].column, + .ui.grid > [class*="thirteen wide large screen"].column, + .ui.column.grid > [class*="thirteen wide large screen"].column { + width: 81.25% !important; + } + .ui.grid > .row > [class*="fourteen wide large screen"].column, + .ui.grid > .column.row > [class*="fourteen wide large screen"].column, + .ui.grid > [class*="fourteen wide large screen"].column, + .ui.column.grid > [class*="fourteen wide large screen"].column { + width: 87.5% !important; + } + .ui.grid > .row > [class*="fifteen wide large screen"].column, + .ui.grid > .column.row > [class*="fifteen wide large screen"].column, + .ui.grid > [class*="fifteen wide large screen"].column, + .ui.column.grid > [class*="fifteen wide large screen"].column { + width: 93.75% !important; + } + .ui.grid > .row > [class*="sixteen wide large screen"].column, + .ui.grid > .column.row > [class*="sixteen wide large screen"].column, + .ui.grid > [class*="sixteen wide large screen"].column, + .ui.column.grid > [class*="sixteen wide large screen"].column { + width: 100% !important; + } +} + +/* Widescreen Sizing Combinations */ +@media only screen and (min-width: 1920px) { + .ui.grid > .row > [class*="one wide widescreen"].column, + .ui.grid > .column.row > [class*="one wide widescreen"].column, + .ui.grid > [class*="one wide widescreen"].column, + .ui.column.grid > [class*="one wide widescreen"].column { + width: 6.25% !important; + } + .ui.grid > .row > [class*="two wide widescreen"].column, + .ui.grid > .column.row > [class*="two wide widescreen"].column, + .ui.grid > [class*="two wide widescreen"].column, + .ui.column.grid > [class*="two wide widescreen"].column { + width: 12.5% !important; + } + .ui.grid > .row > [class*="three wide widescreen"].column, + .ui.grid > .column.row > [class*="three wide widescreen"].column, + .ui.grid > [class*="three wide widescreen"].column, + .ui.column.grid > [class*="three wide widescreen"].column { + width: 18.75% !important; + } + .ui.grid > .row > [class*="four wide widescreen"].column, + .ui.grid > .column.row > [class*="four wide widescreen"].column, + .ui.grid > [class*="four wide widescreen"].column, + .ui.column.grid > [class*="four wide widescreen"].column { + width: 25% !important; + } + .ui.grid > .row > [class*="five wide widescreen"].column, + .ui.grid > .column.row > [class*="five wide widescreen"].column, + .ui.grid > [class*="five wide widescreen"].column, + .ui.column.grid > [class*="five wide widescreen"].column { + width: 31.25% !important; + } + .ui.grid > .row > [class*="six wide widescreen"].column, + .ui.grid > .column.row > [class*="six wide widescreen"].column, + .ui.grid > [class*="six wide widescreen"].column, + .ui.column.grid > [class*="six wide widescreen"].column { + width: 37.5% !important; + } + .ui.grid > .row > [class*="seven wide widescreen"].column, + .ui.grid > .column.row > [class*="seven wide widescreen"].column, + .ui.grid > [class*="seven wide widescreen"].column, + .ui.column.grid > [class*="seven wide widescreen"].column { + width: 43.75% !important; + } + .ui.grid > .row > [class*="eight wide widescreen"].column, + .ui.grid > .column.row > [class*="eight wide widescreen"].column, + .ui.grid > [class*="eight wide widescreen"].column, + .ui.column.grid > [class*="eight wide widescreen"].column { + width: 50% !important; + } + .ui.grid > .row > [class*="nine wide widescreen"].column, + .ui.grid > .column.row > [class*="nine wide widescreen"].column, + .ui.grid > [class*="nine wide widescreen"].column, + .ui.column.grid > [class*="nine wide widescreen"].column { + width: 56.25% !important; + } + .ui.grid > .row > [class*="ten wide widescreen"].column, + .ui.grid > .column.row > [class*="ten wide widescreen"].column, + .ui.grid > [class*="ten wide widescreen"].column, + .ui.column.grid > [class*="ten wide widescreen"].column { + width: 62.5% !important; + } + .ui.grid > .row > [class*="eleven wide widescreen"].column, + .ui.grid > .column.row > [class*="eleven wide widescreen"].column, + .ui.grid > [class*="eleven wide widescreen"].column, + .ui.column.grid > [class*="eleven wide widescreen"].column { + width: 68.75% !important; + } + .ui.grid > .row > [class*="twelve wide widescreen"].column, + .ui.grid > .column.row > [class*="twelve wide widescreen"].column, + .ui.grid > [class*="twelve wide widescreen"].column, + .ui.column.grid > [class*="twelve wide widescreen"].column { + width: 75% !important; + } + .ui.grid > .row > [class*="thirteen wide widescreen"].column, + .ui.grid > .column.row > [class*="thirteen wide widescreen"].column, + .ui.grid > [class*="thirteen wide widescreen"].column, + .ui.column.grid > [class*="thirteen wide widescreen"].column { + width: 81.25% !important; + } + .ui.grid > .row > [class*="fourteen wide widescreen"].column, + .ui.grid > .column.row > [class*="fourteen wide widescreen"].column, + .ui.grid > [class*="fourteen wide widescreen"].column, + .ui.column.grid > [class*="fourteen wide widescreen"].column { + width: 87.5% !important; + } + .ui.grid > .row > [class*="fifteen wide widescreen"].column, + .ui.grid > .column.row > [class*="fifteen wide widescreen"].column, + .ui.grid > [class*="fifteen wide widescreen"].column, + .ui.column.grid > [class*="fifteen wide widescreen"].column { + width: 93.75% !important; + } + .ui.grid > .row > [class*="sixteen wide widescreen"].column, + .ui.grid > .column.row > [class*="sixteen wide widescreen"].column, + .ui.grid > [class*="sixteen wide widescreen"].column, + .ui.column.grid > [class*="sixteen wide widescreen"].column { + width: 100% !important; + } +} + +/*---------------------- + Centered +-----------------------*/ + +.ui.centered.grid, +.ui.centered.grid > .row, +.ui.grid > .centered.row { + text-align: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; +} +.ui.centered.grid > .column:not(.aligned):not(.justified):not(.row), +.ui.centered.grid > .row > .column:not(.aligned):not(.justified), +.ui.grid .centered.row > .column:not(.aligned):not(.justified) { + text-align: left; +} +.ui.grid > .centered.column, +.ui.grid > .row > .centered.column { + display: block; + margin-left: auto; + margin-right: auto; +} + +/*---------------------- + Relaxed +-----------------------*/ + +.ui.relaxed.grid > .column:not(.row), +.ui.relaxed.grid > .row > .column, +.ui.grid > .relaxed.row > .column { + padding-left: 1.5rem; + padding-right: 1.5rem; +} +.ui[class*="very relaxed"].grid > .column:not(.row), +.ui[class*="very relaxed"].grid > .row > .column, +.ui.grid > [class*="very relaxed"].row > .column { + padding-left: 2.5rem; + padding-right: 2.5rem; +} + +/* Coupling with UI Divider */ +.ui.relaxed.grid .row + .ui.divider, +.ui.grid .relaxed.row + .ui.divider { + margin-left: 1.5rem; + margin-right: 1.5rem; +} +.ui[class*="very relaxed"].grid .row + .ui.divider, +.ui.grid [class*="very relaxed"].row + .ui.divider { + margin-left: 2.5rem; + margin-right: 2.5rem; +} + +/*---------------------- + Padded +-----------------------*/ + +.ui.padded.grid:not(.vertically):not(.horizontally) { + margin: 0em !important; +} +[class*="horizontally padded"].ui.grid { + margin-left: 0em !important; + margin-right: 0em !important; +} +[class*="vertically padded"].ui.grid { + margin-top: 0em !important; + margin-bottom: 0em !important; +} + +/*---------------------- + "Floated" +-----------------------*/ + +.ui.grid [class*="left floated"].column { + margin-right: auto; +} +.ui.grid [class*="right floated"].column { + margin-left: auto; +} + +/*---------------------- + Divided +-----------------------*/ + +.ui.divided.grid:not([class*="vertically divided"]) > .column:not(.row), +.ui.divided.grid:not([class*="vertically divided"]) > .row > .column { + -webkit-box-shadow: -1px 0px 0px 0px rgba(34, 36, 38, 0.15); + box-shadow: -1px 0px 0px 0px rgba(34, 36, 38, 0.15); +} + +/* Swap from padding to margin on columns to have dividers align */ +.ui[class*="vertically divided"].grid > .column:not(.row), +.ui[class*="vertically divided"].grid > .row > .column { + margin-top: 1rem; + margin-bottom: 1rem; + padding-top: 0rem; + padding-bottom: 0rem; +} +.ui[class*="vertically divided"].grid > .row { + margin-top: 0em; + margin-bottom: 0em; +} + +/* No divider on first column on row */ +.ui.divided.grid:not([class*="vertically divided"]) > .column:first-child, +.ui.divided.grid:not([class*="vertically divided"]) > .row > .column:first-child { + -webkit-box-shadow: none; + box-shadow: none; +} + +/* No space on top of first row */ +.ui[class*="vertically divided"].grid > .row:first-child > .column { + margin-top: 0em; +} + +/* Divided Row */ +.ui.grid > .divided.row > .column { + -webkit-box-shadow: -1px 0px 0px 0px rgba(34, 36, 38, 0.15); + box-shadow: -1px 0px 0px 0px rgba(34, 36, 38, 0.15); +} +.ui.grid > .divided.row > .column:first-child { + -webkit-box-shadow: none; + box-shadow: none; +} + +/* Vertically Divided */ +.ui[class*="vertically divided"].grid > .row { + position: relative; +} +.ui[class*="vertically divided"].grid > .row:before { + position: absolute; + content: ""; + top: 0em; + left: 0px; + width: calc(100% - 2rem); + height: 1px; + margin: 0% 1rem; + -webkit-box-shadow: 0px -1px 0px 0px rgba(34, 36, 38, 0.15); + box-shadow: 0px -1px 0px 0px rgba(34, 36, 38, 0.15); +} + +/* Padded Horizontally Divided */ +[class*="horizontally padded"].ui.divided.grid, +.ui.padded.divided.grid:not(.vertically):not(.horizontally) { + width: 100%; +} + +/* First Row Vertically Divided */ +.ui[class*="vertically divided"].grid > .row:first-child:before { + -webkit-box-shadow: none; + box-shadow: none; +} + +/* Inverted Divided */ +.ui.inverted.divided.grid:not([class*="vertically divided"]) > .column:not(.row), +.ui.inverted.divided.grid:not([class*="vertically divided"]) > .row > .column { + -webkit-box-shadow: -1px 0px 0px 0px rgba(255, 255, 255, 0.1); + box-shadow: -1px 0px 0px 0px rgba(255, 255, 255, 0.1); +} +.ui.inverted.divided.grid:not([class*="vertically divided"]) > .column:not(.row):first-child, +.ui.inverted.divided.grid:not([class*="vertically divided"]) > .row > .column:first-child { + -webkit-box-shadow: none; + box-shadow: none; +} +.ui.inverted[class*="vertically divided"].grid > .row:before { + -webkit-box-shadow: 0px -1px 0px 0px rgba(255, 255, 255, 0.1); + box-shadow: 0px -1px 0px 0px rgba(255, 255, 255, 0.1); +} + +/* Relaxed */ +.ui.relaxed[class*="vertically divided"].grid > .row:before { + margin-left: 1.5rem; + margin-right: 1.5rem; + width: calc(100% - 3rem); +} +.ui[class*="very relaxed"][class*="vertically divided"].grid > .row:before { + margin-left: 2.5rem; + margin-right: 2.5rem; + width: calc(100% - 5rem); +} + +/*---------------------- + Celled +-----------------------*/ + +.ui.celled.grid { + width: 100%; + margin: 1em 0em; + -webkit-box-shadow: 0px 0px 0px 1px #D4D4D5; + box-shadow: 0px 0px 0px 1px #D4D4D5; +} +.ui.celled.grid > .row { + width: 100% !important; + margin: 0em; + padding: 0em; + -webkit-box-shadow: 0px -1px 0px 0px #D4D4D5; + box-shadow: 0px -1px 0px 0px #D4D4D5; +} +.ui.celled.grid > .column:not(.row), +.ui.celled.grid > .row > .column { + -webkit-box-shadow: -1px 0px 0px 0px #D4D4D5; + box-shadow: -1px 0px 0px 0px #D4D4D5; +} +.ui.celled.grid > .column:first-child, +.ui.celled.grid > .row > .column:first-child { + -webkit-box-shadow: none; + box-shadow: none; +} +.ui.celled.grid > .column:not(.row), +.ui.celled.grid > .row > .column { + padding: 1em; +} +.ui.relaxed.celled.grid > .column:not(.row), +.ui.relaxed.celled.grid > .row > .column { + padding: 1.5em; +} +.ui[class*="very relaxed"].celled.grid > .column:not(.row), +.ui[class*="very relaxed"].celled.grid > .row > .column { + padding: 2em; +} + +/* Internally Celled */ +.ui[class*="internally celled"].grid { + -webkit-box-shadow: none; + box-shadow: none; + margin: 0em; +} +.ui[class*="internally celled"].grid > .row:first-child { + -webkit-box-shadow: none; + box-shadow: none; +} +.ui[class*="internally celled"].grid > .row > .column:first-child { + -webkit-box-shadow: none; + box-shadow: none; +} + +/*---------------------- + Vertically Aligned +-----------------------*/ + + +/* Top Aligned */ +.ui[class*="top aligned"].grid > .column:not(.row), +.ui[class*="top aligned"].grid > .row > .column, +.ui.grid > [class*="top aligned"].row > .column, +.ui.grid > [class*="top aligned"].column:not(.row), +.ui.grid > .row > [class*="top aligned"].column { + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + vertical-align: top; + -ms-flex-item-align: start !important; + align-self: flex-start !important; +} + +/* Middle Aligned */ +.ui[class*="middle aligned"].grid > .column:not(.row), +.ui[class*="middle aligned"].grid > .row > .column, +.ui.grid > [class*="middle aligned"].row > .column, +.ui.grid > [class*="middle aligned"].column:not(.row), +.ui.grid > .row > [class*="middle aligned"].column { + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + vertical-align: middle; + -ms-flex-item-align: center !important; + align-self: center !important; +} + +/* Bottom Aligned */ +.ui[class*="bottom aligned"].grid > .column:not(.row), +.ui[class*="bottom aligned"].grid > .row > .column, +.ui.grid > [class*="bottom aligned"].row > .column, +.ui.grid > [class*="bottom aligned"].column:not(.row), +.ui.grid > .row > [class*="bottom aligned"].column { + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + vertical-align: bottom; + -ms-flex-item-align: end !important; + align-self: flex-end !important; +} + +/* Stretched */ +.ui.stretched.grid > .row > .column, +.ui.stretched.grid > .column, +.ui.grid > .stretched.row > .column, +.ui.grid > .stretched.column:not(.row), +.ui.grid > .row > .stretched.column { + display: -webkit-inline-box !important; + display: -ms-inline-flexbox !important; + display: inline-flex !important; + -ms-flex-item-align: stretch; + align-self: stretch; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} +.ui.stretched.grid > .row > .column > *, +.ui.stretched.grid > .column > *, +.ui.grid > .stretched.row > .column > *, +.ui.grid > .stretched.column:not(.row) > *, +.ui.grid > .row > .stretched.column > * { + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; +} + +/*---------------------- + Horizontally Centered +-----------------------*/ + + +/* Left Aligned */ +.ui[class*="left aligned"].grid > .column, +.ui[class*="left aligned"].grid > .row > .column, +.ui.grid > [class*="left aligned"].row > .column, +.ui.grid > [class*="left aligned"].column.column, +.ui.grid > .row > [class*="left aligned"].column.column { + text-align: left; + -ms-flex-item-align: inherit; + align-self: inherit; +} + +/* Center Aligned */ +.ui[class*="center aligned"].grid > .column, +.ui[class*="center aligned"].grid > .row > .column, +.ui.grid > [class*="center aligned"].row > .column, +.ui.grid > [class*="center aligned"].column.column, +.ui.grid > .row > [class*="center aligned"].column.column { + text-align: center; + -ms-flex-item-align: inherit; + align-self: inherit; +} +.ui[class*="center aligned"].grid { + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; +} + +/* Right Aligned */ +.ui[class*="right aligned"].grid > .column, +.ui[class*="right aligned"].grid > .row > .column, +.ui.grid > [class*="right aligned"].row > .column, +.ui.grid > [class*="right aligned"].column.column, +.ui.grid > .row > [class*="right aligned"].column.column { + text-align: right; + -ms-flex-item-align: inherit; + align-self: inherit; +} + +/* Justified */ +.ui.justified.grid > .column, +.ui.justified.grid > .row > .column, +.ui.grid > .justified.row > .column, +.ui.grid > .justified.column.column, +.ui.grid > .row > .justified.column.column { + text-align: justify; + -webkit-hyphens: auto; + -ms-hyphens: auto; + hyphens: auto; +} + +/*---------------------- + Colored +-----------------------*/ + +.ui.grid > .row > .red.column, +.ui.grid > .row > .orange.column, +.ui.grid > .row > .yellow.column, +.ui.grid > .row > .olive.column, +.ui.grid > .row > .green.column, +.ui.grid > .row > .teal.column, +.ui.grid > .row > .blue.column, +.ui.grid > .row > .violet.column, +.ui.grid > .row > .purple.column, +.ui.grid > .row > .pink.column, +.ui.grid > .row > .brown.column, +.ui.grid > .row > .grey.column, +.ui.grid > .row > .black.column { + margin-top: -1rem; + margin-bottom: -1rem; + padding-top: 1rem; + padding-bottom: 1rem; +} + +/* Red */ +.ui.grid > .red.row, +.ui.grid > .red.column, +.ui.grid > .row > .red.column { + background-color: #DB2828 !important; + color: #FFFFFF; +} + +/* Orange */ +.ui.grid > .orange.row, +.ui.grid > .orange.column, +.ui.grid > .row > .orange.column { + background-color: #F2711C !important; + color: #FFFFFF; +} + +/* Yellow */ +.ui.grid > .yellow.row, +.ui.grid > .yellow.column, +.ui.grid > .row > .yellow.column { + background-color: #FBBD08 !important; + color: #FFFFFF; +} + +/* Olive */ +.ui.grid > .olive.row, +.ui.grid > .olive.column, +.ui.grid > .row > .olive.column { + background-color: #B5CC18 !important; + color: #FFFFFF; +} + +/* Green */ +.ui.grid > .green.row, +.ui.grid > .green.column, +.ui.grid > .row > .green.column { + background-color: #21BA45 !important; + color: #FFFFFF; +} + +/* Teal */ +.ui.grid > .teal.row, +.ui.grid > .teal.column, +.ui.grid > .row > .teal.column { + background-color: #00B5AD !important; + color: #FFFFFF; +} + +/* Blue */ +.ui.grid > .blue.row, +.ui.grid > .blue.column, +.ui.grid > .row > .blue.column { + background-color: #2185D0 !important; + color: #FFFFFF; +} + +/* Violet */ +.ui.grid > .violet.row, +.ui.grid > .violet.column, +.ui.grid > .row > .violet.column { + background-color: #6435C9 !important; + color: #FFFFFF; +} + +/* Purple */ +.ui.grid > .purple.row, +.ui.grid > .purple.column, +.ui.grid > .row > .purple.column { + background-color: #A333C8 !important; + color: #FFFFFF; +} + +/* Pink */ +.ui.grid > .pink.row, +.ui.grid > .pink.column, +.ui.grid > .row > .pink.column { + background-color: #E03997 !important; + color: #FFFFFF; +} + +/* Brown */ +.ui.grid > .brown.row, +.ui.grid > .brown.column, +.ui.grid > .row > .brown.column { + background-color: #A5673F !important; + color: #FFFFFF; +} + +/* Grey */ +.ui.grid > .grey.row, +.ui.grid > .grey.column, +.ui.grid > .row > .grey.column { + background-color: #767676 !important; + color: #FFFFFF; +} + +/* Black */ +.ui.grid > .black.row, +.ui.grid > .black.column, +.ui.grid > .row > .black.column { + background-color: #1B1C1D !important; + color: #FFFFFF; +} + +/*---------------------- + Equal Width +-----------------------*/ + +.ui[class*="equal width"].grid > .column:not(.row), +.ui[class*="equal width"].grid > .row > .column, +.ui.grid > [class*="equal width"].row > .column { + display: inline-block; + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; +} +.ui[class*="equal width"].grid > .wide.column, +.ui[class*="equal width"].grid > .row > .wide.column, +.ui.grid > [class*="equal width"].row > .wide.column { + -webkit-box-flex: 0; + -ms-flex-positive: 0; + flex-grow: 0; +} + +/*---------------------- + Reverse +-----------------------*/ + + +/* Mobile */ +@media only screen and (max-width: 767px) { + .ui[class*="mobile reversed"].grid, + .ui[class*="mobile reversed"].grid > .row, + .ui.grid > [class*="mobile reversed"].row { + -webkit-box-orient: horizontal; + -webkit-box-direction: reverse; + -ms-flex-direction: row-reverse; + flex-direction: row-reverse; + } + .ui[class*="mobile vertically reversed"].grid, + .ui.stackable[class*="mobile reversed"] { + -webkit-box-orient: vertical; + -webkit-box-direction: reverse; + -ms-flex-direction: column-reverse; + flex-direction: column-reverse; + } + +/* Divided Reversed */ + .ui[class*="mobile reversed"].divided.grid:not([class*="vertically divided"]) > .column:first-child, + .ui[class*="mobile reversed"].divided.grid:not([class*="vertically divided"]) > .row > .column:first-child { + -webkit-box-shadow: -1px 0px 0px 0px rgba(34, 36, 38, 0.15); + box-shadow: -1px 0px 0px 0px rgba(34, 36, 38, 0.15); + } + .ui[class*="mobile reversed"].divided.grid:not([class*="vertically divided"]) > .column:last-child, + .ui[class*="mobile reversed"].divided.grid:not([class*="vertically divided"]) > .row > .column:last-child { + -webkit-box-shadow: none; + box-shadow: none; + } + +/* Vertically Divided Reversed */ + .ui.grid[class*="vertically divided"][class*="mobile vertically reversed"] > .row:first-child:before { + -webkit-box-shadow: 0px -1px 0px 0px rgba(34, 36, 38, 0.15); + box-shadow: 0px -1px 0px 0px rgba(34, 36, 38, 0.15); + } + .ui.grid[class*="vertically divided"][class*="mobile vertically reversed"] > .row:last-child:before { + -webkit-box-shadow: none; + box-shadow: none; + } + +/* Celled Reversed */ + .ui[class*="mobile reversed"].celled.grid > .row > .column:first-child { + -webkit-box-shadow: -1px 0px 0px 0px #D4D4D5; + box-shadow: -1px 0px 0px 0px #D4D4D5; + } + .ui[class*="mobile reversed"].celled.grid > .row > .column:last-child { + -webkit-box-shadow: none; + box-shadow: none; + } +} + +/* Tablet */ +@media only screen and (min-width: 768px) and (max-width: 991px) { + .ui[class*="tablet reversed"].grid, + .ui[class*="tablet reversed"].grid > .row, + .ui.grid > [class*="tablet reversed"].row { + -webkit-box-orient: horizontal; + -webkit-box-direction: reverse; + -ms-flex-direction: row-reverse; + flex-direction: row-reverse; + } + .ui[class*="tablet vertically reversed"].grid { + -webkit-box-orient: vertical; + -webkit-box-direction: reverse; + -ms-flex-direction: column-reverse; + flex-direction: column-reverse; + } + +/* Divided Reversed */ + .ui[class*="tablet reversed"].divided.grid:not([class*="vertically divided"]) > .column:first-child, + .ui[class*="tablet reversed"].divided.grid:not([class*="vertically divided"]) > .row > .column:first-child { + -webkit-box-shadow: -1px 0px 0px 0px rgba(34, 36, 38, 0.15); + box-shadow: -1px 0px 0px 0px rgba(34, 36, 38, 0.15); + } + .ui[class*="tablet reversed"].divided.grid:not([class*="vertically divided"]) > .column:last-child, + .ui[class*="tablet reversed"].divided.grid:not([class*="vertically divided"]) > .row > .column:last-child { + -webkit-box-shadow: none; + box-shadow: none; + } + +/* Vertically Divided Reversed */ + .ui.grid[class*="vertically divided"][class*="tablet vertically reversed"] > .row:first-child:before { + -webkit-box-shadow: 0px -1px 0px 0px rgba(34, 36, 38, 0.15); + box-shadow: 0px -1px 0px 0px rgba(34, 36, 38, 0.15); + } + .ui.grid[class*="vertically divided"][class*="tablet vertically reversed"] > .row:last-child:before { + -webkit-box-shadow: none; + box-shadow: none; + } + +/* Celled Reversed */ + .ui[class*="tablet reversed"].celled.grid > .row > .column:first-child { + -webkit-box-shadow: -1px 0px 0px 0px #D4D4D5; + box-shadow: -1px 0px 0px 0px #D4D4D5; + } + .ui[class*="tablet reversed"].celled.grid > .row > .column:last-child { + -webkit-box-shadow: none; + box-shadow: none; + } +} + +/* Computer */ +@media only screen and (min-width: 992px) { + .ui[class*="computer reversed"].grid, + .ui[class*="computer reversed"].grid > .row, + .ui.grid > [class*="computer reversed"].row { + -webkit-box-orient: horizontal; + -webkit-box-direction: reverse; + -ms-flex-direction: row-reverse; + flex-direction: row-reverse; + } + .ui[class*="computer vertically reversed"].grid { + -webkit-box-orient: vertical; + -webkit-box-direction: reverse; + -ms-flex-direction: column-reverse; + flex-direction: column-reverse; + } + +/* Divided Reversed */ + .ui[class*="computer reversed"].divided.grid:not([class*="vertically divided"]) > .column:first-child, + .ui[class*="computer reversed"].divided.grid:not([class*="vertically divided"]) > .row > .column:first-child { + -webkit-box-shadow: -1px 0px 0px 0px rgba(34, 36, 38, 0.15); + box-shadow: -1px 0px 0px 0px rgba(34, 36, 38, 0.15); + } + .ui[class*="computer reversed"].divided.grid:not([class*="vertically divided"]) > .column:last-child, + .ui[class*="computer reversed"].divided.grid:not([class*="vertically divided"]) > .row > .column:last-child { + -webkit-box-shadow: none; + box-shadow: none; + } + +/* Vertically Divided Reversed */ + .ui.grid[class*="vertically divided"][class*="computer vertically reversed"] > .row:first-child:before { + -webkit-box-shadow: 0px -1px 0px 0px rgba(34, 36, 38, 0.15); + box-shadow: 0px -1px 0px 0px rgba(34, 36, 38, 0.15); + } + .ui.grid[class*="vertically divided"][class*="computer vertically reversed"] > .row:last-child:before { + -webkit-box-shadow: none; + box-shadow: none; + } + +/* Celled Reversed */ + .ui[class*="computer reversed"].celled.grid > .row > .column:first-child { + -webkit-box-shadow: -1px 0px 0px 0px #D4D4D5; + box-shadow: -1px 0px 0px 0px #D4D4D5; + } + .ui[class*="computer reversed"].celled.grid > .row > .column:last-child { + -webkit-box-shadow: none; + box-shadow: none; + } +} + +/*------------------- + Doubling +--------------------*/ + + +/* Tablet Only */ +@media only screen and (min-width: 768px) and (max-width: 991px) { + .ui.doubling.grid { + width: auto; + } + .ui.grid > .doubling.row, + .ui.doubling.grid > .row { + margin: 0em !important; + padding: 0em !important; + } + .ui.grid > .doubling.row > .column, + .ui.doubling.grid > .row > .column { + display: inline-block !important; + padding-top: 1rem !important; + padding-bottom: 1rem !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; + margin: 0em; + } + .ui[class*="two column"].doubling.grid > .row > .column, + .ui[class*="two column"].doubling.grid > .column:not(.row), + .ui.grid > [class*="two column"].doubling.row.row > .column { + width: 100% !important; + } + .ui[class*="three column"].doubling.grid > .row > .column, + .ui[class*="three column"].doubling.grid > .column:not(.row), + .ui.grid > [class*="three column"].doubling.row.row > .column { + width: 50% !important; + } + .ui[class*="four column"].doubling.grid > .row > .column, + .ui[class*="four column"].doubling.grid > .column:not(.row), + .ui.grid > [class*="four column"].doubling.row.row > .column { + width: 50% !important; + } + .ui[class*="five column"].doubling.grid > .row > .column, + .ui[class*="five column"].doubling.grid > .column:not(.row), + .ui.grid > [class*="five column"].doubling.row.row > .column { + width: 33.33333333% !important; + } + .ui[class*="six column"].doubling.grid > .row > .column, + .ui[class*="six column"].doubling.grid > .column:not(.row), + .ui.grid > [class*="six column"].doubling.row.row > .column { + width: 33.33333333% !important; + } + .ui[class*="seven column"].doubling.grid > .row > .column, + .ui[class*="seven column"].doubling.grid > .column:not(.row), + .ui.grid > [class*="seven column"].doubling.row.row > .column { + width: 33.33333333% !important; + } + .ui[class*="eight column"].doubling.grid > .row > .column, + .ui[class*="eight column"].doubling.grid > .column:not(.row), + .ui.grid > [class*="eight column"].doubling.row.row > .column { + width: 25% !important; + } + .ui[class*="nine column"].doubling.grid > .row > .column, + .ui[class*="nine column"].doubling.grid > .column:not(.row), + .ui.grid > [class*="nine column"].doubling.row.row > .column { + width: 25% !important; + } + .ui[class*="ten column"].doubling.grid > .row > .column, + .ui[class*="ten column"].doubling.grid > .column:not(.row), + .ui.grid > [class*="ten column"].doubling.row.row > .column { + width: 20% !important; + } + .ui[class*="eleven column"].doubling.grid > .row > .column, + .ui[class*="eleven column"].doubling.grid > .column:not(.row), + .ui.grid > [class*="eleven column"].doubling.row.row > .column { + width: 20% !important; + } + .ui[class*="twelve column"].doubling.grid > .row > .column, + .ui[class*="twelve column"].doubling.grid > .column:not(.row), + .ui.grid > [class*="twelve column"].doubling.row.row > .column { + width: 16.66666667% !important; + } + .ui[class*="thirteen column"].doubling.grid > .row > .column, + .ui[class*="thirteen column"].doubling.grid > .column:not(.row), + .ui.grid > [class*="thirteen column"].doubling.row.row > .column { + width: 16.66666667% !important; + } + .ui[class*="fourteen column"].doubling.grid > .row > .column, + .ui[class*="fourteen column"].doubling.grid > .column:not(.row), + .ui.grid > [class*="fourteen column"].doubling.row.row > .column { + width: 14.28571429% !important; + } + .ui[class*="fifteen column"].doubling.grid > .row > .column, + .ui[class*="fifteen column"].doubling.grid > .column:not(.row), + .ui.grid > [class*="fifteen column"].doubling.row.row > .column { + width: 14.28571429% !important; + } + .ui[class*="sixteen column"].doubling.grid > .row > .column, + .ui[class*="sixteen column"].doubling.grid > .column:not(.row), + .ui.grid > [class*="sixteen column"].doubling.row.row > .column { + width: 12.5% !important; + } +} + +/* Mobile Only */ +@media only screen and (max-width: 767px) { + .ui.grid > .doubling.row, + .ui.doubling.grid > .row { + margin: 0em !important; + padding: 0em !important; + } + .ui.grid > .doubling.row > .column, + .ui.doubling.grid > .row > .column { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + margin: 0em !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; + } + .ui[class*="two column"].doubling:not(.stackable).grid > .row > .column, + .ui[class*="two column"].doubling:not(.stackable).grid > .column:not(.row), + .ui.grid > [class*="two column"].doubling:not(.stackable).row.row > .column { + width: 100% !important; + } + .ui[class*="three column"].doubling:not(.stackable).grid > .row > .column, + .ui[class*="three column"].doubling:not(.stackable).grid > .column:not(.row), + .ui.grid > [class*="three column"].doubling:not(.stackable).row.row > .column { + width: 50% !important; + } + .ui[class*="four column"].doubling:not(.stackable).grid > .row > .column, + .ui[class*="four column"].doubling:not(.stackable).grid > .column:not(.row), + .ui.grid > [class*="four column"].doubling:not(.stackable).row.row > .column { + width: 50% !important; + } + .ui[class*="five column"].doubling:not(.stackable).grid > .row > .column, + .ui[class*="five column"].doubling:not(.stackable).grid > .column:not(.row), + .ui.grid > [class*="five column"].doubling:not(.stackable).row.row > .column { + width: 50% !important; + } + .ui[class*="six column"].doubling:not(.stackable).grid > .row > .column, + .ui[class*="six column"].doubling:not(.stackable).grid > .column:not(.row), + .ui.grid > [class*="six column"].doubling:not(.stackable).row.row > .column { + width: 50% !important; + } + .ui[class*="seven column"].doubling:not(.stackable).grid > .row > .column, + .ui[class*="seven column"].doubling:not(.stackable).grid > .column:not(.row), + .ui.grid > [class*="seven column"].doubling:not(.stackable).row.row > .column { + width: 50% !important; + } + .ui[class*="eight column"].doubling:not(.stackable).grid > .row > .column, + .ui[class*="eight column"].doubling:not(.stackable).grid > .column:not(.row), + .ui.grid > [class*="eight column"].doubling:not(.stackable).row.row > .column { + width: 50% !important; + } + .ui[class*="nine column"].doubling:not(.stackable).grid > .row > .column, + .ui[class*="nine column"].doubling:not(.stackable).grid > .column:not(.row), + .ui.grid > [class*="nine column"].doubling:not(.stackable).row.row > .column { + width: 33.33333333% !important; + } + .ui[class*="ten column"].doubling:not(.stackable).grid > .row > .column, + .ui[class*="ten column"].doubling:not(.stackable).grid > .column:not(.row), + .ui.grid > [class*="ten column"].doubling:not(.stackable).row.row > .column { + width: 33.33333333% !important; + } + .ui[class*="eleven column"].doubling:not(.stackable).grid > .row > .column, + .ui[class*="eleven column"].doubling:not(.stackable).grid > .column:not(.row), + .ui.grid > [class*="eleven column"].doubling:not(.stackable).row.row > .column { + width: 33.33333333% !important; + } + .ui[class*="twelve column"].doubling:not(.stackable).grid > .row > .column, + .ui[class*="twelve column"].doubling:not(.stackable).grid > .column:not(.row), + .ui.grid > [class*="twelve column"].doubling:not(.stackable).row.row > .column { + width: 33.33333333% !important; + } + .ui[class*="thirteen column"].doubling:not(.stackable).grid > .row > .column, + .ui[class*="thirteen column"].doubling:not(.stackable).grid > .column:not(.row), + .ui.grid > [class*="thirteen column"].doubling:not(.stackable).row.row > .column { + width: 33.33333333% !important; + } + .ui[class*="fourteen column"].doubling:not(.stackable).grid > .row > .column, + .ui[class*="fourteen column"].doubling:not(.stackable).grid > .column:not(.row), + .ui.grid > [class*="fourteen column"].doubling:not(.stackable).row.row > .column { + width: 25% !important; + } + .ui[class*="fifteen column"].doubling:not(.stackable).grid > .row > .column, + .ui[class*="fifteen column"].doubling:not(.stackable).grid > .column:not(.row), + .ui.grid > [class*="fifteen column"].doubling:not(.stackable).row.row > .column { + width: 25% !important; + } + .ui[class*="sixteen column"].doubling:not(.stackable).grid > .row > .column, + .ui[class*="sixteen column"].doubling:not(.stackable).grid > .column:not(.row), + .ui.grid > [class*="sixteen column"].doubling:not(.stackable).row.row > .column { + width: 25% !important; + } +} + +/*------------------- + Stackable +--------------------*/ + +@media only screen and (max-width: 767px) { + .ui.stackable.grid { + width: auto; + margin-left: 0em !important; + margin-right: 0em !important; + } + .ui.stackable.grid > .row > .wide.column, + .ui.stackable.grid > .wide.column, + .ui.stackable.grid > .column.grid > .column, + .ui.stackable.grid > .column.row > .column, + .ui.stackable.grid > .row > .column, + .ui.stackable.grid > .column:not(.row), + .ui.grid > .stackable.stackable.row > .column { + width: 100% !important; + margin: 0em 0em !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; + padding: 1rem 1rem !important; + } + .ui.stackable.grid:not(.vertically) > .row { + margin: 0em; + padding: 0em; + } + +/* Coupling */ + .ui.container > .ui.stackable.grid > .column, + .ui.container > .ui.stackable.grid > .row > .column { + padding-left: 0em !important; + padding-right: 0em !important; + } + +/* Don't pad inside segment or nested grid */ + .ui.grid .ui.stackable.grid, + .ui.segment:not(.vertical) .ui.stackable.page.grid { + margin-left: -1rem !important; + margin-right: -1rem !important; + } + +/* Divided Stackable */ + .ui.stackable.divided.grid > .row:first-child > .column:first-child, + .ui.stackable.celled.grid > .row:first-child > .column:first-child, + .ui.stackable.divided.grid > .column:not(.row):first-child, + .ui.stackable.celled.grid > .column:not(.row):first-child { + border-top: none !important; + } + .ui.inverted.stackable.celled.grid > .column:not(.row), + .ui.inverted.stackable.divided.grid > .column:not(.row), + .ui.inverted.stackable.celled.grid > .row > .column, + .ui.inverted.stackable.divided.grid > .row > .column { + border-top: 1px solid rgba(255, 255, 255, 0.1); + } + .ui.stackable.celled.grid > .column:not(.row), + .ui.stackable.divided:not(.vertically).grid > .column:not(.row), + .ui.stackable.celled.grid > .row > .column, + .ui.stackable.divided:not(.vertically).grid > .row > .column { + border-top: 1px solid rgba(34, 36, 38, 0.15); + -webkit-box-shadow: none !important; + box-shadow: none !important; + padding-top: 2rem !important; + padding-bottom: 2rem !important; + } + .ui.stackable.celled.grid > .row { + -webkit-box-shadow: none !important; + box-shadow: none !important; + } + .ui.stackable.divided:not(.vertically).grid > .column:not(.row), + .ui.stackable.divided:not(.vertically).grid > .row > .column { + padding-left: 0em !important; + padding-right: 0em !important; + } +} + +/*---------------------- + Only (Device) +-----------------------*/ + + +/* These include arbitrary class repetitions for forced specificity */ + +/* Mobile Only Hide */ +@media only screen and (max-width: 767px) { + .ui[class*="tablet only"].grid.grid.grid:not(.mobile), + .ui.grid.grid.grid > [class*="tablet only"].row:not(.mobile), + .ui.grid.grid.grid > [class*="tablet only"].column:not(.mobile), + .ui.grid.grid.grid > .row > [class*="tablet only"].column:not(.mobile) { + display: none !important; + } + .ui[class*="computer only"].grid.grid.grid:not(.mobile), + .ui.grid.grid.grid > [class*="computer only"].row:not(.mobile), + .ui.grid.grid.grid > [class*="computer only"].column:not(.mobile), + .ui.grid.grid.grid > .row > [class*="computer only"].column:not(.mobile) { + display: none !important; + } + .ui[class*="large screen only"].grid.grid.grid:not(.mobile), + .ui.grid.grid.grid > [class*="large screen only"].row:not(.mobile), + .ui.grid.grid.grid > [class*="large screen only"].column:not(.mobile), + .ui.grid.grid.grid > .row > [class*="large screen only"].column:not(.mobile) { + display: none !important; + } + .ui[class*="widescreen only"].grid.grid.grid:not(.mobile), + .ui.grid.grid.grid > [class*="widescreen only"].row:not(.mobile), + .ui.grid.grid.grid > [class*="widescreen only"].column:not(.mobile), + .ui.grid.grid.grid > .row > [class*="widescreen only"].column:not(.mobile) { + display: none !important; + } +} + +/* Tablet Only Hide */ +@media only screen and (min-width: 768px) and (max-width: 991px) { + .ui[class*="mobile only"].grid.grid.grid:not(.tablet), + .ui.grid.grid.grid > [class*="mobile only"].row:not(.tablet), + .ui.grid.grid.grid > [class*="mobile only"].column:not(.tablet), + .ui.grid.grid.grid > .row > [class*="mobile only"].column:not(.tablet) { + display: none !important; + } + .ui[class*="computer only"].grid.grid.grid:not(.tablet), + .ui.grid.grid.grid > [class*="computer only"].row:not(.tablet), + .ui.grid.grid.grid > [class*="computer only"].column:not(.tablet), + .ui.grid.grid.grid > .row > [class*="computer only"].column:not(.tablet) { + display: none !important; + } + .ui[class*="large screen only"].grid.grid.grid:not(.mobile), + .ui.grid.grid.grid > [class*="large screen only"].row:not(.mobile), + .ui.grid.grid.grid > [class*="large screen only"].column:not(.mobile), + .ui.grid.grid.grid > .row > [class*="large screen only"].column:not(.mobile) { + display: none !important; + } + .ui[class*="widescreen only"].grid.grid.grid:not(.mobile), + .ui.grid.grid.grid > [class*="widescreen only"].row:not(.mobile), + .ui.grid.grid.grid > [class*="widescreen only"].column:not(.mobile), + .ui.grid.grid.grid > .row > [class*="widescreen only"].column:not(.mobile) { + display: none !important; + } +} + +/* Computer Only Hide */ +@media only screen and (min-width: 992px) and (max-width: 1199px) { + .ui[class*="mobile only"].grid.grid.grid:not(.computer), + .ui.grid.grid.grid > [class*="mobile only"].row:not(.computer), + .ui.grid.grid.grid > [class*="mobile only"].column:not(.computer), + .ui.grid.grid.grid > .row > [class*="mobile only"].column:not(.computer) { + display: none !important; + } + .ui[class*="tablet only"].grid.grid.grid:not(.computer), + .ui.grid.grid.grid > [class*="tablet only"].row:not(.computer), + .ui.grid.grid.grid > [class*="tablet only"].column:not(.computer), + .ui.grid.grid.grid > .row > [class*="tablet only"].column:not(.computer) { + display: none !important; + } + .ui[class*="large screen only"].grid.grid.grid:not(.mobile), + .ui.grid.grid.grid > [class*="large screen only"].row:not(.mobile), + .ui.grid.grid.grid > [class*="large screen only"].column:not(.mobile), + .ui.grid.grid.grid > .row > [class*="large screen only"].column:not(.mobile) { + display: none !important; + } + .ui[class*="widescreen only"].grid.grid.grid:not(.mobile), + .ui.grid.grid.grid > [class*="widescreen only"].row:not(.mobile), + .ui.grid.grid.grid > [class*="widescreen only"].column:not(.mobile), + .ui.grid.grid.grid > .row > [class*="widescreen only"].column:not(.mobile) { + display: none !important; + } +} + +/* Large Screen Only Hide */ +@media only screen and (min-width: 1200px) and (max-width: 1919px) { + .ui[class*="mobile only"].grid.grid.grid:not(.computer), + .ui.grid.grid.grid > [class*="mobile only"].row:not(.computer), + .ui.grid.grid.grid > [class*="mobile only"].column:not(.computer), + .ui.grid.grid.grid > .row > [class*="mobile only"].column:not(.computer) { + display: none !important; + } + .ui[class*="tablet only"].grid.grid.grid:not(.computer), + .ui.grid.grid.grid > [class*="tablet only"].row:not(.computer), + .ui.grid.grid.grid > [class*="tablet only"].column:not(.computer), + .ui.grid.grid.grid > .row > [class*="tablet only"].column:not(.computer) { + display: none !important; + } + .ui[class*="widescreen only"].grid.grid.grid:not(.mobile), + .ui.grid.grid.grid > [class*="widescreen only"].row:not(.mobile), + .ui.grid.grid.grid > [class*="widescreen only"].column:not(.mobile), + .ui.grid.grid.grid > .row > [class*="widescreen only"].column:not(.mobile) { + display: none !important; + } +} + +/* Widescreen Only Hide */ +@media only screen and (min-width: 1920px) { + .ui[class*="mobile only"].grid.grid.grid:not(.computer), + .ui.grid.grid.grid > [class*="mobile only"].row:not(.computer), + .ui.grid.grid.grid > [class*="mobile only"].column:not(.computer), + .ui.grid.grid.grid > .row > [class*="mobile only"].column:not(.computer) { + display: none !important; + } + .ui[class*="tablet only"].grid.grid.grid:not(.computer), + .ui.grid.grid.grid > [class*="tablet only"].row:not(.computer), + .ui.grid.grid.grid > [class*="tablet only"].column:not(.computer), + .ui.grid.grid.grid > .row > [class*="tablet only"].column:not(.computer) { + display: none !important; + } +} + + +/******************************* + Theme Overrides +*******************************/ + + + +/******************************* + Site Overrides +*******************************/ + diff --git a/app/static/semantic/components/grid.min.css b/app/static/semantic/components/grid.min.css new file mode 100755 index 0000000..7afcc80 --- /dev/null +++ b/app/static/semantic/components/grid.min.css @@ -0,0 +1,9 @@ +/*! + * # Semantic UI 2.4.1 - Grid + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */.ui.grid{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;padding:0}.ui.grid{margin-top:-1rem;margin-bottom:-1rem;margin-left:-1rem;margin-right:-1rem}.ui.relaxed.grid{margin-left:-1.5rem;margin-right:-1.5rem}.ui[class*="very relaxed"].grid{margin-left:-2.5rem;margin-right:-2.5rem}.ui.grid+.grid{margin-top:1rem}.ui.grid>.column:not(.row),.ui.grid>.row>.column{position:relative;display:inline-block;width:6.25%;padding-left:1rem;padding-right:1rem;vertical-align:top}.ui.grid>*{padding-left:1rem;padding-right:1rem}.ui.grid>.row{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:inherit;-ms-flex-pack:inherit;justify-content:inherit;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;width:100%!important;padding:0;padding-top:1rem;padding-bottom:1rem}.ui.grid>.column:not(.row){padding-top:1rem;padding-bottom:1rem}.ui.grid>.row>.column{margin-top:0;margin-bottom:0}.ui.grid>.row>.column>img,.ui.grid>.row>img{max-width:100%}.ui.grid>.ui.grid:first-child{margin-top:0}.ui.grid>.ui.grid:last-child{margin-bottom:0}.ui.aligned.grid .column>.segment:not(.compact):not(.attached),.ui.grid .aligned.row>.column>.segment:not(.compact):not(.attached){width:100%}.ui.grid .row+.ui.divider{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;margin:1rem 1rem}.ui.grid .column+.ui.vertical.divider{height:calc(50% - (2rem / 2))}.ui.grid>.column:last-child>.horizontal.segment,.ui.grid>.row>.column:last-child>.horizontal.segment{-webkit-box-shadow:none;box-shadow:none}@media only screen and (max-width:767px){.ui.page.grid{width:auto;padding-left:0;padding-right:0;margin-left:0;margin-right:0}}@media only screen and (min-width:768px) and (max-width:991px){.ui.page.grid{width:auto;margin-left:0;margin-right:0;padding-left:2em;padding-right:2em}}@media only screen and (min-width:992px) and (max-width:1199px){.ui.page.grid{width:auto;margin-left:0;margin-right:0;padding-left:3%;padding-right:3%}}@media only screen and (min-width:1200px) and (max-width:1919px){.ui.page.grid{width:auto;margin-left:0;margin-right:0;padding-left:15%;padding-right:15%}}@media only screen and (min-width:1920px){.ui.page.grid{width:auto;margin-left:0;margin-right:0;padding-left:23%;padding-right:23%}}.ui.grid>.column:only-child,.ui.grid>.row>.column:only-child{width:100%}.ui[class*="one column"].grid>.column:not(.row),.ui[class*="one column"].grid>.row>.column{width:100%}.ui[class*="two column"].grid>.column:not(.row),.ui[class*="two column"].grid>.row>.column{width:50%}.ui[class*="three column"].grid>.column:not(.row),.ui[class*="three column"].grid>.row>.column{width:33.33333333%}.ui[class*="four column"].grid>.column:not(.row),.ui[class*="four column"].grid>.row>.column{width:25%}.ui[class*="five column"].grid>.column:not(.row),.ui[class*="five column"].grid>.row>.column{width:20%}.ui[class*="six column"].grid>.column:not(.row),.ui[class*="six column"].grid>.row>.column{width:16.66666667%}.ui[class*="seven column"].grid>.column:not(.row),.ui[class*="seven column"].grid>.row>.column{width:14.28571429%}.ui[class*="eight column"].grid>.column:not(.row),.ui[class*="eight column"].grid>.row>.column{width:12.5%}.ui[class*="nine column"].grid>.column:not(.row),.ui[class*="nine column"].grid>.row>.column{width:11.11111111%}.ui[class*="ten column"].grid>.column:not(.row),.ui[class*="ten column"].grid>.row>.column{width:10%}.ui[class*="eleven column"].grid>.column:not(.row),.ui[class*="eleven column"].grid>.row>.column{width:9.09090909%}.ui[class*="twelve column"].grid>.column:not(.row),.ui[class*="twelve column"].grid>.row>.column{width:8.33333333%}.ui[class*="thirteen column"].grid>.column:not(.row),.ui[class*="thirteen column"].grid>.row>.column{width:7.69230769%}.ui[class*="fourteen column"].grid>.column:not(.row),.ui[class*="fourteen column"].grid>.row>.column{width:7.14285714%}.ui[class*="fifteen column"].grid>.column:not(.row),.ui[class*="fifteen column"].grid>.row>.column{width:6.66666667%}.ui[class*="sixteen column"].grid>.column:not(.row),.ui[class*="sixteen column"].grid>.row>.column{width:6.25%}.ui.grid>[class*="one column"].row>.column{width:100%!important}.ui.grid>[class*="two column"].row>.column{width:50%!important}.ui.grid>[class*="three column"].row>.column{width:33.33333333%!important}.ui.grid>[class*="four column"].row>.column{width:25%!important}.ui.grid>[class*="five column"].row>.column{width:20%!important}.ui.grid>[class*="six column"].row>.column{width:16.66666667%!important}.ui.grid>[class*="seven column"].row>.column{width:14.28571429%!important}.ui.grid>[class*="eight column"].row>.column{width:12.5%!important}.ui.grid>[class*="nine column"].row>.column{width:11.11111111%!important}.ui.grid>[class*="ten column"].row>.column{width:10%!important}.ui.grid>[class*="eleven column"].row>.column{width:9.09090909%!important}.ui.grid>[class*="twelve column"].row>.column{width:8.33333333%!important}.ui.grid>[class*="thirteen column"].row>.column{width:7.69230769%!important}.ui.grid>[class*="fourteen column"].row>.column{width:7.14285714%!important}.ui.grid>[class*="fifteen column"].row>.column{width:6.66666667%!important}.ui.grid>[class*="sixteen column"].row>.column{width:6.25%!important}.ui.celled.page.grid{-webkit-box-shadow:none;box-shadow:none}.ui.column.grid>[class*="one wide"].column,.ui.grid>.column.row>[class*="one wide"].column,.ui.grid>.row>[class*="one wide"].column,.ui.grid>[class*="one wide"].column{width:6.25%!important}.ui.column.grid>[class*="two wide"].column,.ui.grid>.column.row>[class*="two wide"].column,.ui.grid>.row>[class*="two wide"].column,.ui.grid>[class*="two wide"].column{width:12.5%!important}.ui.column.grid>[class*="three wide"].column,.ui.grid>.column.row>[class*="three wide"].column,.ui.grid>.row>[class*="three wide"].column,.ui.grid>[class*="three wide"].column{width:18.75%!important}.ui.column.grid>[class*="four wide"].column,.ui.grid>.column.row>[class*="four wide"].column,.ui.grid>.row>[class*="four wide"].column,.ui.grid>[class*="four wide"].column{width:25%!important}.ui.column.grid>[class*="five wide"].column,.ui.grid>.column.row>[class*="five wide"].column,.ui.grid>.row>[class*="five wide"].column,.ui.grid>[class*="five wide"].column{width:31.25%!important}.ui.column.grid>[class*="six wide"].column,.ui.grid>.column.row>[class*="six wide"].column,.ui.grid>.row>[class*="six wide"].column,.ui.grid>[class*="six wide"].column{width:37.5%!important}.ui.column.grid>[class*="seven wide"].column,.ui.grid>.column.row>[class*="seven wide"].column,.ui.grid>.row>[class*="seven wide"].column,.ui.grid>[class*="seven wide"].column{width:43.75%!important}.ui.column.grid>[class*="eight wide"].column,.ui.grid>.column.row>[class*="eight wide"].column,.ui.grid>.row>[class*="eight wide"].column,.ui.grid>[class*="eight wide"].column{width:50%!important}.ui.column.grid>[class*="nine wide"].column,.ui.grid>.column.row>[class*="nine wide"].column,.ui.grid>.row>[class*="nine wide"].column,.ui.grid>[class*="nine wide"].column{width:56.25%!important}.ui.column.grid>[class*="ten wide"].column,.ui.grid>.column.row>[class*="ten wide"].column,.ui.grid>.row>[class*="ten wide"].column,.ui.grid>[class*="ten wide"].column{width:62.5%!important}.ui.column.grid>[class*="eleven wide"].column,.ui.grid>.column.row>[class*="eleven wide"].column,.ui.grid>.row>[class*="eleven wide"].column,.ui.grid>[class*="eleven wide"].column{width:68.75%!important}.ui.column.grid>[class*="twelve wide"].column,.ui.grid>.column.row>[class*="twelve wide"].column,.ui.grid>.row>[class*="twelve wide"].column,.ui.grid>[class*="twelve wide"].column{width:75%!important}.ui.column.grid>[class*="thirteen wide"].column,.ui.grid>.column.row>[class*="thirteen wide"].column,.ui.grid>.row>[class*="thirteen wide"].column,.ui.grid>[class*="thirteen wide"].column{width:81.25%!important}.ui.column.grid>[class*="fourteen wide"].column,.ui.grid>.column.row>[class*="fourteen wide"].column,.ui.grid>.row>[class*="fourteen wide"].column,.ui.grid>[class*="fourteen wide"].column{width:87.5%!important}.ui.column.grid>[class*="fifteen wide"].column,.ui.grid>.column.row>[class*="fifteen wide"].column,.ui.grid>.row>[class*="fifteen wide"].column,.ui.grid>[class*="fifteen wide"].column{width:93.75%!important}.ui.column.grid>[class*="sixteen wide"].column,.ui.grid>.column.row>[class*="sixteen wide"].column,.ui.grid>.row>[class*="sixteen wide"].column,.ui.grid>[class*="sixteen wide"].column{width:100%!important}@media only screen and (min-width:320px) and (max-width:767px){.ui.column.grid>[class*="one wide mobile"].column,.ui.grid>.column.row>[class*="one wide mobile"].column,.ui.grid>.row>[class*="one wide mobile"].column,.ui.grid>[class*="one wide mobile"].column{width:6.25%!important}.ui.column.grid>[class*="two wide mobile"].column,.ui.grid>.column.row>[class*="two wide mobile"].column,.ui.grid>.row>[class*="two wide mobile"].column,.ui.grid>[class*="two wide mobile"].column{width:12.5%!important}.ui.column.grid>[class*="three wide mobile"].column,.ui.grid>.column.row>[class*="three wide mobile"].column,.ui.grid>.row>[class*="three wide mobile"].column,.ui.grid>[class*="three wide mobile"].column{width:18.75%!important}.ui.column.grid>[class*="four wide mobile"].column,.ui.grid>.column.row>[class*="four wide mobile"].column,.ui.grid>.row>[class*="four wide mobile"].column,.ui.grid>[class*="four wide mobile"].column{width:25%!important}.ui.column.grid>[class*="five wide mobile"].column,.ui.grid>.column.row>[class*="five wide mobile"].column,.ui.grid>.row>[class*="five wide mobile"].column,.ui.grid>[class*="five wide mobile"].column{width:31.25%!important}.ui.column.grid>[class*="six wide mobile"].column,.ui.grid>.column.row>[class*="six wide mobile"].column,.ui.grid>.row>[class*="six wide mobile"].column,.ui.grid>[class*="six wide mobile"].column{width:37.5%!important}.ui.column.grid>[class*="seven wide mobile"].column,.ui.grid>.column.row>[class*="seven wide mobile"].column,.ui.grid>.row>[class*="seven wide mobile"].column,.ui.grid>[class*="seven wide mobile"].column{width:43.75%!important}.ui.column.grid>[class*="eight wide mobile"].column,.ui.grid>.column.row>[class*="eight wide mobile"].column,.ui.grid>.row>[class*="eight wide mobile"].column,.ui.grid>[class*="eight wide mobile"].column{width:50%!important}.ui.column.grid>[class*="nine wide mobile"].column,.ui.grid>.column.row>[class*="nine wide mobile"].column,.ui.grid>.row>[class*="nine wide mobile"].column,.ui.grid>[class*="nine wide mobile"].column{width:56.25%!important}.ui.column.grid>[class*="ten wide mobile"].column,.ui.grid>.column.row>[class*="ten wide mobile"].column,.ui.grid>.row>[class*="ten wide mobile"].column,.ui.grid>[class*="ten wide mobile"].column{width:62.5%!important}.ui.column.grid>[class*="eleven wide mobile"].column,.ui.grid>.column.row>[class*="eleven wide mobile"].column,.ui.grid>.row>[class*="eleven wide mobile"].column,.ui.grid>[class*="eleven wide mobile"].column{width:68.75%!important}.ui.column.grid>[class*="twelve wide mobile"].column,.ui.grid>.column.row>[class*="twelve wide mobile"].column,.ui.grid>.row>[class*="twelve wide mobile"].column,.ui.grid>[class*="twelve wide mobile"].column{width:75%!important}.ui.column.grid>[class*="thirteen wide mobile"].column,.ui.grid>.column.row>[class*="thirteen wide mobile"].column,.ui.grid>.row>[class*="thirteen wide mobile"].column,.ui.grid>[class*="thirteen wide mobile"].column{width:81.25%!important}.ui.column.grid>[class*="fourteen wide mobile"].column,.ui.grid>.column.row>[class*="fourteen wide mobile"].column,.ui.grid>.row>[class*="fourteen wide mobile"].column,.ui.grid>[class*="fourteen wide mobile"].column{width:87.5%!important}.ui.column.grid>[class*="fifteen wide mobile"].column,.ui.grid>.column.row>[class*="fifteen wide mobile"].column,.ui.grid>.row>[class*="fifteen wide mobile"].column,.ui.grid>[class*="fifteen wide mobile"].column{width:93.75%!important}.ui.column.grid>[class*="sixteen wide mobile"].column,.ui.grid>.column.row>[class*="sixteen wide mobile"].column,.ui.grid>.row>[class*="sixteen wide mobile"].column,.ui.grid>[class*="sixteen wide mobile"].column{width:100%!important}}@media only screen and (min-width:768px) and (max-width:991px){.ui.column.grid>[class*="one wide tablet"].column,.ui.grid>.column.row>[class*="one wide tablet"].column,.ui.grid>.row>[class*="one wide tablet"].column,.ui.grid>[class*="one wide tablet"].column{width:6.25%!important}.ui.column.grid>[class*="two wide tablet"].column,.ui.grid>.column.row>[class*="two wide tablet"].column,.ui.grid>.row>[class*="two wide tablet"].column,.ui.grid>[class*="two wide tablet"].column{width:12.5%!important}.ui.column.grid>[class*="three wide tablet"].column,.ui.grid>.column.row>[class*="three wide tablet"].column,.ui.grid>.row>[class*="three wide tablet"].column,.ui.grid>[class*="three wide tablet"].column{width:18.75%!important}.ui.column.grid>[class*="four wide tablet"].column,.ui.grid>.column.row>[class*="four wide tablet"].column,.ui.grid>.row>[class*="four wide tablet"].column,.ui.grid>[class*="four wide tablet"].column{width:25%!important}.ui.column.grid>[class*="five wide tablet"].column,.ui.grid>.column.row>[class*="five wide tablet"].column,.ui.grid>.row>[class*="five wide tablet"].column,.ui.grid>[class*="five wide tablet"].column{width:31.25%!important}.ui.column.grid>[class*="six wide tablet"].column,.ui.grid>.column.row>[class*="six wide tablet"].column,.ui.grid>.row>[class*="six wide tablet"].column,.ui.grid>[class*="six wide tablet"].column{width:37.5%!important}.ui.column.grid>[class*="seven wide tablet"].column,.ui.grid>.column.row>[class*="seven wide tablet"].column,.ui.grid>.row>[class*="seven wide tablet"].column,.ui.grid>[class*="seven wide tablet"].column{width:43.75%!important}.ui.column.grid>[class*="eight wide tablet"].column,.ui.grid>.column.row>[class*="eight wide tablet"].column,.ui.grid>.row>[class*="eight wide tablet"].column,.ui.grid>[class*="eight wide tablet"].column{width:50%!important}.ui.column.grid>[class*="nine wide tablet"].column,.ui.grid>.column.row>[class*="nine wide tablet"].column,.ui.grid>.row>[class*="nine wide tablet"].column,.ui.grid>[class*="nine wide tablet"].column{width:56.25%!important}.ui.column.grid>[class*="ten wide tablet"].column,.ui.grid>.column.row>[class*="ten wide tablet"].column,.ui.grid>.row>[class*="ten wide tablet"].column,.ui.grid>[class*="ten wide tablet"].column{width:62.5%!important}.ui.column.grid>[class*="eleven wide tablet"].column,.ui.grid>.column.row>[class*="eleven wide tablet"].column,.ui.grid>.row>[class*="eleven wide tablet"].column,.ui.grid>[class*="eleven wide tablet"].column{width:68.75%!important}.ui.column.grid>[class*="twelve wide tablet"].column,.ui.grid>.column.row>[class*="twelve wide tablet"].column,.ui.grid>.row>[class*="twelve wide tablet"].column,.ui.grid>[class*="twelve wide tablet"].column{width:75%!important}.ui.column.grid>[class*="thirteen wide tablet"].column,.ui.grid>.column.row>[class*="thirteen wide tablet"].column,.ui.grid>.row>[class*="thirteen wide tablet"].column,.ui.grid>[class*="thirteen wide tablet"].column{width:81.25%!important}.ui.column.grid>[class*="fourteen wide tablet"].column,.ui.grid>.column.row>[class*="fourteen wide tablet"].column,.ui.grid>.row>[class*="fourteen wide tablet"].column,.ui.grid>[class*="fourteen wide tablet"].column{width:87.5%!important}.ui.column.grid>[class*="fifteen wide tablet"].column,.ui.grid>.column.row>[class*="fifteen wide tablet"].column,.ui.grid>.row>[class*="fifteen wide tablet"].column,.ui.grid>[class*="fifteen wide tablet"].column{width:93.75%!important}.ui.column.grid>[class*="sixteen wide tablet"].column,.ui.grid>.column.row>[class*="sixteen wide tablet"].column,.ui.grid>.row>[class*="sixteen wide tablet"].column,.ui.grid>[class*="sixteen wide tablet"].column{width:100%!important}}@media only screen and (min-width:992px){.ui.column.grid>[class*="one wide computer"].column,.ui.grid>.column.row>[class*="one wide computer"].column,.ui.grid>.row>[class*="one wide computer"].column,.ui.grid>[class*="one wide computer"].column{width:6.25%!important}.ui.column.grid>[class*="two wide computer"].column,.ui.grid>.column.row>[class*="two wide computer"].column,.ui.grid>.row>[class*="two wide computer"].column,.ui.grid>[class*="two wide computer"].column{width:12.5%!important}.ui.column.grid>[class*="three wide computer"].column,.ui.grid>.column.row>[class*="three wide computer"].column,.ui.grid>.row>[class*="three wide computer"].column,.ui.grid>[class*="three wide computer"].column{width:18.75%!important}.ui.column.grid>[class*="four wide computer"].column,.ui.grid>.column.row>[class*="four wide computer"].column,.ui.grid>.row>[class*="four wide computer"].column,.ui.grid>[class*="four wide computer"].column{width:25%!important}.ui.column.grid>[class*="five wide computer"].column,.ui.grid>.column.row>[class*="five wide computer"].column,.ui.grid>.row>[class*="five wide computer"].column,.ui.grid>[class*="five wide computer"].column{width:31.25%!important}.ui.column.grid>[class*="six wide computer"].column,.ui.grid>.column.row>[class*="six wide computer"].column,.ui.grid>.row>[class*="six wide computer"].column,.ui.grid>[class*="six wide computer"].column{width:37.5%!important}.ui.column.grid>[class*="seven wide computer"].column,.ui.grid>.column.row>[class*="seven wide computer"].column,.ui.grid>.row>[class*="seven wide computer"].column,.ui.grid>[class*="seven wide computer"].column{width:43.75%!important}.ui.column.grid>[class*="eight wide computer"].column,.ui.grid>.column.row>[class*="eight wide computer"].column,.ui.grid>.row>[class*="eight wide computer"].column,.ui.grid>[class*="eight wide computer"].column{width:50%!important}.ui.column.grid>[class*="nine wide computer"].column,.ui.grid>.column.row>[class*="nine wide computer"].column,.ui.grid>.row>[class*="nine wide computer"].column,.ui.grid>[class*="nine wide computer"].column{width:56.25%!important}.ui.column.grid>[class*="ten wide computer"].column,.ui.grid>.column.row>[class*="ten wide computer"].column,.ui.grid>.row>[class*="ten wide computer"].column,.ui.grid>[class*="ten wide computer"].column{width:62.5%!important}.ui.column.grid>[class*="eleven wide computer"].column,.ui.grid>.column.row>[class*="eleven wide computer"].column,.ui.grid>.row>[class*="eleven wide computer"].column,.ui.grid>[class*="eleven wide computer"].column{width:68.75%!important}.ui.column.grid>[class*="twelve wide computer"].column,.ui.grid>.column.row>[class*="twelve wide computer"].column,.ui.grid>.row>[class*="twelve wide computer"].column,.ui.grid>[class*="twelve wide computer"].column{width:75%!important}.ui.column.grid>[class*="thirteen wide computer"].column,.ui.grid>.column.row>[class*="thirteen wide computer"].column,.ui.grid>.row>[class*="thirteen wide computer"].column,.ui.grid>[class*="thirteen wide computer"].column{width:81.25%!important}.ui.column.grid>[class*="fourteen wide computer"].column,.ui.grid>.column.row>[class*="fourteen wide computer"].column,.ui.grid>.row>[class*="fourteen wide computer"].column,.ui.grid>[class*="fourteen wide computer"].column{width:87.5%!important}.ui.column.grid>[class*="fifteen wide computer"].column,.ui.grid>.column.row>[class*="fifteen wide computer"].column,.ui.grid>.row>[class*="fifteen wide computer"].column,.ui.grid>[class*="fifteen wide computer"].column{width:93.75%!important}.ui.column.grid>[class*="sixteen wide computer"].column,.ui.grid>.column.row>[class*="sixteen wide computer"].column,.ui.grid>.row>[class*="sixteen wide computer"].column,.ui.grid>[class*="sixteen wide computer"].column{width:100%!important}}@media only screen and (min-width:1200px) and (max-width:1919px){.ui.column.grid>[class*="one wide large screen"].column,.ui.grid>.column.row>[class*="one wide large screen"].column,.ui.grid>.row>[class*="one wide large screen"].column,.ui.grid>[class*="one wide large screen"].column{width:6.25%!important}.ui.column.grid>[class*="two wide large screen"].column,.ui.grid>.column.row>[class*="two wide large screen"].column,.ui.grid>.row>[class*="two wide large screen"].column,.ui.grid>[class*="two wide large screen"].column{width:12.5%!important}.ui.column.grid>[class*="three wide large screen"].column,.ui.grid>.column.row>[class*="three wide large screen"].column,.ui.grid>.row>[class*="three wide large screen"].column,.ui.grid>[class*="three wide large screen"].column{width:18.75%!important}.ui.column.grid>[class*="four wide large screen"].column,.ui.grid>.column.row>[class*="four wide large screen"].column,.ui.grid>.row>[class*="four wide large screen"].column,.ui.grid>[class*="four wide large screen"].column{width:25%!important}.ui.column.grid>[class*="five wide large screen"].column,.ui.grid>.column.row>[class*="five wide large screen"].column,.ui.grid>.row>[class*="five wide large screen"].column,.ui.grid>[class*="five wide large screen"].column{width:31.25%!important}.ui.column.grid>[class*="six wide large screen"].column,.ui.grid>.column.row>[class*="six wide large screen"].column,.ui.grid>.row>[class*="six wide large screen"].column,.ui.grid>[class*="six wide large screen"].column{width:37.5%!important}.ui.column.grid>[class*="seven wide large screen"].column,.ui.grid>.column.row>[class*="seven wide large screen"].column,.ui.grid>.row>[class*="seven wide large screen"].column,.ui.grid>[class*="seven wide large screen"].column{width:43.75%!important}.ui.column.grid>[class*="eight wide large screen"].column,.ui.grid>.column.row>[class*="eight wide large screen"].column,.ui.grid>.row>[class*="eight wide large screen"].column,.ui.grid>[class*="eight wide large screen"].column{width:50%!important}.ui.column.grid>[class*="nine wide large screen"].column,.ui.grid>.column.row>[class*="nine wide large screen"].column,.ui.grid>.row>[class*="nine wide large screen"].column,.ui.grid>[class*="nine wide large screen"].column{width:56.25%!important}.ui.column.grid>[class*="ten wide large screen"].column,.ui.grid>.column.row>[class*="ten wide large screen"].column,.ui.grid>.row>[class*="ten wide large screen"].column,.ui.grid>[class*="ten wide large screen"].column{width:62.5%!important}.ui.column.grid>[class*="eleven wide large screen"].column,.ui.grid>.column.row>[class*="eleven wide large screen"].column,.ui.grid>.row>[class*="eleven wide large screen"].column,.ui.grid>[class*="eleven wide large screen"].column{width:68.75%!important}.ui.column.grid>[class*="twelve wide large screen"].column,.ui.grid>.column.row>[class*="twelve wide large screen"].column,.ui.grid>.row>[class*="twelve wide large screen"].column,.ui.grid>[class*="twelve wide large screen"].column{width:75%!important}.ui.column.grid>[class*="thirteen wide large screen"].column,.ui.grid>.column.row>[class*="thirteen wide large screen"].column,.ui.grid>.row>[class*="thirteen wide large screen"].column,.ui.grid>[class*="thirteen wide large screen"].column{width:81.25%!important}.ui.column.grid>[class*="fourteen wide large screen"].column,.ui.grid>.column.row>[class*="fourteen wide large screen"].column,.ui.grid>.row>[class*="fourteen wide large screen"].column,.ui.grid>[class*="fourteen wide large screen"].column{width:87.5%!important}.ui.column.grid>[class*="fifteen wide large screen"].column,.ui.grid>.column.row>[class*="fifteen wide large screen"].column,.ui.grid>.row>[class*="fifteen wide large screen"].column,.ui.grid>[class*="fifteen wide large screen"].column{width:93.75%!important}.ui.column.grid>[class*="sixteen wide large screen"].column,.ui.grid>.column.row>[class*="sixteen wide large screen"].column,.ui.grid>.row>[class*="sixteen wide large screen"].column,.ui.grid>[class*="sixteen wide large screen"].column{width:100%!important}}@media only screen and (min-width:1920px){.ui.column.grid>[class*="one wide widescreen"].column,.ui.grid>.column.row>[class*="one wide widescreen"].column,.ui.grid>.row>[class*="one wide widescreen"].column,.ui.grid>[class*="one wide widescreen"].column{width:6.25%!important}.ui.column.grid>[class*="two wide widescreen"].column,.ui.grid>.column.row>[class*="two wide widescreen"].column,.ui.grid>.row>[class*="two wide widescreen"].column,.ui.grid>[class*="two wide widescreen"].column{width:12.5%!important}.ui.column.grid>[class*="three wide widescreen"].column,.ui.grid>.column.row>[class*="three wide widescreen"].column,.ui.grid>.row>[class*="three wide widescreen"].column,.ui.grid>[class*="three wide widescreen"].column{width:18.75%!important}.ui.column.grid>[class*="four wide widescreen"].column,.ui.grid>.column.row>[class*="four wide widescreen"].column,.ui.grid>.row>[class*="four wide widescreen"].column,.ui.grid>[class*="four wide widescreen"].column{width:25%!important}.ui.column.grid>[class*="five wide widescreen"].column,.ui.grid>.column.row>[class*="five wide widescreen"].column,.ui.grid>.row>[class*="five wide widescreen"].column,.ui.grid>[class*="five wide widescreen"].column{width:31.25%!important}.ui.column.grid>[class*="six wide widescreen"].column,.ui.grid>.column.row>[class*="six wide widescreen"].column,.ui.grid>.row>[class*="six wide widescreen"].column,.ui.grid>[class*="six wide widescreen"].column{width:37.5%!important}.ui.column.grid>[class*="seven wide widescreen"].column,.ui.grid>.column.row>[class*="seven wide widescreen"].column,.ui.grid>.row>[class*="seven wide widescreen"].column,.ui.grid>[class*="seven wide widescreen"].column{width:43.75%!important}.ui.column.grid>[class*="eight wide widescreen"].column,.ui.grid>.column.row>[class*="eight wide widescreen"].column,.ui.grid>.row>[class*="eight wide widescreen"].column,.ui.grid>[class*="eight wide widescreen"].column{width:50%!important}.ui.column.grid>[class*="nine wide widescreen"].column,.ui.grid>.column.row>[class*="nine wide widescreen"].column,.ui.grid>.row>[class*="nine wide widescreen"].column,.ui.grid>[class*="nine wide widescreen"].column{width:56.25%!important}.ui.column.grid>[class*="ten wide widescreen"].column,.ui.grid>.column.row>[class*="ten wide widescreen"].column,.ui.grid>.row>[class*="ten wide widescreen"].column,.ui.grid>[class*="ten wide widescreen"].column{width:62.5%!important}.ui.column.grid>[class*="eleven wide widescreen"].column,.ui.grid>.column.row>[class*="eleven wide widescreen"].column,.ui.grid>.row>[class*="eleven wide widescreen"].column,.ui.grid>[class*="eleven wide widescreen"].column{width:68.75%!important}.ui.column.grid>[class*="twelve wide widescreen"].column,.ui.grid>.column.row>[class*="twelve wide widescreen"].column,.ui.grid>.row>[class*="twelve wide widescreen"].column,.ui.grid>[class*="twelve wide widescreen"].column{width:75%!important}.ui.column.grid>[class*="thirteen wide widescreen"].column,.ui.grid>.column.row>[class*="thirteen wide widescreen"].column,.ui.grid>.row>[class*="thirteen wide widescreen"].column,.ui.grid>[class*="thirteen wide widescreen"].column{width:81.25%!important}.ui.column.grid>[class*="fourteen wide widescreen"].column,.ui.grid>.column.row>[class*="fourteen wide widescreen"].column,.ui.grid>.row>[class*="fourteen wide widescreen"].column,.ui.grid>[class*="fourteen wide widescreen"].column{width:87.5%!important}.ui.column.grid>[class*="fifteen wide widescreen"].column,.ui.grid>.column.row>[class*="fifteen wide widescreen"].column,.ui.grid>.row>[class*="fifteen wide widescreen"].column,.ui.grid>[class*="fifteen wide widescreen"].column{width:93.75%!important}.ui.column.grid>[class*="sixteen wide widescreen"].column,.ui.grid>.column.row>[class*="sixteen wide widescreen"].column,.ui.grid>.row>[class*="sixteen wide widescreen"].column,.ui.grid>[class*="sixteen wide widescreen"].column{width:100%!important}}.ui.centered.grid,.ui.centered.grid>.row,.ui.grid>.centered.row{text-align:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.ui.centered.grid>.column:not(.aligned):not(.justified):not(.row),.ui.centered.grid>.row>.column:not(.aligned):not(.justified),.ui.grid .centered.row>.column:not(.aligned):not(.justified){text-align:left}.ui.grid>.centered.column,.ui.grid>.row>.centered.column{display:block;margin-left:auto;margin-right:auto}.ui.grid>.relaxed.row>.column,.ui.relaxed.grid>.column:not(.row),.ui.relaxed.grid>.row>.column{padding-left:1.5rem;padding-right:1.5rem}.ui.grid>[class*="very relaxed"].row>.column,.ui[class*="very relaxed"].grid>.column:not(.row),.ui[class*="very relaxed"].grid>.row>.column{padding-left:2.5rem;padding-right:2.5rem}.ui.grid .relaxed.row+.ui.divider,.ui.relaxed.grid .row+.ui.divider{margin-left:1.5rem;margin-right:1.5rem}.ui.grid [class*="very relaxed"].row+.ui.divider,.ui[class*="very relaxed"].grid .row+.ui.divider{margin-left:2.5rem;margin-right:2.5rem}.ui.padded.grid:not(.vertically):not(.horizontally){margin:0!important}[class*="horizontally padded"].ui.grid{margin-left:0!important;margin-right:0!important}[class*="vertically padded"].ui.grid{margin-top:0!important;margin-bottom:0!important}.ui.grid [class*="left floated"].column{margin-right:auto}.ui.grid [class*="right floated"].column{margin-left:auto}.ui.divided.grid:not([class*="vertically divided"])>.column:not(.row),.ui.divided.grid:not([class*="vertically divided"])>.row>.column{-webkit-box-shadow:-1px 0 0 0 rgba(34,36,38,.15);box-shadow:-1px 0 0 0 rgba(34,36,38,.15)}.ui[class*="vertically divided"].grid>.column:not(.row),.ui[class*="vertically divided"].grid>.row>.column{margin-top:1rem;margin-bottom:1rem;padding-top:0;padding-bottom:0}.ui[class*="vertically divided"].grid>.row{margin-top:0;margin-bottom:0}.ui.divided.grid:not([class*="vertically divided"])>.column:first-child,.ui.divided.grid:not([class*="vertically divided"])>.row>.column:first-child{-webkit-box-shadow:none;box-shadow:none}.ui[class*="vertically divided"].grid>.row:first-child>.column{margin-top:0}.ui.grid>.divided.row>.column{-webkit-box-shadow:-1px 0 0 0 rgba(34,36,38,.15);box-shadow:-1px 0 0 0 rgba(34,36,38,.15)}.ui.grid>.divided.row>.column:first-child{-webkit-box-shadow:none;box-shadow:none}.ui[class*="vertically divided"].grid>.row{position:relative}.ui[class*="vertically divided"].grid>.row:before{position:absolute;content:"";top:0;left:0;width:calc(100% - 2rem);height:1px;margin:0 1rem;-webkit-box-shadow:0 -1px 0 0 rgba(34,36,38,.15);box-shadow:0 -1px 0 0 rgba(34,36,38,.15)}.ui.padded.divided.grid:not(.vertically):not(.horizontally),[class*="horizontally padded"].ui.divided.grid{width:100%}.ui[class*="vertically divided"].grid>.row:first-child:before{-webkit-box-shadow:none;box-shadow:none}.ui.inverted.divided.grid:not([class*="vertically divided"])>.column:not(.row),.ui.inverted.divided.grid:not([class*="vertically divided"])>.row>.column{-webkit-box-shadow:-1px 0 0 0 rgba(255,255,255,.1);box-shadow:-1px 0 0 0 rgba(255,255,255,.1)}.ui.inverted.divided.grid:not([class*="vertically divided"])>.column:not(.row):first-child,.ui.inverted.divided.grid:not([class*="vertically divided"])>.row>.column:first-child{-webkit-box-shadow:none;box-shadow:none}.ui.inverted[class*="vertically divided"].grid>.row:before{-webkit-box-shadow:0 -1px 0 0 rgba(255,255,255,.1);box-shadow:0 -1px 0 0 rgba(255,255,255,.1)}.ui.relaxed[class*="vertically divided"].grid>.row:before{margin-left:1.5rem;margin-right:1.5rem;width:calc(100% - 3rem)}.ui[class*="very relaxed"][class*="vertically divided"].grid>.row:before{margin-left:2.5rem;margin-right:2.5rem;width:calc(100% - 5rem)}.ui.celled.grid{width:100%;margin:1em 0;-webkit-box-shadow:0 0 0 1px #d4d4d5;box-shadow:0 0 0 1px #d4d4d5}.ui.celled.grid>.row{width:100%!important;margin:0;padding:0;-webkit-box-shadow:0 -1px 0 0 #d4d4d5;box-shadow:0 -1px 0 0 #d4d4d5}.ui.celled.grid>.column:not(.row),.ui.celled.grid>.row>.column{-webkit-box-shadow:-1px 0 0 0 #d4d4d5;box-shadow:-1px 0 0 0 #d4d4d5}.ui.celled.grid>.column:first-child,.ui.celled.grid>.row>.column:first-child{-webkit-box-shadow:none;box-shadow:none}.ui.celled.grid>.column:not(.row),.ui.celled.grid>.row>.column{padding:1em}.ui.relaxed.celled.grid>.column:not(.row),.ui.relaxed.celled.grid>.row>.column{padding:1.5em}.ui[class*="very relaxed"].celled.grid>.column:not(.row),.ui[class*="very relaxed"].celled.grid>.row>.column{padding:2em}.ui[class*="internally celled"].grid{-webkit-box-shadow:none;box-shadow:none;margin:0}.ui[class*="internally celled"].grid>.row:first-child{-webkit-box-shadow:none;box-shadow:none}.ui[class*="internally celled"].grid>.row>.column:first-child{-webkit-box-shadow:none;box-shadow:none}.ui.grid>.row>[class*="top aligned"].column,.ui.grid>[class*="top aligned"].column:not(.row),.ui.grid>[class*="top aligned"].row>.column,.ui[class*="top aligned"].grid>.column:not(.row),.ui[class*="top aligned"].grid>.row>.column{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;vertical-align:top;-ms-flex-item-align:start!important;align-self:flex-start!important}.ui.grid>.row>[class*="middle aligned"].column,.ui.grid>[class*="middle aligned"].column:not(.row),.ui.grid>[class*="middle aligned"].row>.column,.ui[class*="middle aligned"].grid>.column:not(.row),.ui[class*="middle aligned"].grid>.row>.column{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;vertical-align:middle;-ms-flex-item-align:center!important;align-self:center!important}.ui.grid>.row>[class*="bottom aligned"].column,.ui.grid>[class*="bottom aligned"].column:not(.row),.ui.grid>[class*="bottom aligned"].row>.column,.ui[class*="bottom aligned"].grid>.column:not(.row),.ui[class*="bottom aligned"].grid>.row>.column{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;vertical-align:bottom;-ms-flex-item-align:end!important;align-self:flex-end!important}.ui.grid>.row>.stretched.column,.ui.grid>.stretched.column:not(.row),.ui.grid>.stretched.row>.column,.ui.stretched.grid>.column,.ui.stretched.grid>.row>.column{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important;-ms-flex-item-align:stretch;align-self:stretch;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.ui.grid>.row>.stretched.column>*,.ui.grid>.stretched.column:not(.row)>*,.ui.grid>.stretched.row>.column>*,.ui.stretched.grid>.column>*,.ui.stretched.grid>.row>.column>*{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.ui.grid>.row>[class*="left aligned"].column.column,.ui.grid>[class*="left aligned"].column.column,.ui.grid>[class*="left aligned"].row>.column,.ui[class*="left aligned"].grid>.column,.ui[class*="left aligned"].grid>.row>.column{text-align:left;-ms-flex-item-align:inherit;align-self:inherit}.ui.grid>.row>[class*="center aligned"].column.column,.ui.grid>[class*="center aligned"].column.column,.ui.grid>[class*="center aligned"].row>.column,.ui[class*="center aligned"].grid>.column,.ui[class*="center aligned"].grid>.row>.column{text-align:center;-ms-flex-item-align:inherit;align-self:inherit}.ui[class*="center aligned"].grid{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.ui.grid>.row>[class*="right aligned"].column.column,.ui.grid>[class*="right aligned"].column.column,.ui.grid>[class*="right aligned"].row>.column,.ui[class*="right aligned"].grid>.column,.ui[class*="right aligned"].grid>.row>.column{text-align:right;-ms-flex-item-align:inherit;align-self:inherit}.ui.grid>.justified.column.column,.ui.grid>.justified.row>.column,.ui.grid>.row>.justified.column.column,.ui.justified.grid>.column,.ui.justified.grid>.row>.column{text-align:justify;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto}.ui.grid>.row>.black.column,.ui.grid>.row>.blue.column,.ui.grid>.row>.brown.column,.ui.grid>.row>.green.column,.ui.grid>.row>.grey.column,.ui.grid>.row>.olive.column,.ui.grid>.row>.orange.column,.ui.grid>.row>.pink.column,.ui.grid>.row>.purple.column,.ui.grid>.row>.red.column,.ui.grid>.row>.teal.column,.ui.grid>.row>.violet.column,.ui.grid>.row>.yellow.column{margin-top:-1rem;margin-bottom:-1rem;padding-top:1rem;padding-bottom:1rem}.ui.grid>.red.column,.ui.grid>.red.row,.ui.grid>.row>.red.column{background-color:#db2828!important;color:#fff}.ui.grid>.orange.column,.ui.grid>.orange.row,.ui.grid>.row>.orange.column{background-color:#f2711c!important;color:#fff}.ui.grid>.row>.yellow.column,.ui.grid>.yellow.column,.ui.grid>.yellow.row{background-color:#fbbd08!important;color:#fff}.ui.grid>.olive.column,.ui.grid>.olive.row,.ui.grid>.row>.olive.column{background-color:#b5cc18!important;color:#fff}.ui.grid>.green.column,.ui.grid>.green.row,.ui.grid>.row>.green.column{background-color:#21ba45!important;color:#fff}.ui.grid>.row>.teal.column,.ui.grid>.teal.column,.ui.grid>.teal.row{background-color:#00b5ad!important;color:#fff}.ui.grid>.blue.column,.ui.grid>.blue.row,.ui.grid>.row>.blue.column{background-color:#2185d0!important;color:#fff}.ui.grid>.row>.violet.column,.ui.grid>.violet.column,.ui.grid>.violet.row{background-color:#6435c9!important;color:#fff}.ui.grid>.purple.column,.ui.grid>.purple.row,.ui.grid>.row>.purple.column{background-color:#a333c8!important;color:#fff}.ui.grid>.pink.column,.ui.grid>.pink.row,.ui.grid>.row>.pink.column{background-color:#e03997!important;color:#fff}.ui.grid>.brown.column,.ui.grid>.brown.row,.ui.grid>.row>.brown.column{background-color:#a5673f!important;color:#fff}.ui.grid>.grey.column,.ui.grid>.grey.row,.ui.grid>.row>.grey.column{background-color:#767676!important;color:#fff}.ui.grid>.black.column,.ui.grid>.black.row,.ui.grid>.row>.black.column{background-color:#1b1c1d!important;color:#fff}.ui.grid>[class*="equal width"].row>.column,.ui[class*="equal width"].grid>.column:not(.row),.ui[class*="equal width"].grid>.row>.column{display:inline-block;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.ui.grid>[class*="equal width"].row>.wide.column,.ui[class*="equal width"].grid>.row>.wide.column,.ui[class*="equal width"].grid>.wide.column{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}@media only screen and (max-width:767px){.ui.grid>[class*="mobile reversed"].row,.ui[class*="mobile reversed"].grid,.ui[class*="mobile reversed"].grid>.row{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.ui.stackable[class*="mobile reversed"],.ui[class*="mobile vertically reversed"].grid{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}.ui[class*="mobile reversed"].divided.grid:not([class*="vertically divided"])>.column:first-child,.ui[class*="mobile reversed"].divided.grid:not([class*="vertically divided"])>.row>.column:first-child{-webkit-box-shadow:-1px 0 0 0 rgba(34,36,38,.15);box-shadow:-1px 0 0 0 rgba(34,36,38,.15)}.ui[class*="mobile reversed"].divided.grid:not([class*="vertically divided"])>.column:last-child,.ui[class*="mobile reversed"].divided.grid:not([class*="vertically divided"])>.row>.column:last-child{-webkit-box-shadow:none;box-shadow:none}.ui.grid[class*="vertically divided"][class*="mobile vertically reversed"]>.row:first-child:before{-webkit-box-shadow:0 -1px 0 0 rgba(34,36,38,.15);box-shadow:0 -1px 0 0 rgba(34,36,38,.15)}.ui.grid[class*="vertically divided"][class*="mobile vertically reversed"]>.row:last-child:before{-webkit-box-shadow:none;box-shadow:none}.ui[class*="mobile reversed"].celled.grid>.row>.column:first-child{-webkit-box-shadow:-1px 0 0 0 #d4d4d5;box-shadow:-1px 0 0 0 #d4d4d5}.ui[class*="mobile reversed"].celled.grid>.row>.column:last-child{-webkit-box-shadow:none;box-shadow:none}}@media only screen and (min-width:768px) and (max-width:991px){.ui.grid>[class*="tablet reversed"].row,.ui[class*="tablet reversed"].grid,.ui[class*="tablet reversed"].grid>.row{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.ui[class*="tablet vertically reversed"].grid{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}.ui[class*="tablet reversed"].divided.grid:not([class*="vertically divided"])>.column:first-child,.ui[class*="tablet reversed"].divided.grid:not([class*="vertically divided"])>.row>.column:first-child{-webkit-box-shadow:-1px 0 0 0 rgba(34,36,38,.15);box-shadow:-1px 0 0 0 rgba(34,36,38,.15)}.ui[class*="tablet reversed"].divided.grid:not([class*="vertically divided"])>.column:last-child,.ui[class*="tablet reversed"].divided.grid:not([class*="vertically divided"])>.row>.column:last-child{-webkit-box-shadow:none;box-shadow:none}.ui.grid[class*="vertically divided"][class*="tablet vertically reversed"]>.row:first-child:before{-webkit-box-shadow:0 -1px 0 0 rgba(34,36,38,.15);box-shadow:0 -1px 0 0 rgba(34,36,38,.15)}.ui.grid[class*="vertically divided"][class*="tablet vertically reversed"]>.row:last-child:before{-webkit-box-shadow:none;box-shadow:none}.ui[class*="tablet reversed"].celled.grid>.row>.column:first-child{-webkit-box-shadow:-1px 0 0 0 #d4d4d5;box-shadow:-1px 0 0 0 #d4d4d5}.ui[class*="tablet reversed"].celled.grid>.row>.column:last-child{-webkit-box-shadow:none;box-shadow:none}}@media only screen and (min-width:992px){.ui.grid>[class*="computer reversed"].row,.ui[class*="computer reversed"].grid,.ui[class*="computer reversed"].grid>.row{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.ui[class*="computer vertically reversed"].grid{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}.ui[class*="computer reversed"].divided.grid:not([class*="vertically divided"])>.column:first-child,.ui[class*="computer reversed"].divided.grid:not([class*="vertically divided"])>.row>.column:first-child{-webkit-box-shadow:-1px 0 0 0 rgba(34,36,38,.15);box-shadow:-1px 0 0 0 rgba(34,36,38,.15)}.ui[class*="computer reversed"].divided.grid:not([class*="vertically divided"])>.column:last-child,.ui[class*="computer reversed"].divided.grid:not([class*="vertically divided"])>.row>.column:last-child{-webkit-box-shadow:none;box-shadow:none}.ui.grid[class*="vertically divided"][class*="computer vertically reversed"]>.row:first-child:before{-webkit-box-shadow:0 -1px 0 0 rgba(34,36,38,.15);box-shadow:0 -1px 0 0 rgba(34,36,38,.15)}.ui.grid[class*="vertically divided"][class*="computer vertically reversed"]>.row:last-child:before{-webkit-box-shadow:none;box-shadow:none}.ui[class*="computer reversed"].celled.grid>.row>.column:first-child{-webkit-box-shadow:-1px 0 0 0 #d4d4d5;box-shadow:-1px 0 0 0 #d4d4d5}.ui[class*="computer reversed"].celled.grid>.row>.column:last-child{-webkit-box-shadow:none;box-shadow:none}}@media only screen and (min-width:768px) and (max-width:991px){.ui.doubling.grid{width:auto}.ui.doubling.grid>.row,.ui.grid>.doubling.row{margin:0!important;padding:0!important}.ui.doubling.grid>.row>.column,.ui.grid>.doubling.row>.column{display:inline-block!important;padding-top:1rem!important;padding-bottom:1rem!important;-webkit-box-shadow:none!important;box-shadow:none!important;margin:0}.ui.grid>[class*="two column"].doubling.row.row>.column,.ui[class*="two column"].doubling.grid>.column:not(.row),.ui[class*="two column"].doubling.grid>.row>.column{width:100%!important}.ui.grid>[class*="three column"].doubling.row.row>.column,.ui[class*="three column"].doubling.grid>.column:not(.row),.ui[class*="three column"].doubling.grid>.row>.column{width:50%!important}.ui.grid>[class*="four column"].doubling.row.row>.column,.ui[class*="four column"].doubling.grid>.column:not(.row),.ui[class*="four column"].doubling.grid>.row>.column{width:50%!important}.ui.grid>[class*="five column"].doubling.row.row>.column,.ui[class*="five column"].doubling.grid>.column:not(.row),.ui[class*="five column"].doubling.grid>.row>.column{width:33.33333333%!important}.ui.grid>[class*="six column"].doubling.row.row>.column,.ui[class*="six column"].doubling.grid>.column:not(.row),.ui[class*="six column"].doubling.grid>.row>.column{width:33.33333333%!important}.ui.grid>[class*="seven column"].doubling.row.row>.column,.ui[class*="seven column"].doubling.grid>.column:not(.row),.ui[class*="seven column"].doubling.grid>.row>.column{width:33.33333333%!important}.ui.grid>[class*="eight column"].doubling.row.row>.column,.ui[class*="eight column"].doubling.grid>.column:not(.row),.ui[class*="eight column"].doubling.grid>.row>.column{width:25%!important}.ui.grid>[class*="nine column"].doubling.row.row>.column,.ui[class*="nine column"].doubling.grid>.column:not(.row),.ui[class*="nine column"].doubling.grid>.row>.column{width:25%!important}.ui.grid>[class*="ten column"].doubling.row.row>.column,.ui[class*="ten column"].doubling.grid>.column:not(.row),.ui[class*="ten column"].doubling.grid>.row>.column{width:20%!important}.ui.grid>[class*="eleven column"].doubling.row.row>.column,.ui[class*="eleven column"].doubling.grid>.column:not(.row),.ui[class*="eleven column"].doubling.grid>.row>.column{width:20%!important}.ui.grid>[class*="twelve column"].doubling.row.row>.column,.ui[class*="twelve column"].doubling.grid>.column:not(.row),.ui[class*="twelve column"].doubling.grid>.row>.column{width:16.66666667%!important}.ui.grid>[class*="thirteen column"].doubling.row.row>.column,.ui[class*="thirteen column"].doubling.grid>.column:not(.row),.ui[class*="thirteen column"].doubling.grid>.row>.column{width:16.66666667%!important}.ui.grid>[class*="fourteen column"].doubling.row.row>.column,.ui[class*="fourteen column"].doubling.grid>.column:not(.row),.ui[class*="fourteen column"].doubling.grid>.row>.column{width:14.28571429%!important}.ui.grid>[class*="fifteen column"].doubling.row.row>.column,.ui[class*="fifteen column"].doubling.grid>.column:not(.row),.ui[class*="fifteen column"].doubling.grid>.row>.column{width:14.28571429%!important}.ui.grid>[class*="sixteen column"].doubling.row.row>.column,.ui[class*="sixteen column"].doubling.grid>.column:not(.row),.ui[class*="sixteen column"].doubling.grid>.row>.column{width:12.5%!important}}@media only screen and (max-width:767px){.ui.doubling.grid>.row,.ui.grid>.doubling.row{margin:0!important;padding:0!important}.ui.doubling.grid>.row>.column,.ui.grid>.doubling.row>.column{padding-top:1rem!important;padding-bottom:1rem!important;margin:0!important;-webkit-box-shadow:none!important;box-shadow:none!important}.ui.grid>[class*="two column"].doubling:not(.stackable).row.row>.column,.ui[class*="two column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="two column"].doubling:not(.stackable).grid>.row>.column{width:100%!important}.ui.grid>[class*="three column"].doubling:not(.stackable).row.row>.column,.ui[class*="three column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="three column"].doubling:not(.stackable).grid>.row>.column{width:50%!important}.ui.grid>[class*="four column"].doubling:not(.stackable).row.row>.column,.ui[class*="four column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="four column"].doubling:not(.stackable).grid>.row>.column{width:50%!important}.ui.grid>[class*="five column"].doubling:not(.stackable).row.row>.column,.ui[class*="five column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="five column"].doubling:not(.stackable).grid>.row>.column{width:50%!important}.ui.grid>[class*="six column"].doubling:not(.stackable).row.row>.column,.ui[class*="six column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="six column"].doubling:not(.stackable).grid>.row>.column{width:50%!important}.ui.grid>[class*="seven column"].doubling:not(.stackable).row.row>.column,.ui[class*="seven column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="seven column"].doubling:not(.stackable).grid>.row>.column{width:50%!important}.ui.grid>[class*="eight column"].doubling:not(.stackable).row.row>.column,.ui[class*="eight column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="eight column"].doubling:not(.stackable).grid>.row>.column{width:50%!important}.ui.grid>[class*="nine column"].doubling:not(.stackable).row.row>.column,.ui[class*="nine column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="nine column"].doubling:not(.stackable).grid>.row>.column{width:33.33333333%!important}.ui.grid>[class*="ten column"].doubling:not(.stackable).row.row>.column,.ui[class*="ten column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="ten column"].doubling:not(.stackable).grid>.row>.column{width:33.33333333%!important}.ui.grid>[class*="eleven column"].doubling:not(.stackable).row.row>.column,.ui[class*="eleven column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="eleven column"].doubling:not(.stackable).grid>.row>.column{width:33.33333333%!important}.ui.grid>[class*="twelve column"].doubling:not(.stackable).row.row>.column,.ui[class*="twelve column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="twelve column"].doubling:not(.stackable).grid>.row>.column{width:33.33333333%!important}.ui.grid>[class*="thirteen column"].doubling:not(.stackable).row.row>.column,.ui[class*="thirteen column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="thirteen column"].doubling:not(.stackable).grid>.row>.column{width:33.33333333%!important}.ui.grid>[class*="fourteen column"].doubling:not(.stackable).row.row>.column,.ui[class*="fourteen column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="fourteen column"].doubling:not(.stackable).grid>.row>.column{width:25%!important}.ui.grid>[class*="fifteen column"].doubling:not(.stackable).row.row>.column,.ui[class*="fifteen column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="fifteen column"].doubling:not(.stackable).grid>.row>.column{width:25%!important}.ui.grid>[class*="sixteen column"].doubling:not(.stackable).row.row>.column,.ui[class*="sixteen column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="sixteen column"].doubling:not(.stackable).grid>.row>.column{width:25%!important}}@media only screen and (max-width:767px){.ui.stackable.grid{width:auto;margin-left:0!important;margin-right:0!important}.ui.grid>.stackable.stackable.row>.column,.ui.stackable.grid>.column.grid>.column,.ui.stackable.grid>.column.row>.column,.ui.stackable.grid>.column:not(.row),.ui.stackable.grid>.row>.column,.ui.stackable.grid>.row>.wide.column,.ui.stackable.grid>.wide.column{width:100%!important;margin:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important;padding:1rem 1rem!important}.ui.stackable.grid:not(.vertically)>.row{margin:0;padding:0}.ui.container>.ui.stackable.grid>.column,.ui.container>.ui.stackable.grid>.row>.column{padding-left:0!important;padding-right:0!important}.ui.grid .ui.stackable.grid,.ui.segment:not(.vertical) .ui.stackable.page.grid{margin-left:-1rem!important;margin-right:-1rem!important}.ui.stackable.celled.grid>.column:not(.row):first-child,.ui.stackable.celled.grid>.row:first-child>.column:first-child,.ui.stackable.divided.grid>.column:not(.row):first-child,.ui.stackable.divided.grid>.row:first-child>.column:first-child{border-top:none!important}.ui.inverted.stackable.celled.grid>.column:not(.row),.ui.inverted.stackable.celled.grid>.row>.column,.ui.inverted.stackable.divided.grid>.column:not(.row),.ui.inverted.stackable.divided.grid>.row>.column{border-top:1px solid rgba(255,255,255,.1)}.ui.stackable.celled.grid>.column:not(.row),.ui.stackable.celled.grid>.row>.column,.ui.stackable.divided:not(.vertically).grid>.column:not(.row),.ui.stackable.divided:not(.vertically).grid>.row>.column{border-top:1px solid rgba(34,36,38,.15);-webkit-box-shadow:none!important;box-shadow:none!important;padding-top:2rem!important;padding-bottom:2rem!important}.ui.stackable.celled.grid>.row{-webkit-box-shadow:none!important;box-shadow:none!important}.ui.stackable.divided:not(.vertically).grid>.column:not(.row),.ui.stackable.divided:not(.vertically).grid>.row>.column{padding-left:0!important;padding-right:0!important}}@media only screen and (max-width:767px){.ui.grid.grid.grid>.row>[class*="tablet only"].column:not(.mobile),.ui.grid.grid.grid>[class*="tablet only"].column:not(.mobile),.ui.grid.grid.grid>[class*="tablet only"].row:not(.mobile),.ui[class*="tablet only"].grid.grid.grid:not(.mobile){display:none!important}.ui.grid.grid.grid>.row>[class*="computer only"].column:not(.mobile),.ui.grid.grid.grid>[class*="computer only"].column:not(.mobile),.ui.grid.grid.grid>[class*="computer only"].row:not(.mobile),.ui[class*="computer only"].grid.grid.grid:not(.mobile){display:none!important}.ui.grid.grid.grid>.row>[class*="large screen only"].column:not(.mobile),.ui.grid.grid.grid>[class*="large screen only"].column:not(.mobile),.ui.grid.grid.grid>[class*="large screen only"].row:not(.mobile),.ui[class*="large screen only"].grid.grid.grid:not(.mobile){display:none!important}.ui.grid.grid.grid>.row>[class*="widescreen only"].column:not(.mobile),.ui.grid.grid.grid>[class*="widescreen only"].column:not(.mobile),.ui.grid.grid.grid>[class*="widescreen only"].row:not(.mobile),.ui[class*="widescreen only"].grid.grid.grid:not(.mobile){display:none!important}}@media only screen and (min-width:768px) and (max-width:991px){.ui.grid.grid.grid>.row>[class*="mobile only"].column:not(.tablet),.ui.grid.grid.grid>[class*="mobile only"].column:not(.tablet),.ui.grid.grid.grid>[class*="mobile only"].row:not(.tablet),.ui[class*="mobile only"].grid.grid.grid:not(.tablet){display:none!important}.ui.grid.grid.grid>.row>[class*="computer only"].column:not(.tablet),.ui.grid.grid.grid>[class*="computer only"].column:not(.tablet),.ui.grid.grid.grid>[class*="computer only"].row:not(.tablet),.ui[class*="computer only"].grid.grid.grid:not(.tablet){display:none!important}.ui.grid.grid.grid>.row>[class*="large screen only"].column:not(.mobile),.ui.grid.grid.grid>[class*="large screen only"].column:not(.mobile),.ui.grid.grid.grid>[class*="large screen only"].row:not(.mobile),.ui[class*="large screen only"].grid.grid.grid:not(.mobile){display:none!important}.ui.grid.grid.grid>.row>[class*="widescreen only"].column:not(.mobile),.ui.grid.grid.grid>[class*="widescreen only"].column:not(.mobile),.ui.grid.grid.grid>[class*="widescreen only"].row:not(.mobile),.ui[class*="widescreen only"].grid.grid.grid:not(.mobile){display:none!important}}@media only screen and (min-width:992px) and (max-width:1199px){.ui.grid.grid.grid>.row>[class*="mobile only"].column:not(.computer),.ui.grid.grid.grid>[class*="mobile only"].column:not(.computer),.ui.grid.grid.grid>[class*="mobile only"].row:not(.computer),.ui[class*="mobile only"].grid.grid.grid:not(.computer){display:none!important}.ui.grid.grid.grid>.row>[class*="tablet only"].column:not(.computer),.ui.grid.grid.grid>[class*="tablet only"].column:not(.computer),.ui.grid.grid.grid>[class*="tablet only"].row:not(.computer),.ui[class*="tablet only"].grid.grid.grid:not(.computer){display:none!important}.ui.grid.grid.grid>.row>[class*="large screen only"].column:not(.mobile),.ui.grid.grid.grid>[class*="large screen only"].column:not(.mobile),.ui.grid.grid.grid>[class*="large screen only"].row:not(.mobile),.ui[class*="large screen only"].grid.grid.grid:not(.mobile){display:none!important}.ui.grid.grid.grid>.row>[class*="widescreen only"].column:not(.mobile),.ui.grid.grid.grid>[class*="widescreen only"].column:not(.mobile),.ui.grid.grid.grid>[class*="widescreen only"].row:not(.mobile),.ui[class*="widescreen only"].grid.grid.grid:not(.mobile){display:none!important}}@media only screen and (min-width:1200px) and (max-width:1919px){.ui.grid.grid.grid>.row>[class*="mobile only"].column:not(.computer),.ui.grid.grid.grid>[class*="mobile only"].column:not(.computer),.ui.grid.grid.grid>[class*="mobile only"].row:not(.computer),.ui[class*="mobile only"].grid.grid.grid:not(.computer){display:none!important}.ui.grid.grid.grid>.row>[class*="tablet only"].column:not(.computer),.ui.grid.grid.grid>[class*="tablet only"].column:not(.computer),.ui.grid.grid.grid>[class*="tablet only"].row:not(.computer),.ui[class*="tablet only"].grid.grid.grid:not(.computer){display:none!important}.ui.grid.grid.grid>.row>[class*="widescreen only"].column:not(.mobile),.ui.grid.grid.grid>[class*="widescreen only"].column:not(.mobile),.ui.grid.grid.grid>[class*="widescreen only"].row:not(.mobile),.ui[class*="widescreen only"].grid.grid.grid:not(.mobile){display:none!important}}@media only screen and (min-width:1920px){.ui.grid.grid.grid>.row>[class*="mobile only"].column:not(.computer),.ui.grid.grid.grid>[class*="mobile only"].column:not(.computer),.ui.grid.grid.grid>[class*="mobile only"].row:not(.computer),.ui[class*="mobile only"].grid.grid.grid:not(.computer){display:none!important}.ui.grid.grid.grid>.row>[class*="tablet only"].column:not(.computer),.ui.grid.grid.grid>[class*="tablet only"].column:not(.computer),.ui.grid.grid.grid>[class*="tablet only"].row:not(.computer),.ui[class*="tablet only"].grid.grid.grid:not(.computer){display:none!important}} \ No newline at end of file diff --git a/app/static/semantic/components/header.css b/app/static/semantic/components/header.css new file mode 100755 index 0000000..cdebadc --- /dev/null +++ b/app/static/semantic/components/header.css @@ -0,0 +1,727 @@ +/*! + * # Semantic UI 2.4.1 - Header + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */ + + +/******************************* + Header +*******************************/ + + +/* Standard */ +.ui.header { + border: none; + margin: calc(2rem - 0.14285714em ) 0em 1rem; + padding: 0em 0em; + font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif; + font-weight: bold; + line-height: 1.28571429em; + text-transform: none; + color: rgba(0, 0, 0, 0.87); +} +.ui.header:first-child { + margin-top: -0.14285714em; +} +.ui.header:last-child { + margin-bottom: 0em; +} + +/*-------------- + Sub Header +---------------*/ + +.ui.header .sub.header { + display: block; + font-weight: normal; + padding: 0em; + margin: 0em; + font-size: 1rem; + line-height: 1.2em; + color: rgba(0, 0, 0, 0.6); +} + +/*-------------- + Icon +---------------*/ + +.ui.header > .icon { + display: table-cell; + opacity: 1; + font-size: 1.5em; + padding-top: 0em; + vertical-align: middle; +} + +/* With Text Node */ +.ui.header .icon:only-child { + display: inline-block; + padding: 0em; + margin-right: 0.75rem; +} + +/*------------------- + Image +--------------------*/ + +.ui.header > .image:not(.icon), +.ui.header > img { + display: inline-block; + margin-top: 0.14285714em; + width: 2.5em; + height: auto; + vertical-align: middle; +} +.ui.header > .image:not(.icon):only-child, +.ui.header > img:only-child { + margin-right: 0.75rem; +} + +/*-------------- + Content +---------------*/ + +.ui.header .content { + display: inline-block; + vertical-align: top; +} + +/* After Image */ +.ui.header > img + .content, +.ui.header > .image + .content { + padding-left: 0.75rem; + vertical-align: middle; +} + +/* After Icon */ +.ui.header > .icon + .content { + padding-left: 0.75rem; + display: table-cell; + vertical-align: middle; +} + +/*-------------- + Loose Coupling +---------------*/ + +.ui.header .ui.label { + font-size: ''; + margin-left: 0.5rem; + vertical-align: middle; +} + +/* Positioning */ +.ui.header + p { + margin-top: 0em; +} + + +/******************************* + Types +*******************************/ + + +/*-------------- + Page +---------------*/ + +h1.ui.header { + font-size: 2rem; +} +h2.ui.header { + font-size: 1.71428571rem; +} +h3.ui.header { + font-size: 1.28571429rem; +} +h4.ui.header { + font-size: 1.07142857rem; +} +h5.ui.header { + font-size: 1rem; +} + +/* Sub Header */ +h1.ui.header .sub.header { + font-size: 1.14285714rem; +} +h2.ui.header .sub.header { + font-size: 1.14285714rem; +} +h3.ui.header .sub.header { + font-size: 1rem; +} +h4.ui.header .sub.header { + font-size: 1rem; +} +h5.ui.header .sub.header { + font-size: 0.92857143rem; +} + +/*-------------- + Content Heading +---------------*/ + +.ui.huge.header { + min-height: 1em; + font-size: 2em; +} +.ui.large.header { + font-size: 1.71428571em; +} +.ui.medium.header { + font-size: 1.28571429em; +} +.ui.small.header { + font-size: 1.07142857em; +} +.ui.tiny.header { + font-size: 1em; +} + +/* Sub Header */ +.ui.huge.header .sub.header { + font-size: 1.14285714rem; +} +.ui.large.header .sub.header { + font-size: 1.14285714rem; +} +.ui.header .sub.header { + font-size: 1rem; +} +.ui.small.header .sub.header { + font-size: 1rem; +} +.ui.tiny.header .sub.header { + font-size: 0.92857143rem; +} + +/*-------------- + Sub Heading +---------------*/ + +.ui.sub.header { + padding: 0em; + margin-bottom: 0.14285714rem; + font-weight: bold; + font-size: 0.85714286em; + text-transform: uppercase; + color: ''; +} +.ui.small.sub.header { + font-size: 0.78571429em; +} +.ui.sub.header { + font-size: 0.85714286em; +} +.ui.large.sub.header { + font-size: 0.92857143em; +} +.ui.huge.sub.header { + font-size: 1em; +} + +/*------------------- + Icon +--------------------*/ + +.ui.icon.header { + display: inline-block; + text-align: center; + margin: 2rem 0em 1rem; +} +.ui.icon.header:after { + content: ''; + display: block; + height: 0px; + clear: both; + visibility: hidden; +} +.ui.icon.header:first-child { + margin-top: 0em; +} +.ui.icon.header .icon { + float: none; + display: block; + width: auto; + height: auto; + line-height: 1; + padding: 0em; + font-size: 3em; + margin: 0em auto 0.5rem; + opacity: 1; +} +.ui.icon.header .content { + display: block; + padding: 0em; +} +.ui.icon.header .circular.icon { + font-size: 2em; +} +.ui.icon.header .square.icon { + font-size: 2em; +} +.ui.block.icon.header .icon { + margin-bottom: 0em; +} +.ui.icon.header.aligned { + margin-left: auto; + margin-right: auto; + display: block; +} + + +/******************************* + States +*******************************/ + +.ui.disabled.header { + opacity: 0.45; +} + + +/******************************* + Variations +*******************************/ + + +/*------------------- + Inverted +--------------------*/ + +.ui.inverted.header { + color: #FFFFFF; +} +.ui.inverted.header .sub.header { + color: rgba(255, 255, 255, 0.8); +} +.ui.inverted.attached.header { + background: #545454 -webkit-gradient(linear, left top, left bottom, from(transparent), to(rgba(0, 0, 0, 0.05))); + background: #545454 -webkit-linear-gradient(transparent, rgba(0, 0, 0, 0.05)); + background: #545454 linear-gradient(transparent, rgba(0, 0, 0, 0.05)); + -webkit-box-shadow: none; + box-shadow: none; + border-color: transparent; +} +.ui.inverted.block.header { + background: #545454 -webkit-gradient(linear, left top, left bottom, from(transparent), to(rgba(0, 0, 0, 0.05))); + background: #545454 -webkit-linear-gradient(transparent, rgba(0, 0, 0, 0.05)); + background: #545454 linear-gradient(transparent, rgba(0, 0, 0, 0.05)); + -webkit-box-shadow: none; + box-shadow: none; +} +.ui.inverted.block.header { + border-bottom: none; +} + +/*------------------- + Colors +--------------------*/ + + +/*--- Red ---*/ + +.ui.red.header { + color: #DB2828 !important; +} +a.ui.red.header:hover { + color: #d01919 !important; +} +.ui.red.dividing.header { + border-bottom: 2px solid #DB2828; +} + +/* Inverted */ +.ui.inverted.red.header { + color: #FF695E !important; +} +a.ui.inverted.red.header:hover { + color: #ff5144 !important; +} + +/*--- Orange ---*/ + +.ui.orange.header { + color: #F2711C !important; +} +a.ui.orange.header:hover { + color: #f26202 !important; +} +.ui.orange.dividing.header { + border-bottom: 2px solid #F2711C; +} + +/* Inverted */ +.ui.inverted.orange.header { + color: #FF851B !important; +} +a.ui.inverted.orange.header:hover { + color: #ff7701 !important; +} + +/*--- Olive ---*/ + +.ui.olive.header { + color: #B5CC18 !important; +} +a.ui.olive.header:hover { + color: #a7bd0d !important; +} +.ui.olive.dividing.header { + border-bottom: 2px solid #B5CC18; +} + +/* Inverted */ +.ui.inverted.olive.header { + color: #D9E778 !important; +} +a.ui.inverted.olive.header:hover { + color: #d8ea5c !important; +} + +/*--- Yellow ---*/ + +.ui.yellow.header { + color: #FBBD08 !important; +} +a.ui.yellow.header:hover { + color: #eaae00 !important; +} +.ui.yellow.dividing.header { + border-bottom: 2px solid #FBBD08; +} + +/* Inverted */ +.ui.inverted.yellow.header { + color: #FFE21F !important; +} +a.ui.inverted.yellow.header:hover { + color: #ffdf05 !important; +} + +/*--- Green ---*/ + +.ui.green.header { + color: #21BA45 !important; +} +a.ui.green.header:hover { + color: #16ab39 !important; +} +.ui.green.dividing.header { + border-bottom: 2px solid #21BA45; +} + +/* Inverted */ +.ui.inverted.green.header { + color: #2ECC40 !important; +} +a.ui.inverted.green.header:hover { + color: #22be34 !important; +} + +/*--- Teal ---*/ + +.ui.teal.header { + color: #00B5AD !important; +} +a.ui.teal.header:hover { + color: #009c95 !important; +} +.ui.teal.dividing.header { + border-bottom: 2px solid #00B5AD; +} + +/* Inverted */ +.ui.inverted.teal.header { + color: #6DFFFF !important; +} +a.ui.inverted.teal.header:hover { + color: #54ffff !important; +} + +/*--- Blue ---*/ + +.ui.blue.header { + color: #2185D0 !important; +} +a.ui.blue.header:hover { + color: #1678c2 !important; +} +.ui.blue.dividing.header { + border-bottom: 2px solid #2185D0; +} + +/* Inverted */ +.ui.inverted.blue.header { + color: #54C8FF !important; +} +a.ui.inverted.blue.header:hover { + color: #3ac0ff !important; +} + +/*--- Violet ---*/ + +.ui.violet.header { + color: #6435C9 !important; +} +a.ui.violet.header:hover { + color: #5829bb !important; +} +.ui.violet.dividing.header { + border-bottom: 2px solid #6435C9; +} + +/* Inverted */ +.ui.inverted.violet.header { + color: #A291FB !important; +} +a.ui.inverted.violet.header:hover { + color: #8a73ff !important; +} + +/*--- Purple ---*/ + +.ui.purple.header { + color: #A333C8 !important; +} +a.ui.purple.header:hover { + color: #9627ba !important; +} +.ui.purple.dividing.header { + border-bottom: 2px solid #A333C8; +} + +/* Inverted */ +.ui.inverted.purple.header { + color: #DC73FF !important; +} +a.ui.inverted.purple.header:hover { + color: #d65aff !important; +} + +/*--- Pink ---*/ + +.ui.pink.header { + color: #E03997 !important; +} +a.ui.pink.header:hover { + color: #e61a8d !important; +} +.ui.pink.dividing.header { + border-bottom: 2px solid #E03997; +} + +/* Inverted */ +.ui.inverted.pink.header { + color: #FF8EDF !important; +} +a.ui.inverted.pink.header:hover { + color: #ff74d8 !important; +} + +/*--- Brown ---*/ + +.ui.brown.header { + color: #A5673F !important; +} +a.ui.brown.header:hover { + color: #975b33 !important; +} +.ui.brown.dividing.header { + border-bottom: 2px solid #A5673F; +} + +/* Inverted */ +.ui.inverted.brown.header { + color: #D67C1C !important; +} +a.ui.inverted.brown.header:hover { + color: #c86f11 !important; +} + +/*--- Grey ---*/ + +.ui.grey.header { + color: #767676 !important; +} +a.ui.grey.header:hover { + color: #838383 !important; +} +.ui.grey.dividing.header { + border-bottom: 2px solid #767676; +} + +/* Inverted */ +.ui.inverted.grey.header { + color: #DCDDDE !important; +} +a.ui.inverted.grey.header:hover { + color: #cfd0d2 !important; +} + +/*------------------- + Aligned +--------------------*/ + +.ui.left.aligned.header { + text-align: left; +} +.ui.right.aligned.header { + text-align: right; +} +.ui.centered.header, +.ui.center.aligned.header { + text-align: center; +} +.ui.justified.header { + text-align: justify; +} +.ui.justified.header:after { + display: inline-block; + content: ''; + width: 100%; +} + +/*------------------- + Floated +--------------------*/ + +.ui.floated.header, +.ui[class*="left floated"].header { + float: left; + margin-top: 0em; + margin-right: 0.5em; +} +.ui[class*="right floated"].header { + float: right; + margin-top: 0em; + margin-left: 0.5em; +} + +/*------------------- + Fitted +--------------------*/ + +.ui.fitted.header { + padding: 0em; +} + +/*------------------- + Dividing +--------------------*/ + +.ui.dividing.header { + padding-bottom: 0.21428571rem; + border-bottom: 1px solid rgba(34, 36, 38, 0.15); +} +.ui.dividing.header .sub.header { + padding-bottom: 0.21428571rem; +} +.ui.dividing.header .icon { + margin-bottom: 0em; +} +.ui.inverted.dividing.header { + border-bottom-color: rgba(255, 255, 255, 0.1); +} + +/*------------------- + Block +--------------------*/ + +.ui.block.header { + background: #F3F4F5; + padding: 0.78571429rem 1rem; + -webkit-box-shadow: none; + box-shadow: none; + border: 1px solid #D4D4D5; + border-radius: 0.28571429rem; +} +.ui.tiny.block.header { + font-size: 0.85714286rem; +} +.ui.small.block.header { + font-size: 0.92857143rem; +} +.ui.block.header:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6) { + font-size: 1rem; +} +.ui.large.block.header { + font-size: 1.14285714rem; +} +.ui.huge.block.header { + font-size: 1.42857143rem; +} + +/*------------------- + Attached +--------------------*/ + +.ui.attached.header { + background: #FFFFFF; + padding: 0.78571429rem 1rem; + margin-left: -1px; + margin-right: -1px; + -webkit-box-shadow: none; + box-shadow: none; + border: 1px solid #D4D4D5; +} +.ui.attached.block.header { + background: #F3F4F5; +} +.ui.attached:not(.top):not(.bottom).header { + margin-top: 0em; + margin-bottom: 0em; + border-top: none; + border-radius: 0em; +} +.ui.top.attached.header { + margin-bottom: 0em; + border-radius: 0.28571429rem 0.28571429rem 0em 0em; +} +.ui.bottom.attached.header { + margin-top: 0em; + border-top: none; + border-radius: 0em 0em 0.28571429rem 0.28571429rem; +} + +/* Attached Sizes */ +.ui.tiny.attached.header { + font-size: 0.85714286em; +} +.ui.small.attached.header { + font-size: 0.92857143em; +} +.ui.attached.header:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6) { + font-size: 1em; +} +.ui.large.attached.header { + font-size: 1.14285714em; +} +.ui.huge.attached.header { + font-size: 1.42857143em; +} + +/*------------------- + Sizing +--------------------*/ + +.ui.header:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6) { + font-size: 1.28571429em; +} + + +/******************************* + Theme Overrides +*******************************/ + + + +/******************************* + Site Overrides +*******************************/ + diff --git a/app/static/semantic/components/header.min.css b/app/static/semantic/components/header.min.css new file mode 100755 index 0000000..a496a5a --- /dev/null +++ b/app/static/semantic/components/header.min.css @@ -0,0 +1,9 @@ +/*! + * # Semantic UI 2.4.1 - Header + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */.ui.header{border:none;margin:calc(2rem - .14285714em) 0 1rem;padding:0 0;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-weight:700;line-height:1.28571429em;text-transform:none;color:rgba(0,0,0,.87)}.ui.header:first-child{margin-top:-.14285714em}.ui.header:last-child{margin-bottom:0}.ui.header .sub.header{display:block;font-weight:400;padding:0;margin:0;font-size:1rem;line-height:1.2em;color:rgba(0,0,0,.6)}.ui.header>.icon{display:table-cell;opacity:1;font-size:1.5em;padding-top:0;vertical-align:middle}.ui.header .icon:only-child{display:inline-block;padding:0;margin-right:.75rem}.ui.header>.image:not(.icon),.ui.header>img{display:inline-block;margin-top:.14285714em;width:2.5em;height:auto;vertical-align:middle}.ui.header>.image:not(.icon):only-child,.ui.header>img:only-child{margin-right:.75rem}.ui.header .content{display:inline-block;vertical-align:top}.ui.header>.image+.content,.ui.header>img+.content{padding-left:.75rem;vertical-align:middle}.ui.header>.icon+.content{padding-left:.75rem;display:table-cell;vertical-align:middle}.ui.header .ui.label{font-size:'';margin-left:.5rem;vertical-align:middle}.ui.header+p{margin-top:0}h1.ui.header{font-size:2rem}h2.ui.header{font-size:1.71428571rem}h3.ui.header{font-size:1.28571429rem}h4.ui.header{font-size:1.07142857rem}h5.ui.header{font-size:1rem}h1.ui.header .sub.header{font-size:1.14285714rem}h2.ui.header .sub.header{font-size:1.14285714rem}h3.ui.header .sub.header{font-size:1rem}h4.ui.header .sub.header{font-size:1rem}h5.ui.header .sub.header{font-size:.92857143rem}.ui.huge.header{min-height:1em;font-size:2em}.ui.large.header{font-size:1.71428571em}.ui.medium.header{font-size:1.28571429em}.ui.small.header{font-size:1.07142857em}.ui.tiny.header{font-size:1em}.ui.huge.header .sub.header{font-size:1.14285714rem}.ui.large.header .sub.header{font-size:1.14285714rem}.ui.header .sub.header{font-size:1rem}.ui.small.header .sub.header{font-size:1rem}.ui.tiny.header .sub.header{font-size:.92857143rem}.ui.sub.header{padding:0;margin-bottom:.14285714rem;font-weight:700;font-size:.85714286em;text-transform:uppercase;color:''}.ui.small.sub.header{font-size:.78571429em}.ui.sub.header{font-size:.85714286em}.ui.large.sub.header{font-size:.92857143em}.ui.huge.sub.header{font-size:1em}.ui.icon.header{display:inline-block;text-align:center;margin:2rem 0 1rem}.ui.icon.header:after{content:'';display:block;height:0;clear:both;visibility:hidden}.ui.icon.header:first-child{margin-top:0}.ui.icon.header .icon{float:none;display:block;width:auto;height:auto;line-height:1;padding:0;font-size:3em;margin:0 auto .5rem;opacity:1}.ui.icon.header .content{display:block;padding:0}.ui.icon.header .circular.icon{font-size:2em}.ui.icon.header .square.icon{font-size:2em}.ui.block.icon.header .icon{margin-bottom:0}.ui.icon.header.aligned{margin-left:auto;margin-right:auto;display:block}.ui.disabled.header{opacity:.45}.ui.inverted.header{color:#fff}.ui.inverted.header .sub.header{color:rgba(255,255,255,.8)}.ui.inverted.attached.header{background:#545454 -webkit-gradient(linear,left top,left bottom,from(transparent),to(rgba(0,0,0,.05)));background:#545454 -webkit-linear-gradient(transparent,rgba(0,0,0,.05));background:#545454 linear-gradient(transparent,rgba(0,0,0,.05));-webkit-box-shadow:none;box-shadow:none;border-color:transparent}.ui.inverted.block.header{background:#545454 -webkit-gradient(linear,left top,left bottom,from(transparent),to(rgba(0,0,0,.05)));background:#545454 -webkit-linear-gradient(transparent,rgba(0,0,0,.05));background:#545454 linear-gradient(transparent,rgba(0,0,0,.05));-webkit-box-shadow:none;box-shadow:none}.ui.inverted.block.header{border-bottom:none}.ui.red.header{color:#db2828!important}a.ui.red.header:hover{color:#d01919!important}.ui.red.dividing.header{border-bottom:2px solid #db2828}.ui.inverted.red.header{color:#ff695e!important}a.ui.inverted.red.header:hover{color:#ff5144!important}.ui.orange.header{color:#f2711c!important}a.ui.orange.header:hover{color:#f26202!important}.ui.orange.dividing.header{border-bottom:2px solid #f2711c}.ui.inverted.orange.header{color:#ff851b!important}a.ui.inverted.orange.header:hover{color:#ff7701!important}.ui.olive.header{color:#b5cc18!important}a.ui.olive.header:hover{color:#a7bd0d!important}.ui.olive.dividing.header{border-bottom:2px solid #b5cc18}.ui.inverted.olive.header{color:#d9e778!important}a.ui.inverted.olive.header:hover{color:#d8ea5c!important}.ui.yellow.header{color:#fbbd08!important}a.ui.yellow.header:hover{color:#eaae00!important}.ui.yellow.dividing.header{border-bottom:2px solid #fbbd08}.ui.inverted.yellow.header{color:#ffe21f!important}a.ui.inverted.yellow.header:hover{color:#ffdf05!important}.ui.green.header{color:#21ba45!important}a.ui.green.header:hover{color:#16ab39!important}.ui.green.dividing.header{border-bottom:2px solid #21ba45}.ui.inverted.green.header{color:#2ecc40!important}a.ui.inverted.green.header:hover{color:#22be34!important}.ui.teal.header{color:#00b5ad!important}a.ui.teal.header:hover{color:#009c95!important}.ui.teal.dividing.header{border-bottom:2px solid #00b5ad}.ui.inverted.teal.header{color:#6dffff!important}a.ui.inverted.teal.header:hover{color:#54ffff!important}.ui.blue.header{color:#2185d0!important}a.ui.blue.header:hover{color:#1678c2!important}.ui.blue.dividing.header{border-bottom:2px solid #2185d0}.ui.inverted.blue.header{color:#54c8ff!important}a.ui.inverted.blue.header:hover{color:#3ac0ff!important}.ui.violet.header{color:#6435c9!important}a.ui.violet.header:hover{color:#5829bb!important}.ui.violet.dividing.header{border-bottom:2px solid #6435c9}.ui.inverted.violet.header{color:#a291fb!important}a.ui.inverted.violet.header:hover{color:#8a73ff!important}.ui.purple.header{color:#a333c8!important}a.ui.purple.header:hover{color:#9627ba!important}.ui.purple.dividing.header{border-bottom:2px solid #a333c8}.ui.inverted.purple.header{color:#dc73ff!important}a.ui.inverted.purple.header:hover{color:#d65aff!important}.ui.pink.header{color:#e03997!important}a.ui.pink.header:hover{color:#e61a8d!important}.ui.pink.dividing.header{border-bottom:2px solid #e03997}.ui.inverted.pink.header{color:#ff8edf!important}a.ui.inverted.pink.header:hover{color:#ff74d8!important}.ui.brown.header{color:#a5673f!important}a.ui.brown.header:hover{color:#975b33!important}.ui.brown.dividing.header{border-bottom:2px solid #a5673f}.ui.inverted.brown.header{color:#d67c1c!important}a.ui.inverted.brown.header:hover{color:#c86f11!important}.ui.grey.header{color:#767676!important}a.ui.grey.header:hover{color:#838383!important}.ui.grey.dividing.header{border-bottom:2px solid #767676}.ui.inverted.grey.header{color:#dcddde!important}a.ui.inverted.grey.header:hover{color:#cfd0d2!important}.ui.left.aligned.header{text-align:left}.ui.right.aligned.header{text-align:right}.ui.center.aligned.header,.ui.centered.header{text-align:center}.ui.justified.header{text-align:justify}.ui.justified.header:after{display:inline-block;content:'';width:100%}.ui.floated.header,.ui[class*="left floated"].header{float:left;margin-top:0;margin-right:.5em}.ui[class*="right floated"].header{float:right;margin-top:0;margin-left:.5em}.ui.fitted.header{padding:0}.ui.dividing.header{padding-bottom:.21428571rem;border-bottom:1px solid rgba(34,36,38,.15)}.ui.dividing.header .sub.header{padding-bottom:.21428571rem}.ui.dividing.header .icon{margin-bottom:0}.ui.inverted.dividing.header{border-bottom-color:rgba(255,255,255,.1)}.ui.block.header{background:#f3f4f5;padding:.78571429rem 1rem;-webkit-box-shadow:none;box-shadow:none;border:1px solid #d4d4d5;border-radius:.28571429rem}.ui.tiny.block.header{font-size:.85714286rem}.ui.small.block.header{font-size:.92857143rem}.ui.block.header:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6){font-size:1rem}.ui.large.block.header{font-size:1.14285714rem}.ui.huge.block.header{font-size:1.42857143rem}.ui.attached.header{background:#fff;padding:.78571429rem 1rem;margin-left:-1px;margin-right:-1px;-webkit-box-shadow:none;box-shadow:none;border:1px solid #d4d4d5}.ui.attached.block.header{background:#f3f4f5}.ui.attached:not(.top):not(.bottom).header{margin-top:0;margin-bottom:0;border-top:none;border-radius:0}.ui.top.attached.header{margin-bottom:0;border-radius:.28571429rem .28571429rem 0 0}.ui.bottom.attached.header{margin-top:0;border-top:none;border-radius:0 0 .28571429rem .28571429rem}.ui.tiny.attached.header{font-size:.85714286em}.ui.small.attached.header{font-size:.92857143em}.ui.attached.header:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6){font-size:1em}.ui.large.attached.header{font-size:1.14285714em}.ui.huge.attached.header{font-size:1.42857143em}.ui.header:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6){font-size:1.28571429em} \ No newline at end of file diff --git a/app/static/semantic/components/icon.css b/app/static/semantic/components/icon.css new file mode 100755 index 0000000..188dd2d --- /dev/null +++ b/app/static/semantic/components/icon.css @@ -0,0 +1,4806 @@ +/*! + * # Semantic UI 2.4.1 - Icon + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */ + + +/******************************* + Icon +*******************************/ + +@font-face { + font-family: 'Icons'; + src: url("./../themes/default/assets/fonts/icons.eot"); + src: url("./../themes/default/assets/fonts/icons.eot?#iefix") format('embedded-opentype'), url("./../themes/default/assets/fonts/icons.woff2") format('woff2'), url("./../themes/default/assets/fonts/icons.woff") format('woff'), url("./../themes/default/assets/fonts/icons.ttf") format('truetype'), url("./../themes/default/assets/fonts/icons.svg#icons") format('svg'); + font-style: normal; + font-weight: normal; + font-variant: normal; + text-decoration: inherit; + text-transform: none; +} +i.icon { + display: inline-block; + opacity: 1; + margin: 0em 0.25rem 0em 0em; + width: 1.18em; + height: 1em; + font-family: 'Icons'; + font-style: normal; + font-weight: normal; + text-decoration: inherit; + text-align: center; + speak: none; + font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} +i.icon:before { + background: none !important; +} + + +/******************************* + Types +*******************************/ + + +/*-------------- + Loading +---------------*/ + +i.icon.loading { + height: 1em; + line-height: 1; + -webkit-animation: icon-loading 2s linear infinite; + animation: icon-loading 2s linear infinite; +} +@-webkit-keyframes icon-loading { + from { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + to { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} +@keyframes icon-loading { + from { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + to { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + + +/******************************* + States +*******************************/ + +i.icon.hover { + opacity: 1 !important; +} +i.icon.active { + opacity: 1 !important; +} +i.emphasized.icon { + opacity: 1 !important; +} +i.disabled.icon { + opacity: 0.45 !important; +} + + +/******************************* + Variations +*******************************/ + + +/*------------------- + Fitted +--------------------*/ + +i.fitted.icon { + width: auto; + margin: 0em !important; +} + +/*------------------- + Link +--------------------*/ + +i.link.icon, +i.link.icons { + cursor: pointer; + opacity: 0.8; + -webkit-transition: opacity 0.1s ease; + transition: opacity 0.1s ease; +} +i.link.icon:hover, +i.link.icons:hover { + opacity: 1 !important; +} + +/*------------------- + Circular +--------------------*/ + +i.circular.icon { + border-radius: 500em !important; + line-height: 1 !important; + padding: 0.5em 0em !important; + -webkit-box-shadow: 0em 0em 0em 0.1em rgba(0, 0, 0, 0.1) inset; + box-shadow: 0em 0em 0em 0.1em rgba(0, 0, 0, 0.1) inset; + width: 2em !important; + height: 2em !important; +} +i.circular.inverted.icon { + border: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +/*------------------- + Flipped +--------------------*/ + +i.flipped.icon, +i.horizontally.flipped.icon { + -webkit-transform: scale(-1, 1); + transform: scale(-1, 1); +} +i.vertically.flipped.icon { + -webkit-transform: scale(1, -1); + transform: scale(1, -1); +} + +/*------------------- + Rotated +--------------------*/ + +i.rotated.icon, +i.right.rotated.icon, +i.clockwise.rotated.icon { + -webkit-transform: rotate(90deg); + transform: rotate(90deg); +} +i.left.rotated.icon, +i.counterclockwise.rotated.icon { + -webkit-transform: rotate(-90deg); + transform: rotate(-90deg); +} + +/*------------------- + Bordered +--------------------*/ + +i.bordered.icon { + line-height: 1; + vertical-align: baseline; + width: 2em; + height: 2em; + padding: 0.5em 0em !important; + -webkit-box-shadow: 0em 0em 0em 0.1em rgba(0, 0, 0, 0.1) inset; + box-shadow: 0em 0em 0em 0.1em rgba(0, 0, 0, 0.1) inset; +} +i.bordered.inverted.icon { + border: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +/*------------------- + Inverted +--------------------*/ + + +/* Inverted Shapes */ +i.inverted.bordered.icon, +i.inverted.circular.icon { + background-color: #1B1C1D !important; + color: #FFFFFF !important; +} +i.inverted.icon { + color: #FFFFFF; +} + +/*------------------- + Colors +--------------------*/ + + +/* Red */ +i.red.icon { + color: #DB2828 !important; +} +i.inverted.red.icon { + color: #FF695E !important; +} +i.inverted.bordered.red.icon, +i.inverted.circular.red.icon { + background-color: #DB2828 !important; + color: #FFFFFF !important; +} + +/* Orange */ +i.orange.icon { + color: #F2711C !important; +} +i.inverted.orange.icon { + color: #FF851B !important; +} +i.inverted.bordered.orange.icon, +i.inverted.circular.orange.icon { + background-color: #F2711C !important; + color: #FFFFFF !important; +} + +/* Yellow */ +i.yellow.icon { + color: #FBBD08 !important; +} +i.inverted.yellow.icon { + color: #FFE21F !important; +} +i.inverted.bordered.yellow.icon, +i.inverted.circular.yellow.icon { + background-color: #FBBD08 !important; + color: #FFFFFF !important; +} + +/* Olive */ +i.olive.icon { + color: #B5CC18 !important; +} +i.inverted.olive.icon { + color: #D9E778 !important; +} +i.inverted.bordered.olive.icon, +i.inverted.circular.olive.icon { + background-color: #B5CC18 !important; + color: #FFFFFF !important; +} + +/* Green */ +i.green.icon { + color: #21BA45 !important; +} +i.inverted.green.icon { + color: #2ECC40 !important; +} +i.inverted.bordered.green.icon, +i.inverted.circular.green.icon { + background-color: #21BA45 !important; + color: #FFFFFF !important; +} + +/* Teal */ +i.teal.icon { + color: #00B5AD !important; +} +i.inverted.teal.icon { + color: #6DFFFF !important; +} +i.inverted.bordered.teal.icon, +i.inverted.circular.teal.icon { + background-color: #00B5AD !important; + color: #FFFFFF !important; +} + +/* Blue */ +i.blue.icon { + color: #2185D0 !important; +} +i.inverted.blue.icon { + color: #54C8FF !important; +} +i.inverted.bordered.blue.icon, +i.inverted.circular.blue.icon { + background-color: #2185D0 !important; + color: #FFFFFF !important; +} + +/* Violet */ +i.violet.icon { + color: #6435C9 !important; +} +i.inverted.violet.icon { + color: #A291FB !important; +} +i.inverted.bordered.violet.icon, +i.inverted.circular.violet.icon { + background-color: #6435C9 !important; + color: #FFFFFF !important; +} + +/* Purple */ +i.purple.icon { + color: #A333C8 !important; +} +i.inverted.purple.icon { + color: #DC73FF !important; +} +i.inverted.bordered.purple.icon, +i.inverted.circular.purple.icon { + background-color: #A333C8 !important; + color: #FFFFFF !important; +} + +/* Pink */ +i.pink.icon { + color: #E03997 !important; +} +i.inverted.pink.icon { + color: #FF8EDF !important; +} +i.inverted.bordered.pink.icon, +i.inverted.circular.pink.icon { + background-color: #E03997 !important; + color: #FFFFFF !important; +} + +/* Brown */ +i.brown.icon { + color: #A5673F !important; +} +i.inverted.brown.icon { + color: #D67C1C !important; +} +i.inverted.bordered.brown.icon, +i.inverted.circular.brown.icon { + background-color: #A5673F !important; + color: #FFFFFF !important; +} + +/* Grey */ +i.grey.icon { + color: #767676 !important; +} +i.inverted.grey.icon { + color: #DCDDDE !important; +} +i.inverted.bordered.grey.icon, +i.inverted.circular.grey.icon { + background-color: #767676 !important; + color: #FFFFFF !important; +} + +/* Black */ +i.black.icon { + color: #1B1C1D !important; +} +i.inverted.black.icon { + color: #545454 !important; +} +i.inverted.bordered.black.icon, +i.inverted.circular.black.icon { + background-color: #1B1C1D !important; + color: #FFFFFF !important; +} + +/*------------------- + Sizes +--------------------*/ + +i.mini.icon, +i.mini.icons { + line-height: 1; + font-size: 0.4em; +} +i.tiny.icon, +i.tiny.icons { + line-height: 1; + font-size: 0.5em; +} +i.small.icon, +i.small.icons { + line-height: 1; + font-size: 0.75em; +} +i.icon, +i.icons { + font-size: 1em; +} +i.large.icon, +i.large.icons { + line-height: 1; + vertical-align: middle; + font-size: 1.5em; +} +i.big.icon, +i.big.icons { + line-height: 1; + vertical-align: middle; + font-size: 2em; +} +i.huge.icon, +i.huge.icons { + line-height: 1; + vertical-align: middle; + font-size: 4em; +} +i.massive.icon, +i.massive.icons { + line-height: 1; + vertical-align: middle; + font-size: 8em; +} + + +/******************************* + Groups +*******************************/ + +i.icons { + display: inline-block; + position: relative; + line-height: 1; +} +i.icons .icon { + position: absolute; + top: 50%; + left: 50%; + -webkit-transform: translateX(-50%) translateY(-50%); + transform: translateX(-50%) translateY(-50%); + margin: 0em; + margin: 0; +} +i.icons .icon:first-child { + position: static; + width: auto; + height: auto; + vertical-align: top; + -webkit-transform: none; + transform: none; + margin-right: 0.25rem; +} + +/* Corner Icon */ +i.icons .corner.icon { + top: auto; + left: auto; + right: 0; + bottom: 0; + -webkit-transform: none; + transform: none; + font-size: 0.45em; + text-shadow: -1px -1px 0 #FFFFFF, 1px -1px 0 #FFFFFF, -1px 1px 0 #FFFFFF, 1px 1px 0 #FFFFFF; +} +i.icons .top.right.corner.icon { + top: 0; + left: auto; + right: 0; + bottom: auto; +} +i.icons .top.left.corner.icon { + top: 0; + left: 0; + right: auto; + bottom: auto; +} +i.icons .bottom.left.corner.icon { + top: auto; + left: 0; + right: auto; + bottom: 0; +} +i.icons .bottom.right.corner.icon { + top: auto; + left: auto; + right: 0; + bottom: 0; +} +i.icons .inverted.corner.icon { + text-shadow: -1px -1px 0 #1B1C1D, 1px -1px 0 #1B1C1D, -1px 1px 0 #1B1C1D, 1px 1px 0 #1B1C1D; +} +/* + * Font Awesome 5.0.8 by @fontawesome - http://fontawesome.io - @fontawesome + * License - https://fontawesome.com/license (Icons: CC BY 4.0 License, Fonts: SIL OFL 1.1 License, CSS: MIT License) + */ + + +/******************************* + +Semantic-UI integration of font-awesome : + +///class names are separated +i.icon.circle => i.icon.circle +i.icon.circle-o => i.icon.circle.outline + +//abbreviation are replaced by full letters: +i.icon.ellipsis-h => i.icon.ellipsis.horizontal +i.icon.ellipsis-v => i.icon.ellipsis.vertical +.alpha => .i.icon.alphabet +.asc => .i.icon.ascending +.desc => .i.icon.descending +.alt =>.alternate + +ASCII order is conserved for easier maintenance. + +Icons that only have one style 'outline', 'square' etc do not require this class +for instance `lemon icon` not `lemon outline icon` since there is only one lemon + +*******************************/ + + + +/******************************* + Icons +*******************************/ + + +/* Deprecated *In/Out Naming Conflict) */ +i.icon.linkedin.in:before { + content: "\f0e1"; +} +i.icon.zoom.in:before { + content: "\f00e"; +} +i.icon.zoom.out:before { + content: "\f010"; +} +i.icon.sign.in:before { + content: "\f2f6"; +} +i.icon.in.cart:before { + content: "\f218"; +} +i.icon.log.out:before { + content: "\f2f5"; +} +i.icon.sign.out:before { + content: "\f2f5"; +} + +/* Icons */ +i.icon.\35 00px:before { + content: "\f26e"; +} +i.icon.accessible.icon:before { + content: "\f368"; +} +i.icon.accusoft:before { + content: "\f369"; +} +i.icon.address.book:before { + content: "\f2b9"; +} +i.icon.address.card:before { + content: "\f2bb"; +} +i.icon.adjust:before { + content: "\f042"; +} +i.icon.adn:before { + content: "\f170"; +} +i.icon.adversal:before { + content: "\f36a"; +} +i.icon.affiliatetheme:before { + content: "\f36b"; +} +i.icon.algolia:before { + content: "\f36c"; +} +i.icon.align.center:before { + content: "\f037"; +} +i.icon.align.justify:before { + content: "\f039"; +} +i.icon.align.left:before { + content: "\f036"; +} +i.icon.align.right:before { + content: "\f038"; +} +i.icon.amazon:before { + content: "\f270"; +} +i.icon.amazon.pay:before { + content: "\f42c"; +} +i.icon.ambulance:before { + content: "\f0f9"; +} +i.icon.american.sign.language.interpreting:before { + content: "\f2a3"; +} +i.icon.amilia:before { + content: "\f36d"; +} +i.icon.anchor:before { + content: "\f13d"; +} +i.icon.android:before { + content: "\f17b"; +} +i.icon.angellist:before { + content: "\f209"; +} +i.icon.angle.double.down:before { + content: "\f103"; +} +i.icon.angle.double.left:before { + content: "\f100"; +} +i.icon.angle.double.right:before { + content: "\f101"; +} +i.icon.angle.double.up:before { + content: "\f102"; +} +i.icon.angle.down:before { + content: "\f107"; +} +i.icon.angle.left:before { + content: "\f104"; +} +i.icon.angle.right:before { + content: "\f105"; +} +i.icon.angle.up:before { + content: "\f106"; +} +i.icon.angrycreative:before { + content: "\f36e"; +} +i.icon.angular:before { + content: "\f420"; +} +i.icon.app.store:before { + content: "\f36f"; +} +i.icon.app.store.ios:before { + content: "\f370"; +} +i.icon.apper:before { + content: "\f371"; +} +i.icon.apple:before { + content: "\f179"; +} +i.icon.apple.pay:before { + content: "\f415"; +} +i.icon.archive:before { + content: "\f187"; +} +i.icon.arrow.alternate.circle.down:before { + content: "\f358"; +} +i.icon.arrow.alternate.circle.left:before { + content: "\f359"; +} +i.icon.arrow.alternate.circle.right:before { + content: "\f35a"; +} +i.icon.arrow.alternate.circle.up:before { + content: "\f35b"; +} +i.icon.arrow.circle.down:before { + content: "\f0ab"; +} +i.icon.arrow.circle.left:before { + content: "\f0a8"; +} +i.icon.arrow.circle.right:before { + content: "\f0a9"; +} +i.icon.arrow.circle.up:before { + content: "\f0aa"; +} +i.icon.arrow.down:before { + content: "\f063"; +} +i.icon.arrow.left:before { + content: "\f060"; +} +i.icon.arrow.right:before { + content: "\f061"; +} +i.icon.arrow.up:before { + content: "\f062"; +} +i.icon.arrows.alternate:before { + content: "\f0b2"; +} +i.icon.arrows.alternate.horizontal:before { + content: "\f337"; +} +i.icon.arrows.alternate.vertical:before { + content: "\f338"; +} +i.icon.assistive.listening.systems:before { + content: "\f2a2"; +} +i.icon.asterisk:before { + content: "\f069"; +} +i.icon.asymmetrik:before { + content: "\f372"; +} +i.icon.at:before { + content: "\f1fa"; +} +i.icon.audible:before { + content: "\f373"; +} +i.icon.audio.description:before { + content: "\f29e"; +} +i.icon.autoprefixer:before { + content: "\f41c"; +} +i.icon.avianex:before { + content: "\f374"; +} +i.icon.aviato:before { + content: "\f421"; +} +i.icon.aws:before { + content: "\f375"; +} +i.icon.backward:before { + content: "\f04a"; +} +i.icon.balance.scale:before { + content: "\f24e"; +} +i.icon.ban:before { + content: "\f05e"; +} +i.icon.band.aid:before { + content: "\f462"; +} +i.icon.bandcamp:before { + content: "\f2d5"; +} +i.icon.barcode:before { + content: "\f02a"; +} +i.icon.bars:before { + content: "\f0c9"; +} +i.icon.baseball.ball:before { + content: "\f433"; +} +i.icon.basketball.ball:before { + content: "\f434"; +} +i.icon.bath:before { + content: "\f2cd"; +} +i.icon.battery.empty:before { + content: "\f244"; +} +i.icon.battery.full:before { + content: "\f240"; +} +i.icon.battery.half:before { + content: "\f242"; +} +i.icon.battery.quarter:before { + content: "\f243"; +} +i.icon.battery.three.quarters:before { + content: "\f241"; +} +i.icon.bed:before { + content: "\f236"; +} +i.icon.beer:before { + content: "\f0fc"; +} +i.icon.behance:before { + content: "\f1b4"; +} +i.icon.behance.square:before { + content: "\f1b5"; +} +i.icon.bell:before { + content: "\f0f3"; +} +i.icon.bell.slash:before { + content: "\f1f6"; +} +i.icon.bicycle:before { + content: "\f206"; +} +i.icon.bimobject:before { + content: "\f378"; +} +i.icon.binoculars:before { + content: "\f1e5"; +} +i.icon.birthday.cake:before { + content: "\f1fd"; +} +i.icon.bitbucket:before { + content: "\f171"; +} +i.icon.bitcoin:before { + content: "\f379"; +} +i.icon.bity:before { + content: "\f37a"; +} +i.icon.black.tie:before { + content: "\f27e"; +} +i.icon.blackberry:before { + content: "\f37b"; +} +i.icon.blind:before { + content: "\f29d"; +} +i.icon.blogger:before { + content: "\f37c"; +} +i.icon.blogger.b:before { + content: "\f37d"; +} +i.icon.bluetooth:before { + content: "\f293"; +} +i.icon.bluetooth.b:before { + content: "\f294"; +} +i.icon.bold:before { + content: "\f032"; +} +i.icon.bolt:before { + content: "\f0e7"; +} +i.icon.bomb:before { + content: "\f1e2"; +} +i.icon.book:before { + content: "\f02d"; +} +i.icon.bookmark:before { + content: "\f02e"; +} +i.icon.bowling.ball:before { + content: "\f436"; +} +i.icon.box:before { + content: "\f466"; +} +i.icon.boxes:before { + content: "\f468"; +} +i.icon.braille:before { + content: "\f2a1"; +} +i.icon.briefcase:before { + content: "\f0b1"; +} +i.icon.btc:before { + content: "\f15a"; +} +i.icon.bug:before { + content: "\f188"; +} +i.icon.building:before { + content: "\f1ad"; +} +i.icon.bullhorn:before { + content: "\f0a1"; +} +i.icon.bullseye:before { + content: "\f140"; +} +i.icon.buromobelexperte:before { + content: "\f37f"; +} +i.icon.bus:before { + content: "\f207"; +} +i.icon.buysellads:before { + content: "\f20d"; +} +i.icon.calculator:before { + content: "\f1ec"; +} +i.icon.calendar:before { + content: "\f133"; +} +i.icon.calendar.alternate:before { + content: "\f073"; +} +i.icon.calendar.check:before { + content: "\f274"; +} +i.icon.calendar.minus:before { + content: "\f272"; +} +i.icon.calendar.plus:before { + content: "\f271"; +} +i.icon.calendar.times:before { + content: "\f273"; +} +i.icon.camera:before { + content: "\f030"; +} +i.icon.camera.retro:before { + content: "\f083"; +} +i.icon.car:before { + content: "\f1b9"; +} +i.icon.caret.down:before { + content: "\f0d7"; +} +i.icon.caret.left:before { + content: "\f0d9"; +} +i.icon.caret.right:before { + content: "\f0da"; +} +i.icon.caret.square.down:before { + content: "\f150"; +} +i.icon.caret.square.left:before { + content: "\f191"; +} +i.icon.caret.square.right:before { + content: "\f152"; +} +i.icon.caret.square.up:before { + content: "\f151"; +} +i.icon.caret.up:before { + content: "\f0d8"; +} +i.icon.cart.arrow.down:before { + content: "\f218"; +} +i.icon.cart.plus:before { + content: "\f217"; +} +i.icon.cc.amazon.pay:before { + content: "\f42d"; +} +i.icon.cc.amex:before { + content: "\f1f3"; +} +i.icon.cc.apple.pay:before { + content: "\f416"; +} +i.icon.cc.diners.club:before { + content: "\f24c"; +} +i.icon.cc.discover:before { + content: "\f1f2"; +} +i.icon.cc.jcb:before { + content: "\f24b"; +} +i.icon.cc.mastercard:before { + content: "\f1f1"; +} +i.icon.cc.paypal:before { + content: "\f1f4"; +} +i.icon.cc.stripe:before { + content: "\f1f5"; +} +i.icon.cc.visa:before { + content: "\f1f0"; +} +i.icon.centercode:before { + content: "\f380"; +} +i.icon.certificate:before { + content: "\f0a3"; +} +i.icon.chart.area:before { + content: "\f1fe"; +} +i.icon.chart.bar:before { + content: "\f080"; +} +i.icon.chart.line:before { + content: "\f201"; +} +i.icon.chart.pie:before { + content: "\f200"; +} +i.icon.check:before { + content: "\f00c"; +} +i.icon.check.circle:before { + content: "\f058"; +} +i.icon.check.square:before { + content: "\f14a"; +} +i.icon.chess:before { + content: "\f439"; +} +i.icon.chess.bishop:before { + content: "\f43a"; +} +i.icon.chess.board:before { + content: "\f43c"; +} +i.icon.chess.king:before { + content: "\f43f"; +} +i.icon.chess.knight:before { + content: "\f441"; +} +i.icon.chess.pawn:before { + content: "\f443"; +} +i.icon.chess.queen:before { + content: "\f445"; +} +i.icon.chess.rook:before { + content: "\f447"; +} +i.icon.chevron.circle.down:before { + content: "\f13a"; +} +i.icon.chevron.circle.left:before { + content: "\f137"; +} +i.icon.chevron.circle.right:before { + content: "\f138"; +} +i.icon.chevron.circle.up:before { + content: "\f139"; +} +i.icon.chevron.down:before { + content: "\f078"; +} +i.icon.chevron.left:before { + content: "\f053"; +} +i.icon.chevron.right:before { + content: "\f054"; +} +i.icon.chevron.up:before { + content: "\f077"; +} +i.icon.child:before { + content: "\f1ae"; +} +i.icon.chrome:before { + content: "\f268"; +} +i.icon.circle:before { + content: "\f111"; +} +i.icon.circle.notch:before { + content: "\f1ce"; +} +i.icon.clipboard:before { + content: "\f328"; +} +i.icon.clipboard.check:before { + content: "\f46c"; +} +i.icon.clipboard.list:before { + content: "\f46d"; +} +i.icon.clock:before { + content: "\f017"; +} +i.icon.clone:before { + content: "\f24d"; +} +i.icon.closed.captioning:before { + content: "\f20a"; +} +i.icon.cloud:before { + content: "\f0c2"; +} +i.icon.cloudscale:before { + content: "\f383"; +} +i.icon.cloudsmith:before { + content: "\f384"; +} +i.icon.cloudversify:before { + content: "\f385"; +} +i.icon.code:before { + content: "\f121"; +} +i.icon.code.branch:before { + content: "\f126"; +} +i.icon.codepen:before { + content: "\f1cb"; +} +i.icon.codiepie:before { + content: "\f284"; +} +i.icon.coffee:before { + content: "\f0f4"; +} +i.icon.cog:before { + content: "\f013"; +} +i.icon.cogs:before { + content: "\f085"; +} +i.icon.columns:before { + content: "\f0db"; +} +i.icon.comment:before { + content: "\f075"; +} +i.icon.comment.alternate:before { + content: "\f27a"; +} +i.icon.comments:before { + content: "\f086"; +} +i.icon.compass:before { + content: "\f14e"; +} +i.icon.compress:before { + content: "\f066"; +} +i.icon.connectdevelop:before { + content: "\f20e"; +} +i.icon.contao:before { + content: "\f26d"; +} +i.icon.copy:before { + content: "\f0c5"; +} +i.icon.copyright:before { + content: "\f1f9"; +} +i.icon.cpanel:before { + content: "\f388"; +} +i.icon.creative.commons:before { + content: "\f25e"; +} +i.icon.credit.card:before { + content: "\f09d"; +} +i.icon.crop:before { + content: "\f125"; +} +i.icon.crosshairs:before { + content: "\f05b"; +} +i.icon.css3:before { + content: "\f13c"; +} +i.icon.css3.alternate:before { + content: "\f38b"; +} +i.icon.cube:before { + content: "\f1b2"; +} +i.icon.cubes:before { + content: "\f1b3"; +} +i.icon.cut:before { + content: "\f0c4"; +} +i.icon.cuttlefish:before { + content: "\f38c"; +} +i.icon.d.and.d:before { + content: "\f38d"; +} +i.icon.dashcube:before { + content: "\f210"; +} +i.icon.database:before { + content: "\f1c0"; +} +i.icon.deaf:before { + content: "\f2a4"; +} +i.icon.delicious:before { + content: "\f1a5"; +} +i.icon.deploydog:before { + content: "\f38e"; +} +i.icon.deskpro:before { + content: "\f38f"; +} +i.icon.desktop:before { + content: "\f108"; +} +i.icon.deviantart:before { + content: "\f1bd"; +} +i.icon.digg:before { + content: "\f1a6"; +} +i.icon.digital.ocean:before { + content: "\f391"; +} +i.icon.discord:before { + content: "\f392"; +} +i.icon.discourse:before { + content: "\f393"; +} +i.icon.dna:before { + content: "\f471"; +} +i.icon.dochub:before { + content: "\f394"; +} +i.icon.docker:before { + content: "\f395"; +} +i.icon.dollar.sign:before { + content: "\f155"; +} +i.icon.dolly:before { + content: "\f472"; +} +i.icon.dolly.flatbed:before { + content: "\f474"; +} +i.icon.dot.circle:before { + content: "\f192"; +} +i.icon.download:before { + content: "\f019"; +} +i.icon.draft2digital:before { + content: "\f396"; +} +i.icon.dribbble:before { + content: "\f17d"; +} +i.icon.dribbble.square:before { + content: "\f397"; +} +i.icon.dropbox:before { + content: "\f16b"; +} +i.icon.drupal:before { + content: "\f1a9"; +} +i.icon.dyalog:before { + content: "\f399"; +} +i.icon.earlybirds:before { + content: "\f39a"; +} +i.icon.edge:before { + content: "\f282"; +} +i.icon.edit:before { + content: "\f044"; +} +i.icon.eject:before { + content: "\f052"; +} +i.icon.elementor:before { + content: "\f430"; +} +i.icon.ellipsis.horizontal:before { + content: "\f141"; +} +i.icon.ellipsis.vertical:before { + content: "\f142"; +} +i.icon.ember:before { + content: "\f423"; +} +i.icon.empire:before { + content: "\f1d1"; +} +i.icon.envelope:before { + content: "\f0e0"; +} +i.icon.envelope.open:before { + content: "\f2b6"; +} +i.icon.envelope.square:before { + content: "\f199"; +} +i.icon.envira:before { + content: "\f299"; +} +i.icon.eraser:before { + content: "\f12d"; +} +i.icon.erlang:before { + content: "\f39d"; +} +i.icon.ethereum:before { + content: "\f42e"; +} +i.icon.etsy:before { + content: "\f2d7"; +} +i.icon.euro.sign:before { + content: "\f153"; +} +i.icon.exchange.alternate:before { + content: "\f362"; +} +i.icon.exclamation:before { + content: "\f12a"; +} +i.icon.exclamation.circle:before { + content: "\f06a"; +} +i.icon.exclamation.triangle:before { + content: "\f071"; +} +i.icon.expand:before { + content: "\f065"; +} +i.icon.expand.arrows.alternate:before { + content: "\f31e"; +} +i.icon.expeditedssl:before { + content: "\f23e"; +} +i.icon.external.alternate:before { + content: "\f35d"; +} +i.icon.external.square.alternate:before { + content: "\f360"; +} +i.icon.eye:before { + content: "\f06e"; +} +i.icon.eye.dropper:before { + content: "\f1fb"; +} +i.icon.eye.slash:before { + content: "\f070"; +} +i.icon.facebook:before { + content: "\f09a"; +} +i.icon.facebook.f:before { + content: "\f39e"; +} +i.icon.facebook.messenger:before { + content: "\f39f"; +} +i.icon.facebook.square:before { + content: "\f082"; +} +i.icon.fast.backward:before { + content: "\f049"; +} +i.icon.fast.forward:before { + content: "\f050"; +} +i.icon.fax:before { + content: "\f1ac"; +} +i.icon.female:before { + content: "\f182"; +} +i.icon.fighter.jet:before { + content: "\f0fb"; +} +i.icon.file:before { + content: "\f15b"; +} +i.icon.file.alternate:before { + content: "\f15c"; +} +i.icon.file.archive:before { + content: "\f1c6"; +} +i.icon.file.audio:before { + content: "\f1c7"; +} +i.icon.file.code:before { + content: "\f1c9"; +} +i.icon.file.excel:before { + content: "\f1c3"; +} +i.icon.file.image:before { + content: "\f1c5"; +} +i.icon.file.pdf:before { + content: "\f1c1"; +} +i.icon.file.powerpoint:before { + content: "\f1c4"; +} +i.icon.file.video:before { + content: "\f1c8"; +} +i.icon.file.word:before { + content: "\f1c2"; +} +i.icon.film:before { + content: "\f008"; +} +i.icon.filter:before { + content: "\f0b0"; +} +i.icon.fire:before { + content: "\f06d"; +} +i.icon.fire.extinguisher:before { + content: "\f134"; +} +i.icon.firefox:before { + content: "\f269"; +} +i.icon.first.aid:before { + content: "\f479"; +} +i.icon.first.order:before { + content: "\f2b0"; +} +i.icon.firstdraft:before { + content: "\f3a1"; +} +i.icon.flag:before { + content: "\f024"; +} +i.icon.flag.checkered:before { + content: "\f11e"; +} +i.icon.flask:before { + content: "\f0c3"; +} +i.icon.flickr:before { + content: "\f16e"; +} +i.icon.flipboard:before { + content: "\f44d"; +} +i.icon.fly:before { + content: "\f417"; +} +i.icon.folder:before { + content: "\f07b"; +} +i.icon.folder.open:before { + content: "\f07c"; +} +i.icon.font:before { + content: "\f031"; +} +i.icon.font.awesome:before { + content: "\f2b4"; +} +i.icon.font.awesome.alternate:before { + content: "\f35c"; +} +i.icon.font.awesome.flag:before { + content: "\f425"; +} +i.icon.fonticons:before { + content: "\f280"; +} +i.icon.fonticons.fi:before { + content: "\f3a2"; +} +i.icon.football.ball:before { + content: "\f44e"; +} +i.icon.fort.awesome:before { + content: "\f286"; +} +i.icon.fort.awesome.alternate:before { + content: "\f3a3"; +} +i.icon.forumbee:before { + content: "\f211"; +} +i.icon.forward:before { + content: "\f04e"; +} +i.icon.foursquare:before { + content: "\f180"; +} +i.icon.free.code.camp:before { + content: "\f2c5"; +} +i.icon.freebsd:before { + content: "\f3a4"; +} +i.icon.frown:before { + content: "\f119"; +} +i.icon.futbol:before { + content: "\f1e3"; +} +i.icon.gamepad:before { + content: "\f11b"; +} +i.icon.gavel:before { + content: "\f0e3"; +} +i.icon.gem:before { + content: "\f3a5"; +} +i.icon.genderless:before { + content: "\f22d"; +} +i.icon.get.pocket:before { + content: "\f265"; +} +i.icon.gg:before { + content: "\f260"; +} +i.icon.gg.circle:before { + content: "\f261"; +} +i.icon.gift:before { + content: "\f06b"; +} +i.icon.git:before { + content: "\f1d3"; +} +i.icon.git.square:before { + content: "\f1d2"; +} +i.icon.github:before { + content: "\f09b"; +} +i.icon.github.alternate:before { + content: "\f113"; +} +i.icon.github.square:before { + content: "\f092"; +} +i.icon.gitkraken:before { + content: "\f3a6"; +} +i.icon.gitlab:before { + content: "\f296"; +} +i.icon.gitter:before { + content: "\f426"; +} +i.icon.glass.martini:before { + content: "\f000"; +} +i.icon.glide:before { + content: "\f2a5"; +} +i.icon.glide.g:before { + content: "\f2a6"; +} +i.icon.globe:before { + content: "\f0ac"; +} +i.icon.gofore:before { + content: "\f3a7"; +} +i.icon.golf.ball:before { + content: "\f450"; +} +i.icon.goodreads:before { + content: "\f3a8"; +} +i.icon.goodreads.g:before { + content: "\f3a9"; +} +i.icon.google:before { + content: "\f1a0"; +} +i.icon.google.drive:before { + content: "\f3aa"; +} +i.icon.google.play:before { + content: "\f3ab"; +} +i.icon.google.plus:before { + content: "\f2b3"; +} +i.icon.google.plus.g:before { + content: "\f0d5"; +} +i.icon.google.plus.square:before { + content: "\f0d4"; +} +i.icon.google.wallet:before { + content: "\f1ee"; +} +i.icon.graduation.cap:before { + content: "\f19d"; +} +i.icon.gratipay:before { + content: "\f184"; +} +i.icon.grav:before { + content: "\f2d6"; +} +i.icon.gripfire:before { + content: "\f3ac"; +} +i.icon.grunt:before { + content: "\f3ad"; +} +i.icon.gulp:before { + content: "\f3ae"; +} +i.icon.h.square:before { + content: "\f0fd"; +} +i.icon.hacker.news:before { + content: "\f1d4"; +} +i.icon.hacker.news.square:before { + content: "\f3af"; +} +i.icon.hand.lizard:before { + content: "\f258"; +} +i.icon.hand.paper:before { + content: "\f256"; +} +i.icon.hand.peace:before { + content: "\f25b"; +} +i.icon.hand.point.down:before { + content: "\f0a7"; +} +i.icon.hand.point.left:before { + content: "\f0a5"; +} +i.icon.hand.point.right:before { + content: "\f0a4"; +} +i.icon.hand.point.up:before { + content: "\f0a6"; +} +i.icon.hand.pointer:before { + content: "\f25a"; +} +i.icon.hand.rock:before { + content: "\f255"; +} +i.icon.hand.scissors:before { + content: "\f257"; +} +i.icon.hand.spock:before { + content: "\f259"; +} +i.icon.handshake:before { + content: "\f2b5"; +} +i.icon.hashtag:before { + content: "\f292"; +} +i.icon.hdd:before { + content: "\f0a0"; +} +i.icon.heading:before { + content: "\f1dc"; +} +i.icon.headphones:before { + content: "\f025"; +} +i.icon.heart:before { + content: "\f004"; +} +i.icon.heartbeat:before { + content: "\f21e"; +} +i.icon.hips:before { + content: "\f452"; +} +i.icon.hire.a.helper:before { + content: "\f3b0"; +} +i.icon.history:before { + content: "\f1da"; +} +i.icon.hockey.puck:before { + content: "\f453"; +} +i.icon.home:before { + content: "\f015"; +} +i.icon.hooli:before { + content: "\f427"; +} +i.icon.hospital:before { + content: "\f0f8"; +} +i.icon.hospital.symbol:before { + content: "\f47e"; +} +i.icon.hotjar:before { + content: "\f3b1"; +} +i.icon.hourglass:before { + content: "\f254"; +} +i.icon.hourglass.end:before { + content: "\f253"; +} +i.icon.hourglass.half:before { + content: "\f252"; +} +i.icon.hourglass.start:before { + content: "\f251"; +} +i.icon.houzz:before { + content: "\f27c"; +} +i.icon.html5:before { + content: "\f13b"; +} +i.icon.hubspot:before { + content: "\f3b2"; +} +i.icon.i.cursor:before { + content: "\f246"; +} +i.icon.id.badge:before { + content: "\f2c1"; +} +i.icon.id.card:before { + content: "\f2c2"; +} +i.icon.image:before { + content: "\f03e"; +} +i.icon.images:before { + content: "\f302"; +} +i.icon.imdb:before { + content: "\f2d8"; +} +i.icon.inbox:before { + content: "\f01c"; +} +i.icon.indent:before { + content: "\f03c"; +} +i.icon.industry:before { + content: "\f275"; +} +i.icon.info:before { + content: "\f129"; +} +i.icon.info.circle:before { + content: "\f05a"; +} +i.icon.instagram:before { + content: "\f16d"; +} +i.icon.internet.explorer:before { + content: "\f26b"; +} +i.icon.ioxhost:before { + content: "\f208"; +} +i.icon.italic:before { + content: "\f033"; +} +i.icon.itunes:before { + content: "\f3b4"; +} +i.icon.itunes.note:before { + content: "\f3b5"; +} +i.icon.jenkins:before { + content: "\f3b6"; +} +i.icon.joget:before { + content: "\f3b7"; +} +i.icon.joomla:before { + content: "\f1aa"; +} +i.icon.js:before { + content: "\f3b8"; +} +i.icon.js.square:before { + content: "\f3b9"; +} +i.icon.jsfiddle:before { + content: "\f1cc"; +} +i.icon.key:before { + content: "\f084"; +} +i.icon.keyboard:before { + content: "\f11c"; +} +i.icon.keycdn:before { + content: "\f3ba"; +} +i.icon.kickstarter:before { + content: "\f3bb"; +} +i.icon.kickstarter.k:before { + content: "\f3bc"; +} +i.icon.korvue:before { + content: "\f42f"; +} +i.icon.language:before { + content: "\f1ab"; +} +i.icon.laptop:before { + content: "\f109"; +} +i.icon.laravel:before { + content: "\f3bd"; +} +i.icon.lastfm:before { + content: "\f202"; +} +i.icon.lastfm.square:before { + content: "\f203"; +} +i.icon.leaf:before { + content: "\f06c"; +} +i.icon.leanpub:before { + content: "\f212"; +} +i.icon.lemon:before { + content: "\f094"; +} +i.icon.less:before { + content: "\f41d"; +} +i.icon.level.down.alternate:before { + content: "\f3be"; +} +i.icon.level.up.alternate:before { + content: "\f3bf"; +} +i.icon.life.ring:before { + content: "\f1cd"; +} +i.icon.lightbulb:before { + content: "\f0eb"; +} +i.icon.linechat:before { + content: "\f3c0"; +} +i.icon.linkify:before { + content: "\f0c1"; +} +i.icon.linkedin:before { + content: "\f08c"; +} +i.icon.linkedin.alt:before { + content: "\f0e1"; +} +i.icon.linode:before { + content: "\f2b8"; +} +i.icon.linux:before { + content: "\f17c"; +} +i.icon.lira.sign:before { + content: "\f195"; +} +i.icon.list:before { + content: "\f03a"; +} +i.icon.list.alternate:before { + content: "\f022"; +} +i.icon.list.ol:before { + content: "\f0cb"; +} +i.icon.list.ul:before { + content: "\f0ca"; +} +i.icon.location.arrow:before { + content: "\f124"; +} +i.icon.lock:before { + content: "\f023"; +} +i.icon.lock.open:before { + content: "\f3c1"; +} +i.icon.long.arrow.alternate.down:before { + content: "\f309"; +} +i.icon.long.arrow.alternate.left:before { + content: "\f30a"; +} +i.icon.long.arrow.alternate.right:before { + content: "\f30b"; +} +i.icon.long.arrow.alternate.up:before { + content: "\f30c"; +} +i.icon.low.vision:before { + content: "\f2a8"; +} +i.icon.lyft:before { + content: "\f3c3"; +} +i.icon.magento:before { + content: "\f3c4"; +} +i.icon.magic:before { + content: "\f0d0"; +} +i.icon.magnet:before { + content: "\f076"; +} +i.icon.male:before { + content: "\f183"; +} +i.icon.map:before { + content: "\f279"; +} +i.icon.map.marker:before { + content: "\f041"; +} +i.icon.map.marker.alternate:before { + content: "\f3c5"; +} +i.icon.map.pin:before { + content: "\f276"; +} +i.icon.map.signs:before { + content: "\f277"; +} +i.icon.mars:before { + content: "\f222"; +} +i.icon.mars.double:before { + content: "\f227"; +} +i.icon.mars.stroke:before { + content: "\f229"; +} +i.icon.mars.stroke.horizontal:before { + content: "\f22b"; +} +i.icon.mars.stroke.vertical:before { + content: "\f22a"; +} +i.icon.maxcdn:before { + content: "\f136"; +} +i.icon.medapps:before { + content: "\f3c6"; +} +i.icon.medium:before { + content: "\f23a"; +} +i.icon.medium.m:before { + content: "\f3c7"; +} +i.icon.medkit:before { + content: "\f0fa"; +} +i.icon.medrt:before { + content: "\f3c8"; +} +i.icon.meetup:before { + content: "\f2e0"; +} +i.icon.meh:before { + content: "\f11a"; +} +i.icon.mercury:before { + content: "\f223"; +} +i.icon.microchip:before { + content: "\f2db"; +} +i.icon.microphone:before { + content: "\f130"; +} +i.icon.microphone.slash:before { + content: "\f131"; +} +i.icon.microsoft:before { + content: "\f3ca"; +} +i.icon.minus:before { + content: "\f068"; +} +i.icon.minus.circle:before { + content: "\f056"; +} +i.icon.minus.square:before { + content: "\f146"; +} +i.icon.mix:before { + content: "\f3cb"; +} +i.icon.mixcloud:before { + content: "\f289"; +} +i.icon.mizuni:before { + content: "\f3cc"; +} +i.icon.mobile:before { + content: "\f10b"; +} +i.icon.mobile.alternate:before { + content: "\f3cd"; +} +i.icon.modx:before { + content: "\f285"; +} +i.icon.monero:before { + content: "\f3d0"; +} +i.icon.money.bill.alternate:before { + content: "\f3d1"; +} +i.icon.moon:before { + content: "\f186"; +} +i.icon.motorcycle:before { + content: "\f21c"; +} +i.icon.mouse.pointer:before { + content: "\f245"; +} +i.icon.music:before { + content: "\f001"; +} +i.icon.napster:before { + content: "\f3d2"; +} +i.icon.neuter:before { + content: "\f22c"; +} +i.icon.newspaper:before { + content: "\f1ea"; +} +i.icon.nintendo.switch:before { + content: "\f418"; +} +i.icon.node:before { + content: "\f419"; +} +i.icon.node.js:before { + content: "\f3d3"; +} +i.icon.npm:before { + content: "\f3d4"; +} +i.icon.ns8:before { + content: "\f3d5"; +} +i.icon.nutritionix:before { + content: "\f3d6"; +} +i.icon.object.group:before { + content: "\f247"; +} +i.icon.object.ungroup:before { + content: "\f248"; +} +i.icon.odnoklassniki:before { + content: "\f263"; +} +i.icon.odnoklassniki.square:before { + content: "\f264"; +} +i.icon.opencart:before { + content: "\f23d"; +} +i.icon.openid:before { + content: "\f19b"; +} +i.icon.opera:before { + content: "\f26a"; +} +i.icon.optin.monster:before { + content: "\f23c"; +} +i.icon.osi:before { + content: "\f41a"; +} +i.icon.outdent:before { + content: "\f03b"; +} +i.icon.page4:before { + content: "\f3d7"; +} +i.icon.pagelines:before { + content: "\f18c"; +} +i.icon.paint.brush:before { + content: "\f1fc"; +} +i.icon.palfed:before { + content: "\f3d8"; +} +i.icon.pallet:before { + content: "\f482"; +} +i.icon.paper.plane:before { + content: "\f1d8"; +} +i.icon.paperclip:before { + content: "\f0c6"; +} +i.icon.paragraph:before { + content: "\f1dd"; +} +i.icon.paste:before { + content: "\f0ea"; +} +i.icon.patreon:before { + content: "\f3d9"; +} +i.icon.pause:before { + content: "\f04c"; +} +i.icon.pause.circle:before { + content: "\f28b"; +} +i.icon.paw:before { + content: "\f1b0"; +} +i.icon.paypal:before { + content: "\f1ed"; +} +i.icon.pen.square:before { + content: "\f14b"; +} +i.icon.pencil.alternate:before { + content: "\f303"; +} +i.icon.percent:before { + content: "\f295"; +} +i.icon.periscope:before { + content: "\f3da"; +} +i.icon.phabricator:before { + content: "\f3db"; +} +i.icon.phoenix.framework:before { + content: "\f3dc"; +} +i.icon.phone:before { + content: "\f095"; +} +i.icon.phone.square:before { + content: "\f098"; +} +i.icon.phone.volume:before { + content: "\f2a0"; +} +i.icon.php:before { + content: "\f457"; +} +i.icon.pied.piper:before { + content: "\f2ae"; +} +i.icon.pied.piper.alternate:before { + content: "\f1a8"; +} +i.icon.pied.piper.pp:before { + content: "\f1a7"; +} +i.icon.pills:before { + content: "\f484"; +} +i.icon.pinterest:before { + content: "\f0d2"; +} +i.icon.pinterest.p:before { + content: "\f231"; +} +i.icon.pinterest.square:before { + content: "\f0d3"; +} +i.icon.plane:before { + content: "\f072"; +} +i.icon.play:before { + content: "\f04b"; +} +i.icon.play.circle:before { + content: "\f144"; +} +i.icon.playstation:before { + content: "\f3df"; +} +i.icon.plug:before { + content: "\f1e6"; +} +i.icon.plus:before { + content: "\f067"; +} +i.icon.plus.circle:before { + content: "\f055"; +} +i.icon.plus.square:before { + content: "\f0fe"; +} +i.icon.podcast:before { + content: "\f2ce"; +} +i.icon.pound.sign:before { + content: "\f154"; +} +i.icon.power.off:before { + content: "\f011"; +} +i.icon.print:before { + content: "\f02f"; +} +i.icon.product.hunt:before { + content: "\f288"; +} +i.icon.pushed:before { + content: "\f3e1"; +} +i.icon.puzzle.piece:before { + content: "\f12e"; +} +i.icon.python:before { + content: "\f3e2"; +} +i.icon.qq:before { + content: "\f1d6"; +} +i.icon.qrcode:before { + content: "\f029"; +} +i.icon.question:before { + content: "\f128"; +} +i.icon.question.circle:before { + content: "\f059"; +} +i.icon.quidditch:before { + content: "\f458"; +} +i.icon.quinscape:before { + content: "\f459"; +} +i.icon.quora:before { + content: "\f2c4"; +} +i.icon.quote.left:before { + content: "\f10d"; +} +i.icon.quote.right:before { + content: "\f10e"; +} +i.icon.random:before { + content: "\f074"; +} +i.icon.ravelry:before { + content: "\f2d9"; +} +i.icon.react:before { + content: "\f41b"; +} +i.icon.rebel:before { + content: "\f1d0"; +} +i.icon.recycle:before { + content: "\f1b8"; +} +i.icon.redriver:before { + content: "\f3e3"; +} +i.icon.reddit:before { + content: "\f1a1"; +} +i.icon.reddit.alien:before { + content: "\f281"; +} +i.icon.reddit.square:before { + content: "\f1a2"; +} +i.icon.redo:before { + content: "\f01e"; +} +i.icon.redo.alternate:before { + content: "\f2f9"; +} +i.icon.registered:before { + content: "\f25d"; +} +i.icon.rendact:before { + content: "\f3e4"; +} +i.icon.renren:before { + content: "\f18b"; +} +i.icon.reply:before { + content: "\f3e5"; +} +i.icon.reply.all:before { + content: "\f122"; +} +i.icon.replyd:before { + content: "\f3e6"; +} +i.icon.resolving:before { + content: "\f3e7"; +} +i.icon.retweet:before { + content: "\f079"; +} +i.icon.road:before { + content: "\f018"; +} +i.icon.rocket:before { + content: "\f135"; +} +i.icon.rocketchat:before { + content: "\f3e8"; +} +i.icon.rockrms:before { + content: "\f3e9"; +} +i.icon.rss:before { + content: "\f09e"; +} +i.icon.rss.square:before { + content: "\f143"; +} +i.icon.ruble.sign:before { + content: "\f158"; +} +i.icon.rupee.sign:before { + content: "\f156"; +} +i.icon.safari:before { + content: "\f267"; +} +i.icon.sass:before { + content: "\f41e"; +} +i.icon.save:before { + content: "\f0c7"; +} +i.icon.schlix:before { + content: "\f3ea"; +} +i.icon.scribd:before { + content: "\f28a"; +} +i.icon.search:before { + content: "\f002"; +} +i.icon.search.minus:before { + content: "\f010"; +} +i.icon.search.plus:before { + content: "\f00e"; +} +i.icon.searchengin:before { + content: "\f3eb"; +} +i.icon.sellcast:before { + content: "\f2da"; +} +i.icon.sellsy:before { + content: "\f213"; +} +i.icon.server:before { + content: "\f233"; +} +i.icon.servicestack:before { + content: "\f3ec"; +} +i.icon.share:before { + content: "\f064"; +} +i.icon.share.alternate:before { + content: "\f1e0"; +} +i.icon.share.alternate.square:before { + content: "\f1e1"; +} +i.icon.share.square:before { + content: "\f14d"; +} +i.icon.shekel.sign:before { + content: "\f20b"; +} +i.icon.shield.alternate:before { + content: "\f3ed"; +} +i.icon.ship:before { + content: "\f21a"; +} +i.icon.shipping.fast:before { + content: "\f48b"; +} +i.icon.shirtsinbulk:before { + content: "\f214"; +} +i.icon.shopping.bag:before { + content: "\f290"; +} +i.icon.shopping.basket:before { + content: "\f291"; +} +i.icon.shopping.cart:before { + content: "\f07a"; +} +i.icon.shower:before { + content: "\f2cc"; +} +i.icon.sign.language:before { + content: "\f2a7"; +} +i.icon.signal:before { + content: "\f012"; +} +i.icon.simplybuilt:before { + content: "\f215"; +} +i.icon.sistrix:before { + content: "\f3ee"; +} +i.icon.sitemap:before { + content: "\f0e8"; +} +i.icon.skyatlas:before { + content: "\f216"; +} +i.icon.skype:before { + content: "\f17e"; +} +i.icon.slack:before { + content: "\f198"; +} +i.icon.slack.hash:before { + content: "\f3ef"; +} +i.icon.sliders.horizontal:before { + content: "\f1de"; +} +i.icon.slideshare:before { + content: "\f1e7"; +} +i.icon.smile:before { + content: "\f118"; +} +i.icon.snapchat:before { + content: "\f2ab"; +} +i.icon.snapchat.ghost:before { + content: "\f2ac"; +} +i.icon.snapchat.square:before { + content: "\f2ad"; +} +i.icon.snowflake:before { + content: "\f2dc"; +} +i.icon.sort:before { + content: "\f0dc"; +} +i.icon.sort.alphabet.down:before { + content: "\f15d"; +} +i.icon.sort.alphabet.up:before { + content: "\f15e"; +} +i.icon.sort.amount.down:before { + content: "\f160"; +} +i.icon.sort.amount.up:before { + content: "\f161"; +} +i.icon.sort.down:before { + content: "\f0dd"; +} +i.icon.sort.numeric.down:before { + content: "\f162"; +} +i.icon.sort.numeric.up:before { + content: "\f163"; +} +i.icon.sort.up:before { + content: "\f0de"; +} +i.icon.soundcloud:before { + content: "\f1be"; +} +i.icon.space.shuttle:before { + content: "\f197"; +} +i.icon.speakap:before { + content: "\f3f3"; +} +i.icon.spinner:before { + content: "\f110"; +} +i.icon.spotify:before { + content: "\f1bc"; +} +i.icon.square:before { + content: "\f0c8"; +} +i.icon.square.full:before { + content: "\f45c"; +} +i.icon.stack.exchange:before { + content: "\f18d"; +} +i.icon.stack.overflow:before { + content: "\f16c"; +} +i.icon.star:before { + content: "\f005"; +} +i.icon.star.half:before { + content: "\f089"; +} +i.icon.staylinked:before { + content: "\f3f5"; +} +i.icon.steam:before { + content: "\f1b6"; +} +i.icon.steam.square:before { + content: "\f1b7"; +} +i.icon.steam.symbol:before { + content: "\f3f6"; +} +i.icon.step.backward:before { + content: "\f048"; +} +i.icon.step.forward:before { + content: "\f051"; +} +i.icon.stethoscope:before { + content: "\f0f1"; +} +i.icon.sticker.mule:before { + content: "\f3f7"; +} +i.icon.sticky.note:before { + content: "\f249"; +} +i.icon.stop:before { + content: "\f04d"; +} +i.icon.stop.circle:before { + content: "\f28d"; +} +i.icon.stopwatch:before { + content: "\f2f2"; +} +i.icon.strava:before { + content: "\f428"; +} +i.icon.street.view:before { + content: "\f21d"; +} +i.icon.strikethrough:before { + content: "\f0cc"; +} +i.icon.stripe:before { + content: "\f429"; +} +i.icon.stripe.s:before { + content: "\f42a"; +} +i.icon.studiovinari:before { + content: "\f3f8"; +} +i.icon.stumbleupon:before { + content: "\f1a4"; +} +i.icon.stumbleupon.circle:before { + content: "\f1a3"; +} +i.icon.subscript:before { + content: "\f12c"; +} +i.icon.subway:before { + content: "\f239"; +} +i.icon.suitcase:before { + content: "\f0f2"; +} +i.icon.sun:before { + content: "\f185"; +} +i.icon.superpowers:before { + content: "\f2dd"; +} +i.icon.superscript:before { + content: "\f12b"; +} +i.icon.supple:before { + content: "\f3f9"; +} +i.icon.sync:before { + content: "\f021"; +} +i.icon.sync.alternate:before { + content: "\f2f1"; +} +i.icon.syringe:before { + content: "\f48e"; +} +i.icon.table:before { + content: "\f0ce"; +} +i.icon.table.tennis:before { + content: "\f45d"; +} +i.icon.tablet:before { + content: "\f10a"; +} +i.icon.tablet.alternate:before { + content: "\f3fa"; +} +i.icon.tachometer.alternate:before { + content: "\f3fd"; +} +i.icon.tag:before { + content: "\f02b"; +} +i.icon.tags:before { + content: "\f02c"; +} +i.icon.tasks:before { + content: "\f0ae"; +} +i.icon.taxi:before { + content: "\f1ba"; +} +i.icon.telegram:before { + content: "\f2c6"; +} +i.icon.telegram.plane:before { + content: "\f3fe"; +} +i.icon.tencent.weibo:before { + content: "\f1d5"; +} +i.icon.terminal:before { + content: "\f120"; +} +i.icon.text.height:before { + content: "\f034"; +} +i.icon.text.width:before { + content: "\f035"; +} +i.icon.th:before { + content: "\f00a"; +} +i.icon.th.large:before { + content: "\f009"; +} +i.icon.th.list:before { + content: "\f00b"; +} +i.icon.themeisle:before { + content: "\f2b2"; +} +i.icon.thermometer:before { + content: "\f491"; +} +i.icon.thermometer.empty:before { + content: "\f2cb"; +} +i.icon.thermometer.full:before { + content: "\f2c7"; +} +i.icon.thermometer.half:before { + content: "\f2c9"; +} +i.icon.thermometer.quarter:before { + content: "\f2ca"; +} +i.icon.thermometer.three.quarters:before { + content: "\f2c8"; +} +i.icon.thumbs.down:before { + content: "\f165"; +} +i.icon.thumbs.up:before { + content: "\f164"; +} +i.icon.thumbtack:before { + content: "\f08d"; +} +i.icon.ticket.alternate:before { + content: "\f3ff"; +} +i.icon.times:before { + content: "\f00d"; +} +i.icon.times.circle:before { + content: "\f057"; +} +i.icon.tint:before { + content: "\f043"; +} +i.icon.toggle.off:before { + content: "\f204"; +} +i.icon.toggle.on:before { + content: "\f205"; +} +i.icon.trademark:before { + content: "\f25c"; +} +i.icon.train:before { + content: "\f238"; +} +i.icon.transgender:before { + content: "\f224"; +} +i.icon.transgender.alternate:before { + content: "\f225"; +} +i.icon.trash:before { + content: "\f1f8"; +} +i.icon.trash.alternate:before { + content: "\f2ed"; +} +i.icon.tree:before { + content: "\f1bb"; +} +i.icon.trello:before { + content: "\f181"; +} +i.icon.tripadvisor:before { + content: "\f262"; +} +i.icon.trophy:before { + content: "\f091"; +} +i.icon.truck:before { + content: "\f0d1"; +} +i.icon.tty:before { + content: "\f1e4"; +} +i.icon.tumblr:before { + content: "\f173"; +} +i.icon.tumblr.square:before { + content: "\f174"; +} +i.icon.tv:before { + content: "\f26c"; +} +i.icon.twitch:before { + content: "\f1e8"; +} +i.icon.twitter:before { + content: "\f099"; +} +i.icon.twitter.square:before { + content: "\f081"; +} +i.icon.typo3:before { + content: "\f42b"; +} +i.icon.uber:before { + content: "\f402"; +} +i.icon.uikit:before { + content: "\f403"; +} +i.icon.umbrella:before { + content: "\f0e9"; +} +i.icon.underline:before { + content: "\f0cd"; +} +i.icon.undo:before { + content: "\f0e2"; +} +i.icon.undo.alternate:before { + content: "\f2ea"; +} +i.icon.uniregistry:before { + content: "\f404"; +} +i.icon.universal.access:before { + content: "\f29a"; +} +i.icon.university:before { + content: "\f19c"; +} +i.icon.unlink:before { + content: "\f127"; +} +i.icon.unlock:before { + content: "\f09c"; +} +i.icon.unlock.alternate:before { + content: "\f13e"; +} +i.icon.untappd:before { + content: "\f405"; +} +i.icon.upload:before { + content: "\f093"; +} +i.icon.usb:before { + content: "\f287"; +} +i.icon.user:before { + content: "\f007"; +} +i.icon.user.circle:before { + content: "\f2bd"; +} +i.icon.user.md:before { + content: "\f0f0"; +} +i.icon.user.plus:before { + content: "\f234"; +} +i.icon.user.secret:before { + content: "\f21b"; +} +i.icon.user.times:before { + content: "\f235"; +} +i.icon.users:before { + content: "\f0c0"; +} +i.icon.ussunnah:before { + content: "\f407"; +} +i.icon.utensil.spoon:before { + content: "\f2e5"; +} +i.icon.utensils:before { + content: "\f2e7"; +} +i.icon.vaadin:before { + content: "\f408"; +} +i.icon.venus:before { + content: "\f221"; +} +i.icon.venus.double:before { + content: "\f226"; +} +i.icon.venus.mars:before { + content: "\f228"; +} +i.icon.viacoin:before { + content: "\f237"; +} +i.icon.viadeo:before { + content: "\f2a9"; +} +i.icon.viadeo.square:before { + content: "\f2aa"; +} +i.icon.viber:before { + content: "\f409"; +} +i.icon.video:before { + content: "\f03d"; +} +i.icon.vimeo:before { + content: "\f40a"; +} +i.icon.vimeo.square:before { + content: "\f194"; +} +i.icon.vimeo.v:before { + content: "\f27d"; +} +i.icon.vine:before { + content: "\f1ca"; +} +i.icon.vk:before { + content: "\f189"; +} +i.icon.vnv:before { + content: "\f40b"; +} +i.icon.volleyball.ball:before { + content: "\f45f"; +} +i.icon.volume.down:before { + content: "\f027"; +} +i.icon.volume.off:before { + content: "\f026"; +} +i.icon.volume.up:before { + content: "\f028"; +} +i.icon.vuejs:before { + content: "\f41f"; +} +i.icon.warehouse:before { + content: "\f494"; +} +i.icon.weibo:before { + content: "\f18a"; +} +i.icon.weight:before { + content: "\f496"; +} +i.icon.weixin:before { + content: "\f1d7"; +} +i.icon.whatsapp:before { + content: "\f232"; +} +i.icon.whatsapp.square:before { + content: "\f40c"; +} +i.icon.wheelchair:before { + content: "\f193"; +} +i.icon.whmcs:before { + content: "\f40d"; +} +i.icon.wifi:before { + content: "\f1eb"; +} +i.icon.wikipedia.w:before { + content: "\f266"; +} +i.icon.window.close:before { + content: "\f410"; +} +i.icon.window.maximize:before { + content: "\f2d0"; +} +i.icon.window.minimize:before { + content: "\f2d1"; +} +i.icon.window.restore:before { + content: "\f2d2"; +} +i.icon.windows:before { + content: "\f17a"; +} +i.icon.won.sign:before { + content: "\f159"; +} +i.icon.wordpress:before { + content: "\f19a"; +} +i.icon.wordpress.simple:before { + content: "\f411"; +} +i.icon.wpbeginner:before { + content: "\f297"; +} +i.icon.wpexplorer:before { + content: "\f2de"; +} +i.icon.wpforms:before { + content: "\f298"; +} +i.icon.wrench:before { + content: "\f0ad"; +} +i.icon.xbox:before { + content: "\f412"; +} +i.icon.xing:before { + content: "\f168"; +} +i.icon.xing.square:before { + content: "\f169"; +} +i.icon.y.combinator:before { + content: "\f23b"; +} +i.icon.yahoo:before { + content: "\f19e"; +} +i.icon.yandex:before { + content: "\f413"; +} +i.icon.yandex.international:before { + content: "\f414"; +} +i.icon.yelp:before { + content: "\f1e9"; +} +i.icon.yen.sign:before { + content: "\f157"; +} +i.icon.yoast:before { + content: "\f2b1"; +} +i.icon.youtube:before { + content: "\f167"; +} +i.icon.youtube.square:before { + content: "\f431"; +} + +/* Aliases */ +i.icon.chess.rock:before { + content: "\f447"; +} +i.icon.ordered.list:before { + content: "\f0cb"; +} +i.icon.unordered.list:before { + content: "\f0ca"; +} +i.icon.user.doctor:before { + content: "\f0f0"; +} +i.icon.shield:before { + content: "\f3ed"; +} +i.icon.puzzle:before { + content: "\f12e"; +} +i.icon.credit.card.amazon.pay:before { + content: "\f42d"; +} +i.icon.credit.card.american.express:before { + content: "\f1f3"; +} +i.icon.credit.card.diners.club:before { + content: "\f24c"; +} +i.icon.credit.card.discover:before { + content: "\f1f2"; +} +i.icon.credit.card.jcb:before { + content: "\f24b"; +} +i.icon.credit.card.mastercard:before { + content: "\f1f1"; +} +i.icon.credit.card.paypal:before { + content: "\f1f4"; +} +i.icon.credit.card.stripe:before { + content: "\f1f5"; +} +i.icon.credit.card.visa:before { + content: "\f1f0"; +} +i.icon.add.circle:before { + content: "\f055"; +} +i.icon.add.square:before { + content: "\f0fe"; +} +i.icon.add.to.calendar:before { + content: "\f271"; +} +i.icon.add.to.cart:before { + content: "\f217"; +} +i.icon.add.user:before { + content: "\f234"; +} +i.icon.add:before { + content: "\f067"; +} +i.icon.alarm.mute:before { + content: "\f1f6"; +} +i.icon.alarm:before { + content: "\f0f3"; +} +i.icon.ald:before { + content: "\f2a2"; +} +i.icon.als:before { + content: "\f2a2"; +} +i.icon.american.express.card:before { + content: "\f1f3"; +} +i.icon.american.express:before { + content: "\f1f3"; +} +i.icon.amex:before { + content: "\f1f3"; +} +i.icon.announcement:before { + content: "\f0a1"; +} +i.icon.area.chart:before { + content: "\f1fe"; +} +i.icon.area.graph:before { + content: "\f1fe"; +} +i.icon.arrow.down.cart:before { + content: "\f218"; +} +i.icon.asexual:before { + content: "\f22d"; +} +i.icon.asl.interpreting:before { + content: "\f2a3"; +} +i.icon.asl:before { + content: "\f2a3"; +} +i.icon.assistive.listening.devices:before { + content: "\f2a2"; +} +i.icon.attach:before { + content: "\f0c6"; +} +i.icon.attention:before { + content: "\f06a"; +} +i.icon.balance:before { + content: "\f24e"; +} +i.icon.bar:before { + content: "\f0fc"; +} +i.icon.bathtub:before { + content: "\f2cd"; +} +i.icon.battery.four:before { + content: "\f240"; +} +i.icon.battery.high:before { + content: "\f241"; +} +i.icon.battery.low:before { + content: "\f243"; +} +i.icon.battery.medium:before { + content: "\f242"; +} +i.icon.battery.one:before { + content: "\f243"; +} +i.icon.battery.three:before { + content: "\f241"; +} +i.icon.battery.two:before { + content: "\f242"; +} +i.icon.battery.zero:before { + content: "\f244"; +} +i.icon.birthday:before { + content: "\f1fd"; +} +i.icon.block.layout:before { + content: "\f009"; +} +i.icon.bluetooth.alternative:before { + content: "\f294"; +} +i.icon.broken.chain:before { + content: "\f127"; +} +i.icon.browser:before { + content: "\f022"; +} +i.icon.call.square:before { + content: "\f098"; +} +i.icon.call:before { + content: "\f095"; +} +i.icon.cancel:before { + content: "\f00d"; +} +i.icon.cart:before { + content: "\f07a"; +} +i.icon.cc:before { + content: "\f20a"; +} +i.icon.chain:before { + content: "\f0c1"; +} +i.icon.chat:before { + content: "\f075"; +} +i.icon.checked.calendar:before { + content: "\f274"; +} +i.icon.checkmark:before { + content: "\f00c"; +} +i.icon.circle.notched:before { + content: "\f1ce"; +} +i.icon.close:before { + content: "\f00d"; +} +i.icon.cny:before { + content: "\f157"; +} +i.icon.cocktail:before { + content: "\f000"; +} +i.icon.commenting:before { + content: "\f27a"; +} +i.icon.computer:before { + content: "\f108"; +} +i.icon.configure:before { + content: "\f0ad"; +} +i.icon.content:before { + content: "\f0c9"; +} +i.icon.deafness:before { + content: "\f2a4"; +} +i.icon.delete.calendar:before { + content: "\f273"; +} +i.icon.delete:before { + content: "\f00d"; +} +i.icon.detective:before { + content: "\f21b"; +} +i.icon.diners.club.card:before { + content: "\f24c"; +} +i.icon.diners.club:before { + content: "\f24c"; +} +i.icon.discover.card:before { + content: "\f1f2"; +} +i.icon.discover:before { + content: "\f1f2"; +} +i.icon.discussions:before { + content: "\f086"; +} +i.icon.doctor:before { + content: "\f0f0"; +} +i.icon.dollar:before { + content: "\f155"; +} +i.icon.dont:before { + content: "\f05e"; +} +i.icon.dribble:before { + content: "\f17d"; +} +i.icon.drivers.license:before { + content: "\f2c2"; +} +i.icon.dropdown:before { + content: "\f0d7"; +} +i.icon.eercast:before { + content: "\f2da"; +} +i.icon.emergency:before { + content: "\f0f9"; +} +i.icon.envira.gallery:before { + content: "\f299"; +} +i.icon.erase:before { + content: "\f12d"; +} +i.icon.eur:before { + content: "\f153"; +} +i.icon.euro:before { + content: "\f153"; +} +i.icon.eyedropper:before { + content: "\f1fb"; +} +i.icon.fa:before { + content: "\f2b4"; +} +i.icon.factory:before { + content: "\f275"; +} +i.icon.favorite:before { + content: "\f005"; +} +i.icon.feed:before { + content: "\f09e"; +} +i.icon.female.homosexual:before { + content: "\f226"; +} +i.icon.file.text:before { + content: "\f15c"; +} +i.icon.find:before { + content: "\f1e5"; +} +i.icon.first.aid:before { + content: "\f0fa"; +} +i.icon.five.hundred.pixels:before { + content: "\f26e"; +} +i.icon.fork:before { + content: "\f126"; +} +i.icon.game:before { + content: "\f11b"; +} +i.icon.gay:before { + content: "\f227"; +} +i.icon.gbp:before { + content: "\f154"; +} +i.icon.gittip:before { + content: "\f184"; +} +i.icon.google.plus.circle:before { + content: "\f2b3"; +} +i.icon.google.plus.official:before { + content: "\f2b3"; +} +i.icon.grab:before { + content: "\f255"; +} +i.icon.graduation:before { + content: "\f19d"; +} +i.icon.grid.layout:before { + content: "\f00a"; +} +i.icon.group:before { + content: "\f0c0"; +} +i.icon.h:before { + content: "\f0fd"; +} +i.icon.hand.victory:before { + content: "\f25b"; +} +i.icon.handicap:before { + content: "\f193"; +} +i.icon.hard.of.hearing:before { + content: "\f2a4"; +} +i.icon.header:before { + content: "\f1dc"; +} +i.icon.help.circle:before { + content: "\f059"; +} +i.icon.help:before { + content: "\f128"; +} +i.icon.heterosexual:before { + content: "\f228"; +} +i.icon.hide:before { + content: "\f070"; +} +i.icon.hotel:before { + content: "\f236"; +} +i.icon.hourglass.four:before { + content: "\f254"; +} +i.icon.hourglass.full:before { + content: "\f254"; +} +i.icon.hourglass.one:before { + content: "\f251"; +} +i.icon.hourglass.three:before { + content: "\f253"; +} +i.icon.hourglass.two:before { + content: "\f252"; +} +i.icon.idea:before { + content: "\f0eb"; +} +i.icon.ils:before { + content: "\f20b"; +} +i.icon.in-cart:before { + content: "\f218"; +} +i.icon.inr:before { + content: "\f156"; +} +i.icon.intergender:before { + content: "\f224"; +} +i.icon.intersex:before { + content: "\f224"; +} +i.icon.japan.credit.bureau.card:before { + content: "\f24b"; +} +i.icon.japan.credit.bureau:before { + content: "\f24b"; +} +i.icon.jcb:before { + content: "\f24b"; +} +i.icon.jpy:before { + content: "\f157"; +} +i.icon.krw:before { + content: "\f159"; +} +i.icon.lab:before { + content: "\f0c3"; +} +i.icon.law:before { + content: "\f24e"; +} +i.icon.legal:before { + content: "\f0e3"; +} +i.icon.lesbian:before { + content: "\f226"; +} +i.icon.lightning:before { + content: "\f0e7"; +} +i.icon.like:before { + content: "\f004"; +} +i.icon.line.graph:before { + content: "\f201"; +} +i.icon.linkedin.square:before { + content: "\f08c"; +} +i.icon.linkify:before { + content: "\f0c1"; +} +i.icon.lira:before { + content: "\f195"; +} +i.icon.list.layout:before { + content: "\f00b"; +} +i.icon.magnify:before { + content: "\f00e"; +} +i.icon.mail.forward:before { + content: "\f064"; +} +i.icon.mail.square:before { + content: "\f199"; +} +i.icon.mail:before { + content: "\f0e0"; +} +i.icon.male.homosexual:before { + content: "\f227"; +} +i.icon.man:before { + content: "\f222"; +} +i.icon.marker:before { + content: "\f041"; +} +i.icon.mars.alternate:before { + content: "\f229"; +} +i.icon.mars.horizontal:before { + content: "\f22b"; +} +i.icon.mars.vertical:before { + content: "\f22a"; +} +i.icon.mastercard.card:before { + content: "\f1f1"; +} +i.icon.mastercard:before { + content: "\f1f1"; +} +i.icon.microsoft.edge:before { + content: "\f282"; +} +i.icon.military:before { + content: "\f0fb"; +} +i.icon.ms.edge:before { + content: "\f282"; +} +i.icon.mute:before { + content: "\f131"; +} +i.icon.new.pied.piper:before { + content: "\f2ae"; +} +i.icon.non.binary.transgender:before { + content: "\f223"; +} +i.icon.numbered.list:before { + content: "\f0cb"; +} +i.icon.optinmonster:before { + content: "\f23c"; +} +i.icon.options:before { + content: "\f1de"; +} +i.icon.other.gender.horizontal:before { + content: "\f22b"; +} +i.icon.other.gender.vertical:before { + content: "\f22a"; +} +i.icon.other.gender:before { + content: "\f229"; +} +i.icon.payment:before { + content: "\f09d"; +} +i.icon.paypal.card:before { + content: "\f1f4"; +} +i.icon.pencil.square:before { + content: "\f14b"; +} +i.icon.photo:before { + content: "\f030"; +} +i.icon.picture:before { + content: "\f03e"; +} +i.icon.pie.chart:before { + content: "\f200"; +} +i.icon.pie.graph:before { + content: "\f200"; +} +i.icon.pied.piper.hat:before { + content: "\f2ae"; +} +i.icon.pin:before { + content: "\f08d"; +} +i.icon.plus.cart:before { + content: "\f217"; +} +i.icon.pocket:before { + content: "\f265"; +} +i.icon.point:before { + content: "\f041"; +} +i.icon.pointing.down:before { + content: "\f0a7"; +} +i.icon.pointing.left:before { + content: "\f0a5"; +} +i.icon.pointing.right:before { + content: "\f0a4"; +} +i.icon.pointing.up:before { + content: "\f0a6"; +} +i.icon.pound:before { + content: "\f154"; +} +i.icon.power.cord:before { + content: "\f1e6"; +} +i.icon.power:before { + content: "\f011"; +} +i.icon.privacy:before { + content: "\f084"; +} +i.icon.r.circle:before { + content: "\f25d"; +} +i.icon.rain:before { + content: "\f0e9"; +} +i.icon.record:before { + content: "\f03d"; +} +i.icon.refresh:before { + content: "\f021"; +} +i.icon.remove.circle:before { + content: "\f057"; +} +i.icon.remove.from.calendar:before { + content: "\f272"; +} +i.icon.remove.user:before { + content: "\f235"; +} +i.icon.remove:before { + content: "\f00d"; +} +i.icon.repeat:before { + content: "\f01e"; +} +i.icon.rmb:before { + content: "\f157"; +} +i.icon.rouble:before { + content: "\f158"; +} +i.icon.rub:before { + content: "\f158"; +} +i.icon.ruble:before { + content: "\f158"; +} +i.icon.rupee:before { + content: "\f156"; +} +i.icon.s15:before { + content: "\f2cd"; +} +i.icon.selected.radio:before { + content: "\f192"; +} +i.icon.send:before { + content: "\f1d8"; +} +i.icon.setting:before { + content: "\f013"; +} +i.icon.settings:before { + content: "\f085"; +} +i.icon.shekel:before { + content: "\f20b"; +} +i.icon.sheqel:before { + content: "\f20b"; +} +i.icon.shipping:before { + content: "\f0d1"; +} +i.icon.shop:before { + content: "\f07a"; +} +i.icon.shuffle:before { + content: "\f074"; +} +i.icon.shutdown:before { + content: "\f011"; +} +i.icon.sidebar:before { + content: "\f0c9"; +} +i.icon.signing:before { + content: "\f2a7"; +} +i.icon.signup:before { + content: "\f044"; +} +i.icon.sliders:before { + content: "\f1de"; +} +i.icon.soccer:before { + content: "\f1e3"; +} +i.icon.sort.alphabet.ascending:before { + content: "\f15d"; +} +i.icon.sort.alphabet.descending:before { + content: "\f15e"; +} +i.icon.sort.ascending:before { + content: "\f0de"; +} +i.icon.sort.content.ascending:before { + content: "\f160"; +} +i.icon.sort.content.descending:before { + content: "\f161"; +} +i.icon.sort.descending:before { + content: "\f0dd"; +} +i.icon.sort.numeric.ascending:before { + content: "\f162"; +} +i.icon.sort.numeric.descending:before { + content: "\f163"; +} +i.icon.sound:before { + content: "\f025"; +} +i.icon.spy:before { + content: "\f21b"; +} +i.icon.stripe.card:before { + content: "\f1f5"; +} +i.icon.student:before { + content: "\f19d"; +} +i.icon.talk:before { + content: "\f27a"; +} +i.icon.target:before { + content: "\f140"; +} +i.icon.teletype:before { + content: "\f1e4"; +} +i.icon.television:before { + content: "\f26c"; +} +i.icon.text.cursor:before { + content: "\f246"; +} +i.icon.text.telephone:before { + content: "\f1e4"; +} +i.icon.theme.isle:before { + content: "\f2b2"; +} +i.icon.theme:before { + content: "\f043"; +} +i.icon.thermometer:before { + content: "\f2c7"; +} +i.icon.thumb.tack:before { + content: "\f08d"; +} +i.icon.time:before { + content: "\f017"; +} +i.icon.tm:before { + content: "\f25c"; +} +i.icon.toggle.down:before { + content: "\f150"; +} +i.icon.toggle.left:before { + content: "\f191"; +} +i.icon.toggle.right:before { + content: "\f152"; +} +i.icon.toggle.up:before { + content: "\f151"; +} +i.icon.translate:before { + content: "\f1ab"; +} +i.icon.travel:before { + content: "\f0b1"; +} +i.icon.treatment:before { + content: "\f0f1"; +} +i.icon.triangle.down:before { + content: "\f0d7"; +} +i.icon.triangle.left:before { + content: "\f0d9"; +} +i.icon.triangle.right:before { + content: "\f0da"; +} +i.icon.triangle.up:before { + content: "\f0d8"; +} +i.icon.try:before { + content: "\f195"; +} +i.icon.unhide:before { + content: "\f06e"; +} +i.icon.unlinkify:before { + content: "\f127"; +} +i.icon.unmute:before { + content: "\f130"; +} +i.icon.usd:before { + content: "\f155"; +} +i.icon.user.cancel:before { + content: "\f235"; +} +i.icon.user.close:before { + content: "\f235"; +} +i.icon.user.delete:before { + content: "\f235"; +} +i.icon.user.x:before { + content: "\f235"; +} +i.icon.vcard:before { + content: "\f2bb"; +} +i.icon.video.camera:before { + content: "\f03d"; +} +i.icon.video.play:before { + content: "\f144"; +} +i.icon.visa.card:before { + content: "\f1f0"; +} +i.icon.visa:before { + content: "\f1f0"; +} +i.icon.volume.control.phone:before { + content: "\f2a0"; +} +i.icon.wait:before { + content: "\f017"; +} +i.icon.warning.circle:before { + content: "\f06a"; +} +i.icon.warning.sign:before { + content: "\f071"; +} +i.icon.warning:before { + content: "\f12a"; +} +i.icon.wechat:before { + content: "\f1d7"; +} +i.icon.wi-fi:before { + content: "\f1eb"; +} +i.icon.wikipedia:before { + content: "\f266"; +} +i.icon.winner:before { + content: "\f091"; +} +i.icon.wizard:before { + content: "\f0d0"; +} +i.icon.woman:before { + content: "\f221"; +} +i.icon.won:before { + content: "\f159"; +} +i.icon.wordpress.beginner:before { + content: "\f297"; +} +i.icon.wordpress.forms:before { + content: "\f298"; +} +i.icon.world:before { + content: "\f0ac"; +} +i.icon.write.square:before { + content: "\f14b"; +} +i.icon.x:before { + content: "\f00d"; +} +i.icon.yc:before { + content: "\f23b"; +} +i.icon.ycombinator:before { + content: "\f23b"; +} +i.icon.yen:before { + content: "\f157"; +} +i.icon.zip:before { + content: "\f187"; +} +i.icon.zoom-in:before { + content: "\f00e"; +} +i.icon.zoom-out:before { + content: "\f010"; +} +i.icon.zoom:before { + content: "\f00e"; +} +i.icon.bitbucket.square:before { + content: "\f171"; +} +i.icon.checkmark.box:before { + content: "\f14a"; +} +i.icon.circle.thin:before { + content: "\f111"; +} +i.icon.cloud.download:before { + content: "\f381"; +} +i.icon.cloud.upload:before { + content: "\f382"; +} +i.icon.compose:before { + content: "\f303"; +} +i.icon.conversation:before { + content: "\f086"; +} +i.icon.credit.card.alternative:before { + content: "\f09d"; +} +i.icon.currency:before { + content: "\f3d1"; +} +i.icon.dashboard:before { + content: "\f3fd"; +} +i.icon.diamond:before { + content: "\f3a5"; +} +i.icon.disk:before { + content: "\f0a0"; +} +i.icon.exchange:before { + content: "\f362"; +} +i.icon.external.share:before { + content: "\f14d"; +} +i.icon.external.square:before { + content: "\f360"; +} +i.icon.external:before { + content: "\f35d"; +} +i.icon.facebook.official:before { + content: "\f082"; +} +i.icon.food:before { + content: "\f2e7"; +} +i.icon.hourglass.zero:before { + content: "\f253"; +} +i.icon.level.down:before { + content: "\f3be"; +} +i.icon.level.up:before { + content: "\f3bf"; +} +i.icon.logout:before { + content: "\f2f5"; +} +i.icon.meanpath:before { + content: "\f0c8"; +} +i.icon.money:before { + content: "\f3d1"; +} +i.icon.move:before { + content: "\f0b2"; +} +i.icon.pencil:before { + content: "\f303"; +} +i.icon.protect:before { + content: "\f023"; +} +i.icon.radio:before { + content: "\f192"; +} +i.icon.remove.bookmark:before { + content: "\f02e"; +} +i.icon.resize.horizontal:before { + content: "\f337"; +} +i.icon.resize.vertical:before { + content: "\f338"; +} +i.icon.sign-in:before { + content: "\f2f6"; +} +i.icon.sign-out:before { + content: "\f2f5"; +} +i.icon.spoon:before { + content: "\f2e5"; +} +i.icon.star.half.empty:before { + content: "\f089"; +} +i.icon.star.half.full:before { + content: "\f089"; +} +i.icon.ticket:before { + content: "\f3ff"; +} +i.icon.times.rectangle:before { + content: "\f410"; +} +i.icon.write:before { + content: "\f303"; +} +i.icon.youtube.play:before { + content: "\f167"; +} + + +/******************************* + Outline Icons +*******************************/ + + +/* Outline Icon */ + +/* Load & Define Icon Font */ +@font-face { + font-family: 'outline-icons'; + src: url("./../themes/default/assets/fonts/outline-icons.eot"); + src: url("./../themes/default/assets/fonts/outline-icons.eot?#iefix") format('embedded-opentype'), url("./../themes/default/assets/fonts/outline-icons.woff2") format('woff2'), url("./../themes/default/assets/fonts/outline-icons.woff") format('woff'), url("./../themes/default/assets/fonts/outline-icons.ttf") format('truetype'), url("./../themes/default/assets/fonts/outline-icons.svg#icons") format('svg'); + font-style: normal; + font-weight: normal; + font-variant: normal; + text-decoration: inherit; + text-transform: none; +} +i.icon.outline { + font-family: 'outline-icons'; +} + +/* Icon Definitions */ +i.icon.address.book.outline:before { + content: "\f2b9"; +} +i.icon.address.card.outline:before { + content: "\f2bb"; +} +i.icon.arrow.alternate.circle.down.outline:before { + content: "\f358"; +} +i.icon.arrow.alternate.circle.left.outline:before { + content: "\f359"; +} +i.icon.arrow.alternate.circle.right.outline:before { + content: "\f35a"; +} +i.icon.arrow.alternate.circle.up.outline:before { + content: "\f35b"; +} +i.icon.bell.outline:before { + content: "\f0f3"; +} +i.icon.bell.slash.outline:before { + content: "\f1f6"; +} +i.icon.bookmark.outline:before { + content: "\f02e"; +} +i.icon.building.outline:before { + content: "\f1ad"; +} +i.icon.calendar.outline:before { + content: "\f133"; +} +i.icon.calendar.alternate.outline:before { + content: "\f073"; +} +i.icon.calendar.check.outline:before { + content: "\f274"; +} +i.icon.calendar.minus.outline:before { + content: "\f272"; +} +i.icon.calendar.plus.outline:before { + content: "\f271"; +} +i.icon.calendar.times.outline:before { + content: "\f273"; +} +i.icon.caret.square.down.outline:before { + content: "\f150"; +} +i.icon.caret.square.left.outline:before { + content: "\f191"; +} +i.icon.caret.square.right.outline:before { + content: "\f152"; +} +i.icon.caret.square.up.outline:before { + content: "\f151"; +} +i.icon.chart.bar.outline:before { + content: "\f080"; +} +i.icon.check.circle.outline:before { + content: "\f058"; +} +i.icon.check.square.outline:before { + content: "\f14a"; +} +i.icon.circle.outline:before { + content: "\f111"; +} +i.icon.clipboard.outline:before { + content: "\f328"; +} +i.icon.clock.outline:before { + content: "\f017"; +} +i.icon.clone.outline:before { + content: "\f24d"; +} +i.icon.closed.captioning.outline:before { + content: "\f20a"; +} +i.icon.comment.outline:before { + content: "\f075"; +} +i.icon.comment.alternate.outline:before { + content: "\f27a"; +} +i.icon.comments.outline:before { + content: "\f086"; +} +i.icon.compass.outline:before { + content: "\f14e"; +} +i.icon.copy.outline:before { + content: "\f0c5"; +} +i.icon.copyright.outline:before { + content: "\f1f9"; +} +i.icon.credit.card.outline:before { + content: "\f09d"; +} +i.icon.dot.circle.outline:before { + content: "\f192"; +} +i.icon.edit.outline:before { + content: "\f044"; +} +i.icon.envelope.outline:before { + content: "\f0e0"; +} +i.icon.envelope.open.outline:before { + content: "\f2b6"; +} +i.icon.eye.slash.outline:before { + content: "\f070"; +} +i.icon.file.outline:before { + content: "\f15b"; +} +i.icon.file.alternate.outline:before { + content: "\f15c"; +} +i.icon.file.archive.outline:before { + content: "\f1c6"; +} +i.icon.file.audio.outline:before { + content: "\f1c7"; +} +i.icon.file.code.outline:before { + content: "\f1c9"; +} +i.icon.file.excel.outline:before { + content: "\f1c3"; +} +i.icon.file.image.outline:before { + content: "\f1c5"; +} +i.icon.file.pdf.outline:before { + content: "\f1c1"; +} +i.icon.file.powerpoint.outline:before { + content: "\f1c4"; +} +i.icon.file.video.outline:before { + content: "\f1c8"; +} +i.icon.file.word.outline:before { + content: "\f1c2"; +} +i.icon.flag.outline:before { + content: "\f024"; +} +i.icon.folder.outline:before { + content: "\f07b"; +} +i.icon.folder.open.outline:before { + content: "\f07c"; +} +i.icon.frown.outline:before { + content: "\f119"; +} +i.icon.futbol.outline:before { + content: "\f1e3"; +} +i.icon.gem.outline:before { + content: "\f3a5"; +} +i.icon.hand.lizard.outline:before { + content: "\f258"; +} +i.icon.hand.paper.outline:before { + content: "\f256"; +} +i.icon.hand.peace.outline:before { + content: "\f25b"; +} +i.icon.hand.point.down.outline:before { + content: "\f0a7"; +} +i.icon.hand.point.left.outline:before { + content: "\f0a5"; +} +i.icon.hand.point.right.outline:before { + content: "\f0a4"; +} +i.icon.hand.point.up.outline:before { + content: "\f0a6"; +} +i.icon.hand.pointer.outline:before { + content: "\f25a"; +} +i.icon.hand.rock.outline:before { + content: "\f255"; +} +i.icon.hand.scissors.outline:before { + content: "\f257"; +} +i.icon.hand.spock.outline:before { + content: "\f259"; +} +i.icon.handshake.outline:before { + content: "\f2b5"; +} +i.icon.hdd.outline:before { + content: "\f0a0"; +} +i.icon.heart.outline:before { + content: "\f004"; +} +i.icon.hospital.outline:before { + content: "\f0f8"; +} +i.icon.hourglass.outline:before { + content: "\f254"; +} +i.icon.id.badge.outline:before { + content: "\f2c1"; +} +i.icon.id.card.outline:before { + content: "\f2c2"; +} +i.icon.image.outline:before { + content: "\f03e"; +} +i.icon.images.outline:before { + content: "\f302"; +} +i.icon.keyboard.outline:before { + content: "\f11c"; +} +i.icon.lemon.outline:before { + content: "\f094"; +} +i.icon.life.ring.outline:before { + content: "\f1cd"; +} +i.icon.lightbulb.outline:before { + content: "\f0eb"; +} +i.icon.list.alternate.outline:before { + content: "\f022"; +} +i.icon.map.outline:before { + content: "\f279"; +} +i.icon.meh.outline:before { + content: "\f11a"; +} +i.icon.minus.square.outline:before { + content: "\f146"; +} +i.icon.money.bill.alternate.outline:before { + content: "\f3d1"; +} +i.icon.moon.outline:before { + content: "\f186"; +} +i.icon.newspaper.outline:before { + content: "\f1ea"; +} +i.icon.object.group.outline:before { + content: "\f247"; +} +i.icon.object.ungroup.outline:before { + content: "\f248"; +} +i.icon.paper.plane.outline:before { + content: "\f1d8"; +} +i.icon.pause.circle.outline:before { + content: "\f28b"; +} +i.icon.play.circle.outline:before { + content: "\f144"; +} +i.icon.plus.square.outline:before { + content: "\f0fe"; +} +i.icon.question.circle.outline:before { + content: "\f059"; +} +i.icon.registered.outline:before { + content: "\f25d"; +} +i.icon.save.outline:before { + content: "\f0c7"; +} +i.icon.share.square.outline:before { + content: "\f14d"; +} +i.icon.smile.outline:before { + content: "\f118"; +} +i.icon.snowflake.outline:before { + content: "\f2dc"; +} +i.icon.square.outline:before { + content: "\f0c8"; +} +i.icon.star.outline:before { + content: "\f005"; +} +i.icon.star.half.outline:before { + content: "\f089"; +} +i.icon.sticky.note.outline:before { + content: "\f249"; +} +i.icon.stop.circle.outline:before { + content: "\f28d"; +} +i.icon.sun.outline:before { + content: "\f185"; +} +i.icon.thumbs.down.outline:before { + content: "\f165"; +} +i.icon.thumbs.up.outline:before { + content: "\f164"; +} +i.icon.times.circle.outline:before { + content: "\f057"; +} +i.icon.trash.alternate.outline:before { + content: "\f2ed"; +} +i.icon.user.outline:before { + content: "\f007"; +} +i.icon.user.circle.outline:before { + content: "\f2bd"; +} +i.icon.window.close.outline:before { + content: "\f410"; +} +i.icon.window.maximize.outline:before { + content: "\f2d0"; +} +i.icon.window.minimize.outline:before { + content: "\f2d1"; +} +i.icon.window.restore.outline:before { + content: "\f2d2"; +} + +/* Outline Aliases */ +i.icon.disk.outline:before { + content: "\f0a0"; +} +i.icon.heart.empty, +i.icon.star.empty { + font-family: 'outline-icons'; +} +i.icon.heart.empty:before { + content: "\f004"; +} +i.icon.star.empty:before { + content: "\f089"; +} + + +/******************************* + Brand Icons +*******************************/ + + +/* Load & Define Brand Font */ +@font-face { + font-family: 'brand-icons'; + src: url("./../themes/default/assets/fonts/brand-icons.eot"); + src: url("./../themes/default/assets/fonts/brand-icons.eot?#iefix") format('embedded-opentype'), url("./../themes/default/assets/fonts/brand-icons.woff2") format('woff2'), url("./../themes/default/assets/fonts/brand-icons.woff") format('woff'), url("./../themes/default/assets/fonts/brand-icons.ttf") format('truetype'), url("./../themes/default/assets/fonts/brand-icons.svg#icons") format('svg'); + font-style: normal; + font-weight: normal; + font-variant: normal; + text-decoration: inherit; + text-transform: none; +} + +/* Brand Icon Font Family */ +i.icon.\35 00px, +i.icon.accessible.icon, +i.icon.accusoft, +i.icon.adn, +i.icon.adversal, +i.icon.affiliatetheme, +i.icon.algolia, +i.icon.amazon, +i.icon.amazon.pay, +i.icon.amilia, +i.icon.android, +i.icon.angellist, +i.icon.angrycreative, +i.icon.angular, +i.icon.app.store, +i.icon.app.store.ios, +i.icon.apper, +i.icon.apple, +i.icon.apple.pay, +i.icon.asymmetrik, +i.icon.audible, +i.icon.autoprefixer, +i.icon.avianex, +i.icon.aviato, +i.icon.aws, +i.icon.bandcamp, +i.icon.behance, +i.icon.behance.square, +i.icon.bimobject, +i.icon.bitbucket, +i.icon.bitcoin, +i.icon.bity, +i.icon.black.tie, +i.icon.blackberry, +i.icon.blogger, +i.icon.blogger.b, +i.icon.bluetooth, +i.icon.bluetooth.b, +i.icon.btc, +i.icon.buromobelexperte, +i.icon.buysellads, +i.icon.cc.amazon.pay, +i.icon.cc.amex, +i.icon.cc.apple.pay, +i.icon.cc.diners.club, +i.icon.cc.discover, +i.icon.cc.jcb, +i.icon.cc.mastercard, +i.icon.cc.paypal, +i.icon.cc.stripe, +i.icon.cc.visa, +i.icon.centercode, +i.icon.chrome, +i.icon.cloudscale, +i.icon.cloudsmith, +i.icon.cloudversify, +i.icon.codepen, +i.icon.codiepie, +i.icon.connectdevelop, +i.icon.contao, +i.icon.cpanel, +i.icon.creative.commons, +i.icon.css3, +i.icon.css3.alternate, +i.icon.cuttlefish, +i.icon.d.and.d, +i.icon.dashcube, +i.icon.delicious, +i.icon.deploydog, +i.icon.deskpro, +i.icon.deviantart, +i.icon.digg, +i.icon.digital.ocean, +i.icon.discord, +i.icon.discourse, +i.icon.dochub, +i.icon.docker, +i.icon.draft2digital, +i.icon.dribbble, +i.icon.dribbble.square, +i.icon.dropbox, +i.icon.drupal, +i.icon.dyalog, +i.icon.earlybirds, +i.icon.edge, +i.icon.elementor, +i.icon.ember, +i.icon.empire, +i.icon.envira, +i.icon.erlang, +i.icon.ethereum, +i.icon.etsy, +i.icon.expeditedssl, +i.icon.facebook, +i.icon.facebook.f, +i.icon.facebook.messenger, +i.icon.facebook.square, +i.icon.firefox, +i.icon.first.order, +i.icon.firstdraft, +i.icon.flickr, +i.icon.flipboard, +i.icon.fly, +i.icon.font.awesome, +i.icon.font.awesome.alternate, +i.icon.font.awesome.flag, +i.icon.fonticons, +i.icon.fonticons.fi, +i.icon.fort.awesome, +i.icon.fort.awesome.alternate, +i.icon.forumbee, +i.icon.foursquare, +i.icon.free.code.camp, +i.icon.freebsd, +i.icon.get.pocket, +i.icon.gg, +i.icon.gg.circle, +i.icon.git, +i.icon.git.square, +i.icon.github, +i.icon.github.alternate, +i.icon.github.square, +i.icon.gitkraken, +i.icon.gitlab, +i.icon.gitter, +i.icon.glide, +i.icon.glide.g, +i.icon.gofore, +i.icon.goodreads, +i.icon.goodreads.g, +i.icon.google, +i.icon.google.drive, +i.icon.google.play, +i.icon.google.plus, +i.icon.google.plus.g, +i.icon.google.plus.square, +i.icon.google.wallet, +i.icon.gratipay, +i.icon.grav, +i.icon.gripfire, +i.icon.grunt, +i.icon.gulp, +i.icon.hacker.news, +i.icon.hacker.news.square, +i.icon.hips, +i.icon.hire.a.helper, +i.icon.hooli, +i.icon.hotjar, +i.icon.houzz, +i.icon.html5, +i.icon.hubspot, +i.icon.imdb, +i.icon.instagram, +i.icon.internet.explorer, +i.icon.ioxhost, +i.icon.itunes, +i.icon.itunes.note, +i.icon.jenkins, +i.icon.joget, +i.icon.joomla, +i.icon.js, +i.icon.js.square, +i.icon.jsfiddle, +i.icon.keycdn, +i.icon.kickstarter, +i.icon.kickstarter.k, +i.icon.korvue, +i.icon.laravel, +i.icon.lastfm, +i.icon.lastfm.square, +i.icon.leanpub, +i.icon.less, +i.icon.linechat, +i.icon.linkedin, +i.icon.linkedin.alternate, +i.icon.linkedin.in, +i.icon.linode, +i.icon.linux, +i.icon.lyft, +i.icon.magento, +i.icon.maxcdn, +i.icon.medapps, +i.icon.medium, +i.icon.medium.m, +i.icon.medrt, +i.icon.meetup, +i.icon.microsoft, +i.icon.mix, +i.icon.mixcloud, +i.icon.mizuni, +i.icon.modx, +i.icon.monero, +i.icon.napster, +i.icon.nintendo.switch, +i.icon.node, +i.icon.node.js, +i.icon.npm, +i.icon.ns8, +i.icon.nutritionix, +i.icon.odnoklassniki, +i.icon.odnoklassniki.square, +i.icon.opencart, +i.icon.openid, +i.icon.opera, +i.icon.optin.monster, +i.icon.osi, +i.icon.page4, +i.icon.pagelines, +i.icon.palfed, +i.icon.patreon, +i.icon.paypal, +i.icon.periscope, +i.icon.phabricator, +i.icon.phoenix.framework, +i.icon.php, +i.icon.pied.piper, +i.icon.pied.piper.alternate, +i.icon.pied.piper.pp, +i.icon.pinterest, +i.icon.pinterest.p, +i.icon.pinterest.square, +i.icon.playstation, +i.icon.product.hunt, +i.icon.pushed, +i.icon.python, +i.icon.qq, +i.icon.quinscape, +i.icon.quora, +i.icon.ravelry, +i.icon.react, +i.icon.rebel, +i.icon.redriver, +i.icon.reddit, +i.icon.reddit.alien, +i.icon.reddit.square, +i.icon.rendact, +i.icon.renren, +i.icon.replyd, +i.icon.resolving, +i.icon.rocketchat, +i.icon.rockrms, +i.icon.safari, +i.icon.sass, +i.icon.schlix, +i.icon.scribd, +i.icon.searchengin, +i.icon.sellcast, +i.icon.sellsy, +i.icon.servicestack, +i.icon.shirtsinbulk, +i.icon.simplybuilt, +i.icon.sistrix, +i.icon.skyatlas, +i.icon.skype, +i.icon.slack, +i.icon.slack.hash, +i.icon.slideshare, +i.icon.snapchat, +i.icon.snapchat.ghost, +i.icon.snapchat.square, +i.icon.soundcloud, +i.icon.speakap, +i.icon.spotify, +i.icon.stack.exchange, +i.icon.stack.overflow, +i.icon.staylinked, +i.icon.steam, +i.icon.steam.square, +i.icon.steam.symbol, +i.icon.sticker.mule, +i.icon.strava, +i.icon.stripe, +i.icon.stripe.s, +i.icon.studiovinari, +i.icon.stumbleupon, +i.icon.stumbleupon.circle, +i.icon.superpowers, +i.icon.supple, +i.icon.telegram, +i.icon.telegram.plane, +i.icon.tencent.weibo, +i.icon.themeisle, +i.icon.trello, +i.icon.tripadvisor, +i.icon.tumblr, +i.icon.tumblr.square, +i.icon.twitch, +i.icon.twitter, +i.icon.twitter.square, +i.icon.typo3, +i.icon.uber, +i.icon.uikit, +i.icon.uniregistry, +i.icon.untappd, +i.icon.usb, +i.icon.ussunnah, +i.icon.vaadin, +i.icon.viacoin, +i.icon.viadeo, +i.icon.viadeo.square, +i.icon.viber, +i.icon.vimeo, +i.icon.vimeo.square, +i.icon.vimeo.v, +i.icon.vine, +i.icon.vk, +i.icon.vnv, +i.icon.vuejs, +i.icon.wechat, +i.icon.weibo, +i.icon.weixin, +i.icon.whatsapp, +i.icon.whatsapp.square, +i.icon.whmcs, +i.icon.wikipedia.w, +i.icon.windows, +i.icon.wordpress, +i.icon.wordpress.simple, +i.icon.wpbeginner, +i.icon.wpexplorer, +i.icon.wpforms, +i.icon.xbox, +i.icon.xing, +i.icon.xing.square, +i.icon.y.combinator, +i.icon.yahoo, +i.icon.yandex, +i.icon.yandex.international, +i.icon.yelp, +i.icon.yoast, +i.icon.youtube, +i.icon.youtube.square { + font-family: 'brand-icons'; +} + +/* Brand Icons Ideally Would Be Defined Here */ + + +/******************************* + Site Overrides +*******************************/ + diff --git a/app/static/semantic/components/icon.min.css b/app/static/semantic/components/icon.min.css new file mode 100755 index 0000000..1f6e8d7 --- /dev/null +++ b/app/static/semantic/components/icon.min.css @@ -0,0 +1,9 @@ +/*! + * # Semantic UI 2.4.1 - Icon + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */@font-face{font-family:Icons;src:url(../themes/default/assets/fonts/icons.eot);src:url(../themes/default/assets/fonts/icons.eot?#iefix) format('embedded-opentype'),url(../themes/default/assets/fonts/icons.woff2) format('woff2'),url(../themes/default/assets/fonts/icons.woff) format('woff'),url(../themes/default/assets/fonts/icons.ttf) format('truetype'),url(../themes/default/assets/fonts/icons.svg#icons) format('svg');font-style:normal;font-weight:400;font-variant:normal;text-decoration:inherit;text-transform:none}i.icon{display:inline-block;opacity:1;margin:0 .25rem 0 0;width:1.18em;height:1em;font-family:Icons;font-style:normal;font-weight:400;text-decoration:inherit;text-align:center;speak:none;font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;-webkit-backface-visibility:hidden;backface-visibility:hidden}i.icon:before{background:0 0!important}i.icon.loading{height:1em;line-height:1;-webkit-animation:icon-loading 2s linear infinite;animation:icon-loading 2s linear infinite}@-webkit-keyframes icon-loading{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes icon-loading{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}i.icon.hover{opacity:1!important}i.icon.active{opacity:1!important}i.emphasized.icon{opacity:1!important}i.disabled.icon{opacity:.45!important}i.fitted.icon{width:auto;margin:0!important}i.link.icon,i.link.icons{cursor:pointer;opacity:.8;-webkit-transition:opacity .1s ease;transition:opacity .1s ease}i.link.icon:hover,i.link.icons:hover{opacity:1!important}i.circular.icon{border-radius:500em!important;line-height:1!important;padding:.5em 0!important;-webkit-box-shadow:0 0 0 .1em rgba(0,0,0,.1) inset;box-shadow:0 0 0 .1em rgba(0,0,0,.1) inset;width:2em!important;height:2em!important}i.circular.inverted.icon{border:none;-webkit-box-shadow:none;box-shadow:none}i.flipped.icon,i.horizontally.flipped.icon{-webkit-transform:scale(-1,1);transform:scale(-1,1)}i.vertically.flipped.icon{-webkit-transform:scale(1,-1);transform:scale(1,-1)}i.clockwise.rotated.icon,i.right.rotated.icon,i.rotated.icon{-webkit-transform:rotate(90deg);transform:rotate(90deg)}i.counterclockwise.rotated.icon,i.left.rotated.icon{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}i.bordered.icon{line-height:1;vertical-align:baseline;width:2em;height:2em;padding:.5em 0!important;-webkit-box-shadow:0 0 0 .1em rgba(0,0,0,.1) inset;box-shadow:0 0 0 .1em rgba(0,0,0,.1) inset}i.bordered.inverted.icon{border:none;-webkit-box-shadow:none;box-shadow:none}i.inverted.bordered.icon,i.inverted.circular.icon{background-color:#1b1c1d!important;color:#fff!important}i.inverted.icon{color:#fff}i.red.icon{color:#db2828!important}i.inverted.red.icon{color:#ff695e!important}i.inverted.bordered.red.icon,i.inverted.circular.red.icon{background-color:#db2828!important;color:#fff!important}i.orange.icon{color:#f2711c!important}i.inverted.orange.icon{color:#ff851b!important}i.inverted.bordered.orange.icon,i.inverted.circular.orange.icon{background-color:#f2711c!important;color:#fff!important}i.yellow.icon{color:#fbbd08!important}i.inverted.yellow.icon{color:#ffe21f!important}i.inverted.bordered.yellow.icon,i.inverted.circular.yellow.icon{background-color:#fbbd08!important;color:#fff!important}i.olive.icon{color:#b5cc18!important}i.inverted.olive.icon{color:#d9e778!important}i.inverted.bordered.olive.icon,i.inverted.circular.olive.icon{background-color:#b5cc18!important;color:#fff!important}i.green.icon{color:#21ba45!important}i.inverted.green.icon{color:#2ecc40!important}i.inverted.bordered.green.icon,i.inverted.circular.green.icon{background-color:#21ba45!important;color:#fff!important}i.teal.icon{color:#00b5ad!important}i.inverted.teal.icon{color:#6dffff!important}i.inverted.bordered.teal.icon,i.inverted.circular.teal.icon{background-color:#00b5ad!important;color:#fff!important}i.blue.icon{color:#2185d0!important}i.inverted.blue.icon{color:#54c8ff!important}i.inverted.bordered.blue.icon,i.inverted.circular.blue.icon{background-color:#2185d0!important;color:#fff!important}i.violet.icon{color:#6435c9!important}i.inverted.violet.icon{color:#a291fb!important}i.inverted.bordered.violet.icon,i.inverted.circular.violet.icon{background-color:#6435c9!important;color:#fff!important}i.purple.icon{color:#a333c8!important}i.inverted.purple.icon{color:#dc73ff!important}i.inverted.bordered.purple.icon,i.inverted.circular.purple.icon{background-color:#a333c8!important;color:#fff!important}i.pink.icon{color:#e03997!important}i.inverted.pink.icon{color:#ff8edf!important}i.inverted.bordered.pink.icon,i.inverted.circular.pink.icon{background-color:#e03997!important;color:#fff!important}i.brown.icon{color:#a5673f!important}i.inverted.brown.icon{color:#d67c1c!important}i.inverted.bordered.brown.icon,i.inverted.circular.brown.icon{background-color:#a5673f!important;color:#fff!important}i.grey.icon{color:#767676!important}i.inverted.grey.icon{color:#dcddde!important}i.inverted.bordered.grey.icon,i.inverted.circular.grey.icon{background-color:#767676!important;color:#fff!important}i.black.icon{color:#1b1c1d!important}i.inverted.black.icon{color:#545454!important}i.inverted.bordered.black.icon,i.inverted.circular.black.icon{background-color:#1b1c1d!important;color:#fff!important}i.mini.icon,i.mini.icons{line-height:1;font-size:.4em}i.tiny.icon,i.tiny.icons{line-height:1;font-size:.5em}i.small.icon,i.small.icons{line-height:1;font-size:.75em}i.icon,i.icons{font-size:1em}i.large.icon,i.large.icons{line-height:1;vertical-align:middle;font-size:1.5em}i.big.icon,i.big.icons{line-height:1;vertical-align:middle;font-size:2em}i.huge.icon,i.huge.icons{line-height:1;vertical-align:middle;font-size:4em}i.massive.icon,i.massive.icons{line-height:1;vertical-align:middle;font-size:8em}i.icons{display:inline-block;position:relative;line-height:1}i.icons .icon{position:absolute;top:50%;left:50%;-webkit-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%);margin:0;margin:0}i.icons .icon:first-child{position:static;width:auto;height:auto;vertical-align:top;-webkit-transform:none;transform:none;margin-right:.25rem}i.icons .corner.icon{top:auto;left:auto;right:0;bottom:0;-webkit-transform:none;transform:none;font-size:.45em;text-shadow:-1px -1px 0 #fff,1px -1px 0 #fff,-1px 1px 0 #fff,1px 1px 0 #fff}i.icons .top.right.corner.icon{top:0;left:auto;right:0;bottom:auto}i.icons .top.left.corner.icon{top:0;left:0;right:auto;bottom:auto}i.icons .bottom.left.corner.icon{top:auto;left:0;right:auto;bottom:0}i.icons .bottom.right.corner.icon{top:auto;left:auto;right:0;bottom:0}i.icons .inverted.corner.icon{text-shadow:-1px -1px 0 #1b1c1d,1px -1px 0 #1b1c1d,-1px 1px 0 #1b1c1d,1px 1px 0 #1b1c1d}i.icon.linkedin.in:before{content:"\f0e1"}i.icon.zoom.in:before{content:"\f00e"}i.icon.zoom.out:before{content:"\f010"}i.icon.sign.in:before{content:"\f2f6"}i.icon.in.cart:before{content:"\f218"}i.icon.log.out:before{content:"\f2f5"}i.icon.sign.out:before{content:"\f2f5"}i.icon.\35 00px:before{content:"\f26e"}i.icon.accessible.icon:before{content:"\f368"}i.icon.accusoft:before{content:"\f369"}i.icon.address.book:before{content:"\f2b9"}i.icon.address.card:before{content:"\f2bb"}i.icon.adjust:before{content:"\f042"}i.icon.adn:before{content:"\f170"}i.icon.adversal:before{content:"\f36a"}i.icon.affiliatetheme:before{content:"\f36b"}i.icon.algolia:before{content:"\f36c"}i.icon.align.center:before{content:"\f037"}i.icon.align.justify:before{content:"\f039"}i.icon.align.left:before{content:"\f036"}i.icon.align.right:before{content:"\f038"}i.icon.amazon:before{content:"\f270"}i.icon.amazon.pay:before{content:"\f42c"}i.icon.ambulance:before{content:"\f0f9"}i.icon.american.sign.language.interpreting:before{content:"\f2a3"}i.icon.amilia:before{content:"\f36d"}i.icon.anchor:before{content:"\f13d"}i.icon.android:before{content:"\f17b"}i.icon.angellist:before{content:"\f209"}i.icon.angle.double.down:before{content:"\f103"}i.icon.angle.double.left:before{content:"\f100"}i.icon.angle.double.right:before{content:"\f101"}i.icon.angle.double.up:before{content:"\f102"}i.icon.angle.down:before{content:"\f107"}i.icon.angle.left:before{content:"\f104"}i.icon.angle.right:before{content:"\f105"}i.icon.angle.up:before{content:"\f106"}i.icon.angrycreative:before{content:"\f36e"}i.icon.angular:before{content:"\f420"}i.icon.app.store:before{content:"\f36f"}i.icon.app.store.ios:before{content:"\f370"}i.icon.apper:before{content:"\f371"}i.icon.apple:before{content:"\f179"}i.icon.apple.pay:before{content:"\f415"}i.icon.archive:before{content:"\f187"}i.icon.arrow.alternate.circle.down:before{content:"\f358"}i.icon.arrow.alternate.circle.left:before{content:"\f359"}i.icon.arrow.alternate.circle.right:before{content:"\f35a"}i.icon.arrow.alternate.circle.up:before{content:"\f35b"}i.icon.arrow.circle.down:before{content:"\f0ab"}i.icon.arrow.circle.left:before{content:"\f0a8"}i.icon.arrow.circle.right:before{content:"\f0a9"}i.icon.arrow.circle.up:before{content:"\f0aa"}i.icon.arrow.down:before{content:"\f063"}i.icon.arrow.left:before{content:"\f060"}i.icon.arrow.right:before{content:"\f061"}i.icon.arrow.up:before{content:"\f062"}i.icon.arrows.alternate:before{content:"\f0b2"}i.icon.arrows.alternate.horizontal:before{content:"\f337"}i.icon.arrows.alternate.vertical:before{content:"\f338"}i.icon.assistive.listening.systems:before{content:"\f2a2"}i.icon.asterisk:before{content:"\f069"}i.icon.asymmetrik:before{content:"\f372"}i.icon.at:before{content:"\f1fa"}i.icon.audible:before{content:"\f373"}i.icon.audio.description:before{content:"\f29e"}i.icon.autoprefixer:before{content:"\f41c"}i.icon.avianex:before{content:"\f374"}i.icon.aviato:before{content:"\f421"}i.icon.aws:before{content:"\f375"}i.icon.backward:before{content:"\f04a"}i.icon.balance.scale:before{content:"\f24e"}i.icon.ban:before{content:"\f05e"}i.icon.band.aid:before{content:"\f462"}i.icon.bandcamp:before{content:"\f2d5"}i.icon.barcode:before{content:"\f02a"}i.icon.bars:before{content:"\f0c9"}i.icon.baseball.ball:before{content:"\f433"}i.icon.basketball.ball:before{content:"\f434"}i.icon.bath:before{content:"\f2cd"}i.icon.battery.empty:before{content:"\f244"}i.icon.battery.full:before{content:"\f240"}i.icon.battery.half:before{content:"\f242"}i.icon.battery.quarter:before{content:"\f243"}i.icon.battery.three.quarters:before{content:"\f241"}i.icon.bed:before{content:"\f236"}i.icon.beer:before{content:"\f0fc"}i.icon.behance:before{content:"\f1b4"}i.icon.behance.square:before{content:"\f1b5"}i.icon.bell:before{content:"\f0f3"}i.icon.bell.slash:before{content:"\f1f6"}i.icon.bicycle:before{content:"\f206"}i.icon.bimobject:before{content:"\f378"}i.icon.binoculars:before{content:"\f1e5"}i.icon.birthday.cake:before{content:"\f1fd"}i.icon.bitbucket:before{content:"\f171"}i.icon.bitcoin:before{content:"\f379"}i.icon.bity:before{content:"\f37a"}i.icon.black.tie:before{content:"\f27e"}i.icon.blackberry:before{content:"\f37b"}i.icon.blind:before{content:"\f29d"}i.icon.blogger:before{content:"\f37c"}i.icon.blogger.b:before{content:"\f37d"}i.icon.bluetooth:before{content:"\f293"}i.icon.bluetooth.b:before{content:"\f294"}i.icon.bold:before{content:"\f032"}i.icon.bolt:before{content:"\f0e7"}i.icon.bomb:before{content:"\f1e2"}i.icon.book:before{content:"\f02d"}i.icon.bookmark:before{content:"\f02e"}i.icon.bowling.ball:before{content:"\f436"}i.icon.box:before{content:"\f466"}i.icon.boxes:before{content:"\f468"}i.icon.braille:before{content:"\f2a1"}i.icon.briefcase:before{content:"\f0b1"}i.icon.btc:before{content:"\f15a"}i.icon.bug:before{content:"\f188"}i.icon.building:before{content:"\f1ad"}i.icon.bullhorn:before{content:"\f0a1"}i.icon.bullseye:before{content:"\f140"}i.icon.buromobelexperte:before{content:"\f37f"}i.icon.bus:before{content:"\f207"}i.icon.buysellads:before{content:"\f20d"}i.icon.calculator:before{content:"\f1ec"}i.icon.calendar:before{content:"\f133"}i.icon.calendar.alternate:before{content:"\f073"}i.icon.calendar.check:before{content:"\f274"}i.icon.calendar.minus:before{content:"\f272"}i.icon.calendar.plus:before{content:"\f271"}i.icon.calendar.times:before{content:"\f273"}i.icon.camera:before{content:"\f030"}i.icon.camera.retro:before{content:"\f083"}i.icon.car:before{content:"\f1b9"}i.icon.caret.down:before{content:"\f0d7"}i.icon.caret.left:before{content:"\f0d9"}i.icon.caret.right:before{content:"\f0da"}i.icon.caret.square.down:before{content:"\f150"}i.icon.caret.square.left:before{content:"\f191"}i.icon.caret.square.right:before{content:"\f152"}i.icon.caret.square.up:before{content:"\f151"}i.icon.caret.up:before{content:"\f0d8"}i.icon.cart.arrow.down:before{content:"\f218"}i.icon.cart.plus:before{content:"\f217"}i.icon.cc.amazon.pay:before{content:"\f42d"}i.icon.cc.amex:before{content:"\f1f3"}i.icon.cc.apple.pay:before{content:"\f416"}i.icon.cc.diners.club:before{content:"\f24c"}i.icon.cc.discover:before{content:"\f1f2"}i.icon.cc.jcb:before{content:"\f24b"}i.icon.cc.mastercard:before{content:"\f1f1"}i.icon.cc.paypal:before{content:"\f1f4"}i.icon.cc.stripe:before{content:"\f1f5"}i.icon.cc.visa:before{content:"\f1f0"}i.icon.centercode:before{content:"\f380"}i.icon.certificate:before{content:"\f0a3"}i.icon.chart.area:before{content:"\f1fe"}i.icon.chart.bar:before{content:"\f080"}i.icon.chart.line:before{content:"\f201"}i.icon.chart.pie:before{content:"\f200"}i.icon.check:before{content:"\f00c"}i.icon.check.circle:before{content:"\f058"}i.icon.check.square:before{content:"\f14a"}i.icon.chess:before{content:"\f439"}i.icon.chess.bishop:before{content:"\f43a"}i.icon.chess.board:before{content:"\f43c"}i.icon.chess.king:before{content:"\f43f"}i.icon.chess.knight:before{content:"\f441"}i.icon.chess.pawn:before{content:"\f443"}i.icon.chess.queen:before{content:"\f445"}i.icon.chess.rook:before{content:"\f447"}i.icon.chevron.circle.down:before{content:"\f13a"}i.icon.chevron.circle.left:before{content:"\f137"}i.icon.chevron.circle.right:before{content:"\f138"}i.icon.chevron.circle.up:before{content:"\f139"}i.icon.chevron.down:before{content:"\f078"}i.icon.chevron.left:before{content:"\f053"}i.icon.chevron.right:before{content:"\f054"}i.icon.chevron.up:before{content:"\f077"}i.icon.child:before{content:"\f1ae"}i.icon.chrome:before{content:"\f268"}i.icon.circle:before{content:"\f111"}i.icon.circle.notch:before{content:"\f1ce"}i.icon.clipboard:before{content:"\f328"}i.icon.clipboard.check:before{content:"\f46c"}i.icon.clipboard.list:before{content:"\f46d"}i.icon.clock:before{content:"\f017"}i.icon.clone:before{content:"\f24d"}i.icon.closed.captioning:before{content:"\f20a"}i.icon.cloud:before{content:"\f0c2"}i.icon.cloudscale:before{content:"\f383"}i.icon.cloudsmith:before{content:"\f384"}i.icon.cloudversify:before{content:"\f385"}i.icon.code:before{content:"\f121"}i.icon.code.branch:before{content:"\f126"}i.icon.codepen:before{content:"\f1cb"}i.icon.codiepie:before{content:"\f284"}i.icon.coffee:before{content:"\f0f4"}i.icon.cog:before{content:"\f013"}i.icon.cogs:before{content:"\f085"}i.icon.columns:before{content:"\f0db"}i.icon.comment:before{content:"\f075"}i.icon.comment.alternate:before{content:"\f27a"}i.icon.comments:before{content:"\f086"}i.icon.compass:before{content:"\f14e"}i.icon.compress:before{content:"\f066"}i.icon.connectdevelop:before{content:"\f20e"}i.icon.contao:before{content:"\f26d"}i.icon.copy:before{content:"\f0c5"}i.icon.copyright:before{content:"\f1f9"}i.icon.cpanel:before{content:"\f388"}i.icon.creative.commons:before{content:"\f25e"}i.icon.credit.card:before{content:"\f09d"}i.icon.crop:before{content:"\f125"}i.icon.crosshairs:before{content:"\f05b"}i.icon.css3:before{content:"\f13c"}i.icon.css3.alternate:before{content:"\f38b"}i.icon.cube:before{content:"\f1b2"}i.icon.cubes:before{content:"\f1b3"}i.icon.cut:before{content:"\f0c4"}i.icon.cuttlefish:before{content:"\f38c"}i.icon.d.and.d:before{content:"\f38d"}i.icon.dashcube:before{content:"\f210"}i.icon.database:before{content:"\f1c0"}i.icon.deaf:before{content:"\f2a4"}i.icon.delicious:before{content:"\f1a5"}i.icon.deploydog:before{content:"\f38e"}i.icon.deskpro:before{content:"\f38f"}i.icon.desktop:before{content:"\f108"}i.icon.deviantart:before{content:"\f1bd"}i.icon.digg:before{content:"\f1a6"}i.icon.digital.ocean:before{content:"\f391"}i.icon.discord:before{content:"\f392"}i.icon.discourse:before{content:"\f393"}i.icon.dna:before{content:"\f471"}i.icon.dochub:before{content:"\f394"}i.icon.docker:before{content:"\f395"}i.icon.dollar.sign:before{content:"\f155"}i.icon.dolly:before{content:"\f472"}i.icon.dolly.flatbed:before{content:"\f474"}i.icon.dot.circle:before{content:"\f192"}i.icon.download:before{content:"\f019"}i.icon.draft2digital:before{content:"\f396"}i.icon.dribbble:before{content:"\f17d"}i.icon.dribbble.square:before{content:"\f397"}i.icon.dropbox:before{content:"\f16b"}i.icon.drupal:before{content:"\f1a9"}i.icon.dyalog:before{content:"\f399"}i.icon.earlybirds:before{content:"\f39a"}i.icon.edge:before{content:"\f282"}i.icon.edit:before{content:"\f044"}i.icon.eject:before{content:"\f052"}i.icon.elementor:before{content:"\f430"}i.icon.ellipsis.horizontal:before{content:"\f141"}i.icon.ellipsis.vertical:before{content:"\f142"}i.icon.ember:before{content:"\f423"}i.icon.empire:before{content:"\f1d1"}i.icon.envelope:before{content:"\f0e0"}i.icon.envelope.open:before{content:"\f2b6"}i.icon.envelope.square:before{content:"\f199"}i.icon.envira:before{content:"\f299"}i.icon.eraser:before{content:"\f12d"}i.icon.erlang:before{content:"\f39d"}i.icon.ethereum:before{content:"\f42e"}i.icon.etsy:before{content:"\f2d7"}i.icon.euro.sign:before{content:"\f153"}i.icon.exchange.alternate:before{content:"\f362"}i.icon.exclamation:before{content:"\f12a"}i.icon.exclamation.circle:before{content:"\f06a"}i.icon.exclamation.triangle:before{content:"\f071"}i.icon.expand:before{content:"\f065"}i.icon.expand.arrows.alternate:before{content:"\f31e"}i.icon.expeditedssl:before{content:"\f23e"}i.icon.external.alternate:before{content:"\f35d"}i.icon.external.square.alternate:before{content:"\f360"}i.icon.eye:before{content:"\f06e"}i.icon.eye.dropper:before{content:"\f1fb"}i.icon.eye.slash:before{content:"\f070"}i.icon.facebook:before{content:"\f09a"}i.icon.facebook.f:before{content:"\f39e"}i.icon.facebook.messenger:before{content:"\f39f"}i.icon.facebook.square:before{content:"\f082"}i.icon.fast.backward:before{content:"\f049"}i.icon.fast.forward:before{content:"\f050"}i.icon.fax:before{content:"\f1ac"}i.icon.female:before{content:"\f182"}i.icon.fighter.jet:before{content:"\f0fb"}i.icon.file:before{content:"\f15b"}i.icon.file.alternate:before{content:"\f15c"}i.icon.file.archive:before{content:"\f1c6"}i.icon.file.audio:before{content:"\f1c7"}i.icon.file.code:before{content:"\f1c9"}i.icon.file.excel:before{content:"\f1c3"}i.icon.file.image:before{content:"\f1c5"}i.icon.file.pdf:before{content:"\f1c1"}i.icon.file.powerpoint:before{content:"\f1c4"}i.icon.file.video:before{content:"\f1c8"}i.icon.file.word:before{content:"\f1c2"}i.icon.film:before{content:"\f008"}i.icon.filter:before{content:"\f0b0"}i.icon.fire:before{content:"\f06d"}i.icon.fire.extinguisher:before{content:"\f134"}i.icon.firefox:before{content:"\f269"}i.icon.first.aid:before{content:"\f479"}i.icon.first.order:before{content:"\f2b0"}i.icon.firstdraft:before{content:"\f3a1"}i.icon.flag:before{content:"\f024"}i.icon.flag.checkered:before{content:"\f11e"}i.icon.flask:before{content:"\f0c3"}i.icon.flickr:before{content:"\f16e"}i.icon.flipboard:before{content:"\f44d"}i.icon.fly:before{content:"\f417"}i.icon.folder:before{content:"\f07b"}i.icon.folder.open:before{content:"\f07c"}i.icon.font:before{content:"\f031"}i.icon.font.awesome:before{content:"\f2b4"}i.icon.font.awesome.alternate:before{content:"\f35c"}i.icon.font.awesome.flag:before{content:"\f425"}i.icon.fonticons:before{content:"\f280"}i.icon.fonticons.fi:before{content:"\f3a2"}i.icon.football.ball:before{content:"\f44e"}i.icon.fort.awesome:before{content:"\f286"}i.icon.fort.awesome.alternate:before{content:"\f3a3"}i.icon.forumbee:before{content:"\f211"}i.icon.forward:before{content:"\f04e"}i.icon.foursquare:before{content:"\f180"}i.icon.free.code.camp:before{content:"\f2c5"}i.icon.freebsd:before{content:"\f3a4"}i.icon.frown:before{content:"\f119"}i.icon.futbol:before{content:"\f1e3"}i.icon.gamepad:before{content:"\f11b"}i.icon.gavel:before{content:"\f0e3"}i.icon.gem:before{content:"\f3a5"}i.icon.genderless:before{content:"\f22d"}i.icon.get.pocket:before{content:"\f265"}i.icon.gg:before{content:"\f260"}i.icon.gg.circle:before{content:"\f261"}i.icon.gift:before{content:"\f06b"}i.icon.git:before{content:"\f1d3"}i.icon.git.square:before{content:"\f1d2"}i.icon.github:before{content:"\f09b"}i.icon.github.alternate:before{content:"\f113"}i.icon.github.square:before{content:"\f092"}i.icon.gitkraken:before{content:"\f3a6"}i.icon.gitlab:before{content:"\f296"}i.icon.gitter:before{content:"\f426"}i.icon.glass.martini:before{content:"\f000"}i.icon.glide:before{content:"\f2a5"}i.icon.glide.g:before{content:"\f2a6"}i.icon.globe:before{content:"\f0ac"}i.icon.gofore:before{content:"\f3a7"}i.icon.golf.ball:before{content:"\f450"}i.icon.goodreads:before{content:"\f3a8"}i.icon.goodreads.g:before{content:"\f3a9"}i.icon.google:before{content:"\f1a0"}i.icon.google.drive:before{content:"\f3aa"}i.icon.google.play:before{content:"\f3ab"}i.icon.google.plus:before{content:"\f2b3"}i.icon.google.plus.g:before{content:"\f0d5"}i.icon.google.plus.square:before{content:"\f0d4"}i.icon.google.wallet:before{content:"\f1ee"}i.icon.graduation.cap:before{content:"\f19d"}i.icon.gratipay:before{content:"\f184"}i.icon.grav:before{content:"\f2d6"}i.icon.gripfire:before{content:"\f3ac"}i.icon.grunt:before{content:"\f3ad"}i.icon.gulp:before{content:"\f3ae"}i.icon.h.square:before{content:"\f0fd"}i.icon.hacker.news:before{content:"\f1d4"}i.icon.hacker.news.square:before{content:"\f3af"}i.icon.hand.lizard:before{content:"\f258"}i.icon.hand.paper:before{content:"\f256"}i.icon.hand.peace:before{content:"\f25b"}i.icon.hand.point.down:before{content:"\f0a7"}i.icon.hand.point.left:before{content:"\f0a5"}i.icon.hand.point.right:before{content:"\f0a4"}i.icon.hand.point.up:before{content:"\f0a6"}i.icon.hand.pointer:before{content:"\f25a"}i.icon.hand.rock:before{content:"\f255"}i.icon.hand.scissors:before{content:"\f257"}i.icon.hand.spock:before{content:"\f259"}i.icon.handshake:before{content:"\f2b5"}i.icon.hashtag:before{content:"\f292"}i.icon.hdd:before{content:"\f0a0"}i.icon.heading:before{content:"\f1dc"}i.icon.headphones:before{content:"\f025"}i.icon.heart:before{content:"\f004"}i.icon.heartbeat:before{content:"\f21e"}i.icon.hips:before{content:"\f452"}i.icon.hire.a.helper:before{content:"\f3b0"}i.icon.history:before{content:"\f1da"}i.icon.hockey.puck:before{content:"\f453"}i.icon.home:before{content:"\f015"}i.icon.hooli:before{content:"\f427"}i.icon.hospital:before{content:"\f0f8"}i.icon.hospital.symbol:before{content:"\f47e"}i.icon.hotjar:before{content:"\f3b1"}i.icon.hourglass:before{content:"\f254"}i.icon.hourglass.end:before{content:"\f253"}i.icon.hourglass.half:before{content:"\f252"}i.icon.hourglass.start:before{content:"\f251"}i.icon.houzz:before{content:"\f27c"}i.icon.html5:before{content:"\f13b"}i.icon.hubspot:before{content:"\f3b2"}i.icon.i.cursor:before{content:"\f246"}i.icon.id.badge:before{content:"\f2c1"}i.icon.id.card:before{content:"\f2c2"}i.icon.image:before{content:"\f03e"}i.icon.images:before{content:"\f302"}i.icon.imdb:before{content:"\f2d8"}i.icon.inbox:before{content:"\f01c"}i.icon.indent:before{content:"\f03c"}i.icon.industry:before{content:"\f275"}i.icon.info:before{content:"\f129"}i.icon.info.circle:before{content:"\f05a"}i.icon.instagram:before{content:"\f16d"}i.icon.internet.explorer:before{content:"\f26b"}i.icon.ioxhost:before{content:"\f208"}i.icon.italic:before{content:"\f033"}i.icon.itunes:before{content:"\f3b4"}i.icon.itunes.note:before{content:"\f3b5"}i.icon.jenkins:before{content:"\f3b6"}i.icon.joget:before{content:"\f3b7"}i.icon.joomla:before{content:"\f1aa"}i.icon.js:before{content:"\f3b8"}i.icon.js.square:before{content:"\f3b9"}i.icon.jsfiddle:before{content:"\f1cc"}i.icon.key:before{content:"\f084"}i.icon.keyboard:before{content:"\f11c"}i.icon.keycdn:before{content:"\f3ba"}i.icon.kickstarter:before{content:"\f3bb"}i.icon.kickstarter.k:before{content:"\f3bc"}i.icon.korvue:before{content:"\f42f"}i.icon.language:before{content:"\f1ab"}i.icon.laptop:before{content:"\f109"}i.icon.laravel:before{content:"\f3bd"}i.icon.lastfm:before{content:"\f202"}i.icon.lastfm.square:before{content:"\f203"}i.icon.leaf:before{content:"\f06c"}i.icon.leanpub:before{content:"\f212"}i.icon.lemon:before{content:"\f094"}i.icon.less:before{content:"\f41d"}i.icon.level.down.alternate:before{content:"\f3be"}i.icon.level.up.alternate:before{content:"\f3bf"}i.icon.life.ring:before{content:"\f1cd"}i.icon.lightbulb:before{content:"\f0eb"}i.icon.linechat:before{content:"\f3c0"}i.icon.linkify:before{content:"\f0c1"}i.icon.linkedin:before{content:"\f08c"}i.icon.linkedin.alt:before{content:"\f0e1"}i.icon.linode:before{content:"\f2b8"}i.icon.linux:before{content:"\f17c"}i.icon.lira.sign:before{content:"\f195"}i.icon.list:before{content:"\f03a"}i.icon.list.alternate:before{content:"\f022"}i.icon.list.ol:before{content:"\f0cb"}i.icon.list.ul:before{content:"\f0ca"}i.icon.location.arrow:before{content:"\f124"}i.icon.lock:before{content:"\f023"}i.icon.lock.open:before{content:"\f3c1"}i.icon.long.arrow.alternate.down:before{content:"\f309"}i.icon.long.arrow.alternate.left:before{content:"\f30a"}i.icon.long.arrow.alternate.right:before{content:"\f30b"}i.icon.long.arrow.alternate.up:before{content:"\f30c"}i.icon.low.vision:before{content:"\f2a8"}i.icon.lyft:before{content:"\f3c3"}i.icon.magento:before{content:"\f3c4"}i.icon.magic:before{content:"\f0d0"}i.icon.magnet:before{content:"\f076"}i.icon.male:before{content:"\f183"}i.icon.map:before{content:"\f279"}i.icon.map.marker:before{content:"\f041"}i.icon.map.marker.alternate:before{content:"\f3c5"}i.icon.map.pin:before{content:"\f276"}i.icon.map.signs:before{content:"\f277"}i.icon.mars:before{content:"\f222"}i.icon.mars.double:before{content:"\f227"}i.icon.mars.stroke:before{content:"\f229"}i.icon.mars.stroke.horizontal:before{content:"\f22b"}i.icon.mars.stroke.vertical:before{content:"\f22a"}i.icon.maxcdn:before{content:"\f136"}i.icon.medapps:before{content:"\f3c6"}i.icon.medium:before{content:"\f23a"}i.icon.medium.m:before{content:"\f3c7"}i.icon.medkit:before{content:"\f0fa"}i.icon.medrt:before{content:"\f3c8"}i.icon.meetup:before{content:"\f2e0"}i.icon.meh:before{content:"\f11a"}i.icon.mercury:before{content:"\f223"}i.icon.microchip:before{content:"\f2db"}i.icon.microphone:before{content:"\f130"}i.icon.microphone.slash:before{content:"\f131"}i.icon.microsoft:before{content:"\f3ca"}i.icon.minus:before{content:"\f068"}i.icon.minus.circle:before{content:"\f056"}i.icon.minus.square:before{content:"\f146"}i.icon.mix:before{content:"\f3cb"}i.icon.mixcloud:before{content:"\f289"}i.icon.mizuni:before{content:"\f3cc"}i.icon.mobile:before{content:"\f10b"}i.icon.mobile.alternate:before{content:"\f3cd"}i.icon.modx:before{content:"\f285"}i.icon.monero:before{content:"\f3d0"}i.icon.money.bill.alternate:before{content:"\f3d1"}i.icon.moon:before{content:"\f186"}i.icon.motorcycle:before{content:"\f21c"}i.icon.mouse.pointer:before{content:"\f245"}i.icon.music:before{content:"\f001"}i.icon.napster:before{content:"\f3d2"}i.icon.neuter:before{content:"\f22c"}i.icon.newspaper:before{content:"\f1ea"}i.icon.nintendo.switch:before{content:"\f418"}i.icon.node:before{content:"\f419"}i.icon.node.js:before{content:"\f3d3"}i.icon.npm:before{content:"\f3d4"}i.icon.ns8:before{content:"\f3d5"}i.icon.nutritionix:before{content:"\f3d6"}i.icon.object.group:before{content:"\f247"}i.icon.object.ungroup:before{content:"\f248"}i.icon.odnoklassniki:before{content:"\f263"}i.icon.odnoklassniki.square:before{content:"\f264"}i.icon.opencart:before{content:"\f23d"}i.icon.openid:before{content:"\f19b"}i.icon.opera:before{content:"\f26a"}i.icon.optin.monster:before{content:"\f23c"}i.icon.osi:before{content:"\f41a"}i.icon.outdent:before{content:"\f03b"}i.icon.page4:before{content:"\f3d7"}i.icon.pagelines:before{content:"\f18c"}i.icon.paint.brush:before{content:"\f1fc"}i.icon.palfed:before{content:"\f3d8"}i.icon.pallet:before{content:"\f482"}i.icon.paper.plane:before{content:"\f1d8"}i.icon.paperclip:before{content:"\f0c6"}i.icon.paragraph:before{content:"\f1dd"}i.icon.paste:before{content:"\f0ea"}i.icon.patreon:before{content:"\f3d9"}i.icon.pause:before{content:"\f04c"}i.icon.pause.circle:before{content:"\f28b"}i.icon.paw:before{content:"\f1b0"}i.icon.paypal:before{content:"\f1ed"}i.icon.pen.square:before{content:"\f14b"}i.icon.pencil.alternate:before{content:"\f303"}i.icon.percent:before{content:"\f295"}i.icon.periscope:before{content:"\f3da"}i.icon.phabricator:before{content:"\f3db"}i.icon.phoenix.framework:before{content:"\f3dc"}i.icon.phone:before{content:"\f095"}i.icon.phone.square:before{content:"\f098"}i.icon.phone.volume:before{content:"\f2a0"}i.icon.php:before{content:"\f457"}i.icon.pied.piper:before{content:"\f2ae"}i.icon.pied.piper.alternate:before{content:"\f1a8"}i.icon.pied.piper.pp:before{content:"\f1a7"}i.icon.pills:before{content:"\f484"}i.icon.pinterest:before{content:"\f0d2"}i.icon.pinterest.p:before{content:"\f231"}i.icon.pinterest.square:before{content:"\f0d3"}i.icon.plane:before{content:"\f072"}i.icon.play:before{content:"\f04b"}i.icon.play.circle:before{content:"\f144"}i.icon.playstation:before{content:"\f3df"}i.icon.plug:before{content:"\f1e6"}i.icon.plus:before{content:"\f067"}i.icon.plus.circle:before{content:"\f055"}i.icon.plus.square:before{content:"\f0fe"}i.icon.podcast:before{content:"\f2ce"}i.icon.pound.sign:before{content:"\f154"}i.icon.power.off:before{content:"\f011"}i.icon.print:before{content:"\f02f"}i.icon.product.hunt:before{content:"\f288"}i.icon.pushed:before{content:"\f3e1"}i.icon.puzzle.piece:before{content:"\f12e"}i.icon.python:before{content:"\f3e2"}i.icon.qq:before{content:"\f1d6"}i.icon.qrcode:before{content:"\f029"}i.icon.question:before{content:"\f128"}i.icon.question.circle:before{content:"\f059"}i.icon.quidditch:before{content:"\f458"}i.icon.quinscape:before{content:"\f459"}i.icon.quora:before{content:"\f2c4"}i.icon.quote.left:before{content:"\f10d"}i.icon.quote.right:before{content:"\f10e"}i.icon.random:before{content:"\f074"}i.icon.ravelry:before{content:"\f2d9"}i.icon.react:before{content:"\f41b"}i.icon.rebel:before{content:"\f1d0"}i.icon.recycle:before{content:"\f1b8"}i.icon.redriver:before{content:"\f3e3"}i.icon.reddit:before{content:"\f1a1"}i.icon.reddit.alien:before{content:"\f281"}i.icon.reddit.square:before{content:"\f1a2"}i.icon.redo:before{content:"\f01e"}i.icon.redo.alternate:before{content:"\f2f9"}i.icon.registered:before{content:"\f25d"}i.icon.rendact:before{content:"\f3e4"}i.icon.renren:before{content:"\f18b"}i.icon.reply:before{content:"\f3e5"}i.icon.reply.all:before{content:"\f122"}i.icon.replyd:before{content:"\f3e6"}i.icon.resolving:before{content:"\f3e7"}i.icon.retweet:before{content:"\f079"}i.icon.road:before{content:"\f018"}i.icon.rocket:before{content:"\f135"}i.icon.rocketchat:before{content:"\f3e8"}i.icon.rockrms:before{content:"\f3e9"}i.icon.rss:before{content:"\f09e"}i.icon.rss.square:before{content:"\f143"}i.icon.ruble.sign:before{content:"\f158"}i.icon.rupee.sign:before{content:"\f156"}i.icon.safari:before{content:"\f267"}i.icon.sass:before{content:"\f41e"}i.icon.save:before{content:"\f0c7"}i.icon.schlix:before{content:"\f3ea"}i.icon.scribd:before{content:"\f28a"}i.icon.search:before{content:"\f002"}i.icon.search.minus:before{content:"\f010"}i.icon.search.plus:before{content:"\f00e"}i.icon.searchengin:before{content:"\f3eb"}i.icon.sellcast:before{content:"\f2da"}i.icon.sellsy:before{content:"\f213"}i.icon.server:before{content:"\f233"}i.icon.servicestack:before{content:"\f3ec"}i.icon.share:before{content:"\f064"}i.icon.share.alternate:before{content:"\f1e0"}i.icon.share.alternate.square:before{content:"\f1e1"}i.icon.share.square:before{content:"\f14d"}i.icon.shekel.sign:before{content:"\f20b"}i.icon.shield.alternate:before{content:"\f3ed"}i.icon.ship:before{content:"\f21a"}i.icon.shipping.fast:before{content:"\f48b"}i.icon.shirtsinbulk:before{content:"\f214"}i.icon.shopping.bag:before{content:"\f290"}i.icon.shopping.basket:before{content:"\f291"}i.icon.shopping.cart:before{content:"\f07a"}i.icon.shower:before{content:"\f2cc"}i.icon.sign.language:before{content:"\f2a7"}i.icon.signal:before{content:"\f012"}i.icon.simplybuilt:before{content:"\f215"}i.icon.sistrix:before{content:"\f3ee"}i.icon.sitemap:before{content:"\f0e8"}i.icon.skyatlas:before{content:"\f216"}i.icon.skype:before{content:"\f17e"}i.icon.slack:before{content:"\f198"}i.icon.slack.hash:before{content:"\f3ef"}i.icon.sliders.horizontal:before{content:"\f1de"}i.icon.slideshare:before{content:"\f1e7"}i.icon.smile:before{content:"\f118"}i.icon.snapchat:before{content:"\f2ab"}i.icon.snapchat.ghost:before{content:"\f2ac"}i.icon.snapchat.square:before{content:"\f2ad"}i.icon.snowflake:before{content:"\f2dc"}i.icon.sort:before{content:"\f0dc"}i.icon.sort.alphabet.down:before{content:"\f15d"}i.icon.sort.alphabet.up:before{content:"\f15e"}i.icon.sort.amount.down:before{content:"\f160"}i.icon.sort.amount.up:before{content:"\f161"}i.icon.sort.down:before{content:"\f0dd"}i.icon.sort.numeric.down:before{content:"\f162"}i.icon.sort.numeric.up:before{content:"\f163"}i.icon.sort.up:before{content:"\f0de"}i.icon.soundcloud:before{content:"\f1be"}i.icon.space.shuttle:before{content:"\f197"}i.icon.speakap:before{content:"\f3f3"}i.icon.spinner:before{content:"\f110"}i.icon.spotify:before{content:"\f1bc"}i.icon.square:before{content:"\f0c8"}i.icon.square.full:before{content:"\f45c"}i.icon.stack.exchange:before{content:"\f18d"}i.icon.stack.overflow:before{content:"\f16c"}i.icon.star:before{content:"\f005"}i.icon.star.half:before{content:"\f089"}i.icon.staylinked:before{content:"\f3f5"}i.icon.steam:before{content:"\f1b6"}i.icon.steam.square:before{content:"\f1b7"}i.icon.steam.symbol:before{content:"\f3f6"}i.icon.step.backward:before{content:"\f048"}i.icon.step.forward:before{content:"\f051"}i.icon.stethoscope:before{content:"\f0f1"}i.icon.sticker.mule:before{content:"\f3f7"}i.icon.sticky.note:before{content:"\f249"}i.icon.stop:before{content:"\f04d"}i.icon.stop.circle:before{content:"\f28d"}i.icon.stopwatch:before{content:"\f2f2"}i.icon.strava:before{content:"\f428"}i.icon.street.view:before{content:"\f21d"}i.icon.strikethrough:before{content:"\f0cc"}i.icon.stripe:before{content:"\f429"}i.icon.stripe.s:before{content:"\f42a"}i.icon.studiovinari:before{content:"\f3f8"}i.icon.stumbleupon:before{content:"\f1a4"}i.icon.stumbleupon.circle:before{content:"\f1a3"}i.icon.subscript:before{content:"\f12c"}i.icon.subway:before{content:"\f239"}i.icon.suitcase:before{content:"\f0f2"}i.icon.sun:before{content:"\f185"}i.icon.superpowers:before{content:"\f2dd"}i.icon.superscript:before{content:"\f12b"}i.icon.supple:before{content:"\f3f9"}i.icon.sync:before{content:"\f021"}i.icon.sync.alternate:before{content:"\f2f1"}i.icon.syringe:before{content:"\f48e"}i.icon.table:before{content:"\f0ce"}i.icon.table.tennis:before{content:"\f45d"}i.icon.tablet:before{content:"\f10a"}i.icon.tablet.alternate:before{content:"\f3fa"}i.icon.tachometer.alternate:before{content:"\f3fd"}i.icon.tag:before{content:"\f02b"}i.icon.tags:before{content:"\f02c"}i.icon.tasks:before{content:"\f0ae"}i.icon.taxi:before{content:"\f1ba"}i.icon.telegram:before{content:"\f2c6"}i.icon.telegram.plane:before{content:"\f3fe"}i.icon.tencent.weibo:before{content:"\f1d5"}i.icon.terminal:before{content:"\f120"}i.icon.text.height:before{content:"\f034"}i.icon.text.width:before{content:"\f035"}i.icon.th:before{content:"\f00a"}i.icon.th.large:before{content:"\f009"}i.icon.th.list:before{content:"\f00b"}i.icon.themeisle:before{content:"\f2b2"}i.icon.thermometer:before{content:"\f491"}i.icon.thermometer.empty:before{content:"\f2cb"}i.icon.thermometer.full:before{content:"\f2c7"}i.icon.thermometer.half:before{content:"\f2c9"}i.icon.thermometer.quarter:before{content:"\f2ca"}i.icon.thermometer.three.quarters:before{content:"\f2c8"}i.icon.thumbs.down:before{content:"\f165"}i.icon.thumbs.up:before{content:"\f164"}i.icon.thumbtack:before{content:"\f08d"}i.icon.ticket.alternate:before{content:"\f3ff"}i.icon.times:before{content:"\f00d"}i.icon.times.circle:before{content:"\f057"}i.icon.tint:before{content:"\f043"}i.icon.toggle.off:before{content:"\f204"}i.icon.toggle.on:before{content:"\f205"}i.icon.trademark:before{content:"\f25c"}i.icon.train:before{content:"\f238"}i.icon.transgender:before{content:"\f224"}i.icon.transgender.alternate:before{content:"\f225"}i.icon.trash:before{content:"\f1f8"}i.icon.trash.alternate:before{content:"\f2ed"}i.icon.tree:before{content:"\f1bb"}i.icon.trello:before{content:"\f181"}i.icon.tripadvisor:before{content:"\f262"}i.icon.trophy:before{content:"\f091"}i.icon.truck:before{content:"\f0d1"}i.icon.tty:before{content:"\f1e4"}i.icon.tumblr:before{content:"\f173"}i.icon.tumblr.square:before{content:"\f174"}i.icon.tv:before{content:"\f26c"}i.icon.twitch:before{content:"\f1e8"}i.icon.twitter:before{content:"\f099"}i.icon.twitter.square:before{content:"\f081"}i.icon.typo3:before{content:"\f42b"}i.icon.uber:before{content:"\f402"}i.icon.uikit:before{content:"\f403"}i.icon.umbrella:before{content:"\f0e9"}i.icon.underline:before{content:"\f0cd"}i.icon.undo:before{content:"\f0e2"}i.icon.undo.alternate:before{content:"\f2ea"}i.icon.uniregistry:before{content:"\f404"}i.icon.universal.access:before{content:"\f29a"}i.icon.university:before{content:"\f19c"}i.icon.unlink:before{content:"\f127"}i.icon.unlock:before{content:"\f09c"}i.icon.unlock.alternate:before{content:"\f13e"}i.icon.untappd:before{content:"\f405"}i.icon.upload:before{content:"\f093"}i.icon.usb:before{content:"\f287"}i.icon.user:before{content:"\f007"}i.icon.user.circle:before{content:"\f2bd"}i.icon.user.md:before{content:"\f0f0"}i.icon.user.plus:before{content:"\f234"}i.icon.user.secret:before{content:"\f21b"}i.icon.user.times:before{content:"\f235"}i.icon.users:before{content:"\f0c0"}i.icon.ussunnah:before{content:"\f407"}i.icon.utensil.spoon:before{content:"\f2e5"}i.icon.utensils:before{content:"\f2e7"}i.icon.vaadin:before{content:"\f408"}i.icon.venus:before{content:"\f221"}i.icon.venus.double:before{content:"\f226"}i.icon.venus.mars:before{content:"\f228"}i.icon.viacoin:before{content:"\f237"}i.icon.viadeo:before{content:"\f2a9"}i.icon.viadeo.square:before{content:"\f2aa"}i.icon.viber:before{content:"\f409"}i.icon.video:before{content:"\f03d"}i.icon.vimeo:before{content:"\f40a"}i.icon.vimeo.square:before{content:"\f194"}i.icon.vimeo.v:before{content:"\f27d"}i.icon.vine:before{content:"\f1ca"}i.icon.vk:before{content:"\f189"}i.icon.vnv:before{content:"\f40b"}i.icon.volleyball.ball:before{content:"\f45f"}i.icon.volume.down:before{content:"\f027"}i.icon.volume.off:before{content:"\f026"}i.icon.volume.up:before{content:"\f028"}i.icon.vuejs:before{content:"\f41f"}i.icon.warehouse:before{content:"\f494"}i.icon.weibo:before{content:"\f18a"}i.icon.weight:before{content:"\f496"}i.icon.weixin:before{content:"\f1d7"}i.icon.whatsapp:before{content:"\f232"}i.icon.whatsapp.square:before{content:"\f40c"}i.icon.wheelchair:before{content:"\f193"}i.icon.whmcs:before{content:"\f40d"}i.icon.wifi:before{content:"\f1eb"}i.icon.wikipedia.w:before{content:"\f266"}i.icon.window.close:before{content:"\f410"}i.icon.window.maximize:before{content:"\f2d0"}i.icon.window.minimize:before{content:"\f2d1"}i.icon.window.restore:before{content:"\f2d2"}i.icon.windows:before{content:"\f17a"}i.icon.won.sign:before{content:"\f159"}i.icon.wordpress:before{content:"\f19a"}i.icon.wordpress.simple:before{content:"\f411"}i.icon.wpbeginner:before{content:"\f297"}i.icon.wpexplorer:before{content:"\f2de"}i.icon.wpforms:before{content:"\f298"}i.icon.wrench:before{content:"\f0ad"}i.icon.xbox:before{content:"\f412"}i.icon.xing:before{content:"\f168"}i.icon.xing.square:before{content:"\f169"}i.icon.y.combinator:before{content:"\f23b"}i.icon.yahoo:before{content:"\f19e"}i.icon.yandex:before{content:"\f413"}i.icon.yandex.international:before{content:"\f414"}i.icon.yelp:before{content:"\f1e9"}i.icon.yen.sign:before{content:"\f157"}i.icon.yoast:before{content:"\f2b1"}i.icon.youtube:before{content:"\f167"}i.icon.youtube.square:before{content:"\f431"}i.icon.chess.rock:before{content:"\f447"}i.icon.ordered.list:before{content:"\f0cb"}i.icon.unordered.list:before{content:"\f0ca"}i.icon.user.doctor:before{content:"\f0f0"}i.icon.shield:before{content:"\f3ed"}i.icon.puzzle:before{content:"\f12e"}i.icon.credit.card.amazon.pay:before{content:"\f42d"}i.icon.credit.card.american.express:before{content:"\f1f3"}i.icon.credit.card.diners.club:before{content:"\f24c"}i.icon.credit.card.discover:before{content:"\f1f2"}i.icon.credit.card.jcb:before{content:"\f24b"}i.icon.credit.card.mastercard:before{content:"\f1f1"}i.icon.credit.card.paypal:before{content:"\f1f4"}i.icon.credit.card.stripe:before{content:"\f1f5"}i.icon.credit.card.visa:before{content:"\f1f0"}i.icon.add.circle:before{content:"\f055"}i.icon.add.square:before{content:"\f0fe"}i.icon.add.to.calendar:before{content:"\f271"}i.icon.add.to.cart:before{content:"\f217"}i.icon.add.user:before{content:"\f234"}i.icon.add:before{content:"\f067"}i.icon.alarm.mute:before{content:"\f1f6"}i.icon.alarm:before{content:"\f0f3"}i.icon.ald:before{content:"\f2a2"}i.icon.als:before{content:"\f2a2"}i.icon.american.express.card:before{content:"\f1f3"}i.icon.american.express:before{content:"\f1f3"}i.icon.amex:before{content:"\f1f3"}i.icon.announcement:before{content:"\f0a1"}i.icon.area.chart:before{content:"\f1fe"}i.icon.area.graph:before{content:"\f1fe"}i.icon.arrow.down.cart:before{content:"\f218"}i.icon.asexual:before{content:"\f22d"}i.icon.asl.interpreting:before{content:"\f2a3"}i.icon.asl:before{content:"\f2a3"}i.icon.assistive.listening.devices:before{content:"\f2a2"}i.icon.attach:before{content:"\f0c6"}i.icon.attention:before{content:"\f06a"}i.icon.balance:before{content:"\f24e"}i.icon.bar:before{content:"\f0fc"}i.icon.bathtub:before{content:"\f2cd"}i.icon.battery.four:before{content:"\f240"}i.icon.battery.high:before{content:"\f241"}i.icon.battery.low:before{content:"\f243"}i.icon.battery.medium:before{content:"\f242"}i.icon.battery.one:before{content:"\f243"}i.icon.battery.three:before{content:"\f241"}i.icon.battery.two:before{content:"\f242"}i.icon.battery.zero:before{content:"\f244"}i.icon.birthday:before{content:"\f1fd"}i.icon.block.layout:before{content:"\f009"}i.icon.bluetooth.alternative:before{content:"\f294"}i.icon.broken.chain:before{content:"\f127"}i.icon.browser:before{content:"\f022"}i.icon.call.square:before{content:"\f098"}i.icon.call:before{content:"\f095"}i.icon.cancel:before{content:"\f00d"}i.icon.cart:before{content:"\f07a"}i.icon.cc:before{content:"\f20a"}i.icon.chain:before{content:"\f0c1"}i.icon.chat:before{content:"\f075"}i.icon.checked.calendar:before{content:"\f274"}i.icon.checkmark:before{content:"\f00c"}i.icon.circle.notched:before{content:"\f1ce"}i.icon.close:before{content:"\f00d"}i.icon.cny:before{content:"\f157"}i.icon.cocktail:before{content:"\f000"}i.icon.commenting:before{content:"\f27a"}i.icon.computer:before{content:"\f108"}i.icon.configure:before{content:"\f0ad"}i.icon.content:before{content:"\f0c9"}i.icon.deafness:before{content:"\f2a4"}i.icon.delete.calendar:before{content:"\f273"}i.icon.delete:before{content:"\f00d"}i.icon.detective:before{content:"\f21b"}i.icon.diners.club.card:before{content:"\f24c"}i.icon.diners.club:before{content:"\f24c"}i.icon.discover.card:before{content:"\f1f2"}i.icon.discover:before{content:"\f1f2"}i.icon.discussions:before{content:"\f086"}i.icon.doctor:before{content:"\f0f0"}i.icon.dollar:before{content:"\f155"}i.icon.dont:before{content:"\f05e"}i.icon.dribble:before{content:"\f17d"}i.icon.drivers.license:before{content:"\f2c2"}i.icon.dropdown:before{content:"\f0d7"}i.icon.eercast:before{content:"\f2da"}i.icon.emergency:before{content:"\f0f9"}i.icon.envira.gallery:before{content:"\f299"}i.icon.erase:before{content:"\f12d"}i.icon.eur:before{content:"\f153"}i.icon.euro:before{content:"\f153"}i.icon.eyedropper:before{content:"\f1fb"}i.icon.fa:before{content:"\f2b4"}i.icon.factory:before{content:"\f275"}i.icon.favorite:before{content:"\f005"}i.icon.feed:before{content:"\f09e"}i.icon.female.homosexual:before{content:"\f226"}i.icon.file.text:before{content:"\f15c"}i.icon.find:before{content:"\f1e5"}i.icon.first.aid:before{content:"\f0fa"}i.icon.five.hundred.pixels:before{content:"\f26e"}i.icon.fork:before{content:"\f126"}i.icon.game:before{content:"\f11b"}i.icon.gay:before{content:"\f227"}i.icon.gbp:before{content:"\f154"}i.icon.gittip:before{content:"\f184"}i.icon.google.plus.circle:before{content:"\f2b3"}i.icon.google.plus.official:before{content:"\f2b3"}i.icon.grab:before{content:"\f255"}i.icon.graduation:before{content:"\f19d"}i.icon.grid.layout:before{content:"\f00a"}i.icon.group:before{content:"\f0c0"}i.icon.h:before{content:"\f0fd"}i.icon.hand.victory:before{content:"\f25b"}i.icon.handicap:before{content:"\f193"}i.icon.hard.of.hearing:before{content:"\f2a4"}i.icon.header:before{content:"\f1dc"}i.icon.help.circle:before{content:"\f059"}i.icon.help:before{content:"\f128"}i.icon.heterosexual:before{content:"\f228"}i.icon.hide:before{content:"\f070"}i.icon.hotel:before{content:"\f236"}i.icon.hourglass.four:before{content:"\f254"}i.icon.hourglass.full:before{content:"\f254"}i.icon.hourglass.one:before{content:"\f251"}i.icon.hourglass.three:before{content:"\f253"}i.icon.hourglass.two:before{content:"\f252"}i.icon.idea:before{content:"\f0eb"}i.icon.ils:before{content:"\f20b"}i.icon.in-cart:before{content:"\f218"}i.icon.inr:before{content:"\f156"}i.icon.intergender:before{content:"\f224"}i.icon.intersex:before{content:"\f224"}i.icon.japan.credit.bureau.card:before{content:"\f24b"}i.icon.japan.credit.bureau:before{content:"\f24b"}i.icon.jcb:before{content:"\f24b"}i.icon.jpy:before{content:"\f157"}i.icon.krw:before{content:"\f159"}i.icon.lab:before{content:"\f0c3"}i.icon.law:before{content:"\f24e"}i.icon.legal:before{content:"\f0e3"}i.icon.lesbian:before{content:"\f226"}i.icon.lightning:before{content:"\f0e7"}i.icon.like:before{content:"\f004"}i.icon.line.graph:before{content:"\f201"}i.icon.linkedin.square:before{content:"\f08c"}i.icon.linkify:before{content:"\f0c1"}i.icon.lira:before{content:"\f195"}i.icon.list.layout:before{content:"\f00b"}i.icon.magnify:before{content:"\f00e"}i.icon.mail.forward:before{content:"\f064"}i.icon.mail.square:before{content:"\f199"}i.icon.mail:before{content:"\f0e0"}i.icon.male.homosexual:before{content:"\f227"}i.icon.man:before{content:"\f222"}i.icon.marker:before{content:"\f041"}i.icon.mars.alternate:before{content:"\f229"}i.icon.mars.horizontal:before{content:"\f22b"}i.icon.mars.vertical:before{content:"\f22a"}i.icon.mastercard.card:before{content:"\f1f1"}i.icon.mastercard:before{content:"\f1f1"}i.icon.microsoft.edge:before{content:"\f282"}i.icon.military:before{content:"\f0fb"}i.icon.ms.edge:before{content:"\f282"}i.icon.mute:before{content:"\f131"}i.icon.new.pied.piper:before{content:"\f2ae"}i.icon.non.binary.transgender:before{content:"\f223"}i.icon.numbered.list:before{content:"\f0cb"}i.icon.optinmonster:before{content:"\f23c"}i.icon.options:before{content:"\f1de"}i.icon.other.gender.horizontal:before{content:"\f22b"}i.icon.other.gender.vertical:before{content:"\f22a"}i.icon.other.gender:before{content:"\f229"}i.icon.payment:before{content:"\f09d"}i.icon.paypal.card:before{content:"\f1f4"}i.icon.pencil.square:before{content:"\f14b"}i.icon.photo:before{content:"\f030"}i.icon.picture:before{content:"\f03e"}i.icon.pie.chart:before{content:"\f200"}i.icon.pie.graph:before{content:"\f200"}i.icon.pied.piper.hat:before{content:"\f2ae"}i.icon.pin:before{content:"\f08d"}i.icon.plus.cart:before{content:"\f217"}i.icon.pocket:before{content:"\f265"}i.icon.point:before{content:"\f041"}i.icon.pointing.down:before{content:"\f0a7"}i.icon.pointing.left:before{content:"\f0a5"}i.icon.pointing.right:before{content:"\f0a4"}i.icon.pointing.up:before{content:"\f0a6"}i.icon.pound:before{content:"\f154"}i.icon.power.cord:before{content:"\f1e6"}i.icon.power:before{content:"\f011"}i.icon.privacy:before{content:"\f084"}i.icon.r.circle:before{content:"\f25d"}i.icon.rain:before{content:"\f0e9"}i.icon.record:before{content:"\f03d"}i.icon.refresh:before{content:"\f021"}i.icon.remove.circle:before{content:"\f057"}i.icon.remove.from.calendar:before{content:"\f272"}i.icon.remove.user:before{content:"\f235"}i.icon.remove:before{content:"\f00d"}i.icon.repeat:before{content:"\f01e"}i.icon.rmb:before{content:"\f157"}i.icon.rouble:before{content:"\f158"}i.icon.rub:before{content:"\f158"}i.icon.ruble:before{content:"\f158"}i.icon.rupee:before{content:"\f156"}i.icon.s15:before{content:"\f2cd"}i.icon.selected.radio:before{content:"\f192"}i.icon.send:before{content:"\f1d8"}i.icon.setting:before{content:"\f013"}i.icon.settings:before{content:"\f085"}i.icon.shekel:before{content:"\f20b"}i.icon.sheqel:before{content:"\f20b"}i.icon.shipping:before{content:"\f0d1"}i.icon.shop:before{content:"\f07a"}i.icon.shuffle:before{content:"\f074"}i.icon.shutdown:before{content:"\f011"}i.icon.sidebar:before{content:"\f0c9"}i.icon.signing:before{content:"\f2a7"}i.icon.signup:before{content:"\f044"}i.icon.sliders:before{content:"\f1de"}i.icon.soccer:before{content:"\f1e3"}i.icon.sort.alphabet.ascending:before{content:"\f15d"}i.icon.sort.alphabet.descending:before{content:"\f15e"}i.icon.sort.ascending:before{content:"\f0de"}i.icon.sort.content.ascending:before{content:"\f160"}i.icon.sort.content.descending:before{content:"\f161"}i.icon.sort.descending:before{content:"\f0dd"}i.icon.sort.numeric.ascending:before{content:"\f162"}i.icon.sort.numeric.descending:before{content:"\f163"}i.icon.sound:before{content:"\f025"}i.icon.spy:before{content:"\f21b"}i.icon.stripe.card:before{content:"\f1f5"}i.icon.student:before{content:"\f19d"}i.icon.talk:before{content:"\f27a"}i.icon.target:before{content:"\f140"}i.icon.teletype:before{content:"\f1e4"}i.icon.television:before{content:"\f26c"}i.icon.text.cursor:before{content:"\f246"}i.icon.text.telephone:before{content:"\f1e4"}i.icon.theme.isle:before{content:"\f2b2"}i.icon.theme:before{content:"\f043"}i.icon.thermometer:before{content:"\f2c7"}i.icon.thumb.tack:before{content:"\f08d"}i.icon.time:before{content:"\f017"}i.icon.tm:before{content:"\f25c"}i.icon.toggle.down:before{content:"\f150"}i.icon.toggle.left:before{content:"\f191"}i.icon.toggle.right:before{content:"\f152"}i.icon.toggle.up:before{content:"\f151"}i.icon.translate:before{content:"\f1ab"}i.icon.travel:before{content:"\f0b1"}i.icon.treatment:before{content:"\f0f1"}i.icon.triangle.down:before{content:"\f0d7"}i.icon.triangle.left:before{content:"\f0d9"}i.icon.triangle.right:before{content:"\f0da"}i.icon.triangle.up:before{content:"\f0d8"}i.icon.try:before{content:"\f195"}i.icon.unhide:before{content:"\f06e"}i.icon.unlinkify:before{content:"\f127"}i.icon.unmute:before{content:"\f130"}i.icon.usd:before{content:"\f155"}i.icon.user.cancel:before{content:"\f235"}i.icon.user.close:before{content:"\f235"}i.icon.user.delete:before{content:"\f235"}i.icon.user.x:before{content:"\f235"}i.icon.vcard:before{content:"\f2bb"}i.icon.video.camera:before{content:"\f03d"}i.icon.video.play:before{content:"\f144"}i.icon.visa.card:before{content:"\f1f0"}i.icon.visa:before{content:"\f1f0"}i.icon.volume.control.phone:before{content:"\f2a0"}i.icon.wait:before{content:"\f017"}i.icon.warning.circle:before{content:"\f06a"}i.icon.warning.sign:before{content:"\f071"}i.icon.warning:before{content:"\f12a"}i.icon.wechat:before{content:"\f1d7"}i.icon.wi-fi:before{content:"\f1eb"}i.icon.wikipedia:before{content:"\f266"}i.icon.winner:before{content:"\f091"}i.icon.wizard:before{content:"\f0d0"}i.icon.woman:before{content:"\f221"}i.icon.won:before{content:"\f159"}i.icon.wordpress.beginner:before{content:"\f297"}i.icon.wordpress.forms:before{content:"\f298"}i.icon.world:before{content:"\f0ac"}i.icon.write.square:before{content:"\f14b"}i.icon.x:before{content:"\f00d"}i.icon.yc:before{content:"\f23b"}i.icon.ycombinator:before{content:"\f23b"}i.icon.yen:before{content:"\f157"}i.icon.zip:before{content:"\f187"}i.icon.zoom-in:before{content:"\f00e"}i.icon.zoom-out:before{content:"\f010"}i.icon.zoom:before{content:"\f00e"}i.icon.bitbucket.square:before{content:"\f171"}i.icon.checkmark.box:before{content:"\f14a"}i.icon.circle.thin:before{content:"\f111"}i.icon.cloud.download:before{content:"\f381"}i.icon.cloud.upload:before{content:"\f382"}i.icon.compose:before{content:"\f303"}i.icon.conversation:before{content:"\f086"}i.icon.credit.card.alternative:before{content:"\f09d"}i.icon.currency:before{content:"\f3d1"}i.icon.dashboard:before{content:"\f3fd"}i.icon.diamond:before{content:"\f3a5"}i.icon.disk:before{content:"\f0a0"}i.icon.exchange:before{content:"\f362"}i.icon.external.share:before{content:"\f14d"}i.icon.external.square:before{content:"\f360"}i.icon.external:before{content:"\f35d"}i.icon.facebook.official:before{content:"\f082"}i.icon.food:before{content:"\f2e7"}i.icon.hourglass.zero:before{content:"\f253"}i.icon.level.down:before{content:"\f3be"}i.icon.level.up:before{content:"\f3bf"}i.icon.logout:before{content:"\f2f5"}i.icon.meanpath:before{content:"\f0c8"}i.icon.money:before{content:"\f3d1"}i.icon.move:before{content:"\f0b2"}i.icon.pencil:before{content:"\f303"}i.icon.protect:before{content:"\f023"}i.icon.radio:before{content:"\f192"}i.icon.remove.bookmark:before{content:"\f02e"}i.icon.resize.horizontal:before{content:"\f337"}i.icon.resize.vertical:before{content:"\f338"}i.icon.sign-in:before{content:"\f2f6"}i.icon.sign-out:before{content:"\f2f5"}i.icon.spoon:before{content:"\f2e5"}i.icon.star.half.empty:before{content:"\f089"}i.icon.star.half.full:before{content:"\f089"}i.icon.ticket:before{content:"\f3ff"}i.icon.times.rectangle:before{content:"\f410"}i.icon.write:before{content:"\f303"}i.icon.youtube.play:before{content:"\f167"}@font-face{font-family:outline-icons;src:url(../themes/default/assets/fonts/outline-icons.eot);src:url(../themes/default/assets/fonts/outline-icons.eot?#iefix) format('embedded-opentype'),url(../themes/default/assets/fonts/outline-icons.woff2) format('woff2'),url(../themes/default/assets/fonts/outline-icons.woff) format('woff'),url(../themes/default/assets/fonts/outline-icons.ttf) format('truetype'),url(../themes/default/assets/fonts/outline-icons.svg#icons) format('svg');font-style:normal;font-weight:400;font-variant:normal;text-decoration:inherit;text-transform:none}i.icon.outline{font-family:outline-icons}i.icon.address.book.outline:before{content:"\f2b9"}i.icon.address.card.outline:before{content:"\f2bb"}i.icon.arrow.alternate.circle.down.outline:before{content:"\f358"}i.icon.arrow.alternate.circle.left.outline:before{content:"\f359"}i.icon.arrow.alternate.circle.right.outline:before{content:"\f35a"}i.icon.arrow.alternate.circle.up.outline:before{content:"\f35b"}i.icon.bell.outline:before{content:"\f0f3"}i.icon.bell.slash.outline:before{content:"\f1f6"}i.icon.bookmark.outline:before{content:"\f02e"}i.icon.building.outline:before{content:"\f1ad"}i.icon.calendar.outline:before{content:"\f133"}i.icon.calendar.alternate.outline:before{content:"\f073"}i.icon.calendar.check.outline:before{content:"\f274"}i.icon.calendar.minus.outline:before{content:"\f272"}i.icon.calendar.plus.outline:before{content:"\f271"}i.icon.calendar.times.outline:before{content:"\f273"}i.icon.caret.square.down.outline:before{content:"\f150"}i.icon.caret.square.left.outline:before{content:"\f191"}i.icon.caret.square.right.outline:before{content:"\f152"}i.icon.caret.square.up.outline:before{content:"\f151"}i.icon.chart.bar.outline:before{content:"\f080"}i.icon.check.circle.outline:before{content:"\f058"}i.icon.check.square.outline:before{content:"\f14a"}i.icon.circle.outline:before{content:"\f111"}i.icon.clipboard.outline:before{content:"\f328"}i.icon.clock.outline:before{content:"\f017"}i.icon.clone.outline:before{content:"\f24d"}i.icon.closed.captioning.outline:before{content:"\f20a"}i.icon.comment.outline:before{content:"\f075"}i.icon.comment.alternate.outline:before{content:"\f27a"}i.icon.comments.outline:before{content:"\f086"}i.icon.compass.outline:before{content:"\f14e"}i.icon.copy.outline:before{content:"\f0c5"}i.icon.copyright.outline:before{content:"\f1f9"}i.icon.credit.card.outline:before{content:"\f09d"}i.icon.dot.circle.outline:before{content:"\f192"}i.icon.edit.outline:before{content:"\f044"}i.icon.envelope.outline:before{content:"\f0e0"}i.icon.envelope.open.outline:before{content:"\f2b6"}i.icon.eye.slash.outline:before{content:"\f070"}i.icon.file.outline:before{content:"\f15b"}i.icon.file.alternate.outline:before{content:"\f15c"}i.icon.file.archive.outline:before{content:"\f1c6"}i.icon.file.audio.outline:before{content:"\f1c7"}i.icon.file.code.outline:before{content:"\f1c9"}i.icon.file.excel.outline:before{content:"\f1c3"}i.icon.file.image.outline:before{content:"\f1c5"}i.icon.file.pdf.outline:before{content:"\f1c1"}i.icon.file.powerpoint.outline:before{content:"\f1c4"}i.icon.file.video.outline:before{content:"\f1c8"}i.icon.file.word.outline:before{content:"\f1c2"}i.icon.flag.outline:before{content:"\f024"}i.icon.folder.outline:before{content:"\f07b"}i.icon.folder.open.outline:before{content:"\f07c"}i.icon.frown.outline:before{content:"\f119"}i.icon.futbol.outline:before{content:"\f1e3"}i.icon.gem.outline:before{content:"\f3a5"}i.icon.hand.lizard.outline:before{content:"\f258"}i.icon.hand.paper.outline:before{content:"\f256"}i.icon.hand.peace.outline:before{content:"\f25b"}i.icon.hand.point.down.outline:before{content:"\f0a7"}i.icon.hand.point.left.outline:before{content:"\f0a5"}i.icon.hand.point.right.outline:before{content:"\f0a4"}i.icon.hand.point.up.outline:before{content:"\f0a6"}i.icon.hand.pointer.outline:before{content:"\f25a"}i.icon.hand.rock.outline:before{content:"\f255"}i.icon.hand.scissors.outline:before{content:"\f257"}i.icon.hand.spock.outline:before{content:"\f259"}i.icon.handshake.outline:before{content:"\f2b5"}i.icon.hdd.outline:before{content:"\f0a0"}i.icon.heart.outline:before{content:"\f004"}i.icon.hospital.outline:before{content:"\f0f8"}i.icon.hourglass.outline:before{content:"\f254"}i.icon.id.badge.outline:before{content:"\f2c1"}i.icon.id.card.outline:before{content:"\f2c2"}i.icon.image.outline:before{content:"\f03e"}i.icon.images.outline:before{content:"\f302"}i.icon.keyboard.outline:before{content:"\f11c"}i.icon.lemon.outline:before{content:"\f094"}i.icon.life.ring.outline:before{content:"\f1cd"}i.icon.lightbulb.outline:before{content:"\f0eb"}i.icon.list.alternate.outline:before{content:"\f022"}i.icon.map.outline:before{content:"\f279"}i.icon.meh.outline:before{content:"\f11a"}i.icon.minus.square.outline:before{content:"\f146"}i.icon.money.bill.alternate.outline:before{content:"\f3d1"}i.icon.moon.outline:before{content:"\f186"}i.icon.newspaper.outline:before{content:"\f1ea"}i.icon.object.group.outline:before{content:"\f247"}i.icon.object.ungroup.outline:before{content:"\f248"}i.icon.paper.plane.outline:before{content:"\f1d8"}i.icon.pause.circle.outline:before{content:"\f28b"}i.icon.play.circle.outline:before{content:"\f144"}i.icon.plus.square.outline:before{content:"\f0fe"}i.icon.question.circle.outline:before{content:"\f059"}i.icon.registered.outline:before{content:"\f25d"}i.icon.save.outline:before{content:"\f0c7"}i.icon.share.square.outline:before{content:"\f14d"}i.icon.smile.outline:before{content:"\f118"}i.icon.snowflake.outline:before{content:"\f2dc"}i.icon.square.outline:before{content:"\f0c8"}i.icon.star.outline:before{content:"\f005"}i.icon.star.half.outline:before{content:"\f089"}i.icon.sticky.note.outline:before{content:"\f249"}i.icon.stop.circle.outline:before{content:"\f28d"}i.icon.sun.outline:before{content:"\f185"}i.icon.thumbs.down.outline:before{content:"\f165"}i.icon.thumbs.up.outline:before{content:"\f164"}i.icon.times.circle.outline:before{content:"\f057"}i.icon.trash.alternate.outline:before{content:"\f2ed"}i.icon.user.outline:before{content:"\f007"}i.icon.user.circle.outline:before{content:"\f2bd"}i.icon.window.close.outline:before{content:"\f410"}i.icon.window.maximize.outline:before{content:"\f2d0"}i.icon.window.minimize.outline:before{content:"\f2d1"}i.icon.window.restore.outline:before{content:"\f2d2"}i.icon.disk.outline:before{content:"\f0a0"}i.icon.heart.empty,i.icon.star.empty{font-family:outline-icons}i.icon.heart.empty:before{content:"\f004"}i.icon.star.empty:before{content:"\f089"}@font-face{font-family:brand-icons;src:url(../themes/default/assets/fonts/brand-icons.eot);src:url(../themes/default/assets/fonts/brand-icons.eot?#iefix) format('embedded-opentype'),url(../themes/default/assets/fonts/brand-icons.woff2) format('woff2'),url(../themes/default/assets/fonts/brand-icons.woff) format('woff'),url(../themes/default/assets/fonts/brand-icons.ttf) format('truetype'),url(../themes/default/assets/fonts/brand-icons.svg#icons) format('svg');font-style:normal;font-weight:400;font-variant:normal;text-decoration:inherit;text-transform:none}i.icon.\35 00px,i.icon.accessible.icon,i.icon.accusoft,i.icon.adn,i.icon.adversal,i.icon.affiliatetheme,i.icon.algolia,i.icon.amazon,i.icon.amazon.pay,i.icon.amilia,i.icon.android,i.icon.angellist,i.icon.angrycreative,i.icon.angular,i.icon.app.store,i.icon.app.store.ios,i.icon.apper,i.icon.apple,i.icon.apple.pay,i.icon.asymmetrik,i.icon.audible,i.icon.autoprefixer,i.icon.avianex,i.icon.aviato,i.icon.aws,i.icon.bandcamp,i.icon.behance,i.icon.behance.square,i.icon.bimobject,i.icon.bitbucket,i.icon.bitcoin,i.icon.bity,i.icon.black.tie,i.icon.blackberry,i.icon.blogger,i.icon.blogger.b,i.icon.bluetooth,i.icon.bluetooth.b,i.icon.btc,i.icon.buromobelexperte,i.icon.buysellads,i.icon.cc.amazon.pay,i.icon.cc.amex,i.icon.cc.apple.pay,i.icon.cc.diners.club,i.icon.cc.discover,i.icon.cc.jcb,i.icon.cc.mastercard,i.icon.cc.paypal,i.icon.cc.stripe,i.icon.cc.visa,i.icon.centercode,i.icon.chrome,i.icon.cloudscale,i.icon.cloudsmith,i.icon.cloudversify,i.icon.codepen,i.icon.codiepie,i.icon.connectdevelop,i.icon.contao,i.icon.cpanel,i.icon.creative.commons,i.icon.css3,i.icon.css3.alternate,i.icon.cuttlefish,i.icon.d.and.d,i.icon.dashcube,i.icon.delicious,i.icon.deploydog,i.icon.deskpro,i.icon.deviantart,i.icon.digg,i.icon.digital.ocean,i.icon.discord,i.icon.discourse,i.icon.dochub,i.icon.docker,i.icon.draft2digital,i.icon.dribbble,i.icon.dribbble.square,i.icon.dropbox,i.icon.drupal,i.icon.dyalog,i.icon.earlybirds,i.icon.edge,i.icon.elementor,i.icon.ember,i.icon.empire,i.icon.envira,i.icon.erlang,i.icon.ethereum,i.icon.etsy,i.icon.expeditedssl,i.icon.facebook,i.icon.facebook.f,i.icon.facebook.messenger,i.icon.facebook.square,i.icon.firefox,i.icon.first.order,i.icon.firstdraft,i.icon.flickr,i.icon.flipboard,i.icon.fly,i.icon.font.awesome,i.icon.font.awesome.alternate,i.icon.font.awesome.flag,i.icon.fonticons,i.icon.fonticons.fi,i.icon.fort.awesome,i.icon.fort.awesome.alternate,i.icon.forumbee,i.icon.foursquare,i.icon.free.code.camp,i.icon.freebsd,i.icon.get.pocket,i.icon.gg,i.icon.gg.circle,i.icon.git,i.icon.git.square,i.icon.github,i.icon.github.alternate,i.icon.github.square,i.icon.gitkraken,i.icon.gitlab,i.icon.gitter,i.icon.glide,i.icon.glide.g,i.icon.gofore,i.icon.goodreads,i.icon.goodreads.g,i.icon.google,i.icon.google.drive,i.icon.google.play,i.icon.google.plus,i.icon.google.plus.g,i.icon.google.plus.square,i.icon.google.wallet,i.icon.gratipay,i.icon.grav,i.icon.gripfire,i.icon.grunt,i.icon.gulp,i.icon.hacker.news,i.icon.hacker.news.square,i.icon.hips,i.icon.hire.a.helper,i.icon.hooli,i.icon.hotjar,i.icon.houzz,i.icon.html5,i.icon.hubspot,i.icon.imdb,i.icon.instagram,i.icon.internet.explorer,i.icon.ioxhost,i.icon.itunes,i.icon.itunes.note,i.icon.jenkins,i.icon.joget,i.icon.joomla,i.icon.js,i.icon.js.square,i.icon.jsfiddle,i.icon.keycdn,i.icon.kickstarter,i.icon.kickstarter.k,i.icon.korvue,i.icon.laravel,i.icon.lastfm,i.icon.lastfm.square,i.icon.leanpub,i.icon.less,i.icon.linechat,i.icon.linkedin,i.icon.linkedin.alternate,i.icon.linkedin.in,i.icon.linode,i.icon.linux,i.icon.lyft,i.icon.magento,i.icon.maxcdn,i.icon.medapps,i.icon.medium,i.icon.medium.m,i.icon.medrt,i.icon.meetup,i.icon.microsoft,i.icon.mix,i.icon.mixcloud,i.icon.mizuni,i.icon.modx,i.icon.monero,i.icon.napster,i.icon.nintendo.switch,i.icon.node,i.icon.node.js,i.icon.npm,i.icon.ns8,i.icon.nutritionix,i.icon.odnoklassniki,i.icon.odnoklassniki.square,i.icon.opencart,i.icon.openid,i.icon.opera,i.icon.optin.monster,i.icon.osi,i.icon.page4,i.icon.pagelines,i.icon.palfed,i.icon.patreon,i.icon.paypal,i.icon.periscope,i.icon.phabricator,i.icon.phoenix.framework,i.icon.php,i.icon.pied.piper,i.icon.pied.piper.alternate,i.icon.pied.piper.pp,i.icon.pinterest,i.icon.pinterest.p,i.icon.pinterest.square,i.icon.playstation,i.icon.product.hunt,i.icon.pushed,i.icon.python,i.icon.qq,i.icon.quinscape,i.icon.quora,i.icon.ravelry,i.icon.react,i.icon.rebel,i.icon.reddit,i.icon.reddit.alien,i.icon.reddit.square,i.icon.redriver,i.icon.rendact,i.icon.renren,i.icon.replyd,i.icon.resolving,i.icon.rocketchat,i.icon.rockrms,i.icon.safari,i.icon.sass,i.icon.schlix,i.icon.scribd,i.icon.searchengin,i.icon.sellcast,i.icon.sellsy,i.icon.servicestack,i.icon.shirtsinbulk,i.icon.simplybuilt,i.icon.sistrix,i.icon.skyatlas,i.icon.skype,i.icon.slack,i.icon.slack.hash,i.icon.slideshare,i.icon.snapchat,i.icon.snapchat.ghost,i.icon.snapchat.square,i.icon.soundcloud,i.icon.speakap,i.icon.spotify,i.icon.stack.exchange,i.icon.stack.overflow,i.icon.staylinked,i.icon.steam,i.icon.steam.square,i.icon.steam.symbol,i.icon.sticker.mule,i.icon.strava,i.icon.stripe,i.icon.stripe.s,i.icon.studiovinari,i.icon.stumbleupon,i.icon.stumbleupon.circle,i.icon.superpowers,i.icon.supple,i.icon.telegram,i.icon.telegram.plane,i.icon.tencent.weibo,i.icon.themeisle,i.icon.trello,i.icon.tripadvisor,i.icon.tumblr,i.icon.tumblr.square,i.icon.twitch,i.icon.twitter,i.icon.twitter.square,i.icon.typo3,i.icon.uber,i.icon.uikit,i.icon.uniregistry,i.icon.untappd,i.icon.usb,i.icon.ussunnah,i.icon.vaadin,i.icon.viacoin,i.icon.viadeo,i.icon.viadeo.square,i.icon.viber,i.icon.vimeo,i.icon.vimeo.square,i.icon.vimeo.v,i.icon.vine,i.icon.vk,i.icon.vnv,i.icon.vuejs,i.icon.wechat,i.icon.weibo,i.icon.weixin,i.icon.whatsapp,i.icon.whatsapp.square,i.icon.whmcs,i.icon.wikipedia.w,i.icon.windows,i.icon.wordpress,i.icon.wordpress.simple,i.icon.wpbeginner,i.icon.wpexplorer,i.icon.wpforms,i.icon.xbox,i.icon.xing,i.icon.xing.square,i.icon.y.combinator,i.icon.yahoo,i.icon.yandex,i.icon.yandex.international,i.icon.yelp,i.icon.yoast,i.icon.youtube,i.icon.youtube.square{font-family:brand-icons} \ No newline at end of file diff --git a/app/static/semantic/components/image.css b/app/static/semantic/components/image.css new file mode 100755 index 0000000..9d358ed --- /dev/null +++ b/app/static/semantic/components/image.css @@ -0,0 +1,310 @@ +/*! + * # Semantic UI 2.4.1 - Image + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */ + + +/******************************* + Image +*******************************/ + +.ui.image { + position: relative; + display: inline-block; + vertical-align: middle; + max-width: 100%; + background-color: transparent; +} +img.ui.image { + display: block; +} +.ui.image svg, +.ui.image img { + display: block; + max-width: 100%; + height: auto; +} + + +/******************************* + States +*******************************/ + +.ui.hidden.images, +.ui.hidden.image { + display: none; +} +.ui.hidden.transition.images, +.ui.hidden.transition.image { + display: block; + visibility: hidden; +} +.ui.images > .hidden.transition { + display: inline-block; + visibility: hidden; +} +.ui.disabled.images, +.ui.disabled.image { + cursor: default; + opacity: 0.45; +} + + +/******************************* + Variations +*******************************/ + + +/*-------------- + Inline +---------------*/ + +.ui.inline.image, +.ui.inline.image svg, +.ui.inline.image img { + display: inline-block; +} + +/*------------------ + Vertical Aligned +-------------------*/ + +.ui.top.aligned.images .image, +.ui.top.aligned.image, +.ui.top.aligned.image svg, +.ui.top.aligned.image img { + display: inline-block; + vertical-align: top; +} +.ui.middle.aligned.images .image, +.ui.middle.aligned.image, +.ui.middle.aligned.image svg, +.ui.middle.aligned.image img { + display: inline-block; + vertical-align: middle; +} +.ui.bottom.aligned.images .image, +.ui.bottom.aligned.image, +.ui.bottom.aligned.image svg, +.ui.bottom.aligned.image img { + display: inline-block; + vertical-align: bottom; +} + +/*-------------- + Rounded +---------------*/ + +.ui.rounded.images .image, +.ui.rounded.image, +.ui.rounded.images .image > *, +.ui.rounded.image > * { + border-radius: 0.3125em; +} + +/*-------------- + Bordered +---------------*/ + +.ui.bordered.images .image, +.ui.bordered.images img, +.ui.bordered.images svg, +.ui.bordered.image img, +.ui.bordered.image svg, +img.ui.bordered.image { + border: 1px solid rgba(0, 0, 0, 0.1); +} + +/*-------------- + Circular +---------------*/ + +.ui.circular.images, +.ui.circular.image { + overflow: hidden; +} +.ui.circular.images .image, +.ui.circular.image, +.ui.circular.images .image > *, +.ui.circular.image > * { + border-radius: 500rem; +} + +/*-------------- + Fluid +---------------*/ + +.ui.fluid.images, +.ui.fluid.image, +.ui.fluid.images img, +.ui.fluid.images svg, +.ui.fluid.image svg, +.ui.fluid.image img { + display: block; + width: 100%; + height: auto; +} + +/*-------------- + Avatar +---------------*/ + +.ui.avatar.images .image, +.ui.avatar.images img, +.ui.avatar.images svg, +.ui.avatar.image img, +.ui.avatar.image svg, +.ui.avatar.image { + margin-right: 0.25em; + display: inline-block; + width: 2em; + height: 2em; + border-radius: 500rem; +} + +/*------------------- + Spaced +--------------------*/ + +.ui.spaced.image { + display: inline-block !important; + margin-left: 0.5em; + margin-right: 0.5em; +} +.ui[class*="left spaced"].image { + margin-left: 0.5em; + margin-right: 0em; +} +.ui[class*="right spaced"].image { + margin-left: 0em; + margin-right: 0.5em; +} + +/*------------------- + Floated +--------------------*/ + +.ui.floated.image, +.ui.floated.images { + float: left; + margin-right: 1em; + margin-bottom: 1em; +} +.ui.right.floated.images, +.ui.right.floated.image { + float: right; + margin-right: 0em; + margin-bottom: 1em; + margin-left: 1em; +} +.ui.floated.images:last-child, +.ui.floated.image:last-child { + margin-bottom: 0em; +} +.ui.centered.images, +.ui.centered.image { + margin-left: auto; + margin-right: auto; +} + +/*-------------- + Sizes +---------------*/ + +.ui.mini.images .image, +.ui.mini.images img, +.ui.mini.images svg, +.ui.mini.image { + width: 35px; + height: auto; + font-size: 0.78571429rem; +} +.ui.tiny.images .image, +.ui.tiny.images img, +.ui.tiny.images svg, +.ui.tiny.image { + width: 80px; + height: auto; + font-size: 0.85714286rem; +} +.ui.small.images .image, +.ui.small.images img, +.ui.small.images svg, +.ui.small.image { + width: 150px; + height: auto; + font-size: 0.92857143rem; +} +.ui.medium.images .image, +.ui.medium.images img, +.ui.medium.images svg, +.ui.medium.image { + width: 300px; + height: auto; + font-size: 1rem; +} +.ui.large.images .image, +.ui.large.images img, +.ui.large.images svg, +.ui.large.image { + width: 450px; + height: auto; + font-size: 1.14285714rem; +} +.ui.big.images .image, +.ui.big.images img, +.ui.big.images svg, +.ui.big.image { + width: 600px; + height: auto; + font-size: 1.28571429rem; +} +.ui.huge.images .image, +.ui.huge.images img, +.ui.huge.images svg, +.ui.huge.image { + width: 800px; + height: auto; + font-size: 1.42857143rem; +} +.ui.massive.images .image, +.ui.massive.images img, +.ui.massive.images svg, +.ui.massive.image { + width: 960px; + height: auto; + font-size: 1.71428571rem; +} + + +/******************************* + Groups +*******************************/ + +.ui.images { + font-size: 0em; + margin: 0em -0.25rem 0rem; +} +.ui.images .image, +.ui.images > img, +.ui.images > svg { + display: inline-block; + margin: 0em 0.25rem 0.5rem; +} + + +/******************************* + Theme Overrides +*******************************/ + + + +/******************************* + Site Overrides +*******************************/ + diff --git a/app/static/semantic/components/image.min.css b/app/static/semantic/components/image.min.css new file mode 100755 index 0000000..7da57a0 --- /dev/null +++ b/app/static/semantic/components/image.min.css @@ -0,0 +1,9 @@ +/*! + * # Semantic UI 2.4.1 - Image + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */.ui.image{position:relative;display:inline-block;vertical-align:middle;max-width:100%;background-color:transparent}img.ui.image{display:block}.ui.image img,.ui.image svg{display:block;max-width:100%;height:auto}.ui.hidden.image,.ui.hidden.images{display:none}.ui.hidden.transition.image,.ui.hidden.transition.images{display:block;visibility:hidden}.ui.images>.hidden.transition{display:inline-block;visibility:hidden}.ui.disabled.image,.ui.disabled.images{cursor:default;opacity:.45}.ui.inline.image,.ui.inline.image img,.ui.inline.image svg{display:inline-block}.ui.top.aligned.image,.ui.top.aligned.image img,.ui.top.aligned.image svg,.ui.top.aligned.images .image{display:inline-block;vertical-align:top}.ui.middle.aligned.image,.ui.middle.aligned.image img,.ui.middle.aligned.image svg,.ui.middle.aligned.images .image{display:inline-block;vertical-align:middle}.ui.bottom.aligned.image,.ui.bottom.aligned.image img,.ui.bottom.aligned.image svg,.ui.bottom.aligned.images .image{display:inline-block;vertical-align:bottom}.ui.rounded.image,.ui.rounded.image>*,.ui.rounded.images .image,.ui.rounded.images .image>*{border-radius:.3125em}.ui.bordered.image img,.ui.bordered.image svg,.ui.bordered.images .image,.ui.bordered.images img,.ui.bordered.images svg,img.ui.bordered.image{border:1px solid rgba(0,0,0,.1)}.ui.circular.image,.ui.circular.images{overflow:hidden}.ui.circular.image,.ui.circular.image>*,.ui.circular.images .image,.ui.circular.images .image>*{border-radius:500rem}.ui.fluid.image,.ui.fluid.image img,.ui.fluid.image svg,.ui.fluid.images,.ui.fluid.images img,.ui.fluid.images svg{display:block;width:100%;height:auto}.ui.avatar.image,.ui.avatar.image img,.ui.avatar.image svg,.ui.avatar.images .image,.ui.avatar.images img,.ui.avatar.images svg{margin-right:.25em;display:inline-block;width:2em;height:2em;border-radius:500rem}.ui.spaced.image{display:inline-block!important;margin-left:.5em;margin-right:.5em}.ui[class*="left spaced"].image{margin-left:.5em;margin-right:0}.ui[class*="right spaced"].image{margin-left:0;margin-right:.5em}.ui.floated.image,.ui.floated.images{float:left;margin-right:1em;margin-bottom:1em}.ui.right.floated.image,.ui.right.floated.images{float:right;margin-right:0;margin-bottom:1em;margin-left:1em}.ui.floated.image:last-child,.ui.floated.images:last-child{margin-bottom:0}.ui.centered.image,.ui.centered.images{margin-left:auto;margin-right:auto}.ui.mini.image,.ui.mini.images .image,.ui.mini.images img,.ui.mini.images svg{width:35px;height:auto;font-size:.78571429rem}.ui.tiny.image,.ui.tiny.images .image,.ui.tiny.images img,.ui.tiny.images svg{width:80px;height:auto;font-size:.85714286rem}.ui.small.image,.ui.small.images .image,.ui.small.images img,.ui.small.images svg{width:150px;height:auto;font-size:.92857143rem}.ui.medium.image,.ui.medium.images .image,.ui.medium.images img,.ui.medium.images svg{width:300px;height:auto;font-size:1rem}.ui.large.image,.ui.large.images .image,.ui.large.images img,.ui.large.images svg{width:450px;height:auto;font-size:1.14285714rem}.ui.big.image,.ui.big.images .image,.ui.big.images img,.ui.big.images svg{width:600px;height:auto;font-size:1.28571429rem}.ui.huge.image,.ui.huge.images .image,.ui.huge.images img,.ui.huge.images svg{width:800px;height:auto;font-size:1.42857143rem}.ui.massive.image,.ui.massive.images .image,.ui.massive.images img,.ui.massive.images svg{width:960px;height:auto;font-size:1.71428571rem}.ui.images{font-size:0;margin:0 -.25rem 0}.ui.images .image,.ui.images>img,.ui.images>svg{display:inline-block;margin:0 .25rem .5rem} \ No newline at end of file diff --git a/app/static/semantic/components/input.css b/app/static/semantic/components/input.css new file mode 100755 index 0000000..36c0c62 --- /dev/null +++ b/app/static/semantic/components/input.css @@ -0,0 +1,519 @@ +/*! + * # Semantic UI 2.4.1 - Input + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */ + + +/******************************* + Standard +*******************************/ + + +/*-------------------- + Inputs +---------------------*/ + +.ui.input { + position: relative; + font-weight: normal; + font-style: normal; + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; + color: rgba(0, 0, 0, 0.87); +} +.ui.input > input { + margin: 0em; + max-width: 100%; + -webkit-box-flex: 1; + -ms-flex: 1 0 auto; + flex: 1 0 auto; + outline: none; + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); + text-align: left; + line-height: 1.21428571em; + font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif; + padding: 0.67857143em 1em; + background: #FFFFFF; + border: 1px solid rgba(34, 36, 38, 0.15); + color: rgba(0, 0, 0, 0.87); + border-radius: 0.28571429rem; + -webkit-transition: border-color 0.1s ease, -webkit-box-shadow 0.1s ease; + transition: border-color 0.1s ease, -webkit-box-shadow 0.1s ease; + transition: box-shadow 0.1s ease, border-color 0.1s ease; + transition: box-shadow 0.1s ease, border-color 0.1s ease, -webkit-box-shadow 0.1s ease; + -webkit-box-shadow: none; + box-shadow: none; +} + +/*-------------------- + Placeholder +---------------------*/ + + +/* browsers require these rules separate */ +.ui.input > input::-webkit-input-placeholder { + color: rgba(191, 191, 191, 0.87); +} +.ui.input > input::-moz-placeholder { + color: rgba(191, 191, 191, 0.87); +} +.ui.input > input:-ms-input-placeholder { + color: rgba(191, 191, 191, 0.87); +} + + +/******************************* + States +*******************************/ + + +/*-------------------- + Disabled +---------------------*/ + +.ui.disabled.input, +.ui.input:not(.disabled) input[disabled] { + opacity: 0.45; +} +.ui.disabled.input > input, +.ui.input:not(.disabled) input[disabled] { + pointer-events: none; +} + +/*-------------------- + Active +---------------------*/ + +.ui.input > input:active, +.ui.input.down input { + border-color: rgba(0, 0, 0, 0.3); + background: #FAFAFA; + color: rgba(0, 0, 0, 0.87); + -webkit-box-shadow: none; + box-shadow: none; +} + +/*-------------------- + Loading +---------------------*/ + +.ui.loading.loading.input > i.icon:before { + position: absolute; + content: ''; + top: 50%; + left: 50%; + margin: -0.64285714em 0em 0em -0.64285714em; + width: 1.28571429em; + height: 1.28571429em; + border-radius: 500rem; + border: 0.2em solid rgba(0, 0, 0, 0.1); +} +.ui.loading.loading.input > i.icon:after { + position: absolute; + content: ''; + top: 50%; + left: 50%; + margin: -0.64285714em 0em 0em -0.64285714em; + width: 1.28571429em; + height: 1.28571429em; + -webkit-animation: button-spin 0.6s linear; + animation: button-spin 0.6s linear; + -webkit-animation-iteration-count: infinite; + animation-iteration-count: infinite; + border-radius: 500rem; + border-color: #767676 transparent transparent; + border-style: solid; + border-width: 0.2em; + -webkit-box-shadow: 0px 0px 0px 1px transparent; + box-shadow: 0px 0px 0px 1px transparent; +} + +/*-------------------- + Focus +---------------------*/ + +.ui.input.focus > input, +.ui.input > input:focus { + border-color: #85B7D9; + background: #FFFFFF; + color: rgba(0, 0, 0, 0.8); + -webkit-box-shadow: none; + box-shadow: none; +} +.ui.input.focus > input::-webkit-input-placeholder, +.ui.input > input:focus::-webkit-input-placeholder { + color: rgba(115, 115, 115, 0.87); +} +.ui.input.focus > input::-moz-placeholder, +.ui.input > input:focus::-moz-placeholder { + color: rgba(115, 115, 115, 0.87); +} +.ui.input.focus > input:-ms-input-placeholder, +.ui.input > input:focus:-ms-input-placeholder { + color: rgba(115, 115, 115, 0.87); +} + +/*-------------------- + Error +---------------------*/ + +.ui.input.error > input { + background-color: #FFF6F6; + border-color: #E0B4B4; + color: #9F3A38; + -webkit-box-shadow: none; + box-shadow: none; +} + +/* Error Placeholder */ +.ui.input.error > input::-webkit-input-placeholder { + color: #e7bdbc; +} +.ui.input.error > input::-moz-placeholder { + color: #e7bdbc; +} +.ui.input.error > input:-ms-input-placeholder { + color: #e7bdbc !important; +} + +/* Focused Error Placeholder */ +.ui.input.error > input:focus::-webkit-input-placeholder { + color: #da9796; +} +.ui.input.error > input:focus::-moz-placeholder { + color: #da9796; +} +.ui.input.error > input:focus:-ms-input-placeholder { + color: #da9796 !important; +} + + +/******************************* + Variations +*******************************/ + + +/*-------------------- + Transparent +---------------------*/ + +.ui.transparent.input > input { + border-color: transparent !important; + background-color: transparent !important; + padding: 0em !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; + border-radius: 0px !important; +} + +/* Transparent Icon */ +.ui.transparent.icon.input > i.icon { + width: 1.1em; +} +.ui.transparent.icon.input > input { + padding-left: 0em !important; + padding-right: 2em !important; +} +.ui.transparent[class*="left icon"].input > input { + padding-left: 2em !important; + padding-right: 0em !important; +} + +/* Transparent Inverted */ +.ui.transparent.inverted.input { + color: #FFFFFF; +} +.ui.transparent.inverted.input > input { + color: inherit; +} +.ui.transparent.inverted.input > input::-webkit-input-placeholder { + color: rgba(255, 255, 255, 0.5); +} +.ui.transparent.inverted.input > input::-moz-placeholder { + color: rgba(255, 255, 255, 0.5); +} +.ui.transparent.inverted.input > input:-ms-input-placeholder { + color: rgba(255, 255, 255, 0.5); +} + +/*-------------------- + Icon +---------------------*/ + +.ui.icon.input > i.icon { + cursor: default; + position: absolute; + line-height: 1; + text-align: center; + top: 0px; + right: 0px; + margin: 0em; + height: 100%; + width: 2.67142857em; + opacity: 0.5; + border-radius: 0em 0.28571429rem 0.28571429rem 0em; + -webkit-transition: opacity 0.3s ease; + transition: opacity 0.3s ease; +} +.ui.icon.input > i.icon:not(.link) { + pointer-events: none; +} +.ui.icon.input > input { + padding-right: 2.67142857em !important; +} +.ui.icon.input > i.icon:before, +.ui.icon.input > i.icon:after { + left: 0; + position: absolute; + text-align: center; + top: 50%; + width: 100%; + margin-top: -0.5em; +} +.ui.icon.input > i.link.icon { + cursor: pointer; +} +.ui.icon.input > i.circular.icon { + top: 0.35em; + right: 0.5em; +} + +/* Left Icon Input */ +.ui[class*="left icon"].input > i.icon { + right: auto; + left: 1px; + border-radius: 0.28571429rem 0em 0em 0.28571429rem; +} +.ui[class*="left icon"].input > i.circular.icon { + right: auto; + left: 0.5em; +} +.ui[class*="left icon"].input > input { + padding-left: 2.67142857em !important; + padding-right: 1em !important; +} + +/* Focus */ +.ui.icon.input > input:focus ~ i.icon { + opacity: 1; +} + +/*-------------------- + Labeled +---------------------*/ + + +/* Adjacent Label */ +.ui.labeled.input > .label { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + margin: 0; + font-size: 1em; +} +.ui.labeled.input > .label:not(.corner) { + padding-top: 0.78571429em; + padding-bottom: 0.78571429em; +} + +/* Regular Label on Left */ +.ui.labeled.input:not([class*="corner labeled"]) .label:first-child { + border-top-right-radius: 0px; + border-bottom-right-radius: 0px; +} +.ui.labeled.input:not([class*="corner labeled"]) .label:first-child + input { + border-top-left-radius: 0px; + border-bottom-left-radius: 0px; + border-left-color: transparent; +} +.ui.labeled.input:not([class*="corner labeled"]) .label:first-child + input:focus { + border-left-color: #85B7D9; +} + +/* Regular Label on Right */ +.ui[class*="right labeled"].input > input { + border-top-right-radius: 0px !important; + border-bottom-right-radius: 0px !important; + border-right-color: transparent !important; +} +.ui[class*="right labeled"].input > input + .label { + border-top-left-radius: 0px; + border-bottom-left-radius: 0px; +} +.ui[class*="right labeled"].input > input:focus { + border-right-color: #85B7D9 !important; +} + +/* Corner Label */ +.ui.labeled.input .corner.label { + top: 1px; + right: 1px; + font-size: 0.64285714em; + border-radius: 0em 0.28571429rem 0em 0em; +} + +/* Spacing with corner label */ +.ui[class*="corner labeled"]:not([class*="left corner labeled"]).labeled.input > input { + padding-right: 2.5em !important; +} +.ui[class*="corner labeled"].icon.input:not([class*="left corner labeled"]) > input { + padding-right: 3.25em !important; +} +.ui[class*="corner labeled"].icon.input:not([class*="left corner labeled"]) > .icon { + margin-right: 1.25em; +} + +/* Left Labeled */ +.ui[class*="left corner labeled"].labeled.input > input { + padding-left: 2.5em !important; +} +.ui[class*="left corner labeled"].icon.input > input { + padding-left: 3.25em !important; +} +.ui[class*="left corner labeled"].icon.input > .icon { + margin-left: 1.25em; +} + +/* Corner Label Position */ +.ui.input > .ui.corner.label { + top: 1px; + right: 1px; +} +.ui.input > .ui.left.corner.label { + right: auto; + left: 1px; +} + +/*-------------------- + Action +---------------------*/ + +.ui.action.input > .button, +.ui.action.input > .buttons { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; +} +.ui.action.input > .button, +.ui.action.input > .buttons > .button { + padding-top: 0.78571429em; + padding-bottom: 0.78571429em; + margin: 0; +} + +/* Button on Right */ +.ui.action.input:not([class*="left action"]) > input { + border-top-right-radius: 0px !important; + border-bottom-right-radius: 0px !important; + border-right-color: transparent !important; +} +.ui.action.input:not([class*="left action"]) > .dropdown:not(:first-child), +.ui.action.input:not([class*="left action"]) > .button:not(:first-child), +.ui.action.input:not([class*="left action"]) > .buttons:not(:first-child) > .button { + border-radius: 0px; +} +.ui.action.input:not([class*="left action"]) > .dropdown:last-child, +.ui.action.input:not([class*="left action"]) > .button:last-child, +.ui.action.input:not([class*="left action"]) > .buttons:last-child > .button { + border-radius: 0px 0.28571429rem 0.28571429rem 0px; +} + +/* Input Focus */ +.ui.action.input:not([class*="left action"]) > input:focus { + border-right-color: #85B7D9 !important; +} + +/* Button on Left */ +.ui[class*="left action"].input > input { + border-top-left-radius: 0px !important; + border-bottom-left-radius: 0px !important; + border-left-color: transparent !important; +} +.ui[class*="left action"].input > .dropdown, +.ui[class*="left action"].input > .button, +.ui[class*="left action"].input > .buttons > .button { + border-radius: 0px; +} +.ui[class*="left action"].input > .dropdown:first-child, +.ui[class*="left action"].input > .button:first-child, +.ui[class*="left action"].input > .buttons:first-child > .button { + border-radius: 0.28571429rem 0px 0px 0.28571429rem; +} + +/* Input Focus */ +.ui[class*="left action"].input > input:focus { + border-left-color: #85B7D9 !important; +} + +/*-------------------- + Inverted +---------------------*/ + + +/* Standard */ +.ui.inverted.input > input { + border: none; +} + +/*-------------------- + Fluid +---------------------*/ + +.ui.fluid.input { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.ui.fluid.input > input { + width: 0px !important; +} + +/*-------------------- + Size +---------------------*/ + +.ui.mini.input { + font-size: 0.78571429em; +} +.ui.small.input { + font-size: 0.92857143em; +} +.ui.input { + font-size: 1em; +} +.ui.large.input { + font-size: 1.14285714em; +} +.ui.big.input { + font-size: 1.28571429em; +} +.ui.huge.input { + font-size: 1.42857143em; +} +.ui.massive.input { + font-size: 1.71428571em; +} + + +/******************************* + Theme Overrides +*******************************/ + + + +/******************************* + Site Overrides +*******************************/ + diff --git a/app/static/semantic/components/input.min.css b/app/static/semantic/components/input.min.css new file mode 100755 index 0000000..ed6b60d --- /dev/null +++ b/app/static/semantic/components/input.min.css @@ -0,0 +1,9 @@ +/*! + * # Semantic UI 2.4.1 - Input + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */.ui.input{position:relative;font-weight:400;font-style:normal;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;color:rgba(0,0,0,.87)}.ui.input>input{margin:0;max-width:100%;-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;outline:0;-webkit-tap-highlight-color:rgba(255,255,255,0);text-align:left;line-height:1.21428571em;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;padding:.67857143em 1em;background:#fff;border:1px solid rgba(34,36,38,.15);color:rgba(0,0,0,.87);border-radius:.28571429rem;-webkit-transition:border-color .1s ease,-webkit-box-shadow .1s ease;transition:border-color .1s ease,-webkit-box-shadow .1s ease;transition:box-shadow .1s ease,border-color .1s ease;transition:box-shadow .1s ease,border-color .1s ease,-webkit-box-shadow .1s ease;-webkit-box-shadow:none;box-shadow:none}.ui.input>input::-webkit-input-placeholder{color:rgba(191,191,191,.87)}.ui.input>input::-moz-placeholder{color:rgba(191,191,191,.87)}.ui.input>input:-ms-input-placeholder{color:rgba(191,191,191,.87)}.ui.disabled.input,.ui.input:not(.disabled) input[disabled]{opacity:.45}.ui.disabled.input>input,.ui.input:not(.disabled) input[disabled]{pointer-events:none}.ui.input.down input,.ui.input>input:active{border-color:rgba(0,0,0,.3);background:#fafafa;color:rgba(0,0,0,.87);-webkit-box-shadow:none;box-shadow:none}.ui.loading.loading.input>i.icon:before{position:absolute;content:'';top:50%;left:50%;margin:-.64285714em 0 0 -.64285714em;width:1.28571429em;height:1.28571429em;border-radius:500rem;border:.2em solid rgba(0,0,0,.1)}.ui.loading.loading.input>i.icon:after{position:absolute;content:'';top:50%;left:50%;margin:-.64285714em 0 0 -.64285714em;width:1.28571429em;height:1.28571429em;-webkit-animation:button-spin .6s linear;animation:button-spin .6s linear;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;border-radius:500rem;border-color:#767676 transparent transparent;border-style:solid;border-width:.2em;-webkit-box-shadow:0 0 0 1px transparent;box-shadow:0 0 0 1px transparent}.ui.input.focus>input,.ui.input>input:focus{border-color:#85b7d9;background:#fff;color:rgba(0,0,0,.8);-webkit-box-shadow:none;box-shadow:none}.ui.input.focus>input::-webkit-input-placeholder,.ui.input>input:focus::-webkit-input-placeholder{color:rgba(115,115,115,.87)}.ui.input.focus>input::-moz-placeholder,.ui.input>input:focus::-moz-placeholder{color:rgba(115,115,115,.87)}.ui.input.focus>input:-ms-input-placeholder,.ui.input>input:focus:-ms-input-placeholder{color:rgba(115,115,115,.87)}.ui.input.error>input{background-color:#fff6f6;border-color:#e0b4b4;color:#9f3a38;-webkit-box-shadow:none;box-shadow:none}.ui.input.error>input::-webkit-input-placeholder{color:#e7bdbc}.ui.input.error>input::-moz-placeholder{color:#e7bdbc}.ui.input.error>input:-ms-input-placeholder{color:#e7bdbc!important}.ui.input.error>input:focus::-webkit-input-placeholder{color:#da9796}.ui.input.error>input:focus::-moz-placeholder{color:#da9796}.ui.input.error>input:focus:-ms-input-placeholder{color:#da9796!important}.ui.transparent.input>input{border-color:transparent!important;background-color:transparent!important;padding:0!important;-webkit-box-shadow:none!important;box-shadow:none!important;border-radius:0!important}.ui.transparent.icon.input>i.icon{width:1.1em}.ui.transparent.icon.input>input{padding-left:0!important;padding-right:2em!important}.ui.transparent[class*="left icon"].input>input{padding-left:2em!important;padding-right:0!important}.ui.transparent.inverted.input{color:#fff}.ui.transparent.inverted.input>input{color:inherit}.ui.transparent.inverted.input>input::-webkit-input-placeholder{color:rgba(255,255,255,.5)}.ui.transparent.inverted.input>input::-moz-placeholder{color:rgba(255,255,255,.5)}.ui.transparent.inverted.input>input:-ms-input-placeholder{color:rgba(255,255,255,.5)}.ui.icon.input>i.icon{cursor:default;position:absolute;line-height:1;text-align:center;top:0;right:0;margin:0;height:100%;width:2.67142857em;opacity:.5;border-radius:0 .28571429rem .28571429rem 0;-webkit-transition:opacity .3s ease;transition:opacity .3s ease}.ui.icon.input>i.icon:not(.link){pointer-events:none}.ui.icon.input>input{padding-right:2.67142857em!important}.ui.icon.input>i.icon:after,.ui.icon.input>i.icon:before{left:0;position:absolute;text-align:center;top:50%;width:100%;margin-top:-.5em}.ui.icon.input>i.link.icon{cursor:pointer}.ui.icon.input>i.circular.icon{top:.35em;right:.5em}.ui[class*="left icon"].input>i.icon{right:auto;left:1px;border-radius:.28571429rem 0 0 .28571429rem}.ui[class*="left icon"].input>i.circular.icon{right:auto;left:.5em}.ui[class*="left icon"].input>input{padding-left:2.67142857em!important;padding-right:1em!important}.ui.icon.input>input:focus~i.icon{opacity:1}.ui.labeled.input>.label{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin:0;font-size:1em}.ui.labeled.input>.label:not(.corner){padding-top:.78571429em;padding-bottom:.78571429em}.ui.labeled.input:not([class*="corner labeled"]) .label:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.ui.labeled.input:not([class*="corner labeled"]) .label:first-child+input{border-top-left-radius:0;border-bottom-left-radius:0;border-left-color:transparent}.ui.labeled.input:not([class*="corner labeled"]) .label:first-child+input:focus{border-left-color:#85b7d9}.ui[class*="right labeled"].input>input{border-top-right-radius:0!important;border-bottom-right-radius:0!important;border-right-color:transparent!important}.ui[class*="right labeled"].input>input+.label{border-top-left-radius:0;border-bottom-left-radius:0}.ui[class*="right labeled"].input>input:focus{border-right-color:#85b7d9!important}.ui.labeled.input .corner.label{top:1px;right:1px;font-size:.64285714em;border-radius:0 .28571429rem 0 0}.ui[class*="corner labeled"]:not([class*="left corner labeled"]).labeled.input>input{padding-right:2.5em!important}.ui[class*="corner labeled"].icon.input:not([class*="left corner labeled"])>input{padding-right:3.25em!important}.ui[class*="corner labeled"].icon.input:not([class*="left corner labeled"])>.icon{margin-right:1.25em}.ui[class*="left corner labeled"].labeled.input>input{padding-left:2.5em!important}.ui[class*="left corner labeled"].icon.input>input{padding-left:3.25em!important}.ui[class*="left corner labeled"].icon.input>.icon{margin-left:1.25em}.ui.input>.ui.corner.label{top:1px;right:1px}.ui.input>.ui.left.corner.label{right:auto;left:1px}.ui.action.input>.button,.ui.action.input>.buttons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.ui.action.input>.button,.ui.action.input>.buttons>.button{padding-top:.78571429em;padding-bottom:.78571429em;margin:0}.ui.action.input:not([class*="left action"])>input{border-top-right-radius:0!important;border-bottom-right-radius:0!important;border-right-color:transparent!important}.ui.action.input:not([class*="left action"])>.button:not(:first-child),.ui.action.input:not([class*="left action"])>.buttons:not(:first-child)>.button,.ui.action.input:not([class*="left action"])>.dropdown:not(:first-child){border-radius:0}.ui.action.input:not([class*="left action"])>.button:last-child,.ui.action.input:not([class*="left action"])>.buttons:last-child>.button,.ui.action.input:not([class*="left action"])>.dropdown:last-child{border-radius:0 .28571429rem .28571429rem 0}.ui.action.input:not([class*="left action"])>input:focus{border-right-color:#85b7d9!important}.ui[class*="left action"].input>input{border-top-left-radius:0!important;border-bottom-left-radius:0!important;border-left-color:transparent!important}.ui[class*="left action"].input>.button,.ui[class*="left action"].input>.buttons>.button,.ui[class*="left action"].input>.dropdown{border-radius:0}.ui[class*="left action"].input>.button:first-child,.ui[class*="left action"].input>.buttons:first-child>.button,.ui[class*="left action"].input>.dropdown:first-child{border-radius:.28571429rem 0 0 .28571429rem}.ui[class*="left action"].input>input:focus{border-left-color:#85b7d9!important}.ui.inverted.input>input{border:none}.ui.fluid.input{display:-webkit-box;display:-ms-flexbox;display:flex}.ui.fluid.input>input{width:0!important}.ui.mini.input{font-size:.78571429em}.ui.small.input{font-size:.92857143em}.ui.input{font-size:1em}.ui.large.input{font-size:1.14285714em}.ui.big.input{font-size:1.28571429em}.ui.huge.input{font-size:1.42857143em}.ui.massive.input{font-size:1.71428571em} \ No newline at end of file diff --git a/app/static/semantic/components/item.css b/app/static/semantic/components/item.css new file mode 100755 index 0000000..4c86494 --- /dev/null +++ b/app/static/semantic/components/item.css @@ -0,0 +1,487 @@ +/*! + * # Semantic UI 2.4.1 - Item + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */ + + +/******************************* + Standard +*******************************/ + + +/*-------------- + Item +---------------*/ + +.ui.items > .item { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + margin: 1em 0em; + width: 100%; + min-height: 0px; + background: transparent; + padding: 0em; + border: none; + border-radius: 0rem; + -webkit-box-shadow: none; + box-shadow: none; + -webkit-transition: -webkit-box-shadow 0.1s ease; + transition: -webkit-box-shadow 0.1s ease; + transition: box-shadow 0.1s ease; + transition: box-shadow 0.1s ease, -webkit-box-shadow 0.1s ease; + z-index: ''; +} +.ui.items > .item a { + cursor: pointer; +} + +/*-------------- + Items +---------------*/ + +.ui.items { + margin: 1.5em 0em; +} +.ui.items:first-child { + margin-top: 0em !important; +} +.ui.items:last-child { + margin-bottom: 0em !important; +} + +/*-------------- + Item +---------------*/ + +.ui.items > .item:after { + display: block; + content: ' '; + height: 0px; + clear: both; + overflow: hidden; + visibility: hidden; +} +.ui.items > .item:first-child { + margin-top: 0em; +} +.ui.items > .item:last-child { + margin-bottom: 0em; +} + +/*-------------- + Images +---------------*/ + +.ui.items > .item > .image { + position: relative; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + display: block; + float: none; + margin: 0em; + padding: 0em; + max-height: ''; + -ms-flex-item-align: top; + align-self: top; +} +.ui.items > .item > .image > img { + display: block; + width: 100%; + height: auto; + border-radius: 0.125rem; + border: none; +} +.ui.items > .item > .image:only-child > img { + border-radius: 0rem; +} + +/*-------------- + Content +---------------*/ + +.ui.items > .item > .content { + display: block; + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + background: none; + margin: 0em; + padding: 0em; + -webkit-box-shadow: none; + box-shadow: none; + font-size: 1em; + border: none; + border-radius: 0em; +} +.ui.items > .item > .content:after { + display: block; + content: ' '; + height: 0px; + clear: both; + overflow: hidden; + visibility: hidden; +} +.ui.items > .item > .image + .content { + min-width: 0; + width: auto; + display: block; + margin-left: 0em; + -ms-flex-item-align: top; + align-self: top; + padding-left: 1.5em; +} +.ui.items > .item > .content > .header { + display: inline-block; + margin: -0.21425em 0em 0em; + font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif; + font-weight: bold; + color: rgba(0, 0, 0, 0.85); +} + +/* Default Header Size */ +.ui.items > .item > .content > .header:not(.ui) { + font-size: 1.28571429em; +} + +/*-------------- + Floated +---------------*/ + +.ui.items > .item [class*="left floated"] { + float: left; +} +.ui.items > .item [class*="right floated"] { + float: right; +} + +/*-------------- + Content Image +---------------*/ + +.ui.items > .item .content img { + -ms-flex-item-align: middle; + align-self: middle; + width: ''; +} +.ui.items > .item img.avatar, +.ui.items > .item .avatar img { + width: ''; + height: ''; + border-radius: 500rem; +} + +/*-------------- + Description +---------------*/ + +.ui.items > .item > .content > .description { + margin-top: 0.6em; + max-width: auto; + font-size: 1em; + line-height: 1.4285em; + color: rgba(0, 0, 0, 0.87); +} + +/*-------------- + Paragraph +---------------*/ + +.ui.items > .item > .content p { + margin: 0em 0em 0.5em; +} +.ui.items > .item > .content p:last-child { + margin-bottom: 0em; +} + +/*-------------- + Meta +---------------*/ + +.ui.items > .item .meta { + margin: 0.5em 0em 0.5em; + font-size: 1em; + line-height: 1em; + color: rgba(0, 0, 0, 0.6); +} +.ui.items > .item .meta * { + margin-right: 0.3em; +} +.ui.items > .item .meta :last-child { + margin-right: 0em; +} +.ui.items > .item .meta [class*="right floated"] { + margin-right: 0em; + margin-left: 0.3em; +} + +/*-------------- + Links +---------------*/ + + +/* Generic */ +.ui.items > .item > .content a:not(.ui) { + color: ''; + -webkit-transition: color 0.1s ease; + transition: color 0.1s ease; +} +.ui.items > .item > .content a:not(.ui):hover { + color: ''; +} + +/* Header */ +.ui.items > .item > .content > a.header { + color: rgba(0, 0, 0, 0.85); +} +.ui.items > .item > .content > a.header:hover { + color: #1e70bf; +} + +/* Meta */ +.ui.items > .item .meta > a:not(.ui) { + color: rgba(0, 0, 0, 0.4); +} +.ui.items > .item .meta > a:not(.ui):hover { + color: rgba(0, 0, 0, 0.87); +} + +/*-------------- + Labels +---------------*/ + + +/*-----Star----- */ + + +/* Icon */ +.ui.items > .item > .content .favorite.icon { + cursor: pointer; + opacity: 0.75; + -webkit-transition: color 0.1s ease; + transition: color 0.1s ease; +} +.ui.items > .item > .content .favorite.icon:hover { + opacity: 1; + color: #FFB70A; +} +.ui.items > .item > .content .active.favorite.icon { + color: #FFE623; +} + +/*-----Like----- */ + + +/* Icon */ +.ui.items > .item > .content .like.icon { + cursor: pointer; + opacity: 0.75; + -webkit-transition: color 0.1s ease; + transition: color 0.1s ease; +} +.ui.items > .item > .content .like.icon:hover { + opacity: 1; + color: #FF2733; +} +.ui.items > .item > .content .active.like.icon { + color: #FF2733; +} + +/*---------------- + Extra Content +-----------------*/ + +.ui.items > .item .extra { + display: block; + position: relative; + background: none; + margin: 0.5rem 0em 0em; + width: 100%; + padding: 0em 0em 0em; + top: 0em; + left: 0em; + color: rgba(0, 0, 0, 0.4); + -webkit-box-shadow: none; + box-shadow: none; + -webkit-transition: color 0.1s ease; + transition: color 0.1s ease; + border-top: none; +} +.ui.items > .item .extra > * { + margin: 0.25rem 0.5rem 0.25rem 0em; +} +.ui.items > .item .extra > [class*="right floated"] { + margin: 0.25rem 0em 0.25rem 0.5rem; +} +.ui.items > .item .extra:after { + display: block; + content: ' '; + height: 0px; + clear: both; + overflow: hidden; + visibility: hidden; +} + + +/******************************* + Responsive +*******************************/ + + +/* Default Image Width */ +.ui.items > .item > .image:not(.ui) { + width: 175px; +} + +/* Tablet Only */ +@media only screen and (min-width: 768px) and (max-width: 991px) { + .ui.items > .item { + margin: 1em 0em; + } + .ui.items > .item > .image:not(.ui) { + width: 150px; + } + .ui.items > .item > .image + .content { + display: block; + padding: 0em 0em 0em 1em; + } +} + +/* Mobile Only */ +@media only screen and (max-width: 767px) { + .ui.items:not(.unstackable) > .item { + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + margin: 2em 0em; + } + .ui.items:not(.unstackable) > .item > .image { + display: block; + margin-left: auto; + margin-right: auto; + } + .ui.items:not(.unstackable) > .item > .image, + .ui.items:not(.unstackable) > .item > .image > img { + max-width: 100% !important; + width: auto !important; + max-height: 250px !important; + } + .ui.items:not(.unstackable) > .item > .image + .content { + display: block; + padding: 1.5em 0em 0em; + } +} + + +/******************************* + Variations +*******************************/ + + +/*------------------- + Aligned +--------------------*/ + +.ui.items > .item > .image + [class*="top aligned"].content { + -ms-flex-item-align: start; + align-self: flex-start; +} +.ui.items > .item > .image + [class*="middle aligned"].content { + -ms-flex-item-align: center; + align-self: center; +} +.ui.items > .item > .image + [class*="bottom aligned"].content { + -ms-flex-item-align: end; + align-self: flex-end; +} + +/*-------------- + Relaxed +---------------*/ + +.ui.relaxed.items > .item { + margin: 1.5em 0em; +} +.ui[class*="very relaxed"].items > .item { + margin: 2em 0em; +} + +/*------------------- + Divided +--------------------*/ + +.ui.divided.items > .item { + border-top: 1px solid rgba(34, 36, 38, 0.15); + margin: 0em; + padding: 1em 0em; +} +.ui.divided.items > .item:first-child { + border-top: none; + margin-top: 0em !important; + padding-top: 0em !important; +} +.ui.divided.items > .item:last-child { + margin-bottom: 0em !important; + padding-bottom: 0em !important; +} + +/* Relaxed Divided */ +.ui.relaxed.divided.items > .item { + margin: 0em; + padding: 1.5em 0em; +} +.ui[class*="very relaxed"].divided.items > .item { + margin: 0em; + padding: 2em 0em; +} + +/*------------------- + Link +--------------------*/ + +.ui.items a.item:hover, +.ui.link.items > .item:hover { + cursor: pointer; +} +.ui.items a.item:hover .content .header, +.ui.link.items > .item:hover .content .header { + color: #1e70bf; +} + +/*-------------- + Size +---------------*/ + +.ui.items > .item { + font-size: 1em; +} + +/*--------------- + Unstackable +----------------*/ + +@media only screen and (max-width: 767px) { + .ui.unstackable.items > .item > .image, + .ui.unstackable.items > .item > .image > img { + width: 125px !important; + } +} + + +/******************************* + Theme Overrides +*******************************/ + + + +/******************************* + User Variable Overrides +*******************************/ + diff --git a/app/static/semantic/components/item.min.css b/app/static/semantic/components/item.min.css new file mode 100755 index 0000000..2bba2cf --- /dev/null +++ b/app/static/semantic/components/item.min.css @@ -0,0 +1,9 @@ +/*! + * # Semantic UI 2.4.1 - Item + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */.ui.items>.item{display:-webkit-box;display:-ms-flexbox;display:flex;margin:1em 0;width:100%;min-height:0;background:0 0;padding:0;border:none;border-radius:0;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:-webkit-box-shadow .1s ease;transition:-webkit-box-shadow .1s ease;transition:box-shadow .1s ease;transition:box-shadow .1s ease,-webkit-box-shadow .1s ease;z-index:''}.ui.items>.item a{cursor:pointer}.ui.items{margin:1.5em 0}.ui.items:first-child{margin-top:0!important}.ui.items:last-child{margin-bottom:0!important}.ui.items>.item:after{display:block;content:' ';height:0;clear:both;overflow:hidden;visibility:hidden}.ui.items>.item:first-child{margin-top:0}.ui.items>.item:last-child{margin-bottom:0}.ui.items>.item>.image{position:relative;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;display:block;float:none;margin:0;padding:0;max-height:'';-ms-flex-item-align:top;align-self:top}.ui.items>.item>.image>img{display:block;width:100%;height:auto;border-radius:.125rem;border:none}.ui.items>.item>.image:only-child>img{border-radius:0}.ui.items>.item>.content{display:block;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;background:0 0;margin:0;padding:0;-webkit-box-shadow:none;box-shadow:none;font-size:1em;border:none;border-radius:0}.ui.items>.item>.content:after{display:block;content:' ';height:0;clear:both;overflow:hidden;visibility:hidden}.ui.items>.item>.image+.content{min-width:0;width:auto;display:block;margin-left:0;-ms-flex-item-align:top;align-self:top;padding-left:1.5em}.ui.items>.item>.content>.header{display:inline-block;margin:-.21425em 0 0;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-weight:700;color:rgba(0,0,0,.85)}.ui.items>.item>.content>.header:not(.ui){font-size:1.28571429em}.ui.items>.item [class*="left floated"]{float:left}.ui.items>.item [class*="right floated"]{float:right}.ui.items>.item .content img{-ms-flex-item-align:middle;align-self:middle;width:''}.ui.items>.item .avatar img,.ui.items>.item img.avatar{width:'';height:'';border-radius:500rem}.ui.items>.item>.content>.description{margin-top:.6em;max-width:auto;font-size:1em;line-height:1.4285em;color:rgba(0,0,0,.87)}.ui.items>.item>.content p{margin:0 0 .5em}.ui.items>.item>.content p:last-child{margin-bottom:0}.ui.items>.item .meta{margin:.5em 0 .5em;font-size:1em;line-height:1em;color:rgba(0,0,0,.6)}.ui.items>.item .meta *{margin-right:.3em}.ui.items>.item .meta :last-child{margin-right:0}.ui.items>.item .meta [class*="right floated"]{margin-right:0;margin-left:.3em}.ui.items>.item>.content a:not(.ui){color:'';-webkit-transition:color .1s ease;transition:color .1s ease}.ui.items>.item>.content a:not(.ui):hover{color:''}.ui.items>.item>.content>a.header{color:rgba(0,0,0,.85)}.ui.items>.item>.content>a.header:hover{color:#1e70bf}.ui.items>.item .meta>a:not(.ui){color:rgba(0,0,0,.4)}.ui.items>.item .meta>a:not(.ui):hover{color:rgba(0,0,0,.87)}.ui.items>.item>.content .favorite.icon{cursor:pointer;opacity:.75;-webkit-transition:color .1s ease;transition:color .1s ease}.ui.items>.item>.content .favorite.icon:hover{opacity:1;color:#ffb70a}.ui.items>.item>.content .active.favorite.icon{color:#ffe623}.ui.items>.item>.content .like.icon{cursor:pointer;opacity:.75;-webkit-transition:color .1s ease;transition:color .1s ease}.ui.items>.item>.content .like.icon:hover{opacity:1;color:#ff2733}.ui.items>.item>.content .active.like.icon{color:#ff2733}.ui.items>.item .extra{display:block;position:relative;background:0 0;margin:.5rem 0 0;width:100%;padding:0 0 0;top:0;left:0;color:rgba(0,0,0,.4);-webkit-box-shadow:none;box-shadow:none;-webkit-transition:color .1s ease;transition:color .1s ease;border-top:none}.ui.items>.item .extra>*{margin:.25rem .5rem .25rem 0}.ui.items>.item .extra>[class*="right floated"]{margin:.25rem 0 .25rem .5rem}.ui.items>.item .extra:after{display:block;content:' ';height:0;clear:both;overflow:hidden;visibility:hidden}.ui.items>.item>.image:not(.ui){width:175px}@media only screen and (min-width:768px) and (max-width:991px){.ui.items>.item{margin:1em 0}.ui.items>.item>.image:not(.ui){width:150px}.ui.items>.item>.image+.content{display:block;padding:0 0 0 1em}}@media only screen and (max-width:767px){.ui.items:not(.unstackable)>.item{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin:2em 0}.ui.items:not(.unstackable)>.item>.image{display:block;margin-left:auto;margin-right:auto}.ui.items:not(.unstackable)>.item>.image,.ui.items:not(.unstackable)>.item>.image>img{max-width:100%!important;width:auto!important;max-height:250px!important}.ui.items:not(.unstackable)>.item>.image+.content{display:block;padding:1.5em 0 0}}.ui.items>.item>.image+[class*="top aligned"].content{-ms-flex-item-align:start;align-self:flex-start}.ui.items>.item>.image+[class*="middle aligned"].content{-ms-flex-item-align:center;align-self:center}.ui.items>.item>.image+[class*="bottom aligned"].content{-ms-flex-item-align:end;align-self:flex-end}.ui.relaxed.items>.item{margin:1.5em 0}.ui[class*="very relaxed"].items>.item{margin:2em 0}.ui.divided.items>.item{border-top:1px solid rgba(34,36,38,.15);margin:0;padding:1em 0}.ui.divided.items>.item:first-child{border-top:none;margin-top:0!important;padding-top:0!important}.ui.divided.items>.item:last-child{margin-bottom:0!important;padding-bottom:0!important}.ui.relaxed.divided.items>.item{margin:0;padding:1.5em 0}.ui[class*="very relaxed"].divided.items>.item{margin:0;padding:2em 0}.ui.items a.item:hover,.ui.link.items>.item:hover{cursor:pointer}.ui.items a.item:hover .content .header,.ui.link.items>.item:hover .content .header{color:#1e70bf}.ui.items>.item{font-size:1em}@media only screen and (max-width:767px){.ui.unstackable.items>.item>.image,.ui.unstackable.items>.item>.image>img{width:125px!important}} \ No newline at end of file diff --git a/app/static/semantic/components/label.css b/app/static/semantic/components/label.css new file mode 100755 index 0000000..c8be42b --- /dev/null +++ b/app/static/semantic/components/label.css @@ -0,0 +1,1313 @@ +/*! + * # Semantic UI 2.4.1 - Label + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */ + + +/******************************* + Label +*******************************/ + +.ui.label { + display: inline-block; + line-height: 1; + vertical-align: baseline; + margin: 0em 0.14285714em; + background-color: #E8E8E8; + background-image: none; + padding: 0.5833em 0.833em; + color: rgba(0, 0, 0, 0.6); + text-transform: none; + font-weight: bold; + border: 0px solid transparent; + border-radius: 0.28571429rem; + -webkit-transition: background 0.1s ease; + transition: background 0.1s ease; +} +.ui.label:first-child { + margin-left: 0em; +} +.ui.label:last-child { + margin-right: 0em; +} + +/* Link */ +a.ui.label { + cursor: pointer; +} + +/* Inside Link */ +.ui.label > a { + cursor: pointer; + color: inherit; + opacity: 0.5; + -webkit-transition: 0.1s opacity ease; + transition: 0.1s opacity ease; +} +.ui.label > a:hover { + opacity: 1; +} + +/* Image */ +.ui.label > img { + width: auto !important; + vertical-align: middle; + height: 2.1666em !important; +} + +/* Icon */ +.ui.label > .icon { + width: auto; + margin: 0em 0.75em 0em 0em; +} + +/* Detail */ +.ui.label > .detail { + display: inline-block; + vertical-align: top; + font-weight: bold; + margin-left: 1em; + opacity: 0.8; +} +.ui.label > .detail .icon { + margin: 0em 0.25em 0em 0em; +} + +/* Removable label */ +.ui.label > .close.icon, +.ui.label > .delete.icon { + cursor: pointer; + margin-right: 0em; + margin-left: 0.5em; + font-size: 0.92857143em; + opacity: 0.5; + -webkit-transition: background 0.1s ease; + transition: background 0.1s ease; +} +.ui.label > .delete.icon:hover { + opacity: 1; +} + +/*------------------- + Group +--------------------*/ + +.ui.labels > .label { + margin: 0em 0.5em 0.5em 0em; +} + +/*------------------- + Coupling +--------------------*/ + +.ui.header > .ui.label { + margin-top: -0.29165em; +} + +/* Remove border radius on attached segment */ +.ui.attached.segment > .ui.top.left.attached.label, +.ui.bottom.attached.segment > .ui.top.left.attached.label { + border-top-left-radius: 0; +} +.ui.attached.segment > .ui.top.right.attached.label, +.ui.bottom.attached.segment > .ui.top.right.attached.label { + border-top-right-radius: 0; +} +.ui.top.attached.segment > .ui.bottom.left.attached.label { + border-bottom-left-radius: 0; +} +.ui.top.attached.segment > .ui.bottom.right.attached.label { + border-bottom-right-radius: 0; +} + +/* Padding on next content after a label */ +.ui.top.attached.label:first-child + :not(.attached), +.ui.top.attached.label + [class*="right floated"] + * { + margin-top: 2rem !important; +} +.ui.bottom.attached.label:first-child ~ :last-child:not(.attached) { + margin-top: 0em; + margin-bottom: 2rem !important; +} + + +/******************************* + Types +*******************************/ + +.ui.image.label { + width: auto !important; + margin-top: 0em; + margin-bottom: 0em; + max-width: 9999px; + vertical-align: baseline; + text-transform: none; + background: #E8E8E8; + padding: 0.5833em 0.833em 0.5833em 0.5em; + border-radius: 0.28571429rem; + -webkit-box-shadow: none; + box-shadow: none; +} +.ui.image.label img { + display: inline-block; + vertical-align: top; + height: 2.1666em; + margin: -0.5833em 0.5em -0.5833em -0.5em; + border-radius: 0.28571429rem 0em 0em 0.28571429rem; +} +.ui.image.label .detail { + background: rgba(0, 0, 0, 0.1); + margin: -0.5833em -0.833em -0.5833em 0.5em; + padding: 0.5833em 0.833em; + border-radius: 0em 0.28571429rem 0.28571429rem 0em; +} + +/*------------------- + Tag +--------------------*/ + +.ui.tag.labels .label, +.ui.tag.label { + margin-left: 1em; + position: relative; + padding-left: 1.5em; + padding-right: 1.5em; + border-radius: 0em 0.28571429rem 0.28571429rem 0em; + -webkit-transition: none; + transition: none; +} +.ui.tag.labels .label:before, +.ui.tag.label:before { + position: absolute; + -webkit-transform: translateY(-50%) translateX(50%) rotate(-45deg); + transform: translateY(-50%) translateX(50%) rotate(-45deg); + top: 50%; + right: 100%; + content: ''; + background-color: inherit; + background-image: none; + width: 1.56em; + height: 1.56em; + -webkit-transition: none; + transition: none; +} +.ui.tag.labels .label:after, +.ui.tag.label:after { + position: absolute; + content: ''; + top: 50%; + left: -0.25em; + margin-top: -0.25em; + background-color: #FFFFFF !important; + width: 0.5em; + height: 0.5em; + -webkit-box-shadow: 0 -1px 1px 0 rgba(0, 0, 0, 0.3); + box-shadow: 0 -1px 1px 0 rgba(0, 0, 0, 0.3); + border-radius: 500rem; +} + +/*------------------- + Corner Label +--------------------*/ + +.ui.corner.label { + position: absolute; + top: 0em; + right: 0em; + margin: 0em; + padding: 0em; + text-align: center; + border-color: #E8E8E8; + width: 4em; + height: 4em; + z-index: 1; + -webkit-transition: border-color 0.1s ease; + transition: border-color 0.1s ease; +} + +/* Icon Label */ +.ui.corner.label { + background-color: transparent !important; +} +.ui.corner.label:after { + position: absolute; + content: ""; + right: 0em; + top: 0em; + z-index: -1; + width: 0em; + height: 0em; + background-color: transparent !important; + border-top: 0em solid transparent; + border-right: 4em solid transparent; + border-bottom: 4em solid transparent; + border-left: 0em solid transparent; + border-right-color: inherit; + -webkit-transition: border-color 0.1s ease; + transition: border-color 0.1s ease; +} +.ui.corner.label .icon { + cursor: default; + position: relative; + top: 0.64285714em; + left: 0.78571429em; + font-size: 1.14285714em; + margin: 0em; +} + +/* Left Corner */ +.ui.left.corner.label, +.ui.left.corner.label:after { + right: auto; + left: 0em; +} +.ui.left.corner.label:after { + border-top: 4em solid transparent; + border-right: 4em solid transparent; + border-bottom: 0em solid transparent; + border-left: 0em solid transparent; + border-top-color: inherit; +} +.ui.left.corner.label .icon { + left: -0.78571429em; +} + +/* Segment */ +.ui.segment > .ui.corner.label { + top: -1px; + right: -1px; +} +.ui.segment > .ui.left.corner.label { + right: auto; + left: -1px; +} + +/*------------------- + Ribbon +--------------------*/ + +.ui.ribbon.label { + position: relative; + margin: 0em; + min-width: -webkit-max-content; + min-width: -moz-max-content; + min-width: max-content; + border-radius: 0em 0.28571429rem 0.28571429rem 0em; + border-color: rgba(0, 0, 0, 0.15); +} +.ui.ribbon.label:after { + position: absolute; + content: ''; + top: 100%; + left: 0%; + background-color: transparent !important; + border-style: solid; + border-width: 0em 1.2em 1.2em 0em; + border-color: transparent; + border-right-color: inherit; + width: 0em; + height: 0em; +} + +/* Positioning */ +.ui.ribbon.label { + left: calc(-1rem - 1.2em); + margin-right: -1.2em; + padding-left: calc(1rem + 1.2em); + padding-right: 1.2em; +} +.ui[class*="right ribbon"].label { + left: calc(100% + 1rem + 1.2em); + padding-left: 1.2em; + padding-right: calc(1rem + 1.2em); +} + +/* Right Ribbon */ +.ui[class*="right ribbon"].label { + text-align: left; + -webkit-transform: translateX(-100%); + transform: translateX(-100%); + border-radius: 0.28571429rem 0em 0em 0.28571429rem; +} +.ui[class*="right ribbon"].label:after { + left: auto; + right: 0%; + border-style: solid; + border-width: 1.2em 1.2em 0em 0em; + border-color: transparent; + border-top-color: inherit; +} + +/* Inside Table */ +.ui.image > .ribbon.label, +.ui.card .image > .ribbon.label { + position: absolute; + top: 1rem; +} +.ui.card .image > .ui.ribbon.label, +.ui.image > .ui.ribbon.label { + left: calc(--0.05rem - 1.2em); +} +.ui.card .image > .ui[class*="right ribbon"].label, +.ui.image > .ui[class*="right ribbon"].label { + left: calc(100% + -0.05rem + 1.2em); + padding-left: 0.833em; +} + +/* Inside Table */ +.ui.table td > .ui.ribbon.label { + left: calc(-0.78571429em - 1.2em); +} +.ui.table td > .ui[class*="right ribbon"].label { + left: calc(100% + 0.78571429em + 1.2em); + padding-left: 0.833em; +} + +/*------------------- + Attached +--------------------*/ + +.ui[class*="top attached"].label, +.ui.attached.label { + width: 100%; + position: absolute; + margin: 0em; + top: 0em; + left: 0em; + padding: 0.75em 1em; + border-radius: 0.21428571rem 0.21428571rem 0em 0em; +} +.ui[class*="bottom attached"].label { + top: auto; + bottom: 0em; + border-radius: 0em 0em 0.21428571rem 0.21428571rem; +} +.ui[class*="top left attached"].label { + width: auto; + margin-top: 0em !important; + border-radius: 0.21428571rem 0em 0.28571429rem 0em; +} +.ui[class*="top right attached"].label { + width: auto; + left: auto; + right: 0em; + border-radius: 0em 0.21428571rem 0em 0.28571429rem; +} +.ui[class*="bottom left attached"].label { + width: auto; + top: auto; + bottom: 0em; + border-radius: 0em 0.28571429rem 0em 0.21428571rem; +} +.ui[class*="bottom right attached"].label { + top: auto; + bottom: 0em; + left: auto; + right: 0em; + width: auto; + border-radius: 0.28571429rem 0em 0.21428571rem 0em; +} + + +/******************************* + States +*******************************/ + + +/*------------------- + Disabled +--------------------*/ + +.ui.label.disabled { + opacity: 0.5; +} + +/*------------------- + Hover +--------------------*/ + +a.ui.labels .label:hover, +a.ui.label:hover { + background-color: #E0E0E0; + border-color: #E0E0E0; + background-image: none; + color: rgba(0, 0, 0, 0.8); +} +.ui.labels a.label:hover:before, +a.ui.label:hover:before { + color: rgba(0, 0, 0, 0.8); +} + +/*------------------- + Active +--------------------*/ + +.ui.active.label { + background-color: #D0D0D0; + border-color: #D0D0D0; + background-image: none; + color: rgba(0, 0, 0, 0.95); +} +.ui.active.label:before { + background-color: #D0D0D0; + background-image: none; + color: rgba(0, 0, 0, 0.95); +} + +/*------------------- + Active Hover +--------------------*/ + +a.ui.labels .active.label:hover, +a.ui.active.label:hover { + background-color: #C8C8C8; + border-color: #C8C8C8; + background-image: none; + color: rgba(0, 0, 0, 0.95); +} +.ui.labels a.active.label:ActiveHover:before, +a.ui.active.label:ActiveHover:before { + background-color: #C8C8C8; + background-image: none; + color: rgba(0, 0, 0, 0.95); +} + +/*------------------- + Visible +--------------------*/ + +.ui.labels.visible .label, +.ui.label.visible:not(.dropdown) { + display: inline-block !important; +} + +/*------------------- + Hidden +--------------------*/ + +.ui.labels.hidden .label, +.ui.label.hidden { + display: none !important; +} + + +/******************************* + Variations +*******************************/ + + +/*------------------- + Colors +--------------------*/ + + +/*--- Red ---*/ + +.ui.red.labels .label, +.ui.red.label { + background-color: #DB2828 !important; + border-color: #DB2828 !important; + color: #FFFFFF !important; +} + +/* Link */ +.ui.red.labels .label:hover, +a.ui.red.label:hover { + background-color: #d01919 !important; + border-color: #d01919 !important; + color: #FFFFFF !important; +} + +/* Corner */ +.ui.red.corner.label, +.ui.red.corner.label:hover { + background-color: transparent !important; +} + +/* Ribbon */ +.ui.red.ribbon.label { + border-color: #b21e1e !important; +} + +/* Basic */ +.ui.basic.red.label { + background: none #FFFFFF !important; + color: #DB2828 !important; + border-color: #DB2828 !important; +} +.ui.basic.red.labels a.label:hover, +a.ui.basic.red.label:hover { + background-color: #FFFFFF !important; + color: #d01919 !important; + border-color: #d01919 !important; +} + +/*--- Orange ---*/ + +.ui.orange.labels .label, +.ui.orange.label { + background-color: #F2711C !important; + border-color: #F2711C !important; + color: #FFFFFF !important; +} + +/* Link */ +.ui.orange.labels .label:hover, +a.ui.orange.label:hover { + background-color: #f26202 !important; + border-color: #f26202 !important; + color: #FFFFFF !important; +} + +/* Corner */ +.ui.orange.corner.label, +.ui.orange.corner.label:hover { + background-color: transparent !important; +} + +/* Ribbon */ +.ui.orange.ribbon.label { + border-color: #cf590c !important; +} + +/* Basic */ +.ui.basic.orange.label { + background: none #FFFFFF !important; + color: #F2711C !important; + border-color: #F2711C !important; +} +.ui.basic.orange.labels a.label:hover, +a.ui.basic.orange.label:hover { + background-color: #FFFFFF !important; + color: #f26202 !important; + border-color: #f26202 !important; +} + +/*--- Yellow ---*/ + +.ui.yellow.labels .label, +.ui.yellow.label { + background-color: #FBBD08 !important; + border-color: #FBBD08 !important; + color: #FFFFFF !important; +} + +/* Link */ +.ui.yellow.labels .label:hover, +a.ui.yellow.label:hover { + background-color: #eaae00 !important; + border-color: #eaae00 !important; + color: #FFFFFF !important; +} + +/* Corner */ +.ui.yellow.corner.label, +.ui.yellow.corner.label:hover { + background-color: transparent !important; +} + +/* Ribbon */ +.ui.yellow.ribbon.label { + border-color: #cd9903 !important; +} + +/* Basic */ +.ui.basic.yellow.label { + background: none #FFFFFF !important; + color: #FBBD08 !important; + border-color: #FBBD08 !important; +} +.ui.basic.yellow.labels a.label:hover, +a.ui.basic.yellow.label:hover { + background-color: #FFFFFF !important; + color: #eaae00 !important; + border-color: #eaae00 !important; +} + +/*--- Olive ---*/ + +.ui.olive.labels .label, +.ui.olive.label { + background-color: #B5CC18 !important; + border-color: #B5CC18 !important; + color: #FFFFFF !important; +} + +/* Link */ +.ui.olive.labels .label:hover, +a.ui.olive.label:hover { + background-color: #a7bd0d !important; + border-color: #a7bd0d !important; + color: #FFFFFF !important; +} + +/* Corner */ +.ui.olive.corner.label, +.ui.olive.corner.label:hover { + background-color: transparent !important; +} + +/* Ribbon */ +.ui.olive.ribbon.label { + border-color: #198f35 !important; +} + +/* Basic */ +.ui.basic.olive.label { + background: none #FFFFFF !important; + color: #B5CC18 !important; + border-color: #B5CC18 !important; +} +.ui.basic.olive.labels a.label:hover, +a.ui.basic.olive.label:hover { + background-color: #FFFFFF !important; + color: #a7bd0d !important; + border-color: #a7bd0d !important; +} + +/*--- Green ---*/ + +.ui.green.labels .label, +.ui.green.label { + background-color: #21BA45 !important; + border-color: #21BA45 !important; + color: #FFFFFF !important; +} + +/* Link */ +.ui.green.labels .label:hover, +a.ui.green.label:hover { + background-color: #16ab39 !important; + border-color: #16ab39 !important; + color: #FFFFFF !important; +} + +/* Corner */ +.ui.green.corner.label, +.ui.green.corner.label:hover { + background-color: transparent !important; +} + +/* Ribbon */ +.ui.green.ribbon.label { + border-color: #198f35 !important; +} + +/* Basic */ +.ui.basic.green.label { + background: none #FFFFFF !important; + color: #21BA45 !important; + border-color: #21BA45 !important; +} +.ui.basic.green.labels a.label:hover, +a.ui.basic.green.label:hover { + background-color: #FFFFFF !important; + color: #16ab39 !important; + border-color: #16ab39 !important; +} + +/*--- Teal ---*/ + +.ui.teal.labels .label, +.ui.teal.label { + background-color: #00B5AD !important; + border-color: #00B5AD !important; + color: #FFFFFF !important; +} + +/* Link */ +.ui.teal.labels .label:hover, +a.ui.teal.label:hover { + background-color: #009c95 !important; + border-color: #009c95 !important; + color: #FFFFFF !important; +} + +/* Corner */ +.ui.teal.corner.label, +.ui.teal.corner.label:hover { + background-color: transparent !important; +} + +/* Ribbon */ +.ui.teal.ribbon.label { + border-color: #00827c !important; +} + +/* Basic */ +.ui.basic.teal.label { + background: none #FFFFFF !important; + color: #00B5AD !important; + border-color: #00B5AD !important; +} +.ui.basic.teal.labels a.label:hover, +a.ui.basic.teal.label:hover { + background-color: #FFFFFF !important; + color: #009c95 !important; + border-color: #009c95 !important; +} + +/*--- Blue ---*/ + +.ui.blue.labels .label, +.ui.blue.label { + background-color: #2185D0 !important; + border-color: #2185D0 !important; + color: #FFFFFF !important; +} + +/* Link */ +.ui.blue.labels .label:hover, +a.ui.blue.label:hover { + background-color: #1678c2 !important; + border-color: #1678c2 !important; + color: #FFFFFF !important; +} + +/* Corner */ +.ui.blue.corner.label, +.ui.blue.corner.label:hover { + background-color: transparent !important; +} + +/* Ribbon */ +.ui.blue.ribbon.label { + border-color: #1a69a4 !important; +} + +/* Basic */ +.ui.basic.blue.label { + background: none #FFFFFF !important; + color: #2185D0 !important; + border-color: #2185D0 !important; +} +.ui.basic.blue.labels a.label:hover, +a.ui.basic.blue.label:hover { + background-color: #FFFFFF !important; + color: #1678c2 !important; + border-color: #1678c2 !important; +} + +/*--- Violet ---*/ + +.ui.violet.labels .label, +.ui.violet.label { + background-color: #6435C9 !important; + border-color: #6435C9 !important; + color: #FFFFFF !important; +} + +/* Link */ +.ui.violet.labels .label:hover, +a.ui.violet.label:hover { + background-color: #5829bb !important; + border-color: #5829bb !important; + color: #FFFFFF !important; +} + +/* Corner */ +.ui.violet.corner.label, +.ui.violet.corner.label:hover { + background-color: transparent !important; +} + +/* Ribbon */ +.ui.violet.ribbon.label { + border-color: #502aa1 !important; +} + +/* Basic */ +.ui.basic.violet.label { + background: none #FFFFFF !important; + color: #6435C9 !important; + border-color: #6435C9 !important; +} +.ui.basic.violet.labels a.label:hover, +a.ui.basic.violet.label:hover { + background-color: #FFFFFF !important; + color: #5829bb !important; + border-color: #5829bb !important; +} + +/*--- Purple ---*/ + +.ui.purple.labels .label, +.ui.purple.label { + background-color: #A333C8 !important; + border-color: #A333C8 !important; + color: #FFFFFF !important; +} + +/* Link */ +.ui.purple.labels .label:hover, +a.ui.purple.label:hover { + background-color: #9627ba !important; + border-color: #9627ba !important; + color: #FFFFFF !important; +} + +/* Corner */ +.ui.purple.corner.label, +.ui.purple.corner.label:hover { + background-color: transparent !important; +} + +/* Ribbon */ +.ui.purple.ribbon.label { + border-color: #82299f !important; +} + +/* Basic */ +.ui.basic.purple.label { + background: none #FFFFFF !important; + color: #A333C8 !important; + border-color: #A333C8 !important; +} +.ui.basic.purple.labels a.label:hover, +a.ui.basic.purple.label:hover { + background-color: #FFFFFF !important; + color: #9627ba !important; + border-color: #9627ba !important; +} + +/*--- Pink ---*/ + +.ui.pink.labels .label, +.ui.pink.label { + background-color: #E03997 !important; + border-color: #E03997 !important; + color: #FFFFFF !important; +} + +/* Link */ +.ui.pink.labels .label:hover, +a.ui.pink.label:hover { + background-color: #e61a8d !important; + border-color: #e61a8d !important; + color: #FFFFFF !important; +} + +/* Corner */ +.ui.pink.corner.label, +.ui.pink.corner.label:hover { + background-color: transparent !important; +} + +/* Ribbon */ +.ui.pink.ribbon.label { + border-color: #c71f7e !important; +} + +/* Basic */ +.ui.basic.pink.label { + background: none #FFFFFF !important; + color: #E03997 !important; + border-color: #E03997 !important; +} +.ui.basic.pink.labels a.label:hover, +a.ui.basic.pink.label:hover { + background-color: #FFFFFF !important; + color: #e61a8d !important; + border-color: #e61a8d !important; +} + +/*--- Brown ---*/ + +.ui.brown.labels .label, +.ui.brown.label { + background-color: #A5673F !important; + border-color: #A5673F !important; + color: #FFFFFF !important; +} + +/* Link */ +.ui.brown.labels .label:hover, +a.ui.brown.label:hover { + background-color: #975b33 !important; + border-color: #975b33 !important; + color: #FFFFFF !important; +} + +/* Corner */ +.ui.brown.corner.label, +.ui.brown.corner.label:hover { + background-color: transparent !important; +} + +/* Ribbon */ +.ui.brown.ribbon.label { + border-color: #805031 !important; +} + +/* Basic */ +.ui.basic.brown.label { + background: none #FFFFFF !important; + color: #A5673F !important; + border-color: #A5673F !important; +} +.ui.basic.brown.labels a.label:hover, +a.ui.basic.brown.label:hover { + background-color: #FFFFFF !important; + color: #975b33 !important; + border-color: #975b33 !important; +} + +/*--- Grey ---*/ + +.ui.grey.labels .label, +.ui.grey.label { + background-color: #767676 !important; + border-color: #767676 !important; + color: #FFFFFF !important; +} + +/* Link */ +.ui.grey.labels .label:hover, +a.ui.grey.label:hover { + background-color: #838383 !important; + border-color: #838383 !important; + color: #FFFFFF !important; +} + +/* Corner */ +.ui.grey.corner.label, +.ui.grey.corner.label:hover { + background-color: transparent !important; +} + +/* Ribbon */ +.ui.grey.ribbon.label { + border-color: #805031 !important; +} + +/* Basic */ +.ui.basic.grey.label { + background: none #FFFFFF !important; + color: #767676 !important; + border-color: #767676 !important; +} +.ui.basic.grey.labels a.label:hover, +a.ui.basic.grey.label:hover { + background-color: #FFFFFF !important; + color: #838383 !important; + border-color: #838383 !important; +} + +/*--- Black ---*/ + +.ui.black.labels .label, +.ui.black.label { + background-color: #1B1C1D !important; + border-color: #1B1C1D !important; + color: #FFFFFF !important; +} + +/* Link */ +.ui.black.labels .label:hover, +a.ui.black.label:hover { + background-color: #27292a !important; + border-color: #27292a !important; + color: #FFFFFF !important; +} + +/* Corner */ +.ui.black.corner.label, +.ui.black.corner.label:hover { + background-color: transparent !important; +} + +/* Ribbon */ +.ui.black.ribbon.label { + border-color: #805031 !important; +} + +/* Basic */ +.ui.basic.black.label { + background: none #FFFFFF !important; + color: #1B1C1D !important; + border-color: #1B1C1D !important; +} +.ui.basic.black.labels a.label:hover, +a.ui.basic.black.label:hover { + background-color: #FFFFFF !important; + color: #27292a !important; + border-color: #27292a !important; +} + +/*------------------- + Basic +--------------------*/ + +.ui.basic.label { + background: none #FFFFFF; + border: 1px solid rgba(34, 36, 38, 0.15); + color: rgba(0, 0, 0, 0.87); + -webkit-box-shadow: none; + box-shadow: none; +} + +/* Link */ +a.ui.basic.label:hover { + text-decoration: none; + background: none #FFFFFF; + color: #1e70bf; + -webkit-box-shadow: 1px solid rgba(34, 36, 38, 0.15); + box-shadow: 1px solid rgba(34, 36, 38, 0.15); + -webkit-box-shadow: none; + box-shadow: none; +} + +/* Pointing */ +.ui.basic.pointing.label:before { + border-color: inherit; +} + +/*------------------- + Fluid +--------------------*/ + +.ui.label.fluid, +.ui.fluid.labels > .label { + width: 100%; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} + +/*------------------- + Inverted +--------------------*/ + +.ui.inverted.labels .label, +.ui.inverted.label { + color: rgba(255, 255, 255, 0.9) !important; +} + +/*------------------- + Horizontal +--------------------*/ + +.ui.horizontal.labels .label, +.ui.horizontal.label { + margin: 0em 0.5em 0em 0em; + padding: 0.4em 0.833em; + min-width: 3em; + text-align: center; +} + +/*------------------- + Circular +--------------------*/ + +.ui.circular.labels .label, +.ui.circular.label { + min-width: 2em; + min-height: 2em; + padding: 0.5em !important; + line-height: 1em; + text-align: center; + border-radius: 500rem; +} +.ui.empty.circular.labels .label, +.ui.empty.circular.label { + min-width: 0em; + min-height: 0em; + overflow: hidden; + width: 0.5em; + height: 0.5em; + vertical-align: baseline; +} + +/*------------------- + Pointing +--------------------*/ + +.ui.pointing.label { + position: relative; +} +.ui.attached.pointing.label { + position: absolute; +} +.ui.pointing.label:before { + background-color: inherit; + background-image: inherit; + border-width: none; + border-style: solid; + border-color: inherit; +} + +/* Arrow */ +.ui.pointing.label:before { + position: absolute; + content: ''; + -webkit-transform: rotate(45deg); + transform: rotate(45deg); + background-image: none; + z-index: 2; + width: 0.6666em; + height: 0.6666em; + -webkit-transition: background 0.1s ease; + transition: background 0.1s ease; +} + +/*--- Above ---*/ + +.ui.pointing.label, +.ui[class*="pointing above"].label { + margin-top: 1em; +} +.ui.pointing.label:before, +.ui[class*="pointing above"].label:before { + border-width: 1px 0px 0px 1px; + -webkit-transform: translateX(-50%) translateY(-50%) rotate(45deg); + transform: translateX(-50%) translateY(-50%) rotate(45deg); + top: 0%; + left: 50%; +} + +/*--- Below ---*/ + +.ui[class*="bottom pointing"].label, +.ui[class*="pointing below"].label { + margin-top: 0em; + margin-bottom: 1em; +} +.ui[class*="bottom pointing"].label:before, +.ui[class*="pointing below"].label:before { + border-width: 0px 1px 1px 0px; + top: auto; + right: auto; + -webkit-transform: translateX(-50%) translateY(-50%) rotate(45deg); + transform: translateX(-50%) translateY(-50%) rotate(45deg); + top: 100%; + left: 50%; +} + +/*--- Left ---*/ + +.ui[class*="left pointing"].label { + margin-top: 0em; + margin-left: 0.6666em; +} +.ui[class*="left pointing"].label:before { + border-width: 0px 0px 1px 1px; + -webkit-transform: translateX(-50%) translateY(-50%) rotate(45deg); + transform: translateX(-50%) translateY(-50%) rotate(45deg); + bottom: auto; + right: auto; + top: 50%; + left: 0em; +} + +/*--- Right ---*/ + +.ui[class*="right pointing"].label { + margin-top: 0em; + margin-right: 0.6666em; +} +.ui[class*="right pointing"].label:before { + border-width: 1px 1px 0px 0px; + -webkit-transform: translateX(50%) translateY(-50%) rotate(45deg); + transform: translateX(50%) translateY(-50%) rotate(45deg); + top: 50%; + right: 0%; + bottom: auto; + left: auto; +} + +/* Basic Pointing */ + +/*--- Above ---*/ + +.ui.basic.pointing.label:before, +.ui.basic[class*="pointing above"].label:before { + margin-top: -1px; +} + +/*--- Below ---*/ + +.ui.basic[class*="bottom pointing"].label:before, +.ui.basic[class*="pointing below"].label:before { + bottom: auto; + top: 100%; + margin-top: 1px; +} + +/*--- Left ---*/ + +.ui.basic[class*="left pointing"].label:before { + top: 50%; + left: -1px; +} + +/*--- Right ---*/ + +.ui.basic[class*="right pointing"].label:before { + top: 50%; + right: -1px; +} + +/*------------------ + Floating Label +-------------------*/ + +.ui.floating.label { + position: absolute; + z-index: 100; + top: -1em; + left: 100%; + margin: 0em 0em 0em -1.5em !important; +} + +/*------------------- + Sizes +--------------------*/ + +.ui.mini.labels .label, +.ui.mini.label { + font-size: 0.64285714rem; +} +.ui.tiny.labels .label, +.ui.tiny.label { + font-size: 0.71428571rem; +} +.ui.small.labels .label, +.ui.small.label { + font-size: 0.78571429rem; +} +.ui.labels .label, +.ui.label { + font-size: 0.85714286rem; +} +.ui.large.labels .label, +.ui.large.label { + font-size: 1rem; +} +.ui.big.labels .label, +.ui.big.label { + font-size: 1.28571429rem; +} +.ui.huge.labels .label, +.ui.huge.label { + font-size: 1.42857143rem; +} +.ui.massive.labels .label, +.ui.massive.label { + font-size: 1.71428571rem; +} + + +/******************************* + Theme Overrides +*******************************/ + + + +/******************************* + Site Overrides +*******************************/ + diff --git a/app/static/semantic/components/label.min.css b/app/static/semantic/components/label.min.css new file mode 100755 index 0000000..57de2c4 --- /dev/null +++ b/app/static/semantic/components/label.min.css @@ -0,0 +1,9 @@ +/*! + * # Semantic UI 2.4.1 - Label + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */.ui.label{display:inline-block;line-height:1;vertical-align:baseline;margin:0 .14285714em;background-color:#e8e8e8;background-image:none;padding:.5833em .833em;color:rgba(0,0,0,.6);text-transform:none;font-weight:700;border:0 solid transparent;border-radius:.28571429rem;-webkit-transition:background .1s ease;transition:background .1s ease}.ui.label:first-child{margin-left:0}.ui.label:last-child{margin-right:0}a.ui.label{cursor:pointer}.ui.label>a{cursor:pointer;color:inherit;opacity:.5;-webkit-transition:.1s opacity ease;transition:.1s opacity ease}.ui.label>a:hover{opacity:1}.ui.label>img{width:auto!important;vertical-align:middle;height:2.1666em!important}.ui.label>.icon{width:auto;margin:0 .75em 0 0}.ui.label>.detail{display:inline-block;vertical-align:top;font-weight:700;margin-left:1em;opacity:.8}.ui.label>.detail .icon{margin:0 .25em 0 0}.ui.label>.close.icon,.ui.label>.delete.icon{cursor:pointer;margin-right:0;margin-left:.5em;font-size:.92857143em;opacity:.5;-webkit-transition:background .1s ease;transition:background .1s ease}.ui.label>.delete.icon:hover{opacity:1}.ui.labels>.label{margin:0 .5em .5em 0}.ui.header>.ui.label{margin-top:-.29165em}.ui.attached.segment>.ui.top.left.attached.label,.ui.bottom.attached.segment>.ui.top.left.attached.label{border-top-left-radius:0}.ui.attached.segment>.ui.top.right.attached.label,.ui.bottom.attached.segment>.ui.top.right.attached.label{border-top-right-radius:0}.ui.top.attached.segment>.ui.bottom.left.attached.label{border-bottom-left-radius:0}.ui.top.attached.segment>.ui.bottom.right.attached.label{border-bottom-right-radius:0}.ui.top.attached.label+[class*="right floated"]+*,.ui.top.attached.label:first-child+:not(.attached){margin-top:2rem!important}.ui.bottom.attached.label:first-child~:last-child:not(.attached){margin-top:0;margin-bottom:2rem!important}.ui.image.label{width:auto!important;margin-top:0;margin-bottom:0;max-width:9999px;vertical-align:baseline;text-transform:none;background:#e8e8e8;padding:.5833em .833em .5833em .5em;border-radius:.28571429rem;-webkit-box-shadow:none;box-shadow:none}.ui.image.label img{display:inline-block;vertical-align:top;height:2.1666em;margin:-.5833em .5em -.5833em -.5em;border-radius:.28571429rem 0 0 .28571429rem}.ui.image.label .detail{background:rgba(0,0,0,.1);margin:-.5833em -.833em -.5833em .5em;padding:.5833em .833em;border-radius:0 .28571429rem .28571429rem 0}.ui.tag.label,.ui.tag.labels .label{margin-left:1em;position:relative;padding-left:1.5em;padding-right:1.5em;border-radius:0 .28571429rem .28571429rem 0;-webkit-transition:none;transition:none}.ui.tag.label:before,.ui.tag.labels .label:before{position:absolute;-webkit-transform:translateY(-50%) translateX(50%) rotate(-45deg);transform:translateY(-50%) translateX(50%) rotate(-45deg);top:50%;right:100%;content:'';background-color:inherit;background-image:none;width:1.56em;height:1.56em;-webkit-transition:none;transition:none}.ui.tag.label:after,.ui.tag.labels .label:after{position:absolute;content:'';top:50%;left:-.25em;margin-top:-.25em;background-color:#fff!important;width:.5em;height:.5em;-webkit-box-shadow:0 -1px 1px 0 rgba(0,0,0,.3);box-shadow:0 -1px 1px 0 rgba(0,0,0,.3);border-radius:500rem}.ui.corner.label{position:absolute;top:0;right:0;margin:0;padding:0;text-align:center;border-color:#e8e8e8;width:4em;height:4em;z-index:1;-webkit-transition:border-color .1s ease;transition:border-color .1s ease}.ui.corner.label{background-color:transparent!important}.ui.corner.label:after{position:absolute;content:"";right:0;top:0;z-index:-1;width:0;height:0;background-color:transparent!important;border-top:0 solid transparent;border-right:4em solid transparent;border-bottom:4em solid transparent;border-left:0 solid transparent;border-right-color:inherit;-webkit-transition:border-color .1s ease;transition:border-color .1s ease}.ui.corner.label .icon{cursor:default;position:relative;top:.64285714em;left:.78571429em;font-size:1.14285714em;margin:0}.ui.left.corner.label,.ui.left.corner.label:after{right:auto;left:0}.ui.left.corner.label:after{border-top:4em solid transparent;border-right:4em solid transparent;border-bottom:0 solid transparent;border-left:0 solid transparent;border-top-color:inherit}.ui.left.corner.label .icon{left:-.78571429em}.ui.segment>.ui.corner.label{top:-1px;right:-1px}.ui.segment>.ui.left.corner.label{right:auto;left:-1px}.ui.ribbon.label{position:relative;margin:0;min-width:-webkit-max-content;min-width:-moz-max-content;min-width:max-content;border-radius:0 .28571429rem .28571429rem 0;border-color:rgba(0,0,0,.15)}.ui.ribbon.label:after{position:absolute;content:'';top:100%;left:0;background-color:transparent!important;border-style:solid;border-width:0 1.2em 1.2em 0;border-color:transparent;border-right-color:inherit;width:0;height:0}.ui.ribbon.label{left:calc(-1rem - 1.2em);margin-right:-1.2em;padding-left:calc(1rem + 1.2em);padding-right:1.2em}.ui[class*="right ribbon"].label{left:calc(100% + 1rem + 1.2em);padding-left:1.2em;padding-right:calc(1rem + 1.2em)}.ui[class*="right ribbon"].label{text-align:left;-webkit-transform:translateX(-100%);transform:translateX(-100%);border-radius:.28571429rem 0 0 .28571429rem}.ui[class*="right ribbon"].label:after{left:auto;right:0;border-style:solid;border-width:1.2em 1.2em 0 0;border-color:transparent;border-top-color:inherit}.ui.card .image>.ribbon.label,.ui.image>.ribbon.label{position:absolute;top:1rem}.ui.card .image>.ui.ribbon.label,.ui.image>.ui.ribbon.label{left:calc(--.05rem - 1.2em)}.ui.card .image>.ui[class*="right ribbon"].label,.ui.image>.ui[class*="right ribbon"].label{left:calc(100% + -.05rem + 1.2em);padding-left:.833em}.ui.table td>.ui.ribbon.label{left:calc(-.78571429em - 1.2em)}.ui.table td>.ui[class*="right ribbon"].label{left:calc(100% + .78571429em + 1.2em);padding-left:.833em}.ui.attached.label,.ui[class*="top attached"].label{width:100%;position:absolute;margin:0;top:0;left:0;padding:.75em 1em;border-radius:.21428571rem .21428571rem 0 0}.ui[class*="bottom attached"].label{top:auto;bottom:0;border-radius:0 0 .21428571rem .21428571rem}.ui[class*="top left attached"].label{width:auto;margin-top:0!important;border-radius:.21428571rem 0 .28571429rem 0}.ui[class*="top right attached"].label{width:auto;left:auto;right:0;border-radius:0 .21428571rem 0 .28571429rem}.ui[class*="bottom left attached"].label{width:auto;top:auto;bottom:0;border-radius:0 .28571429rem 0 .21428571rem}.ui[class*="bottom right attached"].label{top:auto;bottom:0;left:auto;right:0;width:auto;border-radius:.28571429rem 0 .21428571rem 0}.ui.label.disabled{opacity:.5}a.ui.label:hover,a.ui.labels .label:hover{background-color:#e0e0e0;border-color:#e0e0e0;background-image:none;color:rgba(0,0,0,.8)}.ui.labels a.label:hover:before,a.ui.label:hover:before{color:rgba(0,0,0,.8)}.ui.active.label{background-color:#d0d0d0;border-color:#d0d0d0;background-image:none;color:rgba(0,0,0,.95)}.ui.active.label:before{background-color:#d0d0d0;background-image:none;color:rgba(0,0,0,.95)}a.ui.active.label:hover,a.ui.labels .active.label:hover{background-color:#c8c8c8;border-color:#c8c8c8;background-image:none;color:rgba(0,0,0,.95)}.ui.labels a.active.label:ActiveHover:before,a.ui.active.label:ActiveHover:before{background-color:#c8c8c8;background-image:none;color:rgba(0,0,0,.95)}.ui.label.visible:not(.dropdown),.ui.labels.visible .label{display:inline-block!important}.ui.label.hidden,.ui.labels.hidden .label{display:none!important}.ui.red.label,.ui.red.labels .label{background-color:#db2828!important;border-color:#db2828!important;color:#fff!important}.ui.red.labels .label:hover,a.ui.red.label:hover{background-color:#d01919!important;border-color:#d01919!important;color:#fff!important}.ui.red.corner.label,.ui.red.corner.label:hover{background-color:transparent!important}.ui.red.ribbon.label{border-color:#b21e1e!important}.ui.basic.red.label{background:none #fff!important;color:#db2828!important;border-color:#db2828!important}.ui.basic.red.labels a.label:hover,a.ui.basic.red.label:hover{background-color:#fff!important;color:#d01919!important;border-color:#d01919!important}.ui.orange.label,.ui.orange.labels .label{background-color:#f2711c!important;border-color:#f2711c!important;color:#fff!important}.ui.orange.labels .label:hover,a.ui.orange.label:hover{background-color:#f26202!important;border-color:#f26202!important;color:#fff!important}.ui.orange.corner.label,.ui.orange.corner.label:hover{background-color:transparent!important}.ui.orange.ribbon.label{border-color:#cf590c!important}.ui.basic.orange.label{background:none #fff!important;color:#f2711c!important;border-color:#f2711c!important}.ui.basic.orange.labels a.label:hover,a.ui.basic.orange.label:hover{background-color:#fff!important;color:#f26202!important;border-color:#f26202!important}.ui.yellow.label,.ui.yellow.labels .label{background-color:#fbbd08!important;border-color:#fbbd08!important;color:#fff!important}.ui.yellow.labels .label:hover,a.ui.yellow.label:hover{background-color:#eaae00!important;border-color:#eaae00!important;color:#fff!important}.ui.yellow.corner.label,.ui.yellow.corner.label:hover{background-color:transparent!important}.ui.yellow.ribbon.label{border-color:#cd9903!important}.ui.basic.yellow.label{background:none #fff!important;color:#fbbd08!important;border-color:#fbbd08!important}.ui.basic.yellow.labels a.label:hover,a.ui.basic.yellow.label:hover{background-color:#fff!important;color:#eaae00!important;border-color:#eaae00!important}.ui.olive.label,.ui.olive.labels .label{background-color:#b5cc18!important;border-color:#b5cc18!important;color:#fff!important}.ui.olive.labels .label:hover,a.ui.olive.label:hover{background-color:#a7bd0d!important;border-color:#a7bd0d!important;color:#fff!important}.ui.olive.corner.label,.ui.olive.corner.label:hover{background-color:transparent!important}.ui.olive.ribbon.label{border-color:#198f35!important}.ui.basic.olive.label{background:none #fff!important;color:#b5cc18!important;border-color:#b5cc18!important}.ui.basic.olive.labels a.label:hover,a.ui.basic.olive.label:hover{background-color:#fff!important;color:#a7bd0d!important;border-color:#a7bd0d!important}.ui.green.label,.ui.green.labels .label{background-color:#21ba45!important;border-color:#21ba45!important;color:#fff!important}.ui.green.labels .label:hover,a.ui.green.label:hover{background-color:#16ab39!important;border-color:#16ab39!important;color:#fff!important}.ui.green.corner.label,.ui.green.corner.label:hover{background-color:transparent!important}.ui.green.ribbon.label{border-color:#198f35!important}.ui.basic.green.label{background:none #fff!important;color:#21ba45!important;border-color:#21ba45!important}.ui.basic.green.labels a.label:hover,a.ui.basic.green.label:hover{background-color:#fff!important;color:#16ab39!important;border-color:#16ab39!important}.ui.teal.label,.ui.teal.labels .label{background-color:#00b5ad!important;border-color:#00b5ad!important;color:#fff!important}.ui.teal.labels .label:hover,a.ui.teal.label:hover{background-color:#009c95!important;border-color:#009c95!important;color:#fff!important}.ui.teal.corner.label,.ui.teal.corner.label:hover{background-color:transparent!important}.ui.teal.ribbon.label{border-color:#00827c!important}.ui.basic.teal.label{background:none #fff!important;color:#00b5ad!important;border-color:#00b5ad!important}.ui.basic.teal.labels a.label:hover,a.ui.basic.teal.label:hover{background-color:#fff!important;color:#009c95!important;border-color:#009c95!important}.ui.blue.label,.ui.blue.labels .label{background-color:#2185d0!important;border-color:#2185d0!important;color:#fff!important}.ui.blue.labels .label:hover,a.ui.blue.label:hover{background-color:#1678c2!important;border-color:#1678c2!important;color:#fff!important}.ui.blue.corner.label,.ui.blue.corner.label:hover{background-color:transparent!important}.ui.blue.ribbon.label{border-color:#1a69a4!important}.ui.basic.blue.label{background:none #fff!important;color:#2185d0!important;border-color:#2185d0!important}.ui.basic.blue.labels a.label:hover,a.ui.basic.blue.label:hover{background-color:#fff!important;color:#1678c2!important;border-color:#1678c2!important}.ui.violet.label,.ui.violet.labels .label{background-color:#6435c9!important;border-color:#6435c9!important;color:#fff!important}.ui.violet.labels .label:hover,a.ui.violet.label:hover{background-color:#5829bb!important;border-color:#5829bb!important;color:#fff!important}.ui.violet.corner.label,.ui.violet.corner.label:hover{background-color:transparent!important}.ui.violet.ribbon.label{border-color:#502aa1!important}.ui.basic.violet.label{background:none #fff!important;color:#6435c9!important;border-color:#6435c9!important}.ui.basic.violet.labels a.label:hover,a.ui.basic.violet.label:hover{background-color:#fff!important;color:#5829bb!important;border-color:#5829bb!important}.ui.purple.label,.ui.purple.labels .label{background-color:#a333c8!important;border-color:#a333c8!important;color:#fff!important}.ui.purple.labels .label:hover,a.ui.purple.label:hover{background-color:#9627ba!important;border-color:#9627ba!important;color:#fff!important}.ui.purple.corner.label,.ui.purple.corner.label:hover{background-color:transparent!important}.ui.purple.ribbon.label{border-color:#82299f!important}.ui.basic.purple.label{background:none #fff!important;color:#a333c8!important;border-color:#a333c8!important}.ui.basic.purple.labels a.label:hover,a.ui.basic.purple.label:hover{background-color:#fff!important;color:#9627ba!important;border-color:#9627ba!important}.ui.pink.label,.ui.pink.labels .label{background-color:#e03997!important;border-color:#e03997!important;color:#fff!important}.ui.pink.labels .label:hover,a.ui.pink.label:hover{background-color:#e61a8d!important;border-color:#e61a8d!important;color:#fff!important}.ui.pink.corner.label,.ui.pink.corner.label:hover{background-color:transparent!important}.ui.pink.ribbon.label{border-color:#c71f7e!important}.ui.basic.pink.label{background:none #fff!important;color:#e03997!important;border-color:#e03997!important}.ui.basic.pink.labels a.label:hover,a.ui.basic.pink.label:hover{background-color:#fff!important;color:#e61a8d!important;border-color:#e61a8d!important}.ui.brown.label,.ui.brown.labels .label{background-color:#a5673f!important;border-color:#a5673f!important;color:#fff!important}.ui.brown.labels .label:hover,a.ui.brown.label:hover{background-color:#975b33!important;border-color:#975b33!important;color:#fff!important}.ui.brown.corner.label,.ui.brown.corner.label:hover{background-color:transparent!important}.ui.brown.ribbon.label{border-color:#805031!important}.ui.basic.brown.label{background:none #fff!important;color:#a5673f!important;border-color:#a5673f!important}.ui.basic.brown.labels a.label:hover,a.ui.basic.brown.label:hover{background-color:#fff!important;color:#975b33!important;border-color:#975b33!important}.ui.grey.label,.ui.grey.labels .label{background-color:#767676!important;border-color:#767676!important;color:#fff!important}.ui.grey.labels .label:hover,a.ui.grey.label:hover{background-color:#838383!important;border-color:#838383!important;color:#fff!important}.ui.grey.corner.label,.ui.grey.corner.label:hover{background-color:transparent!important}.ui.grey.ribbon.label{border-color:#805031!important}.ui.basic.grey.label{background:none #fff!important;color:#767676!important;border-color:#767676!important}.ui.basic.grey.labels a.label:hover,a.ui.basic.grey.label:hover{background-color:#fff!important;color:#838383!important;border-color:#838383!important}.ui.black.label,.ui.black.labels .label{background-color:#1b1c1d!important;border-color:#1b1c1d!important;color:#fff!important}.ui.black.labels .label:hover,a.ui.black.label:hover{background-color:#27292a!important;border-color:#27292a!important;color:#fff!important}.ui.black.corner.label,.ui.black.corner.label:hover{background-color:transparent!important}.ui.black.ribbon.label{border-color:#805031!important}.ui.basic.black.label{background:none #fff!important;color:#1b1c1d!important;border-color:#1b1c1d!important}.ui.basic.black.labels a.label:hover,a.ui.basic.black.label:hover{background-color:#fff!important;color:#27292a!important;border-color:#27292a!important}.ui.basic.label{background:none #fff;border:1px solid rgba(34,36,38,.15);color:rgba(0,0,0,.87);-webkit-box-shadow:none;box-shadow:none}a.ui.basic.label:hover{text-decoration:none;background:none #fff;color:#1e70bf;-webkit-box-shadow:1px solid rgba(34,36,38,.15);box-shadow:1px solid rgba(34,36,38,.15);-webkit-box-shadow:none;box-shadow:none}.ui.basic.pointing.label:before{border-color:inherit}.ui.fluid.labels>.label,.ui.label.fluid{width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.ui.inverted.label,.ui.inverted.labels .label{color:rgba(255,255,255,.9)!important}.ui.horizontal.label,.ui.horizontal.labels .label{margin:0 .5em 0 0;padding:.4em .833em;min-width:3em;text-align:center}.ui.circular.label,.ui.circular.labels .label{min-width:2em;min-height:2em;padding:.5em!important;line-height:1em;text-align:center;border-radius:500rem}.ui.empty.circular.label,.ui.empty.circular.labels .label{min-width:0;min-height:0;overflow:hidden;width:.5em;height:.5em;vertical-align:baseline}.ui.pointing.label{position:relative}.ui.attached.pointing.label{position:absolute}.ui.pointing.label:before{background-color:inherit;background-image:inherit;border-width:none;border-style:solid;border-color:inherit}.ui.pointing.label:before{position:absolute;content:'';-webkit-transform:rotate(45deg);transform:rotate(45deg);background-image:none;z-index:2;width:.6666em;height:.6666em;-webkit-transition:background .1s ease;transition:background .1s ease}.ui.pointing.label,.ui[class*="pointing above"].label{margin-top:1em}.ui.pointing.label:before,.ui[class*="pointing above"].label:before{border-width:1px 0 0 1px;-webkit-transform:translateX(-50%) translateY(-50%) rotate(45deg);transform:translateX(-50%) translateY(-50%) rotate(45deg);top:0;left:50%}.ui[class*="bottom pointing"].label,.ui[class*="pointing below"].label{margin-top:0;margin-bottom:1em}.ui[class*="bottom pointing"].label:before,.ui[class*="pointing below"].label:before{border-width:0 1px 1px 0;top:auto;right:auto;-webkit-transform:translateX(-50%) translateY(-50%) rotate(45deg);transform:translateX(-50%) translateY(-50%) rotate(45deg);top:100%;left:50%}.ui[class*="left pointing"].label{margin-top:0;margin-left:.6666em}.ui[class*="left pointing"].label:before{border-width:0 0 1px 1px;-webkit-transform:translateX(-50%) translateY(-50%) rotate(45deg);transform:translateX(-50%) translateY(-50%) rotate(45deg);bottom:auto;right:auto;top:50%;left:0}.ui[class*="right pointing"].label{margin-top:0;margin-right:.6666em}.ui[class*="right pointing"].label:before{border-width:1px 1px 0 0;-webkit-transform:translateX(50%) translateY(-50%) rotate(45deg);transform:translateX(50%) translateY(-50%) rotate(45deg);top:50%;right:0;bottom:auto;left:auto}.ui.basic.pointing.label:before,.ui.basic[class*="pointing above"].label:before{margin-top:-1px}.ui.basic[class*="bottom pointing"].label:before,.ui.basic[class*="pointing below"].label:before{bottom:auto;top:100%;margin-top:1px}.ui.basic[class*="left pointing"].label:before{top:50%;left:-1px}.ui.basic[class*="right pointing"].label:before{top:50%;right:-1px}.ui.floating.label{position:absolute;z-index:100;top:-1em;left:100%;margin:0 0 0 -1.5em!important}.ui.mini.label,.ui.mini.labels .label{font-size:.64285714rem}.ui.tiny.label,.ui.tiny.labels .label{font-size:.71428571rem}.ui.small.label,.ui.small.labels .label{font-size:.78571429rem}.ui.label,.ui.labels .label{font-size:.85714286rem}.ui.large.label,.ui.large.labels .label{font-size:1rem}.ui.big.label,.ui.big.labels .label{font-size:1.28571429rem}.ui.huge.label,.ui.huge.labels .label{font-size:1.42857143rem}.ui.massive.label,.ui.massive.labels .label{font-size:1.71428571rem} \ No newline at end of file diff --git a/app/static/semantic/components/list.css b/app/static/semantic/components/list.css new file mode 100755 index 0000000..998a000 --- /dev/null +++ b/app/static/semantic/components/list.css @@ -0,0 +1,953 @@ +/*! + * # Semantic UI 2.4.1 - List + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */ + + +/******************************* + List +*******************************/ + +ul.ui.list, +ol.ui.list, +.ui.list { + list-style-type: none; + margin: 1em 0em; + padding: 0em 0em; +} +ul.ui.list:first-child, +ol.ui.list:first-child, +.ui.list:first-child { + margin-top: 0em; + padding-top: 0em; +} +ul.ui.list:last-child, +ol.ui.list:last-child, +.ui.list:last-child { + margin-bottom: 0em; + padding-bottom: 0em; +} + + +/******************************* + Content +*******************************/ + + +/* List Item */ +ul.ui.list li, +ol.ui.list li, +.ui.list > .item, +.ui.list .list > .item { + display: list-item; + table-layout: fixed; + list-style-type: none; + list-style-position: outside; + padding: 0.21428571em 0em; + line-height: 1.14285714em; +} +ul.ui.list > li:first-child:after, +ol.ui.list > li:first-child:after, +.ui.list > .list > .item, +.ui.list > .item:after { + content: ''; + display: block; + height: 0; + clear: both; + visibility: hidden; +} +ul.ui.list li:first-child, +ol.ui.list li:first-child, +.ui.list .list > .item:first-child, +.ui.list > .item:first-child { + padding-top: 0em; +} +ul.ui.list li:last-child, +ol.ui.list li:last-child, +.ui.list .list > .item:last-child, +.ui.list > .item:last-child { + padding-bottom: 0em; +} + +/* Child List */ +ul.ui.list ul, +ol.ui.list ol, +.ui.list .list { + clear: both; + margin: 0em; + padding: 0.75em 0em 0.25em 0.5em; +} + +/* Child Item */ +ul.ui.list ul li, +ol.ui.list ol li, +.ui.list .list > .item { + padding: 0.14285714em 0em; + line-height: inherit; +} + +/* Icon */ +.ui.list .list > .item > i.icon, +.ui.list > .item > i.icon { + display: table-cell; + margin: 0em; + padding-top: 0em; + padding-right: 0.28571429em; + vertical-align: top; + -webkit-transition: color 0.1s ease; + transition: color 0.1s ease; +} +.ui.list .list > .item > i.icon:only-child, +.ui.list > .item > i.icon:only-child { + display: inline-block; + vertical-align: top; +} + +/* Image */ +.ui.list .list > .item > .image, +.ui.list > .item > .image { + display: table-cell; + background-color: transparent; + margin: 0em; + vertical-align: top; +} +.ui.list .list > .item > .image:not(:only-child):not(img), +.ui.list > .item > .image:not(:only-child):not(img) { + padding-right: 0.5em; +} +.ui.list .list > .item > .image img, +.ui.list > .item > .image img { + vertical-align: top; +} +.ui.list .list > .item > img.image, +.ui.list .list > .item > .image:only-child, +.ui.list > .item > img.image, +.ui.list > .item > .image:only-child { + display: inline-block; +} + +/* Content */ +.ui.list .list > .item > .content, +.ui.list > .item > .content { + line-height: 1.14285714em; +} +.ui.list .list > .item > .image + .content, +.ui.list .list > .item > .icon + .content, +.ui.list > .item > .image + .content, +.ui.list > .item > .icon + .content { + display: table-cell; + width: 100%; + padding: 0em 0em 0em 0.5em; + vertical-align: top; +} +.ui.list .list > .item > img.image + .content, +.ui.list > .item > img.image + .content { + display: inline-block; + width: auto; +} +.ui.list .list > .item > .content > .list, +.ui.list > .item > .content > .list { + margin-left: 0em; + padding-left: 0em; +} + +/* Header */ +.ui.list .list > .item .header, +.ui.list > .item .header { + display: block; + margin: 0em; + font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif; + font-weight: bold; + color: rgba(0, 0, 0, 0.87); +} + +/* Description */ +.ui.list .list > .item .description, +.ui.list > .item .description { + display: block; + color: rgba(0, 0, 0, 0.7); +} + +/* Child Link */ +.ui.list > .item a, +.ui.list .list > .item a { + cursor: pointer; +} + +/* Linking Item */ +.ui.list .list > a.item, +.ui.list > a.item { + cursor: pointer; + color: #4183C4; +} +.ui.list .list > a.item:hover, +.ui.list > a.item:hover { + color: #1e70bf; +} + +/* Linked Item Icons */ +.ui.list .list > a.item i.icon, +.ui.list > a.item i.icon { + color: rgba(0, 0, 0, 0.4); +} + +/* Header Link */ +.ui.list .list > .item a.header, +.ui.list > .item a.header { + cursor: pointer; + color: #4183C4 !important; +} +.ui.list .list > .item a.header:hover, +.ui.list > .item a.header:hover { + color: #1e70bf !important; +} + +/* Floated Content */ +.ui[class*="left floated"].list { + float: left; +} +.ui[class*="right floated"].list { + float: right; +} +.ui.list .list > .item [class*="left floated"], +.ui.list > .item [class*="left floated"] { + float: left; + margin: 0em 1em 0em 0em; +} +.ui.list .list > .item [class*="right floated"], +.ui.list > .item [class*="right floated"] { + float: right; + margin: 0em 0em 0em 1em; +} + + +/******************************* + Coupling +*******************************/ + +.ui.menu .ui.list > .item, +.ui.menu .ui.list .list > .item { + display: list-item; + table-layout: fixed; + background-color: transparent; + list-style-type: none; + list-style-position: outside; + padding: 0.21428571em 0em; + line-height: 1.14285714em; +} +.ui.menu .ui.list .list > .item:before, +.ui.menu .ui.list > .item:before { + border: none; + background: none; +} +.ui.menu .ui.list .list > .item:first-child, +.ui.menu .ui.list > .item:first-child { + padding-top: 0em; +} +.ui.menu .ui.list .list > .item:last-child, +.ui.menu .ui.list > .item:last-child { + padding-bottom: 0em; +} + + +/******************************* + Types +*******************************/ + + +/*------------------- + Horizontal +--------------------*/ + +.ui.horizontal.list { + display: inline-block; + font-size: 0em; +} +.ui.horizontal.list > .item { + display: inline-block; + margin-left: 1em; + font-size: 1rem; +} +.ui.horizontal.list:not(.celled) > .item:first-child { + margin-left: 0em !important; + padding-left: 0em !important; +} +.ui.horizontal.list .list { + padding-left: 0em; + padding-bottom: 0em; +} +.ui.horizontal.list > .item > .image, +.ui.horizontal.list .list > .item > .image, +.ui.horizontal.list > .item > .icon, +.ui.horizontal.list .list > .item > .icon, +.ui.horizontal.list > .item > .content, +.ui.horizontal.list .list > .item > .content { + vertical-align: middle; +} + +/* Padding on all elements */ +.ui.horizontal.list > .item:first-child, +.ui.horizontal.list > .item:last-child { + padding-top: 0.21428571em; + padding-bottom: 0.21428571em; +} + +/* Horizontal List */ +.ui.horizontal.list > .item > i.icon { + margin: 0em; + padding: 0em 0.25em 0em 0em; +} +.ui.horizontal.list > .item > .icon, +.ui.horizontal.list > .item > .icon + .content { + float: none; + display: inline-block; +} + + +/******************************* + States +*******************************/ + + +/*------------------- + Disabled +--------------------*/ + +.ui.list .list > .disabled.item, +.ui.list > .disabled.item { + pointer-events: none; + color: rgba(40, 40, 40, 0.3) !important; +} +.ui.inverted.list .list > .disabled.item, +.ui.inverted.list > .disabled.item { + color: rgba(225, 225, 225, 0.3) !important; +} + +/*------------------- + Hover +--------------------*/ + +.ui.list .list > a.item:hover .icon, +.ui.list > a.item:hover .icon { + color: rgba(0, 0, 0, 0.87); +} + + +/******************************* + Variations +*******************************/ + + +/*------------------- + Inverted +--------------------*/ + +.ui.inverted.list .list > a.item > .icon, +.ui.inverted.list > a.item > .icon { + color: rgba(255, 255, 255, 0.7); +} +.ui.inverted.list .list > .item .header, +.ui.inverted.list > .item .header { + color: rgba(255, 255, 255, 0.9); +} +.ui.inverted.list .list > .item .description, +.ui.inverted.list > .item .description { + color: rgba(255, 255, 255, 0.7); +} + +/* Item Link */ +.ui.inverted.list .list > a.item, +.ui.inverted.list > a.item { + cursor: pointer; + color: rgba(255, 255, 255, 0.9); +} +.ui.inverted.list .list > a.item:hover, +.ui.inverted.list > a.item:hover { + color: #1e70bf; +} + +/* Linking Content */ +.ui.inverted.list .item a:not(.ui) { + color: rgba(255, 255, 255, 0.9) !important; +} +.ui.inverted.list .item a:not(.ui):hover { + color: #1e70bf !important; +} + +/*------------------- + Aligned +--------------------*/ + +.ui.list[class*="top aligned"] .image, +.ui.list[class*="top aligned"] .content, +.ui.list [class*="top aligned"] { + vertical-align: top !important; +} +.ui.list[class*="middle aligned"] .image, +.ui.list[class*="middle aligned"] .content, +.ui.list [class*="middle aligned"] { + vertical-align: middle !important; +} +.ui.list[class*="bottom aligned"] .image, +.ui.list[class*="bottom aligned"] .content, +.ui.list [class*="bottom aligned"] { + vertical-align: bottom !important; +} + +/*------------------- + Link +--------------------*/ + +.ui.link.list .item, +.ui.link.list a.item, +.ui.link.list .item a:not(.ui) { + color: rgba(0, 0, 0, 0.4); + -webkit-transition: 0.1s color ease; + transition: 0.1s color ease; +} +.ui.link.list.list a.item:hover, +.ui.link.list.list .item a:not(.ui):hover { + color: rgba(0, 0, 0, 0.8); +} +.ui.link.list.list a.item:active, +.ui.link.list.list .item a:not(.ui):active { + color: rgba(0, 0, 0, 0.9); +} +.ui.link.list.list .active.item, +.ui.link.list.list .active.item a:not(.ui) { + color: rgba(0, 0, 0, 0.95); +} + +/* Inverted */ +.ui.inverted.link.list .item, +.ui.inverted.link.list a.item, +.ui.inverted.link.list .item a:not(.ui) { + color: rgba(255, 255, 255, 0.5); +} +.ui.inverted.link.list.list a.item:hover, +.ui.inverted.link.list.list .item a:not(.ui):hover { + color: #ffffff; +} +.ui.inverted.link.list.list a.item:active, +.ui.inverted.link.list.list .item a:not(.ui):active { + color: #ffffff; +} +.ui.inverted.link.list.list a.active.item, +.ui.inverted.link.list.list .active.item a:not(.ui) { + color: #ffffff; +} + +/*------------------- + Selection +--------------------*/ + +.ui.selection.list .list > .item, +.ui.selection.list > .item { + cursor: pointer; + background: transparent; + padding: 0.5em 0.5em; + margin: 0em; + color: rgba(0, 0, 0, 0.4); + border-radius: 0.5em; + -webkit-transition: 0.1s color ease, 0.1s padding-left ease, 0.1s background-color ease; + transition: 0.1s color ease, 0.1s padding-left ease, 0.1s background-color ease; +} +.ui.selection.list .list > .item:last-child, +.ui.selection.list > .item:last-child { + margin-bottom: 0em; +} +.ui.selection.list.list > .item:hover, +.ui.selection.list > .item:hover { + background: rgba(0, 0, 0, 0.03); + color: rgba(0, 0, 0, 0.8); +} +.ui.selection.list .list > .item:active, +.ui.selection.list > .item:active { + background: rgba(0, 0, 0, 0.05); + color: rgba(0, 0, 0, 0.9); +} +.ui.selection.list .list > .item.active, +.ui.selection.list > .item.active { + background: rgba(0, 0, 0, 0.05); + color: rgba(0, 0, 0, 0.95); +} + +/* Inverted */ +.ui.inverted.selection.list > .item, +.ui.inverted.selection.list > .item { + background: transparent; + color: rgba(255, 255, 255, 0.5); +} +.ui.inverted.selection.list > .item:hover, +.ui.inverted.selection.list > .item:hover { + background: rgba(255, 255, 255, 0.02); + color: #ffffff; +} +.ui.inverted.selection.list > .item:active, +.ui.inverted.selection.list > .item:active { + background: rgba(255, 255, 255, 0.08); + color: #ffffff; +} +.ui.inverted.selection.list > .item.active, +.ui.inverted.selection.list > .item.active { + background: rgba(255, 255, 255, 0.08); + color: #ffffff; +} + +/* Celled / Divided Selection List */ +.ui.celled.selection.list .list > .item, +.ui.divided.selection.list .list > .item, +.ui.celled.selection.list > .item, +.ui.divided.selection.list > .item { + border-radius: 0em; +} + +/*------------------- + Animated +--------------------*/ + +.ui.animated.list > .item { + -webkit-transition: 0.25s color ease 0.1s, 0.25s padding-left ease 0.1s, 0.25s background-color ease 0.1s; + transition: 0.25s color ease 0.1s, 0.25s padding-left ease 0.1s, 0.25s background-color ease 0.1s; +} +.ui.animated.list:not(.horizontal) > .item:hover { + padding-left: 1em; +} + +/*------------------- + Fitted +--------------------*/ + +.ui.fitted.list:not(.selection) .list > .item, +.ui.fitted.list:not(.selection) > .item { + padding-left: 0em; + padding-right: 0em; +} +.ui.fitted.selection.list .list > .item, +.ui.fitted.selection.list > .item { + margin-left: -0.5em; + margin-right: -0.5em; +} + +/*------------------- + Bulleted +--------------------*/ + +ul.ui.list, +.ui.bulleted.list { + margin-left: 1.25rem; +} +ul.ui.list li, +.ui.bulleted.list .list > .item, +.ui.bulleted.list > .item { + position: relative; +} +ul.ui.list li:before, +.ui.bulleted.list .list > .item:before, +.ui.bulleted.list > .item:before { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + pointer-events: none; + position: absolute; + top: auto; + left: auto; + font-weight: normal; + margin-left: -1.25rem; + content: '•'; + opacity: 1; + color: inherit; + vertical-align: top; +} +ul.ui.list li:before, +.ui.bulleted.list .list > a.item:before, +.ui.bulleted.list > a.item:before { + color: rgba(0, 0, 0, 0.87); +} +ul.ui.list ul, +.ui.bulleted.list .list { + padding-left: 1.25rem; +} + +/* Horizontal Bulleted */ +ul.ui.horizontal.bulleted.list, +.ui.horizontal.bulleted.list { + margin-left: 0em; +} +ul.ui.horizontal.bulleted.list li, +.ui.horizontal.bulleted.list > .item { + margin-left: 1.75rem; +} +ul.ui.horizontal.bulleted.list li:first-child, +.ui.horizontal.bulleted.list > .item:first-child { + margin-left: 0em; +} +ul.ui.horizontal.bulleted.list li::before, +.ui.horizontal.bulleted.list > .item::before { + color: rgba(0, 0, 0, 0.87); +} +ul.ui.horizontal.bulleted.list li:first-child::before, +.ui.horizontal.bulleted.list > .item:first-child::before { + display: none; +} + +/*------------------- + Ordered +--------------------*/ + +ol.ui.list, +.ui.ordered.list, +.ui.ordered.list .list, +ol.ui.list ol { + counter-reset: ordered; + margin-left: 1.25rem; + list-style-type: none; +} +ol.ui.list li, +.ui.ordered.list .list > .item, +.ui.ordered.list > .item { + list-style-type: none; + position: relative; +} +ol.ui.list li:before, +.ui.ordered.list .list > .item:before, +.ui.ordered.list > .item:before { + position: absolute; + top: auto; + left: auto; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + pointer-events: none; + margin-left: -1.25rem; + counter-increment: ordered; + content: counters(ordered, ".") " "; + text-align: right; + color: rgba(0, 0, 0, 0.87); + vertical-align: middle; + opacity: 0.8; +} +ol.ui.inverted.list li:before, +.ui.ordered.inverted.list .list > .item:before, +.ui.ordered.inverted.list > .item:before { + color: rgba(255, 255, 255, 0.7); +} + +/* Value */ +.ui.ordered.list > .list > .item[data-value], +.ui.ordered.list > .item[data-value] { + content: attr(data-value); +} +ol.ui.list li[value]:before { + content: attr(value); +} + +/* Child Lists */ +ol.ui.list ol, +.ui.ordered.list .list { + margin-left: 1em; +} +ol.ui.list ol li:before, +.ui.ordered.list .list > .item:before { + margin-left: -2em; +} + +/* Horizontal Ordered */ +ol.ui.horizontal.list, +.ui.ordered.horizontal.list { + margin-left: 0em; +} +ol.ui.horizontal.list li:before, +.ui.ordered.horizontal.list .list > .item:before, +.ui.ordered.horizontal.list > .item:before { + position: static; + margin: 0em 0.5em 0em 0em; +} + +/*------------------- + Divided +--------------------*/ + +.ui.divided.list > .item { + border-top: 1px solid rgba(34, 36, 38, 0.15); +} +.ui.divided.list .list > .item { + border-top: none; +} +.ui.divided.list .item .list > .item { + border-top: none; +} +.ui.divided.list .list > .item:first-child, +.ui.divided.list > .item:first-child { + border-top: none; +} + +/* Sub Menu */ +.ui.divided.list:not(.horizontal) .list > .item:first-child { + border-top-width: 1px; +} + +/* Divided bulleted */ +.ui.divided.bulleted.list:not(.horizontal), +.ui.divided.bulleted.list .list { + margin-left: 0em; + padding-left: 0em; +} +.ui.divided.bulleted.list > .item:not(.horizontal) { + padding-left: 1.25rem; +} + +/* Divided Ordered */ +.ui.divided.ordered.list { + margin-left: 0em; +} +.ui.divided.ordered.list .list > .item, +.ui.divided.ordered.list > .item { + padding-left: 1.25rem; +} +.ui.divided.ordered.list .item .list { + margin-left: 0em; + margin-right: 0em; + padding-bottom: 0.21428571em; +} +.ui.divided.ordered.list .item .list > .item { + padding-left: 1em; +} + +/* Divided Selection */ +.ui.divided.selection.list .list > .item, +.ui.divided.selection.list > .item { + margin: 0em; + border-radius: 0em; +} + +/* Divided horizontal */ +.ui.divided.horizontal.list { + margin-left: 0em; +} +.ui.divided.horizontal.list > .item:not(:first-child) { + padding-left: 0.5em; +} +.ui.divided.horizontal.list > .item:not(:last-child) { + padding-right: 0.5em; +} +.ui.divided.horizontal.list > .item { + border-top: none; + border-left: 1px solid rgba(34, 36, 38, 0.15); + margin: 0em; + line-height: 0.6; +} +.ui.horizontal.divided.list > .item:first-child { + border-left: none; +} + +/* Inverted */ +.ui.divided.inverted.list > .item, +.ui.divided.inverted.list > .list, +.ui.divided.inverted.horizontal.list > .item { + border-color: rgba(255, 255, 255, 0.1); +} + +/*------------------- + Celled +--------------------*/ + +.ui.celled.list > .item, +.ui.celled.list > .list { + border-top: 1px solid rgba(34, 36, 38, 0.15); + padding-left: 0.5em; + padding-right: 0.5em; +} +.ui.celled.list > .item:last-child { + border-bottom: 1px solid rgba(34, 36, 38, 0.15); +} + +/* Padding on all elements */ +.ui.celled.list > .item:first-child, +.ui.celled.list > .item:last-child { + padding-top: 0.21428571em; + padding-bottom: 0.21428571em; +} + +/* Sub Menu */ +.ui.celled.list .item .list > .item { + border-width: 0px; +} +.ui.celled.list .list > .item:first-child { + border-top-width: 0px; +} + +/* Celled Bulleted */ +.ui.celled.bulleted.list { + margin-left: 0em; +} +.ui.celled.bulleted.list .list > .item, +.ui.celled.bulleted.list > .item { + padding-left: 1.25rem; +} +.ui.celled.bulleted.list .item .list { + margin-left: -1.25rem; + margin-right: -1.25rem; + padding-bottom: 0.21428571em; +} + +/* Celled Ordered */ +.ui.celled.ordered.list { + margin-left: 0em; +} +.ui.celled.ordered.list .list > .item, +.ui.celled.ordered.list > .item { + padding-left: 1.25rem; +} +.ui.celled.ordered.list .item .list { + margin-left: 0em; + margin-right: 0em; + padding-bottom: 0.21428571em; +} +.ui.celled.ordered.list .list > .item { + padding-left: 1em; +} + +/* Celled Horizontal */ +.ui.horizontal.celled.list { + margin-left: 0em; +} +.ui.horizontal.celled.list .list > .item, +.ui.horizontal.celled.list > .item { + border-top: none; + border-left: 1px solid rgba(34, 36, 38, 0.15); + margin: 0em; + padding-left: 0.5em; + padding-right: 0.5em; + line-height: 0.6; +} +.ui.horizontal.celled.list .list > .item:last-child, +.ui.horizontal.celled.list > .item:last-child { + border-bottom: none; + border-right: 1px solid rgba(34, 36, 38, 0.15); +} + +/* Inverted */ +.ui.celled.inverted.list > .item, +.ui.celled.inverted.list > .list { + border-color: 1px solid rgba(255, 255, 255, 0.1); +} +.ui.celled.inverted.horizontal.list .list > .item, +.ui.celled.inverted.horizontal.list > .item { + border-color: 1px solid rgba(255, 255, 255, 0.1); +} + +/*------------------- + Relaxed +--------------------*/ + +.ui.relaxed.list:not(.horizontal) > .item:not(:first-child) { + padding-top: 0.42857143em; +} +.ui.relaxed.list:not(.horizontal) > .item:not(:last-child) { + padding-bottom: 0.42857143em; +} +.ui.horizontal.relaxed.list .list > .item:not(:first-child), +.ui.horizontal.relaxed.list > .item:not(:first-child) { + padding-left: 1rem; +} +.ui.horizontal.relaxed.list .list > .item:not(:last-child), +.ui.horizontal.relaxed.list > .item:not(:last-child) { + padding-right: 1rem; +} + +/* Very Relaxed */ +.ui[class*="very relaxed"].list:not(.horizontal) > .item:not(:first-child) { + padding-top: 0.85714286em; +} +.ui[class*="very relaxed"].list:not(.horizontal) > .item:not(:last-child) { + padding-bottom: 0.85714286em; +} +.ui.horizontal[class*="very relaxed"].list .list > .item:not(:first-child), +.ui.horizontal[class*="very relaxed"].list > .item:not(:first-child) { + padding-left: 1.5rem; +} +.ui.horizontal[class*="very relaxed"].list .list > .item:not(:last-child), +.ui.horizontal[class*="very relaxed"].list > .item:not(:last-child) { + padding-right: 1.5rem; +} + +/*------------------- + Sizes +--------------------*/ + +.ui.mini.list { + font-size: 0.78571429em; +} +.ui.tiny.list { + font-size: 0.85714286em; +} +.ui.small.list { + font-size: 0.92857143em; +} +.ui.list { + font-size: 1em; +} +.ui.large.list { + font-size: 1.14285714em; +} +.ui.big.list { + font-size: 1.28571429em; +} +.ui.huge.list { + font-size: 1.42857143em; +} +.ui.massive.list { + font-size: 1.71428571em; +} +.ui.mini.horizontal.list .list > .item, +.ui.mini.horizontal.list > .item { + font-size: 0.78571429rem; +} +.ui.tiny.horizontal.list .list > .item, +.ui.tiny.horizontal.list > .item { + font-size: 0.85714286rem; +} +.ui.small.horizontal.list .list > .item, +.ui.small.horizontal.list > .item { + font-size: 0.92857143rem; +} +.ui.horizontal.list .list > .item, +.ui.horizontal.list > .item { + font-size: 1rem; +} +.ui.large.horizontal.list .list > .item, +.ui.large.horizontal.list > .item { + font-size: 1.14285714rem; +} +.ui.big.horizontal.list .list > .item, +.ui.big.horizontal.list > .item { + font-size: 1.28571429rem; +} +.ui.huge.horizontal.list .list > .item, +.ui.huge.horizontal.list > .item { + font-size: 1.42857143rem; +} +.ui.massive.horizontal.list .list > .item, +.ui.massive.horizontal.list > .item { + font-size: 1.71428571rem; +} + + +/******************************* + Theme Overrides +*******************************/ + + + +/******************************* + User Variable Overrides +*******************************/ + diff --git a/app/static/semantic/components/list.min.css b/app/static/semantic/components/list.min.css new file mode 100755 index 0000000..cc1ba73 --- /dev/null +++ b/app/static/semantic/components/list.min.css @@ -0,0 +1,9 @@ +/*! + * # Semantic UI 2.4.1 - List + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */.ui.list,ol.ui.list,ul.ui.list{list-style-type:none;margin:1em 0;padding:0 0}.ui.list:first-child,ol.ui.list:first-child,ul.ui.list:first-child{margin-top:0;padding-top:0}.ui.list:last-child,ol.ui.list:last-child,ul.ui.list:last-child{margin-bottom:0;padding-bottom:0}.ui.list .list>.item,.ui.list>.item,ol.ui.list li,ul.ui.list li{display:list-item;table-layout:fixed;list-style-type:none;list-style-position:outside;padding:.21428571em 0;line-height:1.14285714em}.ui.list>.item:after,.ui.list>.list>.item,ol.ui.list>li:first-child:after,ul.ui.list>li:first-child:after{content:'';display:block;height:0;clear:both;visibility:hidden}.ui.list .list>.item:first-child,.ui.list>.item:first-child,ol.ui.list li:first-child,ul.ui.list li:first-child{padding-top:0}.ui.list .list>.item:last-child,.ui.list>.item:last-child,ol.ui.list li:last-child,ul.ui.list li:last-child{padding-bottom:0}.ui.list .list,ol.ui.list ol,ul.ui.list ul{clear:both;margin:0;padding:.75em 0 .25em .5em}.ui.list .list>.item,ol.ui.list ol li,ul.ui.list ul li{padding:.14285714em 0;line-height:inherit}.ui.list .list>.item>i.icon,.ui.list>.item>i.icon{display:table-cell;margin:0;padding-top:0;padding-right:.28571429em;vertical-align:top;-webkit-transition:color .1s ease;transition:color .1s ease}.ui.list .list>.item>i.icon:only-child,.ui.list>.item>i.icon:only-child{display:inline-block;vertical-align:top}.ui.list .list>.item>.image,.ui.list>.item>.image{display:table-cell;background-color:transparent;margin:0;vertical-align:top}.ui.list .list>.item>.image:not(:only-child):not(img),.ui.list>.item>.image:not(:only-child):not(img){padding-right:.5em}.ui.list .list>.item>.image img,.ui.list>.item>.image img{vertical-align:top}.ui.list .list>.item>.image:only-child,.ui.list .list>.item>img.image,.ui.list>.item>.image:only-child,.ui.list>.item>img.image{display:inline-block}.ui.list .list>.item>.content,.ui.list>.item>.content{line-height:1.14285714em}.ui.list .list>.item>.icon+.content,.ui.list .list>.item>.image+.content,.ui.list>.item>.icon+.content,.ui.list>.item>.image+.content{display:table-cell;width:100%;padding:0 0 0 .5em;vertical-align:top}.ui.list .list>.item>img.image+.content,.ui.list>.item>img.image+.content{display:inline-block;width:auto}.ui.list .list>.item>.content>.list,.ui.list>.item>.content>.list{margin-left:0;padding-left:0}.ui.list .list>.item .header,.ui.list>.item .header{display:block;margin:0;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-weight:700;color:rgba(0,0,0,.87)}.ui.list .list>.item .description,.ui.list>.item .description{display:block;color:rgba(0,0,0,.7)}.ui.list .list>.item a,.ui.list>.item a{cursor:pointer}.ui.list .list>a.item,.ui.list>a.item{cursor:pointer;color:#4183c4}.ui.list .list>a.item:hover,.ui.list>a.item:hover{color:#1e70bf}.ui.list .list>a.item i.icon,.ui.list>a.item i.icon{color:rgba(0,0,0,.4)}.ui.list .list>.item a.header,.ui.list>.item a.header{cursor:pointer;color:#4183c4!important}.ui.list .list>.item a.header:hover,.ui.list>.item a.header:hover{color:#1e70bf!important}.ui[class*="left floated"].list{float:left}.ui[class*="right floated"].list{float:right}.ui.list .list>.item [class*="left floated"],.ui.list>.item [class*="left floated"]{float:left;margin:0 1em 0 0}.ui.list .list>.item [class*="right floated"],.ui.list>.item [class*="right floated"]{float:right;margin:0 0 0 1em}.ui.menu .ui.list .list>.item,.ui.menu .ui.list>.item{display:list-item;table-layout:fixed;background-color:transparent;list-style-type:none;list-style-position:outside;padding:.21428571em 0;line-height:1.14285714em}.ui.menu .ui.list .list>.item:before,.ui.menu .ui.list>.item:before{border:none;background:0 0}.ui.menu .ui.list .list>.item:first-child,.ui.menu .ui.list>.item:first-child{padding-top:0}.ui.menu .ui.list .list>.item:last-child,.ui.menu .ui.list>.item:last-child{padding-bottom:0}.ui.horizontal.list{display:inline-block;font-size:0}.ui.horizontal.list>.item{display:inline-block;margin-left:1em;font-size:1rem}.ui.horizontal.list:not(.celled)>.item:first-child{margin-left:0!important;padding-left:0!important}.ui.horizontal.list .list{padding-left:0;padding-bottom:0}.ui.horizontal.list .list>.item>.content,.ui.horizontal.list .list>.item>.icon,.ui.horizontal.list .list>.item>.image,.ui.horizontal.list>.item>.content,.ui.horizontal.list>.item>.icon,.ui.horizontal.list>.item>.image{vertical-align:middle}.ui.horizontal.list>.item:first-child,.ui.horizontal.list>.item:last-child{padding-top:.21428571em;padding-bottom:.21428571em}.ui.horizontal.list>.item>i.icon{margin:0;padding:0 .25em 0 0}.ui.horizontal.list>.item>.icon,.ui.horizontal.list>.item>.icon+.content{float:none;display:inline-block}.ui.list .list>.disabled.item,.ui.list>.disabled.item{pointer-events:none;color:rgba(40,40,40,.3)!important}.ui.inverted.list .list>.disabled.item,.ui.inverted.list>.disabled.item{color:rgba(225,225,225,.3)!important}.ui.list .list>a.item:hover .icon,.ui.list>a.item:hover .icon{color:rgba(0,0,0,.87)}.ui.inverted.list .list>a.item>.icon,.ui.inverted.list>a.item>.icon{color:rgba(255,255,255,.7)}.ui.inverted.list .list>.item .header,.ui.inverted.list>.item .header{color:rgba(255,255,255,.9)}.ui.inverted.list .list>.item .description,.ui.inverted.list>.item .description{color:rgba(255,255,255,.7)}.ui.inverted.list .list>a.item,.ui.inverted.list>a.item{cursor:pointer;color:rgba(255,255,255,.9)}.ui.inverted.list .list>a.item:hover,.ui.inverted.list>a.item:hover{color:#1e70bf}.ui.inverted.list .item a:not(.ui){color:rgba(255,255,255,.9)!important}.ui.inverted.list .item a:not(.ui):hover{color:#1e70bf!important}.ui.list [class*="top aligned"],.ui.list[class*="top aligned"] .content,.ui.list[class*="top aligned"] .image{vertical-align:top!important}.ui.list [class*="middle aligned"],.ui.list[class*="middle aligned"] .content,.ui.list[class*="middle aligned"] .image{vertical-align:middle!important}.ui.list [class*="bottom aligned"],.ui.list[class*="bottom aligned"] .content,.ui.list[class*="bottom aligned"] .image{vertical-align:bottom!important}.ui.link.list .item,.ui.link.list .item a:not(.ui),.ui.link.list a.item{color:rgba(0,0,0,.4);-webkit-transition:.1s color ease;transition:.1s color ease}.ui.link.list.list .item a:not(.ui):hover,.ui.link.list.list a.item:hover{color:rgba(0,0,0,.8)}.ui.link.list.list .item a:not(.ui):active,.ui.link.list.list a.item:active{color:rgba(0,0,0,.9)}.ui.link.list.list .active.item,.ui.link.list.list .active.item a:not(.ui){color:rgba(0,0,0,.95)}.ui.inverted.link.list .item,.ui.inverted.link.list .item a:not(.ui),.ui.inverted.link.list a.item{color:rgba(255,255,255,.5)}.ui.inverted.link.list.list .item a:not(.ui):hover,.ui.inverted.link.list.list a.item:hover{color:#fff}.ui.inverted.link.list.list .item a:not(.ui):active,.ui.inverted.link.list.list a.item:active{color:#fff}.ui.inverted.link.list.list .active.item a:not(.ui),.ui.inverted.link.list.list a.active.item{color:#fff}.ui.selection.list .list>.item,.ui.selection.list>.item{cursor:pointer;background:0 0;padding:.5em .5em;margin:0;color:rgba(0,0,0,.4);border-radius:.5em;-webkit-transition:.1s color ease,.1s padding-left ease,.1s background-color ease;transition:.1s color ease,.1s padding-left ease,.1s background-color ease}.ui.selection.list .list>.item:last-child,.ui.selection.list>.item:last-child{margin-bottom:0}.ui.selection.list.list>.item:hover,.ui.selection.list>.item:hover{background:rgba(0,0,0,.03);color:rgba(0,0,0,.8)}.ui.selection.list .list>.item:active,.ui.selection.list>.item:active{background:rgba(0,0,0,.05);color:rgba(0,0,0,.9)}.ui.selection.list .list>.item.active,.ui.selection.list>.item.active{background:rgba(0,0,0,.05);color:rgba(0,0,0,.95)}.ui.inverted.selection.list>.item{background:0 0;color:rgba(255,255,255,.5)}.ui.inverted.selection.list>.item:hover{background:rgba(255,255,255,.02);color:#fff}.ui.inverted.selection.list>.item:active{background:rgba(255,255,255,.08);color:#fff}.ui.inverted.selection.list>.item.active{background:rgba(255,255,255,.08);color:#fff}.ui.celled.selection.list .list>.item,.ui.celled.selection.list>.item,.ui.divided.selection.list .list>.item,.ui.divided.selection.list>.item{border-radius:0}.ui.animated.list>.item{-webkit-transition:.25s color ease .1s,.25s padding-left ease .1s,.25s background-color ease .1s;transition:.25s color ease .1s,.25s padding-left ease .1s,.25s background-color ease .1s}.ui.animated.list:not(.horizontal)>.item:hover{padding-left:1em}.ui.fitted.list:not(.selection) .list>.item,.ui.fitted.list:not(.selection)>.item{padding-left:0;padding-right:0}.ui.fitted.selection.list .list>.item,.ui.fitted.selection.list>.item{margin-left:-.5em;margin-right:-.5em}.ui.bulleted.list,ul.ui.list{margin-left:1.25rem}.ui.bulleted.list .list>.item,.ui.bulleted.list>.item,ul.ui.list li{position:relative}.ui.bulleted.list .list>.item:before,.ui.bulleted.list>.item:before,ul.ui.list li:before{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none;position:absolute;top:auto;left:auto;font-weight:400;margin-left:-1.25rem;content:'•';opacity:1;color:inherit;vertical-align:top}.ui.bulleted.list .list>a.item:before,.ui.bulleted.list>a.item:before,ul.ui.list li:before{color:rgba(0,0,0,.87)}.ui.bulleted.list .list,ul.ui.list ul{padding-left:1.25rem}.ui.horizontal.bulleted.list,ul.ui.horizontal.bulleted.list{margin-left:0}.ui.horizontal.bulleted.list>.item,ul.ui.horizontal.bulleted.list li{margin-left:1.75rem}.ui.horizontal.bulleted.list>.item:first-child,ul.ui.horizontal.bulleted.list li:first-child{margin-left:0}.ui.horizontal.bulleted.list>.item::before,ul.ui.horizontal.bulleted.list li::before{color:rgba(0,0,0,.87)}.ui.horizontal.bulleted.list>.item:first-child::before,ul.ui.horizontal.bulleted.list li:first-child::before{display:none}.ui.ordered.list,.ui.ordered.list .list,ol.ui.list,ol.ui.list ol{counter-reset:ordered;margin-left:1.25rem;list-style-type:none}.ui.ordered.list .list>.item,.ui.ordered.list>.item,ol.ui.list li{list-style-type:none;position:relative}.ui.ordered.list .list>.item:before,.ui.ordered.list>.item:before,ol.ui.list li:before{position:absolute;top:auto;left:auto;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none;margin-left:-1.25rem;counter-increment:ordered;content:counters(ordered, ".") " ";text-align:right;color:rgba(0,0,0,.87);vertical-align:middle;opacity:.8}.ui.ordered.inverted.list .list>.item:before,.ui.ordered.inverted.list>.item:before,ol.ui.inverted.list li:before{color:rgba(255,255,255,.7)}.ui.ordered.list>.item[data-value],.ui.ordered.list>.list>.item[data-value]{content:attr(data-value)}ol.ui.list li[value]:before{content:attr(value)}.ui.ordered.list .list,ol.ui.list ol{margin-left:1em}.ui.ordered.list .list>.item:before,ol.ui.list ol li:before{margin-left:-2em}.ui.ordered.horizontal.list,ol.ui.horizontal.list{margin-left:0}.ui.ordered.horizontal.list .list>.item:before,.ui.ordered.horizontal.list>.item:before,ol.ui.horizontal.list li:before{position:static;margin:0 .5em 0 0}.ui.divided.list>.item{border-top:1px solid rgba(34,36,38,.15)}.ui.divided.list .list>.item{border-top:none}.ui.divided.list .item .list>.item{border-top:none}.ui.divided.list .list>.item:first-child,.ui.divided.list>.item:first-child{border-top:none}.ui.divided.list:not(.horizontal) .list>.item:first-child{border-top-width:1px}.ui.divided.bulleted.list .list,.ui.divided.bulleted.list:not(.horizontal){margin-left:0;padding-left:0}.ui.divided.bulleted.list>.item:not(.horizontal){padding-left:1.25rem}.ui.divided.ordered.list{margin-left:0}.ui.divided.ordered.list .list>.item,.ui.divided.ordered.list>.item{padding-left:1.25rem}.ui.divided.ordered.list .item .list{margin-left:0;margin-right:0;padding-bottom:.21428571em}.ui.divided.ordered.list .item .list>.item{padding-left:1em}.ui.divided.selection.list .list>.item,.ui.divided.selection.list>.item{margin:0;border-radius:0}.ui.divided.horizontal.list{margin-left:0}.ui.divided.horizontal.list>.item:not(:first-child){padding-left:.5em}.ui.divided.horizontal.list>.item:not(:last-child){padding-right:.5em}.ui.divided.horizontal.list>.item{border-top:none;border-left:1px solid rgba(34,36,38,.15);margin:0;line-height:.6}.ui.horizontal.divided.list>.item:first-child{border-left:none}.ui.divided.inverted.horizontal.list>.item,.ui.divided.inverted.list>.item,.ui.divided.inverted.list>.list{border-color:rgba(255,255,255,.1)}.ui.celled.list>.item,.ui.celled.list>.list{border-top:1px solid rgba(34,36,38,.15);padding-left:.5em;padding-right:.5em}.ui.celled.list>.item:last-child{border-bottom:1px solid rgba(34,36,38,.15)}.ui.celled.list>.item:first-child,.ui.celled.list>.item:last-child{padding-top:.21428571em;padding-bottom:.21428571em}.ui.celled.list .item .list>.item{border-width:0}.ui.celled.list .list>.item:first-child{border-top-width:0}.ui.celled.bulleted.list{margin-left:0}.ui.celled.bulleted.list .list>.item,.ui.celled.bulleted.list>.item{padding-left:1.25rem}.ui.celled.bulleted.list .item .list{margin-left:-1.25rem;margin-right:-1.25rem;padding-bottom:.21428571em}.ui.celled.ordered.list{margin-left:0}.ui.celled.ordered.list .list>.item,.ui.celled.ordered.list>.item{padding-left:1.25rem}.ui.celled.ordered.list .item .list{margin-left:0;margin-right:0;padding-bottom:.21428571em}.ui.celled.ordered.list .list>.item{padding-left:1em}.ui.horizontal.celled.list{margin-left:0}.ui.horizontal.celled.list .list>.item,.ui.horizontal.celled.list>.item{border-top:none;border-left:1px solid rgba(34,36,38,.15);margin:0;padding-left:.5em;padding-right:.5em;line-height:.6}.ui.horizontal.celled.list .list>.item:last-child,.ui.horizontal.celled.list>.item:last-child{border-bottom:none;border-right:1px solid rgba(34,36,38,.15)}.ui.celled.inverted.list>.item,.ui.celled.inverted.list>.list{border-color:1px solid rgba(255,255,255,.1)}.ui.celled.inverted.horizontal.list .list>.item,.ui.celled.inverted.horizontal.list>.item{border-color:1px solid rgba(255,255,255,.1)}.ui.relaxed.list:not(.horizontal)>.item:not(:first-child){padding-top:.42857143em}.ui.relaxed.list:not(.horizontal)>.item:not(:last-child){padding-bottom:.42857143em}.ui.horizontal.relaxed.list .list>.item:not(:first-child),.ui.horizontal.relaxed.list>.item:not(:first-child){padding-left:1rem}.ui.horizontal.relaxed.list .list>.item:not(:last-child),.ui.horizontal.relaxed.list>.item:not(:last-child){padding-right:1rem}.ui[class*="very relaxed"].list:not(.horizontal)>.item:not(:first-child){padding-top:.85714286em}.ui[class*="very relaxed"].list:not(.horizontal)>.item:not(:last-child){padding-bottom:.85714286em}.ui.horizontal[class*="very relaxed"].list .list>.item:not(:first-child),.ui.horizontal[class*="very relaxed"].list>.item:not(:first-child){padding-left:1.5rem}.ui.horizontal[class*="very relaxed"].list .list>.item:not(:last-child),.ui.horizontal[class*="very relaxed"].list>.item:not(:last-child){padding-right:1.5rem}.ui.mini.list{font-size:.78571429em}.ui.tiny.list{font-size:.85714286em}.ui.small.list{font-size:.92857143em}.ui.list{font-size:1em}.ui.large.list{font-size:1.14285714em}.ui.big.list{font-size:1.28571429em}.ui.huge.list{font-size:1.42857143em}.ui.massive.list{font-size:1.71428571em}.ui.mini.horizontal.list .list>.item,.ui.mini.horizontal.list>.item{font-size:.78571429rem}.ui.tiny.horizontal.list .list>.item,.ui.tiny.horizontal.list>.item{font-size:.85714286rem}.ui.small.horizontal.list .list>.item,.ui.small.horizontal.list>.item{font-size:.92857143rem}.ui.horizontal.list .list>.item,.ui.horizontal.list>.item{font-size:1rem}.ui.large.horizontal.list .list>.item,.ui.large.horizontal.list>.item{font-size:1.14285714rem}.ui.big.horizontal.list .list>.item,.ui.big.horizontal.list>.item{font-size:1.28571429rem}.ui.huge.horizontal.list .list>.item,.ui.huge.horizontal.list>.item{font-size:1.42857143rem}.ui.massive.horizontal.list .list>.item,.ui.massive.horizontal.list>.item{font-size:1.71428571rem} \ No newline at end of file diff --git a/app/static/semantic/components/loader.css b/app/static/semantic/components/loader.css new file mode 100755 index 0000000..0cb5041 --- /dev/null +++ b/app/static/semantic/components/loader.css @@ -0,0 +1,347 @@ +/*! + * # Semantic UI 2.4.1 - Loader + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */ + + +/******************************* + Loader +*******************************/ + + +/* Standard Size */ +.ui.loader { + display: none; + position: absolute; + top: 50%; + left: 50%; + margin: 0px; + text-align: center; + z-index: 1000; + -webkit-transform: translateX(-50%) translateY(-50%); + transform: translateX(-50%) translateY(-50%); +} + +/* Static Shape */ +.ui.loader:before { + position: absolute; + content: ''; + top: 0%; + left: 50%; + width: 100%; + height: 100%; + border-radius: 500rem; + border: 0.2em solid rgba(0, 0, 0, 0.1); +} + +/* Active Shape */ +.ui.loader:after { + position: absolute; + content: ''; + top: 0%; + left: 50%; + width: 100%; + height: 100%; + -webkit-animation: loader 0.6s linear; + animation: loader 0.6s linear; + -webkit-animation-iteration-count: infinite; + animation-iteration-count: infinite; + border-radius: 500rem; + border-color: #767676 transparent transparent; + border-style: solid; + border-width: 0.2em; + -webkit-box-shadow: 0px 0px 0px 1px transparent; + box-shadow: 0px 0px 0px 1px transparent; +} + +/* Active Animation */ +@-webkit-keyframes loader { + from { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + to { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} +@keyframes loader { + from { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + to { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +/* Sizes */ +.ui.mini.loader:before, +.ui.mini.loader:after { + width: 1rem; + height: 1rem; + margin: 0em 0em 0em -0.5rem; +} +.ui.tiny.loader:before, +.ui.tiny.loader:after { + width: 1.14285714rem; + height: 1.14285714rem; + margin: 0em 0em 0em -0.57142857rem; +} +.ui.small.loader:before, +.ui.small.loader:after { + width: 1.71428571rem; + height: 1.71428571rem; + margin: 0em 0em 0em -0.85714286rem; +} +.ui.loader:before, +.ui.loader:after { + width: 2.28571429rem; + height: 2.28571429rem; + margin: 0em 0em 0em -1.14285714rem; +} +.ui.large.loader:before, +.ui.large.loader:after { + width: 3.42857143rem; + height: 3.42857143rem; + margin: 0em 0em 0em -1.71428571rem; +} +.ui.big.loader:before, +.ui.big.loader:after { + width: 3.71428571rem; + height: 3.71428571rem; + margin: 0em 0em 0em -1.85714286rem; +} +.ui.huge.loader:before, +.ui.huge.loader:after { + width: 4.14285714rem; + height: 4.14285714rem; + margin: 0em 0em 0em -2.07142857rem; +} +.ui.massive.loader:before, +.ui.massive.loader:after { + width: 4.57142857rem; + height: 4.57142857rem; + margin: 0em 0em 0em -2.28571429rem; +} + +/*------------------- + Coupling +--------------------*/ + + +/* Show inside active dimmer */ +.ui.dimmer .loader { + display: block; +} + +/* Black Dimmer */ +.ui.dimmer .ui.loader { + color: rgba(255, 255, 255, 0.9); +} +.ui.dimmer .ui.loader:before { + border-color: rgba(255, 255, 255, 0.15); +} +.ui.dimmer .ui.loader:after { + border-color: #FFFFFF transparent transparent; +} + +/* White Dimmer (Inverted) */ +.ui.inverted.dimmer .ui.loader { + color: rgba(0, 0, 0, 0.87); +} +.ui.inverted.dimmer .ui.loader:before { + border-color: rgba(0, 0, 0, 0.1); +} +.ui.inverted.dimmer .ui.loader:after { + border-color: #767676 transparent transparent; +} + + +/******************************* + Types +*******************************/ + + +/*------------------- + Text +--------------------*/ + +.ui.text.loader { + width: auto !important; + height: auto !important; + text-align: center; + font-style: normal; +} + + +/******************************* + States +*******************************/ + +.ui.indeterminate.loader:after { + animation-direction: reverse; + -webkit-animation-duration: 1.2s; + animation-duration: 1.2s; +} +.ui.loader.active, +.ui.loader.visible { + display: block; +} +.ui.loader.disabled, +.ui.loader.hidden { + display: none; +} + + +/******************************* + Variations +*******************************/ + + +/*------------------- + Sizes +--------------------*/ + + +/* Loader */ +.ui.inverted.dimmer .ui.mini.loader, +.ui.mini.loader { + width: 1rem; + height: 1rem; + font-size: 0.78571429em; +} +.ui.inverted.dimmer .ui.tiny.loader, +.ui.tiny.loader { + width: 1.14285714rem; + height: 1.14285714rem; + font-size: 0.85714286em; +} +.ui.inverted.dimmer .ui.small.loader, +.ui.small.loader { + width: 1.71428571rem; + height: 1.71428571rem; + font-size: 0.92857143em; +} +.ui.inverted.dimmer .ui.loader, +.ui.loader { + width: 2.28571429rem; + height: 2.28571429rem; + font-size: 1em; +} +.ui.inverted.dimmer .ui.large.loader, +.ui.large.loader { + width: 3.42857143rem; + height: 3.42857143rem; + font-size: 1.14285714em; +} +.ui.inverted.dimmer .ui.big.loader, +.ui.big.loader { + width: 3.71428571rem; + height: 3.71428571rem; + font-size: 1.28571429em; +} +.ui.inverted.dimmer .ui.huge.loader, +.ui.huge.loader { + width: 4.14285714rem; + height: 4.14285714rem; + font-size: 1.42857143em; +} +.ui.inverted.dimmer .ui.massive.loader, +.ui.massive.loader { + width: 4.57142857rem; + height: 4.57142857rem; + font-size: 1.71428571em; +} + +/* Text Loader */ +.ui.mini.text.loader { + min-width: 1rem; + padding-top: 1.78571429rem; +} +.ui.tiny.text.loader { + min-width: 1.14285714rem; + padding-top: 1.92857143rem; +} +.ui.small.text.loader { + min-width: 1.71428571rem; + padding-top: 2.5rem; +} +.ui.text.loader { + min-width: 2.28571429rem; + padding-top: 3.07142857rem; +} +.ui.large.text.loader { + min-width: 3.42857143rem; + padding-top: 4.21428571rem; +} +.ui.big.text.loader { + min-width: 3.71428571rem; + padding-top: 4.5rem; +} +.ui.huge.text.loader { + min-width: 4.14285714rem; + padding-top: 4.92857143rem; +} +.ui.massive.text.loader { + min-width: 4.57142857rem; + padding-top: 5.35714286rem; +} + +/*------------------- + Inverted +--------------------*/ + +.ui.inverted.loader { + color: rgba(255, 255, 255, 0.9); +} +.ui.inverted.loader:before { + border-color: rgba(255, 255, 255, 0.15); +} +.ui.inverted.loader:after { + border-top-color: #FFFFFF; +} + +/*------------------- + Inline +--------------------*/ + +.ui.inline.loader { + position: relative; + vertical-align: middle; + margin: 0em; + left: 0em; + top: 0em; + -webkit-transform: none; + transform: none; +} +.ui.inline.loader.active, +.ui.inline.loader.visible { + display: inline-block; +} + +/* Centered Inline */ +.ui.centered.inline.loader.active, +.ui.centered.inline.loader.visible { + display: block; + margin-left: auto; + margin-right: auto; +} + + +/******************************* + Theme Overrides +*******************************/ + + + +/******************************* + Site Overrides +*******************************/ + diff --git a/app/static/semantic/components/loader.min.css b/app/static/semantic/components/loader.min.css new file mode 100755 index 0000000..7e1e095 --- /dev/null +++ b/app/static/semantic/components/loader.min.css @@ -0,0 +1,9 @@ +/*! + * # Semantic UI 2.4.1 - Loader + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */.ui.loader{display:none;position:absolute;top:50%;left:50%;margin:0;text-align:center;z-index:1000;-webkit-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}.ui.loader:before{position:absolute;content:'';top:0;left:50%;width:100%;height:100%;border-radius:500rem;border:.2em solid rgba(0,0,0,.1)}.ui.loader:after{position:absolute;content:'';top:0;left:50%;width:100%;height:100%;-webkit-animation:loader .6s linear;animation:loader .6s linear;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;border-radius:500rem;border-color:#767676 transparent transparent;border-style:solid;border-width:.2em;-webkit-box-shadow:0 0 0 1px transparent;box-shadow:0 0 0 1px transparent}@-webkit-keyframes loader{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes loader{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.ui.mini.loader:after,.ui.mini.loader:before{width:1rem;height:1rem;margin:0 0 0 -.5rem}.ui.tiny.loader:after,.ui.tiny.loader:before{width:1.14285714rem;height:1.14285714rem;margin:0 0 0 -.57142857rem}.ui.small.loader:after,.ui.small.loader:before{width:1.71428571rem;height:1.71428571rem;margin:0 0 0 -.85714286rem}.ui.loader:after,.ui.loader:before{width:2.28571429rem;height:2.28571429rem;margin:0 0 0 -1.14285714rem}.ui.large.loader:after,.ui.large.loader:before{width:3.42857143rem;height:3.42857143rem;margin:0 0 0 -1.71428571rem}.ui.big.loader:after,.ui.big.loader:before{width:3.71428571rem;height:3.71428571rem;margin:0 0 0 -1.85714286rem}.ui.huge.loader:after,.ui.huge.loader:before{width:4.14285714rem;height:4.14285714rem;margin:0 0 0 -2.07142857rem}.ui.massive.loader:after,.ui.massive.loader:before{width:4.57142857rem;height:4.57142857rem;margin:0 0 0 -2.28571429rem}.ui.dimmer .loader{display:block}.ui.dimmer .ui.loader{color:rgba(255,255,255,.9)}.ui.dimmer .ui.loader:before{border-color:rgba(255,255,255,.15)}.ui.dimmer .ui.loader:after{border-color:#fff transparent transparent}.ui.inverted.dimmer .ui.loader{color:rgba(0,0,0,.87)}.ui.inverted.dimmer .ui.loader:before{border-color:rgba(0,0,0,.1)}.ui.inverted.dimmer .ui.loader:after{border-color:#767676 transparent transparent}.ui.text.loader{width:auto!important;height:auto!important;text-align:center;font-style:normal}.ui.indeterminate.loader:after{animation-direction:reverse;-webkit-animation-duration:1.2s;animation-duration:1.2s}.ui.loader.active,.ui.loader.visible{display:block}.ui.loader.disabled,.ui.loader.hidden{display:none}.ui.inverted.dimmer .ui.mini.loader,.ui.mini.loader{width:1rem;height:1rem;font-size:.78571429em}.ui.inverted.dimmer .ui.tiny.loader,.ui.tiny.loader{width:1.14285714rem;height:1.14285714rem;font-size:.85714286em}.ui.inverted.dimmer .ui.small.loader,.ui.small.loader{width:1.71428571rem;height:1.71428571rem;font-size:.92857143em}.ui.inverted.dimmer .ui.loader,.ui.loader{width:2.28571429rem;height:2.28571429rem;font-size:1em}.ui.inverted.dimmer .ui.large.loader,.ui.large.loader{width:3.42857143rem;height:3.42857143rem;font-size:1.14285714em}.ui.big.loader,.ui.inverted.dimmer .ui.big.loader{width:3.71428571rem;height:3.71428571rem;font-size:1.28571429em}.ui.huge.loader,.ui.inverted.dimmer .ui.huge.loader{width:4.14285714rem;height:4.14285714rem;font-size:1.42857143em}.ui.inverted.dimmer .ui.massive.loader,.ui.massive.loader{width:4.57142857rem;height:4.57142857rem;font-size:1.71428571em}.ui.mini.text.loader{min-width:1rem;padding-top:1.78571429rem}.ui.tiny.text.loader{min-width:1.14285714rem;padding-top:1.92857143rem}.ui.small.text.loader{min-width:1.71428571rem;padding-top:2.5rem}.ui.text.loader{min-width:2.28571429rem;padding-top:3.07142857rem}.ui.large.text.loader{min-width:3.42857143rem;padding-top:4.21428571rem}.ui.big.text.loader{min-width:3.71428571rem;padding-top:4.5rem}.ui.huge.text.loader{min-width:4.14285714rem;padding-top:4.92857143rem}.ui.massive.text.loader{min-width:4.57142857rem;padding-top:5.35714286rem}.ui.inverted.loader{color:rgba(255,255,255,.9)}.ui.inverted.loader:before{border-color:rgba(255,255,255,.15)}.ui.inverted.loader:after{border-top-color:#fff}.ui.inline.loader{position:relative;vertical-align:middle;margin:0;left:0;top:0;-webkit-transform:none;transform:none}.ui.inline.loader.active,.ui.inline.loader.visible{display:inline-block}.ui.centered.inline.loader.active,.ui.centered.inline.loader.visible{display:block;margin-left:auto;margin-right:auto} \ No newline at end of file diff --git a/app/static/semantic/components/menu.css b/app/static/semantic/components/menu.css new file mode 100755 index 0000000..714675f --- /dev/null +++ b/app/static/semantic/components/menu.css @@ -0,0 +1,2052 @@ +/* + * # Semantic - Menu + * http://github.com/semantic-org/semantic-ui/ + * + * + * Copyright 2015 Contributor + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */ + + +/******************************* + Standard +*******************************/ + + +/*-------------- + Menu +---------------*/ + +.ui.menu { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + margin: 1rem 0em; + font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif; + background: #FFFFFF; + font-weight: normal; + border: 1px solid rgba(34, 36, 38, 0.15); + -webkit-box-shadow: 0px 1px 2px 0 rgba(34, 36, 38, 0.15); + box-shadow: 0px 1px 2px 0 rgba(34, 36, 38, 0.15); + border-radius: 0.28571429rem; + min-height: 2.85714286em; +} +.ui.menu:after { + content: ''; + display: block; + height: 0px; + clear: both; + visibility: hidden; +} +.ui.menu:first-child { + margin-top: 0rem; +} +.ui.menu:last-child { + margin-bottom: 0rem; +} + +/*-------------- + Sub-Menu +---------------*/ + +.ui.menu .menu { + margin: 0em; +} +.ui.menu:not(.vertical) > .menu { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} + +/*-------------- + Item +---------------*/ + +.ui.menu:not(.vertical) .item { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.ui.menu .item { + position: relative; + vertical-align: middle; + line-height: 1; + text-decoration: none; + -webkit-tap-highlight-color: transparent; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background: none; + padding: 0.92857143em 1.14285714em; + text-transform: none; + color: rgba(0, 0, 0, 0.87); + font-weight: normal; + -webkit-transition: background 0.1s ease, color 0.1s ease, -webkit-box-shadow 0.1s ease; + transition: background 0.1s ease, color 0.1s ease, -webkit-box-shadow 0.1s ease; + transition: background 0.1s ease, box-shadow 0.1s ease, color 0.1s ease; + transition: background 0.1s ease, box-shadow 0.1s ease, color 0.1s ease, -webkit-box-shadow 0.1s ease; +} +.ui.menu > .item:first-child { + border-radius: 0.28571429rem 0px 0px 0.28571429rem; +} + +/* Border */ +.ui.menu .item:before { + position: absolute; + content: ''; + top: 0%; + right: 0px; + height: 100%; + width: 1px; + background: rgba(34, 36, 38, 0.1); +} + +/*-------------- + Text Content +---------------*/ + +.ui.menu .text.item > *, +.ui.menu .item > a:not(.ui), +.ui.menu .item > p:only-child { + -webkit-user-select: text; + -moz-user-select: text; + -ms-user-select: text; + user-select: text; + line-height: 1.3; +} +.ui.menu .item > p:first-child { + margin-top: 0; +} +.ui.menu .item > p:last-child { + margin-bottom: 0; +} + +/*-------------- + Icons +---------------*/ + +.ui.menu .item > i.icon { + opacity: 0.9; + float: none; + margin: 0em 0.35714286em 0em 0em; +} + +/*-------------- + Button +---------------*/ + +.ui.menu:not(.vertical) .item > .button { + position: relative; + top: 0em; + margin: -0.5em 0em; + padding-bottom: 0.78571429em; + padding-top: 0.78571429em; + font-size: 1em; +} + +/*---------------- + Grid / Container +-----------------*/ + +.ui.menu > .grid, +.ui.menu > .container { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: inherit; + -ms-flex-align: inherit; + align-items: inherit; + -webkit-box-orient: inherit; + -webkit-box-direction: inherit; + -ms-flex-direction: inherit; + flex-direction: inherit; +} + +/*-------------- + Inputs +---------------*/ + +.ui.menu .item > .input { + width: 100%; +} +.ui.menu:not(.vertical) .item > .input { + position: relative; + top: 0em; + margin: -0.5em 0em; +} +.ui.menu .item > .input input { + font-size: 1em; + padding-top: 0.57142857em; + padding-bottom: 0.57142857em; +} + +/*-------------- + Header +---------------*/ + +.ui.menu .header.item, +.ui.vertical.menu .header.item { + margin: 0em; + background: ''; + text-transform: normal; + font-weight: bold; +} +.ui.vertical.menu .item > .header:not(.ui) { + margin: 0em 0em 0.5em; + font-size: 1em; + font-weight: bold; +} + +/*-------------- + Dropdowns +---------------*/ + + +/* Dropdown Icon */ +.ui.menu .item > i.dropdown.icon { + padding: 0em; + float: right; + margin: 0em 0em 0em 1em; +} + +/* Menu */ +.ui.menu .dropdown.item .menu { + min-width: calc(100% - 1px); + border-radius: 0em 0em 0.28571429rem 0.28571429rem; + background: #FFFFFF; + margin: 0em 0px 0px; + -webkit-box-shadow: 0px 1px 3px 0px rgba(0, 0, 0, 0.08); + box-shadow: 0px 1px 3px 0px rgba(0, 0, 0, 0.08); + -webkit-box-orient: vertical !important; + -webkit-box-direction: normal !important; + -ms-flex-direction: column !important; + flex-direction: column !important; +} + +/* Menu Items */ +.ui.menu .ui.dropdown .menu > .item { + margin: 0; + text-align: left; + font-size: 1em !important; + padding: 0.78571429em 1.14285714em !important; + background: transparent !important; + color: rgba(0, 0, 0, 0.87) !important; + text-transform: none !important; + font-weight: normal !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; + -webkit-transition: none !important; + transition: none !important; +} +.ui.menu .ui.dropdown .menu > .item:hover { + background: rgba(0, 0, 0, 0.05) !important; + color: rgba(0, 0, 0, 0.95) !important; +} +.ui.menu .ui.dropdown .menu > .selected.item { + background: rgba(0, 0, 0, 0.05) !important; + color: rgba(0, 0, 0, 0.95) !important; +} +.ui.menu .ui.dropdown .menu > .active.item { + background: rgba(0, 0, 0, 0.03) !important; + font-weight: bold !important; + color: rgba(0, 0, 0, 0.95) !important; +} +.ui.menu .ui.dropdown.item .menu .item:not(.filtered) { + display: block; +} +.ui.menu .ui.dropdown .menu > .item .icon:not(.dropdown) { + display: inline-block; + font-size: 1em !important; + float: none; + margin: 0em 0.75em 0em 0em !important; +} + +/* Secondary */ +.ui.secondary.menu .dropdown.item > .menu, +.ui.text.menu .dropdown.item > .menu { + border-radius: 0.28571429rem; + margin-top: 0.35714286em; +} + +/* Pointing */ +.ui.menu .pointing.dropdown.item .menu { + margin-top: 0.75em; +} + +/* Inverted */ +.ui.inverted.menu .search.dropdown.item > .search, +.ui.inverted.menu .search.dropdown.item > .text { + color: rgba(255, 255, 255, 0.9); +} + +/* Vertical */ +.ui.vertical.menu .dropdown.item > .icon { + float: right; + content: "\f0da"; + margin-left: 1em; +} +.ui.vertical.menu .dropdown.item .menu { + left: 100%; + min-width: 0; + margin: 0em 0em 0em 0em; + -webkit-box-shadow: 0 1px 3px 0px rgba(0, 0, 0, 0.08); + box-shadow: 0 1px 3px 0px rgba(0, 0, 0, 0.08); + border-radius: 0em 0.28571429rem 0.28571429rem 0.28571429rem; +} +.ui.vertical.menu .dropdown.item.upward .menu { + bottom: 0; +} +.ui.vertical.menu .dropdown.item:not(.upward) .menu { + top: 0; +} +.ui.vertical.menu .active.dropdown.item { + border-top-right-radius: 0em; + border-bottom-right-radius: 0em; +} +.ui.vertical.menu .dropdown.active.item { + -webkit-box-shadow: none; + box-shadow: none; +} + +/* Evenly Divided */ +.ui.item.menu .dropdown .menu .item { + width: 100%; +} + +/*-------------- + Labels +---------------*/ + +.ui.menu .item > .label { + background: #999999; + color: #FFFFFF; + margin-left: 1em; + padding: 0.3em 0.78571429em; +} +.ui.vertical.menu .item > .label { + background: #999999; + color: #FFFFFF; + margin-top: -0.15em; + margin-bottom: -0.15em; + padding: 0.3em 0.78571429em; +} +.ui.menu .item > .floating.label { + padding: 0.3em 0.78571429em; +} + +/*-------------- + Images +---------------*/ + +.ui.menu .item > img:not(.ui) { + display: inline-block; + vertical-align: middle; + margin: -0.3em 0em; + width: 2.5em; +} +.ui.vertical.menu .item > img:not(.ui):only-child { + display: block; + max-width: 100%; + width: auto; +} + + +/******************************* + Coupling +*******************************/ + + +/*-------------- + List +---------------*/ + + +/* Menu divider shouldnt apply */ +.ui.menu .list .item:before { + background: none !important; +} + +/*-------------- + Sidebar +---------------*/ + + +/* Show vertical dividers below last */ +.ui.vertical.sidebar.menu > .item:first-child:before { + display: block !important; +} +.ui.vertical.sidebar.menu > .item::before { + top: auto; + bottom: 0px; +} + +/*-------------- + Container +---------------*/ + +@media only screen and (max-width: 767px) { + .ui.menu > .ui.container { + width: 100% !important; + margin-left: 0em !important; + margin-right: 0em !important; + } +} +@media only screen and (min-width: 768px) { + .ui.menu:not(.secondary):not(.text):not(.tabular):not(.borderless) > .container > .item:not(.right):not(.borderless):first-child { + border-left: 1px solid rgba(34, 36, 38, 0.1); + } +} + + +/******************************* + States +*******************************/ + + +/*-------------- + Hover +---------------*/ + +.ui.link.menu .item:hover, +.ui.menu .dropdown.item:hover, +.ui.menu .link.item:hover, +.ui.menu a.item:hover { + cursor: pointer; + background: rgba(0, 0, 0, 0.03); + color: rgba(0, 0, 0, 0.95); +} + +/*-------------- + Pressed +---------------*/ + +.ui.link.menu .item:active, +.ui.menu .link.item:active, +.ui.menu a.item:active { + background: rgba(0, 0, 0, 0.03); + color: rgba(0, 0, 0, 0.95); +} + +/*-------------- + Active +---------------*/ + +.ui.menu .active.item { + background: rgba(0, 0, 0, 0.05); + color: rgba(0, 0, 0, 0.95); + font-weight: normal; + -webkit-box-shadow: none; + box-shadow: none; +} +.ui.menu .active.item > i.icon { + opacity: 1; +} + +/*-------------- + Active Hover +---------------*/ + +.ui.menu .active.item:hover, +.ui.vertical.menu .active.item:hover { + background-color: rgba(0, 0, 0, 0.05); + color: rgba(0, 0, 0, 0.95); +} + +/*-------------- + Disabled +---------------*/ + +.ui.menu .item.disabled, +.ui.menu .item.disabled:hover { + cursor: default !important; + background-color: transparent !important; + color: rgba(40, 40, 40, 0.3) !important; +} + + +/******************************* + Types +*******************************/ + + +/*------------------ +Floated Menu / Item +-------------------*/ + + +/* Left Floated */ +.ui.menu:not(.vertical) .left.item, +.ui.menu:not(.vertical) :not(.dropdown) > .left.menu { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + margin-right: auto !important; +} + +/* Right Floated */ +.ui.menu:not(.vertical) .right.item, +.ui.menu:not(.vertical) .right.menu { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + margin-left: auto !important; +} + +/* Swapped Borders */ +.ui.menu .right.item::before, +.ui.menu .right.menu > .item::before { + right: auto; + left: 0; +} + +/*-------------- + Vertical +---------------*/ + +.ui.vertical.menu { + display: block; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + background: #FFFFFF; + -webkit-box-shadow: 0px 1px 2px 0 rgba(34, 36, 38, 0.15); + box-shadow: 0px 1px 2px 0 rgba(34, 36, 38, 0.15); +} + +/*--- Item ---*/ + +.ui.vertical.menu .item { + display: block; + background: none; + border-top: none; + border-right: none; +} +.ui.vertical.menu > .item:first-child { + border-radius: 0.28571429rem 0.28571429rem 0px 0px; +} +.ui.vertical.menu > .item:last-child { + border-radius: 0px 0px 0.28571429rem 0.28571429rem; +} + +/*--- Label ---*/ + +.ui.vertical.menu .item > .label { + float: right; + text-align: center; +} + +/*--- Icon ---*/ + +.ui.vertical.menu .item > i.icon { + width: 1.18em; + float: right; + margin: 0em 0em 0em 0.5em; +} +.ui.vertical.menu .item > .label + i.icon { + float: none; + margin: 0em 0.5em 0em 0em; +} + +/*--- Border ---*/ + +.ui.vertical.menu .item:before { + position: absolute; + content: ''; + top: 0%; + left: 0px; + width: 100%; + height: 1px; + background: rgba(34, 36, 38, 0.1); +} +.ui.vertical.menu .item:first-child:before { + display: none !important; +} + +/*--- Sub Menu ---*/ + +.ui.vertical.menu .item > .menu { + margin: 0.5em -1.14285714em 0em; +} +.ui.vertical.menu .menu .item { + background: none; + padding: 0.5em 1.33333333em; + font-size: 0.85714286em; + color: rgba(0, 0, 0, 0.5); +} +.ui.vertical.menu .item .menu a.item:hover, +.ui.vertical.menu .item .menu .link.item:hover { + color: rgba(0, 0, 0, 0.85); +} +.ui.vertical.menu .menu .item:before { + display: none; +} + +/* Vertical Active */ +.ui.vertical.menu .active.item { + background: rgba(0, 0, 0, 0.05); + border-radius: 0em; + -webkit-box-shadow: none; + box-shadow: none; +} +.ui.vertical.menu > .active.item:first-child { + border-radius: 0.28571429rem 0.28571429rem 0em 0em; +} +.ui.vertical.menu > .active.item:last-child { + border-radius: 0em 0em 0.28571429rem 0.28571429rem; +} +.ui.vertical.menu > .active.item:only-child { + border-radius: 0.28571429rem; +} +.ui.vertical.menu .active.item .menu .active.item { + border-left: none; +} +.ui.vertical.menu .item .menu .active.item { + background-color: transparent; + font-weight: bold; + color: rgba(0, 0, 0, 0.95); +} + +/*-------------- + Tabular +---------------*/ + +.ui.tabular.menu { + border-radius: 0em; + -webkit-box-shadow: none !important; + box-shadow: none !important; + border: none; + background: none transparent; + border-bottom: 1px solid #D4D4D5; +} +.ui.tabular.fluid.menu { + width: calc(100% + (1px * 2)) !important; +} +.ui.tabular.menu .item { + background: transparent; + border-bottom: none; + border-left: 1px solid transparent; + border-right: 1px solid transparent; + border-top: 2px solid transparent; + padding: 0.92857143em 1.42857143em; + color: rgba(0, 0, 0, 0.87); +} +.ui.tabular.menu .item:before { + display: none; +} + +/* Hover */ +.ui.tabular.menu .item:hover { + background-color: transparent; + color: rgba(0, 0, 0, 0.8); +} + +/* Active */ +.ui.tabular.menu .active.item { + background: none #FFFFFF; + color: rgba(0, 0, 0, 0.95); + border-top-width: 1px; + border-color: #D4D4D5; + font-weight: bold; + margin-bottom: -1px; + -webkit-box-shadow: none; + box-shadow: none; + border-radius: 0.28571429rem 0.28571429rem 0px 0px !important; +} + +/* Coupling with segment for attachment */ +.ui.tabular.menu + .attached:not(.top).segment, +.ui.tabular.menu + .attached:not(.top).segment + .attached:not(.top).segment { + border-top: none; + margin-left: 0px; + margin-top: 0px; + margin-right: 0px; + width: 100%; +} +.top.attached.segment + .ui.bottom.tabular.menu { + position: relative; + width: calc(100% + (1px * 2)); + left: -1px; +} + +/* Bottom Vertical Tabular */ +.ui.bottom.tabular.menu { + background: none transparent; + border-radius: 0em; + -webkit-box-shadow: none !important; + box-shadow: none !important; + border-bottom: none; + border-top: 1px solid #D4D4D5; +} +.ui.bottom.tabular.menu .item { + background: none; + border-left: 1px solid transparent; + border-right: 1px solid transparent; + border-bottom: 1px solid transparent; + border-top: none; +} +.ui.bottom.tabular.menu .active.item { + background: none #FFFFFF; + color: rgba(0, 0, 0, 0.95); + border-color: #D4D4D5; + margin: -1px 0px 0px 0px; + border-radius: 0px 0px 0.28571429rem 0.28571429rem !important; +} + +/* Vertical Tabular (Left) */ +.ui.vertical.tabular.menu { + background: none transparent; + border-radius: 0em; + -webkit-box-shadow: none !important; + box-shadow: none !important; + border-bottom: none; + border-right: 1px solid #D4D4D5; +} +.ui.vertical.tabular.menu .item { + background: none; + border-left: 1px solid transparent; + border-bottom: 1px solid transparent; + border-top: 1px solid transparent; + border-right: none; +} +.ui.vertical.tabular.menu .active.item { + background: none #FFFFFF; + color: rgba(0, 0, 0, 0.95); + border-color: #D4D4D5; + margin: 0px -1px 0px 0px; + border-radius: 0.28571429rem 0px 0px 0.28571429rem !important; +} + +/* Vertical Right Tabular */ +.ui.vertical.right.tabular.menu { + background: none transparent; + border-radius: 0em; + -webkit-box-shadow: none !important; + box-shadow: none !important; + border-bottom: none; + border-right: none; + border-left: 1px solid #D4D4D5; +} +.ui.vertical.right.tabular.menu .item { + background: none; + border-right: 1px solid transparent; + border-bottom: 1px solid transparent; + border-top: 1px solid transparent; + border-left: none; +} +.ui.vertical.right.tabular.menu .active.item { + background: none #FFFFFF; + color: rgba(0, 0, 0, 0.95); + border-color: #D4D4D5; + margin: 0px 0px 0px -1px; + border-radius: 0px 0.28571429rem 0.28571429rem 0px !important; +} + +/* Dropdown */ +.ui.tabular.menu .active.dropdown.item { + margin-bottom: 0px; + border-left: 1px solid transparent; + border-right: 1px solid transparent; + border-top: 2px solid transparent; + border-bottom: none; +} + +/*-------------- + Pagination +---------------*/ + +.ui.pagination.menu { + margin: 0em; + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; + vertical-align: middle; +} +.ui.pagination.menu .item:last-child { + border-radius: 0em 0.28571429rem 0.28571429rem 0em; +} +.ui.compact.menu .item:last-child { + border-radius: 0em 0.28571429rem 0.28571429rem 0em; +} +.ui.pagination.menu .item:last-child:before { + display: none; +} +.ui.pagination.menu .item { + min-width: 3em; + text-align: center; +} +.ui.pagination.menu .icon.item i.icon { + vertical-align: top; +} + +/* Active */ +.ui.pagination.menu .active.item { + border-top: none; + padding-top: 0.92857143em; + background-color: rgba(0, 0, 0, 0.05); + color: rgba(0, 0, 0, 0.95); + -webkit-box-shadow: none; + box-shadow: none; +} + +/*-------------- + Secondary +---------------*/ + +.ui.secondary.menu { + background: none; + margin-left: -0.35714286em; + margin-right: -0.35714286em; + border-radius: 0em; + border: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +/* Item */ +.ui.secondary.menu .item { + -ms-flex-item-align: center; + align-self: center; + -webkit-box-shadow: none; + box-shadow: none; + border: none; + padding: 0.78571429em 0.92857143em; + margin: 0em 0.35714286em; + background: none; + -webkit-transition: color 0.1s ease; + transition: color 0.1s ease; + border-radius: 0.28571429rem; +} + +/* No Divider */ +.ui.secondary.menu .item:before { + display: none !important; +} + +/* Header */ +.ui.secondary.menu .header.item { + border-radius: 0em; + border-right: none; + background: none transparent; +} + +/* Image */ +.ui.secondary.menu .item > img:not(.ui) { + margin: 0em; +} + +/* Hover */ +.ui.secondary.menu .dropdown.item:hover, +.ui.secondary.menu .link.item:hover, +.ui.secondary.menu a.item:hover { + background: rgba(0, 0, 0, 0.05); + color: rgba(0, 0, 0, 0.95); +} + +/* Active */ +.ui.secondary.menu .active.item { + -webkit-box-shadow: none; + box-shadow: none; + background: rgba(0, 0, 0, 0.05); + color: rgba(0, 0, 0, 0.95); + border-radius: 0.28571429rem; +} + +/* Active Hover */ +.ui.secondary.menu .active.item:hover { + -webkit-box-shadow: none; + box-shadow: none; + background: rgba(0, 0, 0, 0.05); + color: rgba(0, 0, 0, 0.95); +} + +/* Inverted */ +.ui.secondary.inverted.menu .link.item, +.ui.secondary.inverted.menu a.item { + color: rgba(255, 255, 255, 0.7) !important; +} +.ui.secondary.inverted.menu .dropdown.item:hover, +.ui.secondary.inverted.menu .link.item:hover, +.ui.secondary.inverted.menu a.item:hover { + background: rgba(255, 255, 255, 0.08); + color: #ffffff !important; +} +.ui.secondary.inverted.menu .active.item { + background: rgba(255, 255, 255, 0.15); + color: #ffffff !important; +} + +/* Fix item margins */ +.ui.secondary.item.menu { + margin-left: 0em; + margin-right: 0em; +} +.ui.secondary.item.menu .item:last-child { + margin-right: 0em; +} +.ui.secondary.attached.menu { + -webkit-box-shadow: none; + box-shadow: none; +} + +/* Sub Menu */ +.ui.vertical.secondary.menu .item:not(.dropdown) > .menu { + margin: 0em -0.92857143em; +} +.ui.vertical.secondary.menu .item:not(.dropdown) > .menu > .item { + margin: 0em; + padding: 0.5em 1.33333333em; +} + +/*--------------------- + Secondary Vertical +-----------------------*/ + +.ui.secondary.vertical.menu > .item { + border: none; + margin: 0em 0em 0.35714286em; + border-radius: 0.28571429rem !important; +} +.ui.secondary.vertical.menu > .header.item { + border-radius: 0em; +} + +/* Sub Menu */ +.ui.vertical.secondary.menu .item > .menu .item { + background-color: transparent; +} + +/* Inverted */ +.ui.secondary.inverted.menu { + background-color: transparent; +} + +/*--------------------- + Secondary Pointing +-----------------------*/ + +.ui.secondary.pointing.menu { + margin-left: 0em; + margin-right: 0em; + border-bottom: 2px solid rgba(34, 36, 38, 0.15); +} +.ui.secondary.pointing.menu .item { + border-bottom-color: transparent; + border-bottom-style: solid; + border-radius: 0em; + -ms-flex-item-align: end; + align-self: flex-end; + margin: 0em 0em -2px; + padding: 0.85714286em 1.14285714em; + border-bottom-width: 2px; + -webkit-transition: color 0.1s ease; + transition: color 0.1s ease; +} + +/* Item Types */ +.ui.secondary.pointing.menu .header.item { + color: rgba(0, 0, 0, 0.85) !important; +} +.ui.secondary.pointing.menu .text.item { + -webkit-box-shadow: none !important; + box-shadow: none !important; +} +.ui.secondary.pointing.menu .item:after { + display: none; +} + +/* Hover */ +.ui.secondary.pointing.menu .dropdown.item:hover, +.ui.secondary.pointing.menu .link.item:hover, +.ui.secondary.pointing.menu a.item:hover { + background-color: transparent; + color: rgba(0, 0, 0, 0.87); +} + +/* Pressed */ +.ui.secondary.pointing.menu .dropdown.item:active, +.ui.secondary.pointing.menu .link.item:active, +.ui.secondary.pointing.menu a.item:active { + background-color: transparent; + border-color: rgba(34, 36, 38, 0.15); +} + +/* Active */ +.ui.secondary.pointing.menu .active.item { + background-color: transparent; + -webkit-box-shadow: none; + box-shadow: none; + border-color: #1B1C1D; + font-weight: bold; + color: rgba(0, 0, 0, 0.95); +} + +/* Active Hover */ +.ui.secondary.pointing.menu .active.item:hover { + border-color: #1B1C1D; + color: rgba(0, 0, 0, 0.95); +} + +/* Active Dropdown */ +.ui.secondary.pointing.menu .active.dropdown.item { + border-color: transparent; +} + +/* Vertical Pointing */ +.ui.secondary.vertical.pointing.menu { + border-bottom-width: 0px; + border-right-width: 2px; + border-right-style: solid; + border-right-color: rgba(34, 36, 38, 0.15); +} +.ui.secondary.vertical.pointing.menu .item { + border-bottom: none; + border-right-style: solid; + border-right-color: transparent; + border-radius: 0em !important; + margin: 0em -2px 0em 0em; + border-right-width: 2px; +} + +/* Vertical Active */ +.ui.secondary.vertical.pointing.menu .active.item { + border-color: #1B1C1D; +} + +/* Inverted */ +.ui.secondary.inverted.pointing.menu { + border-color: rgba(255, 255, 255, 0.1); +} +.ui.secondary.inverted.pointing.menu { + border-width: 2px; + border-color: rgba(34, 36, 38, 0.15); +} +.ui.secondary.inverted.pointing.menu .item { + color: rgba(255, 255, 255, 0.9); +} +.ui.secondary.inverted.pointing.menu .header.item { + color: #FFFFFF !important; +} + +/* Hover */ +.ui.secondary.inverted.pointing.menu .link.item:hover, +.ui.secondary.inverted.pointing.menu a.item:hover { + color: rgba(0, 0, 0, 0.95); +} + +/* Active */ +.ui.secondary.inverted.pointing.menu .active.item { + border-color: #FFFFFF; + color: #ffffff; +} + +/*-------------- + Text Menu +---------------*/ + +.ui.text.menu { + background: none transparent; + border-radius: 0px; + -webkit-box-shadow: none; + box-shadow: none; + border: none; + margin: 1em -0.5em; +} +.ui.text.menu .item { + border-radius: 0px; + -webkit-box-shadow: none; + box-shadow: none; + -ms-flex-item-align: center; + align-self: center; + margin: 0em 0em; + padding: 0.35714286em 0.5em; + font-weight: normal; + color: rgba(0, 0, 0, 0.6); + -webkit-transition: opacity 0.1s ease; + transition: opacity 0.1s ease; +} + +/* Border */ +.ui.text.menu .item:before, +.ui.text.menu .menu .item:before { + display: none !important; +} + +/* Header */ +.ui.text.menu .header.item { + background-color: transparent; + opacity: 1; + color: rgba(0, 0, 0, 0.85); + font-size: 0.92857143em; + text-transform: uppercase; + font-weight: bold; +} + +/* Image */ +.ui.text.menu .item > img:not(.ui) { + margin: 0em; +} + +/*--- fluid text ---*/ + +.ui.text.item.menu .item { + margin: 0em; +} + +/*--- vertical text ---*/ + +.ui.vertical.text.menu { + margin: 1em 0em; +} +.ui.vertical.text.menu:first-child { + margin-top: 0rem; +} +.ui.vertical.text.menu:last-child { + margin-bottom: 0rem; +} +.ui.vertical.text.menu .item { + margin: 0.57142857em 0em; + padding-left: 0em; + padding-right: 0em; +} +.ui.vertical.text.menu .item > i.icon { + float: none; + margin: 0em 0.35714286em 0em 0em; +} +.ui.vertical.text.menu .header.item { + margin: 0.57142857em 0em 0.71428571em; +} + +/* Vertical Sub Menu */ +.ui.vertical.text.menu .item:not(.dropdown) > .menu { + margin: 0em; +} +.ui.vertical.text.menu .item:not(.dropdown) > .menu > .item { + margin: 0em; + padding: 0.5em 0em; +} + +/*--- hover ---*/ + +.ui.text.menu .item:hover { + opacity: 1; + background-color: transparent; +} + +/*--- active ---*/ + +.ui.text.menu .active.item { + background-color: transparent; + border: none; + -webkit-box-shadow: none; + box-shadow: none; + font-weight: normal; + color: rgba(0, 0, 0, 0.95); +} + +/*--- active hover ---*/ + +.ui.text.menu .active.item:hover { + background-color: transparent; +} + +/* Disable Bariations */ +.ui.text.pointing.menu .active.item:after { + -webkit-box-shadow: none; + box-shadow: none; +} +.ui.text.attached.menu { + -webkit-box-shadow: none; + box-shadow: none; +} + +/* Inverted */ +.ui.inverted.text.menu, +.ui.inverted.text.menu .item, +.ui.inverted.text.menu .item:hover, +.ui.inverted.text.menu .active.item { + background-color: transparent !important; +} + +/* Fluid */ +.ui.fluid.text.menu { + margin-left: 0em; + margin-right: 0em; +} + +/*-------------- + Icon Only +---------------*/ + + +/* Vertical Menu */ +.ui.vertical.icon.menu { + display: inline-block; + width: auto; +} + +/* Item */ +.ui.icon.menu .item { + height: auto; + text-align: center; + color: #1B1C1D; +} + +/* Icon */ +.ui.icon.menu .item > .icon:not(.dropdown) { + margin: 0; + opacity: 1; +} + +/* Icon Gylph */ +.ui.icon.menu .icon:before { + opacity: 1; +} + +/* (x) Item Icon */ +.ui.menu .icon.item > .icon { + width: auto; + margin: 0em auto; +} + +/* Vertical Icon */ +.ui.vertical.icon.menu .item > .icon:not(.dropdown) { + display: block; + opacity: 1; + margin: 0em auto; + float: none; +} + +/* Inverted */ +.ui.inverted.icon.menu .item { + color: #FFFFFF; +} + +/*-------------- + Labeled Icon +---------------*/ + + +/* Menu */ +.ui.labeled.icon.menu { + text-align: center; +} + +/* Item */ +.ui.labeled.icon.menu .item { + min-width: 6em; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} + +/* Icon */ +.ui.labeled.icon.menu .item > .icon:not(.dropdown) { + height: 1em; + display: block; + font-size: 1.71428571em !important; + margin: 0em auto 0.5rem !important; +} + +/* Fluid */ +.ui.fluid.labeled.icon.menu > .item { + min-width: 0em; +} + + +/******************************* + Variations +*******************************/ + + +/*-------------- + Stackable +---------------*/ + +@media only screen and (max-width: 767px) { + .ui.stackable.menu { + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + } + .ui.stackable.menu .item { + width: 100% !important; + } + .ui.stackable.menu .item:before { + position: absolute; + content: ''; + top: auto; + bottom: 0px; + left: 0px; + width: 100%; + height: 1px; + background: rgba(34, 36, 38, 0.1); + } + .ui.stackable.menu .left.menu, + .ui.stackable.menu .left.item { + margin-right: 0 !important; + } + .ui.stackable.menu .right.menu, + .ui.stackable.menu .right.item { + margin-left: 0 !important; + } + .ui.stackable.menu .right.menu, + .ui.stackable.menu .left.menu { + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + } +} + +/*-------------- + Colors +---------------*/ + + +/*--- Standard Colors ---*/ + +.ui.menu .red.active.item, +.ui.red.menu .active.item { + border-color: #DB2828 !important; + color: #DB2828 !important; +} +.ui.menu .orange.active.item, +.ui.orange.menu .active.item { + border-color: #F2711C !important; + color: #F2711C !important; +} +.ui.menu .yellow.active.item, +.ui.yellow.menu .active.item { + border-color: #FBBD08 !important; + color: #FBBD08 !important; +} +.ui.menu .olive.active.item, +.ui.olive.menu .active.item { + border-color: #B5CC18 !important; + color: #B5CC18 !important; +} +.ui.menu .green.active.item, +.ui.green.menu .active.item { + border-color: #21BA45 !important; + color: #21BA45 !important; +} +.ui.menu .teal.active.item, +.ui.teal.menu .active.item { + border-color: #00B5AD !important; + color: #00B5AD !important; +} +.ui.menu .blue.active.item, +.ui.blue.menu .active.item { + border-color: #2185D0 !important; + color: #2185D0 !important; +} +.ui.menu .violet.active.item, +.ui.violet.menu .active.item { + border-color: #6435C9 !important; + color: #6435C9 !important; +} +.ui.menu .purple.active.item, +.ui.purple.menu .active.item { + border-color: #A333C8 !important; + color: #A333C8 !important; +} +.ui.menu .pink.active.item, +.ui.pink.menu .active.item { + border-color: #E03997 !important; + color: #E03997 !important; +} +.ui.menu .brown.active.item, +.ui.brown.menu .active.item { + border-color: #A5673F !important; + color: #A5673F !important; +} +.ui.menu .grey.active.item, +.ui.grey.menu .active.item { + border-color: #767676 !important; + color: #767676 !important; +} + +/*-------------- + Inverted +---------------*/ + +.ui.inverted.menu { + border: 0px solid transparent; + background: #1B1C1D; + -webkit-box-shadow: none; + box-shadow: none; +} + +/* Menu Item */ +.ui.inverted.menu .item, +.ui.inverted.menu .item > a:not(.ui) { + background: transparent; + color: rgba(255, 255, 255, 0.9); +} +.ui.inverted.menu .item.menu { + background: transparent; +} + +/*--- Border ---*/ + +.ui.inverted.menu .item:before { + background: rgba(255, 255, 255, 0.08); +} +.ui.vertical.inverted.menu .item:before { + background: rgba(255, 255, 255, 0.08); +} + +/* Sub Menu */ +.ui.vertical.inverted.menu .menu .item, +.ui.vertical.inverted.menu .menu .item a:not(.ui) { + color: rgba(255, 255, 255, 0.5); +} + +/* Header */ +.ui.inverted.menu .header.item { + margin: 0em; + background: transparent; + -webkit-box-shadow: none; + box-shadow: none; +} + +/* Disabled */ +.ui.inverted.menu .item.disabled, +.ui.inverted.menu .item.disabled:hover { + color: rgba(225, 225, 225, 0.3); +} + +/*--- Hover ---*/ + +.ui.link.inverted.menu .item:hover, +.ui.inverted.menu .dropdown.item:hover, +.ui.inverted.menu .link.item:hover, +.ui.inverted.menu a.item:hover { + background: rgba(255, 255, 255, 0.08); + color: #ffffff; +} +.ui.vertical.inverted.menu .item .menu a.item:hover, +.ui.vertical.inverted.menu .item .menu .link.item:hover { + background: transparent; + color: #ffffff; +} + +/*--- Pressed ---*/ + +.ui.inverted.menu a.item:active, +.ui.inverted.menu .link.item:active { + background: rgba(255, 255, 255, 0.08); + color: #ffffff; +} + +/*--- Active ---*/ + +.ui.inverted.menu .active.item { + background: rgba(255, 255, 255, 0.15); + color: #ffffff !important; +} +.ui.inverted.vertical.menu .item .menu .active.item { + background: transparent; + color: #FFFFFF; +} +.ui.inverted.pointing.menu .active.item:after { + background: #3D3E3F !important; + margin: 0em !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; + border: none !important; +} + +/*--- Active Hover ---*/ + +.ui.inverted.menu .active.item:hover { + background: rgba(255, 255, 255, 0.15); + color: #FFFFFF !important; +} +.ui.inverted.pointing.menu .active.item:hover:after { + background: #3D3E3F !important; +} + +/*-------------- + Floated +---------------*/ + +.ui.floated.menu { + float: left; + margin: 0rem 0.5rem 0rem 0rem; +} +.ui.floated.menu .item:last-child:before { + display: none; +} +.ui.right.floated.menu { + float: right; + margin: 0rem 0rem 0rem 0.5rem; +} + +/*-------------- + Inverted +---------------*/ + + +/* Red */ +.ui.inverted.menu .red.active.item, +.ui.inverted.red.menu { + background-color: #DB2828; +} +.ui.inverted.red.menu .item:before { + background-color: rgba(34, 36, 38, 0.1); +} +.ui.inverted.red.menu .active.item { + background-color: rgba(0, 0, 0, 0.1) !important; +} + +/* Orange */ +.ui.inverted.menu .orange.active.item, +.ui.inverted.orange.menu { + background-color: #F2711C; +} +.ui.inverted.orange.menu .item:before { + background-color: rgba(34, 36, 38, 0.1); +} +.ui.inverted.orange.menu .active.item { + background-color: rgba(0, 0, 0, 0.1) !important; +} + +/* Yellow */ +.ui.inverted.menu .yellow.active.item, +.ui.inverted.yellow.menu { + background-color: #FBBD08; +} +.ui.inverted.yellow.menu .item:before { + background-color: rgba(34, 36, 38, 0.1); +} +.ui.inverted.yellow.menu .active.item { + background-color: rgba(0, 0, 0, 0.1) !important; +} + +/* Olive */ +.ui.inverted.menu .olive.active.item, +.ui.inverted.olive.menu { + background-color: #B5CC18; +} +.ui.inverted.olive.menu .item:before { + background-color: rgba(34, 36, 38, 0.1); +} +.ui.inverted.olive.menu .active.item { + background-color: rgba(0, 0, 0, 0.1) !important; +} + +/* Green */ +.ui.inverted.menu .green.active.item, +.ui.inverted.green.menu { + background-color: #21BA45; +} +.ui.inverted.green.menu .item:before { + background-color: rgba(34, 36, 38, 0.1); +} +.ui.inverted.green.menu .active.item { + background-color: rgba(0, 0, 0, 0.1) !important; +} + +/* Teal */ +.ui.inverted.menu .teal.active.item, +.ui.inverted.teal.menu { + background-color: #00B5AD; +} +.ui.inverted.teal.menu .item:before { + background-color: rgba(34, 36, 38, 0.1); +} +.ui.inverted.teal.menu .active.item { + background-color: rgba(0, 0, 0, 0.1) !important; +} + +/* Blue */ +.ui.inverted.menu .blue.active.item, +.ui.inverted.blue.menu { + background-color: #2185D0; +} +.ui.inverted.blue.menu .item:before { + background-color: rgba(34, 36, 38, 0.1); +} +.ui.inverted.blue.menu .active.item { + background-color: rgba(0, 0, 0, 0.1) !important; +} + +/* Violet */ +.ui.inverted.menu .violet.active.item, +.ui.inverted.violet.menu { + background-color: #6435C9; +} +.ui.inverted.violet.menu .item:before { + background-color: rgba(34, 36, 38, 0.1); +} +.ui.inverted.violet.menu .active.item { + background-color: rgba(0, 0, 0, 0.1) !important; +} + +/* Purple */ +.ui.inverted.menu .purple.active.item, +.ui.inverted.purple.menu { + background-color: #A333C8; +} +.ui.inverted.purple.menu .item:before { + background-color: rgba(34, 36, 38, 0.1); +} +.ui.inverted.purple.menu .active.item { + background-color: rgba(0, 0, 0, 0.1) !important; +} + +/* Pink */ +.ui.inverted.menu .pink.active.item, +.ui.inverted.pink.menu { + background-color: #E03997; +} +.ui.inverted.pink.menu .item:before { + background-color: rgba(34, 36, 38, 0.1); +} +.ui.inverted.pink.menu .active.item { + background-color: rgba(0, 0, 0, 0.1) !important; +} + +/* Brown */ +.ui.inverted.menu .brown.active.item, +.ui.inverted.brown.menu { + background-color: #A5673F; +} +.ui.inverted.brown.menu .item:before { + background-color: rgba(34, 36, 38, 0.1); +} +.ui.inverted.brown.menu .active.item { + background-color: rgba(0, 0, 0, 0.1) !important; +} + +/* Grey */ +.ui.inverted.menu .grey.active.item, +.ui.inverted.grey.menu { + background-color: #767676; +} +.ui.inverted.grey.menu .item:before { + background-color: rgba(34, 36, 38, 0.1); +} +.ui.inverted.grey.menu .active.item { + background-color: rgba(0, 0, 0, 0.1) !important; +} + +/*-------------- + Fitted +---------------*/ + +.ui.fitted.menu .item, +.ui.fitted.menu .item .menu .item, +.ui.menu .fitted.item { + padding: 0em; +} +.ui.horizontally.fitted.menu .item, +.ui.horizontally.fitted.menu .item .menu .item, +.ui.menu .horizontally.fitted.item { + padding-top: 0.92857143em; + padding-bottom: 0.92857143em; +} +.ui.vertically.fitted.menu .item, +.ui.vertically.fitted.menu .item .menu .item, +.ui.menu .vertically.fitted.item { + padding-left: 1.14285714em; + padding-right: 1.14285714em; +} + +/*-------------- + Borderless +---------------*/ + +.ui.borderless.menu .item:before, +.ui.borderless.menu .item .menu .item:before, +.ui.menu .borderless.item:before { + background: none !important; +} + +/*------------------- + Compact +--------------------*/ + +.ui.compact.menu { + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; + margin: 0em; + vertical-align: middle; +} +.ui.compact.vertical.menu { + display: inline-block; +} +.ui.compact.menu .item:last-child { + border-radius: 0em 0.28571429rem 0.28571429rem 0em; +} +.ui.compact.menu .item:last-child:before { + display: none; +} +.ui.compact.vertical.menu { + width: auto !important; +} +.ui.compact.vertical.menu .item:last-child::before { + display: block; +} + +/*------------------- + Fluid +--------------------*/ + +.ui.menu.fluid, +.ui.vertical.menu.fluid { + width: 100% !important; +} + +/*------------------- + Evenly Sized +--------------------*/ + +.ui.item.menu, +.ui.item.menu .item { + width: 100%; + padding-left: 0em !important; + padding-right: 0em !important; + margin-left: 0em !important; + margin-right: 0em !important; + text-align: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; +} +.ui.attached.item.menu { + margin: 0em -1px !important; +} +.ui.item.menu .item:last-child:before { + display: none; +} +.ui.menu.two.item .item { + width: 50%; +} +.ui.menu.three.item .item { + width: 33.333%; +} +.ui.menu.four.item .item { + width: 25%; +} +.ui.menu.five.item .item { + width: 20%; +} +.ui.menu.six.item .item { + width: 16.666%; +} +.ui.menu.seven.item .item { + width: 14.285%; +} +.ui.menu.eight.item .item { + width: 12.5%; +} +.ui.menu.nine.item .item { + width: 11.11%; +} +.ui.menu.ten.item .item { + width: 10%; +} +.ui.menu.eleven.item .item { + width: 9.09%; +} +.ui.menu.twelve.item .item { + width: 8.333%; +} + +/*-------------- + Fixed +---------------*/ + +.ui.menu.fixed { + position: fixed; + z-index: 101; + margin: 0em; + width: 100%; +} +.ui.menu.fixed, +.ui.menu.fixed .item:first-child, +.ui.menu.fixed .item:last-child { + border-radius: 0px !important; +} +.ui.fixed.menu, +.ui[class*="top fixed"].menu { + top: 0px; + left: 0px; + right: auto; + bottom: auto; +} +.ui[class*="top fixed"].menu { + border-top: none; + border-left: none; + border-right: none; +} +.ui[class*="right fixed"].menu { + border-top: none; + border-bottom: none; + border-right: none; + top: 0px; + right: 0px; + left: auto; + bottom: auto; + width: auto; + height: 100%; +} +.ui[class*="bottom fixed"].menu { + border-bottom: none; + border-left: none; + border-right: none; + bottom: 0px; + left: 0px; + top: auto; + right: auto; +} +.ui[class*="left fixed"].menu { + border-top: none; + border-bottom: none; + border-left: none; + top: 0px; + left: 0px; + right: auto; + bottom: auto; + width: auto; + height: 100%; +} + +/* Coupling with Grid */ +.ui.fixed.menu + .ui.grid { + padding-top: 2.75rem; +} + +/*------------------- + Pointing +--------------------*/ + +.ui.pointing.menu .item:after { + visibility: hidden; + position: absolute; + content: ''; + top: 100%; + left: 50%; + -webkit-transform: translateX(-50%) translateY(-50%) rotate(45deg); + transform: translateX(-50%) translateY(-50%) rotate(45deg); + background: none; + margin: 0.5px 0em 0em; + width: 0.57142857em; + height: 0.57142857em; + border: none; + border-bottom: 1px solid #D4D4D5; + border-right: 1px solid #D4D4D5; + z-index: 2; + -webkit-transition: background 0.1s ease; + transition: background 0.1s ease; +} +.ui.vertical.pointing.menu .item:after { + position: absolute; + top: 50%; + right: 0%; + bottom: auto; + left: auto; + -webkit-transform: translateX(50%) translateY(-50%) rotate(45deg); + transform: translateX(50%) translateY(-50%) rotate(45deg); + margin: 0em -0.5px 0em 0em; + border: none; + border-top: 1px solid #D4D4D5; + border-right: 1px solid #D4D4D5; +} + +/* Active */ +.ui.pointing.menu .active.item:after { + visibility: visible; +} +.ui.pointing.menu .active.dropdown.item:after { + visibility: hidden; +} + +/* Don't double up pointers */ +.ui.pointing.menu .dropdown.active.item:after, +.ui.pointing.menu .active.item .menu .active.item:after { + display: none; +} + +/* Colors */ +.ui.pointing.menu .active.item:hover:after { + background-color: #F2F2F2; +} +.ui.pointing.menu .active.item:after { + background-color: #F2F2F2; +} +.ui.pointing.menu .active.item:hover:after { + background-color: #F2F2F2; +} +.ui.vertical.pointing.menu .active.item:hover:after { + background-color: #F2F2F2; +} +.ui.vertical.pointing.menu .active.item:after { + background-color: #F2F2F2; +} +.ui.vertical.pointing.menu .menu .active.item:after { + background-color: #FFFFFF; +} + +/*-------------- + Attached +---------------*/ + + +/* Middle */ +.ui.attached.menu { + top: 0px; + bottom: 0px; + border-radius: 0px; + margin: 0em -1px; + width: calc(100% - (-1px * 2)); + max-width: calc(100% - (-1px * 2)); + -webkit-box-shadow: none; + box-shadow: none; +} +.ui.attached + .ui.attached.menu:not(.top) { + border-top: none; +} + +/* Top */ +.ui[class*="top attached"].menu { + bottom: 0px; + margin-bottom: 0em; + top: 0px; + margin-top: 1rem; + border-radius: 0.28571429rem 0.28571429rem 0em 0em; +} +.ui.menu[class*="top attached"]:first-child { + margin-top: 0em; +} + +/* Bottom */ +.ui[class*="bottom attached"].menu { + bottom: 0px; + margin-top: 0em; + top: 0px; + margin-bottom: 1rem; + -webkit-box-shadow: 0px 1px 2px 0 rgba(34, 36, 38, 0.15), none; + box-shadow: 0px 1px 2px 0 rgba(34, 36, 38, 0.15), none; + border-radius: 0em 0em 0.28571429rem 0.28571429rem; +} +.ui[class*="bottom attached"].menu:last-child { + margin-bottom: 0em; +} + +/* Attached Menu Item */ +.ui.top.attached.menu > .item:first-child { + border-radius: 0.28571429rem 0em 0em 0em; +} +.ui.bottom.attached.menu > .item:first-child { + border-radius: 0em 0em 0em 0.28571429rem; +} + +/* Tabular Attached */ +.ui.attached.menu:not(.tabular) { + border: 1px solid #D4D4D5; +} +.ui.attached.inverted.menu { + border: none; +} +.ui.attached.tabular.menu { + margin-left: 0; + margin-right: 0; + width: 100%; +} + +/*-------------- + Sizes +---------------*/ + + +/* Mini */ +.ui.mini.menu { + font-size: 0.78571429rem; +} +.ui.mini.vertical.menu { + width: 9rem; +} + +/* Tiny */ +.ui.tiny.menu { + font-size: 0.85714286rem; +} +.ui.tiny.vertical.menu { + width: 11rem; +} + +/* Small */ +.ui.small.menu { + font-size: 0.92857143rem; +} +.ui.small.vertical.menu { + width: 13rem; +} + +/* Medium */ +.ui.menu { + font-size: 1rem; +} +.ui.vertical.menu { + width: 15rem; +} + +/* Large */ +.ui.large.menu { + font-size: 1.07142857rem; +} +.ui.large.vertical.menu { + width: 18rem; +} + +/* Huge */ +.ui.huge.menu { + font-size: 1.21428571rem; +} +.ui.huge.vertical.menu { + width: 22rem; +} + +/* Big */ +.ui.big.menu { + font-size: 1.14285714rem; +} +.ui.big.vertical.menu { + width: 20rem; +} + +/* Massive */ +.ui.massive.menu { + font-size: 1.28571429rem; +} +.ui.massive.vertical.menu { + width: 25rem; +} + + +/******************************* + Theme Overrides +*******************************/ + + + +/******************************* + Site Overrides +*******************************/ + diff --git a/app/static/semantic/components/menu.min.css b/app/static/semantic/components/menu.min.css new file mode 100755 index 0000000..34b921c --- /dev/null +++ b/app/static/semantic/components/menu.min.css @@ -0,0 +1 @@ +.ui.menu{display:-webkit-box;display:-ms-flexbox;display:flex;margin:1rem 0;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;background:#fff;font-weight:400;border:1px solid rgba(34,36,38,.15);-webkit-box-shadow:0 1px 2px 0 rgba(34,36,38,.15);box-shadow:0 1px 2px 0 rgba(34,36,38,.15);border-radius:.28571429rem;min-height:2.85714286em}.ui.menu:after{content:'';display:block;height:0;clear:both;visibility:hidden}.ui.menu:first-child{margin-top:0}.ui.menu:last-child{margin-bottom:0}.ui.menu .menu{margin:0}.ui.menu:not(.vertical)>.menu{display:-webkit-box;display:-ms-flexbox;display:flex}.ui.menu:not(.vertical) .item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.ui.menu .item{position:relative;vertical-align:middle;line-height:1;text-decoration:none;-webkit-tap-highlight-color:transparent;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background:0 0;padding:.92857143em 1.14285714em;text-transform:none;color:rgba(0,0,0,.87);font-weight:400;-webkit-transition:background .1s ease,color .1s ease,-webkit-box-shadow .1s ease;transition:background .1s ease,color .1s ease,-webkit-box-shadow .1s ease;transition:background .1s ease,box-shadow .1s ease,color .1s ease;transition:background .1s ease,box-shadow .1s ease,color .1s ease,-webkit-box-shadow .1s ease}.ui.menu>.item:first-child{border-radius:.28571429rem 0 0 .28571429rem}.ui.menu .item:before{position:absolute;content:'';top:0;right:0;height:100%;width:1px;background:rgba(34,36,38,.1)}.ui.menu .item>a:not(.ui),.ui.menu .item>p:only-child,.ui.menu .text.item>*{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;line-height:1.3}.ui.menu .item>p:first-child{margin-top:0}.ui.menu .item>p:last-child{margin-bottom:0}.ui.menu .item>i.icon{opacity:.9;float:none;margin:0 .35714286em 0 0}.ui.menu:not(.vertical) .item>.button{position:relative;top:0;margin:-.5em 0;padding-bottom:.78571429em;padding-top:.78571429em;font-size:1em}.ui.menu>.container,.ui.menu>.grid{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:inherit;-ms-flex-align:inherit;align-items:inherit;-webkit-box-orient:inherit;-webkit-box-direction:inherit;-ms-flex-direction:inherit;flex-direction:inherit}.ui.menu .item>.input{width:100%}.ui.menu:not(.vertical) .item>.input{position:relative;top:0;margin:-.5em 0}.ui.menu .item>.input input{font-size:1em;padding-top:.57142857em;padding-bottom:.57142857em}.ui.menu .header.item,.ui.vertical.menu .header.item{margin:0;background:'';text-transform:normal;font-weight:700}.ui.vertical.menu .item>.header:not(.ui){margin:0 0 .5em;font-size:1em;font-weight:700}.ui.menu .item>i.dropdown.icon{padding:0;float:right;margin:0 0 0 1em}.ui.menu .dropdown.item .menu{min-width:calc(100% - 1px);border-radius:0 0 .28571429rem .28571429rem;background:#fff;margin:0 0 0;-webkit-box-shadow:0 1px 3px 0 rgba(0,0,0,.08);box-shadow:0 1px 3px 0 rgba(0,0,0,.08);-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}.ui.menu .ui.dropdown .menu>.item{margin:0;text-align:left;font-size:1em!important;padding:.78571429em 1.14285714em!important;background:0 0!important;color:rgba(0,0,0,.87)!important;text-transform:none!important;font-weight:400!important;-webkit-box-shadow:none!important;box-shadow:none!important;-webkit-transition:none!important;transition:none!important}.ui.menu .ui.dropdown .menu>.item:hover{background:rgba(0,0,0,.05)!important;color:rgba(0,0,0,.95)!important}.ui.menu .ui.dropdown .menu>.selected.item{background:rgba(0,0,0,.05)!important;color:rgba(0,0,0,.95)!important}.ui.menu .ui.dropdown .menu>.active.item{background:rgba(0,0,0,.03)!important;font-weight:700!important;color:rgba(0,0,0,.95)!important}.ui.menu .ui.dropdown.item .menu .item:not(.filtered){display:block}.ui.menu .ui.dropdown .menu>.item .icon:not(.dropdown){display:inline-block;font-size:1em!important;float:none;margin:0 .75em 0 0!important}.ui.secondary.menu .dropdown.item>.menu,.ui.text.menu .dropdown.item>.menu{border-radius:.28571429rem;margin-top:.35714286em}.ui.menu .pointing.dropdown.item .menu{margin-top:.75em}.ui.inverted.menu .search.dropdown.item>.search,.ui.inverted.menu .search.dropdown.item>.text{color:rgba(255,255,255,.9)}.ui.vertical.menu .dropdown.item>.icon{float:right;content:"\f0da";margin-left:1em}.ui.vertical.menu .dropdown.item .menu{left:100%;min-width:0;margin:0;-webkit-box-shadow:0 1px 3px 0 rgba(0,0,0,.08);box-shadow:0 1px 3px 0 rgba(0,0,0,.08);border-radius:0 .28571429rem .28571429rem .28571429rem}.ui.vertical.menu .dropdown.item.upward .menu{bottom:0}.ui.vertical.menu .dropdown.item:not(.upward) .menu{top:0}.ui.vertical.menu .active.dropdown.item{border-top-right-radius:0;border-bottom-right-radius:0}.ui.vertical.menu .dropdown.active.item{-webkit-box-shadow:none;box-shadow:none}.ui.item.menu .dropdown .menu .item{width:100%}.ui.menu .item>.label{background:#999;color:#fff;margin-left:1em;padding:.3em .78571429em}.ui.vertical.menu .item>.label{background:#999;color:#fff;margin-top:-.15em;margin-bottom:-.15em;padding:.3em .78571429em}.ui.menu .item>.floating.label{padding:.3em .78571429em}.ui.menu .item>img:not(.ui){display:inline-block;vertical-align:middle;margin:-.3em 0;width:2.5em}.ui.vertical.menu .item>img:not(.ui):only-child{display:block;max-width:100%;width:auto}.ui.menu .list .item:before{background:0 0!important}.ui.vertical.sidebar.menu>.item:first-child:before{display:block!important}.ui.vertical.sidebar.menu>.item::before{top:auto;bottom:0}@media only screen and (max-width:767px){.ui.menu>.ui.container{width:100%!important;margin-left:0!important;margin-right:0!important}}@media only screen and (min-width:768px){.ui.menu:not(.secondary):not(.text):not(.tabular):not(.borderless)>.container>.item:not(.right):not(.borderless):first-child{border-left:1px solid rgba(34,36,38,.1)}}.ui.link.menu .item:hover,.ui.menu .dropdown.item:hover,.ui.menu .link.item:hover,.ui.menu a.item:hover{cursor:pointer;background:rgba(0,0,0,.03);color:rgba(0,0,0,.95)}.ui.link.menu .item:active,.ui.menu .link.item:active,.ui.menu a.item:active{background:rgba(0,0,0,.03);color:rgba(0,0,0,.95)}.ui.menu .active.item{background:rgba(0,0,0,.05);color:rgba(0,0,0,.95);font-weight:400;-webkit-box-shadow:none;box-shadow:none}.ui.menu .active.item>i.icon{opacity:1}.ui.menu .active.item:hover,.ui.vertical.menu .active.item:hover{background-color:rgba(0,0,0,.05);color:rgba(0,0,0,.95)}.ui.menu .item.disabled,.ui.menu .item.disabled:hover{cursor:default!important;background-color:transparent!important;color:rgba(40,40,40,.3)!important}.ui.menu:not(.vertical) .left.item,.ui.menu:not(.vertical) :not(.dropdown)>.left.menu{display:-webkit-box;display:-ms-flexbox;display:flex;margin-right:auto!important}.ui.menu:not(.vertical) .right.item,.ui.menu:not(.vertical) .right.menu{display:-webkit-box;display:-ms-flexbox;display:flex;margin-left:auto!important}.ui.menu .right.item::before,.ui.menu .right.menu>.item::before{right:auto;left:0}.ui.vertical.menu{display:block;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;background:#fff;-webkit-box-shadow:0 1px 2px 0 rgba(34,36,38,.15);box-shadow:0 1px 2px 0 rgba(34,36,38,.15)}.ui.vertical.menu .item{display:block;background:0 0;border-top:none;border-right:none}.ui.vertical.menu>.item:first-child{border-radius:.28571429rem .28571429rem 0 0}.ui.vertical.menu>.item:last-child{border-radius:0 0 .28571429rem .28571429rem}.ui.vertical.menu .item>.label{float:right;text-align:center}.ui.vertical.menu .item>i.icon{width:1.18em;float:right;margin:0 0 0 .5em}.ui.vertical.menu .item>.label+i.icon{float:none;margin:0 .5em 0 0}.ui.vertical.menu .item:before{position:absolute;content:'';top:0;left:0;width:100%;height:1px;background:rgba(34,36,38,.1)}.ui.vertical.menu .item:first-child:before{display:none!important}.ui.vertical.menu .item>.menu{margin:.5em -1.14285714em 0}.ui.vertical.menu .menu .item{background:0 0;padding:.5em 1.33333333em;font-size:.85714286em;color:rgba(0,0,0,.5)}.ui.vertical.menu .item .menu .link.item:hover,.ui.vertical.menu .item .menu a.item:hover{color:rgba(0,0,0,.85)}.ui.vertical.menu .menu .item:before{display:none}.ui.vertical.menu .active.item{background:rgba(0,0,0,.05);border-radius:0;-webkit-box-shadow:none;box-shadow:none}.ui.vertical.menu>.active.item:first-child{border-radius:.28571429rem .28571429rem 0 0}.ui.vertical.menu>.active.item:last-child{border-radius:0 0 .28571429rem .28571429rem}.ui.vertical.menu>.active.item:only-child{border-radius:.28571429rem}.ui.vertical.menu .active.item .menu .active.item{border-left:none}.ui.vertical.menu .item .menu .active.item{background-color:transparent;font-weight:700;color:rgba(0,0,0,.95)}.ui.tabular.menu{border-radius:0;-webkit-box-shadow:none!important;box-shadow:none!important;border:none;background:none transparent;border-bottom:1px solid #d4d4d5}.ui.tabular.fluid.menu{width:calc(100% + (1px * 2))!important}.ui.tabular.menu .item{background:0 0;border-bottom:none;border-left:1px solid transparent;border-right:1px solid transparent;border-top:2px solid transparent;padding:.92857143em 1.42857143em;color:rgba(0,0,0,.87)}.ui.tabular.menu .item:before{display:none}.ui.tabular.menu .item:hover{background-color:transparent;color:rgba(0,0,0,.8)}.ui.tabular.menu .active.item{background:none #fff;color:rgba(0,0,0,.95);border-top-width:1px;border-color:#d4d4d5;font-weight:700;margin-bottom:-1px;-webkit-box-shadow:none;box-shadow:none;border-radius:.28571429rem .28571429rem 0 0!important}.ui.tabular.menu+.attached:not(.top).segment,.ui.tabular.menu+.attached:not(.top).segment+.attached:not(.top).segment{border-top:none;margin-left:0;margin-top:0;margin-right:0;width:100%}.top.attached.segment+.ui.bottom.tabular.menu{position:relative;width:calc(100% + (1px * 2));left:-1px}.ui.bottom.tabular.menu{background:none transparent;border-radius:0;-webkit-box-shadow:none!important;box-shadow:none!important;border-bottom:none;border-top:1px solid #d4d4d5}.ui.bottom.tabular.menu .item{background:0 0;border-left:1px solid transparent;border-right:1px solid transparent;border-bottom:1px solid transparent;border-top:none}.ui.bottom.tabular.menu .active.item{background:none #fff;color:rgba(0,0,0,.95);border-color:#d4d4d5;margin:-1px 0 0 0;border-radius:0 0 .28571429rem .28571429rem!important}.ui.vertical.tabular.menu{background:none transparent;border-radius:0;-webkit-box-shadow:none!important;box-shadow:none!important;border-bottom:none;border-right:1px solid #d4d4d5}.ui.vertical.tabular.menu .item{background:0 0;border-left:1px solid transparent;border-bottom:1px solid transparent;border-top:1px solid transparent;border-right:none}.ui.vertical.tabular.menu .active.item{background:none #fff;color:rgba(0,0,0,.95);border-color:#d4d4d5;margin:0 -1px 0 0;border-radius:.28571429rem 0 0 .28571429rem!important}.ui.vertical.right.tabular.menu{background:none transparent;border-radius:0;-webkit-box-shadow:none!important;box-shadow:none!important;border-bottom:none;border-right:none;border-left:1px solid #d4d4d5}.ui.vertical.right.tabular.menu .item{background:0 0;border-right:1px solid transparent;border-bottom:1px solid transparent;border-top:1px solid transparent;border-left:none}.ui.vertical.right.tabular.menu .active.item{background:none #fff;color:rgba(0,0,0,.95);border-color:#d4d4d5;margin:0 0 0 -1px;border-radius:0 .28571429rem .28571429rem 0!important}.ui.tabular.menu .active.dropdown.item{margin-bottom:0;border-left:1px solid transparent;border-right:1px solid transparent;border-top:2px solid transparent;border-bottom:none}.ui.pagination.menu{margin:0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.ui.pagination.menu .item:last-child{border-radius:0 .28571429rem .28571429rem 0}.ui.compact.menu .item:last-child{border-radius:0 .28571429rem .28571429rem 0}.ui.pagination.menu .item:last-child:before{display:none}.ui.pagination.menu .item{min-width:3em;text-align:center}.ui.pagination.menu .icon.item i.icon{vertical-align:top}.ui.pagination.menu .active.item{border-top:none;padding-top:.92857143em;background-color:rgba(0,0,0,.05);color:rgba(0,0,0,.95);-webkit-box-shadow:none;box-shadow:none}.ui.secondary.menu{background:0 0;margin-left:-.35714286em;margin-right:-.35714286em;border-radius:0;border:none;-webkit-box-shadow:none;box-shadow:none}.ui.secondary.menu .item{-ms-flex-item-align:center;align-self:center;-webkit-box-shadow:none;box-shadow:none;border:none;padding:.78571429em .92857143em;margin:0 .35714286em;background:0 0;-webkit-transition:color .1s ease;transition:color .1s ease;border-radius:.28571429rem}.ui.secondary.menu .item:before{display:none!important}.ui.secondary.menu .header.item{border-radius:0;border-right:none;background:none transparent}.ui.secondary.menu .item>img:not(.ui){margin:0}.ui.secondary.menu .dropdown.item:hover,.ui.secondary.menu .link.item:hover,.ui.secondary.menu a.item:hover{background:rgba(0,0,0,.05);color:rgba(0,0,0,.95)}.ui.secondary.menu .active.item{-webkit-box-shadow:none;box-shadow:none;background:rgba(0,0,0,.05);color:rgba(0,0,0,.95);border-radius:.28571429rem}.ui.secondary.menu .active.item:hover{-webkit-box-shadow:none;box-shadow:none;background:rgba(0,0,0,.05);color:rgba(0,0,0,.95)}.ui.secondary.inverted.menu .link.item,.ui.secondary.inverted.menu a.item{color:rgba(255,255,255,.7)!important}.ui.secondary.inverted.menu .dropdown.item:hover,.ui.secondary.inverted.menu .link.item:hover,.ui.secondary.inverted.menu a.item:hover{background:rgba(255,255,255,.08);color:#fff!important}.ui.secondary.inverted.menu .active.item{background:rgba(255,255,255,.15);color:#fff!important}.ui.secondary.item.menu{margin-left:0;margin-right:0}.ui.secondary.item.menu .item:last-child{margin-right:0}.ui.secondary.attached.menu{-webkit-box-shadow:none;box-shadow:none}.ui.vertical.secondary.menu .item:not(.dropdown)>.menu{margin:0 -.92857143em}.ui.vertical.secondary.menu .item:not(.dropdown)>.menu>.item{margin:0;padding:.5em 1.33333333em}.ui.secondary.vertical.menu>.item{border:none;margin:0 0 .35714286em;border-radius:.28571429rem!important}.ui.secondary.vertical.menu>.header.item{border-radius:0}.ui.vertical.secondary.menu .item>.menu .item{background-color:transparent}.ui.secondary.inverted.menu{background-color:transparent}.ui.secondary.pointing.menu{margin-left:0;margin-right:0;border-bottom:2px solid rgba(34,36,38,.15)}.ui.secondary.pointing.menu .item{border-bottom-color:transparent;border-bottom-style:solid;border-radius:0;-ms-flex-item-align:end;align-self:flex-end;margin:0 0 -2px;padding:.85714286em 1.14285714em;border-bottom-width:2px;-webkit-transition:color .1s ease;transition:color .1s ease}.ui.secondary.pointing.menu .header.item{color:rgba(0,0,0,.85)!important}.ui.secondary.pointing.menu .text.item{-webkit-box-shadow:none!important;box-shadow:none!important}.ui.secondary.pointing.menu .item:after{display:none}.ui.secondary.pointing.menu .dropdown.item:hover,.ui.secondary.pointing.menu .link.item:hover,.ui.secondary.pointing.menu a.item:hover{background-color:transparent;color:rgba(0,0,0,.87)}.ui.secondary.pointing.menu .dropdown.item:active,.ui.secondary.pointing.menu .link.item:active,.ui.secondary.pointing.menu a.item:active{background-color:transparent;border-color:rgba(34,36,38,.15)}.ui.secondary.pointing.menu .active.item{background-color:transparent;-webkit-box-shadow:none;box-shadow:none;border-color:#1b1c1d;font-weight:700;color:rgba(0,0,0,.95)}.ui.secondary.pointing.menu .active.item:hover{border-color:#1b1c1d;color:rgba(0,0,0,.95)}.ui.secondary.pointing.menu .active.dropdown.item{border-color:transparent}.ui.secondary.vertical.pointing.menu{border-bottom-width:0;border-right-width:2px;border-right-style:solid;border-right-color:rgba(34,36,38,.15)}.ui.secondary.vertical.pointing.menu .item{border-bottom:none;border-right-style:solid;border-right-color:transparent;border-radius:0!important;margin:0 -2px 0 0;border-right-width:2px}.ui.secondary.vertical.pointing.menu .active.item{border-color:#1b1c1d}.ui.secondary.inverted.pointing.menu{border-color:rgba(255,255,255,.1)}.ui.secondary.inverted.pointing.menu{border-width:2px;border-color:rgba(34,36,38,.15)}.ui.secondary.inverted.pointing.menu .item{color:rgba(255,255,255,.9)}.ui.secondary.inverted.pointing.menu .header.item{color:#fff!important}.ui.secondary.inverted.pointing.menu .link.item:hover,.ui.secondary.inverted.pointing.menu a.item:hover{color:rgba(0,0,0,.95)}.ui.secondary.inverted.pointing.menu .active.item{border-color:#fff;color:#fff}.ui.text.menu{background:none transparent;border-radius:0;-webkit-box-shadow:none;box-shadow:none;border:none;margin:1em -.5em}.ui.text.menu .item{border-radius:0;-webkit-box-shadow:none;box-shadow:none;-ms-flex-item-align:center;align-self:center;margin:0 0;padding:.35714286em .5em;font-weight:400;color:rgba(0,0,0,.6);-webkit-transition:opacity .1s ease;transition:opacity .1s ease}.ui.text.menu .item:before,.ui.text.menu .menu .item:before{display:none!important}.ui.text.menu .header.item{background-color:transparent;opacity:1;color:rgba(0,0,0,.85);font-size:.92857143em;text-transform:uppercase;font-weight:700}.ui.text.menu .item>img:not(.ui){margin:0}.ui.text.item.menu .item{margin:0}.ui.vertical.text.menu{margin:1em 0}.ui.vertical.text.menu:first-child{margin-top:0}.ui.vertical.text.menu:last-child{margin-bottom:0}.ui.vertical.text.menu .item{margin:.57142857em 0;padding-left:0;padding-right:0}.ui.vertical.text.menu .item>i.icon{float:none;margin:0 .35714286em 0 0}.ui.vertical.text.menu .header.item{margin:.57142857em 0 .71428571em}.ui.vertical.text.menu .item:not(.dropdown)>.menu{margin:0}.ui.vertical.text.menu .item:not(.dropdown)>.menu>.item{margin:0;padding:.5em 0}.ui.text.menu .item:hover{opacity:1;background-color:transparent}.ui.text.menu .active.item{background-color:transparent;border:none;-webkit-box-shadow:none;box-shadow:none;font-weight:400;color:rgba(0,0,0,.95)}.ui.text.menu .active.item:hover{background-color:transparent}.ui.text.pointing.menu .active.item:after{-webkit-box-shadow:none;box-shadow:none}.ui.text.attached.menu{-webkit-box-shadow:none;box-shadow:none}.ui.inverted.text.menu,.ui.inverted.text.menu .active.item,.ui.inverted.text.menu .item,.ui.inverted.text.menu .item:hover{background-color:transparent!important}.ui.fluid.text.menu{margin-left:0;margin-right:0}.ui.vertical.icon.menu{display:inline-block;width:auto}.ui.icon.menu .item{height:auto;text-align:center;color:#1b1c1d}.ui.icon.menu .item>.icon:not(.dropdown){margin:0;opacity:1}.ui.icon.menu .icon:before{opacity:1}.ui.menu .icon.item>.icon{width:auto;margin:0 auto}.ui.vertical.icon.menu .item>.icon:not(.dropdown){display:block;opacity:1;margin:0 auto;float:none}.ui.inverted.icon.menu .item{color:#fff}.ui.labeled.icon.menu{text-align:center}.ui.labeled.icon.menu .item{min-width:6em;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.ui.labeled.icon.menu .item>.icon:not(.dropdown){height:1em;display:block;font-size:1.71428571em!important;margin:0 auto .5rem!important}.ui.fluid.labeled.icon.menu>.item{min-width:0}@media only screen and (max-width:767px){.ui.stackable.menu{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.ui.stackable.menu .item{width:100%!important}.ui.stackable.menu .item:before{position:absolute;content:'';top:auto;bottom:0;left:0;width:100%;height:1px;background:rgba(34,36,38,.1)}.ui.stackable.menu .left.item,.ui.stackable.menu .left.menu{margin-right:0!important}.ui.stackable.menu .right.item,.ui.stackable.menu .right.menu{margin-left:0!important}.ui.stackable.menu .left.menu,.ui.stackable.menu .right.menu{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.ui.menu .red.active.item,.ui.red.menu .active.item{border-color:#db2828!important;color:#db2828!important}.ui.menu .orange.active.item,.ui.orange.menu .active.item{border-color:#f2711c!important;color:#f2711c!important}.ui.menu .yellow.active.item,.ui.yellow.menu .active.item{border-color:#fbbd08!important;color:#fbbd08!important}.ui.menu .olive.active.item,.ui.olive.menu .active.item{border-color:#b5cc18!important;color:#b5cc18!important}.ui.green.menu .active.item,.ui.menu .green.active.item{border-color:#21ba45!important;color:#21ba45!important}.ui.menu .teal.active.item,.ui.teal.menu .active.item{border-color:#00b5ad!important;color:#00b5ad!important}.ui.blue.menu .active.item,.ui.menu .blue.active.item{border-color:#2185d0!important;color:#2185d0!important}.ui.menu .violet.active.item,.ui.violet.menu .active.item{border-color:#6435c9!important;color:#6435c9!important}.ui.menu .purple.active.item,.ui.purple.menu .active.item{border-color:#a333c8!important;color:#a333c8!important}.ui.menu .pink.active.item,.ui.pink.menu .active.item{border-color:#e03997!important;color:#e03997!important}.ui.brown.menu .active.item,.ui.menu .brown.active.item{border-color:#a5673f!important;color:#a5673f!important}.ui.grey.menu .active.item,.ui.menu .grey.active.item{border-color:#767676!important;color:#767676!important}.ui.inverted.menu{border:0 solid transparent;background:#1b1c1d;-webkit-box-shadow:none;box-shadow:none}.ui.inverted.menu .item,.ui.inverted.menu .item>a:not(.ui){background:0 0;color:rgba(255,255,255,.9)}.ui.inverted.menu .item.menu{background:0 0}.ui.inverted.menu .item:before{background:rgba(255,255,255,.08)}.ui.vertical.inverted.menu .item:before{background:rgba(255,255,255,.08)}.ui.vertical.inverted.menu .menu .item,.ui.vertical.inverted.menu .menu .item a:not(.ui){color:rgba(255,255,255,.5)}.ui.inverted.menu .header.item{margin:0;background:0 0;-webkit-box-shadow:none;box-shadow:none}.ui.inverted.menu .item.disabled,.ui.inverted.menu .item.disabled:hover{color:rgba(225,225,225,.3)}.ui.inverted.menu .dropdown.item:hover,.ui.inverted.menu .link.item:hover,.ui.inverted.menu a.item:hover,.ui.link.inverted.menu .item:hover{background:rgba(255,255,255,.08);color:#fff}.ui.vertical.inverted.menu .item .menu .link.item:hover,.ui.vertical.inverted.menu .item .menu a.item:hover{background:0 0;color:#fff}.ui.inverted.menu .link.item:active,.ui.inverted.menu a.item:active{background:rgba(255,255,255,.08);color:#fff}.ui.inverted.menu .active.item{background:rgba(255,255,255,.15);color:#fff!important}.ui.inverted.vertical.menu .item .menu .active.item{background:0 0;color:#fff}.ui.inverted.pointing.menu .active.item:after{background:#3d3e3f!important;margin:0!important;-webkit-box-shadow:none!important;box-shadow:none!important;border:none!important}.ui.inverted.menu .active.item:hover{background:rgba(255,255,255,.15);color:#fff!important}.ui.inverted.pointing.menu .active.item:hover:after{background:#3d3e3f!important}.ui.floated.menu{float:left;margin:0 .5rem 0 0}.ui.floated.menu .item:last-child:before{display:none}.ui.right.floated.menu{float:right;margin:0 0 0 .5rem}.ui.inverted.menu .red.active.item,.ui.inverted.red.menu{background-color:#db2828}.ui.inverted.red.menu .item:before{background-color:rgba(34,36,38,.1)}.ui.inverted.red.menu .active.item{background-color:rgba(0,0,0,.1)!important}.ui.inverted.menu .orange.active.item,.ui.inverted.orange.menu{background-color:#f2711c}.ui.inverted.orange.menu .item:before{background-color:rgba(34,36,38,.1)}.ui.inverted.orange.menu .active.item{background-color:rgba(0,0,0,.1)!important}.ui.inverted.menu .yellow.active.item,.ui.inverted.yellow.menu{background-color:#fbbd08}.ui.inverted.yellow.menu .item:before{background-color:rgba(34,36,38,.1)}.ui.inverted.yellow.menu .active.item{background-color:rgba(0,0,0,.1)!important}.ui.inverted.menu .olive.active.item,.ui.inverted.olive.menu{background-color:#b5cc18}.ui.inverted.olive.menu .item:before{background-color:rgba(34,36,38,.1)}.ui.inverted.olive.menu .active.item{background-color:rgba(0,0,0,.1)!important}.ui.inverted.green.menu,.ui.inverted.menu .green.active.item{background-color:#21ba45}.ui.inverted.green.menu .item:before{background-color:rgba(34,36,38,.1)}.ui.inverted.green.menu .active.item{background-color:rgba(0,0,0,.1)!important}.ui.inverted.menu .teal.active.item,.ui.inverted.teal.menu{background-color:#00b5ad}.ui.inverted.teal.menu .item:before{background-color:rgba(34,36,38,.1)}.ui.inverted.teal.menu .active.item{background-color:rgba(0,0,0,.1)!important}.ui.inverted.blue.menu,.ui.inverted.menu .blue.active.item{background-color:#2185d0}.ui.inverted.blue.menu .item:before{background-color:rgba(34,36,38,.1)}.ui.inverted.blue.menu .active.item{background-color:rgba(0,0,0,.1)!important}.ui.inverted.menu .violet.active.item,.ui.inverted.violet.menu{background-color:#6435c9}.ui.inverted.violet.menu .item:before{background-color:rgba(34,36,38,.1)}.ui.inverted.violet.menu .active.item{background-color:rgba(0,0,0,.1)!important}.ui.inverted.menu .purple.active.item,.ui.inverted.purple.menu{background-color:#a333c8}.ui.inverted.purple.menu .item:before{background-color:rgba(34,36,38,.1)}.ui.inverted.purple.menu .active.item{background-color:rgba(0,0,0,.1)!important}.ui.inverted.menu .pink.active.item,.ui.inverted.pink.menu{background-color:#e03997}.ui.inverted.pink.menu .item:before{background-color:rgba(34,36,38,.1)}.ui.inverted.pink.menu .active.item{background-color:rgba(0,0,0,.1)!important}.ui.inverted.brown.menu,.ui.inverted.menu .brown.active.item{background-color:#a5673f}.ui.inverted.brown.menu .item:before{background-color:rgba(34,36,38,.1)}.ui.inverted.brown.menu .active.item{background-color:rgba(0,0,0,.1)!important}.ui.inverted.grey.menu,.ui.inverted.menu .grey.active.item{background-color:#767676}.ui.inverted.grey.menu .item:before{background-color:rgba(34,36,38,.1)}.ui.inverted.grey.menu .active.item{background-color:rgba(0,0,0,.1)!important}.ui.fitted.menu .item,.ui.fitted.menu .item .menu .item,.ui.menu .fitted.item{padding:0}.ui.horizontally.fitted.menu .item,.ui.horizontally.fitted.menu .item .menu .item,.ui.menu .horizontally.fitted.item{padding-top:.92857143em;padding-bottom:.92857143em}.ui.menu .vertically.fitted.item,.ui.vertically.fitted.menu .item,.ui.vertically.fitted.menu .item .menu .item{padding-left:1.14285714em;padding-right:1.14285714em}.ui.borderless.menu .item .menu .item:before,.ui.borderless.menu .item:before,.ui.menu .borderless.item:before{background:0 0!important}.ui.compact.menu{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;margin:0;vertical-align:middle}.ui.compact.vertical.menu{display:inline-block}.ui.compact.menu .item:last-child{border-radius:0 .28571429rem .28571429rem 0}.ui.compact.menu .item:last-child:before{display:none}.ui.compact.vertical.menu{width:auto!important}.ui.compact.vertical.menu .item:last-child::before{display:block}.ui.menu.fluid,.ui.vertical.menu.fluid{width:100%!important}.ui.item.menu,.ui.item.menu .item{width:100%;padding-left:0!important;padding-right:0!important;margin-left:0!important;margin-right:0!important;text-align:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.ui.attached.item.menu{margin:0 -1px!important}.ui.item.menu .item:last-child:before{display:none}.ui.menu.two.item .item{width:50%}.ui.menu.three.item .item{width:33.333%}.ui.menu.four.item .item{width:25%}.ui.menu.five.item .item{width:20%}.ui.menu.six.item .item{width:16.666%}.ui.menu.seven.item .item{width:14.285%}.ui.menu.eight.item .item{width:12.5%}.ui.menu.nine.item .item{width:11.11%}.ui.menu.ten.item .item{width:10%}.ui.menu.eleven.item .item{width:9.09%}.ui.menu.twelve.item .item{width:8.333%}.ui.menu.fixed{position:fixed;z-index:101;margin:0;width:100%}.ui.menu.fixed,.ui.menu.fixed .item:first-child,.ui.menu.fixed .item:last-child{border-radius:0!important}.ui.fixed.menu,.ui[class*="top fixed"].menu{top:0;left:0;right:auto;bottom:auto}.ui[class*="top fixed"].menu{border-top:none;border-left:none;border-right:none}.ui[class*="right fixed"].menu{border-top:none;border-bottom:none;border-right:none;top:0;right:0;left:auto;bottom:auto;width:auto;height:100%}.ui[class*="bottom fixed"].menu{border-bottom:none;border-left:none;border-right:none;bottom:0;left:0;top:auto;right:auto}.ui[class*="left fixed"].menu{border-top:none;border-bottom:none;border-left:none;top:0;left:0;right:auto;bottom:auto;width:auto;height:100%}.ui.fixed.menu+.ui.grid{padding-top:2.75rem}.ui.pointing.menu .item:after{visibility:hidden;position:absolute;content:'';top:100%;left:50%;-webkit-transform:translateX(-50%) translateY(-50%) rotate(45deg);transform:translateX(-50%) translateY(-50%) rotate(45deg);background:0 0;margin:.5px 0 0;width:.57142857em;height:.57142857em;border:none;border-bottom:1px solid #d4d4d5;border-right:1px solid #d4d4d5;z-index:2;-webkit-transition:background .1s ease;transition:background .1s ease}.ui.vertical.pointing.menu .item:after{position:absolute;top:50%;right:0;bottom:auto;left:auto;-webkit-transform:translateX(50%) translateY(-50%) rotate(45deg);transform:translateX(50%) translateY(-50%) rotate(45deg);margin:0 -.5px 0 0;border:none;border-top:1px solid #d4d4d5;border-right:1px solid #d4d4d5}.ui.pointing.menu .active.item:after{visibility:visible}.ui.pointing.menu .active.dropdown.item:after{visibility:hidden}.ui.pointing.menu .active.item .menu .active.item:after,.ui.pointing.menu .dropdown.active.item:after{display:none}.ui.pointing.menu .active.item:hover:after{background-color:#f2f2f2}.ui.pointing.menu .active.item:after{background-color:#f2f2f2}.ui.pointing.menu .active.item:hover:after{background-color:#f2f2f2}.ui.vertical.pointing.menu .active.item:hover:after{background-color:#f2f2f2}.ui.vertical.pointing.menu .active.item:after{background-color:#f2f2f2}.ui.vertical.pointing.menu .menu .active.item:after{background-color:#fff}.ui.attached.menu{top:0;bottom:0;border-radius:0;margin:0 -1px;width:calc(100% - (-1px * 2));max-width:calc(100% - (-1px * 2));-webkit-box-shadow:none;box-shadow:none}.ui.attached+.ui.attached.menu:not(.top){border-top:none}.ui[class*="top attached"].menu{bottom:0;margin-bottom:0;top:0;margin-top:1rem;border-radius:.28571429rem .28571429rem 0 0}.ui.menu[class*="top attached"]:first-child{margin-top:0}.ui[class*="bottom attached"].menu{bottom:0;margin-top:0;top:0;margin-bottom:1rem;-webkit-box-shadow:0 1px 2px 0 rgba(34,36,38,.15),none;box-shadow:0 1px 2px 0 rgba(34,36,38,.15),none;border-radius:0 0 .28571429rem .28571429rem}.ui[class*="bottom attached"].menu:last-child{margin-bottom:0}.ui.top.attached.menu>.item:first-child{border-radius:.28571429rem 0 0 0}.ui.bottom.attached.menu>.item:first-child{border-radius:0 0 0 .28571429rem}.ui.attached.menu:not(.tabular){border:1px solid #d4d4d5}.ui.attached.inverted.menu{border:none}.ui.attached.tabular.menu{margin-left:0;margin-right:0;width:100%}.ui.mini.menu{font-size:.78571429rem}.ui.mini.vertical.menu{width:9rem}.ui.tiny.menu{font-size:.85714286rem}.ui.tiny.vertical.menu{width:11rem}.ui.small.menu{font-size:.92857143rem}.ui.small.vertical.menu{width:13rem}.ui.menu{font-size:1rem}.ui.vertical.menu{width:15rem}.ui.large.menu{font-size:1.07142857rem}.ui.large.vertical.menu{width:18rem}.ui.huge.menu{font-size:1.21428571rem}.ui.huge.vertical.menu{width:22rem}.ui.big.menu{font-size:1.14285714rem}.ui.big.vertical.menu{width:20rem}.ui.massive.menu{font-size:1.28571429rem}.ui.massive.vertical.menu{width:25rem} \ No newline at end of file diff --git a/app/static/semantic/components/message.css b/app/static/semantic/components/message.css new file mode 100755 index 0000000..d91ce17 --- /dev/null +++ b/app/static/semantic/components/message.css @@ -0,0 +1,505 @@ +/*! + * # Semantic UI 2.4.1 - Message + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */ + + +/******************************* + Message +*******************************/ + +.ui.message { + position: relative; + min-height: 1em; + margin: 1em 0em; + background: #F8F8F9; + padding: 1em 1.5em; + line-height: 1.4285em; + color: rgba(0, 0, 0, 0.87); + -webkit-transition: opacity 0.1s ease, color 0.1s ease, background 0.1s ease, -webkit-box-shadow 0.1s ease; + transition: opacity 0.1s ease, color 0.1s ease, background 0.1s ease, -webkit-box-shadow 0.1s ease; + transition: opacity 0.1s ease, color 0.1s ease, background 0.1s ease, box-shadow 0.1s ease; + transition: opacity 0.1s ease, color 0.1s ease, background 0.1s ease, box-shadow 0.1s ease, -webkit-box-shadow 0.1s ease; + border-radius: 0.28571429rem; + -webkit-box-shadow: 0px 0px 0px 1px rgba(34, 36, 38, 0.22) inset, 0px 0px 0px 0px rgba(0, 0, 0, 0); + box-shadow: 0px 0px 0px 1px rgba(34, 36, 38, 0.22) inset, 0px 0px 0px 0px rgba(0, 0, 0, 0); +} +.ui.message:first-child { + margin-top: 0em; +} +.ui.message:last-child { + margin-bottom: 0em; +} + +/*-------------- + Content +---------------*/ + + +/* Header */ +.ui.message .header { + display: block; + font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif; + font-weight: bold; + margin: -0.14285714em 0em 0rem 0em; +} + +/* Default font size */ +.ui.message .header:not(.ui) { + font-size: 1.14285714em; +} + +/* Paragraph */ +.ui.message p { + opacity: 0.85; + margin: 0.75em 0em; +} +.ui.message p:first-child { + margin-top: 0em; +} +.ui.message p:last-child { + margin-bottom: 0em; +} +.ui.message .header + p { + margin-top: 0.25em; +} + +/* List */ +.ui.message .list:not(.ui) { + text-align: left; + padding: 0em; + opacity: 0.85; + list-style-position: inside; + margin: 0.5em 0em 0em; +} +.ui.message .list:not(.ui):first-child { + margin-top: 0em; +} +.ui.message .list:not(.ui):last-child { + margin-bottom: 0em; +} +.ui.message .list:not(.ui) li { + position: relative; + list-style-type: none; + margin: 0em 0em 0.3em 1em; + padding: 0em; +} +.ui.message .list:not(.ui) li:before { + position: absolute; + content: '•'; + left: -1em; + height: 100%; + vertical-align: baseline; +} +.ui.message .list:not(.ui) li:last-child { + margin-bottom: 0em; +} + +/* Icon */ +.ui.message > .icon { + margin-right: 0.6em; +} + +/* Close Icon */ +.ui.message > .close.icon { + cursor: pointer; + position: absolute; + margin: 0em; + top: 0.78575em; + right: 0.5em; + opacity: 0.7; + -webkit-transition: opacity 0.1s ease; + transition: opacity 0.1s ease; +} +.ui.message > .close.icon:hover { + opacity: 1; +} + +/* First / Last Element */ +.ui.message > :first-child { + margin-top: 0em; +} +.ui.message > :last-child { + margin-bottom: 0em; +} + + +/******************************* + Coupling +*******************************/ + +.ui.dropdown .menu > .message { + margin: 0px -1px; +} + + +/******************************* + States +*******************************/ + + +/*-------------- + Visible +---------------*/ + +.ui.visible.visible.visible.visible.message { + display: block; +} +.ui.icon.visible.visible.visible.visible.message { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} + +/*-------------- + Hidden +---------------*/ + +.ui.hidden.hidden.hidden.hidden.message { + display: none; +} + + +/******************************* + Variations +*******************************/ + + +/*-------------- + Compact +---------------*/ + +.ui.compact.message { + display: inline-block; +} +.ui.compact.icon.message { + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; +} + +/*-------------- + Attached +---------------*/ + +.ui.attached.message { + margin-bottom: -1px; + border-radius: 0.28571429rem 0.28571429rem 0em 0em; + -webkit-box-shadow: 0em 0em 0em 1px rgba(34, 36, 38, 0.15) inset; + box-shadow: 0em 0em 0em 1px rgba(34, 36, 38, 0.15) inset; + margin-left: -1px; + margin-right: -1px; +} +.ui.attached + .ui.attached.message:not(.top):not(.bottom) { + margin-top: -1px; + border-radius: 0em; +} +.ui.bottom.attached.message { + margin-top: -1px; + border-radius: 0em 0em 0.28571429rem 0.28571429rem; + -webkit-box-shadow: 0em 0em 0em 1px rgba(34, 36, 38, 0.15) inset, 0px 1px 2px 0 rgba(34, 36, 38, 0.15); + box-shadow: 0em 0em 0em 1px rgba(34, 36, 38, 0.15) inset, 0px 1px 2px 0 rgba(34, 36, 38, 0.15); +} +.ui.bottom.attached.message:not(:last-child) { + margin-bottom: 1em; +} +.ui.attached.icon.message { + width: auto; +} + +/*-------------- + Icon +---------------*/ + +.ui.icon.message { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + width: 100%; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.ui.icon.message > .icon:not(.close) { + display: block; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + line-height: 1; + vertical-align: middle; + font-size: 3em; + opacity: 0.8; +} +.ui.icon.message > .content { + display: block; + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + vertical-align: middle; +} +.ui.icon.message .icon:not(.close) + .content { + padding-left: 0rem; +} +.ui.icon.message .circular.icon { + width: 1em; +} + +/*-------------- + Floating +---------------*/ + +.ui.floating.message { + -webkit-box-shadow: 0px 0px 0px 1px rgba(34, 36, 38, 0.22) inset, 0px 2px 4px 0px rgba(34, 36, 38, 0.12), 0px 2px 10px 0px rgba(34, 36, 38, 0.15); + box-shadow: 0px 0px 0px 1px rgba(34, 36, 38, 0.22) inset, 0px 2px 4px 0px rgba(34, 36, 38, 0.12), 0px 2px 10px 0px rgba(34, 36, 38, 0.15); +} + +/*-------------- + Colors +---------------*/ + +.ui.black.message { + background-color: #1B1C1D; + color: rgba(255, 255, 255, 0.9); +} + +/*-------------- + Types +---------------*/ + + +/* Positive */ +.ui.positive.message { + background-color: #FCFFF5; + color: #2C662D; +} +.ui.positive.message, +.ui.attached.positive.message { + -webkit-box-shadow: 0px 0px 0px 1px #A3C293 inset, 0px 0px 0px 0px rgba(0, 0, 0, 0); + box-shadow: 0px 0px 0px 1px #A3C293 inset, 0px 0px 0px 0px rgba(0, 0, 0, 0); +} +.ui.positive.message .header { + color: #1A531B; +} + +/* Negative */ +.ui.negative.message { + background-color: #FFF6F6; + color: #9F3A38; +} +.ui.negative.message, +.ui.attached.negative.message { + -webkit-box-shadow: 0px 0px 0px 1px #E0B4B4 inset, 0px 0px 0px 0px rgba(0, 0, 0, 0); + box-shadow: 0px 0px 0px 1px #E0B4B4 inset, 0px 0px 0px 0px rgba(0, 0, 0, 0); +} +.ui.negative.message .header { + color: #912D2B; +} + +/* Info */ +.ui.info.message { + background-color: #F8FFFF; + color: #276F86; +} +.ui.info.message, +.ui.attached.info.message { + -webkit-box-shadow: 0px 0px 0px 1px #A9D5DE inset, 0px 0px 0px 0px rgba(0, 0, 0, 0); + box-shadow: 0px 0px 0px 1px #A9D5DE inset, 0px 0px 0px 0px rgba(0, 0, 0, 0); +} +.ui.info.message .header { + color: #0E566C; +} + +/* Warning */ +.ui.warning.message { + background-color: #FFFAF3; + color: #573A08; +} +.ui.warning.message, +.ui.attached.warning.message { + -webkit-box-shadow: 0px 0px 0px 1px #C9BA9B inset, 0px 0px 0px 0px rgba(0, 0, 0, 0); + box-shadow: 0px 0px 0px 1px #C9BA9B inset, 0px 0px 0px 0px rgba(0, 0, 0, 0); +} +.ui.warning.message .header { + color: #794B02; +} + +/* Error */ +.ui.error.message { + background-color: #FFF6F6; + color: #9F3A38; +} +.ui.error.message, +.ui.attached.error.message { + -webkit-box-shadow: 0px 0px 0px 1px #E0B4B4 inset, 0px 0px 0px 0px rgba(0, 0, 0, 0); + box-shadow: 0px 0px 0px 1px #E0B4B4 inset, 0px 0px 0px 0px rgba(0, 0, 0, 0); +} +.ui.error.message .header { + color: #912D2B; +} + +/* Success */ +.ui.success.message { + background-color: #FCFFF5; + color: #2C662D; +} +.ui.success.message, +.ui.attached.success.message { + -webkit-box-shadow: 0px 0px 0px 1px #A3C293 inset, 0px 0px 0px 0px rgba(0, 0, 0, 0); + box-shadow: 0px 0px 0px 1px #A3C293 inset, 0px 0px 0px 0px rgba(0, 0, 0, 0); +} +.ui.success.message .header { + color: #1A531B; +} + +/* Colors */ +.ui.inverted.message, +.ui.black.message { + background-color: #1B1C1D; + color: rgba(255, 255, 255, 0.9); +} +.ui.red.message { + background-color: #FFE8E6; + color: #DB2828; + -webkit-box-shadow: 0px 0px 0px 1px #DB2828 inset, 0px 0px 0px 0px rgba(0, 0, 0, 0); + box-shadow: 0px 0px 0px 1px #DB2828 inset, 0px 0px 0px 0px rgba(0, 0, 0, 0); +} +.ui.red.message .header { + color: #c82121; +} +.ui.orange.message { + background-color: #FFEDDE; + color: #F2711C; + -webkit-box-shadow: 0px 0px 0px 1px #F2711C inset, 0px 0px 0px 0px rgba(0, 0, 0, 0); + box-shadow: 0px 0px 0px 1px #F2711C inset, 0px 0px 0px 0px rgba(0, 0, 0, 0); +} +.ui.orange.message .header { + color: #e7640d; +} +.ui.yellow.message { + background-color: #FFF8DB; + color: #B58105; + -webkit-box-shadow: 0px 0px 0px 1px #B58105 inset, 0px 0px 0px 0px rgba(0, 0, 0, 0); + box-shadow: 0px 0px 0px 1px #B58105 inset, 0px 0px 0px 0px rgba(0, 0, 0, 0); +} +.ui.yellow.message .header { + color: #9c6f04; +} +.ui.olive.message { + background-color: #FBFDEF; + color: #8ABC1E; + -webkit-box-shadow: 0px 0px 0px 1px #8ABC1E inset, 0px 0px 0px 0px rgba(0, 0, 0, 0); + box-shadow: 0px 0px 0px 1px #8ABC1E inset, 0px 0px 0px 0px rgba(0, 0, 0, 0); +} +.ui.olive.message .header { + color: #7aa61a; +} +.ui.green.message { + background-color: #E5F9E7; + color: #1EBC30; + -webkit-box-shadow: 0px 0px 0px 1px #1EBC30 inset, 0px 0px 0px 0px rgba(0, 0, 0, 0); + box-shadow: 0px 0px 0px 1px #1EBC30 inset, 0px 0px 0px 0px rgba(0, 0, 0, 0); +} +.ui.green.message .header { + color: #1aa62a; +} +.ui.teal.message { + background-color: #E1F7F7; + color: #10A3A3; + -webkit-box-shadow: 0px 0px 0px 1px #10A3A3 inset, 0px 0px 0px 0px rgba(0, 0, 0, 0); + box-shadow: 0px 0px 0px 1px #10A3A3 inset, 0px 0px 0px 0px rgba(0, 0, 0, 0); +} +.ui.teal.message .header { + color: #0e8c8c; +} +.ui.blue.message { + background-color: #DFF0FF; + color: #2185D0; + -webkit-box-shadow: 0px 0px 0px 1px #2185D0 inset, 0px 0px 0px 0px rgba(0, 0, 0, 0); + box-shadow: 0px 0px 0px 1px #2185D0 inset, 0px 0px 0px 0px rgba(0, 0, 0, 0); +} +.ui.blue.message .header { + color: #1e77ba; +} +.ui.violet.message { + background-color: #EAE7FF; + color: #6435C9; + -webkit-box-shadow: 0px 0px 0px 1px #6435C9 inset, 0px 0px 0px 0px rgba(0, 0, 0, 0); + box-shadow: 0px 0px 0px 1px #6435C9 inset, 0px 0px 0px 0px rgba(0, 0, 0, 0); +} +.ui.violet.message .header { + color: #5a30b5; +} +.ui.purple.message { + background-color: #F6E7FF; + color: #A333C8; + -webkit-box-shadow: 0px 0px 0px 1px #A333C8 inset, 0px 0px 0px 0px rgba(0, 0, 0, 0); + box-shadow: 0px 0px 0px 1px #A333C8 inset, 0px 0px 0px 0px rgba(0, 0, 0, 0); +} +.ui.purple.message .header { + color: #922eb4; +} +.ui.pink.message { + background-color: #FFE3FB; + color: #E03997; + -webkit-box-shadow: 0px 0px 0px 1px #E03997 inset, 0px 0px 0px 0px rgba(0, 0, 0, 0); + box-shadow: 0px 0px 0px 1px #E03997 inset, 0px 0px 0px 0px rgba(0, 0, 0, 0); +} +.ui.pink.message .header { + color: #dd238b; +} +.ui.brown.message { + background-color: #F1E2D3; + color: #A5673F; + -webkit-box-shadow: 0px 0px 0px 1px #A5673F inset, 0px 0px 0px 0px rgba(0, 0, 0, 0); + box-shadow: 0px 0px 0px 1px #A5673F inset, 0px 0px 0px 0px rgba(0, 0, 0, 0); +} +.ui.brown.message .header { + color: #935b38; +} + +/*-------------- + Sizes +---------------*/ + +.ui.mini.message { + font-size: 0.78571429em; +} +.ui.tiny.message { + font-size: 0.85714286em; +} +.ui.small.message { + font-size: 0.92857143em; +} +.ui.message { + font-size: 1em; +} +.ui.large.message { + font-size: 1.14285714em; +} +.ui.big.message { + font-size: 1.28571429em; +} +.ui.huge.message { + font-size: 1.42857143em; +} +.ui.massive.message { + font-size: 1.71428571em; +} + + +/******************************* + Theme Overrides +*******************************/ + + + +/******************************* + Site Overrides +*******************************/ + diff --git a/app/static/semantic/components/message.min.css b/app/static/semantic/components/message.min.css new file mode 100755 index 0000000..3828a9f --- /dev/null +++ b/app/static/semantic/components/message.min.css @@ -0,0 +1,9 @@ +/*! + * # Semantic UI 2.4.1 - Message + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */.ui.message{position:relative;min-height:1em;margin:1em 0;background:#f8f8f9;padding:1em 1.5em;line-height:1.4285em;color:rgba(0,0,0,.87);-webkit-transition:opacity .1s ease,color .1s ease,background .1s ease,-webkit-box-shadow .1s ease;transition:opacity .1s ease,color .1s ease,background .1s ease,-webkit-box-shadow .1s ease;transition:opacity .1s ease,color .1s ease,background .1s ease,box-shadow .1s ease;transition:opacity .1s ease,color .1s ease,background .1s ease,box-shadow .1s ease,-webkit-box-shadow .1s ease;border-radius:.28571429rem;-webkit-box-shadow:0 0 0 1px rgba(34,36,38,.22) inset,0 0 0 0 transparent;box-shadow:0 0 0 1px rgba(34,36,38,.22) inset,0 0 0 0 transparent}.ui.message:first-child{margin-top:0}.ui.message:last-child{margin-bottom:0}.ui.message .header{display:block;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-weight:700;margin:-.14285714em 0 0 0}.ui.message .header:not(.ui){font-size:1.14285714em}.ui.message p{opacity:.85;margin:.75em 0}.ui.message p:first-child{margin-top:0}.ui.message p:last-child{margin-bottom:0}.ui.message .header+p{margin-top:.25em}.ui.message .list:not(.ui){text-align:left;padding:0;opacity:.85;list-style-position:inside;margin:.5em 0 0}.ui.message .list:not(.ui):first-child{margin-top:0}.ui.message .list:not(.ui):last-child{margin-bottom:0}.ui.message .list:not(.ui) li{position:relative;list-style-type:none;margin:0 0 .3em 1em;padding:0}.ui.message .list:not(.ui) li:before{position:absolute;content:'•';left:-1em;height:100%;vertical-align:baseline}.ui.message .list:not(.ui) li:last-child{margin-bottom:0}.ui.message>.icon{margin-right:.6em}.ui.message>.close.icon{cursor:pointer;position:absolute;margin:0;top:.78575em;right:.5em;opacity:.7;-webkit-transition:opacity .1s ease;transition:opacity .1s ease}.ui.message>.close.icon:hover{opacity:1}.ui.message>:first-child{margin-top:0}.ui.message>:last-child{margin-bottom:0}.ui.dropdown .menu>.message{margin:0 -1px}.ui.visible.visible.visible.visible.message{display:block}.ui.icon.visible.visible.visible.visible.message{display:-webkit-box;display:-ms-flexbox;display:flex}.ui.hidden.hidden.hidden.hidden.message{display:none}.ui.compact.message{display:inline-block}.ui.compact.icon.message{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.ui.attached.message{margin-bottom:-1px;border-radius:.28571429rem .28571429rem 0 0;-webkit-box-shadow:0 0 0 1px rgba(34,36,38,.15) inset;box-shadow:0 0 0 1px rgba(34,36,38,.15) inset;margin-left:-1px;margin-right:-1px}.ui.attached+.ui.attached.message:not(.top):not(.bottom){margin-top:-1px;border-radius:0}.ui.bottom.attached.message{margin-top:-1px;border-radius:0 0 .28571429rem .28571429rem;-webkit-box-shadow:0 0 0 1px rgba(34,36,38,.15) inset,0 1px 2px 0 rgba(34,36,38,.15);box-shadow:0 0 0 1px rgba(34,36,38,.15) inset,0 1px 2px 0 rgba(34,36,38,.15)}.ui.bottom.attached.message:not(:last-child){margin-bottom:1em}.ui.attached.icon.message{width:auto}.ui.icon.message{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.ui.icon.message>.icon:not(.close){display:block;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;line-height:1;vertical-align:middle;font-size:3em;opacity:.8}.ui.icon.message>.content{display:block;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;vertical-align:middle}.ui.icon.message .icon:not(.close)+.content{padding-left:0}.ui.icon.message .circular.icon{width:1em}.ui.floating.message{-webkit-box-shadow:0 0 0 1px rgba(34,36,38,.22) inset,0 2px 4px 0 rgba(34,36,38,.12),0 2px 10px 0 rgba(34,36,38,.15);box-shadow:0 0 0 1px rgba(34,36,38,.22) inset,0 2px 4px 0 rgba(34,36,38,.12),0 2px 10px 0 rgba(34,36,38,.15)}.ui.black.message{background-color:#1b1c1d;color:rgba(255,255,255,.9)}.ui.positive.message{background-color:#fcfff5;color:#2c662d}.ui.attached.positive.message,.ui.positive.message{-webkit-box-shadow:0 0 0 1px #a3c293 inset,0 0 0 0 transparent;box-shadow:0 0 0 1px #a3c293 inset,0 0 0 0 transparent}.ui.positive.message .header{color:#1a531b}.ui.negative.message{background-color:#fff6f6;color:#9f3a38}.ui.attached.negative.message,.ui.negative.message{-webkit-box-shadow:0 0 0 1px #e0b4b4 inset,0 0 0 0 transparent;box-shadow:0 0 0 1px #e0b4b4 inset,0 0 0 0 transparent}.ui.negative.message .header{color:#912d2b}.ui.info.message{background-color:#f8ffff;color:#276f86}.ui.attached.info.message,.ui.info.message{-webkit-box-shadow:0 0 0 1px #a9d5de inset,0 0 0 0 transparent;box-shadow:0 0 0 1px #a9d5de inset,0 0 0 0 transparent}.ui.info.message .header{color:#0e566c}.ui.warning.message{background-color:#fffaf3;color:#573a08}.ui.attached.warning.message,.ui.warning.message{-webkit-box-shadow:0 0 0 1px #c9ba9b inset,0 0 0 0 transparent;box-shadow:0 0 0 1px #c9ba9b inset,0 0 0 0 transparent}.ui.warning.message .header{color:#794b02}.ui.error.message{background-color:#fff6f6;color:#9f3a38}.ui.attached.error.message,.ui.error.message{-webkit-box-shadow:0 0 0 1px #e0b4b4 inset,0 0 0 0 transparent;box-shadow:0 0 0 1px #e0b4b4 inset,0 0 0 0 transparent}.ui.error.message .header{color:#912d2b}.ui.success.message{background-color:#fcfff5;color:#2c662d}.ui.attached.success.message,.ui.success.message{-webkit-box-shadow:0 0 0 1px #a3c293 inset,0 0 0 0 transparent;box-shadow:0 0 0 1px #a3c293 inset,0 0 0 0 transparent}.ui.success.message .header{color:#1a531b}.ui.black.message,.ui.inverted.message{background-color:#1b1c1d;color:rgba(255,255,255,.9)}.ui.red.message{background-color:#ffe8e6;color:#db2828;-webkit-box-shadow:0 0 0 1px #db2828 inset,0 0 0 0 transparent;box-shadow:0 0 0 1px #db2828 inset,0 0 0 0 transparent}.ui.red.message .header{color:#c82121}.ui.orange.message{background-color:#ffedde;color:#f2711c;-webkit-box-shadow:0 0 0 1px #f2711c inset,0 0 0 0 transparent;box-shadow:0 0 0 1px #f2711c inset,0 0 0 0 transparent}.ui.orange.message .header{color:#e7640d}.ui.yellow.message{background-color:#fff8db;color:#b58105;-webkit-box-shadow:0 0 0 1px #b58105 inset,0 0 0 0 transparent;box-shadow:0 0 0 1px #b58105 inset,0 0 0 0 transparent}.ui.yellow.message .header{color:#9c6f04}.ui.olive.message{background-color:#fbfdef;color:#8abc1e;-webkit-box-shadow:0 0 0 1px #8abc1e inset,0 0 0 0 transparent;box-shadow:0 0 0 1px #8abc1e inset,0 0 0 0 transparent}.ui.olive.message .header{color:#7aa61a}.ui.green.message{background-color:#e5f9e7;color:#1ebc30;-webkit-box-shadow:0 0 0 1px #1ebc30 inset,0 0 0 0 transparent;box-shadow:0 0 0 1px #1ebc30 inset,0 0 0 0 transparent}.ui.green.message .header{color:#1aa62a}.ui.teal.message{background-color:#e1f7f7;color:#10a3a3;-webkit-box-shadow:0 0 0 1px #10a3a3 inset,0 0 0 0 transparent;box-shadow:0 0 0 1px #10a3a3 inset,0 0 0 0 transparent}.ui.teal.message .header{color:#0e8c8c}.ui.blue.message{background-color:#dff0ff;color:#2185d0;-webkit-box-shadow:0 0 0 1px #2185d0 inset,0 0 0 0 transparent;box-shadow:0 0 0 1px #2185d0 inset,0 0 0 0 transparent}.ui.blue.message .header{color:#1e77ba}.ui.violet.message{background-color:#eae7ff;color:#6435c9;-webkit-box-shadow:0 0 0 1px #6435c9 inset,0 0 0 0 transparent;box-shadow:0 0 0 1px #6435c9 inset,0 0 0 0 transparent}.ui.violet.message .header{color:#5a30b5}.ui.purple.message{background-color:#f6e7ff;color:#a333c8;-webkit-box-shadow:0 0 0 1px #a333c8 inset,0 0 0 0 transparent;box-shadow:0 0 0 1px #a333c8 inset,0 0 0 0 transparent}.ui.purple.message .header{color:#922eb4}.ui.pink.message{background-color:#ffe3fb;color:#e03997;-webkit-box-shadow:0 0 0 1px #e03997 inset,0 0 0 0 transparent;box-shadow:0 0 0 1px #e03997 inset,0 0 0 0 transparent}.ui.pink.message .header{color:#dd238b}.ui.brown.message{background-color:#f1e2d3;color:#a5673f;-webkit-box-shadow:0 0 0 1px #a5673f inset,0 0 0 0 transparent;box-shadow:0 0 0 1px #a5673f inset,0 0 0 0 transparent}.ui.brown.message .header{color:#935b38}.ui.mini.message{font-size:.78571429em}.ui.tiny.message{font-size:.85714286em}.ui.small.message{font-size:.92857143em}.ui.message{font-size:1em}.ui.large.message{font-size:1.14285714em}.ui.big.message{font-size:1.28571429em}.ui.huge.message{font-size:1.42857143em}.ui.massive.message{font-size:1.71428571em} \ No newline at end of file diff --git a/app/static/semantic/components/modal.css b/app/static/semantic/components/modal.css new file mode 100755 index 0000000..f9d8357 --- /dev/null +++ b/app/static/semantic/components/modal.css @@ -0,0 +1,619 @@ +/*! + * # Semantic UI 2.4.0 - Modal + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */ + + +/******************************* + Modal +*******************************/ + +.ui.modal { + position: absolute; + display: none; + z-index: 1001; + text-align: left; + background: #FFFFFF; + border: none; + -webkit-box-shadow: 1px 3px 3px 0px rgba(0, 0, 0, 0.2), 1px 3px 15px 2px rgba(0, 0, 0, 0.2); + box-shadow: 1px 3px 3px 0px rgba(0, 0, 0, 0.2), 1px 3px 15px 2px rgba(0, 0, 0, 0.2); + -webkit-transform-origin: 50% 25%; + transform-origin: 50% 25%; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + border-radius: 0.28571429rem; + -webkit-user-select: text; + -moz-user-select: text; + -ms-user-select: text; + user-select: text; + will-change: top, left, margin, transform, opacity; +} +.ui.modal > :first-child:not(.icon), +.ui.modal > .icon:first-child + * { + border-top-left-radius: 0.28571429rem; + border-top-right-radius: 0.28571429rem; +} +.ui.modal > :last-child { + border-bottom-left-radius: 0.28571429rem; + border-bottom-right-radius: 0.28571429rem; +} + + +/******************************* + Content +*******************************/ + + +/*-------------- + Close +---------------*/ + +.ui.modal > .close { + cursor: pointer; + position: absolute; + top: -2.5rem; + right: -2.5rem; + z-index: 1; + opacity: 0.8; + font-size: 1.25em; + color: #FFFFFF; + width: 2.25rem; + height: 2.25rem; + padding: 0.625rem 0rem 0rem 0rem; +} +.ui.modal > .close:hover { + opacity: 1; +} + +/*-------------- + Header +---------------*/ + +.ui.modal > .header { + display: block; + font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif; + background: #FFFFFF; + margin: 0em; + padding: 1.25rem 1.5rem; + -webkit-box-shadow: none; + box-shadow: none; + color: rgba(0, 0, 0, 0.85); + border-bottom: 1px solid rgba(34, 36, 38, 0.15); +} +.ui.modal > .header:not(.ui) { + font-size: 1.42857143rem; + line-height: 1.28571429em; + font-weight: bold; +} + +/*-------------- + Content +---------------*/ + +.ui.modal > .content { + display: block; + width: 100%; + font-size: 1em; + line-height: 1.4; + padding: 1.5rem; + background: #FFFFFF; +} +.ui.modal > .image.content { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; +} + +/* Image */ +.ui.modal > .content > .image { + display: block; + -webkit-box-flex: 0; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + width: ''; + -ms-flex-item-align: top; + align-self: top; +} +.ui.modal > [class*="top aligned"] { + -ms-flex-item-align: top; + align-self: top; +} +.ui.modal > [class*="middle aligned"] { + -ms-flex-item-align: middle; + align-self: middle; +} +.ui.modal > [class*="stretched"] { + -ms-flex-item-align: stretch; + align-self: stretch; +} + +/* Description */ +.ui.modal > .content > .description { + display: block; + -webkit-box-flex: 1; + -ms-flex: 1 0 auto; + flex: 1 0 auto; + min-width: 0px; + -ms-flex-item-align: top; + align-self: top; +} +.ui.modal > .content > .icon + .description, +.ui.modal > .content > .image + .description { + -webkit-box-flex: 0; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + min-width: ''; + width: auto; + padding-left: 2em; +} +/*rtl:ignore*/ +.ui.modal > .content > .image > i.icon { + margin: 0em; + opacity: 1; + width: auto; + line-height: 1; + font-size: 8rem; +} + +/*-------------- + Actions +---------------*/ + +.ui.modal > .actions { + background: #F9FAFB; + padding: 1rem 1rem; + border-top: 1px solid rgba(34, 36, 38, 0.15); + text-align: right; +} +.ui.modal .actions > .button { + margin-left: 0.75em; +} + +/*------------------- + Responsive +--------------------*/ + + +/* Modal Width */ +@media only screen and (max-width: 767px) { + .ui.modal { + width: 95%; + margin: 0em 0em 0em 0em; + } +} +@media only screen and (min-width: 768px) { + .ui.modal { + width: 88%; + margin: 0em 0em 0em 0em; + } +} +@media only screen and (min-width: 992px) { + .ui.modal { + width: 850px; + margin: 0em 0em 0em 0em; + } +} +@media only screen and (min-width: 1200px) { + .ui.modal { + width: 900px; + margin: 0em 0em 0em 0em; + } +} +@media only screen and (min-width: 1920px) { + .ui.modal { + width: 950px; + margin: 0em 0em 0em 0em; + } +} + +/* Tablet and Mobile */ +@media only screen and (max-width: 991px) { + .ui.modal > .header { + padding-right: 2.25rem; + } + .ui.modal > .close { + top: 1.0535rem; + right: 1rem; + color: rgba(0, 0, 0, 0.87); + } +} + +/* Mobile */ +@media only screen and (max-width: 767px) { + .ui.modal > .header { + padding: 0.75rem 1rem !important; + padding-right: 2.25rem !important; + } + .ui.modal > .content { + display: block; + padding: 1rem !important; + } + .ui.modal > .close { + top: 0.5rem !important; + right: 0.5rem !important; + } + /*rtl:ignore*/ + .ui.modal .image.content { + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + } + .ui.modal .content > .image { + display: block; + max-width: 100%; + margin: 0em auto !important; + text-align: center; + padding: 0rem 0rem 1rem !important; + } + .ui.modal > .content > .image > i.icon { + font-size: 5rem; + text-align: center; + } + /*rtl:ignore*/ + .ui.modal .content > .description { + display: block; + width: 100% !important; + margin: 0em !important; + padding: 1rem 0rem !important; + -webkit-box-shadow: none; + box-shadow: none; + } + +/* Let Buttons Stack */ + .ui.modal > .actions { + padding: 1rem 1rem 0rem !important; + } + .ui.modal .actions > .buttons, + .ui.modal .actions > .button { + margin-bottom: 1rem; + } +} + +/*-------------- + Coupling +---------------*/ + +.ui.inverted.dimmer > .ui.modal { + -webkit-box-shadow: 1px 3px 10px 2px rgba(0, 0, 0, 0.2); + box-shadow: 1px 3px 10px 2px rgba(0, 0, 0, 0.2); +} + + +/******************************* + Types +*******************************/ + +.ui.basic.modal { + background-color: transparent; + border: none; + border-radius: 0em; + -webkit-box-shadow: none !important; + box-shadow: none !important; + color: #FFFFFF; +} +.ui.basic.modal > .header, +.ui.basic.modal > .content, +.ui.basic.modal > .actions { + background-color: transparent; +} +.ui.basic.modal > .header { + color: #FFFFFF; +} +.ui.basic.modal > .close { + top: 1rem; + right: 1.5rem; +} +.ui.inverted.dimmer > .basic.modal { + color: rgba(0, 0, 0, 0.87); +} +.ui.inverted.dimmer > .ui.basic.modal > .header { + color: rgba(0, 0, 0, 0.85); +} + +/* Resort to margin positioning if legacy */ +.ui.legacy.modal, +.ui.legacy.page.dimmer > .ui.modal { + top: 50%; + left: 50%; +} +.ui.legacy.page.dimmer > .ui.scrolling.modal, +.ui.page.dimmer > .ui.scrolling.legacy.modal, +.ui.top.aligned.legacy.page.dimmer > .ui.modal, +.ui.top.aligned.dimmer > .ui.legacy.modal { + top: auto; +} + +/* Tablet and Mobile */ +@media only screen and (max-width: 991px) { + .ui.basic.modal > .close { + color: #FFFFFF; + } +} + + +/******************************* + States +*******************************/ + +.ui.loading.modal { + display: block; + visibility: hidden; + z-index: -1; +} +.ui.active.modal { + display: block; +} + + +/******************************* + Variations +*******************************/ + + +/*-------------- + Top Aligned +---------------*/ + + +/* Top Aligned Modal */ +.modals.dimmer[class*="top aligned"] .modal { + margin: 5vh auto; +} +@media only screen and (max-width: 767px) { + .modals.dimmer[class*="top aligned"] .modal { + margin: 1rem auto; + } +} + +/* Legacy Top Aligned */ +.legacy.modals.dimmer[class*="top aligned"] { + padding-top: 5vh; +} +@media only screen and (max-width: 767px) { + .legacy.modals.dimmer[class*="top aligned"] { + padding-top: 1rem; + } +} + +/*-------------- + Scrolling +---------------*/ + + +/* Scrolling Dimmer */ +.scrolling.dimmable.dimmed { + overflow: hidden; +} +.scrolling.dimmable > .dimmer { + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; +} +.scrolling.dimmable.dimmed > .dimmer { + overflow: auto; + -webkit-overflow-scrolling: touch; +} +.scrolling.dimmable > .dimmer { + position: fixed; +} +.modals.dimmer .ui.scrolling.modal { + margin: 1rem auto; +} + +/* Undetached Scrolling */ +.scrolling.undetached.dimmable.dimmed { + overflow: auto; + -webkit-overflow-scrolling: touch; +} +.scrolling.undetached.dimmable.dimmed > .dimmer { + overflow: hidden; +} +.scrolling.undetached.dimmable .ui.scrolling.modal { + position: absolute; + left: 50%; + margin-top: 1rem !important; +} + +/* Scrolling Content */ +.ui.modal .scrolling.content { + max-height: calc(70vh); + overflow: auto; +} + +/*-------------- + Full Screen +---------------*/ + +.ui.fullscreen.modal { + width: 95% !important; + left: 0em !important; + margin: 1em auto; +} +.ui.fullscreen.scrolling.modal { + left: 0em !important; +} +.ui.fullscreen.modal > .header { + padding-right: 2.25rem; +} +.ui.fullscreen.modal > .close { + top: 1.0535rem; + right: 1rem; + color: rgba(0, 0, 0, 0.87); +} + +/*-------------- + Size +---------------*/ + +.ui.modal { + font-size: 1rem; +} + +/* Mini */ +.ui.mini.modal > .header:not(.ui) { + font-size: 1.3em; +} + +/* Mini Modal Width */ +@media only screen and (max-width: 767px) { + .ui.mini.modal { + width: 95%; + margin: 0em 0em 0em 0em; + } +} +@media only screen and (min-width: 768px) { + .ui.mini.modal { + width: 35.2%; + margin: 0em 0em 0em 0em; + } +} +@media only screen and (min-width: 992px) { + .ui.mini.modal { + width: 340px; + margin: 0em 0em 0em 0em; + } +} +@media only screen and (min-width: 1200px) { + .ui.mini.modal { + width: 360px; + margin: 0em 0em 0em 0em; + } +} +@media only screen and (min-width: 1920px) { + .ui.mini.modal { + width: 380px; + margin: 0em 0em 0em 0em; + } +} + +/* mini */ +.ui.small.modal > .header:not(.ui) { + font-size: 1.3em; +} + +/* Tiny Modal Width */ +@media only screen and (max-width: 767px) { + .ui.tiny.modal { + width: 95%; + margin: 0em 0em 0em 0em; + } +} +@media only screen and (min-width: 768px) { + .ui.tiny.modal { + width: 52.8%; + margin: 0em 0em 0em 0em; + } +} +@media only screen and (min-width: 992px) { + .ui.tiny.modal { + width: 510px; + margin: 0em 0em 0em 0em; + } +} +@media only screen and (min-width: 1200px) { + .ui.tiny.modal { + width: 540px; + margin: 0em 0em 0em 0em; + } +} +@media only screen and (min-width: 1920px) { + .ui.tiny.modal { + width: 570px; + margin: 0em 0em 0em 0em; + } +} + +/* Small */ +.ui.small.modal > .header:not(.ui) { + font-size: 1.3em; +} + +/* Small Modal Width */ +@media only screen and (max-width: 767px) { + .ui.small.modal { + width: 95%; + margin: 0em 0em 0em 0em; + } +} +@media only screen and (min-width: 768px) { + .ui.small.modal { + width: 70.4%; + margin: 0em 0em 0em 0em; + } +} +@media only screen and (min-width: 992px) { + .ui.small.modal { + width: 680px; + margin: 0em 0em 0em 0em; + } +} +@media only screen and (min-width: 1200px) { + .ui.small.modal { + width: 720px; + margin: 0em 0em 0em 0em; + } +} +@media only screen and (min-width: 1920px) { + .ui.small.modal { + width: 760px; + margin: 0em 0em 0em 0em; + } +} + +/* Large Modal Width */ +.ui.large.modal > .header { + font-size: 1.6em; +} +@media only screen and (max-width: 767px) { + .ui.large.modal { + width: 95%; + margin: 0em 0em 0em 0em; + } +} +@media only screen and (min-width: 768px) { + .ui.large.modal { + width: 88%; + margin: 0em 0em 0em 0em; + } +} +@media only screen and (min-width: 992px) { + .ui.large.modal { + width: 1020px; + margin: 0em 0em 0em 0em; + } +} +@media only screen and (min-width: 1200px) { + .ui.large.modal { + width: 1080px; + margin: 0em 0em 0em 0em; + } +} +@media only screen and (min-width: 1920px) { + .ui.large.modal { + width: 1140px; + margin: 0em 0em 0em 0em; + } +} + + +/******************************* + Theme Overrides +*******************************/ + + + +/******************************* + Site Overrides +*******************************/ + diff --git a/app/static/semantic/components/modal.js b/app/static/semantic/components/modal.js new file mode 100755 index 0000000..febc7cd --- /dev/null +++ b/app/static/semantic/components/modal.js @@ -0,0 +1,1034 @@ +/*! + * # Semantic UI 2.4.1 - Modal + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */ + +;(function ($, window, document, undefined) { + +'use strict'; + +window = (typeof window != 'undefined' && window.Math == Math) + ? window + : (typeof self != 'undefined' && self.Math == Math) + ? self + : Function('return this')() +; + +$.fn.modal = function(parameters) { + var + $allModules = $(this), + $window = $(window), + $document = $(document), + $body = $('body'), + + moduleSelector = $allModules.selector || '', + + time = new Date().getTime(), + performance = [], + + query = arguments[0], + methodInvoked = (typeof query == 'string'), + queryArguments = [].slice.call(arguments, 1), + + requestAnimationFrame = window.requestAnimationFrame + || window.mozRequestAnimationFrame + || window.webkitRequestAnimationFrame + || window.msRequestAnimationFrame + || function(callback) { setTimeout(callback, 0); }, + + returnedValue + ; + + $allModules + .each(function() { + var + settings = ( $.isPlainObject(parameters) ) + ? $.extend(true, {}, $.fn.modal.settings, parameters) + : $.extend({}, $.fn.modal.settings), + + selector = settings.selector, + className = settings.className, + namespace = settings.namespace, + error = settings.error, + + eventNamespace = '.' + namespace, + moduleNamespace = 'module-' + namespace, + + $module = $(this), + $context = $(settings.context), + $close = $module.find(selector.close), + + $allModals, + $otherModals, + $focusedElement, + $dimmable, + $dimmer, + + element = this, + instance = $module.data(moduleNamespace), + + ignoreRepeatedEvents = false, + + elementEventNamespace, + id, + observer, + module + ; + module = { + + initialize: function() { + module.verbose('Initializing dimmer', $context); + + module.create.id(); + module.create.dimmer(); + module.refreshModals(); + + module.bind.events(); + if(settings.observeChanges) { + module.observeChanges(); + } + module.instantiate(); + }, + + instantiate: function() { + module.verbose('Storing instance of modal'); + instance = module; + $module + .data(moduleNamespace, instance) + ; + }, + + create: { + dimmer: function() { + var + defaultSettings = { + debug : settings.debug, + variation : settings.centered + ? false + : 'top aligned', + dimmerName : 'modals' + }, + dimmerSettings = $.extend(true, defaultSettings, settings.dimmerSettings) + ; + if($.fn.dimmer === undefined) { + module.error(error.dimmer); + return; + } + module.debug('Creating dimmer'); + $dimmable = $context.dimmer(dimmerSettings); + if(settings.detachable) { + module.verbose('Modal is detachable, moving content into dimmer'); + $dimmable.dimmer('add content', $module); + } + else { + module.set.undetached(); + } + $dimmer = $dimmable.dimmer('get dimmer'); + }, + id: function() { + id = (Math.random().toString(16) + '000000000').substr(2, 8); + elementEventNamespace = '.' + id; + module.verbose('Creating unique id for element', id); + } + }, + + destroy: function() { + module.verbose('Destroying previous modal'); + $module + .removeData(moduleNamespace) + .off(eventNamespace) + ; + $window.off(elementEventNamespace); + $dimmer.off(elementEventNamespace); + $close.off(eventNamespace); + $context.dimmer('destroy'); + }, + + observeChanges: function() { + if('MutationObserver' in window) { + observer = new MutationObserver(function(mutations) { + module.debug('DOM tree modified, refreshing'); + module.refresh(); + }); + observer.observe(element, { + childList : true, + subtree : true + }); + module.debug('Setting up mutation observer', observer); + } + }, + + refresh: function() { + module.remove.scrolling(); + module.cacheSizes(); + if(!module.can.useFlex()) { + module.set.modalOffset(); + } + module.set.screenHeight(); + module.set.type(); + }, + + refreshModals: function() { + $otherModals = $module.siblings(selector.modal); + $allModals = $otherModals.add($module); + }, + + attachEvents: function(selector, event) { + var + $toggle = $(selector) + ; + event = $.isFunction(module[event]) + ? module[event] + : module.toggle + ; + if($toggle.length > 0) { + module.debug('Attaching modal events to element', selector, event); + $toggle + .off(eventNamespace) + .on('click' + eventNamespace, event) + ; + } + else { + module.error(error.notFound, selector); + } + }, + + bind: { + events: function() { + module.verbose('Attaching events'); + $module + .on('click' + eventNamespace, selector.close, module.event.close) + .on('click' + eventNamespace, selector.approve, module.event.approve) + .on('click' + eventNamespace, selector.deny, module.event.deny) + ; + $window + .on('resize' + elementEventNamespace, module.event.resize) + ; + }, + scrollLock: function() { + // touch events default to passive, due to changes in chrome to optimize mobile perf + $dimmable.get(0).addEventListener('touchmove', module.event.preventScroll, { passive: false }); + } + }, + + unbind: { + scrollLock: function() { + $dimmable.get(0).removeEventListener('touchmove', module.event.preventScroll, { passive: false }); + } + }, + + get: { + id: function() { + return (Math.random().toString(16) + '000000000').substr(2, 8); + } + }, + + event: { + approve: function() { + if(ignoreRepeatedEvents || settings.onApprove.call(element, $(this)) === false) { + module.verbose('Approve callback returned false cancelling hide'); + return; + } + ignoreRepeatedEvents = true; + module.hide(function() { + ignoreRepeatedEvents = false; + }); + }, + preventScroll: function(event) { + event.preventDefault(); + }, + deny: function() { + if(ignoreRepeatedEvents || settings.onDeny.call(element, $(this)) === false) { + module.verbose('Deny callback returned false cancelling hide'); + return; + } + ignoreRepeatedEvents = true; + module.hide(function() { + ignoreRepeatedEvents = false; + }); + }, + close: function() { + module.hide(); + }, + click: function(event) { + if(!settings.closable) { + module.verbose('Dimmer clicked but closable setting is disabled'); + return; + } + var + $target = $(event.target), + isInModal = ($target.closest(selector.modal).length > 0), + isInDOM = $.contains(document.documentElement, event.target) + ; + if(!isInModal && isInDOM && module.is.active()) { + module.debug('Dimmer clicked, hiding all modals'); + module.remove.clickaway(); + if(settings.allowMultiple) { + module.hide(); + } + else { + module.hideAll(); + } + } + }, + debounce: function(method, delay) { + clearTimeout(module.timer); + module.timer = setTimeout(method, delay); + }, + keyboard: function(event) { + var + keyCode = event.which, + escapeKey = 27 + ; + if(keyCode == escapeKey) { + if(settings.closable) { + module.debug('Escape key pressed hiding modal'); + module.hide(); + } + else { + module.debug('Escape key pressed, but closable is set to false'); + } + event.preventDefault(); + } + }, + resize: function() { + if( $dimmable.dimmer('is active') && ( module.is.animating() || module.is.active() ) ) { + requestAnimationFrame(module.refresh); + } + } + }, + + toggle: function() { + if( module.is.active() || module.is.animating() ) { + module.hide(); + } + else { + module.show(); + } + }, + + show: function(callback) { + callback = $.isFunction(callback) + ? callback + : function(){} + ; + module.refreshModals(); + module.set.dimmerSettings(); + module.set.dimmerStyles(); + + module.showModal(callback); + }, + + hide: function(callback) { + callback = $.isFunction(callback) + ? callback + : function(){} + ; + module.refreshModals(); + module.hideModal(callback); + }, + + showModal: function(callback) { + callback = $.isFunction(callback) + ? callback + : function(){} + ; + if( module.is.animating() || !module.is.active() ) { + module.showDimmer(); + module.cacheSizes(); + if(module.can.useFlex()) { + module.remove.legacy(); + } + else { + module.set.legacy(); + module.set.modalOffset(); + module.debug('Using non-flex legacy modal positioning.'); + } + module.set.screenHeight(); + module.set.type(); + module.set.clickaway(); + + if( !settings.allowMultiple && module.others.active() ) { + module.hideOthers(module.showModal); + } + else { + if(settings.allowMultiple && settings.detachable) { + $module.detach().appendTo($dimmer); + } + settings.onShow.call(element); + if(settings.transition && $.fn.transition !== undefined && $module.transition('is supported')) { + module.debug('Showing modal with css animations'); + $module + .transition({ + debug : settings.debug, + animation : settings.transition + ' in', + queue : settings.queue, + duration : settings.duration, + useFailSafe : true, + onComplete : function() { + settings.onVisible.apply(element); + if(settings.keyboardShortcuts) { + module.add.keyboardShortcuts(); + } + module.save.focus(); + module.set.active(); + if(settings.autofocus) { + module.set.autofocus(); + } + callback(); + } + }) + ; + } + else { + module.error(error.noTransition); + } + } + } + else { + module.debug('Modal is already visible'); + } + }, + + hideModal: function(callback, keepDimmed) { + callback = $.isFunction(callback) + ? callback + : function(){} + ; + module.debug('Hiding modal'); + if(settings.onHide.call(element, $(this)) === false) { + module.verbose('Hide callback returned false cancelling hide'); + return; + } + + if( module.is.animating() || module.is.active() ) { + if(settings.transition && $.fn.transition !== undefined && $module.transition('is supported')) { + module.remove.active(); + $module + .transition({ + debug : settings.debug, + animation : settings.transition + ' out', + queue : settings.queue, + duration : settings.duration, + useFailSafe : true, + onStart : function() { + if(!module.others.active() && !keepDimmed) { + module.hideDimmer(); + } + if(settings.keyboardShortcuts) { + module.remove.keyboardShortcuts(); + } + }, + onComplete : function() { + settings.onHidden.call(element); + module.remove.dimmerStyles(); + module.restore.focus(); + callback(); + } + }) + ; + } + else { + module.error(error.noTransition); + } + } + }, + + showDimmer: function() { + if($dimmable.dimmer('is animating') || !$dimmable.dimmer('is active') ) { + module.debug('Showing dimmer'); + $dimmable.dimmer('show'); + } + else { + module.debug('Dimmer already visible'); + } + }, + + hideDimmer: function() { + if( $dimmable.dimmer('is animating') || ($dimmable.dimmer('is active')) ) { + module.unbind.scrollLock(); + $dimmable.dimmer('hide', function() { + module.remove.clickaway(); + module.remove.screenHeight(); + }); + } + else { + module.debug('Dimmer is not visible cannot hide'); + return; + } + }, + + hideAll: function(callback) { + var + $visibleModals = $allModals.filter('.' + className.active + ', .' + className.animating) + ; + callback = $.isFunction(callback) + ? callback + : function(){} + ; + if( $visibleModals.length > 0 ) { + module.debug('Hiding all visible modals'); + module.hideDimmer(); + $visibleModals + .modal('hide modal', callback) + ; + } + }, + + hideOthers: function(callback) { + var + $visibleModals = $otherModals.filter('.' + className.active + ', .' + className.animating) + ; + callback = $.isFunction(callback) + ? callback + : function(){} + ; + if( $visibleModals.length > 0 ) { + module.debug('Hiding other modals', $otherModals); + $visibleModals + .modal('hide modal', callback, true) + ; + } + }, + + others: { + active: function() { + return ($otherModals.filter('.' + className.active).length > 0); + }, + animating: function() { + return ($otherModals.filter('.' + className.animating).length > 0); + } + }, + + + add: { + keyboardShortcuts: function() { + module.verbose('Adding keyboard shortcuts'); + $document + .on('keyup' + eventNamespace, module.event.keyboard) + ; + } + }, + + save: { + focus: function() { + var + $activeElement = $(document.activeElement), + inCurrentModal = $activeElement.closest($module).length > 0 + ; + if(!inCurrentModal) { + $focusedElement = $(document.activeElement).blur(); + } + } + }, + + restore: { + focus: function() { + if($focusedElement && $focusedElement.length > 0) { + $focusedElement.focus(); + } + } + }, + + remove: { + active: function() { + $module.removeClass(className.active); + }, + legacy: function() { + $module.removeClass(className.legacy); + }, + clickaway: function() { + $dimmer + .off('click' + elementEventNamespace) + ; + }, + dimmerStyles: function() { + $dimmer.removeClass(className.inverted); + $dimmable.removeClass(className.blurring); + }, + bodyStyle: function() { + if($body.attr('style') === '') { + module.verbose('Removing style attribute'); + $body.removeAttr('style'); + } + }, + screenHeight: function() { + module.debug('Removing page height'); + $body + .css('height', '') + ; + }, + keyboardShortcuts: function() { + module.verbose('Removing keyboard shortcuts'); + $document + .off('keyup' + eventNamespace) + ; + }, + scrolling: function() { + $dimmable.removeClass(className.scrolling); + $module.removeClass(className.scrolling); + } + }, + + cacheSizes: function() { + $module.addClass(className.loading); + var + scrollHeight = $module.prop('scrollHeight'), + modalWidth = $module.outerWidth(), + modalHeight = $module.outerHeight() + ; + if(module.cache === undefined || modalHeight !== 0) { + module.cache = { + pageHeight : $(document).outerHeight(), + width : modalWidth, + height : modalHeight + settings.offset, + scrollHeight : scrollHeight + settings.offset, + contextHeight : (settings.context == 'body') + ? $(window).height() + : $dimmable.height(), + }; + module.cache.topOffset = -(module.cache.height / 2); + } + $module.removeClass(className.loading); + module.debug('Caching modal and container sizes', module.cache); + }, + + can: { + useFlex: function() { + return (settings.useFlex == 'auto') + ? settings.detachable && !module.is.ie() + : settings.useFlex + ; + }, + fit: function() { + var + contextHeight = module.cache.contextHeight, + verticalCenter = module.cache.contextHeight / 2, + topOffset = module.cache.topOffset, + scrollHeight = module.cache.scrollHeight, + height = module.cache.height, + paddingHeight = settings.padding, + startPosition = (verticalCenter + topOffset) + ; + return (scrollHeight > height) + ? (startPosition + scrollHeight + paddingHeight < contextHeight) + : (height + (paddingHeight * 2) < contextHeight) + ; + } + }, + + is: { + active: function() { + return $module.hasClass(className.active); + }, + ie: function() { + var + isIE11 = (!(window.ActiveXObject) && 'ActiveXObject' in window), + isIE = ('ActiveXObject' in window) + ; + return (isIE11 || isIE); + }, + animating: function() { + return $module.transition('is supported') + ? $module.transition('is animating') + : $module.is(':visible') + ; + }, + scrolling: function() { + return $dimmable.hasClass(className.scrolling); + }, + modernBrowser: function() { + // appName for IE11 reports 'Netscape' can no longer use + return !(window.ActiveXObject || 'ActiveXObject' in window); + } + }, + + set: { + autofocus: function() { + var + $inputs = $module.find('[tabindex], :input').filter(':visible'), + $autofocus = $inputs.filter('[autofocus]'), + $input = ($autofocus.length > 0) + ? $autofocus.first() + : $inputs.first() + ; + if($input.length > 0) { + $input.focus(); + } + }, + clickaway: function() { + $dimmer + .on('click' + elementEventNamespace, module.event.click) + ; + }, + dimmerSettings: function() { + if($.fn.dimmer === undefined) { + module.error(error.dimmer); + return; + } + var + defaultSettings = { + debug : settings.debug, + dimmerName : 'modals', + closable : 'auto', + useFlex : module.can.useFlex(), + variation : settings.centered + ? false + : 'top aligned', + duration : { + show : settings.duration, + hide : settings.duration + } + }, + dimmerSettings = $.extend(true, defaultSettings, settings.dimmerSettings) + ; + if(settings.inverted) { + dimmerSettings.variation = (dimmerSettings.variation !== undefined) + ? dimmerSettings.variation + ' inverted' + : 'inverted' + ; + } + $context.dimmer('setting', dimmerSettings); + }, + dimmerStyles: function() { + if(settings.inverted) { + $dimmer.addClass(className.inverted); + } + else { + $dimmer.removeClass(className.inverted); + } + if(settings.blurring) { + $dimmable.addClass(className.blurring); + } + else { + $dimmable.removeClass(className.blurring); + } + }, + modalOffset: function() { + var + width = module.cache.width, + height = module.cache.height + ; + $module + .css({ + marginTop: (settings.centered && module.can.fit()) + ? -(height / 2) + : 0, + marginLeft: -(width / 2) + }) + ; + module.verbose('Setting modal offset for legacy mode'); + }, + screenHeight: function() { + if( module.can.fit() ) { + $body.css('height', ''); + } + else { + module.debug('Modal is taller than page content, resizing page height'); + $body + .css('height', module.cache.height + (settings.padding * 2) ) + ; + } + }, + active: function() { + $module.addClass(className.active); + }, + scrolling: function() { + $dimmable.addClass(className.scrolling); + $module.addClass(className.scrolling); + module.unbind.scrollLock(); + }, + legacy: function() { + $module.addClass(className.legacy); + }, + type: function() { + if(module.can.fit()) { + module.verbose('Modal fits on screen'); + if(!module.others.active() && !module.others.animating()) { + module.remove.scrolling(); + module.bind.scrollLock(); + } + } + else { + module.verbose('Modal cannot fit on screen setting to scrolling'); + module.set.scrolling(); + } + }, + undetached: function() { + $dimmable.addClass(className.undetached); + } + }, + + setting: function(name, value) { + module.debug('Changing setting', name, value); + if( $.isPlainObject(name) ) { + $.extend(true, settings, name); + } + else if(value !== undefined) { + if($.isPlainObject(settings[name])) { + $.extend(true, settings[name], value); + } + else { + settings[name] = value; + } + } + else { + return settings[name]; + } + }, + internal: function(name, value) { + if( $.isPlainObject(name) ) { + $.extend(true, module, name); + } + else if(value !== undefined) { + module[name] = value; + } + else { + return module[name]; + } + }, + debug: function() { + if(!settings.silent && settings.debug) { + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':'); + module.debug.apply(console, arguments); + } + } + }, + verbose: function() { + if(!settings.silent && settings.verbose && settings.debug) { + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':'); + module.verbose.apply(console, arguments); + } + } + }, + error: function() { + if(!settings.silent) { + module.error = Function.prototype.bind.call(console.error, console, settings.name + ':'); + module.error.apply(console, arguments); + } + }, + performance: { + log: function(message) { + var + currentTime, + executionTime, + previousTime + ; + if(settings.performance) { + currentTime = new Date().getTime(); + previousTime = time || currentTime; + executionTime = currentTime - previousTime; + time = currentTime; + performance.push({ + 'Name' : message[0], + 'Arguments' : [].slice.call(message, 1) || '', + 'Element' : element, + 'Execution Time' : executionTime + }); + } + clearTimeout(module.performance.timer); + module.performance.timer = setTimeout(module.performance.display, 500); + }, + display: function() { + var + title = settings.name + ':', + totalTime = 0 + ; + time = false; + clearTimeout(module.performance.timer); + $.each(performance, function(index, data) { + totalTime += data['Execution Time']; + }); + title += ' ' + totalTime + 'ms'; + if(moduleSelector) { + title += ' \'' + moduleSelector + '\''; + } + if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { + console.groupCollapsed(title); + if(console.table) { + console.table(performance); + } + else { + $.each(performance, function(index, data) { + console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); + }); + } + console.groupEnd(); + } + performance = []; + } + }, + invoke: function(query, passedArguments, context) { + var + object = instance, + maxDepth, + found, + response + ; + passedArguments = passedArguments || queryArguments; + context = element || context; + if(typeof query == 'string' && object !== undefined) { + query = query.split(/[\. ]/); + maxDepth = query.length - 1; + $.each(query, function(depth, value) { + var camelCaseValue = (depth != maxDepth) + ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) + : query + ; + if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) { + object = object[camelCaseValue]; + } + else if( object[camelCaseValue] !== undefined ) { + found = object[camelCaseValue]; + return false; + } + else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) { + object = object[value]; + } + else if( object[value] !== undefined ) { + found = object[value]; + return false; + } + else { + return false; + } + }); + } + if ( $.isFunction( found ) ) { + response = found.apply(context, passedArguments); + } + else if(found !== undefined) { + response = found; + } + if($.isArray(returnedValue)) { + returnedValue.push(response); + } + else if(returnedValue !== undefined) { + returnedValue = [returnedValue, response]; + } + else if(response !== undefined) { + returnedValue = response; + } + return found; + } + }; + + if(methodInvoked) { + if(instance === undefined) { + module.initialize(); + } + module.invoke(query); + } + else { + if(instance !== undefined) { + instance.invoke('destroy'); + } + module.initialize(); + } + }) + ; + + return (returnedValue !== undefined) + ? returnedValue + : this + ; +}; + +$.fn.modal.settings = { + + name : 'Modal', + namespace : 'modal', + + useFlex : 'auto', + offset : 0, + + silent : false, + debug : false, + verbose : false, + performance : true, + + observeChanges : false, + + allowMultiple : false, + detachable : true, + closable : true, + autofocus : true, + + inverted : false, + blurring : false, + + centered : true, + + dimmerSettings : { + closable : false, + useCSS : true + }, + + // whether to use keyboard shortcuts + keyboardShortcuts: true, + + context : 'body', + + queue : false, + duration : 500, + transition : 'scale', + + // padding with edge of page + padding : 50, + + // called before show animation + onShow : function(){}, + + // called after show animation + onVisible : function(){}, + + // called before hide animation + onHide : function(){ return true; }, + + // called after hide animation + onHidden : function(){}, + + // called after approve selector match + onApprove : function(){ return true; }, + + // called after deny selector match + onDeny : function(){ return true; }, + + selector : { + close : '> .close', + approve : '.actions .positive, .actions .approve, .actions .ok', + deny : '.actions .negative, .actions .deny, .actions .cancel', + modal : '.ui.modal' + }, + error : { + dimmer : 'UI Dimmer, a required component is not included in this page', + method : 'The method you called is not defined.', + notFound : 'The element you specified could not be found' + }, + className : { + active : 'active', + animating : 'animating', + blurring : 'blurring', + inverted : 'inverted', + legacy : 'legacy', + loading : 'loading', + scrolling : 'scrolling', + undetached : 'undetached' + } +}; + + +})( jQuery, window, document ); diff --git a/app/static/semantic/components/modal.min.css b/app/static/semantic/components/modal.min.css new file mode 100755 index 0000000..0026ebc --- /dev/null +++ b/app/static/semantic/components/modal.min.css @@ -0,0 +1,9 @@ +/*! + * # Semantic UI 2.4.0 - Modal + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */.ui.modal{position:absolute;display:none;z-index:1001;text-align:left;background:#fff;border:none;-webkit-box-shadow:1px 3px 3px 0 rgba(0,0,0,.2),1px 3px 15px 2px rgba(0,0,0,.2);box-shadow:1px 3px 3px 0 rgba(0,0,0,.2),1px 3px 15px 2px rgba(0,0,0,.2);-webkit-transform-origin:50% 25%;transform-origin:50% 25%;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;border-radius:.28571429rem;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;will-change:top,left,margin,transform,opacity}.ui.modal>.icon:first-child+*,.ui.modal>:first-child:not(.icon){border-top-left-radius:.28571429rem;border-top-right-radius:.28571429rem}.ui.modal>:last-child{border-bottom-left-radius:.28571429rem;border-bottom-right-radius:.28571429rem}.ui.modal>.close{cursor:pointer;position:absolute;top:-2.5rem;right:-2.5rem;z-index:1;opacity:.8;font-size:1.25em;color:#fff;width:2.25rem;height:2.25rem;padding:.625rem 0 0 0}.ui.modal>.close:hover{opacity:1}.ui.modal>.header{display:block;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;background:#fff;margin:0;padding:1.25rem 1.5rem;-webkit-box-shadow:none;box-shadow:none;color:rgba(0,0,0,.85);border-bottom:1px solid rgba(34,36,38,.15)}.ui.modal>.header:not(.ui){font-size:1.42857143rem;line-height:1.28571429em;font-weight:700}.ui.modal>.content{display:block;width:100%;font-size:1em;line-height:1.4;padding:1.5rem;background:#fff}.ui.modal>.image.content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.ui.modal>.content>.image{display:block;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;width:'';-ms-flex-item-align:top;align-self:top}.ui.modal>[class*="top aligned"]{-ms-flex-item-align:top;align-self:top}.ui.modal>[class*="middle aligned"]{-ms-flex-item-align:middle;align-self:middle}.ui.modal>[class*=stretched]{-ms-flex-item-align:stretch;align-self:stretch}.ui.modal>.content>.description{display:block;-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;min-width:0;-ms-flex-item-align:top;align-self:top}.ui.modal>.content>.icon+.description,.ui.modal>.content>.image+.description{-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;min-width:'';width:auto;padding-left:2em}.ui.modal>.content>.image>i.icon{margin:0;opacity:1;width:auto;line-height:1;font-size:8rem}.ui.modal>.actions{background:#f9fafb;padding:1rem 1rem;border-top:1px solid rgba(34,36,38,.15);text-align:right}.ui.modal .actions>.button{margin-left:.75em}@media only screen and (max-width:767px){.ui.modal{width:95%;margin:0}}@media only screen and (min-width:768px){.ui.modal{width:88%;margin:0}}@media only screen and (min-width:992px){.ui.modal{width:850px;margin:0}}@media only screen and (min-width:1200px){.ui.modal{width:900px;margin:0}}@media only screen and (min-width:1920px){.ui.modal{width:950px;margin:0}}@media only screen and (max-width:991px){.ui.modal>.header{padding-right:2.25rem}.ui.modal>.close{top:1.0535rem;right:1rem;color:rgba(0,0,0,.87)}}@media only screen and (max-width:767px){.ui.modal>.header{padding:.75rem 1rem!important;padding-right:2.25rem!important}.ui.modal>.content{display:block;padding:1rem!important}.ui.modal>.close{top:.5rem!important;right:.5rem!important}.ui.modal .image.content{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.ui.modal .content>.image{display:block;max-width:100%;margin:0 auto!important;text-align:center;padding:0 0 1rem!important}.ui.modal>.content>.image>i.icon{font-size:5rem;text-align:center}.ui.modal .content>.description{display:block;width:100%!important;margin:0!important;padding:1rem 0!important;-webkit-box-shadow:none;box-shadow:none}.ui.modal>.actions{padding:1rem 1rem 0!important}.ui.modal .actions>.button,.ui.modal .actions>.buttons{margin-bottom:1rem}}.ui.inverted.dimmer>.ui.modal{-webkit-box-shadow:1px 3px 10px 2px rgba(0,0,0,.2);box-shadow:1px 3px 10px 2px rgba(0,0,0,.2)}.ui.basic.modal{background-color:transparent;border:none;border-radius:0;-webkit-box-shadow:none!important;box-shadow:none!important;color:#fff}.ui.basic.modal>.actions,.ui.basic.modal>.content,.ui.basic.modal>.header{background-color:transparent}.ui.basic.modal>.header{color:#fff}.ui.basic.modal>.close{top:1rem;right:1.5rem}.ui.inverted.dimmer>.basic.modal{color:rgba(0,0,0,.87)}.ui.inverted.dimmer>.ui.basic.modal>.header{color:rgba(0,0,0,.85)}.ui.legacy.modal,.ui.legacy.page.dimmer>.ui.modal{top:50%;left:50%}.ui.legacy.page.dimmer>.ui.scrolling.modal,.ui.page.dimmer>.ui.scrolling.legacy.modal,.ui.top.aligned.dimmer>.ui.legacy.modal,.ui.top.aligned.legacy.page.dimmer>.ui.modal{top:auto}@media only screen and (max-width:991px){.ui.basic.modal>.close{color:#fff}}.ui.loading.modal{display:block;visibility:hidden;z-index:-1}.ui.active.modal{display:block}.modals.dimmer[class*="top aligned"] .modal{margin:5vh auto}@media only screen and (max-width:767px){.modals.dimmer[class*="top aligned"] .modal{margin:1rem auto}}.legacy.modals.dimmer[class*="top aligned"]{padding-top:5vh}@media only screen and (max-width:767px){.legacy.modals.dimmer[class*="top aligned"]{padding-top:1rem}}.scrolling.dimmable.dimmed{overflow:hidden}.scrolling.dimmable>.dimmer{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.scrolling.dimmable.dimmed>.dimmer{overflow:auto;-webkit-overflow-scrolling:touch}.scrolling.dimmable>.dimmer{position:fixed}.modals.dimmer .ui.scrolling.modal{margin:1rem auto}.scrolling.undetached.dimmable.dimmed{overflow:auto;-webkit-overflow-scrolling:touch}.scrolling.undetached.dimmable.dimmed>.dimmer{overflow:hidden}.scrolling.undetached.dimmable .ui.scrolling.modal{position:absolute;left:50%;margin-top:1rem!important}.ui.modal .scrolling.content{max-height:calc(70vh);overflow:auto}.ui.fullscreen.modal{width:95%!important;left:0!important;margin:1em auto}.ui.fullscreen.scrolling.modal{left:0!important}.ui.fullscreen.modal>.header{padding-right:2.25rem}.ui.fullscreen.modal>.close{top:1.0535rem;right:1rem;color:rgba(0,0,0,.87)}.ui.modal{font-size:1rem}.ui.mini.modal>.header:not(.ui){font-size:1.3em}@media only screen and (max-width:767px){.ui.mini.modal{width:95%;margin:0}}@media only screen and (min-width:768px){.ui.mini.modal{width:35.2%;margin:0}}@media only screen and (min-width:992px){.ui.mini.modal{width:340px;margin:0}}@media only screen and (min-width:1200px){.ui.mini.modal{width:360px;margin:0}}@media only screen and (min-width:1920px){.ui.mini.modal{width:380px;margin:0}}.ui.small.modal>.header:not(.ui){font-size:1.3em}@media only screen and (max-width:767px){.ui.tiny.modal{width:95%;margin:0}}@media only screen and (min-width:768px){.ui.tiny.modal{width:52.8%;margin:0}}@media only screen and (min-width:992px){.ui.tiny.modal{width:510px;margin:0}}@media only screen and (min-width:1200px){.ui.tiny.modal{width:540px;margin:0}}@media only screen and (min-width:1920px){.ui.tiny.modal{width:570px;margin:0}}.ui.small.modal>.header:not(.ui){font-size:1.3em}@media only screen and (max-width:767px){.ui.small.modal{width:95%;margin:0}}@media only screen and (min-width:768px){.ui.small.modal{width:70.4%;margin:0}}@media only screen and (min-width:992px){.ui.small.modal{width:680px;margin:0}}@media only screen and (min-width:1200px){.ui.small.modal{width:720px;margin:0}}@media only screen and (min-width:1920px){.ui.small.modal{width:760px;margin:0}}.ui.large.modal>.header{font-size:1.6em}@media only screen and (max-width:767px){.ui.large.modal{width:95%;margin:0}}@media only screen and (min-width:768px){.ui.large.modal{width:88%;margin:0}}@media only screen and (min-width:992px){.ui.large.modal{width:1020px;margin:0}}@media only screen and (min-width:1200px){.ui.large.modal{width:1080px;margin:0}}@media only screen and (min-width:1920px){.ui.large.modal{width:1140px;margin:0}} \ No newline at end of file diff --git a/app/static/semantic/components/modal.min.js b/app/static/semantic/components/modal.min.js new file mode 100755 index 0000000..c00f6b1 --- /dev/null +++ b/app/static/semantic/components/modal.min.js @@ -0,0 +1 @@ +!function(j,q,L,N){"use strict";q=void 0!==q&&q.Math==Math?q:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),j.fn.modal=function(w){var C,e=j(this),F=j(q),M=j(L),x=j("body"),H=e.selector||"",A=(new Date).getTime(),O=[],D=w,T="string"==typeof D,z=[].slice.call(arguments,1),E=q.requestAnimationFrame||q.mozRequestAnimationFrame||q.webkitRequestAnimationFrame||q.msRequestAnimationFrame||function(e){setTimeout(e,0)};return e.each(function(){var i,t,e,o,a,n,r,s,c,l=j.isPlainObject(w)?j.extend(!0,{},j.fn.modal.settings,w):j.extend({},j.fn.modal.settings),d=l.selector,u=l.className,m=l.namespace,f=l.error,g="."+m,h="module-"+m,v=j(this),b=j(l.context),p=v.find(d.close),y=this,k=v.data(h),S=!1;c={initialize:function(){c.verbose("Initializing dimmer",b),c.create.id(),c.create.dimmer(),c.refreshModals(),c.bind.events(),l.observeChanges&&c.observeChanges(),c.instantiate()},instantiate:function(){c.verbose("Storing instance of modal"),k=c,v.data(h,k)},create:{dimmer:function(){var e={debug:l.debug,variation:!l.centered&&"top aligned",dimmerName:"modals"},n=j.extend(!0,e,l.dimmerSettings);j.fn.dimmer!==N?(c.debug("Creating dimmer"),o=b.dimmer(n),l.detachable?(c.verbose("Modal is detachable, moving content into dimmer"),o.dimmer("add content",v)):c.set.undetached(),a=o.dimmer("get dimmer")):c.error(f.dimmer)},id:function(){r=(Math.random().toString(16)+"000000000").substr(2,8),n="."+r,c.verbose("Creating unique id for element",r)}},destroy:function(){c.verbose("Destroying previous modal"),v.removeData(h).off(g),F.off(n),a.off(n),p.off(g),b.dimmer("destroy")},observeChanges:function(){"MutationObserver"in q&&((s=new MutationObserver(function(e){c.debug("DOM tree modified, refreshing"),c.refresh()})).observe(y,{childList:!0,subtree:!0}),c.debug("Setting up mutation observer",s))},refresh:function(){c.remove.scrolling(),c.cacheSizes(),c.can.useFlex()||c.set.modalOffset(),c.set.screenHeight(),c.set.type()},refreshModals:function(){t=v.siblings(d.modal),i=t.add(v)},attachEvents:function(e,n){var i=j(e);n=j.isFunction(c[n])?c[n]:c.toggle,0 .close",approve:".actions .positive, .actions .approve, .actions .ok",deny:".actions .negative, .actions .deny, .actions .cancel",modal:".ui.modal"},error:{dimmer:"UI Dimmer, a required component is not included in this page",method:"The method you called is not defined.",notFound:"The element you specified could not be found"},className:{active:"active",animating:"animating",blurring:"blurring",inverted:"inverted",legacy:"legacy",loading:"loading",scrolling:"scrolling",undetached:"undetached"}}}(jQuery,window,document); \ No newline at end of file diff --git a/app/static/semantic/components/nag.css b/app/static/semantic/components/nag.css new file mode 100755 index 0000000..134b34d --- /dev/null +++ b/app/static/semantic/components/nag.css @@ -0,0 +1,148 @@ +/*! + * # Semantic UI 2.4.0 - Nag + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */ + + +/******************************* + Nag +*******************************/ + +.ui.nag { + display: none; + opacity: 0.95; + position: relative; + top: 0em; + left: 0px; + z-index: 999; + min-height: 0em; + width: 100%; + margin: 0em; + padding: 0.75em 1em; + background: #555555; + -webkit-box-shadow: 0px 1px 2px 0px rgba(0, 0, 0, 0.2); + box-shadow: 0px 1px 2px 0px rgba(0, 0, 0, 0.2); + font-size: 1rem; + text-align: center; + color: rgba(0, 0, 0, 0.87); + border-radius: 0em 0em 0.28571429rem 0.28571429rem; + -webkit-transition: 0.2s background ease; + transition: 0.2s background ease; +} +a.ui.nag { + cursor: pointer; +} +.ui.nag > .title { + display: inline-block; + margin: 0em 0.5em; + color: #FFFFFF; +} +.ui.nag > .close.icon { + cursor: pointer; + opacity: 0.4; + position: absolute; + top: 50%; + right: 1em; + font-size: 1em; + margin: -0.5em 0em 0em; + color: #FFFFFF; + -webkit-transition: opacity 0.2s ease; + transition: opacity 0.2s ease; +} + + +/******************************* + States +*******************************/ + + +/* Hover */ +.ui.nag:hover { + background: #555555; + opacity: 1; +} +.ui.nag .close:hover { + opacity: 1; +} + + +/******************************* + Variations +*******************************/ + + +/*-------------- + Static +---------------*/ + +.ui.overlay.nag { + position: absolute; + display: block; +} + +/*-------------- + Fixed +---------------*/ + +.ui.fixed.nag { + position: fixed; +} + +/*-------------- + Bottom +---------------*/ + +.ui.bottom.nags, +.ui.bottom.nag { + border-radius: 0.28571429rem 0.28571429rem 0em 0em; + top: auto; + bottom: 0em; +} + +/*-------------- + White +---------------*/ + +.ui.inverted.nags .nag, +.ui.inverted.nag { + background-color: #F3F4F5; + color: rgba(0, 0, 0, 0.85); +} +.ui.inverted.nags .nag .close, +.ui.inverted.nags .nag .title, +.ui.inverted.nag .close, +.ui.inverted.nag .title { + color: rgba(0, 0, 0, 0.4); +} + + +/******************************* + Groups +*******************************/ + +.ui.nags .nag { + border-radius: 0em !important; +} +.ui.nags .nag:last-child { + border-radius: 0em 0em 0.28571429rem 0.28571429rem; +} +.ui.bottom.nags .nag:last-child { + border-radius: 0.28571429rem 0.28571429rem 0em 0em; +} + + +/******************************* + Theme Overrides +*******************************/ + + + +/******************************* + User Overrides +*******************************/ + diff --git a/app/static/semantic/components/nag.js b/app/static/semantic/components/nag.js new file mode 100755 index 0000000..c6085f0 --- /dev/null +++ b/app/static/semantic/components/nag.js @@ -0,0 +1,507 @@ +/*! + * # Semantic UI 2.4.1 - Nag + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */ + +;(function ($, window, document, undefined) { + +'use strict'; + +window = (typeof window != 'undefined' && window.Math == Math) + ? window + : (typeof self != 'undefined' && self.Math == Math) + ? self + : Function('return this')() +; + +$.fn.nag = function(parameters) { + var + $allModules = $(this), + moduleSelector = $allModules.selector || '', + + time = new Date().getTime(), + performance = [], + + query = arguments[0], + methodInvoked = (typeof query == 'string'), + queryArguments = [].slice.call(arguments, 1), + returnedValue + ; + $allModules + .each(function() { + var + settings = ( $.isPlainObject(parameters) ) + ? $.extend(true, {}, $.fn.nag.settings, parameters) + : $.extend({}, $.fn.nag.settings), + + className = settings.className, + selector = settings.selector, + error = settings.error, + namespace = settings.namespace, + + eventNamespace = '.' + namespace, + moduleNamespace = namespace + '-module', + + $module = $(this), + + $close = $module.find(selector.close), + $context = (settings.context) + ? $(settings.context) + : $('body'), + + element = this, + instance = $module.data(moduleNamespace), + + moduleOffset, + moduleHeight, + + contextWidth, + contextHeight, + contextOffset, + + yOffset, + yPosition, + + timer, + module, + + requestAnimationFrame = window.requestAnimationFrame + || window.mozRequestAnimationFrame + || window.webkitRequestAnimationFrame + || window.msRequestAnimationFrame + || function(callback) { setTimeout(callback, 0); } + ; + module = { + + initialize: function() { + module.verbose('Initializing element'); + + $module + .on('click' + eventNamespace, selector.close, module.dismiss) + .data(moduleNamespace, module) + ; + + if(settings.detachable && $module.parent()[0] !== $context[0]) { + $module + .detach() + .prependTo($context) + ; + } + + if(settings.displayTime > 0) { + setTimeout(module.hide, settings.displayTime); + } + module.show(); + }, + + destroy: function() { + module.verbose('Destroying instance'); + $module + .removeData(moduleNamespace) + .off(eventNamespace) + ; + }, + + show: function() { + if( module.should.show() && !$module.is(':visible') ) { + module.debug('Showing nag', settings.animation.show); + if(settings.animation.show == 'fade') { + $module + .fadeIn(settings.duration, settings.easing) + ; + } + else { + $module + .slideDown(settings.duration, settings.easing) + ; + } + } + }, + + hide: function() { + module.debug('Showing nag', settings.animation.hide); + if(settings.animation.show == 'fade') { + $module + .fadeIn(settings.duration, settings.easing) + ; + } + else { + $module + .slideUp(settings.duration, settings.easing) + ; + } + }, + + onHide: function() { + module.debug('Removing nag', settings.animation.hide); + $module.remove(); + if (settings.onHide) { + settings.onHide(); + } + }, + + dismiss: function(event) { + if(settings.storageMethod) { + module.storage.set(settings.key, settings.value); + } + module.hide(); + event.stopImmediatePropagation(); + event.preventDefault(); + }, + + should: { + show: function() { + if(settings.persist) { + module.debug('Persistent nag is set, can show nag'); + return true; + } + if( module.storage.get(settings.key) != settings.value.toString() ) { + module.debug('Stored value is not set, can show nag', module.storage.get(settings.key)); + return true; + } + module.debug('Stored value is set, cannot show nag', module.storage.get(settings.key)); + return false; + } + }, + + get: { + storageOptions: function() { + var + options = {} + ; + if(settings.expires) { + options.expires = settings.expires; + } + if(settings.domain) { + options.domain = settings.domain; + } + if(settings.path) { + options.path = settings.path; + } + return options; + } + }, + + clear: function() { + module.storage.remove(settings.key); + }, + + storage: { + set: function(key, value) { + var + options = module.get.storageOptions() + ; + if(settings.storageMethod == 'localstorage' && window.localStorage !== undefined) { + window.localStorage.setItem(key, value); + module.debug('Value stored using local storage', key, value); + } + else if(settings.storageMethod == 'sessionstorage' && window.sessionStorage !== undefined) { + window.sessionStorage.setItem(key, value); + module.debug('Value stored using session storage', key, value); + } + else if($.cookie !== undefined) { + $.cookie(key, value, options); + module.debug('Value stored using cookie', key, value, options); + } + else { + module.error(error.noCookieStorage); + return; + } + }, + get: function(key, value) { + var + storedValue + ; + if(settings.storageMethod == 'localstorage' && window.localStorage !== undefined) { + storedValue = window.localStorage.getItem(key); + } + else if(settings.storageMethod == 'sessionstorage' && window.sessionStorage !== undefined) { + storedValue = window.sessionStorage.getItem(key); + } + // get by cookie + else if($.cookie !== undefined) { + storedValue = $.cookie(key); + } + else { + module.error(error.noCookieStorage); + } + if(storedValue == 'undefined' || storedValue == 'null' || storedValue === undefined || storedValue === null) { + storedValue = undefined; + } + return storedValue; + }, + remove: function(key) { + var + options = module.get.storageOptions() + ; + if(settings.storageMethod == 'localstorage' && window.localStorage !== undefined) { + window.localStorage.removeItem(key); + } + else if(settings.storageMethod == 'sessionstorage' && window.sessionStorage !== undefined) { + window.sessionStorage.removeItem(key); + } + // store by cookie + else if($.cookie !== undefined) { + $.removeCookie(key, options); + } + else { + module.error(error.noStorage); + } + } + }, + + setting: function(name, value) { + module.debug('Changing setting', name, value); + if( $.isPlainObject(name) ) { + $.extend(true, settings, name); + } + else if(value !== undefined) { + if($.isPlainObject(settings[name])) { + $.extend(true, settings[name], value); + } + else { + settings[name] = value; + } + } + else { + return settings[name]; + } + }, + internal: function(name, value) { + if( $.isPlainObject(name) ) { + $.extend(true, module, name); + } + else if(value !== undefined) { + module[name] = value; + } + else { + return module[name]; + } + }, + debug: function() { + if(!settings.silent && settings.debug) { + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':'); + module.debug.apply(console, arguments); + } + } + }, + verbose: function() { + if(!settings.silent && settings.verbose && settings.debug) { + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':'); + module.verbose.apply(console, arguments); + } + } + }, + error: function() { + if(!settings.silent) { + module.error = Function.prototype.bind.call(console.error, console, settings.name + ':'); + module.error.apply(console, arguments); + } + }, + performance: { + log: function(message) { + var + currentTime, + executionTime, + previousTime + ; + if(settings.performance) { + currentTime = new Date().getTime(); + previousTime = time || currentTime; + executionTime = currentTime - previousTime; + time = currentTime; + performance.push({ + 'Name' : message[0], + 'Arguments' : [].slice.call(message, 1) || '', + 'Element' : element, + 'Execution Time' : executionTime + }); + } + clearTimeout(module.performance.timer); + module.performance.timer = setTimeout(module.performance.display, 500); + }, + display: function() { + var + title = settings.name + ':', + totalTime = 0 + ; + time = false; + clearTimeout(module.performance.timer); + $.each(performance, function(index, data) { + totalTime += data['Execution Time']; + }); + title += ' ' + totalTime + 'ms'; + if(moduleSelector) { + title += ' \'' + moduleSelector + '\''; + } + if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { + console.groupCollapsed(title); + if(console.table) { + console.table(performance); + } + else { + $.each(performance, function(index, data) { + console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); + }); + } + console.groupEnd(); + } + performance = []; + } + }, + invoke: function(query, passedArguments, context) { + var + object = instance, + maxDepth, + found, + response + ; + passedArguments = passedArguments || queryArguments; + context = element || context; + if(typeof query == 'string' && object !== undefined) { + query = query.split(/[\. ]/); + maxDepth = query.length - 1; + $.each(query, function(depth, value) { + var camelCaseValue = (depth != maxDepth) + ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) + : query + ; + if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) { + object = object[camelCaseValue]; + } + else if( object[camelCaseValue] !== undefined ) { + found = object[camelCaseValue]; + return false; + } + else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) { + object = object[value]; + } + else if( object[value] !== undefined ) { + found = object[value]; + return false; + } + else { + module.error(error.method, query); + return false; + } + }); + } + if ( $.isFunction( found ) ) { + response = found.apply(context, passedArguments); + } + else if(found !== undefined) { + response = found; + } + if($.isArray(returnedValue)) { + returnedValue.push(response); + } + else if(returnedValue !== undefined) { + returnedValue = [returnedValue, response]; + } + else if(response !== undefined) { + returnedValue = response; + } + return found; + } + }; + + if(methodInvoked) { + if(instance === undefined) { + module.initialize(); + } + module.invoke(query); + } + else { + if(instance !== undefined) { + instance.invoke('destroy'); + } + module.initialize(); + } + }) + ; + + return (returnedValue !== undefined) + ? returnedValue + : this + ; +}; + +$.fn.nag.settings = { + + name : 'Nag', + + silent : false, + debug : false, + verbose : false, + performance : true, + + namespace : 'Nag', + + // allows cookie to be overridden + persist : false, + + // set to zero to require manually dismissal, otherwise hides on its own + displayTime : 0, + + animation : { + show : 'slide', + hide : 'slide' + }, + + context : false, + detachable : false, + + expires : 30, + domain : false, + path : '/', + + // type of storage to use + storageMethod : 'cookie', + + // value to store in dismissed localstorage/cookie + key : 'nag', + value : 'dismiss', + + error: { + noCookieStorage : '$.cookie is not included. A storage solution is required.', + noStorage : 'Neither $.cookie or store is defined. A storage solution is required for storing state', + method : 'The method you called is not defined.' + }, + + className : { + bottom : 'bottom', + fixed : 'fixed' + }, + + selector : { + close : '.close.icon' + }, + + speed : 500, + easing : 'easeOutQuad', + + onHide: function() {} + +}; + +// Adds easing +$.extend( $.easing, { + easeOutQuad: function (x, t, b, c, d) { + return -c *(t/=d)*(t-2) + b; + } +}); + +})( jQuery, window, document ); diff --git a/app/static/semantic/components/nag.min.css b/app/static/semantic/components/nag.min.css new file mode 100755 index 0000000..3782cb5 --- /dev/null +++ b/app/static/semantic/components/nag.min.css @@ -0,0 +1,9 @@ +/*! + * # Semantic UI 2.4.0 - Nag + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */.ui.nag{display:none;opacity:.95;position:relative;top:0;left:0;z-index:999;min-height:0;width:100%;margin:0;padding:.75em 1em;background:#555;-webkit-box-shadow:0 1px 2px 0 rgba(0,0,0,.2);box-shadow:0 1px 2px 0 rgba(0,0,0,.2);font-size:1rem;text-align:center;color:rgba(0,0,0,.87);border-radius:0 0 .28571429rem .28571429rem;-webkit-transition:.2s background ease;transition:.2s background ease}a.ui.nag{cursor:pointer}.ui.nag>.title{display:inline-block;margin:0 .5em;color:#fff}.ui.nag>.close.icon{cursor:pointer;opacity:.4;position:absolute;top:50%;right:1em;font-size:1em;margin:-.5em 0 0;color:#fff;-webkit-transition:opacity .2s ease;transition:opacity .2s ease}.ui.nag:hover{background:#555;opacity:1}.ui.nag .close:hover{opacity:1}.ui.overlay.nag{position:absolute;display:block}.ui.fixed.nag{position:fixed}.ui.bottom.nag,.ui.bottom.nags{border-radius:.28571429rem .28571429rem 0 0;top:auto;bottom:0}.ui.inverted.nag,.ui.inverted.nags .nag{background-color:#f3f4f5;color:rgba(0,0,0,.85)}.ui.inverted.nag .close,.ui.inverted.nag .title,.ui.inverted.nags .nag .close,.ui.inverted.nags .nag .title{color:rgba(0,0,0,.4)}.ui.nags .nag{border-radius:0!important}.ui.nags .nag:last-child{border-radius:0 0 .28571429rem .28571429rem}.ui.bottom.nags .nag:last-child{border-radius:.28571429rem .28571429rem 0 0} \ No newline at end of file diff --git a/app/static/semantic/components/nag.min.js b/app/static/semantic/components/nag.min.js new file mode 100755 index 0000000..9d9e82c --- /dev/null +++ b/app/static/semantic/components/nag.min.js @@ -0,0 +1 @@ +!function(y,k,e,S){"use strict";k=void 0!==k&&k.Math==Math?k:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),y.fn.nag=function(u){var d,e=y(this),m=e.selector||"",f=(new Date).getTime(),p=[],h=u,b="string"==typeof h,v=[].slice.call(arguments,1);return e.each(function(){var r,n=y.isPlainObject(u)?y.extend(!0,{},y.fn.nag.settings,u):y.extend({},y.fn.nag.settings),e=(n.className,n.selector),l=n.error,o=n.namespace,t="."+o,i=o+"-module",s=y(this),a=(s.find(e.close),n.context?y(n.context):y("body")),c=this,g=s.data(i);k.requestAnimationFrame||k.mozRequestAnimationFrame||k.webkitRequestAnimationFrame||k.msRequestAnimationFrame;r={initialize:function(){r.verbose("Initializing element"),s.on("click"+t,e.close,r.dismiss).data(i,r),n.detachable&&s.parent()[0]!==a[0]&&s.detach().prependTo(a),0 :before, +.ui.placeholder .image.header:after, +.ui.placeholder .line, +.ui.placeholder .line:after { + background-color: #FFFFFF; +} + +/* Image */ +.ui.placeholder .image:not(.header):not(.ui) { + height: 100px; +} +.ui.placeholder .square.image:not(.header) { + height: 0px; + overflow: hidden; + +/* 1/1 aspect ratio */ + padding-top: 100%; +} +.ui.placeholder .rectangular.image:not(.header) { + height: 0px; + overflow: hidden; + +/* 4/3 aspect ratio */ + padding-top: 75%; +} + +/* Lines */ +.ui.placeholder .line { + position: relative; + height: 0.85714286em; +} +.ui.placeholder .line:before, +.ui.placeholder .line:after { + top: 100%; + position: absolute; + content: ''; + background-color: inherit; +} +.ui.placeholder .line:before { + left: 0px; +} +.ui.placeholder .line:after { + right: 0px; +} + +/* Any Lines */ +.ui.placeholder .line { + margin-bottom: 0.5em; +} +.ui.placeholder .line:before, +.ui.placeholder .line:after { + height: 0.5em; +} +.ui.placeholder .line:not(:first-child) { + margin-top: 0.5em; +} + +/* Header Image + 2 Lines */ +.ui.placeholder .header { + position: relative; + overflow: hidden; +} + +/* Line Outdent */ +.ui.placeholder .line:nth-child(1):after { + width: 0%; +} +.ui.placeholder .line:nth-child(2):after { + width: 50%; +} +.ui.placeholder .line:nth-child(3):after { + width: 10%; +} +.ui.placeholder .line:nth-child(4):after { + width: 35%; +} +.ui.placeholder .line:nth-child(5):after { + width: 65%; +} + +/* Header Line 1 & 2*/ +.ui.placeholder .header .line { + margin-bottom: 0.64285714em; +} +.ui.placeholder .header .line:before, +.ui.placeholder .header .line:after { + height: 0.64285714em; +} +.ui.placeholder .header .line:not(:first-child) { + margin-top: 0.64285714em; +} +.ui.placeholder .header .line:after { + width: 20%; +} +.ui.placeholder .header .line:nth-child(2):after { + width: 60%; +} +/* Image Header */ +.ui.placeholder .image.header .line { + margin-left: 3em; +} +.ui.placeholder .image.header .line:before { + width: 0.71428571rem; +} +.ui.placeholder .image.header:after { + display: block; + height: 0.85714286em; + content: ''; + margin-left: 3em; +} + +/* Spacing */ +.ui.placeholder .image .line:first-child, +.ui.placeholder .paragraph .line:first-child, +.ui.placeholder .header .line:first-child { + height: 0.01px; +} +.ui.placeholder .image:not(:first-child):before, +.ui.placeholder .paragraph:not(:first-child):before, +.ui.placeholder .header:not(:first-child):before { + height: 1.42857143em; + content: ''; + display: block; +} + +/* Inverted Content Loader */ +.ui.inverted.placeholder { + background-image: -webkit-gradient(linear, left top, right top, from(rgba(255, 255, 255, 0.08)), color-stop(15%, rgba(255, 255, 255, 0.14)), color-stop(30%, rgba(255, 255, 255, 0.08))); + background-image: -webkit-linear-gradient(left, rgba(255, 255, 255, 0.08) 0%, rgba(255, 255, 255, 0.14) 15%, rgba(255, 255, 255, 0.08) 30%); + background-image: linear-gradient(to right, rgba(255, 255, 255, 0.08) 0%, rgba(255, 255, 255, 0.14) 15%, rgba(255, 255, 255, 0.08) 30%); +} +.ui.inverted.placeholder, +.ui.inverted.placeholder > :before, +.ui.inverted.placeholder .image.header:after, +.ui.inverted.placeholder .line, +.ui.inverted.placeholder .line:after { + background-color: #1B1C1D; +} + + +/******************************* + Variations +*******************************/ + + +/*------------------- + Sizes +--------------------*/ + +.ui.placeholder .full.line.line.line:after { + width: 0%; +} +.ui.placeholder .very.long.line.line.line:after { + width: 10%; +} +.ui.placeholder .long.line.line.line:after { + width: 35%; +} +.ui.placeholder .medium.line.line.line:after { + width: 50%; +} +.ui.placeholder .short.line.line.line:after { + width: 65%; +} +.ui.placeholder .very.short.line.line.line:after { + width: 80%; +} + +/*------------------- + Fluid +--------------------*/ + +.ui.fluid.placeholder { + max-width: none; +} diff --git a/app/static/semantic/components/placeholder.min.css b/app/static/semantic/components/placeholder.min.css new file mode 100644 index 0000000..7096606 --- /dev/null +++ b/app/static/semantic/components/placeholder.min.css @@ -0,0 +1,9 @@ +/*! + * # Semantic UI 2.4.1 - Loader + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */.ui.placeholder{position:static;overflow:hidden;-webkit-animation:placeholderShimmer 2s linear;animation:placeholderShimmer 2s linear;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;background-color:#fff;background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.08)),color-stop(15%,rgba(0,0,0,.15)),color-stop(30%,rgba(0,0,0,.08)));background-image:-webkit-linear-gradient(left,rgba(0,0,0,.08) 0,rgba(0,0,0,.15) 15%,rgba(0,0,0,.08) 30%);background-image:linear-gradient(to right,rgba(0,0,0,.08) 0,rgba(0,0,0,.15) 15%,rgba(0,0,0,.08) 30%);background-size:1200px 100%;max-width:30rem}@-webkit-keyframes placeholderShimmer{0%{background-position:-1200px 0}100%{background-position:1200px 0}}@keyframes placeholderShimmer{0%{background-position:-1200px 0}100%{background-position:1200px 0}}.ui.placeholder+.ui.placeholder{margin-top:2rem}.ui.placeholder+.ui.placeholder{-webkit-animation-delay:.15s;animation-delay:.15s}.ui.placeholder+.ui.placeholder+.ui.placeholder{-webkit-animation-delay:.3s;animation-delay:.3s}.ui.placeholder+.ui.placeholder+.ui.placeholder+.ui.placeholder{-webkit-animation-delay:.45s;animation-delay:.45s}.ui.placeholder+.ui.placeholder+.ui.placeholder+.ui.placeholder+.ui.placeholder{-webkit-animation-delay:.6s;animation-delay:.6s}.ui.placeholder,.ui.placeholder .image.header:after,.ui.placeholder .line,.ui.placeholder .line:after,.ui.placeholder>:before{background-color:#fff}.ui.placeholder .image:not(.header):not(.ui){height:100px}.ui.placeholder .square.image:not(.header){height:0;overflow:hidden;padding-top:100%}.ui.placeholder .rectangular.image:not(.header){height:0;overflow:hidden;padding-top:75%}.ui.placeholder .line{position:relative;height:.85714286em}.ui.placeholder .line:after,.ui.placeholder .line:before{top:100%;position:absolute;content:'';background-color:inherit}.ui.placeholder .line:before{left:0}.ui.placeholder .line:after{right:0}.ui.placeholder .line{margin-bottom:.5em}.ui.placeholder .line:after,.ui.placeholder .line:before{height:.5em}.ui.placeholder .line:not(:first-child){margin-top:.5em}.ui.placeholder .header{position:relative;overflow:hidden}.ui.placeholder .line:nth-child(1):after{width:0%}.ui.placeholder .line:nth-child(2):after{width:50%}.ui.placeholder .line:nth-child(3):after{width:10%}.ui.placeholder .line:nth-child(4):after{width:35%}.ui.placeholder .line:nth-child(5):after{width:65%}.ui.placeholder .header .line{margin-bottom:.64285714em}.ui.placeholder .header .line:after,.ui.placeholder .header .line:before{height:.64285714em}.ui.placeholder .header .line:not(:first-child){margin-top:.64285714em}.ui.placeholder .header .line:after{width:20%}.ui.placeholder .header .line:nth-child(2):after{width:60%}.ui.placeholder .image.header .line{margin-left:3em}.ui.placeholder .image.header .line:before{width:.71428571rem}.ui.placeholder .image.header:after{display:block;height:.85714286em;content:'';margin-left:3em}.ui.placeholder .header .line:first-child,.ui.placeholder .image .line:first-child,.ui.placeholder .paragraph .line:first-child{height:.01px}.ui.placeholder .header:not(:first-child):before,.ui.placeholder .image:not(:first-child):before,.ui.placeholder .paragraph:not(:first-child):before{height:1.42857143em;content:'';display:block}.ui.inverted.placeholder{background-image:-webkit-gradient(linear,left top,right top,from(rgba(255,255,255,.08)),color-stop(15%,rgba(255,255,255,.14)),color-stop(30%,rgba(255,255,255,.08)));background-image:-webkit-linear-gradient(left,rgba(255,255,255,.08) 0,rgba(255,255,255,.14) 15%,rgba(255,255,255,.08) 30%);background-image:linear-gradient(to right,rgba(255,255,255,.08) 0,rgba(255,255,255,.14) 15%,rgba(255,255,255,.08) 30%)}.ui.inverted.placeholder,.ui.inverted.placeholder .image.header:after,.ui.inverted.placeholder .line,.ui.inverted.placeholder .line:after,.ui.inverted.placeholder>:before{background-color:#1b1c1d}.ui.placeholder .full.line.line.line:after{width:0%}.ui.placeholder .very.long.line.line.line:after{width:10%}.ui.placeholder .long.line.line.line:after{width:35%}.ui.placeholder .medium.line.line.line:after{width:50%}.ui.placeholder .short.line.line.line:after{width:65%}.ui.placeholder .very.short.line.line.line:after{width:80%}.ui.fluid.placeholder{max-width:none} \ No newline at end of file diff --git a/app/static/semantic/components/popup.css b/app/static/semantic/components/popup.css new file mode 100755 index 0000000..5129201 --- /dev/null +++ b/app/static/semantic/components/popup.css @@ -0,0 +1,752 @@ +/*! + * # Semantic UI 2.4.0 - Popup + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */ + + +/******************************* + Popup +*******************************/ + +.ui.popup { + display: none; + position: absolute; + top: 0px; + right: 0px; + +/* Fixes content being squished when inline (moz only) */ + min-width: -webkit-min-content; + min-width: -moz-min-content; + min-width: min-content; + z-index: 1900; + border: 1px solid #D4D4D5; + line-height: 1.4285em; + max-width: 250px; + background: #FFFFFF; + padding: 0.833em 1em; + font-weight: normal; + font-style: normal; + color: rgba(0, 0, 0, 0.87); + border-radius: 0.28571429rem; + -webkit-box-shadow: 0px 2px 4px 0px rgba(34, 36, 38, 0.12), 0px 2px 10px 0px rgba(34, 36, 38, 0.15); + box-shadow: 0px 2px 4px 0px rgba(34, 36, 38, 0.12), 0px 2px 10px 0px rgba(34, 36, 38, 0.15); +} +.ui.popup > .header { + padding: 0em; + font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif; + font-size: 1.14285714em; + line-height: 1.2; + font-weight: bold; +} +.ui.popup > .header + .content { + padding-top: 0.5em; +} +.ui.popup:before { + position: absolute; + content: ''; + width: 0.71428571em; + height: 0.71428571em; + background: #FFFFFF; + -webkit-transform: rotate(45deg); + transform: rotate(45deg); + z-index: 2; + -webkit-box-shadow: 1px 1px 0px 0px #bababc; + box-shadow: 1px 1px 0px 0px #bababc; +} + + +/******************************* + Types +*******************************/ + + +/*-------------- + Tooltip +---------------*/ + + +/* Content */ +[data-tooltip] { + position: relative; +} + +/* Arrow */ +[data-tooltip]:before { + pointer-events: none; + position: absolute; + content: ''; + font-size: 1rem; + width: 0.71428571em; + height: 0.71428571em; + background: #FFFFFF; + -webkit-transform: rotate(45deg); + transform: rotate(45deg); + z-index: 2; + -webkit-box-shadow: 1px 1px 0px 0px #bababc; + box-shadow: 1px 1px 0px 0px #bababc; +} + +/* Popup */ +[data-tooltip]:after { + pointer-events: none; + content: attr(data-tooltip); + position: absolute; + text-transform: none; + text-align: left; + white-space: nowrap; + font-size: 1rem; + border: 1px solid #D4D4D5; + line-height: 1.4285em; + max-width: none; + background: #FFFFFF; + padding: 0.833em 1em; + font-weight: normal; + font-style: normal; + color: rgba(0, 0, 0, 0.87); + border-radius: 0.28571429rem; + -webkit-box-shadow: 0px 2px 4px 0px rgba(34, 36, 38, 0.12), 0px 2px 10px 0px rgba(34, 36, 38, 0.15); + box-shadow: 0px 2px 4px 0px rgba(34, 36, 38, 0.12), 0px 2px 10px 0px rgba(34, 36, 38, 0.15); + z-index: 1; +} + +/* Default Position (Top Center) */ +[data-tooltip]:not([data-position]):before { + top: auto; + right: auto; + bottom: 100%; + left: 50%; + background: #FFFFFF; + margin-left: -0.07142857rem; + margin-bottom: 0.14285714rem; +} +[data-tooltip]:not([data-position]):after { + left: 50%; + -webkit-transform: translateX(-50%); + transform: translateX(-50%); + bottom: 100%; + margin-bottom: 0.5em; +} + +/* Animation */ +[data-tooltip]:before, +[data-tooltip]:after { + pointer-events: none; + visibility: hidden; +} +[data-tooltip]:before { + opacity: 0; + -webkit-transform: rotate(45deg) scale(0) !important; + transform: rotate(45deg) scale(0) !important; + -webkit-transform-origin: center top; + transform-origin: center top; + -webkit-transition: all 0.1s ease; + transition: all 0.1s ease; +} +[data-tooltip]:after { + opacity: 1; + -webkit-transform-origin: center bottom; + transform-origin: center bottom; + -webkit-transition: all 0.1s ease; + transition: all 0.1s ease; +} +[data-tooltip]:hover:before, +[data-tooltip]:hover:after { + visibility: visible; + pointer-events: auto; +} +[data-tooltip]:hover:before { + -webkit-transform: rotate(45deg) scale(1) !important; + transform: rotate(45deg) scale(1) !important; + opacity: 1; +} + +/* Animation Position */ +[data-tooltip]:after, +[data-tooltip][data-position="top center"]:after, +[data-tooltip][data-position="bottom center"]:after { + -webkit-transform: translateX(-50%) scale(0) !important; + transform: translateX(-50%) scale(0) !important; +} +[data-tooltip]:hover:after, +[data-tooltip][data-position="bottom center"]:hover:after { + -webkit-transform: translateX(-50%) scale(1) !important; + transform: translateX(-50%) scale(1) !important; +} +[data-tooltip][data-position="left center"]:after, +[data-tooltip][data-position="right center"]:after { + -webkit-transform: translateY(-50%) scale(0) !important; + transform: translateY(-50%) scale(0) !important; +} +[data-tooltip][data-position="left center"]:hover:after, +[data-tooltip][data-position="right center"]:hover:after { + -webkit-transform: translateY(-50%) scale(1) !important; + transform: translateY(-50%) scale(1) !important; +} +[data-tooltip][data-position="top left"]:after, +[data-tooltip][data-position="top right"]:after, +[data-tooltip][data-position="bottom left"]:after, +[data-tooltip][data-position="bottom right"]:after { + -webkit-transform: scale(0) !important; + transform: scale(0) !important; +} +[data-tooltip][data-position="top left"]:hover:after, +[data-tooltip][data-position="top right"]:hover:after, +[data-tooltip][data-position="bottom left"]:hover:after, +[data-tooltip][data-position="bottom right"]:hover:after { + -webkit-transform: scale(1) !important; + transform: scale(1) !important; +} + +/*-------------- + Inverted +---------------*/ + + +/* Arrow */ +[data-tooltip][data-inverted]:before { + -webkit-box-shadow: none !important; + box-shadow: none !important; +} + +/* Arrow Position */ +[data-tooltip][data-inverted]:before { + background: #1B1C1D; +} + +/* Popup */ +[data-tooltip][data-inverted]:after { + background: #1B1C1D; + color: #FFFFFF; + border: none; + -webkit-box-shadow: none; + box-shadow: none; +} +[data-tooltip][data-inverted]:after .header { + background-color: none; + color: #FFFFFF; +} + +/*-------------- + Position +---------------*/ + + +/* Top Center */ +[data-position="top center"][data-tooltip]:after { + top: auto; + right: auto; + left: 50%; + bottom: 100%; + -webkit-transform: translateX(-50%); + transform: translateX(-50%); + margin-bottom: 0.5em; +} +[data-position="top center"][data-tooltip]:before { + top: auto; + right: auto; + bottom: 100%; + left: 50%; + background: #FFFFFF; + margin-left: -0.07142857rem; + margin-bottom: 0.14285714rem; +} + +/* Top Left */ +[data-position="top left"][data-tooltip]:after { + top: auto; + right: auto; + left: 0; + bottom: 100%; + margin-bottom: 0.5em; +} +[data-position="top left"][data-tooltip]:before { + top: auto; + right: auto; + bottom: 100%; + left: 1em; + margin-left: -0.07142857rem; + margin-bottom: 0.14285714rem; +} + +/* Top Right */ +[data-position="top right"][data-tooltip]:after { + top: auto; + left: auto; + right: 0; + bottom: 100%; + margin-bottom: 0.5em; +} +[data-position="top right"][data-tooltip]:before { + top: auto; + left: auto; + bottom: 100%; + right: 1em; + margin-left: -0.07142857rem; + margin-bottom: 0.14285714rem; +} + +/* Bottom Center */ +[data-position="bottom center"][data-tooltip]:after { + bottom: auto; + right: auto; + left: 50%; + top: 100%; + -webkit-transform: translateX(-50%); + transform: translateX(-50%); + margin-top: 0.5em; +} +[data-position="bottom center"][data-tooltip]:before { + bottom: auto; + right: auto; + top: 100%; + left: 50%; + margin-left: -0.07142857rem; + margin-top: 0.14285714rem; +} + +/* Bottom Left */ +[data-position="bottom left"][data-tooltip]:after { + left: 0; + top: 100%; + margin-top: 0.5em; +} +[data-position="bottom left"][data-tooltip]:before { + bottom: auto; + right: auto; + top: 100%; + left: 1em; + margin-left: -0.07142857rem; + margin-top: 0.14285714rem; +} + +/* Bottom Right */ +[data-position="bottom right"][data-tooltip]:after { + right: 0; + top: 100%; + margin-top: 0.5em; +} +[data-position="bottom right"][data-tooltip]:before { + bottom: auto; + left: auto; + top: 100%; + right: 1em; + margin-left: -0.14285714rem; + margin-top: 0.07142857rem; +} + +/* Left Center */ +[data-position="left center"][data-tooltip]:after { + right: 100%; + top: 50%; + margin-right: 0.5em; + -webkit-transform: translateY(-50%); + transform: translateY(-50%); +} +[data-position="left center"][data-tooltip]:before { + right: 100%; + top: 50%; + margin-top: -0.14285714rem; + margin-right: -0.07142857rem; +} + +/* Right Center */ +[data-position="right center"][data-tooltip]:after { + left: 100%; + top: 50%; + margin-left: 0.5em; + -webkit-transform: translateY(-50%); + transform: translateY(-50%); +} +[data-position="right center"][data-tooltip]:before { + left: 100%; + top: 50%; + margin-top: -0.07142857rem; + margin-left: 0.14285714rem; +} + +/* Arrow */ +[data-position~="bottom"][data-tooltip]:before { + background: #FFFFFF; + -webkit-box-shadow: -1px -1px 0px 0px #bababc; + box-shadow: -1px -1px 0px 0px #bababc; +} +[data-position="left center"][data-tooltip]:before { + background: #FFFFFF; + -webkit-box-shadow: 1px -1px 0px 0px #bababc; + box-shadow: 1px -1px 0px 0px #bababc; +} +[data-position="right center"][data-tooltip]:before { + background: #FFFFFF; + -webkit-box-shadow: -1px 1px 0px 0px #bababc; + box-shadow: -1px 1px 0px 0px #bababc; +} +[data-position~="top"][data-tooltip]:before { + background: #FFFFFF; +} + +/* Inverted Arrow Color */ +[data-inverted][data-position~="bottom"][data-tooltip]:before { + background: #1B1C1D; + -webkit-box-shadow: -1px -1px 0px 0px #bababc; + box-shadow: -1px -1px 0px 0px #bababc; +} +[data-inverted][data-position="left center"][data-tooltip]:before { + background: #1B1C1D; + -webkit-box-shadow: 1px -1px 0px 0px #bababc; + box-shadow: 1px -1px 0px 0px #bababc; +} +[data-inverted][data-position="right center"][data-tooltip]:before { + background: #1B1C1D; + -webkit-box-shadow: -1px 1px 0px 0px #bababc; + box-shadow: -1px 1px 0px 0px #bababc; +} +[data-inverted][data-position~="top"][data-tooltip]:before { + background: #1B1C1D; +} +[data-position~="bottom"][data-tooltip]:before { + -webkit-transform-origin: center bottom; + transform-origin: center bottom; +} +[data-position~="bottom"][data-tooltip]:after { + -webkit-transform-origin: center top; + transform-origin: center top; +} +[data-position="left center"][data-tooltip]:before { + -webkit-transform-origin: top center; + transform-origin: top center; +} +[data-position="left center"][data-tooltip]:after { + -webkit-transform-origin: right center; + transform-origin: right center; +} +[data-position="right center"][data-tooltip]:before { + -webkit-transform-origin: right center; + transform-origin: right center; +} +[data-position="right center"][data-tooltip]:after { + -webkit-transform-origin: left center; + transform-origin: left center; +} + +/*-------------- + Spacing +---------------*/ + +.ui.popup { + margin: 0em; +} + +/* Extending from Top */ +.ui.top.popup { + margin: 0em 0em 0.71428571em; +} +.ui.top.left.popup { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; +} +.ui.top.center.popup { + -webkit-transform-origin: center bottom; + transform-origin: center bottom; +} +.ui.top.right.popup { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; +} + +/* Extending from Vertical Center */ +.ui.left.center.popup { + margin: 0em 0.71428571em 0em 0em; + -webkit-transform-origin: right 50%; + transform-origin: right 50%; +} +.ui.right.center.popup { + margin: 0em 0em 0em 0.71428571em; + -webkit-transform-origin: left 50%; + transform-origin: left 50%; +} + +/* Extending from Bottom */ +.ui.bottom.popup { + margin: 0.71428571em 0em 0em; +} +.ui.bottom.left.popup { + -webkit-transform-origin: left top; + transform-origin: left top; +} +.ui.bottom.center.popup { + -webkit-transform-origin: center top; + transform-origin: center top; +} +.ui.bottom.right.popup { + -webkit-transform-origin: right top; + transform-origin: right top; +} + +/*-------------- + Pointer +---------------*/ + + +/*--- Below ---*/ + +.ui.bottom.center.popup:before { + margin-left: -0.30714286em; + top: -0.30714286em; + left: 50%; + right: auto; + bottom: auto; + -webkit-box-shadow: -1px -1px 0px 0px #bababc; + box-shadow: -1px -1px 0px 0px #bababc; +} +.ui.bottom.left.popup { + margin-left: 0em; +} +/*rtl:rename*/ +.ui.bottom.left.popup:before { + top: -0.30714286em; + left: 1em; + right: auto; + bottom: auto; + margin-left: 0em; + -webkit-box-shadow: -1px -1px 0px 0px #bababc; + box-shadow: -1px -1px 0px 0px #bababc; +} +.ui.bottom.right.popup { + margin-right: 0em; +} +/*rtl:rename*/ +.ui.bottom.right.popup:before { + top: -0.30714286em; + right: 1em; + bottom: auto; + left: auto; + margin-left: 0em; + -webkit-box-shadow: -1px -1px 0px 0px #bababc; + box-shadow: -1px -1px 0px 0px #bababc; +} + +/*--- Above ---*/ + +.ui.top.center.popup:before { + top: auto; + right: auto; + bottom: -0.30714286em; + left: 50%; + margin-left: -0.30714286em; +} +.ui.top.left.popup { + margin-left: 0em; +} +/*rtl:rename*/ +.ui.top.left.popup:before { + bottom: -0.30714286em; + left: 1em; + top: auto; + right: auto; + margin-left: 0em; +} +.ui.top.right.popup { + margin-right: 0em; +} +/*rtl:rename*/ +.ui.top.right.popup:before { + bottom: -0.30714286em; + right: 1em; + top: auto; + left: auto; + margin-left: 0em; +} + +/*--- Left Center ---*/ + +/*rtl:rename*/ +.ui.left.center.popup:before { + top: 50%; + right: -0.30714286em; + bottom: auto; + left: auto; + margin-top: -0.30714286em; + -webkit-box-shadow: 1px -1px 0px 0px #bababc; + box-shadow: 1px -1px 0px 0px #bababc; +} + +/*--- Right Center ---*/ + +/*rtl:rename*/ +.ui.right.center.popup:before { + top: 50%; + left: -0.30714286em; + bottom: auto; + right: auto; + margin-top: -0.30714286em; + -webkit-box-shadow: -1px 1px 0px 0px #bababc; + box-shadow: -1px 1px 0px 0px #bababc; +} + +/* Arrow Color By Location */ +.ui.bottom.popup:before { + background: #FFFFFF; +} +.ui.right.center.popup:before, +.ui.left.center.popup:before { + background: #FFFFFF; +} +.ui.top.popup:before { + background: #FFFFFF; +} + +/* Inverted Arrow Color */ +.ui.inverted.bottom.popup:before { + background: #1B1C1D; +} +.ui.inverted.right.center.popup:before, +.ui.inverted.left.center.popup:before { + background: #1B1C1D; +} +.ui.inverted.top.popup:before { + background: #1B1C1D; +} + + +/******************************* + Coupling +*******************************/ + + +/* Immediate Nested Grid */ +.ui.popup > .ui.grid:not(.padded) { + width: calc(100% + 1.75rem); + margin: -0.7rem -0.875rem; +} + + +/******************************* + States +*******************************/ + +.ui.loading.popup { + display: block; + visibility: hidden; + z-index: -1; +} +.ui.animating.popup, +.ui.visible.popup { + display: block; +} +.ui.visible.popup { + -webkit-transform: translateZ(0px); + transform: translateZ(0px); + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} + + +/******************************* + Variations +*******************************/ + + +/*-------------- + Basic +---------------*/ + +.ui.basic.popup:before { + display: none; +} + +/*-------------- + Wide +---------------*/ + +.ui.wide.popup { + max-width: 350px; +} +.ui[class*="very wide"].popup { + max-width: 550px; +} +@media only screen and (max-width: 767px) { + .ui.wide.popup, + .ui[class*="very wide"].popup { + max-width: 250px; + } +} + +/*-------------- + Fluid +---------------*/ + +.ui.fluid.popup { + width: 100%; + max-width: none; +} + +/*-------------- + Colors +---------------*/ + + +/* Inverted colors */ +.ui.inverted.popup { + background: #1B1C1D; + color: #FFFFFF; + border: none; + -webkit-box-shadow: none; + box-shadow: none; +} +.ui.inverted.popup .header { + background-color: none; + color: #FFFFFF; +} +.ui.inverted.popup:before { + background-color: #1B1C1D; + -webkit-box-shadow: none !important; + box-shadow: none !important; +} + +/*-------------- + Flowing +---------------*/ + +.ui.flowing.popup { + max-width: none; +} + +/*-------------- + Sizes +---------------*/ + +.ui.mini.popup { + font-size: 0.78571429rem; +} +.ui.tiny.popup { + font-size: 0.85714286rem; +} +.ui.small.popup { + font-size: 0.92857143rem; +} +.ui.popup { + font-size: 1rem; +} +.ui.large.popup { + font-size: 1.14285714rem; +} +.ui.huge.popup { + font-size: 1.42857143rem; +} + + +/******************************* + Theme Overrides +*******************************/ + + + +/******************************* + User Overrides +*******************************/ + diff --git a/app/static/semantic/components/popup.js b/app/static/semantic/components/popup.js new file mode 100755 index 0000000..3f9ca68 --- /dev/null +++ b/app/static/semantic/components/popup.js @@ -0,0 +1,1532 @@ +/*! + * # Semantic UI 2.4.1 - Popup + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */ + +;(function ($, window, document, undefined) { + +'use strict'; + +window = (typeof window != 'undefined' && window.Math == Math) + ? window + : (typeof self != 'undefined' && self.Math == Math) + ? self + : Function('return this')() +; + +$.fn.popup = function(parameters) { + var + $allModules = $(this), + $document = $(document), + $window = $(window), + $body = $('body'), + + moduleSelector = $allModules.selector || '', + + hasTouch = (true), + time = new Date().getTime(), + performance = [], + + query = arguments[0], + methodInvoked = (typeof query == 'string'), + queryArguments = [].slice.call(arguments, 1), + + returnedValue + ; + $allModules + .each(function() { + var + settings = ( $.isPlainObject(parameters) ) + ? $.extend(true, {}, $.fn.popup.settings, parameters) + : $.extend({}, $.fn.popup.settings), + + selector = settings.selector, + className = settings.className, + error = settings.error, + metadata = settings.metadata, + namespace = settings.namespace, + + eventNamespace = '.' + settings.namespace, + moduleNamespace = 'module-' + namespace, + + $module = $(this), + $context = $(settings.context), + $scrollContext = $(settings.scrollContext), + $boundary = $(settings.boundary), + $target = (settings.target) + ? $(settings.target) + : $module, + + $popup, + $offsetParent, + + searchDepth = 0, + triedPositions = false, + openedWithTouch = false, + + element = this, + instance = $module.data(moduleNamespace), + + documentObserver, + elementNamespace, + id, + module + ; + + module = { + + // binds events + initialize: function() { + module.debug('Initializing', $module); + module.createID(); + module.bind.events(); + if(!module.exists() && settings.preserve) { + module.create(); + } + if(settings.observeChanges) { + module.observeChanges(); + } + module.instantiate(); + }, + + instantiate: function() { + module.verbose('Storing instance', module); + instance = module; + $module + .data(moduleNamespace, instance) + ; + }, + + observeChanges: function() { + if('MutationObserver' in window) { + documentObserver = new MutationObserver(module.event.documentChanged); + documentObserver.observe(document, { + childList : true, + subtree : true + }); + module.debug('Setting up mutation observer', documentObserver); + } + }, + + refresh: function() { + if(settings.popup) { + $popup = $(settings.popup).eq(0); + } + else { + if(settings.inline) { + $popup = $target.nextAll(selector.popup).eq(0); + settings.popup = $popup; + } + } + if(settings.popup) { + $popup.addClass(className.loading); + $offsetParent = module.get.offsetParent(); + $popup.removeClass(className.loading); + if(settings.movePopup && module.has.popup() && module.get.offsetParent($popup)[0] !== $offsetParent[0]) { + module.debug('Moving popup to the same offset parent as target'); + $popup + .detach() + .appendTo($offsetParent) + ; + } + } + else { + $offsetParent = (settings.inline) + ? module.get.offsetParent($target) + : module.has.popup() + ? module.get.offsetParent($popup) + : $body + ; + } + if( $offsetParent.is('html') && $offsetParent[0] !== $body[0] ) { + module.debug('Setting page as offset parent'); + $offsetParent = $body; + } + if( module.get.variation() ) { + module.set.variation(); + } + }, + + reposition: function() { + module.refresh(); + module.set.position(); + }, + + destroy: function() { + module.debug('Destroying previous module'); + if(documentObserver) { + documentObserver.disconnect(); + } + // remove element only if was created dynamically + if($popup && !settings.preserve) { + module.removePopup(); + } + // clear all timeouts + clearTimeout(module.hideTimer); + clearTimeout(module.showTimer); + // remove events + module.unbind.close(); + module.unbind.events(); + $module + .removeData(moduleNamespace) + ; + }, + + event: { + start: function(event) { + var + delay = ($.isPlainObject(settings.delay)) + ? settings.delay.show + : settings.delay + ; + clearTimeout(module.hideTimer); + if(!openedWithTouch) { + module.showTimer = setTimeout(module.show, delay); + } + }, + end: function() { + var + delay = ($.isPlainObject(settings.delay)) + ? settings.delay.hide + : settings.delay + ; + clearTimeout(module.showTimer); + module.hideTimer = setTimeout(module.hide, delay); + }, + touchstart: function(event) { + openedWithTouch = true; + module.show(); + }, + resize: function() { + if( module.is.visible() ) { + module.set.position(); + } + }, + documentChanged: function(mutations) { + [].forEach.call(mutations, function(mutation) { + if(mutation.removedNodes) { + [].forEach.call(mutation.removedNodes, function(node) { + if(node == element || $(node).find(element).length > 0) { + module.debug('Element removed from DOM, tearing down events'); + module.destroy(); + } + }); + } + }); + }, + hideGracefully: function(event) { + var + $target = $(event.target), + isInDOM = $.contains(document.documentElement, event.target), + inPopup = ($target.closest(selector.popup).length > 0) + ; + // don't close on clicks inside popup + if(event && !inPopup && isInDOM) { + module.debug('Click occurred outside popup hiding popup'); + module.hide(); + } + else { + module.debug('Click was inside popup, keeping popup open'); + } + } + }, + + // generates popup html from metadata + create: function() { + var + html = module.get.html(), + title = module.get.title(), + content = module.get.content() + ; + + if(html || content || title) { + module.debug('Creating pop-up html'); + if(!html) { + html = settings.templates.popup({ + title : title, + content : content + }); + } + $popup = $('
') + .addClass(className.popup) + .data(metadata.activator, $module) + .html(html) + ; + if(settings.inline) { + module.verbose('Inserting popup element inline', $popup); + $popup + .insertAfter($module) + ; + } + else { + module.verbose('Appending popup element to body', $popup); + $popup + .appendTo( $context ) + ; + } + module.refresh(); + module.set.variation(); + + if(settings.hoverable) { + module.bind.popup(); + } + settings.onCreate.call($popup, element); + } + else if($target.next(selector.popup).length !== 0) { + module.verbose('Pre-existing popup found'); + settings.inline = true; + settings.popup = $target.next(selector.popup).data(metadata.activator, $module); + module.refresh(); + if(settings.hoverable) { + module.bind.popup(); + } + } + else if(settings.popup) { + $(settings.popup).data(metadata.activator, $module); + module.verbose('Used popup specified in settings'); + module.refresh(); + if(settings.hoverable) { + module.bind.popup(); + } + } + else { + module.debug('No content specified skipping display', element); + } + }, + + createID: function() { + id = (Math.random().toString(16) + '000000000').substr(2, 8); + elementNamespace = '.' + id; + module.verbose('Creating unique id for element', id); + }, + + // determines popup state + toggle: function() { + module.debug('Toggling pop-up'); + if( module.is.hidden() ) { + module.debug('Popup is hidden, showing pop-up'); + module.unbind.close(); + module.show(); + } + else { + module.debug('Popup is visible, hiding pop-up'); + module.hide(); + } + }, + + show: function(callback) { + callback = callback || function(){}; + module.debug('Showing pop-up', settings.transition); + if(module.is.hidden() && !( module.is.active() && module.is.dropdown()) ) { + if( !module.exists() ) { + module.create(); + } + if(settings.onShow.call($popup, element) === false) { + module.debug('onShow callback returned false, cancelling popup animation'); + return; + } + else if(!settings.preserve && !settings.popup) { + module.refresh(); + } + if( $popup && module.set.position() ) { + module.save.conditions(); + if(settings.exclusive) { + module.hideAll(); + } + module.animate.show(callback); + } + } + }, + + + hide: function(callback) { + callback = callback || function(){}; + if( module.is.visible() || module.is.animating() ) { + if(settings.onHide.call($popup, element) === false) { + module.debug('onHide callback returned false, cancelling popup animation'); + return; + } + module.remove.visible(); + module.unbind.close(); + module.restore.conditions(); + module.animate.hide(callback); + } + }, + + hideAll: function() { + $(selector.popup) + .filter('.' + className.popupVisible) + .each(function() { + $(this) + .data(metadata.activator) + .popup('hide') + ; + }) + ; + }, + exists: function() { + if(!$popup) { + return false; + } + if(settings.inline || settings.popup) { + return ( module.has.popup() ); + } + else { + return ( $popup.closest($context).length >= 1 ) + ? true + : false + ; + } + }, + + removePopup: function() { + if( module.has.popup() && !settings.popup) { + module.debug('Removing popup', $popup); + $popup.remove(); + $popup = undefined; + settings.onRemove.call($popup, element); + } + }, + + save: { + conditions: function() { + module.cache = { + title: $module.attr('title') + }; + if (module.cache.title) { + $module.removeAttr('title'); + } + module.verbose('Saving original attributes', module.cache.title); + } + }, + restore: { + conditions: function() { + if(module.cache && module.cache.title) { + $module.attr('title', module.cache.title); + module.verbose('Restoring original attributes', module.cache.title); + } + return true; + } + }, + supports: { + svg: function() { + return (typeof SVGGraphicsElement === 'undefined'); + } + }, + animate: { + show: function(callback) { + callback = $.isFunction(callback) ? callback : function(){}; + if(settings.transition && $.fn.transition !== undefined && $module.transition('is supported')) { + module.set.visible(); + $popup + .transition({ + animation : settings.transition + ' in', + queue : false, + debug : settings.debug, + verbose : settings.verbose, + duration : settings.duration, + onComplete : function() { + module.bind.close(); + callback.call($popup, element); + settings.onVisible.call($popup, element); + } + }) + ; + } + else { + module.error(error.noTransition); + } + }, + hide: function(callback) { + callback = $.isFunction(callback) ? callback : function(){}; + module.debug('Hiding pop-up'); + if(settings.onHide.call($popup, element) === false) { + module.debug('onHide callback returned false, cancelling popup animation'); + return; + } + if(settings.transition && $.fn.transition !== undefined && $module.transition('is supported')) { + $popup + .transition({ + animation : settings.transition + ' out', + queue : false, + duration : settings.duration, + debug : settings.debug, + verbose : settings.verbose, + onComplete : function() { + module.reset(); + callback.call($popup, element); + settings.onHidden.call($popup, element); + } + }) + ; + } + else { + module.error(error.noTransition); + } + } + }, + + change: { + content: function(html) { + $popup.html(html); + } + }, + + get: { + html: function() { + $module.removeData(metadata.html); + return $module.data(metadata.html) || settings.html; + }, + title: function() { + $module.removeData(metadata.title); + return $module.data(metadata.title) || settings.title; + }, + content: function() { + $module.removeData(metadata.content); + return $module.data(metadata.content) || settings.content || $module.attr('title'); + }, + variation: function() { + $module.removeData(metadata.variation); + return $module.data(metadata.variation) || settings.variation; + }, + popup: function() { + return $popup; + }, + popupOffset: function() { + return $popup.offset(); + }, + calculations: function() { + var + $popupOffsetParent = module.get.offsetParent($popup), + targetElement = $target[0], + isWindow = ($boundary[0] == window), + targetPosition = (settings.inline || (settings.popup && settings.movePopup)) + ? $target.position() + : $target.offset(), + screenPosition = (isWindow) + ? { top: 0, left: 0 } + : $boundary.offset(), + calculations = {}, + scroll = (isWindow) + ? { top: $window.scrollTop(), left: $window.scrollLeft() } + : { top: 0, left: 0}, + screen + ; + calculations = { + // element which is launching popup + target : { + element : $target[0], + width : $target.outerWidth(), + height : $target.outerHeight(), + top : targetPosition.top, + left : targetPosition.left, + margin : {} + }, + // popup itself + popup : { + width : $popup.outerWidth(), + height : $popup.outerHeight() + }, + // offset container (or 3d context) + parent : { + width : $offsetParent.outerWidth(), + height : $offsetParent.outerHeight() + }, + // screen boundaries + screen : { + top : screenPosition.top, + left : screenPosition.left, + scroll: { + top : scroll.top, + left : scroll.left + }, + width : $boundary.width(), + height : $boundary.height() + } + }; + + // if popup offset context is not same as target, then adjust calculations + if($popupOffsetParent.get(0) !== $offsetParent.get(0)) { + var + popupOffset = $popupOffsetParent.offset() + ; + calculations.target.top -= popupOffset.top; + calculations.target.left -= popupOffset.left; + calculations.parent.width = $popupOffsetParent.outerWidth(); + calculations.parent.height = $popupOffsetParent.outerHeight(); + } + + // add in container calcs if fluid + if( settings.setFluidWidth && module.is.fluid() ) { + calculations.container = { + width: $popup.parent().outerWidth() + }; + calculations.popup.width = calculations.container.width; + } + + // add in margins if inline + calculations.target.margin.top = (settings.inline) + ? parseInt( window.getComputedStyle(targetElement).getPropertyValue('margin-top'), 10) + : 0 + ; + calculations.target.margin.left = (settings.inline) + ? module.is.rtl() + ? parseInt( window.getComputedStyle(targetElement).getPropertyValue('margin-right'), 10) + : parseInt( window.getComputedStyle(targetElement).getPropertyValue('margin-left'), 10) + : 0 + ; + // calculate screen boundaries + screen = calculations.screen; + calculations.boundary = { + top : screen.top + screen.scroll.top, + bottom : screen.top + screen.scroll.top + screen.height, + left : screen.left + screen.scroll.left, + right : screen.left + screen.scroll.left + screen.width + }; + return calculations; + }, + id: function() { + return id; + }, + startEvent: function() { + if(settings.on == 'hover') { + return 'mouseenter'; + } + else if(settings.on == 'focus') { + return 'focus'; + } + return false; + }, + scrollEvent: function() { + return 'scroll'; + }, + endEvent: function() { + if(settings.on == 'hover') { + return 'mouseleave'; + } + else if(settings.on == 'focus') { + return 'blur'; + } + return false; + }, + distanceFromBoundary: function(offset, calculations) { + var + distanceFromBoundary = {}, + popup, + boundary + ; + calculations = calculations || module.get.calculations(); + + // shorthand + popup = calculations.popup; + boundary = calculations.boundary; + + if(offset) { + distanceFromBoundary = { + top : (offset.top - boundary.top), + left : (offset.left - boundary.left), + right : (boundary.right - (offset.left + popup.width) ), + bottom : (boundary.bottom - (offset.top + popup.height) ) + }; + module.verbose('Distance from boundaries determined', offset, distanceFromBoundary); + } + return distanceFromBoundary; + }, + offsetParent: function($element) { + var + element = ($element !== undefined) + ? $element[0] + : $target[0], + parentNode = element.parentNode, + $node = $(parentNode) + ; + if(parentNode) { + var + is2D = ($node.css('transform') === 'none'), + isStatic = ($node.css('position') === 'static'), + isBody = $node.is('body') + ; + while(parentNode && !isBody && isStatic && is2D) { + parentNode = parentNode.parentNode; + $node = $(parentNode); + is2D = ($node.css('transform') === 'none'); + isStatic = ($node.css('position') === 'static'); + isBody = $node.is('body'); + } + } + return ($node && $node.length > 0) + ? $node + : $() + ; + }, + positions: function() { + return { + 'top left' : false, + 'top center' : false, + 'top right' : false, + 'bottom left' : false, + 'bottom center' : false, + 'bottom right' : false, + 'left center' : false, + 'right center' : false + }; + }, + nextPosition: function(position) { + var + positions = position.split(' '), + verticalPosition = positions[0], + horizontalPosition = positions[1], + opposite = { + top : 'bottom', + bottom : 'top', + left : 'right', + right : 'left' + }, + adjacent = { + left : 'center', + center : 'right', + right : 'left' + }, + backup = { + 'top left' : 'top center', + 'top center' : 'top right', + 'top right' : 'right center', + 'right center' : 'bottom right', + 'bottom right' : 'bottom center', + 'bottom center' : 'bottom left', + 'bottom left' : 'left center', + 'left center' : 'top left' + }, + adjacentsAvailable = (verticalPosition == 'top' || verticalPosition == 'bottom'), + oppositeTried = false, + adjacentTried = false, + nextPosition = false + ; + if(!triedPositions) { + module.verbose('All available positions available'); + triedPositions = module.get.positions(); + } + + module.debug('Recording last position tried', position); + triedPositions[position] = true; + + if(settings.prefer === 'opposite') { + nextPosition = [opposite[verticalPosition], horizontalPosition]; + nextPosition = nextPosition.join(' '); + oppositeTried = (triedPositions[nextPosition] === true); + module.debug('Trying opposite strategy', nextPosition); + } + if((settings.prefer === 'adjacent') && adjacentsAvailable ) { + nextPosition = [verticalPosition, adjacent[horizontalPosition]]; + nextPosition = nextPosition.join(' '); + adjacentTried = (triedPositions[nextPosition] === true); + module.debug('Trying adjacent strategy', nextPosition); + } + if(adjacentTried || oppositeTried) { + module.debug('Using backup position', nextPosition); + nextPosition = backup[position]; + } + return nextPosition; + } + }, + + set: { + position: function(position, calculations) { + + // exit conditions + if($target.length === 0 || $popup.length === 0) { + module.error(error.notFound); + return; + } + var + offset, + distanceAway, + target, + popup, + parent, + positioning, + popupOffset, + distanceFromBoundary + ; + + calculations = calculations || module.get.calculations(); + position = position || $module.data(metadata.position) || settings.position; + + offset = $module.data(metadata.offset) || settings.offset; + distanceAway = settings.distanceAway; + + // shorthand + target = calculations.target; + popup = calculations.popup; + parent = calculations.parent; + + if(module.should.centerArrow(calculations)) { + module.verbose('Adjusting offset to center arrow on small target element'); + if(position == 'top left' || position == 'bottom left') { + offset += (target.width / 2) + offset -= settings.arrowPixelsFromEdge; + } + if(position == 'top right' || position == 'bottom right') { + offset -= (target.width / 2) + offset += settings.arrowPixelsFromEdge; + } + } + + if(target.width === 0 && target.height === 0 && !module.is.svg(target.element)) { + module.debug('Popup target is hidden, no action taken'); + return false; + } + + if(settings.inline) { + module.debug('Adding margin to calculation', target.margin); + if(position == 'left center' || position == 'right center') { + offset += target.margin.top; + distanceAway += -target.margin.left; + } + else if (position == 'top left' || position == 'top center' || position == 'top right') { + offset += target.margin.left; + distanceAway -= target.margin.top; + } + else { + offset += target.margin.left; + distanceAway += target.margin.top; + } + } + + module.debug('Determining popup position from calculations', position, calculations); + + if (module.is.rtl()) { + position = position.replace(/left|right/g, function (match) { + return (match == 'left') + ? 'right' + : 'left' + ; + }); + module.debug('RTL: Popup position updated', position); + } + + // if last attempt use specified last resort position + if(searchDepth == settings.maxSearchDepth && typeof settings.lastResort === 'string') { + position = settings.lastResort; + } + + switch (position) { + case 'top left': + positioning = { + top : 'auto', + bottom : parent.height - target.top + distanceAway, + left : target.left + offset, + right : 'auto' + }; + break; + case 'top center': + positioning = { + bottom : parent.height - target.top + distanceAway, + left : target.left + (target.width / 2) - (popup.width / 2) + offset, + top : 'auto', + right : 'auto' + }; + break; + case 'top right': + positioning = { + bottom : parent.height - target.top + distanceAway, + right : parent.width - target.left - target.width - offset, + top : 'auto', + left : 'auto' + }; + break; + case 'left center': + positioning = { + top : target.top + (target.height / 2) - (popup.height / 2) + offset, + right : parent.width - target.left + distanceAway, + left : 'auto', + bottom : 'auto' + }; + break; + case 'right center': + positioning = { + top : target.top + (target.height / 2) - (popup.height / 2) + offset, + left : target.left + target.width + distanceAway, + bottom : 'auto', + right : 'auto' + }; + break; + case 'bottom left': + positioning = { + top : target.top + target.height + distanceAway, + left : target.left + offset, + bottom : 'auto', + right : 'auto' + }; + break; + case 'bottom center': + positioning = { + top : target.top + target.height + distanceAway, + left : target.left + (target.width / 2) - (popup.width / 2) + offset, + bottom : 'auto', + right : 'auto' + }; + break; + case 'bottom right': + positioning = { + top : target.top + target.height + distanceAway, + right : parent.width - target.left - target.width - offset, + left : 'auto', + bottom : 'auto' + }; + break; + } + if(positioning === undefined) { + module.error(error.invalidPosition, position); + } + + module.debug('Calculated popup positioning values', positioning); + + // tentatively place on stage + $popup + .css(positioning) + .removeClass(className.position) + .addClass(position) + .addClass(className.loading) + ; + + popupOffset = module.get.popupOffset(); + + // see if any boundaries are surpassed with this tentative position + distanceFromBoundary = module.get.distanceFromBoundary(popupOffset, calculations); + + if( module.is.offstage(distanceFromBoundary, position) ) { + module.debug('Position is outside viewport', position); + if(searchDepth < settings.maxSearchDepth) { + searchDepth++; + position = module.get.nextPosition(position); + module.debug('Trying new position', position); + return ($popup) + ? module.set.position(position, calculations) + : false + ; + } + else { + if(settings.lastResort) { + module.debug('No position found, showing with last position'); + } + else { + module.debug('Popup could not find a position to display', $popup); + module.error(error.cannotPlace, element); + module.remove.attempts(); + module.remove.loading(); + module.reset(); + settings.onUnplaceable.call($popup, element); + return false; + } + } + } + module.debug('Position is on stage', position); + module.remove.attempts(); + module.remove.loading(); + if( settings.setFluidWidth && module.is.fluid() ) { + module.set.fluidWidth(calculations); + } + return true; + }, + + fluidWidth: function(calculations) { + calculations = calculations || module.get.calculations(); + module.debug('Automatically setting element width to parent width', calculations.parent.width); + $popup.css('width', calculations.container.width); + }, + + variation: function(variation) { + variation = variation || module.get.variation(); + if(variation && module.has.popup() ) { + module.verbose('Adding variation to popup', variation); + $popup.addClass(variation); + } + }, + + visible: function() { + $module.addClass(className.visible); + } + }, + + remove: { + loading: function() { + $popup.removeClass(className.loading); + }, + variation: function(variation) { + variation = variation || module.get.variation(); + if(variation) { + module.verbose('Removing variation', variation); + $popup.removeClass(variation); + } + }, + visible: function() { + $module.removeClass(className.visible); + }, + attempts: function() { + module.verbose('Resetting all searched positions'); + searchDepth = 0; + triedPositions = false; + } + }, + + bind: { + events: function() { + module.debug('Binding popup events to module'); + if(settings.on == 'click') { + $module + .on('click' + eventNamespace, module.toggle) + ; + } + if(settings.on == 'hover' && hasTouch) { + $module + .on('touchstart' + eventNamespace, module.event.touchstart) + ; + } + if( module.get.startEvent() ) { + $module + .on(module.get.startEvent() + eventNamespace, module.event.start) + .on(module.get.endEvent() + eventNamespace, module.event.end) + ; + } + if(settings.target) { + module.debug('Target set to element', $target); + } + $window.on('resize' + elementNamespace, module.event.resize); + }, + popup: function() { + module.verbose('Allowing hover events on popup to prevent closing'); + if( $popup && module.has.popup() ) { + $popup + .on('mouseenter' + eventNamespace, module.event.start) + .on('mouseleave' + eventNamespace, module.event.end) + ; + } + }, + close: function() { + if(settings.hideOnScroll === true || (settings.hideOnScroll == 'auto' && settings.on != 'click')) { + module.bind.closeOnScroll(); + } + if(module.is.closable()) { + module.bind.clickaway(); + } + else if(settings.on == 'hover' && openedWithTouch) { + module.bind.touchClose(); + } + }, + closeOnScroll: function() { + module.verbose('Binding scroll close event to document'); + $scrollContext + .one(module.get.scrollEvent() + elementNamespace, module.event.hideGracefully) + ; + }, + touchClose: function() { + module.verbose('Binding popup touchclose event to document'); + $document + .on('touchstart' + elementNamespace, function(event) { + module.verbose('Touched away from popup'); + module.event.hideGracefully.call(element, event); + }) + ; + }, + clickaway: function() { + module.verbose('Binding popup close event to document'); + $document + .on('click' + elementNamespace, function(event) { + module.verbose('Clicked away from popup'); + module.event.hideGracefully.call(element, event); + }) + ; + } + }, + + unbind: { + events: function() { + $window + .off(elementNamespace) + ; + $module + .off(eventNamespace) + ; + }, + close: function() { + $document + .off(elementNamespace) + ; + $scrollContext + .off(elementNamespace) + ; + }, + }, + + has: { + popup: function() { + return ($popup && $popup.length > 0); + } + }, + + should: { + centerArrow: function(calculations) { + return !module.is.basic() && calculations.target.width <= (settings.arrowPixelsFromEdge * 2); + }, + }, + + is: { + closable: function() { + if(settings.closable == 'auto') { + if(settings.on == 'hover') { + return false; + } + return true; + } + return settings.closable; + }, + offstage: function(distanceFromBoundary, position) { + var + offstage = [] + ; + // return boundaries that have been surpassed + $.each(distanceFromBoundary, function(direction, distance) { + if(distance < -settings.jitter) { + module.debug('Position exceeds allowable distance from edge', direction, distance, position); + offstage.push(direction); + } + }); + if(offstage.length > 0) { + return true; + } + else { + return false; + } + }, + svg: function(element) { + return module.supports.svg() && (element instanceof SVGGraphicsElement); + }, + basic: function() { + return $module.hasClass(className.basic); + }, + active: function() { + return $module.hasClass(className.active); + }, + animating: function() { + return ($popup !== undefined && $popup.hasClass(className.animating) ); + }, + fluid: function() { + return ($popup !== undefined && $popup.hasClass(className.fluid)); + }, + visible: function() { + return ($popup !== undefined && $popup.hasClass(className.popupVisible)); + }, + dropdown: function() { + return $module.hasClass(className.dropdown); + }, + hidden: function() { + return !module.is.visible(); + }, + rtl: function () { + return $module.css('direction') == 'rtl'; + } + }, + + reset: function() { + module.remove.visible(); + if(settings.preserve) { + if($.fn.transition !== undefined) { + $popup + .transition('remove transition') + ; + } + } + else { + module.removePopup(); + } + }, + + setting: function(name, value) { + if( $.isPlainObject(name) ) { + $.extend(true, settings, name); + } + else if(value !== undefined) { + settings[name] = value; + } + else { + return settings[name]; + } + }, + internal: function(name, value) { + if( $.isPlainObject(name) ) { + $.extend(true, module, name); + } + else if(value !== undefined) { + module[name] = value; + } + else { + return module[name]; + } + }, + debug: function() { + if(!settings.silent && settings.debug) { + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':'); + module.debug.apply(console, arguments); + } + } + }, + verbose: function() { + if(!settings.silent && settings.verbose && settings.debug) { + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':'); + module.verbose.apply(console, arguments); + } + } + }, + error: function() { + if(!settings.silent) { + module.error = Function.prototype.bind.call(console.error, console, settings.name + ':'); + module.error.apply(console, arguments); + } + }, + performance: { + log: function(message) { + var + currentTime, + executionTime, + previousTime + ; + if(settings.performance) { + currentTime = new Date().getTime(); + previousTime = time || currentTime; + executionTime = currentTime - previousTime; + time = currentTime; + performance.push({ + 'Name' : message[0], + 'Arguments' : [].slice.call(message, 1) || '', + 'Element' : element, + 'Execution Time' : executionTime + }); + } + clearTimeout(module.performance.timer); + module.performance.timer = setTimeout(module.performance.display, 500); + }, + display: function() { + var + title = settings.name + ':', + totalTime = 0 + ; + time = false; + clearTimeout(module.performance.timer); + $.each(performance, function(index, data) { + totalTime += data['Execution Time']; + }); + title += ' ' + totalTime + 'ms'; + if(moduleSelector) { + title += ' \'' + moduleSelector + '\''; + } + if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { + console.groupCollapsed(title); + if(console.table) { + console.table(performance); + } + else { + $.each(performance, function(index, data) { + console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); + }); + } + console.groupEnd(); + } + performance = []; + } + }, + invoke: function(query, passedArguments, context) { + var + object = instance, + maxDepth, + found, + response + ; + passedArguments = passedArguments || queryArguments; + context = element || context; + if(typeof query == 'string' && object !== undefined) { + query = query.split(/[\. ]/); + maxDepth = query.length - 1; + $.each(query, function(depth, value) { + var camelCaseValue = (depth != maxDepth) + ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) + : query + ; + if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) { + object = object[camelCaseValue]; + } + else if( object[camelCaseValue] !== undefined ) { + found = object[camelCaseValue]; + return false; + } + else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) { + object = object[value]; + } + else if( object[value] !== undefined ) { + found = object[value]; + return false; + } + else { + return false; + } + }); + } + if ( $.isFunction( found ) ) { + response = found.apply(context, passedArguments); + } + else if(found !== undefined) { + response = found; + } + if($.isArray(returnedValue)) { + returnedValue.push(response); + } + else if(returnedValue !== undefined) { + returnedValue = [returnedValue, response]; + } + else if(response !== undefined) { + returnedValue = response; + } + return found; + } + }; + + if(methodInvoked) { + if(instance === undefined) { + module.initialize(); + } + module.invoke(query); + } + else { + if(instance !== undefined) { + instance.invoke('destroy'); + } + module.initialize(); + } + }) + ; + + return (returnedValue !== undefined) + ? returnedValue + : this + ; +}; + +$.fn.popup.settings = { + + name : 'Popup', + + // module settings + silent : false, + debug : false, + verbose : false, + performance : true, + namespace : 'popup', + + // whether it should use dom mutation observers + observeChanges : true, + + // callback only when element added to dom + onCreate : function(){}, + + // callback before element removed from dom + onRemove : function(){}, + + // callback before show animation + onShow : function(){}, + + // callback after show animation + onVisible : function(){}, + + // callback before hide animation + onHide : function(){}, + + // callback when popup cannot be positioned in visible screen + onUnplaceable : function(){}, + + // callback after hide animation + onHidden : function(){}, + + // when to show popup + on : 'hover', + + // element to use to determine if popup is out of boundary + boundary : window, + + // whether to add touchstart events when using hover + addTouchEvents : true, + + // default position relative to element + position : 'top left', + + // name of variation to use + variation : '', + + // whether popup should be moved to context + movePopup : true, + + // element which popup should be relative to + target : false, + + // jq selector or element that should be used as popup + popup : false, + + // popup should remain inline next to activator + inline : false, + + // popup should be removed from page on hide + preserve : false, + + // popup should not close when being hovered on + hoverable : false, + + // explicitly set content + content : false, + + // explicitly set html + html : false, + + // explicitly set title + title : false, + + // whether automatically close on clickaway when on click + closable : true, + + // automatically hide on scroll + hideOnScroll : 'auto', + + // hide other popups on show + exclusive : false, + + // context to attach popups + context : 'body', + + // context for binding scroll events + scrollContext : window, + + // position to prefer when calculating new position + prefer : 'opposite', + + // specify position to appear even if it doesn't fit + lastResort : false, + + // number of pixels from edge of popup to pointing arrow center (used from centering) + arrowPixelsFromEdge: 20, + + // delay used to prevent accidental refiring of animations due to user error + delay : { + show : 50, + hide : 70 + }, + + // whether fluid variation should assign width explicitly + setFluidWidth : true, + + // transition settings + duration : 200, + transition : 'scale', + + // distance away from activating element in px + distanceAway : 0, + + // number of pixels an element is allowed to be "offstage" for a position to be chosen (allows for rounding) + jitter : 2, + + // offset on aligning axis from calculated position + offset : 0, + + // maximum times to look for a position before failing (9 positions total) + maxSearchDepth : 15, + + error: { + invalidPosition : 'The position you specified is not a valid position', + cannotPlace : 'Popup does not fit within the boundaries of the viewport', + method : 'The method you called is not defined.', + noTransition : 'This module requires ui transitions ', + notFound : 'The target or popup you specified does not exist on the page' + }, + + metadata: { + activator : 'activator', + content : 'content', + html : 'html', + offset : 'offset', + position : 'position', + title : 'title', + variation : 'variation' + }, + + className : { + active : 'active', + basic : 'basic', + animating : 'animating', + dropdown : 'dropdown', + fluid : 'fluid', + loading : 'loading', + popup : 'ui popup', + position : 'top left center bottom right', + visible : 'visible', + popupVisible : 'visible' + }, + + selector : { + popup : '.ui.popup' + }, + + templates: { + escape: function(string) { + var + badChars = /[&<>"'`]/g, + shouldEscape = /[&<>"'`]/, + escape = { + "&": "&", + "<": "<", + ">": ">", + '"': """, + "'": "'", + "`": "`" + }, + escapedChar = function(chr) { + return escape[chr]; + } + ; + if(shouldEscape.test(string)) { + return string.replace(badChars, escapedChar); + } + return string; + }, + popup: function(text) { + var + html = '', + escape = $.fn.popup.settings.templates.escape + ; + if(typeof text !== undefined) { + if(typeof text.title !== undefined && text.title) { + text.title = escape(text.title); + html += '
' + text.title + '
'; + } + if(typeof text.content !== undefined && text.content) { + text.content = escape(text.content); + html += '
' + text.content + '
'; + } + } + return html; + } + } + +}; + + +})( jQuery, window, document ); diff --git a/app/static/semantic/components/popup.min.css b/app/static/semantic/components/popup.min.css new file mode 100755 index 0000000..81fb202 --- /dev/null +++ b/app/static/semantic/components/popup.min.css @@ -0,0 +1,9 @@ +/*! + * # Semantic UI 2.4.0 - Popup + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */.ui.popup{display:none;position:absolute;top:0;right:0;min-width:-webkit-min-content;min-width:-moz-min-content;min-width:min-content;z-index:1900;border:1px solid #d4d4d5;line-height:1.4285em;max-width:250px;background:#fff;padding:.833em 1em;font-weight:400;font-style:normal;color:rgba(0,0,0,.87);border-radius:.28571429rem;-webkit-box-shadow:0 2px 4px 0 rgba(34,36,38,.12),0 2px 10px 0 rgba(34,36,38,.15);box-shadow:0 2px 4px 0 rgba(34,36,38,.12),0 2px 10px 0 rgba(34,36,38,.15)}.ui.popup>.header{padding:0;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-size:1.14285714em;line-height:1.2;font-weight:700}.ui.popup>.header+.content{padding-top:.5em}.ui.popup:before{position:absolute;content:'';width:.71428571em;height:.71428571em;background:#fff;-webkit-transform:rotate(45deg);transform:rotate(45deg);z-index:2;-webkit-box-shadow:1px 1px 0 0 #bababc;box-shadow:1px 1px 0 0 #bababc}[data-tooltip]{position:relative}[data-tooltip]:before{pointer-events:none;position:absolute;content:'';font-size:1rem;width:.71428571em;height:.71428571em;background:#fff;-webkit-transform:rotate(45deg);transform:rotate(45deg);z-index:2;-webkit-box-shadow:1px 1px 0 0 #bababc;box-shadow:1px 1px 0 0 #bababc}[data-tooltip]:after{pointer-events:none;content:attr(data-tooltip);position:absolute;text-transform:none;text-align:left;white-space:nowrap;font-size:1rem;border:1px solid #d4d4d5;line-height:1.4285em;max-width:none;background:#fff;padding:.833em 1em;font-weight:400;font-style:normal;color:rgba(0,0,0,.87);border-radius:.28571429rem;-webkit-box-shadow:0 2px 4px 0 rgba(34,36,38,.12),0 2px 10px 0 rgba(34,36,38,.15);box-shadow:0 2px 4px 0 rgba(34,36,38,.12),0 2px 10px 0 rgba(34,36,38,.15);z-index:1}[data-tooltip]:not([data-position]):before{top:auto;right:auto;bottom:100%;left:50%;background:#fff;margin-left:-.07142857rem;margin-bottom:.14285714rem}[data-tooltip]:not([data-position]):after{left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);bottom:100%;margin-bottom:.5em}[data-tooltip]:after,[data-tooltip]:before{pointer-events:none;visibility:hidden}[data-tooltip]:before{opacity:0;-webkit-transform:rotate(45deg) scale(0)!important;transform:rotate(45deg) scale(0)!important;-webkit-transform-origin:center top;transform-origin:center top;-webkit-transition:all .1s ease;transition:all .1s ease}[data-tooltip]:after{opacity:1;-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-transition:all .1s ease;transition:all .1s ease}[data-tooltip]:hover:after,[data-tooltip]:hover:before{visibility:visible;pointer-events:auto}[data-tooltip]:hover:before{-webkit-transform:rotate(45deg) scale(1)!important;transform:rotate(45deg) scale(1)!important;opacity:1}[data-tooltip]:after,[data-tooltip][data-position="bottom center"]:after,[data-tooltip][data-position="top center"]:after{-webkit-transform:translateX(-50%) scale(0)!important;transform:translateX(-50%) scale(0)!important}[data-tooltip]:hover:after,[data-tooltip][data-position="bottom center"]:hover:after{-webkit-transform:translateX(-50%) scale(1)!important;transform:translateX(-50%) scale(1)!important}[data-tooltip][data-position="left center"]:after,[data-tooltip][data-position="right center"]:after{-webkit-transform:translateY(-50%) scale(0)!important;transform:translateY(-50%) scale(0)!important}[data-tooltip][data-position="left center"]:hover:after,[data-tooltip][data-position="right center"]:hover:after{-webkit-transform:translateY(-50%) scale(1)!important;transform:translateY(-50%) scale(1)!important}[data-tooltip][data-position="bottom left"]:after,[data-tooltip][data-position="bottom right"]:after,[data-tooltip][data-position="top left"]:after,[data-tooltip][data-position="top right"]:after{-webkit-transform:scale(0)!important;transform:scale(0)!important}[data-tooltip][data-position="bottom left"]:hover:after,[data-tooltip][data-position="bottom right"]:hover:after,[data-tooltip][data-position="top left"]:hover:after,[data-tooltip][data-position="top right"]:hover:after{-webkit-transform:scale(1)!important;transform:scale(1)!important}[data-tooltip][data-inverted]:before{-webkit-box-shadow:none!important;box-shadow:none!important}[data-tooltip][data-inverted]:before{background:#1b1c1d}[data-tooltip][data-inverted]:after{background:#1b1c1d;color:#fff;border:none;-webkit-box-shadow:none;box-shadow:none}[data-tooltip][data-inverted]:after .header{background-color:none;color:#fff}[data-position="top center"][data-tooltip]:after{top:auto;right:auto;left:50%;bottom:100%;-webkit-transform:translateX(-50%);transform:translateX(-50%);margin-bottom:.5em}[data-position="top center"][data-tooltip]:before{top:auto;right:auto;bottom:100%;left:50%;background:#fff;margin-left:-.07142857rem;margin-bottom:.14285714rem}[data-position="top left"][data-tooltip]:after{top:auto;right:auto;left:0;bottom:100%;margin-bottom:.5em}[data-position="top left"][data-tooltip]:before{top:auto;right:auto;bottom:100%;left:1em;margin-left:-.07142857rem;margin-bottom:.14285714rem}[data-position="top right"][data-tooltip]:after{top:auto;left:auto;right:0;bottom:100%;margin-bottom:.5em}[data-position="top right"][data-tooltip]:before{top:auto;left:auto;bottom:100%;right:1em;margin-left:-.07142857rem;margin-bottom:.14285714rem}[data-position="bottom center"][data-tooltip]:after{bottom:auto;right:auto;left:50%;top:100%;-webkit-transform:translateX(-50%);transform:translateX(-50%);margin-top:.5em}[data-position="bottom center"][data-tooltip]:before{bottom:auto;right:auto;top:100%;left:50%;margin-left:-.07142857rem;margin-top:.14285714rem}[data-position="bottom left"][data-tooltip]:after{left:0;top:100%;margin-top:.5em}[data-position="bottom left"][data-tooltip]:before{bottom:auto;right:auto;top:100%;left:1em;margin-left:-.07142857rem;margin-top:.14285714rem}[data-position="bottom right"][data-tooltip]:after{right:0;top:100%;margin-top:.5em}[data-position="bottom right"][data-tooltip]:before{bottom:auto;left:auto;top:100%;right:1em;margin-left:-.14285714rem;margin-top:.07142857rem}[data-position="left center"][data-tooltip]:after{right:100%;top:50%;margin-right:.5em;-webkit-transform:translateY(-50%);transform:translateY(-50%)}[data-position="left center"][data-tooltip]:before{right:100%;top:50%;margin-top:-.14285714rem;margin-right:-.07142857rem}[data-position="right center"][data-tooltip]:after{left:100%;top:50%;margin-left:.5em;-webkit-transform:translateY(-50%);transform:translateY(-50%)}[data-position="right center"][data-tooltip]:before{left:100%;top:50%;margin-top:-.07142857rem;margin-left:.14285714rem}[data-position~=bottom][data-tooltip]:before{background:#fff;-webkit-box-shadow:-1px -1px 0 0 #bababc;box-shadow:-1px -1px 0 0 #bababc}[data-position="left center"][data-tooltip]:before{background:#fff;-webkit-box-shadow:1px -1px 0 0 #bababc;box-shadow:1px -1px 0 0 #bababc}[data-position="right center"][data-tooltip]:before{background:#fff;-webkit-box-shadow:-1px 1px 0 0 #bababc;box-shadow:-1px 1px 0 0 #bababc}[data-position~=top][data-tooltip]:before{background:#fff}[data-inverted][data-position~=bottom][data-tooltip]:before{background:#1b1c1d;-webkit-box-shadow:-1px -1px 0 0 #bababc;box-shadow:-1px -1px 0 0 #bababc}[data-inverted][data-position="left center"][data-tooltip]:before{background:#1b1c1d;-webkit-box-shadow:1px -1px 0 0 #bababc;box-shadow:1px -1px 0 0 #bababc}[data-inverted][data-position="right center"][data-tooltip]:before{background:#1b1c1d;-webkit-box-shadow:-1px 1px 0 0 #bababc;box-shadow:-1px 1px 0 0 #bababc}[data-inverted][data-position~=top][data-tooltip]:before{background:#1b1c1d}[data-position~=bottom][data-tooltip]:before{-webkit-transform-origin:center bottom;transform-origin:center bottom}[data-position~=bottom][data-tooltip]:after{-webkit-transform-origin:center top;transform-origin:center top}[data-position="left center"][data-tooltip]:before{-webkit-transform-origin:top center;transform-origin:top center}[data-position="left center"][data-tooltip]:after{-webkit-transform-origin:right center;transform-origin:right center}[data-position="right center"][data-tooltip]:before{-webkit-transform-origin:right center;transform-origin:right center}[data-position="right center"][data-tooltip]:after{-webkit-transform-origin:left center;transform-origin:left center}.ui.popup{margin:0}.ui.top.popup{margin:0 0 .71428571em}.ui.top.left.popup{-webkit-transform-origin:left bottom;transform-origin:left bottom}.ui.top.center.popup{-webkit-transform-origin:center bottom;transform-origin:center bottom}.ui.top.right.popup{-webkit-transform-origin:right bottom;transform-origin:right bottom}.ui.left.center.popup{margin:0 .71428571em 0 0;-webkit-transform-origin:right 50%;transform-origin:right 50%}.ui.right.center.popup{margin:0 0 0 .71428571em;-webkit-transform-origin:left 50%;transform-origin:left 50%}.ui.bottom.popup{margin:.71428571em 0 0}.ui.bottom.left.popup{-webkit-transform-origin:left top;transform-origin:left top}.ui.bottom.center.popup{-webkit-transform-origin:center top;transform-origin:center top}.ui.bottom.right.popup{-webkit-transform-origin:right top;transform-origin:right top}.ui.bottom.center.popup:before{margin-left:-.30714286em;top:-.30714286em;left:50%;right:auto;bottom:auto;-webkit-box-shadow:-1px -1px 0 0 #bababc;box-shadow:-1px -1px 0 0 #bababc}.ui.bottom.left.popup{margin-left:0}.ui.bottom.left.popup:before{top:-.30714286em;left:1em;right:auto;bottom:auto;margin-left:0;-webkit-box-shadow:-1px -1px 0 0 #bababc;box-shadow:-1px -1px 0 0 #bababc}.ui.bottom.right.popup{margin-right:0}.ui.bottom.right.popup:before{top:-.30714286em;right:1em;bottom:auto;left:auto;margin-left:0;-webkit-box-shadow:-1px -1px 0 0 #bababc;box-shadow:-1px -1px 0 0 #bababc}.ui.top.center.popup:before{top:auto;right:auto;bottom:-.30714286em;left:50%;margin-left:-.30714286em}.ui.top.left.popup{margin-left:0}.ui.top.left.popup:before{bottom:-.30714286em;left:1em;top:auto;right:auto;margin-left:0}.ui.top.right.popup{margin-right:0}.ui.top.right.popup:before{bottom:-.30714286em;right:1em;top:auto;left:auto;margin-left:0}.ui.left.center.popup:before{top:50%;right:-.30714286em;bottom:auto;left:auto;margin-top:-.30714286em;-webkit-box-shadow:1px -1px 0 0 #bababc;box-shadow:1px -1px 0 0 #bababc}.ui.right.center.popup:before{top:50%;left:-.30714286em;bottom:auto;right:auto;margin-top:-.30714286em;-webkit-box-shadow:-1px 1px 0 0 #bababc;box-shadow:-1px 1px 0 0 #bababc}.ui.bottom.popup:before{background:#fff}.ui.left.center.popup:before,.ui.right.center.popup:before{background:#fff}.ui.top.popup:before{background:#fff}.ui.inverted.bottom.popup:before{background:#1b1c1d}.ui.inverted.left.center.popup:before,.ui.inverted.right.center.popup:before{background:#1b1c1d}.ui.inverted.top.popup:before{background:#1b1c1d}.ui.popup>.ui.grid:not(.padded){width:calc(100% + 1.75rem);margin:-.7rem -.875rem}.ui.loading.popup{display:block;visibility:hidden;z-index:-1}.ui.animating.popup,.ui.visible.popup{display:block}.ui.visible.popup{-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.ui.basic.popup:before{display:none}.ui.wide.popup{max-width:350px}.ui[class*="very wide"].popup{max-width:550px}@media only screen and (max-width:767px){.ui.wide.popup,.ui[class*="very wide"].popup{max-width:250px}}.ui.fluid.popup{width:100%;max-width:none}.ui.inverted.popup{background:#1b1c1d;color:#fff;border:none;-webkit-box-shadow:none;box-shadow:none}.ui.inverted.popup .header{background-color:none;color:#fff}.ui.inverted.popup:before{background-color:#1b1c1d;-webkit-box-shadow:none!important;box-shadow:none!important}.ui.flowing.popup{max-width:none}.ui.mini.popup{font-size:.78571429rem}.ui.tiny.popup{font-size:.85714286rem}.ui.small.popup{font-size:.92857143rem}.ui.popup{font-size:1rem}.ui.large.popup{font-size:1.14285714rem}.ui.huge.popup{font-size:1.42857143rem} \ No newline at end of file diff --git a/app/static/semantic/components/popup.min.js b/app/static/semantic/components/popup.min.js new file mode 100755 index 0000000..ecd7334 --- /dev/null +++ b/app/static/semantic/components/popup.min.js @@ -0,0 +1 @@ +!function(N,V,W,M){"use strict";V=void 0!==V&&V.Math==Math?V:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),N.fn.popup=function(x){var k,t=N(this),E=N(W),S=N(V),A=N("body"),F=t.selector||"",O=(new Date).getTime(),D=[],j=x,H="string"==typeof j,R=[].slice.call(arguments,1);return t.each(function(){var u,p,t,e,o,c,d=N.isPlainObject(x)?N.extend(!0,{},N.fn.popup.settings,x):N.extend({},N.fn.popup.settings),i=d.selector,f=d.className,g=d.error,h=d.metadata,n=d.namespace,r="."+d.namespace,a="module-"+n,m=N(this),s=N(d.context),l=N(d.scrollContext),v=N(d.boundary),b=d.target?N(d.target):m,w=0,y=!1,P=!1,C=this,T=m.data(a);c={initialize:function(){c.debug("Initializing",m),c.createID(),c.bind.events(),!c.exists()&&d.preserve&&c.create(),d.observeChanges&&c.observeChanges(),c.instantiate()},instantiate:function(){c.verbose("Storing instance",c),T=c,m.data(a,T)},observeChanges:function(){"MutationObserver"in V&&((t=new MutationObserver(c.event.documentChanged)).observe(W,{childList:!0,subtree:!0}),c.debug("Setting up mutation observer",t))},refresh:function(){d.popup?u=N(d.popup).eq(0):d.inline&&(u=b.nextAll(i.popup).eq(0),d.popup=u),d.popup?(u.addClass(f.loading),p=c.get.offsetParent(),u.removeClass(f.loading),d.movePopup&&c.has.popup()&&c.get.offsetParent(u)[0]!==p[0]&&(c.debug("Moving popup to the same offset parent as target"),u.detach().appendTo(p))):p=d.inline?c.get.offsetParent(b):c.has.popup()?c.get.offsetParent(u):A,p.is("html")&&p[0]!==A[0]&&(c.debug("Setting page as offset parent"),p=A),c.get.variation()&&c.set.variation()},reposition:function(){c.refresh(),c.set.position()},destroy:function(){c.debug("Destroying previous module"),t&&t.disconnect(),u&&!d.preserve&&c.removePopup(),clearTimeout(c.hideTimer),clearTimeout(c.showTimer),c.unbind.close(),c.unbind.events(),m.removeData(a)},event:{start:function(t){var e=N.isPlainObject(d.delay)?d.delay.show:d.delay;clearTimeout(c.hideTimer),P||(c.showTimer=setTimeout(c.show,e))},end:function(){var t=N.isPlainObject(d.delay)?d.delay.hide:d.delay;clearTimeout(c.showTimer),c.hideTimer=setTimeout(c.hide,t)},touchstart:function(t){P=!0,c.show()},resize:function(){c.is.visible()&&c.set.position()},documentChanged:function(t){[].forEach.call(t,function(t){t.removedNodes&&[].forEach.call(t.removedNodes,function(t){(t==C||0").addClass(f.popup).data(h.activator,m).html(t),d.inline?(c.verbose("Inserting popup element inline",u),u.insertAfter(m)):(c.verbose("Appending popup element to body",u),u.appendTo(s)),c.refresh(),c.set.variation(),d.hoverable&&c.bind.popup(),d.onCreate.call(u,C)):0!==b.next(i.popup).length?(c.verbose("Pre-existing popup found"),d.inline=!0,d.popup=b.next(i.popup).data(h.activator,m),c.refresh(),d.hoverable&&c.bind.popup()):d.popup?(N(d.popup).data(h.activator,m),c.verbose("Used popup specified in settings"),c.refresh(),d.hoverable&&c.bind.popup()):c.debug("No content specified skipping display",C)},createID:function(){o=(Math.random().toString(16)+"000000000").substr(2,8),e="."+o,c.verbose("Creating unique id for element",o)},toggle:function(){c.debug("Toggling pop-up"),c.is.hidden()?(c.debug("Popup is hidden, showing pop-up"),c.unbind.close(),c.show()):(c.debug("Popup is visible, hiding pop-up"),c.hide())},show:function(t){if(t=t||function(){},c.debug("Showing pop-up",d.transition),c.is.hidden()&&(!c.is.active()||!c.is.dropdown())){if(c.exists()||c.create(),!1===d.onShow.call(u,C))return void c.debug("onShow callback returned false, cancelling popup animation");d.preserve||d.popup||c.refresh(),u&&c.set.position()&&(c.save.conditions(),d.exclusive&&c.hideAll(),c.animate.show(t))}},hide:function(t){if(t=t||function(){},c.is.visible()||c.is.animating()){if(!1===d.onHide.call(u,C))return void c.debug("onHide callback returned false, cancelling popup animation");c.remove.visible(),c.unbind.close(),c.restore.conditions(),c.animate.hide(t)}},hideAll:function(){N(i.popup).filter("."+f.popupVisible).each(function(){N(this).data(h.activator).popup("hide")})},exists:function(){return!!u&&(d.inline||d.popup?c.has.popup():1<=u.closest(s).length)},removePopup:function(){c.has.popup()&&!d.popup&&(c.debug("Removing popup",u),u.remove(),u=M,d.onRemove.call(u,C))},save:{conditions:function(){c.cache={title:m.attr("title")},c.cache.title&&m.removeAttr("title"),c.verbose("Saving original attributes",c.cache.title)}},restore:{conditions:function(){return c.cache&&c.cache.title&&(m.attr("title",c.cache.title),c.verbose("Restoring original attributes",c.cache.title)),!0}},supports:{svg:function(){return"undefined"==typeof SVGGraphicsElement}},animate:{show:function(t){t=N.isFunction(t)?t:function(){},d.transition&&N.fn.transition!==M&&m.transition("is supported")?(c.set.visible(),u.transition({animation:d.transition+" in",queue:!1,debug:d.debug,verbose:d.verbose,duration:d.duration,onComplete:function(){c.bind.close(),t.call(u,C),d.onVisible.call(u,C)}})):c.error(g.noTransition)},hide:function(t){t=N.isFunction(t)?t:function(){},c.debug("Hiding pop-up"),!1!==d.onHide.call(u,C)?d.transition&&N.fn.transition!==M&&m.transition("is supported")?u.transition({animation:d.transition+" out",queue:!1,duration:d.duration,debug:d.debug,verbose:d.verbose,onComplete:function(){c.reset(),t.call(u,C),d.onHidden.call(u,C)}}):c.error(g.noTransition):c.debug("onHide callback returned false, cancelling popup animation")}},change:{content:function(t){u.html(t)}},get:{html:function(){return m.removeData(h.html),m.data(h.html)||d.html},title:function(){return m.removeData(h.title),m.data(h.title)||d.title},content:function(){return m.removeData(h.content),m.data(h.content)||d.content||m.attr("title")},variation:function(){return m.removeData(h.variation),m.data(h.variation)||d.variation},popup:function(){return u},popupOffset:function(){return u.offset()},calculations:function(){var t,e=c.get.offsetParent(u),o=b[0],n=v[0]==V,i=d.inline||d.popup&&d.movePopup?b.position():b.offset(),r=n?{top:0,left:0}:v.offset(),a={},s=n?{top:S.scrollTop(),left:S.scrollLeft()}:{top:0,left:0};if(a={target:{element:b[0],width:b.outerWidth(),height:b.outerHeight(),top:i.top,left:i.left,margin:{}},popup:{width:u.outerWidth(),height:u.outerHeight()},parent:{width:p.outerWidth(),height:p.outerHeight()},screen:{top:r.top,left:r.left,scroll:{top:s.top,left:s.left},width:v.width(),height:v.height()}},e.get(0)!==p.get(0)){var l=e.offset();a.target.top-=l.top,a.target.left-=l.left,a.parent.width=e.outerWidth(),a.parent.height=e.outerHeight()}return d.setFluidWidth&&c.is.fluid()&&(a.container={width:u.parent().outerWidth()},a.popup.width=a.container.width),a.target.margin.top=d.inline?parseInt(V.getComputedStyle(o).getPropertyValue("margin-top"),10):0,a.target.margin.left=d.inline?c.is.rtl()?parseInt(V.getComputedStyle(o).getPropertyValue("margin-right"),10):parseInt(V.getComputedStyle(o).getPropertyValue("margin-left"),10):0,t=a.screen,a.boundary={top:t.top+t.scroll.top,bottom:t.top+t.scroll.top+t.height,left:t.left+t.scroll.left,right:t.left+t.scroll.left+t.width},a},id:function(){return o},startEvent:function(){return"hover"==d.on?"mouseenter":"focus"==d.on&&"focus"},scrollEvent:function(){return"scroll"},endEvent:function(){return"hover"==d.on?"mouseleave":"focus"==d.on&&"blur"},distanceFromBoundary:function(t,e){var o,n,i={};return o=(e=e||c.get.calculations()).popup,n=e.boundary,t&&(i={top:t.top-n.top,left:t.left-n.left,right:n.right-(t.left+o.width),bottom:n.bottom-(t.top+o.height)},c.verbose("Distance from boundaries determined",t,i)),i},offsetParent:function(t){var e=(t!==M?t[0]:b[0]).parentNode,o=N(e);if(e)for(var n="none"===o.css("transform"),i="static"===o.css("position"),r=o.is("body");e&&!r&&i&&n;)e=e.parentNode,n="none"===(o=N(e)).css("transform"),i="static"===o.css("position"),r=o.is("body");return o&&0",notFound:"The target or popup you specified does not exist on the page"},metadata:{activator:"activator",content:"content",html:"html",offset:"offset",position:"position",title:"title",variation:"variation"},className:{active:"active",basic:"basic",animating:"animating",dropdown:"dropdown",fluid:"fluid",loading:"loading",popup:"ui popup",position:"top left center bottom right",visible:"visible",popupVisible:"visible"},selector:{popup:".ui.popup"},templates:{escape:function(t){var e={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"};return/[&<>"'`]/.test(t)?t.replace(/[&<>"'`]/g,function(t){return e[t]}):t},popup:function(t){var e="",o=N.fn.popup.settings.templates.escape;return typeof t!==M&&(typeof t.title!==M&&t.title&&(t.title=o(t.title),e+='
'+t.title+"
"),typeof t.content!==M&&t.content&&(t.content=o(t.content),e+='
'+t.content+"
")),e}}}}(jQuery,window,document); \ No newline at end of file diff --git a/app/static/semantic/components/progress.css b/app/static/semantic/components/progress.css new file mode 100755 index 0000000..c479d26 --- /dev/null +++ b/app/static/semantic/components/progress.css @@ -0,0 +1,517 @@ +/*! + * # Semantic UI 2.4.0 - Progress Bar + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */ + + +/******************************* + Progress +*******************************/ + +.ui.progress { + position: relative; + display: block; + max-width: 100%; + border: none; + margin: 1em 0em 2.5em; + -webkit-box-shadow: none; + box-shadow: none; + background: rgba(0, 0, 0, 0.1); + padding: 0em; + border-radius: 0.28571429rem; +} +.ui.progress:first-child { + margin: 0em 0em 2.5em; +} +.ui.progress:last-child { + margin: 0em 0em 1.5em; +} + + +/******************************* + Content +*******************************/ + + +/* Activity Bar */ +.ui.progress .bar { + display: block; + line-height: 1; + position: relative; + width: 0%; + min-width: 2em; + background: #888888; + border-radius: 0.28571429rem; + -webkit-transition: width 0.1s ease, background-color 0.1s ease; + transition: width 0.1s ease, background-color 0.1s ease; +} + +/* Percent Complete */ +.ui.progress .bar > .progress { + white-space: nowrap; + position: absolute; + width: auto; + font-size: 0.92857143em; + top: 50%; + right: 0.5em; + left: auto; + bottom: auto; + color: rgba(255, 255, 255, 0.7); + text-shadow: none; + margin-top: -0.5em; + font-weight: bold; + text-align: left; +} + +/* Label */ +.ui.progress > .label { + position: absolute; + width: 100%; + font-size: 1em; + top: 100%; + right: auto; + left: 0%; + bottom: auto; + color: rgba(0, 0, 0, 0.87); + font-weight: bold; + text-shadow: none; + margin-top: 0.2em; + text-align: center; + -webkit-transition: color 0.4s ease; + transition: color 0.4s ease; +} + + +/******************************* + Types +*******************************/ + + +/* Indicating */ +.ui.indicating.progress[data-percent^="1"] .bar, +.ui.indicating.progress[data-percent^="2"] .bar { + background-color: #D95C5C; +} +.ui.indicating.progress[data-percent^="3"] .bar { + background-color: #EFBC72; +} +.ui.indicating.progress[data-percent^="4"] .bar, +.ui.indicating.progress[data-percent^="5"] .bar { + background-color: #E6BB48; +} +.ui.indicating.progress[data-percent^="6"] .bar { + background-color: #DDC928; +} +.ui.indicating.progress[data-percent^="7"] .bar, +.ui.indicating.progress[data-percent^="8"] .bar { + background-color: #B4D95C; +} +.ui.indicating.progress[data-percent^="9"] .bar, +.ui.indicating.progress[data-percent^="100"] .bar { + background-color: #66DA81; +} + +/* Indicating Label */ +.ui.indicating.progress[data-percent^="1"] .label, +.ui.indicating.progress[data-percent^="2"] .label { + color: rgba(0, 0, 0, 0.87); +} +.ui.indicating.progress[data-percent^="3"] .label { + color: rgba(0, 0, 0, 0.87); +} +.ui.indicating.progress[data-percent^="4"] .label, +.ui.indicating.progress[data-percent^="5"] .label { + color: rgba(0, 0, 0, 0.87); +} +.ui.indicating.progress[data-percent^="6"] .label { + color: rgba(0, 0, 0, 0.87); +} +.ui.indicating.progress[data-percent^="7"] .label, +.ui.indicating.progress[data-percent^="8"] .label { + color: rgba(0, 0, 0, 0.87); +} +.ui.indicating.progress[data-percent^="9"] .label, +.ui.indicating.progress[data-percent^="100"] .label { + color: rgba(0, 0, 0, 0.87); +} + +/* Single Digits */ +.ui.indicating.progress[data-percent="1"] .bar, +.ui.indicating.progress[data-percent="2"] .bar, +.ui.indicating.progress[data-percent="3"] .bar, +.ui.indicating.progress[data-percent="4"] .bar, +.ui.indicating.progress[data-percent="5"] .bar, +.ui.indicating.progress[data-percent="6"] .bar, +.ui.indicating.progress[data-percent="7"] .bar, +.ui.indicating.progress[data-percent="8"] .bar, +.ui.indicating.progress[data-percent="9"] .bar { + background-color: #D95C5C; +} +.ui.indicating.progress[data-percent="1"] .label, +.ui.indicating.progress[data-percent="2"] .label, +.ui.indicating.progress[data-percent="3"] .label, +.ui.indicating.progress[data-percent="4"] .label, +.ui.indicating.progress[data-percent="5"] .label, +.ui.indicating.progress[data-percent="6"] .label, +.ui.indicating.progress[data-percent="7"] .label, +.ui.indicating.progress[data-percent="8"] .label, +.ui.indicating.progress[data-percent="9"] .label { + color: rgba(0, 0, 0, 0.87); +} + +/* Indicating Success */ +.ui.indicating.progress.success .label { + color: #1A531B; +} + + +/******************************* + States +*******************************/ + + +/*-------------- + Success +---------------*/ + +.ui.progress.success .bar { + background-color: #21BA45 !important; +} +.ui.progress.success .bar, +.ui.progress.success .bar::after { + -webkit-animation: none !important; + animation: none !important; +} +.ui.progress.success > .label { + color: #1A531B; +} + +/*-------------- + Warning +---------------*/ + +.ui.progress.warning .bar { + background-color: #F2C037 !important; +} +.ui.progress.warning .bar, +.ui.progress.warning .bar::after { + -webkit-animation: none !important; + animation: none !important; +} +.ui.progress.warning > .label { + color: #794B02; +} + +/*-------------- + Error +---------------*/ + +.ui.progress.error .bar { + background-color: #DB2828 !important; +} +.ui.progress.error .bar, +.ui.progress.error .bar::after { + -webkit-animation: none !important; + animation: none !important; +} +.ui.progress.error > .label { + color: #912D2B; +} + +/*-------------- + Active +---------------*/ + +.ui.active.progress .bar { + position: relative; + min-width: 2em; +} +.ui.active.progress .bar::after { + content: ''; + opacity: 0; + position: absolute; + top: 0px; + left: 0px; + right: 0px; + bottom: 0px; + background: #FFFFFF; + border-radius: 0.28571429rem; + -webkit-animation: progress-active 2s ease infinite; + animation: progress-active 2s ease infinite; +} +@-webkit-keyframes progress-active { + 0% { + opacity: 0.3; + width: 0; + } + 100% { + opacity: 0; + width: 100%; + } +} +@keyframes progress-active { + 0% { + opacity: 0.3; + width: 0; + } + 100% { + opacity: 0; + width: 100%; + } +} + +/*-------------- + Disabled +---------------*/ + +.ui.disabled.progress { + opacity: 0.35; +} +.ui.disabled.progress .bar, +.ui.disabled.progress .bar::after { + -webkit-animation: none !important; + animation: none !important; +} + + +/******************************* + Variations +*******************************/ + + +/*-------------- + Inverted +---------------*/ + +.ui.inverted.progress { + background: rgba(255, 255, 255, 0.08); + border: none; +} +.ui.inverted.progress .bar { + background: #888888; +} +.ui.inverted.progress .bar > .progress { + color: #F9FAFB; +} +.ui.inverted.progress > .label { + color: #FFFFFF; +} +.ui.inverted.progress.success > .label { + color: #21BA45; +} +.ui.inverted.progress.warning > .label { + color: #F2C037; +} +.ui.inverted.progress.error > .label { + color: #DB2828; +} + +/*-------------- + Attached +---------------*/ + + +/* bottom attached */ +.ui.progress.attached { + background: transparent; + position: relative; + border: none; + margin: 0em; +} +.ui.progress.attached, +.ui.progress.attached .bar { + display: block; + height: 0.2rem; + padding: 0px; + overflow: hidden; + border-radius: 0em 0em 0.28571429rem 0.28571429rem; +} +.ui.progress.attached .bar { + border-radius: 0em; +} + +/* top attached */ +.ui.progress.top.attached, +.ui.progress.top.attached .bar { + top: 0px; + border-radius: 0.28571429rem 0.28571429rem 0em 0em; +} +.ui.progress.top.attached .bar { + border-radius: 0em; +} + +/* Coupling */ +.ui.segment > .ui.attached.progress, +.ui.card > .ui.attached.progress { + position: absolute; + top: auto; + left: 0; + bottom: 100%; + width: 100%; +} +.ui.segment > .ui.bottom.attached.progress, +.ui.card > .ui.bottom.attached.progress { + top: 100%; + bottom: auto; +} + +/*-------------- + Colors +---------------*/ + + +/* Red */ +.ui.red.progress .bar { + background-color: #DB2828; +} +.ui.red.inverted.progress .bar { + background-color: #FF695E; +} + +/* Orange */ +.ui.orange.progress .bar { + background-color: #F2711C; +} +.ui.orange.inverted.progress .bar { + background-color: #FF851B; +} + +/* Yellow */ +.ui.yellow.progress .bar { + background-color: #FBBD08; +} +.ui.yellow.inverted.progress .bar { + background-color: #FFE21F; +} + +/* Olive */ +.ui.olive.progress .bar { + background-color: #B5CC18; +} +.ui.olive.inverted.progress .bar { + background-color: #D9E778; +} + +/* Green */ +.ui.green.progress .bar { + background-color: #21BA45; +} +.ui.green.inverted.progress .bar { + background-color: #2ECC40; +} + +/* Teal */ +.ui.teal.progress .bar { + background-color: #00B5AD; +} +.ui.teal.inverted.progress .bar { + background-color: #6DFFFF; +} + +/* Blue */ +.ui.blue.progress .bar { + background-color: #2185D0; +} +.ui.blue.inverted.progress .bar { + background-color: #54C8FF; +} + +/* Violet */ +.ui.violet.progress .bar { + background-color: #6435C9; +} +.ui.violet.inverted.progress .bar { + background-color: #A291FB; +} + +/* Purple */ +.ui.purple.progress .bar { + background-color: #A333C8; +} +.ui.purple.inverted.progress .bar { + background-color: #DC73FF; +} + +/* Pink */ +.ui.pink.progress .bar { + background-color: #E03997; +} +.ui.pink.inverted.progress .bar { + background-color: #FF8EDF; +} + +/* Brown */ +.ui.brown.progress .bar { + background-color: #A5673F; +} +.ui.brown.inverted.progress .bar { + background-color: #D67C1C; +} + +/* Grey */ +.ui.grey.progress .bar { + background-color: #767676; +} +.ui.grey.inverted.progress .bar { + background-color: #DCDDDE; +} + +/* Black */ +.ui.black.progress .bar { + background-color: #1B1C1D; +} +.ui.black.inverted.progress .bar { + background-color: #545454; +} + +/*-------------- + Sizes +---------------*/ + +.ui.tiny.progress { + font-size: 0.85714286rem; +} +.ui.tiny.progress .bar { + height: 0.5em; +} +.ui.small.progress { + font-size: 0.92857143rem; +} +.ui.small.progress .bar { + height: 1em; +} +.ui.progress { + font-size: 1rem; +} +.ui.progress .bar { + height: 1.75em; +} +.ui.large.progress { + font-size: 1.14285714rem; +} +.ui.large.progress .bar { + height: 2.5em; +} +.ui.big.progress { + font-size: 1.28571429rem; +} +.ui.big.progress .bar { + height: 3.5em; +} + + +/******************************* + Progress +*******************************/ + + + +/******************************* + Site Overrides +*******************************/ + diff --git a/app/static/semantic/components/progress.js b/app/static/semantic/components/progress.js new file mode 100755 index 0000000..d727f77 --- /dev/null +++ b/app/static/semantic/components/progress.js @@ -0,0 +1,931 @@ +/*! + * # Semantic UI 2.4.1 - Progress + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */ + +;(function ($, window, document, undefined) { + +'use strict'; + +window = (typeof window != 'undefined' && window.Math == Math) + ? window + : (typeof self != 'undefined' && self.Math == Math) + ? self + : Function('return this')() +; + +var + global = (typeof window != 'undefined' && window.Math == Math) + ? window + : (typeof self != 'undefined' && self.Math == Math) + ? self + : Function('return this')() +; + +$.fn.progress = function(parameters) { + var + $allModules = $(this), + + moduleSelector = $allModules.selector || '', + + time = new Date().getTime(), + performance = [], + + query = arguments[0], + methodInvoked = (typeof query == 'string'), + queryArguments = [].slice.call(arguments, 1), + + returnedValue + ; + + $allModules + .each(function() { + var + settings = ( $.isPlainObject(parameters) ) + ? $.extend(true, {}, $.fn.progress.settings, parameters) + : $.extend({}, $.fn.progress.settings), + + className = settings.className, + metadata = settings.metadata, + namespace = settings.namespace, + selector = settings.selector, + error = settings.error, + + eventNamespace = '.' + namespace, + moduleNamespace = 'module-' + namespace, + + $module = $(this), + $bar = $(this).find(selector.bar), + $progress = $(this).find(selector.progress), + $label = $(this).find(selector.label), + + element = this, + instance = $module.data(moduleNamespace), + + animating = false, + transitionEnd, + module + ; + + module = { + + initialize: function() { + module.debug('Initializing progress bar', settings); + + module.set.duration(); + module.set.transitionEvent(); + + module.read.metadata(); + module.read.settings(); + + module.instantiate(); + }, + + instantiate: function() { + module.verbose('Storing instance of progress', module); + instance = module; + $module + .data(moduleNamespace, module) + ; + }, + destroy: function() { + module.verbose('Destroying previous progress for', $module); + clearInterval(instance.interval); + module.remove.state(); + $module.removeData(moduleNamespace); + instance = undefined; + }, + + reset: function() { + module.remove.nextValue(); + module.update.progress(0); + }, + + complete: function() { + if(module.percent === undefined || module.percent < 100) { + module.remove.progressPoll(); + module.set.percent(100); + } + }, + + read: { + metadata: function() { + var + data = { + percent : $module.data(metadata.percent), + total : $module.data(metadata.total), + value : $module.data(metadata.value) + } + ; + if(data.percent) { + module.debug('Current percent value set from metadata', data.percent); + module.set.percent(data.percent); + } + if(data.total) { + module.debug('Total value set from metadata', data.total); + module.set.total(data.total); + } + if(data.value) { + module.debug('Current value set from metadata', data.value); + module.set.value(data.value); + module.set.progress(data.value); + } + }, + settings: function() { + if(settings.total !== false) { + module.debug('Current total set in settings', settings.total); + module.set.total(settings.total); + } + if(settings.value !== false) { + module.debug('Current value set in settings', settings.value); + module.set.value(settings.value); + module.set.progress(module.value); + } + if(settings.percent !== false) { + module.debug('Current percent set in settings', settings.percent); + module.set.percent(settings.percent); + } + } + }, + + bind: { + transitionEnd: function(callback) { + var + transitionEnd = module.get.transitionEnd() + ; + $bar + .one(transitionEnd + eventNamespace, function(event) { + clearTimeout(module.failSafeTimer); + callback.call(this, event); + }) + ; + module.failSafeTimer = setTimeout(function() { + $bar.triggerHandler(transitionEnd); + }, settings.duration + settings.failSafeDelay); + module.verbose('Adding fail safe timer', module.timer); + } + }, + + increment: function(incrementValue) { + var + maxValue, + startValue, + newValue + ; + if( module.has.total() ) { + startValue = module.get.value(); + incrementValue = incrementValue || 1; + newValue = startValue + incrementValue; + } + else { + startValue = module.get.percent(); + incrementValue = incrementValue || module.get.randomValue(); + + newValue = startValue + incrementValue; + maxValue = 100; + module.debug('Incrementing percentage by', startValue, newValue); + } + newValue = module.get.normalizedValue(newValue); + module.set.progress(newValue); + }, + decrement: function(decrementValue) { + var + total = module.get.total(), + startValue, + newValue + ; + if(total) { + startValue = module.get.value(); + decrementValue = decrementValue || 1; + newValue = startValue - decrementValue; + module.debug('Decrementing value by', decrementValue, startValue); + } + else { + startValue = module.get.percent(); + decrementValue = decrementValue || module.get.randomValue(); + newValue = startValue - decrementValue; + module.debug('Decrementing percentage by', decrementValue, startValue); + } + newValue = module.get.normalizedValue(newValue); + module.set.progress(newValue); + }, + + has: { + progressPoll: function() { + return module.progressPoll; + }, + total: function() { + return (module.get.total() !== false); + } + }, + + get: { + text: function(templateText) { + var + value = module.value || 0, + total = module.total || 0, + percent = (animating) + ? module.get.displayPercent() + : module.percent || 0, + left = (module.total > 0) + ? (total - value) + : (100 - percent) + ; + templateText = templateText || ''; + templateText = templateText + .replace('{value}', value) + .replace('{total}', total) + .replace('{left}', left) + .replace('{percent}', percent) + ; + module.verbose('Adding variables to progress bar text', templateText); + return templateText; + }, + + normalizedValue: function(value) { + if(value < 0) { + module.debug('Value cannot decrement below 0'); + return 0; + } + if(module.has.total()) { + if(value > module.total) { + module.debug('Value cannot increment above total', module.total); + return module.total; + } + } + else if(value > 100 ) { + module.debug('Value cannot increment above 100 percent'); + return 100; + } + return value; + }, + + updateInterval: function() { + if(settings.updateInterval == 'auto') { + return settings.duration; + } + return settings.updateInterval; + }, + + randomValue: function() { + module.debug('Generating random increment percentage'); + return Math.floor((Math.random() * settings.random.max) + settings.random.min); + }, + + numericValue: function(value) { + return (typeof value === 'string') + ? (value.replace(/[^\d.]/g, '') !== '') + ? +(value.replace(/[^\d.]/g, '')) + : false + : value + ; + }, + + transitionEnd: function() { + var + element = document.createElement('element'), + transitions = { + 'transition' :'transitionend', + 'OTransition' :'oTransitionEnd', + 'MozTransition' :'transitionend', + 'WebkitTransition' :'webkitTransitionEnd' + }, + transition + ; + for(transition in transitions){ + if( element.style[transition] !== undefined ){ + return transitions[transition]; + } + } + }, + + // gets current displayed percentage (if animating values this is the intermediary value) + displayPercent: function() { + var + barWidth = $bar.width(), + totalWidth = $module.width(), + minDisplay = parseInt($bar.css('min-width'), 10), + displayPercent = (barWidth > minDisplay) + ? (barWidth / totalWidth * 100) + : module.percent + ; + return (settings.precision > 0) + ? Math.round(displayPercent * (10 * settings.precision)) / (10 * settings.precision) + : Math.round(displayPercent) + ; + }, + + percent: function() { + return module.percent || 0; + }, + value: function() { + return module.nextValue || module.value || 0; + }, + total: function() { + return module.total || false; + } + }, + + create: { + progressPoll: function() { + module.progressPoll = setTimeout(function() { + module.update.toNextValue(); + module.remove.progressPoll(); + }, module.get.updateInterval()); + }, + }, + + is: { + complete: function() { + return module.is.success() || module.is.warning() || module.is.error(); + }, + success: function() { + return $module.hasClass(className.success); + }, + warning: function() { + return $module.hasClass(className.warning); + }, + error: function() { + return $module.hasClass(className.error); + }, + active: function() { + return $module.hasClass(className.active); + }, + visible: function() { + return $module.is(':visible'); + } + }, + + remove: { + progressPoll: function() { + module.verbose('Removing progress poll timer'); + if(module.progressPoll) { + clearTimeout(module.progressPoll); + delete module.progressPoll; + } + }, + nextValue: function() { + module.verbose('Removing progress value stored for next update'); + delete module.nextValue; + }, + state: function() { + module.verbose('Removing stored state'); + delete module.total; + delete module.percent; + delete module.value; + }, + active: function() { + module.verbose('Removing active state'); + $module.removeClass(className.active); + }, + success: function() { + module.verbose('Removing success state'); + $module.removeClass(className.success); + }, + warning: function() { + module.verbose('Removing warning state'); + $module.removeClass(className.warning); + }, + error: function() { + module.verbose('Removing error state'); + $module.removeClass(className.error); + } + }, + + set: { + barWidth: function(value) { + if(value > 100) { + module.error(error.tooHigh, value); + } + else if (value < 0) { + module.error(error.tooLow, value); + } + else { + $bar + .css('width', value + '%') + ; + $module + .attr('data-percent', parseInt(value, 10)) + ; + } + }, + duration: function(duration) { + duration = duration || settings.duration; + duration = (typeof duration == 'number') + ? duration + 'ms' + : duration + ; + module.verbose('Setting progress bar transition duration', duration); + $bar + .css({ + 'transition-duration': duration + }) + ; + }, + percent: function(percent) { + percent = (typeof percent == 'string') + ? +(percent.replace('%', '')) + : percent + ; + // round display percentage + percent = (settings.precision > 0) + ? Math.round(percent * (10 * settings.precision)) / (10 * settings.precision) + : Math.round(percent) + ; + module.percent = percent; + if( !module.has.total() ) { + module.value = (settings.precision > 0) + ? Math.round( (percent / 100) * module.total * (10 * settings.precision)) / (10 * settings.precision) + : Math.round( (percent / 100) * module.total * 10) / 10 + ; + if(settings.limitValues) { + module.value = (module.value > 100) + ? 100 + : (module.value < 0) + ? 0 + : module.value + ; + } + } + module.set.barWidth(percent); + module.set.labelInterval(); + module.set.labels(); + settings.onChange.call(element, percent, module.value, module.total); + }, + labelInterval: function() { + var + animationCallback = function() { + module.verbose('Bar finished animating, removing continuous label updates'); + clearInterval(module.interval); + animating = false; + module.set.labels(); + } + ; + clearInterval(module.interval); + module.bind.transitionEnd(animationCallback); + animating = true; + module.interval = setInterval(function() { + var + isInDOM = $.contains(document.documentElement, element) + ; + if(!isInDOM) { + clearInterval(module.interval); + animating = false; + } + module.set.labels(); + }, settings.framerate); + }, + labels: function() { + module.verbose('Setting both bar progress and outer label text'); + module.set.barLabel(); + module.set.state(); + }, + label: function(text) { + text = text || ''; + if(text) { + text = module.get.text(text); + module.verbose('Setting label to text', text); + $label.text(text); + } + }, + state: function(percent) { + percent = (percent !== undefined) + ? percent + : module.percent + ; + if(percent === 100) { + if(settings.autoSuccess && !(module.is.warning() || module.is.error() || module.is.success())) { + module.set.success(); + module.debug('Automatically triggering success at 100%'); + } + else { + module.verbose('Reached 100% removing active state'); + module.remove.active(); + module.remove.progressPoll(); + } + } + else if(percent > 0) { + module.verbose('Adjusting active progress bar label', percent); + module.set.active(); + } + else { + module.remove.active(); + module.set.label(settings.text.active); + } + }, + barLabel: function(text) { + if(text !== undefined) { + $progress.text( module.get.text(text) ); + } + else if(settings.label == 'ratio' && module.total) { + module.verbose('Adding ratio to bar label'); + $progress.text( module.get.text(settings.text.ratio) ); + } + else if(settings.label == 'percent') { + module.verbose('Adding percentage to bar label'); + $progress.text( module.get.text(settings.text.percent) ); + } + }, + active: function(text) { + text = text || settings.text.active; + module.debug('Setting active state'); + if(settings.showActivity && !module.is.active() ) { + $module.addClass(className.active); + } + module.remove.warning(); + module.remove.error(); + module.remove.success(); + text = settings.onLabelUpdate('active', text, module.value, module.total); + if(text) { + module.set.label(text); + } + module.bind.transitionEnd(function() { + settings.onActive.call(element, module.value, module.total); + }); + }, + success : function(text) { + text = text || settings.text.success || settings.text.active; + module.debug('Setting success state'); + $module.addClass(className.success); + module.remove.active(); + module.remove.warning(); + module.remove.error(); + module.complete(); + if(settings.text.success) { + text = settings.onLabelUpdate('success', text, module.value, module.total); + module.set.label(text); + } + else { + text = settings.onLabelUpdate('active', text, module.value, module.total); + module.set.label(text); + } + module.bind.transitionEnd(function() { + settings.onSuccess.call(element, module.total); + }); + }, + warning : function(text) { + text = text || settings.text.warning; + module.debug('Setting warning state'); + $module.addClass(className.warning); + module.remove.active(); + module.remove.success(); + module.remove.error(); + module.complete(); + text = settings.onLabelUpdate('warning', text, module.value, module.total); + if(text) { + module.set.label(text); + } + module.bind.transitionEnd(function() { + settings.onWarning.call(element, module.value, module.total); + }); + }, + error : function(text) { + text = text || settings.text.error; + module.debug('Setting error state'); + $module.addClass(className.error); + module.remove.active(); + module.remove.success(); + module.remove.warning(); + module.complete(); + text = settings.onLabelUpdate('error', text, module.value, module.total); + if(text) { + module.set.label(text); + } + module.bind.transitionEnd(function() { + settings.onError.call(element, module.value, module.total); + }); + }, + transitionEvent: function() { + transitionEnd = module.get.transitionEnd(); + }, + total: function(totalValue) { + module.total = totalValue; + }, + value: function(value) { + module.value = value; + }, + progress: function(value) { + if(!module.has.progressPoll()) { + module.debug('First update in progress update interval, immediately updating', value); + module.update.progress(value); + module.create.progressPoll(); + } + else { + module.debug('Updated within interval, setting next update to use new value', value); + module.set.nextValue(value); + } + }, + nextValue: function(value) { + module.nextValue = value; + } + }, + + update: { + toNextValue: function() { + var + nextValue = module.nextValue + ; + if(nextValue) { + module.debug('Update interval complete using last updated value', nextValue); + module.update.progress(nextValue); + module.remove.nextValue(); + } + }, + progress: function(value) { + var + percentComplete + ; + value = module.get.numericValue(value); + if(value === false) { + module.error(error.nonNumeric, value); + } + value = module.get.normalizedValue(value); + if( module.has.total() ) { + module.set.value(value); + percentComplete = (value / module.total) * 100; + module.debug('Calculating percent complete from total', percentComplete); + module.set.percent( percentComplete ); + } + else { + percentComplete = value; + module.debug('Setting value to exact percentage value', percentComplete); + module.set.percent( percentComplete ); + } + } + }, + + setting: function(name, value) { + module.debug('Changing setting', name, value); + if( $.isPlainObject(name) ) { + $.extend(true, settings, name); + } + else if(value !== undefined) { + if($.isPlainObject(settings[name])) { + $.extend(true, settings[name], value); + } + else { + settings[name] = value; + } + } + else { + return settings[name]; + } + }, + internal: function(name, value) { + if( $.isPlainObject(name) ) { + $.extend(true, module, name); + } + else if(value !== undefined) { + module[name] = value; + } + else { + return module[name]; + } + }, + debug: function() { + if(!settings.silent && settings.debug) { + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':'); + module.debug.apply(console, arguments); + } + } + }, + verbose: function() { + if(!settings.silent && settings.verbose && settings.debug) { + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':'); + module.verbose.apply(console, arguments); + } + } + }, + error: function() { + if(!settings.silent) { + module.error = Function.prototype.bind.call(console.error, console, settings.name + ':'); + module.error.apply(console, arguments); + } + }, + performance: { + log: function(message) { + var + currentTime, + executionTime, + previousTime + ; + if(settings.performance) { + currentTime = new Date().getTime(); + previousTime = time || currentTime; + executionTime = currentTime - previousTime; + time = currentTime; + performance.push({ + 'Name' : message[0], + 'Arguments' : [].slice.call(message, 1) || '', + 'Element' : element, + 'Execution Time' : executionTime + }); + } + clearTimeout(module.performance.timer); + module.performance.timer = setTimeout(module.performance.display, 500); + }, + display: function() { + var + title = settings.name + ':', + totalTime = 0 + ; + time = false; + clearTimeout(module.performance.timer); + $.each(performance, function(index, data) { + totalTime += data['Execution Time']; + }); + title += ' ' + totalTime + 'ms'; + if(moduleSelector) { + title += ' \'' + moduleSelector + '\''; + } + if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { + console.groupCollapsed(title); + if(console.table) { + console.table(performance); + } + else { + $.each(performance, function(index, data) { + console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); + }); + } + console.groupEnd(); + } + performance = []; + } + }, + invoke: function(query, passedArguments, context) { + var + object = instance, + maxDepth, + found, + response + ; + passedArguments = passedArguments || queryArguments; + context = element || context; + if(typeof query == 'string' && object !== undefined) { + query = query.split(/[\. ]/); + maxDepth = query.length - 1; + $.each(query, function(depth, value) { + var camelCaseValue = (depth != maxDepth) + ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) + : query + ; + if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) { + object = object[camelCaseValue]; + } + else if( object[camelCaseValue] !== undefined ) { + found = object[camelCaseValue]; + return false; + } + else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) { + object = object[value]; + } + else if( object[value] !== undefined ) { + found = object[value]; + return false; + } + else { + module.error(error.method, query); + return false; + } + }); + } + if ( $.isFunction( found ) ) { + response = found.apply(context, passedArguments); + } + else if(found !== undefined) { + response = found; + } + if($.isArray(returnedValue)) { + returnedValue.push(response); + } + else if(returnedValue !== undefined) { + returnedValue = [returnedValue, response]; + } + else if(response !== undefined) { + returnedValue = response; + } + return found; + } + }; + + if(methodInvoked) { + if(instance === undefined) { + module.initialize(); + } + module.invoke(query); + } + else { + if(instance !== undefined) { + instance.invoke('destroy'); + } + module.initialize(); + } + }) + ; + + return (returnedValue !== undefined) + ? returnedValue + : this + ; +}; + +$.fn.progress.settings = { + + name : 'Progress', + namespace : 'progress', + + silent : false, + debug : false, + verbose : false, + performance : true, + + random : { + min : 2, + max : 5 + }, + + duration : 300, + + updateInterval : 'auto', + + autoSuccess : true, + showActivity : true, + limitValues : true, + + label : 'percent', + precision : 0, + framerate : (1000 / 30), /// 30 fps + + percent : false, + total : false, + value : false, + + // delay in ms for fail safe animation callback + failSafeDelay : 100, + + onLabelUpdate : function(state, text, value, total){ + return text; + }, + onChange : function(percent, value, total){}, + onSuccess : function(total){}, + onActive : function(value, total){}, + onError : function(value, total){}, + onWarning : function(value, total){}, + + error : { + method : 'The method you called is not defined.', + nonNumeric : 'Progress value is non numeric', + tooHigh : 'Value specified is above 100%', + tooLow : 'Value specified is below 0%' + }, + + regExp: { + variable: /\{\$*[A-z0-9]+\}/g + }, + + metadata: { + percent : 'percent', + total : 'total', + value : 'value' + }, + + selector : { + bar : '> .bar', + label : '> .label', + progress : '.bar > .progress' + }, + + text : { + active : false, + error : false, + success : false, + warning : false, + percent : '{percent}%', + ratio : '{value} of {total}' + }, + + className : { + active : 'active', + error : 'error', + success : 'success', + warning : 'warning' + } + +}; + + +})( jQuery, window, document ); diff --git a/app/static/semantic/components/progress.min.css b/app/static/semantic/components/progress.min.css new file mode 100755 index 0000000..9328a2d --- /dev/null +++ b/app/static/semantic/components/progress.min.css @@ -0,0 +1,9 @@ +/*! + * # Semantic UI 2.4.0 - Progress Bar + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */.ui.progress{position:relative;display:block;max-width:100%;border:none;margin:1em 0 2.5em;-webkit-box-shadow:none;box-shadow:none;background:rgba(0,0,0,.1);padding:0;border-radius:.28571429rem}.ui.progress:first-child{margin:0 0 2.5em}.ui.progress:last-child{margin:0 0 1.5em}.ui.progress .bar{display:block;line-height:1;position:relative;width:0%;min-width:2em;background:#888;border-radius:.28571429rem;-webkit-transition:width .1s ease,background-color .1s ease;transition:width .1s ease,background-color .1s ease}.ui.progress .bar>.progress{white-space:nowrap;position:absolute;width:auto;font-size:.92857143em;top:50%;right:.5em;left:auto;bottom:auto;color:rgba(255,255,255,.7);text-shadow:none;margin-top:-.5em;font-weight:700;text-align:left}.ui.progress>.label{position:absolute;width:100%;font-size:1em;top:100%;right:auto;left:0;bottom:auto;color:rgba(0,0,0,.87);font-weight:700;text-shadow:none;margin-top:.2em;text-align:center;-webkit-transition:color .4s ease;transition:color .4s ease}.ui.indicating.progress[data-percent^="1"] .bar,.ui.indicating.progress[data-percent^="2"] .bar{background-color:#d95c5c}.ui.indicating.progress[data-percent^="3"] .bar{background-color:#efbc72}.ui.indicating.progress[data-percent^="4"] .bar,.ui.indicating.progress[data-percent^="5"] .bar{background-color:#e6bb48}.ui.indicating.progress[data-percent^="6"] .bar{background-color:#ddc928}.ui.indicating.progress[data-percent^="7"] .bar,.ui.indicating.progress[data-percent^="8"] .bar{background-color:#b4d95c}.ui.indicating.progress[data-percent^="100"] .bar,.ui.indicating.progress[data-percent^="9"] .bar{background-color:#66da81}.ui.indicating.progress[data-percent^="1"] .label,.ui.indicating.progress[data-percent^="2"] .label{color:rgba(0,0,0,.87)}.ui.indicating.progress[data-percent^="3"] .label{color:rgba(0,0,0,.87)}.ui.indicating.progress[data-percent^="4"] .label,.ui.indicating.progress[data-percent^="5"] .label{color:rgba(0,0,0,.87)}.ui.indicating.progress[data-percent^="6"] .label{color:rgba(0,0,0,.87)}.ui.indicating.progress[data-percent^="7"] .label,.ui.indicating.progress[data-percent^="8"] .label{color:rgba(0,0,0,.87)}.ui.indicating.progress[data-percent^="100"] .label,.ui.indicating.progress[data-percent^="9"] .label{color:rgba(0,0,0,.87)}.ui.indicating.progress[data-percent="1"] .bar,.ui.indicating.progress[data-percent="2"] .bar,.ui.indicating.progress[data-percent="3"] .bar,.ui.indicating.progress[data-percent="4"] .bar,.ui.indicating.progress[data-percent="5"] .bar,.ui.indicating.progress[data-percent="6"] .bar,.ui.indicating.progress[data-percent="7"] .bar,.ui.indicating.progress[data-percent="8"] .bar,.ui.indicating.progress[data-percent="9"] .bar{background-color:#d95c5c}.ui.indicating.progress[data-percent="1"] .label,.ui.indicating.progress[data-percent="2"] .label,.ui.indicating.progress[data-percent="3"] .label,.ui.indicating.progress[data-percent="4"] .label,.ui.indicating.progress[data-percent="5"] .label,.ui.indicating.progress[data-percent="6"] .label,.ui.indicating.progress[data-percent="7"] .label,.ui.indicating.progress[data-percent="8"] .label,.ui.indicating.progress[data-percent="9"] .label{color:rgba(0,0,0,.87)}.ui.indicating.progress.success .label{color:#1a531b}.ui.progress.success .bar{background-color:#21ba45!important}.ui.progress.success .bar,.ui.progress.success .bar::after{-webkit-animation:none!important;animation:none!important}.ui.progress.success>.label{color:#1a531b}.ui.progress.warning .bar{background-color:#f2c037!important}.ui.progress.warning .bar,.ui.progress.warning .bar::after{-webkit-animation:none!important;animation:none!important}.ui.progress.warning>.label{color:#794b02}.ui.progress.error .bar{background-color:#db2828!important}.ui.progress.error .bar,.ui.progress.error .bar::after{-webkit-animation:none!important;animation:none!important}.ui.progress.error>.label{color:#912d2b}.ui.active.progress .bar{position:relative;min-width:2em}.ui.active.progress .bar::after{content:'';opacity:0;position:absolute;top:0;left:0;right:0;bottom:0;background:#fff;border-radius:.28571429rem;-webkit-animation:progress-active 2s ease infinite;animation:progress-active 2s ease infinite}@-webkit-keyframes progress-active{0%{opacity:.3;width:0}100%{opacity:0;width:100%}}@keyframes progress-active{0%{opacity:.3;width:0}100%{opacity:0;width:100%}}.ui.disabled.progress{opacity:.35}.ui.disabled.progress .bar,.ui.disabled.progress .bar::after{-webkit-animation:none!important;animation:none!important}.ui.inverted.progress{background:rgba(255,255,255,.08);border:none}.ui.inverted.progress .bar{background:#888}.ui.inverted.progress .bar>.progress{color:#f9fafb}.ui.inverted.progress>.label{color:#fff}.ui.inverted.progress.success>.label{color:#21ba45}.ui.inverted.progress.warning>.label{color:#f2c037}.ui.inverted.progress.error>.label{color:#db2828}.ui.progress.attached{background:0 0;position:relative;border:none;margin:0}.ui.progress.attached,.ui.progress.attached .bar{display:block;height:.2rem;padding:0;overflow:hidden;border-radius:0 0 .28571429rem .28571429rem}.ui.progress.attached .bar{border-radius:0}.ui.progress.top.attached,.ui.progress.top.attached .bar{top:0;border-radius:.28571429rem .28571429rem 0 0}.ui.progress.top.attached .bar{border-radius:0}.ui.card>.ui.attached.progress,.ui.segment>.ui.attached.progress{position:absolute;top:auto;left:0;bottom:100%;width:100%}.ui.card>.ui.bottom.attached.progress,.ui.segment>.ui.bottom.attached.progress{top:100%;bottom:auto}.ui.red.progress .bar{background-color:#db2828}.ui.red.inverted.progress .bar{background-color:#ff695e}.ui.orange.progress .bar{background-color:#f2711c}.ui.orange.inverted.progress .bar{background-color:#ff851b}.ui.yellow.progress .bar{background-color:#fbbd08}.ui.yellow.inverted.progress .bar{background-color:#ffe21f}.ui.olive.progress .bar{background-color:#b5cc18}.ui.olive.inverted.progress .bar{background-color:#d9e778}.ui.green.progress .bar{background-color:#21ba45}.ui.green.inverted.progress .bar{background-color:#2ecc40}.ui.teal.progress .bar{background-color:#00b5ad}.ui.teal.inverted.progress .bar{background-color:#6dffff}.ui.blue.progress .bar{background-color:#2185d0}.ui.blue.inverted.progress .bar{background-color:#54c8ff}.ui.violet.progress .bar{background-color:#6435c9}.ui.violet.inverted.progress .bar{background-color:#a291fb}.ui.purple.progress .bar{background-color:#a333c8}.ui.purple.inverted.progress .bar{background-color:#dc73ff}.ui.pink.progress .bar{background-color:#e03997}.ui.pink.inverted.progress .bar{background-color:#ff8edf}.ui.brown.progress .bar{background-color:#a5673f}.ui.brown.inverted.progress .bar{background-color:#d67c1c}.ui.grey.progress .bar{background-color:#767676}.ui.grey.inverted.progress .bar{background-color:#dcddde}.ui.black.progress .bar{background-color:#1b1c1d}.ui.black.inverted.progress .bar{background-color:#545454}.ui.tiny.progress{font-size:.85714286rem}.ui.tiny.progress .bar{height:.5em}.ui.small.progress{font-size:.92857143rem}.ui.small.progress .bar{height:1em}.ui.progress{font-size:1rem}.ui.progress .bar{height:1.75em}.ui.large.progress{font-size:1.14285714rem}.ui.large.progress .bar{height:2.5em}.ui.big.progress{font-size:1.28571429rem}.ui.big.progress .bar{height:3.5em} \ No newline at end of file diff --git a/app/static/semantic/components/progress.min.js b/app/static/semantic/components/progress.min.js new file mode 100755 index 0000000..3b82edf --- /dev/null +++ b/app/static/semantic/components/progress.min.js @@ -0,0 +1 @@ +!function(E,e,P,T){"use strict";void 0!==(e=void 0!==e&&e.Math==Math?e:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")())&&e.Math==Math||("undefined"!=typeof self&&self.Math==Math?self:Function("return this")());E.fn.progress=function(m){var b,e=E(this),h=e.selector||"",x=(new Date).getTime(),w=[],y=m,V="string"==typeof y,C=[].slice.call(arguments,1);return e.each(function(){var s,r=E.isPlainObject(m)?E.extend(!0,{},E.fn.progress.settings,m):E.extend({},E.fn.progress.settings),t=r.className,n=r.metadata,e=r.namespace,a=r.selector,l=r.error,o="."+e,i="module-"+e,c=E(this),u=E(this).find(a.bar),d=E(this).find(a.progress),g=E(this).find(a.label),v=this,p=c.data(i),f=!1;s={initialize:function(){s.debug("Initializing progress bar",r),s.set.duration(),s.set.transitionEvent(),s.read.metadata(),s.read.settings(),s.instantiate()},instantiate:function(){s.verbose("Storing instance of progress",s),p=s,c.data(i,s)},destroy:function(){s.verbose("Destroying previous progress for",c),clearInterval(p.interval),s.remove.state(),c.removeData(i),p=T},reset:function(){s.remove.nextValue(),s.update.progress(0)},complete:function(){(s.percent===T||s.percent<100)&&(s.remove.progressPoll(),s.set.percent(100))},read:{metadata:function(){var e={percent:c.data(n.percent),total:c.data(n.total),value:c.data(n.value)};e.percent&&(s.debug("Current percent value set from metadata",e.percent),s.set.percent(e.percent)),e.total&&(s.debug("Total value set from metadata",e.total),s.set.total(e.total)),e.value&&(s.debug("Current value set from metadata",e.value),s.set.value(e.value),s.set.progress(e.value))},settings:function(){!1!==r.total&&(s.debug("Current total set in settings",r.total),s.set.total(r.total)),!1!==r.value&&(s.debug("Current value set in settings",r.value),s.set.value(r.value),s.set.progress(s.value)),!1!==r.percent&&(s.debug("Current percent set in settings",r.percent),s.set.percent(r.percent))}},bind:{transitionEnd:function(t){var e=s.get.transitionEnd();u.one(e+o,function(e){clearTimeout(s.failSafeTimer),t.call(this,e)}),s.failSafeTimer=setTimeout(function(){u.triggerHandler(e)},r.duration+r.failSafeDelay),s.verbose("Adding fail safe timer",s.timer)}},increment:function(e){var t,n;s.has.total()?n=(t=s.get.value())+(e=e||1):(n=(t=s.get.percent())+(e=e||s.get.randomValue()),100,s.debug("Incrementing percentage by",t,n)),n=s.get.normalizedValue(n),s.set.progress(n)},decrement:function(e){var t,n;s.get.total()?(n=(t=s.get.value())-(e=e||1),s.debug("Decrementing value by",e,t)):(n=(t=s.get.percent())-(e=e||s.get.randomValue()),s.debug("Decrementing percentage by",e,t)),n=s.get.normalizedValue(n),s.set.progress(n)},has:{progressPoll:function(){return s.progressPoll},total:function(){return!1!==s.get.total()}},get:{text:function(e){var t=s.value||0,n=s.total||0,r=f?s.get.displayPercent():s.percent||0,a=0s.total)return s.debug("Value cannot increment above total",s.total),s.total}else if(100 .bar",label:"> .label",progress:".bar > .progress"},text:{active:!1,error:!1,success:!1,warning:!1,percent:"{percent}%",ratio:"{value} of {total}"},className:{active:"active",error:"error",success:"success",warning:"warning"}}}(jQuery,window,document); \ No newline at end of file diff --git a/app/static/semantic/components/rail.css b/app/static/semantic/components/rail.css new file mode 100755 index 0000000..fdf4694 --- /dev/null +++ b/app/static/semantic/components/rail.css @@ -0,0 +1,152 @@ +/*! + * # Semantic UI 2.4.1 - Rail + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */ + + +/******************************* + Rails +*******************************/ + +.ui.rail { + position: absolute; + top: 0%; + width: 300px; + height: 100%; +} +.ui.left.rail { + left: auto; + right: 100%; + padding: 0em 2rem 0em 0em; + margin: 0em 2rem 0em 0em; +} +.ui.right.rail { + left: 100%; + right: auto; + padding: 0em 0em 0em 2rem; + margin: 0em 0em 0em 2rem; +} + + +/******************************* + Variations +*******************************/ + + +/*-------------- + Internal +---------------*/ + +.ui.left.internal.rail { + left: 0%; + right: auto; + padding: 0em 0em 0em 2rem; + margin: 0em 0em 0em 2rem; +} +.ui.right.internal.rail { + left: auto; + right: 0%; + padding: 0em 2rem 0em 0em; + margin: 0em 2rem 0em 0em; +} + +/*-------------- + Dividing +---------------*/ + +.ui.dividing.rail { + width: 302.5px; +} +.ui.left.dividing.rail { + padding: 0em 2.5rem 0em 0em; + margin: 0em 2.5rem 0em 0em; + border-right: 1px solid rgba(34, 36, 38, 0.15); +} +.ui.right.dividing.rail { + border-left: 1px solid rgba(34, 36, 38, 0.15); + padding: 0em 0em 0em 2.5rem; + margin: 0em 0em 0em 2.5rem; +} + +/*-------------- + Distance +---------------*/ + +.ui.close.rail { + width: calc( 300px + 1em ); +} +.ui.close.left.rail { + padding: 0em 1em 0em 0em; + margin: 0em 1em 0em 0em; +} +.ui.close.right.rail { + padding: 0em 0em 0em 1em; + margin: 0em 0em 0em 1em; +} +.ui.very.close.rail { + width: calc( 300px + 0.5em ); +} +.ui.very.close.left.rail { + padding: 0em 0.5em 0em 0em; + margin: 0em 0.5em 0em 0em; +} +.ui.very.close.right.rail { + padding: 0em 0em 0em 0.5em; + margin: 0em 0em 0em 0.5em; +} + +/*-------------- + Attached +---------------*/ + +.ui.attached.left.rail, +.ui.attached.right.rail { + padding: 0em; + margin: 0em; +} + +/*-------------- + Sizing +---------------*/ + +.ui.mini.rail { + font-size: 0.78571429rem; +} +.ui.tiny.rail { + font-size: 0.85714286rem; +} +.ui.small.rail { + font-size: 0.92857143rem; +} +.ui.rail { + font-size: 1rem; +} +.ui.large.rail { + font-size: 1.14285714rem; +} +.ui.big.rail { + font-size: 1.28571429rem; +} +.ui.huge.rail { + font-size: 1.42857143rem; +} +.ui.massive.rail { + font-size: 1.71428571rem; +} + + +/******************************* + Theme Overrides +*******************************/ + + + +/******************************* + Site Overrides +*******************************/ + diff --git a/app/static/semantic/components/rail.min.css b/app/static/semantic/components/rail.min.css new file mode 100755 index 0000000..3291463 --- /dev/null +++ b/app/static/semantic/components/rail.min.css @@ -0,0 +1,9 @@ +/*! + * # Semantic UI 2.4.1 - Rail + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */.ui.rail{position:absolute;top:0;width:300px;height:100%}.ui.left.rail{left:auto;right:100%;padding:0 2rem 0 0;margin:0 2rem 0 0}.ui.right.rail{left:100%;right:auto;padding:0 0 0 2rem;margin:0 0 0 2rem}.ui.left.internal.rail{left:0;right:auto;padding:0 0 0 2rem;margin:0 0 0 2rem}.ui.right.internal.rail{left:auto;right:0;padding:0 2rem 0 0;margin:0 2rem 0 0}.ui.dividing.rail{width:302.5px}.ui.left.dividing.rail{padding:0 2.5rem 0 0;margin:0 2.5rem 0 0;border-right:1px solid rgba(34,36,38,.15)}.ui.right.dividing.rail{border-left:1px solid rgba(34,36,38,.15);padding:0 0 0 2.5rem;margin:0 0 0 2.5rem}.ui.close.rail{width:calc(300px + 1em)}.ui.close.left.rail{padding:0 1em 0 0;margin:0 1em 0 0}.ui.close.right.rail{padding:0 0 0 1em;margin:0 0 0 1em}.ui.very.close.rail{width:calc(300px + .5em)}.ui.very.close.left.rail{padding:0 .5em 0 0;margin:0 .5em 0 0}.ui.very.close.right.rail{padding:0 0 0 .5em;margin:0 0 0 .5em}.ui.attached.left.rail,.ui.attached.right.rail{padding:0;margin:0}.ui.mini.rail{font-size:.78571429rem}.ui.tiny.rail{font-size:.85714286rem}.ui.small.rail{font-size:.92857143rem}.ui.rail{font-size:1rem}.ui.large.rail{font-size:1.14285714rem}.ui.big.rail{font-size:1.28571429rem}.ui.huge.rail{font-size:1.42857143rem}.ui.massive.rail{font-size:1.71428571rem} \ No newline at end of file diff --git a/app/static/semantic/components/rating.css b/app/static/semantic/components/rating.css new file mode 100755 index 0000000..5de6a2a --- /dev/null +++ b/app/static/semantic/components/rating.css @@ -0,0 +1,263 @@ +/*! + * # Semantic UI 2.4.0 - Rating + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */ + + +/******************************* + Rating +*******************************/ + +.ui.rating { + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; + white-space: nowrap; + vertical-align: baseline; +} +.ui.rating:last-child { + margin-right: 0em; +} + +/* Icon */ +.ui.rating .icon { + padding: 0em; + margin: 0em; + text-align: center; + font-weight: normal; + font-style: normal; + -webkit-box-flex: 1; + -ms-flex: 1 0 auto; + flex: 1 0 auto; + cursor: pointer; + width: 1.25em; + height: auto; + -webkit-transition: opacity 0.1s ease, background 0.1s ease, text-shadow 0.1s ease, color 0.1s ease; + transition: opacity 0.1s ease, background 0.1s ease, text-shadow 0.1s ease, color 0.1s ease; +} + + +/******************************* + Types +*******************************/ + + +/*------------------- + Standard +--------------------*/ + + +/* Inactive Icon */ +.ui.rating .icon { + background: transparent; + color: rgba(0, 0, 0, 0.15); +} + +/* Active Icon */ +.ui.rating .active.icon { + background: transparent; + color: rgba(0, 0, 0, 0.85); +} + +/* Selected Icon */ +.ui.rating .icon.selected, +.ui.rating .icon.selected.active { + background: transparent; + color: rgba(0, 0, 0, 0.87); +} + +/*------------------- + Star +--------------------*/ + + +/* Inactive */ +.ui.star.rating .icon { + width: 1.25em; + height: auto; + background: transparent; + color: rgba(0, 0, 0, 0.15); + text-shadow: none; +} + +/* Active Star */ +.ui.star.rating .active.icon { + background: transparent !important; + color: #FFE623 !important; + text-shadow: 0px -1px 0px #DDC507, -1px 0px 0px #DDC507, 0px 1px 0px #DDC507, 1px 0px 0px #DDC507 !important; +} + +/* Selected Star */ +.ui.star.rating .icon.selected, +.ui.star.rating .icon.selected.active { + background: transparent !important; + color: #FFCC00 !important; + text-shadow: 0px -1px 0px #E6A200, -1px 0px 0px #E6A200, 0px 1px 0px #E6A200, 1px 0px 0px #E6A200 !important; +} + +/*------------------- + Heart +--------------------*/ + +.ui.heart.rating .icon { + width: 1.4em; + height: auto; + background: transparent; + color: rgba(0, 0, 0, 0.15); + text-shadow: none !important; +} + +/* Active Heart */ +.ui.heart.rating .active.icon { + background: transparent !important; + color: #FF6D75 !important; + text-shadow: 0px -1px 0px #CD0707, -1px 0px 0px #CD0707, 0px 1px 0px #CD0707, 1px 0px 0px #CD0707 !important; +} + +/* Selected Heart */ +.ui.heart.rating .icon.selected, +.ui.heart.rating .icon.selected.active { + background: transparent !important; + color: #FF3000 !important; + text-shadow: 0px -1px 0px #AA0101, -1px 0px 0px #AA0101, 0px 1px 0px #AA0101, 1px 0px 0px #AA0101 !important; +} + + +/******************************* + States +*******************************/ + + +/*------------------- + Disabled +--------------------*/ + + +/* disabled rating */ +.ui.disabled.rating .icon { + cursor: default; +} + +/*------------------- + User Interactive +--------------------*/ + + +/* Selected Rating */ +.ui.rating.selected .active.icon { + opacity: 1; +} +.ui.rating.selected .icon.selected, +.ui.rating .icon.selected { + opacity: 1; +} + + +/******************************* + Variations +*******************************/ + +.ui.mini.rating { + font-size: 0.78571429rem; +} +.ui.tiny.rating { + font-size: 0.85714286rem; +} +.ui.small.rating { + font-size: 0.92857143rem; +} +.ui.rating { + font-size: 1rem; +} +.ui.large.rating { + font-size: 1.14285714rem; +} +.ui.huge.rating { + font-size: 1.42857143rem; +} +.ui.massive.rating { + font-size: 2rem; +} + + +/******************************* + Theme Overrides +*******************************/ + +@font-face { + font-family: 'Rating'; + src: url(data:application/x-font-ttf;charset=utf-8;base64,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) format('truetype'), url(data:application/font-woff;charset=utf-8;base64,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kIiRi5MI5vdUFfcni4vCBYufhJx8mn2ZepJ3i3aLeoR9fX18g3qLdwiLVAUO+yaLshWL+AQFi5GNkY+RjpCQj5KNj42PjI+LCPfAiwWPi4+Kj4mRiZCHj4aPhY2Fi4UIi/wEBYuEiYWHhoeGhoeFiIiKhoqHi4GLhI6EkQj7EvcN+xL7DQWEhYOIgouHi4eLh42EjoaPiJCHkImRi5IIDov3XRWLko2Rj5Kltq+vuKW4pbuZvYu9i7t9uHG4ca9npWCPhI2Fi4SLhYmEh4RxYGdoXnAIXnFbflmLWYtbmF6lXqZnrnG2h5KJkouRCLCLFaRkq2yxdLF0tH+4i7iLtJexorGiq6qksm64Z61goZZ3kXaLdItnfm1ycnJybX9oiwhoi22XcqRypH6pi6+LopGglp9gdWdpbl4I9xiwFYuHjIiOiI6IjoqPi4+LjoyOjo2OjY6Lj4ubkJmXl5eWmZGbi4+LjoyOjo2OjY6LjwiLj4mOiY6IjYiNh4tzi3eCenp6eoJ3i3MIDov3XRWLko2Sj5GouK+utqW3pbqYvouci5yJnIgIm6cFjY6NjI+LjIuNi42JjYqOio+JjomOiY6KjomOiY6JjoqNioyKjomMiYuHi4qLiouLCHdnbVVjQ2NDbVV3Zwh9cgWJiIiJiIuJi36SdJiIjYmOi46LjY+UlJlvl3KcdJ90oHeie6WHkYmSi5IIsIsVqlq0Z711CKGzBXqXfpqCnoKdhp6LoIuikaCWn2B1Z2luXgj3GLAVi4eMiI6IjoiOio+Lj4uOjI6OjY6NjouPi5uQmZeXl5aZkZuLj4uOjI6OjY6NjouPCIuPiY6JjoiNiI2Hi3OLd4J6enp6gneLcwji+10VoLAFtI+wmK2hrqKnqKKvdq1wp2uhCJ2rBZ1/nHycepx6mHqWeY+EjYWLhIuEiYWHhIR/gH1+fG9qaXJmeWV5Y4Jhiwi53BXb9yQFjIKMg4uEi3CDc3x1fHV3fHOBCA6L1BWL90sFi5WPlJKSkpKTj5aLCNmLBZKPmJqepJaZlZeVlY+Qj5ONl42WjpeOmI+YkZWTk5OSk46Vi5uLmYiYhZiFlIGSfgiSfo55i3WLeYd5gXgIvosFn4uchJl8mn2Seot3i3qGfIJ9jYSLhYuEi3yIfoR+i4eLh4uHi3eGen99i3CDdnt8CHt8dYNwiwhmiwV5i3mNeY95kHeRc5N1k36Ph4sIOYsFgIuDjoSShJKHlIuVCLCdFYuGjIePiI+Hj4mQi5CLj42Pj46OjY+LkIuQiZCIjoePh42Gi4aLh4mHh4eIioaLhgjUeRWUiwWNi46Lj4qOi4+KjYqOi4+Kj4mQio6KjYqNio+Kj4mQio6KjIqzfquEpIsIrosFr4uemouri5CKkYqQkY6QkI6SjpKNkouSi5KJkoiRlZWQlouYi5CKkImRiZGJj4iOCJGMkI+PlI+UjZKLkouViJODk4SSgo+CiwgmiwWLlpCalJ6UnpCbi5aLnoiYhJSFlH+QeYuGhoeDiYCJf4h/h3+IfoWBg4KHh4SCgH4Ii4qIiYiGh4aIh4mIiIiIh4eGh4aHh4eHiIiHiIeHiIiHiIeKh4mIioiLCIKLi/tLBQ6L90sVi/dLBYuVj5OSk5KSk46WiwjdiwWPi5iPoZOkk6CRnZCdj56Nn4sIq4sFpougg5x8m3yTd4txCIuJBZd8kHuLd4uHi4eLh5J+jn6LfIuEi4SJhZR9kHyLeot3hHp8fH19eoR3iwhYiwWVeI95i3mLdIh6hH6EfoKBfoV+hX2He4uBi4OPg5KFkYaTh5SHlYiTipOKk4qTiJMIiZSIkYiPgZSBl4CaeKR+moSPCD2LBYCLg4+EkoSSh5SLlQiw9zgVi4aMh4+Ij4ePiZCLkIuPjY+Pjo6Nj4uQi5CJkIiOh4+HjYaLhouHiYeHh4iKhouGCNT7OBWUiwWOi46Kj4mPio+IjoiPh4+IjoePiI+Hj4aPho6HjoiNiI6Hj4aOho6Ii4qWfpKDj4YIk4ORgY5+j36OgI1/jYCPg5CGnYuXj5GUkpSOmYuei5aGmoKfgp6GmouWCPCLBZSLlI+SkpOTjpOLlYuSiZKHlIeUho+Fi46PjY+NkY2RjJCLkIuYhpaBlY6RjZKLkgiLkomSiJKIkoaQhY6MkIyRi5CLm4aXgpOBkn6Pe4sIZosFcotrhGN9iouIioaJh4qHiomKiYqIioaKh4mHioiKiYuHioiLh4qIi4mLCIKLi/tLBQ77lIv3txWLkpCPlo0I9yOgzPcWBY6SkI+RiwiL/BL7FUcFh4mHioiLh4uIjImOiY6KjouPi4yLjYyOCKP3IyPwBYaQiZCLjwgOi/fFFYu1l6yjoqOjrZe2i5aLl4mYh5eHloWWhJaElIWShZOE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) format('woff'); + font-weight: normal; + font-style: normal; +} +.ui.rating .icon { + font-family: 'Rating'; + line-height: 1; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + font-weight: normal; + font-style: normal; + text-align: center; +} + +/* Empty Star */ +.ui.rating .icon:before { + content: '\f005'; +} + +/* Active Star */ +.ui.rating .active.icon:before { + content: '\f005'; +} + +/*------------------- + Star +--------------------*/ + + +/* Unfilled Star */ +.ui.star.rating .icon:before { + content: '\f005'; +} + +/* Active Star */ +.ui.star.rating .active.icon:before { + content: '\f005'; +} + +/* Partial */ +.ui.star.rating .partial.icon:before { + content: '\f006'; +} +.ui.star.rating .partial.icon { + content: '\f005'; +} + +/*------------------- + Heart +--------------------*/ + + +/* Empty Heart +.ui.heart.rating .icon:before { + content: '\f08a'; +} +*/ +.ui.heart.rating .icon:before { + content: '\f004'; +} +/* Active */ +.ui.heart.rating .active.icon:before { + content: '\f004'; +} + + +/******************************* + Site Overrides +*******************************/ + diff --git a/app/static/semantic/components/rating.js b/app/static/semantic/components/rating.js new file mode 100755 index 0000000..2a7f672 --- /dev/null +++ b/app/static/semantic/components/rating.js @@ -0,0 +1,508 @@ +/*! + * # Semantic UI 2.4.1 - Rating + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */ + +;(function ($, window, document, undefined) { + +'use strict'; + +window = (typeof window != 'undefined' && window.Math == Math) + ? window + : (typeof self != 'undefined' && self.Math == Math) + ? self + : Function('return this')() +; + +$.fn.rating = function(parameters) { + var + $allModules = $(this), + moduleSelector = $allModules.selector || '', + + time = new Date().getTime(), + performance = [], + + query = arguments[0], + methodInvoked = (typeof query == 'string'), + queryArguments = [].slice.call(arguments, 1), + returnedValue + ; + $allModules + .each(function() { + var + settings = ( $.isPlainObject(parameters) ) + ? $.extend(true, {}, $.fn.rating.settings, parameters) + : $.extend({}, $.fn.rating.settings), + + namespace = settings.namespace, + className = settings.className, + metadata = settings.metadata, + selector = settings.selector, + error = settings.error, + + eventNamespace = '.' + namespace, + moduleNamespace = 'module-' + namespace, + + element = this, + instance = $(this).data(moduleNamespace), + + $module = $(this), + $icon = $module.find(selector.icon), + + initialLoad, + module + ; + + module = { + + initialize: function() { + module.verbose('Initializing rating module', settings); + + if($icon.length === 0) { + module.setup.layout(); + } + + if(settings.interactive) { + module.enable(); + } + else { + module.disable(); + } + module.set.initialLoad(); + module.set.rating( module.get.initialRating() ); + module.remove.initialLoad(); + module.instantiate(); + }, + + instantiate: function() { + module.verbose('Instantiating module', settings); + instance = module; + $module + .data(moduleNamespace, module) + ; + }, + + destroy: function() { + module.verbose('Destroying previous instance', instance); + module.remove.events(); + $module + .removeData(moduleNamespace) + ; + }, + + refresh: function() { + $icon = $module.find(selector.icon); + }, + + setup: { + layout: function() { + var + maxRating = module.get.maxRating(), + html = $.fn.rating.settings.templates.icon(maxRating) + ; + module.debug('Generating icon html dynamically'); + $module + .html(html) + ; + module.refresh(); + } + }, + + event: { + mouseenter: function() { + var + $activeIcon = $(this) + ; + $activeIcon + .nextAll() + .removeClass(className.selected) + ; + $module + .addClass(className.selected) + ; + $activeIcon + .addClass(className.selected) + .prevAll() + .addClass(className.selected) + ; + }, + mouseleave: function() { + $module + .removeClass(className.selected) + ; + $icon + .removeClass(className.selected) + ; + }, + click: function() { + var + $activeIcon = $(this), + currentRating = module.get.rating(), + rating = $icon.index($activeIcon) + 1, + canClear = (settings.clearable == 'auto') + ? ($icon.length === 1) + : settings.clearable + ; + if(canClear && currentRating == rating) { + module.clearRating(); + } + else { + module.set.rating( rating ); + } + } + }, + + clearRating: function() { + module.debug('Clearing current rating'); + module.set.rating(0); + }, + + bind: { + events: function() { + module.verbose('Binding events'); + $module + .on('mouseenter' + eventNamespace, selector.icon, module.event.mouseenter) + .on('mouseleave' + eventNamespace, selector.icon, module.event.mouseleave) + .on('click' + eventNamespace, selector.icon, module.event.click) + ; + } + }, + + remove: { + events: function() { + module.verbose('Removing events'); + $module + .off(eventNamespace) + ; + }, + initialLoad: function() { + initialLoad = false; + } + }, + + enable: function() { + module.debug('Setting rating to interactive mode'); + module.bind.events(); + $module + .removeClass(className.disabled) + ; + }, + + disable: function() { + module.debug('Setting rating to read-only mode'); + module.remove.events(); + $module + .addClass(className.disabled) + ; + }, + + is: { + initialLoad: function() { + return initialLoad; + } + }, + + get: { + initialRating: function() { + if($module.data(metadata.rating) !== undefined) { + $module.removeData(metadata.rating); + return $module.data(metadata.rating); + } + return settings.initialRating; + }, + maxRating: function() { + if($module.data(metadata.maxRating) !== undefined) { + $module.removeData(metadata.maxRating); + return $module.data(metadata.maxRating); + } + return settings.maxRating; + }, + rating: function() { + var + currentRating = $icon.filter('.' + className.active).length + ; + module.verbose('Current rating retrieved', currentRating); + return currentRating; + } + }, + + set: { + rating: function(rating) { + var + ratingIndex = (rating - 1 >= 0) + ? (rating - 1) + : 0, + $activeIcon = $icon.eq(ratingIndex) + ; + $module + .removeClass(className.selected) + ; + $icon + .removeClass(className.selected) + .removeClass(className.active) + ; + if(rating > 0) { + module.verbose('Setting current rating to', rating); + $activeIcon + .prevAll() + .addBack() + .addClass(className.active) + ; + } + if(!module.is.initialLoad()) { + settings.onRate.call(element, rating); + } + }, + initialLoad: function() { + initialLoad = true; + } + }, + + setting: function(name, value) { + module.debug('Changing setting', name, value); + if( $.isPlainObject(name) ) { + $.extend(true, settings, name); + } + else if(value !== undefined) { + if($.isPlainObject(settings[name])) { + $.extend(true, settings[name], value); + } + else { + settings[name] = value; + } + } + else { + return settings[name]; + } + }, + internal: function(name, value) { + if( $.isPlainObject(name) ) { + $.extend(true, module, name); + } + else if(value !== undefined) { + module[name] = value; + } + else { + return module[name]; + } + }, + debug: function() { + if(!settings.silent && settings.debug) { + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':'); + module.debug.apply(console, arguments); + } + } + }, + verbose: function() { + if(!settings.silent && settings.verbose && settings.debug) { + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':'); + module.verbose.apply(console, arguments); + } + } + }, + error: function() { + if(!settings.silent) { + module.error = Function.prototype.bind.call(console.error, console, settings.name + ':'); + module.error.apply(console, arguments); + } + }, + performance: { + log: function(message) { + var + currentTime, + executionTime, + previousTime + ; + if(settings.performance) { + currentTime = new Date().getTime(); + previousTime = time || currentTime; + executionTime = currentTime - previousTime; + time = currentTime; + performance.push({ + 'Name' : message[0], + 'Arguments' : [].slice.call(message, 1) || '', + 'Element' : element, + 'Execution Time' : executionTime + }); + } + clearTimeout(module.performance.timer); + module.performance.timer = setTimeout(module.performance.display, 500); + }, + display: function() { + var + title = settings.name + ':', + totalTime = 0 + ; + time = false; + clearTimeout(module.performance.timer); + $.each(performance, function(index, data) { + totalTime += data['Execution Time']; + }); + title += ' ' + totalTime + 'ms'; + if(moduleSelector) { + title += ' \'' + moduleSelector + '\''; + } + if($allModules.length > 1) { + title += ' ' + '(' + $allModules.length + ')'; + } + if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { + console.groupCollapsed(title); + if(console.table) { + console.table(performance); + } + else { + $.each(performance, function(index, data) { + console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); + }); + } + console.groupEnd(); + } + performance = []; + } + }, + invoke: function(query, passedArguments, context) { + var + object = instance, + maxDepth, + found, + response + ; + passedArguments = passedArguments || queryArguments; + context = element || context; + if(typeof query == 'string' && object !== undefined) { + query = query.split(/[\. ]/); + maxDepth = query.length - 1; + $.each(query, function(depth, value) { + var camelCaseValue = (depth != maxDepth) + ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) + : query + ; + if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) { + object = object[camelCaseValue]; + } + else if( object[camelCaseValue] !== undefined ) { + found = object[camelCaseValue]; + return false; + } + else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) { + object = object[value]; + } + else if( object[value] !== undefined ) { + found = object[value]; + return false; + } + else { + return false; + } + }); + } + if ( $.isFunction( found ) ) { + response = found.apply(context, passedArguments); + } + else if(found !== undefined) { + response = found; + } + if($.isArray(returnedValue)) { + returnedValue.push(response); + } + else if(returnedValue !== undefined) { + returnedValue = [returnedValue, response]; + } + else if(response !== undefined) { + returnedValue = response; + } + return found; + } + }; + if(methodInvoked) { + if(instance === undefined) { + module.initialize(); + } + module.invoke(query); + } + else { + if(instance !== undefined) { + instance.invoke('destroy'); + } + module.initialize(); + } + }) + ; + + return (returnedValue !== undefined) + ? returnedValue + : this + ; +}; + +$.fn.rating.settings = { + + name : 'Rating', + namespace : 'rating', + + slent : false, + debug : false, + verbose : false, + performance : true, + + initialRating : 0, + interactive : true, + maxRating : 4, + clearable : 'auto', + + fireOnInit : false, + + onRate : function(rating){}, + + error : { + method : 'The method you called is not defined', + noMaximum : 'No maximum rating specified. Cannot generate HTML automatically' + }, + + + metadata: { + rating : 'rating', + maxRating : 'maxRating' + }, + + className : { + active : 'active', + disabled : 'disabled', + selected : 'selected', + loading : 'loading' + }, + + selector : { + icon : '.icon' + }, + + templates: { + icon: function(maxRating) { + var + icon = 1, + html = '' + ; + while(icon <= maxRating) { + html += ''; + icon++; + } + return html; + } + } + +}; + +})( jQuery, window, document ); diff --git a/app/static/semantic/components/rating.min.css b/app/static/semantic/components/rating.min.css new file mode 100755 index 0000000..e30415b --- /dev/null +++ b/app/static/semantic/components/rating.min.css @@ -0,0 +1,9 @@ +/*! + * # Semantic UI 2.4.0 - Rating + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */.ui.rating{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;white-space:nowrap;vertical-align:baseline}.ui.rating:last-child{margin-right:0}.ui.rating .icon{padding:0;margin:0;text-align:center;font-weight:400;font-style:normal;-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;cursor:pointer;width:1.25em;height:auto;-webkit-transition:opacity .1s ease,background .1s ease,text-shadow .1s ease,color .1s ease;transition:opacity .1s ease,background .1s ease,text-shadow .1s ease,color .1s ease}.ui.rating .icon{background:0 0;color:rgba(0,0,0,.15)}.ui.rating .active.icon{background:0 0;color:rgba(0,0,0,.85)}.ui.rating .icon.selected,.ui.rating .icon.selected.active{background:0 0;color:rgba(0,0,0,.87)}.ui.star.rating .icon{width:1.25em;height:auto;background:0 0;color:rgba(0,0,0,.15);text-shadow:none}.ui.star.rating .active.icon{background:0 0!important;color:#ffe623!important;text-shadow:0 -1px 0 #ddc507,-1px 0 0 #ddc507,0 1px 0 #ddc507,1px 0 0 #ddc507!important}.ui.star.rating .icon.selected,.ui.star.rating .icon.selected.active{background:0 0!important;color:#fc0!important;text-shadow:0 -1px 0 #e6a200,-1px 0 0 #e6a200,0 1px 0 #e6a200,1px 0 0 #e6a200!important}.ui.heart.rating .icon{width:1.4em;height:auto;background:0 0;color:rgba(0,0,0,.15);text-shadow:none!important}.ui.heart.rating .active.icon{background:0 0!important;color:#ff6d75!important;text-shadow:0 -1px 0 #cd0707,-1px 0 0 #cd0707,0 1px 0 #cd0707,1px 0 0 #cd0707!important}.ui.heart.rating .icon.selected,.ui.heart.rating .icon.selected.active{background:0 0!important;color:#ff3000!important;text-shadow:0 -1px 0 #aa0101,-1px 0 0 #aa0101,0 1px 0 #aa0101,1px 0 0 #aa0101!important}.ui.disabled.rating .icon{cursor:default}.ui.rating.selected .active.icon{opacity:1}.ui.rating .icon.selected,.ui.rating.selected .icon.selected{opacity:1}.ui.mini.rating{font-size:.78571429rem}.ui.tiny.rating{font-size:.85714286rem}.ui.small.rating{font-size:.92857143rem}.ui.rating{font-size:1rem}.ui.large.rating{font-size:1.14285714rem}.ui.huge.rating{font-size:1.42857143rem}.ui.massive.rating{font-size:2rem}@font-face{font-family:Rating;src:url(data:application/x-font-ttf;charset=utf-8;base64,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) format('truetype'),url(data:application/font-woff;charset=utf-8;base64,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kIiRi5MI5vdUFfcni4vCBYufhJx8mn2ZepJ3i3aLeoR9fX18g3qLdwiLVAUO+yaLshWL+AQFi5GNkY+RjpCQj5KNj42PjI+LCPfAiwWPi4+Kj4mRiZCHj4aPhY2Fi4UIi/wEBYuEiYWHhoeGhoeFiIiKhoqHi4GLhI6EkQj7EvcN+xL7DQWEhYOIgouHi4eLh42EjoaPiJCHkImRi5IIDov3XRWLko2Rj5Kltq+vuKW4pbuZvYu9i7t9uHG4ca9npWCPhI2Fi4SLhYmEh4RxYGdoXnAIXnFbflmLWYtbmF6lXqZnrnG2h5KJkouRCLCLFaRkq2yxdLF0tH+4i7iLtJexorGiq6qksm64Z61goZZ3kXaLdItnfm1ycnJybX9oiwhoi22XcqRypH6pi6+LopGglp9gdWdpbl4I9xiwFYuHjIiOiI6IjoqPi4+LjoyOjo2OjY6Lj4ubkJmXl5eWmZGbi4+LjoyOjo2OjY6LjwiLj4mOiY6IjYiNh4tzi3eCenp6eoJ3i3MIDov3XRWLko2Sj5GouK+utqW3pbqYvouci5yJnIgIm6cFjY6NjI+LjIuNi42JjYqOio+JjomOiY6KjomOiY6JjoqNioyKjomMiYuHi4qLiouLCHdnbVVjQ2NDbVV3Zwh9cgWJiIiJiIuJi36SdJiIjYmOi46LjY+UlJlvl3KcdJ90oHeie6WHkYmSi5IIsIsVqlq0Z711CKGzBXqXfpqCnoKdhp6LoIuikaCWn2B1Z2luXgj3GLAVi4eMiI6IjoiOio+Lj4uOjI6OjY6NjouPi5uQmZeXl5aZkZuLj4uOjI6OjY6NjouPCIuPiY6JjoiNiI2Hi3OLd4J6enp6gneLcwji+10VoLAFtI+wmK2hrqKnqKKvdq1wp2uhCJ2rBZ1/nHycepx6mHqWeY+EjYWLhIuEiYWHhIR/gH1+fG9qaXJmeWV5Y4Jhiwi53BXb9yQFjIKMg4uEi3CDc3x1fHV3fHOBCA6L1BWL90sFi5WPlJKSkpKTj5aLCNmLBZKPmJqepJaZlZeVlY+Qj5ONl42WjpeOmI+YkZWTk5OSk46Vi5uLmYiYhZiFlIGSfgiSfo55i3WLeYd5gXgIvosFn4uchJl8mn2Seot3i3qGfIJ9jYSLhYuEi3yIfoR+i4eLh4uHi3eGen99i3CDdnt8CHt8dYNwiwhmiwV5i3mNeY95kHeRc5N1k36Ph4sIOYsFgIuDjoSShJKHlIuVCLCdFYuGjIePiI+Hj4mQi5CLj42Pj46OjY+LkIuQiZCIjoePh42Gi4aLh4mHh4eIioaLhgjUeRWUiwWNi46Lj4qOi4+KjYqOi4+Kj4mQio6KjYqNio+Kj4mQio6KjIqzfquEpIsIrosFr4uemouri5CKkYqQkY6QkI6SjpKNkouSi5KJkoiRlZWQlouYi5CKkImRiZGJj4iOCJGMkI+PlI+UjZKLkouViJODk4SSgo+CiwgmiwWLlpCalJ6UnpCbi5aLnoiYhJSFlH+QeYuGhoeDiYCJf4h/h3+IfoWBg4KHh4SCgH4Ii4qIiYiGh4aIh4mIiIiIh4eGh4aHh4eHiIiHiIeHiIiHiIeKh4mIioiLCIKLi/tLBQ6L90sVi/dLBYuVj5OSk5KSk46WiwjdiwWPi5iPoZOkk6CRnZCdj56Nn4sIq4sFpougg5x8m3yTd4txCIuJBZd8kHuLd4uHi4eLh5J+jn6LfIuEi4SJhZR9kHyLeot3hHp8fH19eoR3iwhYiwWVeI95i3mLdIh6hH6EfoKBfoV+hX2He4uBi4OPg5KFkYaTh5SHlYiTipOKk4qTiJMIiZSIkYiPgZSBl4CaeKR+moSPCD2LBYCLg4+EkoSSh5SLlQiw9zgVi4aMh4+Ij4ePiZCLkIuPjY+Pjo6Nj4uQi5CJkIiOh4+HjYaLhouHiYeHh4iKhouGCNT7OBWUiwWOi46Kj4mPio+IjoiPh4+IjoePiI+Hj4aPho6HjoiNiI6Hj4aOho6Ii4qWfpKDj4YIk4ORgY5+j36OgI1/jYCPg5CGnYuXj5GUkpSOmYuei5aGmoKfgp6GmouWCPCLBZSLlI+SkpOTjpOLlYuSiZKHlIeUho+Fi46PjY+NkY2RjJCLkIuYhpaBlY6RjZKLkgiLkomSiJKIkoaQhY6MkIyRi5CLm4aXgpOBkn6Pe4sIZosFcotrhGN9iouIioaJh4qHiomKiYqIioaKh4mHioiKiYuHioiLh4qIi4mLCIKLi/tLBQ77lIv3txWLkpCPlo0I9yOgzPcWBY6SkI+RiwiL/BL7FUcFh4mHioiLh4uIjImOiY6KjouPi4yLjYyOCKP3IyPwBYaQiZCLjwgOi/fFFYu1l6yjoqOjrZe2i5aLl4mYh5eHloWWhJaElIWShZOE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) format('woff');font-weight:400;font-style:normal}.ui.rating .icon{font-family:Rating;line-height:1;-webkit-backface-visibility:hidden;backface-visibility:hidden;font-weight:400;font-style:normal;text-align:center}.ui.rating .icon:before{content:'\f005'}.ui.rating .active.icon:before{content:'\f005'}.ui.star.rating .icon:before{content:'\f005'}.ui.star.rating .active.icon:before{content:'\f005'}.ui.star.rating .partial.icon:before{content:'\f006'}.ui.star.rating .partial.icon{content:'\f005'}.ui.heart.rating .icon:before{content:'\f004'}.ui.heart.rating .active.icon:before{content:'\f004'} \ No newline at end of file diff --git a/app/static/semantic/components/rating.min.js b/app/static/semantic/components/rating.min.js new file mode 100755 index 0000000..d9efc5a --- /dev/null +++ b/app/static/semantic/components/rating.min.js @@ -0,0 +1 @@ +!function(C,e,n,T){"use strict";e=void 0!==e&&e.Math==Math?e:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),C.fn.rating=function(m){var f,v=C(this),p=v.selector||"",b=(new Date).getTime(),h=[],y=m,x="string"==typeof y,R=[].slice.call(arguments,1);return v.each(function(){var e,i,a=C.isPlainObject(m)?C.extend(!0,{},C.fn.rating.settings,m):C.extend({},C.fn.rating.settings),n=a.namespace,o=a.className,t=a.metadata,r=a.selector,s=(a.error,"."+n),l="module-"+n,c=this,u=C(this).data(l),d=C(this),g=d.find(r.icon);i={initialize:function(){i.verbose("Initializing rating module",a),0===g.length&&i.setup.layout(),a.interactive?i.enable():i.disable(),i.set.initialLoad(),i.set.rating(i.get.initialRating()),i.remove.initialLoad(),i.instantiate()},instantiate:function(){i.verbose("Instantiating module",a),u=i,d.data(l,i)},destroy:function(){i.verbose("Destroying previous instance",u),i.remove.events(),d.removeData(l)},refresh:function(){g=d.find(r.icon)},setup:{layout:function(){var e=i.get.maxRating(),n=C.fn.rating.settings.templates.icon(e);i.debug("Generating icon html dynamically"),d.html(n),i.refresh()}},event:{mouseenter:function(){var e=C(this);e.nextAll().removeClass(o.selected),d.addClass(o.selected),e.addClass(o.selected).prevAll().addClass(o.selected)},mouseleave:function(){d.removeClass(o.selected),g.removeClass(o.selected)},click:function(){var e=C(this),n=i.get.rating(),t=g.index(e)+1;("auto"==a.clearable?1===g.length:a.clearable)&&n==t?i.clearRating():i.set.rating(t)}},clearRating:function(){i.debug("Clearing current rating"),i.set.rating(0)},bind:{events:function(){i.verbose("Binding events"),d.on("mouseenter"+s,r.icon,i.event.mouseenter).on("mouseleave"+s,r.icon,i.event.mouseleave).on("click"+s,r.icon,i.event.click)}},remove:{events:function(){i.verbose("Removing events"),d.off(s)},initialLoad:function(){e=!1}},enable:function(){i.debug("Setting rating to interactive mode"),i.bind.events(),d.removeClass(o.disabled)},disable:function(){i.debug("Setting rating to read-only mode"),i.remove.events(),d.addClass(o.disabled)},is:{initialLoad:function(){return e}},get:{initialRating:function(){return d.data(t.rating)!==T?(d.removeData(t.rating),d.data(t.rating)):a.initialRating},maxRating:function(){return d.data(t.maxRating)!==T?(d.removeData(t.maxRating),d.data(t.maxRating)):a.maxRating},rating:function(){var e=g.filter("."+o.active).length;return i.verbose("Current rating retrieved",e),e}},set:{rating:function(e){var n=0<=e-1?e-1:0,t=g.eq(n);d.removeClass(o.selected),g.removeClass(o.selected).removeClass(o.active),0',n++;return t}}}}(jQuery,window,document); \ No newline at end of file diff --git a/app/static/semantic/components/reset.css b/app/static/semantic/components/reset.css new file mode 100755 index 0000000..2fcd32d --- /dev/null +++ b/app/static/semantic/components/reset.css @@ -0,0 +1,485 @@ +/*! + * # Semantic UI 2.4.1 - Reset + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */ + + +/******************************* + Reset +*******************************/ + + +/* Border-Box */ +*, +*:before, +*:after { + -webkit-box-sizing: inherit; + box-sizing: inherit; +} +html { + -webkit-box-sizing: border-box; + box-sizing: border-box; +} + +/* iPad Input Shadows */ +input[type="text"], +input[type="email"], +input[type="search"], +input[type="password"] { + -webkit-appearance: none; + -moz-appearance: none; + +/* mobile firefox too! */ +} +/*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */ + +/* Document + ========================================================================== */ +/** + * 1. Correct the line height in all browsers. + * 2. Prevent adjustments of font size after orientation changes in + * IE on Windows Phone and in iOS. + */ +html { + line-height: 1.15; + +/* 1 */ + -ms-text-size-adjust: 100%; + +/* 2 */ + -webkit-text-size-adjust: 100%; + +/* 2 */ +} + +/* Sections + ========================================================================== */ +/** + * Remove the margin in all browsers (opinionated). + */ +body { + margin: 0; +} +/** + * Add the correct display in IE 9-. + */ +article, +aside, +footer, +header, +nav, +section { + display: block; +} +/** + * Correct the font size and margin on `h1` elements within `section` and + * `article` contexts in Chrome, Firefox, and Safari. + */ +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/* Grouping content + ========================================================================== */ +/** + * Add the correct display in IE 9-. + * 1. Add the correct display in IE. + */ +figcaption, +figure, +main { + +/* 1 */ + display: block; +} +/** + * Add the correct margin in IE 8. + */ +figure { + margin: 1em 40px; +} +/** + * 1. Add the correct box sizing in Firefox. + * 2. Show the overflow in Edge and IE. + */ +hr { + -webkit-box-sizing: content-box; + box-sizing: content-box; + +/* 1 */ + height: 0; + +/* 1 */ + overflow: visible; + +/* 2 */ +} +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ +pre { + font-family: monospace, monospace; + +/* 1 */ + font-size: 1em; + +/* 2 */ +} + +/* Text-level semantics + ========================================================================== */ +/** + * 1. Remove the gray background on active links in IE 10. + * 2. Remove gaps in links underline in iOS 8+ and Safari 8+. + */ +a { + background-color: transparent; + +/* 1 */ + -webkit-text-decoration-skip: objects; + +/* 2 */ +} +/** + * 1. Remove the bottom border in Chrome 57- and Firefox 39-. + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. + */ +abbr[title] { + border-bottom: none; + +/* 1 */ + text-decoration: underline; + +/* 2 */ + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; + +/* 2 */ +} +/** + * Prevent the duplicate application of `bolder` by the next rule in Safari 6. + */ +b, +strong { + font-weight: inherit; +} +/** + * Add the correct font weight in Chrome, Edge, and Safari. + */ +b, +strong { + font-weight: bolder; +} +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ +code, +kbd, +samp { + font-family: monospace, monospace; + +/* 1 */ + font-size: 1em; + +/* 2 */ +} +/** + * Add the correct font style in Android 4.3-. + */ +dfn { + font-style: italic; +} +/** + * Add the correct background and color in IE 9-. + */ +mark { + background-color: #ff0; + color: #000; +} +/** + * Add the correct font size in all browsers. + */ +small { + font-size: 80%; +} +/** + * Prevent `sub` and `sup` elements from affecting the line height in + * all browsers. + */ +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} +sub { + bottom: -0.25em; +} +sup { + top: -0.5em; +} + +/* Embedded content + ========================================================================== */ +/** + * Add the correct display in IE 9-. + */ +audio, +video { + display: inline-block; +} +/** + * Add the correct display in iOS 4-7. + */ +audio:not([controls]) { + display: none; + height: 0; +} +/** + * Remove the border on images inside links in IE 10-. + */ +img { + border-style: none; +} +/** + * Hide the overflow in IE. + */ +svg:not(:root) { + overflow: hidden; +} + +/* Forms + ========================================================================== */ +/** + * 1. Change the font styles in all browsers (opinionated). + * 2. Remove the margin in Firefox and Safari. + */ +button, +input, +optgroup, +select, +textarea { + font-family: sans-serif; + +/* 1 */ + font-size: 100%; + +/* 1 */ + line-height: 1.15; + +/* 1 */ + margin: 0; + +/* 2 */ +} +/** + * Show the overflow in IE. + * 1. Show the overflow in Edge. + */ +button, +input { + +/* 1 */ + overflow: visible; +} +/** + * Remove the inheritance of text transform in Edge, Firefox, and IE. + * 1. Remove the inheritance of text transform in Firefox. + */ +button, +select { + +/* 1 */ + text-transform: none; +} +/** + * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video` + * controls in Android 4. + * 2. Correct the inability to style clickable types in iOS and Safari. + */ +button, +html [type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; + +/* 2 */ +} +/** + * Remove the inner border and padding in Firefox. + */ +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + border-style: none; + padding: 0; +} +/** + * Restore the focus styles unset by the previous rule. + */ +button:-moz-focusring, +[type="button"]:-moz-focusring, +[type="reset"]:-moz-focusring, +[type="submit"]:-moz-focusring { + outline: 1px dotted ButtonText; +} +/** + * Correct the padding in Firefox. + */ +fieldset { + padding: 0.35em 0.75em 0.625em; +} +/** + * 1. Correct the text wrapping in Edge and IE. + * 2. Correct the color inheritance from `fieldset` elements in IE. + * 3. Remove the padding so developers are not caught out when they zero out + * `fieldset` elements in all browsers. + */ +legend { + -webkit-box-sizing: border-box; + box-sizing: border-box; + +/* 1 */ + color: inherit; + +/* 2 */ + display: table; + +/* 1 */ + max-width: 100%; + +/* 1 */ + padding: 0; + +/* 3 */ + white-space: normal; + +/* 1 */ +} +/** + * 1. Add the correct display in IE 9-. + * 2. Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ +progress { + display: inline-block; + +/* 1 */ + vertical-align: baseline; + +/* 2 */ +} +/** + * Remove the default vertical scrollbar in IE. + */ +textarea { + overflow: auto; +} +/** + * 1. Add the correct box sizing in IE 10-. + * 2. Remove the padding in IE 10-. + */ +[type="checkbox"], +[type="radio"] { + -webkit-box-sizing: border-box; + box-sizing: border-box; + +/* 1 */ + padding: 0; + +/* 2 */ +} +/** + * Correct the cursor style of increment and decrement buttons in Chrome. + */ +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; +} +/** + * 1. Correct the odd appearance in Chrome and Safari. + * 2. Correct the outline style in Safari. + */ +[type="search"] { + -webkit-appearance: textfield; + +/* 1 */ + outline-offset: -2px; + +/* 2 */ +} +/** + * Remove the inner padding and cancel buttons in Chrome and Safari on macOS. + */ +[type="search"]::-webkit-search-cancel-button, +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} +/** + * 1. Correct the inability to style clickable types in iOS and Safari. + * 2. Change font properties to `inherit` in Safari. + */ +::-webkit-file-upload-button { + -webkit-appearance: button; + +/* 1 */ + font: inherit; + +/* 2 */ +} + +/* Interactive + ========================================================================== */ +/* + * Add the correct display in IE 9-. + * 1. Add the correct display in Edge, IE, and Firefox. + */ +details, +menu { + display: block; +} +/* + * Add the correct display in all browsers. + */ +summary { + display: list-item; +} + +/* Scripting + ========================================================================== */ +/** + * Add the correct display in IE 9-. + */ +canvas { + display: inline-block; +} +/** + * Add the correct display in IE. + */ +template { + display: none; +} + +/* Hidden + ========================================================================== */ +/** + * Add the correct display in IE 10-. + */ +[hidden] { + display: none; +} + + +/******************************* + Site Overrides +*******************************/ + diff --git a/app/static/semantic/components/reset.min.css b/app/static/semantic/components/reset.min.css new file mode 100755 index 0000000..1ace3d3 --- /dev/null +++ b/app/static/semantic/components/reset.min.css @@ -0,0 +1,9 @@ +/*! + * # Semantic UI 2.4.1 - Reset + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */*,:after,:before{-webkit-box-sizing:inherit;box-sizing:inherit}html{-webkit-box-sizing:border-box;box-sizing:border-box}input[type=email],input[type=password],input[type=search],input[type=text]{-webkit-appearance:none;-moz-appearance:none}/*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:.67em 0}figcaption,figure,main{display:block}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent;-webkit-text-decoration-skip:objects}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:inherit}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{display:inline-block;vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details,menu{display:block}summary{display:list-item}canvas{display:inline-block}template{display:none}[hidden]{display:none} \ No newline at end of file diff --git a/app/static/semantic/components/reveal.css b/app/static/semantic/components/reveal.css new file mode 100755 index 0000000..e2eb897 --- /dev/null +++ b/app/static/semantic/components/reveal.css @@ -0,0 +1,295 @@ +/*! + * # Semantic UI 2.4.1 - Reveal + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */ + + +/******************************* + Reveal +*******************************/ + +.ui.reveal { + display: inherit; + position: relative !important; + font-size: 0em !important; +} +.ui.reveal > .visible.content { + position: absolute !important; + top: 0em !important; + left: 0em !important; + z-index: 3 !important; + -webkit-transition: all 0.5s ease 0.1s; + transition: all 0.5s ease 0.1s; +} +.ui.reveal > .hidden.content { + position: relative !important; + z-index: 2 !important; +} + +/* Make sure hovered element is on top of other reveal */ +.ui.active.reveal .visible.content, +.ui.reveal:hover .visible.content { + z-index: 4 !important; +} + + +/******************************* + Types +*******************************/ + + +/*-------------- + Slide +---------------*/ + +.ui.slide.reveal { + position: relative !important; + overflow: hidden !important; + white-space: nowrap; +} +.ui.slide.reveal > .content { + display: block; + width: 100%; + white-space: normal; + float: left; + margin: 0em; + -webkit-transition: -webkit-transform 0.5s ease 0.1s; + transition: -webkit-transform 0.5s ease 0.1s; + transition: transform 0.5s ease 0.1s; + transition: transform 0.5s ease 0.1s, -webkit-transform 0.5s ease 0.1s; +} +.ui.slide.reveal > .visible.content { + position: relative !important; +} +.ui.slide.reveal > .hidden.content { + position: absolute !important; + left: 0% !important; + width: 100% !important; + -webkit-transform: translateX(100%) !important; + transform: translateX(100%) !important; +} +.ui.slide.active.reveal > .visible.content, +.ui.slide.reveal:hover > .visible.content { + -webkit-transform: translateX(-100%) !important; + transform: translateX(-100%) !important; +} +.ui.slide.active.reveal > .hidden.content, +.ui.slide.reveal:hover > .hidden.content { + -webkit-transform: translateX(0%) !important; + transform: translateX(0%) !important; +} +.ui.slide.right.reveal > .visible.content { + -webkit-transform: translateX(0%) !important; + transform: translateX(0%) !important; +} +.ui.slide.right.reveal > .hidden.content { + -webkit-transform: translateX(-100%) !important; + transform: translateX(-100%) !important; +} +.ui.slide.right.active.reveal > .visible.content, +.ui.slide.right.reveal:hover > .visible.content { + -webkit-transform: translateX(100%) !important; + transform: translateX(100%) !important; +} +.ui.slide.right.active.reveal > .hidden.content, +.ui.slide.right.reveal:hover > .hidden.content { + -webkit-transform: translateX(0%) !important; + transform: translateX(0%) !important; +} +.ui.slide.up.reveal > .hidden.content { + -webkit-transform: translateY(100%) !important; + transform: translateY(100%) !important; +} +.ui.slide.up.active.reveal > .visible.content, +.ui.slide.up.reveal:hover > .visible.content { + -webkit-transform: translateY(-100%) !important; + transform: translateY(-100%) !important; +} +.ui.slide.up.active.reveal > .hidden.content, +.ui.slide.up.reveal:hover > .hidden.content { + -webkit-transform: translateY(0%) !important; + transform: translateY(0%) !important; +} +.ui.slide.down.reveal > .hidden.content { + -webkit-transform: translateY(-100%) !important; + transform: translateY(-100%) !important; +} +.ui.slide.down.active.reveal > .visible.content, +.ui.slide.down.reveal:hover > .visible.content { + -webkit-transform: translateY(100%) !important; + transform: translateY(100%) !important; +} +.ui.slide.down.active.reveal > .hidden.content, +.ui.slide.down.reveal:hover > .hidden.content { + -webkit-transform: translateY(0%) !important; + transform: translateY(0%) !important; +} + +/*-------------- + Fade +---------------*/ + +.ui.fade.reveal > .visible.content { + opacity: 1; +} +.ui.fade.active.reveal > .visible.content, +.ui.fade.reveal:hover > .visible.content { + opacity: 0; +} + +/*-------------- + Move +---------------*/ + +.ui.move.reveal { + position: relative !important; + overflow: hidden !important; + white-space: nowrap; +} +.ui.move.reveal > .content { + display: block; + float: left; + white-space: normal; + margin: 0em; + -webkit-transition: -webkit-transform 0.5s cubic-bezier(0.175, 0.885, 0.32, 1) 0.1s; + transition: -webkit-transform 0.5s cubic-bezier(0.175, 0.885, 0.32, 1) 0.1s; + transition: transform 0.5s cubic-bezier(0.175, 0.885, 0.32, 1) 0.1s; + transition: transform 0.5s cubic-bezier(0.175, 0.885, 0.32, 1) 0.1s, -webkit-transform 0.5s cubic-bezier(0.175, 0.885, 0.32, 1) 0.1s; +} +.ui.move.reveal > .visible.content { + position: relative !important; +} +.ui.move.reveal > .hidden.content { + position: absolute !important; + left: 0% !important; + width: 100% !important; +} +.ui.move.active.reveal > .visible.content, +.ui.move.reveal:hover > .visible.content { + -webkit-transform: translateX(-100%) !important; + transform: translateX(-100%) !important; +} +.ui.move.right.active.reveal > .visible.content, +.ui.move.right.reveal:hover > .visible.content { + -webkit-transform: translateX(100%) !important; + transform: translateX(100%) !important; +} +.ui.move.up.active.reveal > .visible.content, +.ui.move.up.reveal:hover > .visible.content { + -webkit-transform: translateY(-100%) !important; + transform: translateY(-100%) !important; +} +.ui.move.down.active.reveal > .visible.content, +.ui.move.down.reveal:hover > .visible.content { + -webkit-transform: translateY(100%) !important; + transform: translateY(100%) !important; +} + +/*-------------- + Rotate +---------------*/ + +.ui.rotate.reveal > .visible.content { + -webkit-transition-duration: 0.5s; + transition-duration: 0.5s; + -webkit-transform: rotate(0deg); + transform: rotate(0deg); +} +.ui.rotate.reveal > .visible.content, +.ui.rotate.right.reveal > .visible.content { + -webkit-transform-origin: bottom right; + transform-origin: bottom right; +} +.ui.rotate.active.reveal > .visible.content, +.ui.rotate.reveal:hover > .visible.content, +.ui.rotate.right.active.reveal > .visible.content, +.ui.rotate.right.reveal:hover > .visible.content { + -webkit-transform: rotate(110deg); + transform: rotate(110deg); +} +.ui.rotate.left.reveal > .visible.content { + -webkit-transform-origin: bottom left; + transform-origin: bottom left; +} +.ui.rotate.left.active.reveal > .visible.content, +.ui.rotate.left.reveal:hover > .visible.content { + -webkit-transform: rotate(-110deg); + transform: rotate(-110deg); +} + + +/******************************* + States +*******************************/ + +.ui.disabled.reveal:hover > .visible.visible.content { + position: static !important; + display: block !important; + opacity: 1 !important; + top: 0 !important; + left: 0 !important; + right: auto !important; + bottom: auto !important; + -webkit-transform: none !important; + transform: none !important; +} +.ui.disabled.reveal:hover > .hidden.hidden.content { + display: none !important; +} + + +/******************************* + Coupling +*******************************/ + +.ui.reveal > .ui.ribbon.label { + z-index: 5; +} + + +/******************************* + Variations +*******************************/ + + +/*-------------- + Visible +---------------*/ + +.ui.visible.reveal { + overflow: visible; +} + +/*-------------- + Instant +---------------*/ + +.ui.instant.reveal > .content { + -webkit-transition-delay: 0s !important; + transition-delay: 0s !important; +} + +/*-------------- + Sizing +---------------*/ + +.ui.reveal > .content { + font-size: 1rem !important; +} + + +/******************************* + Theme Overrides +*******************************/ + + + +/******************************* + Site Overrides +*******************************/ + diff --git a/app/static/semantic/components/reveal.min.css b/app/static/semantic/components/reveal.min.css new file mode 100755 index 0000000..ed1f248 --- /dev/null +++ b/app/static/semantic/components/reveal.min.css @@ -0,0 +1,9 @@ +/*! + * # Semantic UI 2.4.1 - Reveal + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */.ui.reveal{display:inherit;position:relative!important;font-size:0!important}.ui.reveal>.visible.content{position:absolute!important;top:0!important;left:0!important;z-index:3!important;-webkit-transition:all .5s ease .1s;transition:all .5s ease .1s}.ui.reveal>.hidden.content{position:relative!important;z-index:2!important}.ui.active.reveal .visible.content,.ui.reveal:hover .visible.content{z-index:4!important}.ui.slide.reveal{position:relative!important;overflow:hidden!important;white-space:nowrap}.ui.slide.reveal>.content{display:block;width:100%;white-space:normal;float:left;margin:0;-webkit-transition:-webkit-transform .5s ease .1s;transition:-webkit-transform .5s ease .1s;transition:transform .5s ease .1s;transition:transform .5s ease .1s,-webkit-transform .5s ease .1s}.ui.slide.reveal>.visible.content{position:relative!important}.ui.slide.reveal>.hidden.content{position:absolute!important;left:0!important;width:100%!important;-webkit-transform:translateX(100%)!important;transform:translateX(100%)!important}.ui.slide.active.reveal>.visible.content,.ui.slide.reveal:hover>.visible.content{-webkit-transform:translateX(-100%)!important;transform:translateX(-100%)!important}.ui.slide.active.reveal>.hidden.content,.ui.slide.reveal:hover>.hidden.content{-webkit-transform:translateX(0)!important;transform:translateX(0)!important}.ui.slide.right.reveal>.visible.content{-webkit-transform:translateX(0)!important;transform:translateX(0)!important}.ui.slide.right.reveal>.hidden.content{-webkit-transform:translateX(-100%)!important;transform:translateX(-100%)!important}.ui.slide.right.active.reveal>.visible.content,.ui.slide.right.reveal:hover>.visible.content{-webkit-transform:translateX(100%)!important;transform:translateX(100%)!important}.ui.slide.right.active.reveal>.hidden.content,.ui.slide.right.reveal:hover>.hidden.content{-webkit-transform:translateX(0)!important;transform:translateX(0)!important}.ui.slide.up.reveal>.hidden.content{-webkit-transform:translateY(100%)!important;transform:translateY(100%)!important}.ui.slide.up.active.reveal>.visible.content,.ui.slide.up.reveal:hover>.visible.content{-webkit-transform:translateY(-100%)!important;transform:translateY(-100%)!important}.ui.slide.up.active.reveal>.hidden.content,.ui.slide.up.reveal:hover>.hidden.content{-webkit-transform:translateY(0)!important;transform:translateY(0)!important}.ui.slide.down.reveal>.hidden.content{-webkit-transform:translateY(-100%)!important;transform:translateY(-100%)!important}.ui.slide.down.active.reveal>.visible.content,.ui.slide.down.reveal:hover>.visible.content{-webkit-transform:translateY(100%)!important;transform:translateY(100%)!important}.ui.slide.down.active.reveal>.hidden.content,.ui.slide.down.reveal:hover>.hidden.content{-webkit-transform:translateY(0)!important;transform:translateY(0)!important}.ui.fade.reveal>.visible.content{opacity:1}.ui.fade.active.reveal>.visible.content,.ui.fade.reveal:hover>.visible.content{opacity:0}.ui.move.reveal{position:relative!important;overflow:hidden!important;white-space:nowrap}.ui.move.reveal>.content{display:block;float:left;white-space:normal;margin:0;-webkit-transition:-webkit-transform .5s cubic-bezier(.175,.885,.32,1) .1s;transition:-webkit-transform .5s cubic-bezier(.175,.885,.32,1) .1s;transition:transform .5s cubic-bezier(.175,.885,.32,1) .1s;transition:transform .5s cubic-bezier(.175,.885,.32,1) .1s,-webkit-transform .5s cubic-bezier(.175,.885,.32,1) .1s}.ui.move.reveal>.visible.content{position:relative!important}.ui.move.reveal>.hidden.content{position:absolute!important;left:0!important;width:100%!important}.ui.move.active.reveal>.visible.content,.ui.move.reveal:hover>.visible.content{-webkit-transform:translateX(-100%)!important;transform:translateX(-100%)!important}.ui.move.right.active.reveal>.visible.content,.ui.move.right.reveal:hover>.visible.content{-webkit-transform:translateX(100%)!important;transform:translateX(100%)!important}.ui.move.up.active.reveal>.visible.content,.ui.move.up.reveal:hover>.visible.content{-webkit-transform:translateY(-100%)!important;transform:translateY(-100%)!important}.ui.move.down.active.reveal>.visible.content,.ui.move.down.reveal:hover>.visible.content{-webkit-transform:translateY(100%)!important;transform:translateY(100%)!important}.ui.rotate.reveal>.visible.content{-webkit-transition-duration:.5s;transition-duration:.5s;-webkit-transform:rotate(0);transform:rotate(0)}.ui.rotate.reveal>.visible.content,.ui.rotate.right.reveal>.visible.content{-webkit-transform-origin:bottom right;transform-origin:bottom right}.ui.rotate.active.reveal>.visible.content,.ui.rotate.reveal:hover>.visible.content,.ui.rotate.right.active.reveal>.visible.content,.ui.rotate.right.reveal:hover>.visible.content{-webkit-transform:rotate(110deg);transform:rotate(110deg)}.ui.rotate.left.reveal>.visible.content{-webkit-transform-origin:bottom left;transform-origin:bottom left}.ui.rotate.left.active.reveal>.visible.content,.ui.rotate.left.reveal:hover>.visible.content{-webkit-transform:rotate(-110deg);transform:rotate(-110deg)}.ui.disabled.reveal:hover>.visible.visible.content{position:static!important;display:block!important;opacity:1!important;top:0!important;left:0!important;right:auto!important;bottom:auto!important;-webkit-transform:none!important;transform:none!important}.ui.disabled.reveal:hover>.hidden.hidden.content{display:none!important}.ui.reveal>.ui.ribbon.label{z-index:5}.ui.visible.reveal{overflow:visible}.ui.instant.reveal>.content{-webkit-transition-delay:0s!important;transition-delay:0s!important}.ui.reveal>.content{font-size:1rem!important} \ No newline at end of file diff --git a/app/static/semantic/components/search.css b/app/static/semantic/components/search.css new file mode 100755 index 0000000..bda3276 --- /dev/null +++ b/app/static/semantic/components/search.css @@ -0,0 +1,445 @@ +/*! + * # Semantic UI 2.4.0 - Search + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */ + + +/******************************* + Search +*******************************/ + +.ui.search { + position: relative; +} +.ui.search > .prompt { + margin: 0em; + outline: none; + -webkit-appearance: none; + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); + text-shadow: none; + font-style: normal; + font-weight: normal; + line-height: 1.21428571em; + padding: 0.67857143em 1em; + font-size: 1em; + background: #FFFFFF; + border: 1px solid rgba(34, 36, 38, 0.15); + color: rgba(0, 0, 0, 0.87); + -webkit-box-shadow: 0em 0em 0em 0em transparent inset; + box-shadow: 0em 0em 0em 0em transparent inset; + -webkit-transition: background-color 0.1s ease, color 0.1s ease, border-color 0.1s ease, -webkit-box-shadow 0.1s ease; + transition: background-color 0.1s ease, color 0.1s ease, border-color 0.1s ease, -webkit-box-shadow 0.1s ease; + transition: background-color 0.1s ease, color 0.1s ease, box-shadow 0.1s ease, border-color 0.1s ease; + transition: background-color 0.1s ease, color 0.1s ease, box-shadow 0.1s ease, border-color 0.1s ease, -webkit-box-shadow 0.1s ease; +} +.ui.search .prompt { + border-radius: 500rem; +} + +/*-------------- + Icon +---------------*/ + +.ui.search .prompt ~ .search.icon { + cursor: pointer; +} + +/*-------------- + Results +---------------*/ + +.ui.search > .results { + display: none; + position: absolute; + top: 100%; + left: 0%; + -webkit-transform-origin: center top; + transform-origin: center top; + white-space: normal; + text-align: left; + text-transform: none; + background: #FFFFFF; + margin-top: 0.5em; + width: 18em; + border-radius: 0.28571429rem; + -webkit-box-shadow: 0px 2px 4px 0px rgba(34, 36, 38, 0.12), 0px 2px 10px 0px rgba(34, 36, 38, 0.15); + box-shadow: 0px 2px 4px 0px rgba(34, 36, 38, 0.12), 0px 2px 10px 0px rgba(34, 36, 38, 0.15); + border: 1px solid #D4D4D5; + z-index: 998; +} +.ui.search > .results > :first-child { + border-radius: 0.28571429rem 0.28571429rem 0em 0em; +} +.ui.search > .results > :last-child { + border-radius: 0em 0em 0.28571429rem 0.28571429rem; +} + +/*-------------- + Result +---------------*/ + +.ui.search > .results .result { + cursor: pointer; + display: block; + overflow: hidden; + font-size: 1em; + padding: 0.85714286em 1.14285714em; + color: rgba(0, 0, 0, 0.87); + line-height: 1.33; + border-bottom: 1px solid rgba(34, 36, 38, 0.1); +} +.ui.search > .results .result:last-child { + border-bottom: none !important; +} + +/* Image */ +.ui.search > .results .result .image { + float: right; + overflow: hidden; + background: none; + width: 5em; + height: 3em; + border-radius: 0.25em; +} +.ui.search > .results .result .image img { + display: block; + width: auto; + height: 100%; +} + +/*-------------- + Info +---------------*/ + +.ui.search > .results .result .image + .content { + margin: 0em 6em 0em 0em; +} +.ui.search > .results .result .title { + margin: -0.14285714em 0em 0em; + font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif; + font-weight: bold; + font-size: 1em; + color: rgba(0, 0, 0, 0.85); +} +.ui.search > .results .result .description { + margin-top: 0; + font-size: 0.92857143em; + color: rgba(0, 0, 0, 0.4); +} +.ui.search > .results .result .price { + float: right; + color: #21BA45; +} + +/*-------------- + Message +---------------*/ + +.ui.search > .results > .message { + padding: 1em 1em; +} +.ui.search > .results > .message .header { + font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif; + font-size: 1rem; + font-weight: bold; + color: rgba(0, 0, 0, 0.87); +} +.ui.search > .results > .message .description { + margin-top: 0.25rem; + font-size: 1em; + color: rgba(0, 0, 0, 0.87); +} + +/* View All Results */ +.ui.search > .results > .action { + display: block; + border-top: none; + background: #F3F4F5; + padding: 0.92857143em 1em; + color: rgba(0, 0, 0, 0.87); + font-weight: bold; + text-align: center; +} + + +/******************************* + States +*******************************/ + + +/*-------------------- + Focus +---------------------*/ + +.ui.search > .prompt:focus { + border-color: rgba(34, 36, 38, 0.35); + background: #FFFFFF; + color: rgba(0, 0, 0, 0.95); +} + +/*-------------------- + Loading +---------------------*/ + +.ui.loading.search .input > i.icon:before { + position: absolute; + content: ''; + top: 50%; + left: 50%; + margin: -0.64285714em 0em 0em -0.64285714em; + width: 1.28571429em; + height: 1.28571429em; + border-radius: 500rem; + border: 0.2em solid rgba(0, 0, 0, 0.1); +} +.ui.loading.search .input > i.icon:after { + position: absolute; + content: ''; + top: 50%; + left: 50%; + margin: -0.64285714em 0em 0em -0.64285714em; + width: 1.28571429em; + height: 1.28571429em; + -webkit-animation: button-spin 0.6s linear; + animation: button-spin 0.6s linear; + -webkit-animation-iteration-count: infinite; + animation-iteration-count: infinite; + border-radius: 500rem; + border-color: #767676 transparent transparent; + border-style: solid; + border-width: 0.2em; + -webkit-box-shadow: 0px 0px 0px 1px transparent; + box-shadow: 0px 0px 0px 1px transparent; +} + +/*-------------- + Hover +---------------*/ + +.ui.search > .results .result:hover, +.ui.category.search > .results .category .result:hover { + background: #F9FAFB; +} +.ui.search .action:hover { + background: #E0E0E0; +} + +/*-------------- + Active +---------------*/ + +.ui.category.search > .results .category.active { + background: #F3F4F5; +} +.ui.category.search > .results .category.active > .name { + color: rgba(0, 0, 0, 0.87); +} +.ui.search > .results .result.active, +.ui.category.search > .results .category .result.active { + position: relative; + border-left-color: rgba(34, 36, 38, 0.1); + background: #F3F4F5; + -webkit-box-shadow: none; + box-shadow: none; +} +.ui.search > .results .result.active .title { + color: rgba(0, 0, 0, 0.85); +} +.ui.search > .results .result.active .description { + color: rgba(0, 0, 0, 0.85); +} + +/*-------------------- + Disabled +----------------------*/ + + +/* Disabled */ +.ui.disabled.search { + cursor: default; + pointer-events: none; + opacity: 0.45; +} + + +/******************************* + Types +*******************************/ + + +/*-------------- + Selection +---------------*/ + +.ui.search.selection .prompt { + border-radius: 0.28571429rem; +} + +/* Remove input */ +.ui.search.selection > .icon.input > .remove.icon { + pointer-events: none; + position: absolute; + left: auto; + opacity: 0; + color: ''; + top: 0em; + right: 0em; + -webkit-transition: color 0.1s ease, opacity 0.1s ease; + transition: color 0.1s ease, opacity 0.1s ease; +} +.ui.search.selection > .icon.input > .active.remove.icon { + cursor: pointer; + opacity: 0.8; + pointer-events: auto; +} +.ui.search.selection > .icon.input:not([class*="left icon"]) > .icon ~ .remove.icon { + right: 1.85714em; +} +.ui.search.selection > .icon.input > .remove.icon:hover { + opacity: 1; + color: #DB2828; +} + +/*-------------- + Category +---------------*/ + +.ui.category.search .results { + width: 28em; +} +.ui.category.search .results.animating, +.ui.category.search .results.visible { + display: table; +} + +/* Category */ +.ui.category.search > .results .category { + display: table-row; + background: #F3F4F5; + -webkit-box-shadow: none; + box-shadow: none; + -webkit-transition: background 0.1s ease, border-color 0.1s ease; + transition: background 0.1s ease, border-color 0.1s ease; +} + +/* Last Category */ +.ui.category.search > .results .category:last-child { + border-bottom: none; +} + +/* First / Last */ +.ui.category.search > .results .category:first-child .name + .result { + border-radius: 0em 0.28571429rem 0em 0em; +} +.ui.category.search > .results .category:last-child .result:last-child { + border-radius: 0em 0em 0.28571429rem 0em; +} + +/* Category Result Name */ +.ui.category.search > .results .category > .name { + display: table-cell; + text-overflow: ellipsis; + width: 100px; + white-space: nowrap; + background: transparent; + font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif; + font-size: 1em; + padding: 0.4em 1em; + font-weight: bold; + color: rgba(0, 0, 0, 0.4); + border-bottom: 1px solid rgba(34, 36, 38, 0.1); +} + +/* Category Result */ +.ui.category.search > .results .category .results { + display: table-cell; + background: #FFFFFF; + border-left: 1px solid rgba(34, 36, 38, 0.15); + border-bottom: 1px solid rgba(34, 36, 38, 0.1); +} +.ui.category.search > .results .category .result { + border-bottom: 1px solid rgba(34, 36, 38, 0.1); + -webkit-transition: background 0.1s ease, border-color 0.1s ease; + transition: background 0.1s ease, border-color 0.1s ease; + padding: 0.85714286em 1.14285714em; +} + + +/******************************* + Variations +*******************************/ + + +/*------------------- + Left / Right +--------------------*/ + +.ui[class*="left aligned"].search > .results { + right: auto; + left: 0%; +} +.ui[class*="right aligned"].search > .results { + right: 0%; + left: auto; +} + +/*-------------- + Fluid +---------------*/ + +.ui.fluid.search .results { + width: 100%; +} + +/*-------------- + Sizes +---------------*/ + +.ui.mini.search { + font-size: 0.78571429em; +} +.ui.small.search { + font-size: 0.92857143em; +} +.ui.search { + font-size: 1em; +} +.ui.large.search { + font-size: 1.14285714em; +} +.ui.big.search { + font-size: 1.28571429em; +} +.ui.huge.search { + font-size: 1.42857143em; +} +.ui.massive.search { + font-size: 1.71428571em; +} + +/*-------------- + Mobile +---------------*/ + +@media only screen and (max-width: 767px) { + .ui.search .results { + max-width: calc(100vw - 2rem); + } +} + + +/******************************* + Theme Overrides +*******************************/ + + + +/******************************* + Site Overrides +*******************************/ + diff --git a/app/static/semantic/components/search.js b/app/static/semantic/components/search.js new file mode 100755 index 0000000..bd92d9e --- /dev/null +++ b/app/static/semantic/components/search.js @@ -0,0 +1,1505 @@ +/*! + * # Semantic UI 2.4.1 - Search + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */ + +;(function ($, window, document, undefined) { + +'use strict'; + +window = (typeof window != 'undefined' && window.Math == Math) + ? window + : (typeof self != 'undefined' && self.Math == Math) + ? self + : Function('return this')() +; + +$.fn.search = function(parameters) { + var + $allModules = $(this), + moduleSelector = $allModules.selector || '', + + time = new Date().getTime(), + performance = [], + + query = arguments[0], + methodInvoked = (typeof query == 'string'), + queryArguments = [].slice.call(arguments, 1), + returnedValue + ; + $(this) + .each(function() { + var + settings = ( $.isPlainObject(parameters) ) + ? $.extend(true, {}, $.fn.search.settings, parameters) + : $.extend({}, $.fn.search.settings), + + className = settings.className, + metadata = settings.metadata, + regExp = settings.regExp, + fields = settings.fields, + selector = settings.selector, + error = settings.error, + namespace = settings.namespace, + + eventNamespace = '.' + namespace, + moduleNamespace = namespace + '-module', + + $module = $(this), + $prompt = $module.find(selector.prompt), + $searchButton = $module.find(selector.searchButton), + $results = $module.find(selector.results), + $result = $module.find(selector.result), + $category = $module.find(selector.category), + + element = this, + instance = $module.data(moduleNamespace), + + disabledBubbled = false, + resultsDismissed = false, + + module + ; + + module = { + + initialize: function() { + module.verbose('Initializing module'); + module.get.settings(); + module.determine.searchFields(); + module.bind.events(); + module.set.type(); + module.create.results(); + module.instantiate(); + }, + instantiate: function() { + module.verbose('Storing instance of module', module); + instance = module; + $module + .data(moduleNamespace, module) + ; + }, + destroy: function() { + module.verbose('Destroying instance'); + $module + .off(eventNamespace) + .removeData(moduleNamespace) + ; + }, + + refresh: function() { + module.debug('Refreshing selector cache'); + $prompt = $module.find(selector.prompt); + $searchButton = $module.find(selector.searchButton); + $category = $module.find(selector.category); + $results = $module.find(selector.results); + $result = $module.find(selector.result); + }, + + refreshResults: function() { + $results = $module.find(selector.results); + $result = $module.find(selector.result); + }, + + bind: { + events: function() { + module.verbose('Binding events to search'); + if(settings.automatic) { + $module + .on(module.get.inputEvent() + eventNamespace, selector.prompt, module.event.input) + ; + $prompt + .attr('autocomplete', 'off') + ; + } + $module + // prompt + .on('focus' + eventNamespace, selector.prompt, module.event.focus) + .on('blur' + eventNamespace, selector.prompt, module.event.blur) + .on('keydown' + eventNamespace, selector.prompt, module.handleKeyboard) + // search button + .on('click' + eventNamespace, selector.searchButton, module.query) + // results + .on('mousedown' + eventNamespace, selector.results, module.event.result.mousedown) + .on('mouseup' + eventNamespace, selector.results, module.event.result.mouseup) + .on('click' + eventNamespace, selector.result, module.event.result.click) + ; + } + }, + + determine: { + searchFields: function() { + // this makes sure $.extend does not add specified search fields to default fields + // this is the only setting which should not extend defaults + if(parameters && parameters.searchFields !== undefined) { + settings.searchFields = parameters.searchFields; + } + } + }, + + event: { + input: function() { + if(settings.searchDelay) { + clearTimeout(module.timer); + module.timer = setTimeout(function() { + if(module.is.focused()) { + module.query(); + } + }, settings.searchDelay); + } + else { + module.query(); + } + }, + focus: function() { + module.set.focus(); + if(settings.searchOnFocus && module.has.minimumCharacters() ) { + module.query(function() { + if(module.can.show() ) { + module.showResults(); + } + }); + } + }, + blur: function(event) { + var + pageLostFocus = (document.activeElement === this), + callback = function() { + module.cancel.query(); + module.remove.focus(); + module.timer = setTimeout(module.hideResults, settings.hideDelay); + } + ; + if(pageLostFocus) { + return; + } + resultsDismissed = false; + if(module.resultsClicked) { + module.debug('Determining if user action caused search to close'); + $module + .one('click.close' + eventNamespace, selector.results, function(event) { + if(module.is.inMessage(event) || disabledBubbled) { + $prompt.focus(); + return; + } + disabledBubbled = false; + if( !module.is.animating() && !module.is.hidden()) { + callback(); + } + }) + ; + } + else { + module.debug('Input blurred without user action, closing results'); + callback(); + } + }, + result: { + mousedown: function() { + module.resultsClicked = true; + }, + mouseup: function() { + module.resultsClicked = false; + }, + click: function(event) { + module.debug('Search result selected'); + var + $result = $(this), + $title = $result.find(selector.title).eq(0), + $link = $result.is('a[href]') + ? $result + : $result.find('a[href]').eq(0), + href = $link.attr('href') || false, + target = $link.attr('target') || false, + title = $title.html(), + // title is used for result lookup + value = ($title.length > 0) + ? $title.text() + : false, + results = module.get.results(), + result = $result.data(metadata.result) || module.get.result(value, results), + returnedValue + ; + if( $.isFunction(settings.onSelect) ) { + if(settings.onSelect.call(element, result, results) === false) { + module.debug('Custom onSelect callback cancelled default select action'); + disabledBubbled = true; + return; + } + } + module.hideResults(); + if(value) { + module.set.value(value); + } + if(href) { + module.verbose('Opening search link found in result', $link); + if(target == '_blank' || event.ctrlKey) { + window.open(href); + } + else { + window.location.href = (href); + } + } + } + } + }, + handleKeyboard: function(event) { + var + // force selector refresh + $result = $module.find(selector.result), + $category = $module.find(selector.category), + $activeResult = $result.filter('.' + className.active), + currentIndex = $result.index( $activeResult ), + resultSize = $result.length, + hasActiveResult = $activeResult.length > 0, + + keyCode = event.which, + keys = { + backspace : 8, + enter : 13, + escape : 27, + upArrow : 38, + downArrow : 40 + }, + newIndex + ; + // search shortcuts + if(keyCode == keys.escape) { + module.verbose('Escape key pressed, blurring search field'); + module.hideResults(); + resultsDismissed = true; + } + if( module.is.visible() ) { + if(keyCode == keys.enter) { + module.verbose('Enter key pressed, selecting active result'); + if( $result.filter('.' + className.active).length > 0 ) { + module.event.result.click.call($result.filter('.' + className.active), event); + event.preventDefault(); + return false; + } + } + else if(keyCode == keys.upArrow && hasActiveResult) { + module.verbose('Up key pressed, changing active result'); + newIndex = (currentIndex - 1 < 0) + ? currentIndex + : currentIndex - 1 + ; + $category + .removeClass(className.active) + ; + $result + .removeClass(className.active) + .eq(newIndex) + .addClass(className.active) + .closest($category) + .addClass(className.active) + ; + event.preventDefault(); + } + else if(keyCode == keys.downArrow) { + module.verbose('Down key pressed, changing active result'); + newIndex = (currentIndex + 1 >= resultSize) + ? currentIndex + : currentIndex + 1 + ; + $category + .removeClass(className.active) + ; + $result + .removeClass(className.active) + .eq(newIndex) + .addClass(className.active) + .closest($category) + .addClass(className.active) + ; + event.preventDefault(); + } + } + else { + // query shortcuts + if(keyCode == keys.enter) { + module.verbose('Enter key pressed, executing query'); + module.query(); + module.set.buttonPressed(); + $prompt.one('keyup', module.remove.buttonFocus); + } + } + }, + + setup: { + api: function(searchTerm, callback) { + var + apiSettings = { + debug : settings.debug, + on : false, + cache : settings.cache, + action : 'search', + urlData : { + query : searchTerm + }, + onSuccess : function(response) { + module.parse.response.call(element, response, searchTerm); + callback(); + }, + onFailure : function() { + module.displayMessage(error.serverError); + callback(); + }, + onAbort : function(response) { + }, + onError : module.error + }, + searchHTML + ; + $.extend(true, apiSettings, settings.apiSettings); + module.verbose('Setting up API request', apiSettings); + $module.api(apiSettings); + } + }, + + can: { + useAPI: function() { + return $.fn.api !== undefined; + }, + show: function() { + return module.is.focused() && !module.is.visible() && !module.is.empty(); + }, + transition: function() { + return settings.transition && $.fn.transition !== undefined && $module.transition('is supported'); + } + }, + + is: { + animating: function() { + return $results.hasClass(className.animating); + }, + hidden: function() { + return $results.hasClass(className.hidden); + }, + inMessage: function(event) { + if(!event.target) { + return; + } + var + $target = $(event.target), + isInDOM = $.contains(document.documentElement, event.target) + ; + return (isInDOM && $target.closest(selector.message).length > 0); + }, + empty: function() { + return ($results.html() === ''); + }, + visible: function() { + return ($results.filter(':visible').length > 0); + }, + focused: function() { + return ($prompt.filter(':focus').length > 0); + } + }, + + get: { + settings: function() { + if($.isPlainObject(parameters) && parameters.searchFullText) { + settings.fullTextSearch = parameters.searchFullText; + module.error(settings.error.oldSearchSyntax, element); + } + }, + inputEvent: function() { + var + prompt = $prompt[0], + inputEvent = (prompt !== undefined && prompt.oninput !== undefined) + ? 'input' + : (prompt !== undefined && prompt.onpropertychange !== undefined) + ? 'propertychange' + : 'keyup' + ; + return inputEvent; + }, + value: function() { + return $prompt.val(); + }, + results: function() { + var + results = $module.data(metadata.results) + ; + return results; + }, + result: function(value, results) { + var + lookupFields = ['title', 'id'], + result = false + ; + value = (value !== undefined) + ? value + : module.get.value() + ; + results = (results !== undefined) + ? results + : module.get.results() + ; + if(settings.type === 'category') { + module.debug('Finding result that matches', value); + $.each(results, function(index, category) { + if($.isArray(category.results)) { + result = module.search.object(value, category.results, lookupFields)[0]; + // don't continue searching if a result is found + if(result) { + return false; + } + } + }); + } + else { + module.debug('Finding result in results object', value); + result = module.search.object(value, results, lookupFields)[0]; + } + return result || false; + }, + }, + + select: { + firstResult: function() { + module.verbose('Selecting first result'); + $result.first().addClass(className.active); + } + }, + + set: { + focus: function() { + $module.addClass(className.focus); + }, + loading: function() { + $module.addClass(className.loading); + }, + value: function(value) { + module.verbose('Setting search input value', value); + $prompt + .val(value) + ; + }, + type: function(type) { + type = type || settings.type; + if(settings.type == 'category') { + $module.addClass(settings.type); + } + }, + buttonPressed: function() { + $searchButton.addClass(className.pressed); + } + }, + + remove: { + loading: function() { + $module.removeClass(className.loading); + }, + focus: function() { + $module.removeClass(className.focus); + }, + buttonPressed: function() { + $searchButton.removeClass(className.pressed); + } + }, + + query: function(callback) { + callback = $.isFunction(callback) + ? callback + : function(){} + ; + var + searchTerm = module.get.value(), + cache = module.read.cache(searchTerm) + ; + callback = callback || function() {}; + if( module.has.minimumCharacters() ) { + if(cache) { + module.debug('Reading result from cache', searchTerm); + module.save.results(cache.results); + module.addResults(cache.html); + module.inject.id(cache.results); + callback(); + } + else { + module.debug('Querying for', searchTerm); + if($.isPlainObject(settings.source) || $.isArray(settings.source)) { + module.search.local(searchTerm); + callback(); + } + else if( module.can.useAPI() ) { + module.search.remote(searchTerm, callback); + } + else { + module.error(error.source); + callback(); + } + } + settings.onSearchQuery.call(element, searchTerm); + } + else { + module.hideResults(); + } + }, + + search: { + local: function(searchTerm) { + var + results = module.search.object(searchTerm, settings.content), + searchHTML + ; + module.set.loading(); + module.save.results(results); + module.debug('Returned full local search results', results); + if(settings.maxResults > 0) { + module.debug('Using specified max results', results); + results = results.slice(0, settings.maxResults); + } + if(settings.type == 'category') { + results = module.create.categoryResults(results); + } + searchHTML = module.generateResults({ + results: results + }); + module.remove.loading(); + module.addResults(searchHTML); + module.inject.id(results); + module.write.cache(searchTerm, { + html : searchHTML, + results : results + }); + }, + remote: function(searchTerm, callback) { + callback = $.isFunction(callback) + ? callback + : function(){} + ; + if($module.api('is loading')) { + $module.api('abort'); + } + module.setup.api(searchTerm, callback); + $module + .api('query') + ; + }, + object: function(searchTerm, source, searchFields) { + var + results = [], + exactResults = [], + fuzzyResults = [], + searchExp = searchTerm.toString().replace(regExp.escape, '\\$&'), + matchRegExp = new RegExp(regExp.beginsWith + searchExp, 'i'), + + // avoid duplicates when pushing results + addResult = function(array, result) { + var + notResult = ($.inArray(result, results) == -1), + notFuzzyResult = ($.inArray(result, fuzzyResults) == -1), + notExactResults = ($.inArray(result, exactResults) == -1) + ; + if(notResult && notFuzzyResult && notExactResults) { + array.push(result); + } + } + ; + source = source || settings.source; + searchFields = (searchFields !== undefined) + ? searchFields + : settings.searchFields + ; + + // search fields should be array to loop correctly + if(!$.isArray(searchFields)) { + searchFields = [searchFields]; + } + + // exit conditions if no source + if(source === undefined || source === false) { + module.error(error.source); + return []; + } + // iterate through search fields looking for matches + $.each(searchFields, function(index, field) { + $.each(source, function(label, content) { + var + fieldExists = (typeof content[field] == 'string') + ; + if(fieldExists) { + if( content[field].search(matchRegExp) !== -1) { + // content starts with value (first in results) + addResult(results, content); + } + else if(settings.fullTextSearch === 'exact' && module.exactSearch(searchTerm, content[field]) ) { + // content fuzzy matches (last in results) + addResult(exactResults, content); + } + else if(settings.fullTextSearch == true && module.fuzzySearch(searchTerm, content[field]) ) { + // content fuzzy matches (last in results) + addResult(fuzzyResults, content); + } + } + }); + }); + $.merge(exactResults, fuzzyResults) + $.merge(results, exactResults); + return results; + } + }, + exactSearch: function (query, term) { + query = query.toLowerCase(); + term = term.toLowerCase(); + if(term.indexOf(query) > -1) { + return true; + } + return false; + }, + fuzzySearch: function(query, term) { + var + termLength = term.length, + queryLength = query.length + ; + if(typeof query !== 'string') { + return false; + } + query = query.toLowerCase(); + term = term.toLowerCase(); + if(queryLength > termLength) { + return false; + } + if(queryLength === termLength) { + return (query === term); + } + search: for (var characterIndex = 0, nextCharacterIndex = 0; characterIndex < queryLength; characterIndex++) { + var + queryCharacter = query.charCodeAt(characterIndex) + ; + while(nextCharacterIndex < termLength) { + if(term.charCodeAt(nextCharacterIndex++) === queryCharacter) { + continue search; + } + } + return false; + } + return true; + }, + + parse: { + response: function(response, searchTerm) { + var + searchHTML = module.generateResults(response) + ; + module.verbose('Parsing server response', response); + if(response !== undefined) { + if(searchTerm !== undefined && response[fields.results] !== undefined) { + module.addResults(searchHTML); + module.inject.id(response[fields.results]); + module.write.cache(searchTerm, { + html : searchHTML, + results : response[fields.results] + }); + module.save.results(response[fields.results]); + } + } + } + }, + + cancel: { + query: function() { + if( module.can.useAPI() ) { + $module.api('abort'); + } + } + }, + + has: { + minimumCharacters: function() { + var + searchTerm = module.get.value(), + numCharacters = searchTerm.length + ; + return (numCharacters >= settings.minCharacters); + }, + results: function() { + if($results.length === 0) { + return false; + } + var + html = $results.html() + ; + return html != ''; + } + }, + + clear: { + cache: function(value) { + var + cache = $module.data(metadata.cache) + ; + if(!value) { + module.debug('Clearing cache', value); + $module.removeData(metadata.cache); + } + else if(value && cache && cache[value]) { + module.debug('Removing value from cache', value); + delete cache[value]; + $module.data(metadata.cache, cache); + } + } + }, + + read: { + cache: function(name) { + var + cache = $module.data(metadata.cache) + ; + if(settings.cache) { + module.verbose('Checking cache for generated html for query', name); + return (typeof cache == 'object') && (cache[name] !== undefined) + ? cache[name] + : false + ; + } + return false; + } + }, + + create: { + categoryResults: function(results) { + var + categoryResults = {} + ; + $.each(results, function(index, result) { + if(!result.category) { + return; + } + if(categoryResults[result.category] === undefined) { + module.verbose('Creating new category of results', result.category); + categoryResults[result.category] = { + name : result.category, + results : [result] + } + } + else { + categoryResults[result.category].results.push(result); + } + }); + return categoryResults; + }, + id: function(resultIndex, categoryIndex) { + var + resultID = (resultIndex + 1), // not zero indexed + categoryID = (categoryIndex + 1), + firstCharCode, + letterID, + id + ; + if(categoryIndex !== undefined) { + // start char code for "A" + letterID = String.fromCharCode(97 + categoryIndex); + id = letterID + resultID; + module.verbose('Creating category result id', id); + } + else { + id = resultID; + module.verbose('Creating result id', id); + } + return id; + }, + results: function() { + if($results.length === 0) { + $results = $('
') + .addClass(className.results) + .appendTo($module) + ; + } + } + }, + + inject: { + result: function(result, resultIndex, categoryIndex) { + module.verbose('Injecting result into results'); + var + $selectedResult = (categoryIndex !== undefined) + ? $results + .children().eq(categoryIndex) + .children(selector.results) + .first() + .children(selector.result) + .eq(resultIndex) + : $results + .children(selector.result).eq(resultIndex) + ; + module.verbose('Injecting results metadata', $selectedResult); + $selectedResult + .data(metadata.result, result) + ; + }, + id: function(results) { + module.debug('Injecting unique ids into results'); + var + // since results may be object, we must use counters + categoryIndex = 0, + resultIndex = 0 + ; + if(settings.type === 'category') { + // iterate through each category result + $.each(results, function(index, category) { + resultIndex = 0; + $.each(category.results, function(index, value) { + var + result = category.results[index] + ; + if(result.id === undefined) { + result.id = module.create.id(resultIndex, categoryIndex); + } + module.inject.result(result, resultIndex, categoryIndex); + resultIndex++; + }); + categoryIndex++; + }); + } + else { + // top level + $.each(results, function(index, value) { + var + result = results[index] + ; + if(result.id === undefined) { + result.id = module.create.id(resultIndex); + } + module.inject.result(result, resultIndex); + resultIndex++; + }); + } + return results; + } + }, + + save: { + results: function(results) { + module.verbose('Saving current search results to metadata', results); + $module.data(metadata.results, results); + } + }, + + write: { + cache: function(name, value) { + var + cache = ($module.data(metadata.cache) !== undefined) + ? $module.data(metadata.cache) + : {} + ; + if(settings.cache) { + module.verbose('Writing generated html to cache', name, value); + cache[name] = value; + $module + .data(metadata.cache, cache) + ; + } + } + }, + + addResults: function(html) { + if( $.isFunction(settings.onResultsAdd) ) { + if( settings.onResultsAdd.call($results, html) === false ) { + module.debug('onResultsAdd callback cancelled default action'); + return false; + } + } + if(html) { + $results + .html(html) + ; + module.refreshResults(); + if(settings.selectFirstResult) { + module.select.firstResult(); + } + module.showResults(); + } + else { + module.hideResults(function() { + $results.empty(); + }); + } + }, + + showResults: function(callback) { + callback = $.isFunction(callback) + ? callback + : function(){} + ; + if(resultsDismissed) { + return; + } + if(!module.is.visible() && module.has.results()) { + if( module.can.transition() ) { + module.debug('Showing results with css animations'); + $results + .transition({ + animation : settings.transition + ' in', + debug : settings.debug, + verbose : settings.verbose, + duration : settings.duration, + onComplete : function() { + callback(); + }, + queue : true + }) + ; + } + else { + module.debug('Showing results with javascript'); + $results + .stop() + .fadeIn(settings.duration, settings.easing) + ; + } + settings.onResultsOpen.call($results); + } + }, + hideResults: function(callback) { + callback = $.isFunction(callback) + ? callback + : function(){} + ; + if( module.is.visible() ) { + if( module.can.transition() ) { + module.debug('Hiding results with css animations'); + $results + .transition({ + animation : settings.transition + ' out', + debug : settings.debug, + verbose : settings.verbose, + duration : settings.duration, + onComplete : function() { + callback(); + }, + queue : true + }) + ; + } + else { + module.debug('Hiding results with javascript'); + $results + .stop() + .fadeOut(settings.duration, settings.easing) + ; + } + settings.onResultsClose.call($results); + } + }, + + generateResults: function(response) { + module.debug('Generating html from response', response); + var + template = settings.templates[settings.type], + isProperObject = ($.isPlainObject(response[fields.results]) && !$.isEmptyObject(response[fields.results])), + isProperArray = ($.isArray(response[fields.results]) && response[fields.results].length > 0), + html = '' + ; + if(isProperObject || isProperArray ) { + if(settings.maxResults > 0) { + if(isProperObject) { + if(settings.type == 'standard') { + module.error(error.maxResults); + } + } + else { + response[fields.results] = response[fields.results].slice(0, settings.maxResults); + } + } + if($.isFunction(template)) { + html = template(response, fields); + } + else { + module.error(error.noTemplate, false); + } + } + else if(settings.showNoResults) { + html = module.displayMessage(error.noResults, 'empty'); + } + settings.onResults.call(element, response); + return html; + }, + + displayMessage: function(text, type) { + type = type || 'standard'; + module.debug('Displaying message', text, type); + module.addResults( settings.templates.message(text, type) ); + return settings.templates.message(text, type); + }, + + setting: function(name, value) { + if( $.isPlainObject(name) ) { + $.extend(true, settings, name); + } + else if(value !== undefined) { + settings[name] = value; + } + else { + return settings[name]; + } + }, + internal: function(name, value) { + if( $.isPlainObject(name) ) { + $.extend(true, module, name); + } + else if(value !== undefined) { + module[name] = value; + } + else { + return module[name]; + } + }, + debug: function() { + if(!settings.silent && settings.debug) { + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':'); + module.debug.apply(console, arguments); + } + } + }, + verbose: function() { + if(!settings.silent && settings.verbose && settings.debug) { + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':'); + module.verbose.apply(console, arguments); + } + } + }, + error: function() { + if(!settings.silent) { + module.error = Function.prototype.bind.call(console.error, console, settings.name + ':'); + module.error.apply(console, arguments); + } + }, + performance: { + log: function(message) { + var + currentTime, + executionTime, + previousTime + ; + if(settings.performance) { + currentTime = new Date().getTime(); + previousTime = time || currentTime; + executionTime = currentTime - previousTime; + time = currentTime; + performance.push({ + 'Name' : message[0], + 'Arguments' : [].slice.call(message, 1) || '', + 'Element' : element, + 'Execution Time' : executionTime + }); + } + clearTimeout(module.performance.timer); + module.performance.timer = setTimeout(module.performance.display, 500); + }, + display: function() { + var + title = settings.name + ':', + totalTime = 0 + ; + time = false; + clearTimeout(module.performance.timer); + $.each(performance, function(index, data) { + totalTime += data['Execution Time']; + }); + title += ' ' + totalTime + 'ms'; + if(moduleSelector) { + title += ' \'' + moduleSelector + '\''; + } + if($allModules.length > 1) { + title += ' ' + '(' + $allModules.length + ')'; + } + if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { + console.groupCollapsed(title); + if(console.table) { + console.table(performance); + } + else { + $.each(performance, function(index, data) { + console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); + }); + } + console.groupEnd(); + } + performance = []; + } + }, + invoke: function(query, passedArguments, context) { + var + object = instance, + maxDepth, + found, + response + ; + passedArguments = passedArguments || queryArguments; + context = element || context; + if(typeof query == 'string' && object !== undefined) { + query = query.split(/[\. ]/); + maxDepth = query.length - 1; + $.each(query, function(depth, value) { + var camelCaseValue = (depth != maxDepth) + ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) + : query + ; + if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) { + object = object[camelCaseValue]; + } + else if( object[camelCaseValue] !== undefined ) { + found = object[camelCaseValue]; + return false; + } + else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) { + object = object[value]; + } + else if( object[value] !== undefined ) { + found = object[value]; + return false; + } + else { + return false; + } + }); + } + if( $.isFunction( found ) ) { + response = found.apply(context, passedArguments); + } + else if(found !== undefined) { + response = found; + } + if($.isArray(returnedValue)) { + returnedValue.push(response); + } + else if(returnedValue !== undefined) { + returnedValue = [returnedValue, response]; + } + else if(response !== undefined) { + returnedValue = response; + } + return found; + } + }; + if(methodInvoked) { + if(instance === undefined) { + module.initialize(); + } + module.invoke(query); + } + else { + if(instance !== undefined) { + instance.invoke('destroy'); + } + module.initialize(); + } + + }) + ; + + return (returnedValue !== undefined) + ? returnedValue + : this + ; +}; + +$.fn.search.settings = { + + name : 'Search', + namespace : 'search', + + silent : false, + debug : false, + verbose : false, + performance : true, + + // template to use (specified in settings.templates) + type : 'standard', + + // minimum characters required to search + minCharacters : 1, + + // whether to select first result after searching automatically + selectFirstResult : false, + + // API config + apiSettings : false, + + // object to search + source : false, + + // Whether search should query current term on focus + searchOnFocus : true, + + // fields to search + searchFields : [ + 'title', + 'description' + ], + + // field to display in standard results template + displayField : '', + + // search anywhere in value (set to 'exact' to require exact matches + fullTextSearch : 'exact', + + // whether to add events to prompt automatically + automatic : true, + + // delay before hiding menu after blur + hideDelay : 0, + + // delay before searching + searchDelay : 200, + + // maximum results returned from search + maxResults : 7, + + // whether to store lookups in local cache + cache : true, + + // whether no results errors should be shown + showNoResults : true, + + // transition settings + transition : 'scale', + duration : 200, + easing : 'easeOutExpo', + + // callbacks + onSelect : false, + onResultsAdd : false, + + onSearchQuery : function(query){}, + onResults : function(response){}, + + onResultsOpen : function(){}, + onResultsClose : function(){}, + + className: { + animating : 'animating', + active : 'active', + empty : 'empty', + focus : 'focus', + hidden : 'hidden', + loading : 'loading', + results : 'results', + pressed : 'down' + }, + + error : { + source : 'Cannot search. No source used, and Semantic API module was not included', + noResults : 'Your search returned no results', + logging : 'Error in debug logging, exiting.', + noEndpoint : 'No search endpoint was specified', + noTemplate : 'A valid template name was not specified.', + oldSearchSyntax : 'searchFullText setting has been renamed fullTextSearch for consistency, please adjust your settings.', + serverError : 'There was an issue querying the server.', + maxResults : 'Results must be an array to use maxResults setting', + method : 'The method you called is not defined.' + }, + + metadata: { + cache : 'cache', + results : 'results', + result : 'result' + }, + + regExp: { + escape : /[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, + beginsWith : '(?:\s|^)' + }, + + // maps api response attributes to internal representation + fields: { + categories : 'results', // array of categories (category view) + categoryName : 'name', // name of category (category view) + categoryResults : 'results', // array of results (category view) + description : 'description', // result description + image : 'image', // result image + price : 'price', // result price + results : 'results', // array of results (standard) + title : 'title', // result title + url : 'url', // result url + action : 'action', // "view more" object name + actionText : 'text', // "view more" text + actionURL : 'url' // "view more" url + }, + + selector : { + prompt : '.prompt', + searchButton : '.search.button', + results : '.results', + message : '.results > .message', + category : '.category', + result : '.result', + title : '.title, .name' + }, + + templates: { + escape: function(string) { + var + badChars = /[&<>"'`]/g, + shouldEscape = /[&<>"'`]/, + escape = { + "&": "&", + "<": "<", + ">": ">", + '"': """, + "'": "'", + "`": "`" + }, + escapedChar = function(chr) { + return escape[chr]; + } + ; + if(shouldEscape.test(string)) { + return string.replace(badChars, escapedChar); + } + return string; + }, + message: function(message, type) { + var + html = '' + ; + if(message !== undefined && type !== undefined) { + html += '' + + '
' + ; + // message type + if(type == 'empty') { + html += '' + + '
No Results
' + + '
' + message + '
' + ; + } + else { + html += '
' + message + '
'; + } + html += '
'; + } + return html; + }, + category: function(response, fields) { + var + html = '', + escape = $.fn.search.settings.templates.escape + ; + if(response[fields.categoryResults] !== undefined) { + + // each category + $.each(response[fields.categoryResults], function(index, category) { + if(category[fields.results] !== undefined && category.results.length > 0) { + + html += '' + ; + } + }); + if(response[fields.action]) { + html += '' + + '
' + + response[fields.action][fields.actionText] + + ''; + } + return html; + } + return false; + }, + standard: function(response, fields) { + var + html = '' + ; + if(response[fields.results] !== undefined) { + + // each result + $.each(response[fields.results], function(index, result) { + if(result[fields.url]) { + html += ''; + } + else { + html += ''; + } + if(result[fields.image] !== undefined) { + html += '' + + '
' + + ' ' + + '
' + ; + } + html += '
'; + if(result[fields.price] !== undefined) { + html += '
' + result[fields.price] + '
'; + } + if(result[fields.title] !== undefined) { + html += '
' + result[fields.title] + '
'; + } + if(result[fields.description] !== undefined) { + html += '
' + result[fields.description] + '
'; + } + html += '' + + '
' + ; + html += '
'; + }); + + if(response[fields.action]) { + html += '' + + '' + + response[fields.action][fields.actionText] + + ''; + } + return html; + } + return false; + } + } +}; + +})( jQuery, window, document ); diff --git a/app/static/semantic/components/search.min.css b/app/static/semantic/components/search.min.css new file mode 100755 index 0000000..fd72ace --- /dev/null +++ b/app/static/semantic/components/search.min.css @@ -0,0 +1,9 @@ +/*! + * # Semantic UI 2.4.0 - Search + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */.ui.search{position:relative}.ui.search>.prompt{margin:0;outline:0;-webkit-appearance:none;-webkit-tap-highlight-color:rgba(255,255,255,0);text-shadow:none;font-style:normal;font-weight:400;line-height:1.21428571em;padding:.67857143em 1em;font-size:1em;background:#fff;border:1px solid rgba(34,36,38,.15);color:rgba(0,0,0,.87);-webkit-box-shadow:0 0 0 0 transparent inset;box-shadow:0 0 0 0 transparent inset;-webkit-transition:background-color .1s ease,color .1s ease,border-color .1s ease,-webkit-box-shadow .1s ease;transition:background-color .1s ease,color .1s ease,border-color .1s ease,-webkit-box-shadow .1s ease;transition:background-color .1s ease,color .1s ease,box-shadow .1s ease,border-color .1s ease;transition:background-color .1s ease,color .1s ease,box-shadow .1s ease,border-color .1s ease,-webkit-box-shadow .1s ease}.ui.search .prompt{border-radius:500rem}.ui.search .prompt~.search.icon{cursor:pointer}.ui.search>.results{display:none;position:absolute;top:100%;left:0;-webkit-transform-origin:center top;transform-origin:center top;white-space:normal;text-align:left;text-transform:none;background:#fff;margin-top:.5em;width:18em;border-radius:.28571429rem;-webkit-box-shadow:0 2px 4px 0 rgba(34,36,38,.12),0 2px 10px 0 rgba(34,36,38,.15);box-shadow:0 2px 4px 0 rgba(34,36,38,.12),0 2px 10px 0 rgba(34,36,38,.15);border:1px solid #d4d4d5;z-index:998}.ui.search>.results>:first-child{border-radius:.28571429rem .28571429rem 0 0}.ui.search>.results>:last-child{border-radius:0 0 .28571429rem .28571429rem}.ui.search>.results .result{cursor:pointer;display:block;overflow:hidden;font-size:1em;padding:.85714286em 1.14285714em;color:rgba(0,0,0,.87);line-height:1.33;border-bottom:1px solid rgba(34,36,38,.1)}.ui.search>.results .result:last-child{border-bottom:none!important}.ui.search>.results .result .image{float:right;overflow:hidden;background:0 0;width:5em;height:3em;border-radius:.25em}.ui.search>.results .result .image img{display:block;width:auto;height:100%}.ui.search>.results .result .image+.content{margin:0 6em 0 0}.ui.search>.results .result .title{margin:-.14285714em 0 0;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-weight:700;font-size:1em;color:rgba(0,0,0,.85)}.ui.search>.results .result .description{margin-top:0;font-size:.92857143em;color:rgba(0,0,0,.4)}.ui.search>.results .result .price{float:right;color:#21ba45}.ui.search>.results>.message{padding:1em 1em}.ui.search>.results>.message .header{font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-size:1rem;font-weight:700;color:rgba(0,0,0,.87)}.ui.search>.results>.message .description{margin-top:.25rem;font-size:1em;color:rgba(0,0,0,.87)}.ui.search>.results>.action{display:block;border-top:none;background:#f3f4f5;padding:.92857143em 1em;color:rgba(0,0,0,.87);font-weight:700;text-align:center}.ui.search>.prompt:focus{border-color:rgba(34,36,38,.35);background:#fff;color:rgba(0,0,0,.95)}.ui.loading.search .input>i.icon:before{position:absolute;content:'';top:50%;left:50%;margin:-.64285714em 0 0 -.64285714em;width:1.28571429em;height:1.28571429em;border-radius:500rem;border:.2em solid rgba(0,0,0,.1)}.ui.loading.search .input>i.icon:after{position:absolute;content:'';top:50%;left:50%;margin:-.64285714em 0 0 -.64285714em;width:1.28571429em;height:1.28571429em;-webkit-animation:button-spin .6s linear;animation:button-spin .6s linear;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;border-radius:500rem;border-color:#767676 transparent transparent;border-style:solid;border-width:.2em;-webkit-box-shadow:0 0 0 1px transparent;box-shadow:0 0 0 1px transparent}.ui.category.search>.results .category .result:hover,.ui.search>.results .result:hover{background:#f9fafb}.ui.search .action:hover{background:#e0e0e0}.ui.category.search>.results .category.active{background:#f3f4f5}.ui.category.search>.results .category.active>.name{color:rgba(0,0,0,.87)}.ui.category.search>.results .category .result.active,.ui.search>.results .result.active{position:relative;border-left-color:rgba(34,36,38,.1);background:#f3f4f5;-webkit-box-shadow:none;box-shadow:none}.ui.search>.results .result.active .title{color:rgba(0,0,0,.85)}.ui.search>.results .result.active .description{color:rgba(0,0,0,.85)}.ui.disabled.search{cursor:default;pointer-events:none;opacity:.45}.ui.search.selection .prompt{border-radius:.28571429rem}.ui.search.selection>.icon.input>.remove.icon{pointer-events:none;position:absolute;left:auto;opacity:0;color:'';top:0;right:0;-webkit-transition:color .1s ease,opacity .1s ease;transition:color .1s ease,opacity .1s ease}.ui.search.selection>.icon.input>.active.remove.icon{cursor:pointer;opacity:.8;pointer-events:auto}.ui.search.selection>.icon.input:not([class*="left icon"])>.icon~.remove.icon{right:1.85714em}.ui.search.selection>.icon.input>.remove.icon:hover{opacity:1;color:#db2828}.ui.category.search .results{width:28em}.ui.category.search .results.animating,.ui.category.search .results.visible{display:table}.ui.category.search>.results .category{display:table-row;background:#f3f4f5;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:background .1s ease,border-color .1s ease;transition:background .1s ease,border-color .1s ease}.ui.category.search>.results .category:last-child{border-bottom:none}.ui.category.search>.results .category:first-child .name+.result{border-radius:0 .28571429rem 0 0}.ui.category.search>.results .category:last-child .result:last-child{border-radius:0 0 .28571429rem 0}.ui.category.search>.results .category>.name{display:table-cell;text-overflow:ellipsis;width:100px;white-space:nowrap;background:0 0;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-size:1em;padding:.4em 1em;font-weight:700;color:rgba(0,0,0,.4);border-bottom:1px solid rgba(34,36,38,.1)}.ui.category.search>.results .category .results{display:table-cell;background:#fff;border-left:1px solid rgba(34,36,38,.15);border-bottom:1px solid rgba(34,36,38,.1)}.ui.category.search>.results .category .result{border-bottom:1px solid rgba(34,36,38,.1);-webkit-transition:background .1s ease,border-color .1s ease;transition:background .1s ease,border-color .1s ease;padding:.85714286em 1.14285714em}.ui[class*="left aligned"].search>.results{right:auto;left:0}.ui[class*="right aligned"].search>.results{right:0;left:auto}.ui.fluid.search .results{width:100%}.ui.mini.search{font-size:.78571429em}.ui.small.search{font-size:.92857143em}.ui.search{font-size:1em}.ui.large.search{font-size:1.14285714em}.ui.big.search{font-size:1.28571429em}.ui.huge.search{font-size:1.42857143em}.ui.massive.search{font-size:1.71428571em}@media only screen and (max-width:767px){.ui.search .results{max-width:calc(100vw - 2rem)}} \ No newline at end of file diff --git a/app/static/semantic/components/search.min.js b/app/static/semantic/components/search.min.js new file mode 100755 index 0000000..439fa98 --- /dev/null +++ b/app/static/semantic/components/search.min.js @@ -0,0 +1 @@ +!function(q,A,E,D){"use strict";A=void 0!==A&&A.Math==Math?A:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),q.fn.search=function(o){var C,x=q(this),w=x.selector||"",S=(new Date).getTime(),F=[],j=o,T="string"==typeof j,k=[].slice.call(arguments,1);return q(this).each(function(){var f,u=q.isPlainObject(o)?q.extend(!0,{},q.fn.search.settings,o):q.extend({},q.fn.search.settings),g=u.className,l=u.metadata,d=u.regExp,i=u.fields,h=u.selector,p=u.error,e=u.namespace,n="."+e,t=e+"-module",m=q(this),v=m.find(h.prompt),s=m.find(h.searchButton),r=m.find(h.results),a=m.find(h.result),y=(m.find(h.category),this),c=m.data(t),b=!1,R=!1;f={initialize:function(){f.verbose("Initializing module"),f.get.settings(),f.determine.searchFields(),f.bind.events(),f.set.type(),f.create.results(),f.instantiate()},instantiate:function(){f.verbose("Storing instance of module",f),c=f,m.data(t,f)},destroy:function(){f.verbose("Destroying instance"),m.off(n).removeData(t)},refresh:function(){f.debug("Refreshing selector cache"),v=m.find(h.prompt),s=m.find(h.searchButton),m.find(h.category),r=m.find(h.results),a=m.find(h.result)},refreshResults:function(){r=m.find(h.results),a=m.find(h.result)},bind:{events:function(){f.verbose("Binding events to search"),u.automatic&&(m.on(f.get.inputEvent()+n,h.prompt,f.event.input),v.attr("autocomplete","off")),m.on("focus"+n,h.prompt,f.event.focus).on("blur"+n,h.prompt,f.event.blur).on("keydown"+n,h.prompt,f.handleKeyboard).on("click"+n,h.searchButton,f.query).on("mousedown"+n,h.results,f.event.result.mousedown).on("mouseup"+n,h.results,f.event.result.mouseup).on("click"+n,h.result,f.event.result.click)}},determine:{searchFields:function(){o&&o.searchFields!==D&&(u.searchFields=o.searchFields)}},event:{input:function(){u.searchDelay?(clearTimeout(f.timer),f.timer=setTimeout(function(){f.is.focused()&&f.query()},u.searchDelay)):f.query()},focus:function(){f.set.focus(),u.searchOnFocus&&f.has.minimumCharacters()&&f.query(function(){f.can.show()&&f.showResults()})},blur:function(e){var t=E.activeElement===this,s=function(){f.cancel.query(),f.remove.focus(),f.timer=setTimeout(f.hideResults,u.hideDelay)};t||(R=!1,f.resultsClicked?(f.debug("Determining if user action caused search to close"),m.one("click.close"+n,h.results,function(e){f.is.inMessage(e)||b?v.focus():(b=!1,f.is.animating()||f.is.hidden()||s())})):(f.debug("Input blurred without user action, closing results"),s()))},result:{mousedown:function(){f.resultsClicked=!0},mouseup:function(){f.resultsClicked=!1},click:function(e){f.debug("Search result selected");var t=q(this),s=t.find(h.title).eq(0),n=t.is("a[href]")?t:t.find("a[href]").eq(0),r=n.attr("href")||!1,i=n.attr("target")||!1,a=(s.html(),0=u.minCharacters},results:function(){return 0!==r.length&&""!=r.html()}},clear:{cache:function(e){var t=m.data(l.cache);e?e&&t&&t[e]&&(f.debug("Removing value from cache",e),delete t[e],m.data(l.cache,t)):(f.debug("Clearing cache",e),m.removeData(l.cache))}},read:{cache:function(e){var t=m.data(l.cache);return!!u.cache&&(f.verbose("Checking cache for generated html for query",e),"object"==typeof t&&t[e]!==D&&t[e])}},create:{categoryResults:function(e){var s={};return q.each(e,function(e,t){t.category&&(s[t.category]===D?(f.verbose("Creating new category of results",t.category),s[t.category]={name:t.category,results:[t]}):s[t.category].results.push(t))}),s},id:function(e,t){var s,n=e+1;return t!==D?(s=String.fromCharCode(97+t)+n,f.verbose("Creating category result id",s)):(s=n,f.verbose("Creating result id",s)),s},results:function(){0===r.length&&(r=q("
").addClass(g.results).appendTo(m))}},inject:{result:function(e,t,s){f.verbose("Injecting result into results");var n=s!==D?r.children().eq(s).children(h.results).first().children(h.result).eq(t):r.children(h.result).eq(t);f.verbose("Injecting results metadata",n),n.data(l.result,e)},id:function(n){f.debug("Injecting unique ids into results");var r=0,i=0;return"category"===u.type?q.each(n,function(e,n){i=0,q.each(n.results,function(e,t){var s=n.results[e];s.id===D&&(s.id=f.create.id(i,r)),f.inject.result(s,i,r),i++}),r++}):q.each(n,function(e,t){var s=n[e];s.id===D&&(s.id=f.create.id(i)),f.inject.result(s,i),i++}),n}},save:{results:function(e){f.verbose("Saving current search results to metadata",e),m.data(l.results,e)}},write:{cache:function(e,t){var s=m.data(l.cache)!==D?m.data(l.cache):{};u.cache&&(f.verbose("Writing generated html to cache",e,t),s[e]=t,m.data(l.cache,s))}},addResults:function(e){if(q.isFunction(u.onResultsAdd)&&!1===u.onResultsAdd.call(r,e))return f.debug("onResultsAdd callback cancelled default action"),!1;e?(r.html(e),f.refreshResults(),u.selectFirstResult&&f.select.firstResult(),f.showResults()):f.hideResults(function(){r.empty()})},showResults:function(e){e=q.isFunction(e)?e:function(){},R||!f.is.visible()&&f.has.results()&&(f.can.transition()?(f.debug("Showing results with css animations"),r.transition({animation:u.transition+" in",debug:u.debug,verbose:u.verbose,duration:u.duration,onComplete:function(){e()},queue:!0})):(f.debug("Showing results with javascript"),r.stop().fadeIn(u.duration,u.easing)),u.onResultsOpen.call(r))},hideResults:function(e){e=q.isFunction(e)?e:function(){},f.is.visible()&&(f.can.transition()?(f.debug("Hiding results with css animations"),r.transition({animation:u.transition+" out",debug:u.debug,verbose:u.verbose,duration:u.duration,onComplete:function(){e()},queue:!0})):(f.debug("Hiding results with javascript"),r.stop().fadeOut(u.duration,u.easing)),u.onResultsClose.call(r))},generateResults:function(e){f.debug("Generating html from response",e);var t=u.templates[u.type],s=q.isPlainObject(e[i.results])&&!q.isEmptyObject(e[i.results]),n=q.isArray(e[i.results])&&0 .message",category:".category",result:".result",title:".title, .name"},templates:{escape:function(e){var t={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"};return/[&<>"'`]/.test(e)?e.replace(/[&<>"'`]/g,function(e){return t[e]}):e},message:function(e,t){var s="";return e!==D&&t!==D&&(s+='
',s+="empty"==t?'
No Results
'+e+'
':'
'+e+"
",s+="
"),s},category:function(e,s){var n="";q.fn.search.settings.templates.escape;return e[s.categoryResults]!==D&&(q.each(e[s.categoryResults],function(e,t){t[s.results]!==D&&0',t[s.categoryName]!==D&&(n+='
'+t[s.categoryName]+"
"),n+='",n+="
")}),e[s.action]&&(n+=''+e[s.action][s.actionText]+""),n)},standard:function(e,s){var n="";return e[s.results]!==D&&(q.each(e[s.results],function(e,t){t[s.url]?n+='':n+='',t[s.image]!==D&&(n+='
'),n+='
',t[s.price]!==D&&(n+='
'+t[s.price]+"
"),t[s.title]!==D&&(n+='
'+t[s.title]+"
"),t[s.description]!==D&&(n+='
'+t[s.description]+"
"),n+="
",n+="
"}),e[s.action]&&(n+=''+e[s.action][s.actionText]+""),n)}}}}(jQuery,window,document); \ No newline at end of file diff --git a/app/static/semantic/components/segment.css b/app/static/semantic/components/segment.css new file mode 100755 index 0000000..08ced92 --- /dev/null +++ b/app/static/semantic/components/segment.css @@ -0,0 +1,879 @@ +/*! + * # Semantic UI 2.4.1 - Segment + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */ + + +/******************************* + Segment +*******************************/ + +.ui.segment { + position: relative; + background: #FFFFFF; + -webkit-box-shadow: 0px 1px 2px 0 rgba(34, 36, 38, 0.15); + box-shadow: 0px 1px 2px 0 rgba(34, 36, 38, 0.15); + margin: 1rem 0em; + padding: 1em 1em; + border-radius: 0.28571429rem; + border: 1px solid rgba(34, 36, 38, 0.15); +} +.ui.segment:first-child { + margin-top: 0em; +} +.ui.segment:last-child { + margin-bottom: 0em; +} + +/* Vertical */ +.ui.vertical.segment { + margin: 0em; + padding-left: 0em; + padding-right: 0em; + background: none transparent; + border-radius: 0px; + -webkit-box-shadow: none; + box-shadow: none; + border: none; + border-bottom: 1px solid rgba(34, 36, 38, 0.15); +} +.ui.vertical.segment:last-child { + border-bottom: none; +} + +/*------------------- + Loose Coupling +--------------------*/ + + +/* Header */ +.ui.inverted.segment > .ui.header { + color: #FFFFFF; +} + +/* Label */ +.ui[class*="bottom attached"].segment > [class*="top attached"].label { + border-top-left-radius: 0em; + border-top-right-radius: 0em; +} +.ui[class*="top attached"].segment > [class*="bottom attached"].label { + border-bottom-left-radius: 0em; + border-bottom-right-radius: 0em; +} +.ui.attached.segment:not(.top):not(.bottom) > [class*="top attached"].label { + border-top-left-radius: 0em; + border-top-right-radius: 0em; +} +.ui.attached.segment:not(.top):not(.bottom) > [class*="bottom attached"].label { + border-bottom-left-radius: 0em; + border-bottom-right-radius: 0em; +} + +/* Grid */ +.ui.page.grid.segment, +.ui.grid > .row > .ui.segment.column, +.ui.grid > .ui.segment.column { + padding-top: 2em; + padding-bottom: 2em; +} +.ui.grid.segment { + margin: 1rem 0em; + border-radius: 0.28571429rem; +} + +/* Table */ +.ui.basic.table.segment { + background: #FFFFFF; + border: 1px solid rgba(34, 36, 38, 0.15); + -webkit-box-shadow: 0px 1px 2px 0 rgba(34, 36, 38, 0.15); + box-shadow: 0px 1px 2px 0 rgba(34, 36, 38, 0.15); +} +.ui[class*="very basic"].table.segment { + padding: 1em 1em; +} + + +/******************************* + Types +*******************************/ + + +/*------------------- + Placeholder +--------------------*/ + +.ui.placeholder.segment { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: stretch; + -ms-flex-align: stretch; + align-items: stretch; + max-width: initial; + -webkit-animation: none; + animation: none; + overflow: visible; + padding: 1em 1em; + min-height: 18rem; + background: #F9FAFB; + border-color: rgba(34, 36, 38, 0.15); + -webkit-box-shadow: 0px 2px 25px 0 rgba(34, 36, 38, 0.05) inset; + box-shadow: 0px 2px 25px 0 rgba(34, 36, 38, 0.05) inset; +} +.ui.placeholder.segment .button, +.ui.placeholder.segment textarea { + display: block; +} +.ui.placeholder.segment .field, +.ui.placeholder.segment textarea, +.ui.placeholder.segment > .ui.input, +.ui.placeholder.segment .button { + max-width: 15rem; + margin-left: auto; + margin-right: auto; +} +.ui.placeholder.segment .column .button, +.ui.placeholder.segment .column .field, +.ui.placeholder.segment .column textarea, +.ui.placeholder.segment .column > .ui.input { + max-width: 15rem; + margin-left: auto; + margin-right: auto; +} +.ui.placeholder.segment > .inline { + -ms-flex-item-align: center; + align-self: center; +} +.ui.placeholder.segment > .inline > .button { + display: inline-block; + width: auto; + margin: 0px 0.35714286rem 0px 0px; +} +.ui.placeholder.segment > .inline > .button:last-child { + margin-right: 0px; +} + +/*------------------- + Piled +--------------------*/ + +.ui.piled.segments, +.ui.piled.segment { + margin: 3em 0em; + -webkit-box-shadow: ''; + box-shadow: ''; + z-index: auto; +} +.ui.piled.segment:first-child { + margin-top: 0em; +} +.ui.piled.segment:last-child { + margin-bottom: 0em; +} +.ui.piled.segments:after, +.ui.piled.segments:before, +.ui.piled.segment:after, +.ui.piled.segment:before { + background-color: #FFFFFF; + visibility: visible; + content: ''; + display: block; + height: 100%; + left: 0px; + position: absolute; + width: 100%; + border: 1px solid rgba(34, 36, 38, 0.15); + -webkit-box-shadow: ''; + box-shadow: ''; +} +.ui.piled.segments:before, +.ui.piled.segment:before { + -webkit-transform: rotate(-1.2deg); + transform: rotate(-1.2deg); + top: 0; + z-index: -2; +} +.ui.piled.segments:after, +.ui.piled.segment:after { + -webkit-transform: rotate(1.2deg); + transform: rotate(1.2deg); + top: 0; + z-index: -1; +} + +/* Piled Attached */ +.ui[class*="top attached"].piled.segment { + margin-top: 3em; + margin-bottom: 0em; +} +.ui.piled.segment[class*="top attached"]:first-child { + margin-top: 0em; +} +.ui.piled.segment[class*="bottom attached"] { + margin-top: 0em; + margin-bottom: 3em; +} +.ui.piled.segment[class*="bottom attached"]:last-child { + margin-bottom: 0em; +} + +/*------------------- + Stacked +--------------------*/ + +.ui.stacked.segment { + padding-bottom: 1.4em; +} +.ui.stacked.segments:before, +.ui.stacked.segments:after, +.ui.stacked.segment:before, +.ui.stacked.segment:after { + content: ''; + position: absolute; + bottom: -3px; + left: 0%; + border-top: 1px solid rgba(34, 36, 38, 0.15); + background: rgba(0, 0, 0, 0.03); + width: 100%; + height: 6px; + visibility: visible; +} +.ui.stacked.segments:before, +.ui.stacked.segment:before { + display: none; +} + +/* Add additional page */ +.ui.tall.stacked.segments:before, +.ui.tall.stacked.segment:before { + display: block; + bottom: 0px; +} + +/* Inverted */ +.ui.stacked.inverted.segments:before, +.ui.stacked.inverted.segments:after, +.ui.stacked.inverted.segment:before, +.ui.stacked.inverted.segment:after { + background-color: rgba(0, 0, 0, 0.03); + border-top: 1px solid rgba(34, 36, 38, 0.35); +} + +/*------------------- + Padded +--------------------*/ + +.ui.padded.segment { + padding: 1.5em; +} +.ui[class*="very padded"].segment { + padding: 3em; +} + +/* Padded vertical */ +.ui.padded.segment.vertical.segment, +.ui[class*="very padded"].vertical.segment { + padding-left: 0px; + padding-right: 0px; +} + +/*------------------- + Compact +--------------------*/ + +.ui.compact.segment { + display: table; +} + +/* Compact Group */ +.ui.compact.segments { + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; +} +.ui.compact.segments .segment, +.ui.segments .compact.segment { + display: block; + -webkit-box-flex: 0; + -ms-flex: 0 1 auto; + flex: 0 1 auto; +} + +/*------------------- + Circular +--------------------*/ + +.ui.circular.segment { + display: table-cell; + padding: 2em; + text-align: center; + vertical-align: middle; + border-radius: 500em; +} + +/*------------------- + Raised +--------------------*/ + +.ui.raised.segments, +.ui.raised.segment { + -webkit-box-shadow: 0px 2px 4px 0px rgba(34, 36, 38, 0.12), 0px 2px 10px 0px rgba(34, 36, 38, 0.15); + box-shadow: 0px 2px 4px 0px rgba(34, 36, 38, 0.12), 0px 2px 10px 0px rgba(34, 36, 38, 0.15); +} + + +/******************************* + Groups +*******************************/ + + +/* Group */ +.ui.segments { + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + position: relative; + margin: 1rem 0em; + border: 1px solid rgba(34, 36, 38, 0.15); + -webkit-box-shadow: 0px 1px 2px 0 rgba(34, 36, 38, 0.15); + box-shadow: 0px 1px 2px 0 rgba(34, 36, 38, 0.15); + border-radius: 0.28571429rem; +} +.ui.segments:first-child { + margin-top: 0em; +} +.ui.segments:last-child { + margin-bottom: 0em; +} + +/* Nested Segment */ +.ui.segments > .segment { + top: 0px; + bottom: 0px; + border-radius: 0px; + margin: 0em; + width: auto; + -webkit-box-shadow: none; + box-shadow: none; + border: none; + border-top: 1px solid rgba(34, 36, 38, 0.15); +} +.ui.segments:not(.horizontal) > .segment:first-child { + border-top: none; + margin-top: 0em; + bottom: 0px; + margin-bottom: 0em; + top: 0px; + border-radius: 0.28571429rem 0.28571429rem 0em 0em; +} + +/* Bottom */ +.ui.segments:not(.horizontal) > .segment:last-child { + top: 0px; + bottom: 0px; + margin-top: 0em; + margin-bottom: 0em; + -webkit-box-shadow: 0px 1px 2px 0 rgba(34, 36, 38, 0.15), none; + box-shadow: 0px 1px 2px 0 rgba(34, 36, 38, 0.15), none; + border-radius: 0em 0em 0.28571429rem 0.28571429rem; +} + +/* Only */ +.ui.segments:not(.horizontal) > .segment:only-child { + border-radius: 0.28571429rem; +} + +/* Nested Group */ +.ui.segments > .ui.segments { + border-top: 1px solid rgba(34, 36, 38, 0.15); + margin: 1rem 1rem; +} +.ui.segments > .segments:first-child { + border-top: none; +} +.ui.segments > .segment + .segments:not(.horizontal) { + margin-top: 0em; +} + +/* Horizontal Group */ +.ui.horizontal.segments { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + background-color: transparent; + border-radius: 0px; + padding: 0em; + background-color: #FFFFFF; + -webkit-box-shadow: 0px 1px 2px 0 rgba(34, 36, 38, 0.15); + box-shadow: 0px 1px 2px 0 rgba(34, 36, 38, 0.15); + margin: 1rem 0em; + border-radius: 0.28571429rem; + border: 1px solid rgba(34, 36, 38, 0.15); +} + +/* Nested Horizontal Group */ +.ui.segments > .horizontal.segments { + margin: 0em; + background-color: transparent; + border-radius: 0px; + border: none; + -webkit-box-shadow: none; + box-shadow: none; + border-top: 1px solid rgba(34, 36, 38, 0.15); +} + +/* Horizontal Segment */ +.ui.horizontal.segments > .segment { + -webkit-box-flex: 1; + flex: 1 1 auto; + -ms-flex: 1 1 0px; + +/* Solves #2550 MS Flex */ + margin: 0em; + min-width: 0px; + background-color: transparent; + border-radius: 0px; + border: none; + -webkit-box-shadow: none; + box-shadow: none; + border-left: 1px solid rgba(34, 36, 38, 0.15); +} + +/* Border Fixes */ +.ui.segments > .horizontal.segments:first-child { + border-top: none; +} +.ui.horizontal.segments > .segment:first-child { + border-left: none; +} + + +/******************************* + States +*******************************/ + + +/*-------------- + Disabled +---------------*/ + +.ui.disabled.segment { + opacity: 0.45; + color: rgba(40, 40, 40, 0.3); +} + +/*-------------- + Loading +---------------*/ + +.ui.loading.segment { + position: relative; + cursor: default; + pointer-events: none; + text-shadow: none !important; + color: transparent !important; + -webkit-transition: all 0s linear; + transition: all 0s linear; +} +.ui.loading.segment:before { + position: absolute; + content: ''; + top: 0%; + left: 0%; + background: rgba(255, 255, 255, 0.8); + width: 100%; + height: 100%; + border-radius: 0.28571429rem; + z-index: 100; +} +.ui.loading.segment:after { + position: absolute; + content: ''; + top: 50%; + left: 50%; + margin: -1.5em 0em 0em -1.5em; + width: 3em; + height: 3em; + -webkit-animation: segment-spin 0.6s linear; + animation: segment-spin 0.6s linear; + -webkit-animation-iteration-count: infinite; + animation-iteration-count: infinite; + border-radius: 500rem; + border-color: #767676 rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1); + border-style: solid; + border-width: 0.2em; + -webkit-box-shadow: 0px 0px 0px 1px transparent; + box-shadow: 0px 0px 0px 1px transparent; + visibility: visible; + z-index: 101; +} +@-webkit-keyframes segment-spin { + from { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + to { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} +@keyframes segment-spin { + from { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + to { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + + +/******************************* + Variations +*******************************/ + + +/*------------------- + Basic +--------------------*/ + +.ui.basic.segment { + background: none transparent; + -webkit-box-shadow: none; + box-shadow: none; + border: none; + border-radius: 0px; +} + +/*------------------- + Clearing +--------------------*/ + +.ui.clearing.segment:after { + content: "."; + display: block; + height: 0; + clear: both; + visibility: hidden; +} + +/*------------------- + Colors +--------------------*/ + + +/* Red */ +.ui.red.segment:not(.inverted) { + border-top: 2px solid #DB2828 !important; +} +.ui.inverted.red.segment { + background-color: #DB2828 !important; + color: #FFFFFF !important; +} + +/* Orange */ +.ui.orange.segment:not(.inverted) { + border-top: 2px solid #F2711C !important; +} +.ui.inverted.orange.segment { + background-color: #F2711C !important; + color: #FFFFFF !important; +} + +/* Yellow */ +.ui.yellow.segment:not(.inverted) { + border-top: 2px solid #FBBD08 !important; +} +.ui.inverted.yellow.segment { + background-color: #FBBD08 !important; + color: #FFFFFF !important; +} + +/* Olive */ +.ui.olive.segment:not(.inverted) { + border-top: 2px solid #B5CC18 !important; +} +.ui.inverted.olive.segment { + background-color: #B5CC18 !important; + color: #FFFFFF !important; +} + +/* Green */ +.ui.green.segment:not(.inverted) { + border-top: 2px solid #21BA45 !important; +} +.ui.inverted.green.segment { + background-color: #21BA45 !important; + color: #FFFFFF !important; +} + +/* Teal */ +.ui.teal.segment:not(.inverted) { + border-top: 2px solid #00B5AD !important; +} +.ui.inverted.teal.segment { + background-color: #00B5AD !important; + color: #FFFFFF !important; +} + +/* Blue */ +.ui.blue.segment:not(.inverted) { + border-top: 2px solid #2185D0 !important; +} +.ui.inverted.blue.segment { + background-color: #2185D0 !important; + color: #FFFFFF !important; +} + +/* Violet */ +.ui.violet.segment:not(.inverted) { + border-top: 2px solid #6435C9 !important; +} +.ui.inverted.violet.segment { + background-color: #6435C9 !important; + color: #FFFFFF !important; +} + +/* Purple */ +.ui.purple.segment:not(.inverted) { + border-top: 2px solid #A333C8 !important; +} +.ui.inverted.purple.segment { + background-color: #A333C8 !important; + color: #FFFFFF !important; +} + +/* Pink */ +.ui.pink.segment:not(.inverted) { + border-top: 2px solid #E03997 !important; +} +.ui.inverted.pink.segment { + background-color: #E03997 !important; + color: #FFFFFF !important; +} + +/* Brown */ +.ui.brown.segment:not(.inverted) { + border-top: 2px solid #A5673F !important; +} +.ui.inverted.brown.segment { + background-color: #A5673F !important; + color: #FFFFFF !important; +} + +/* Grey */ +.ui.grey.segment:not(.inverted) { + border-top: 2px solid #767676 !important; +} +.ui.inverted.grey.segment { + background-color: #767676 !important; + color: #FFFFFF !important; +} + +/* Black */ +.ui.black.segment:not(.inverted) { + border-top: 2px solid #1B1C1D !important; +} +.ui.inverted.black.segment { + background-color: #1B1C1D !important; + color: #FFFFFF !important; +} + +/*------------------- + Aligned +--------------------*/ + +.ui[class*="left aligned"].segment { + text-align: left; +} +.ui[class*="right aligned"].segment { + text-align: right; +} +.ui[class*="center aligned"].segment { + text-align: center; +} + +/*------------------- + Floated +--------------------*/ + +.ui.floated.segment, +.ui[class*="left floated"].segment { + float: left; + margin-right: 1em; +} +.ui[class*="right floated"].segment { + float: right; + margin-left: 1em; +} + +/*------------------- + Inverted +--------------------*/ + +.ui.inverted.segment { + border: none; + -webkit-box-shadow: none; + box-shadow: none; +} +.ui.inverted.segment, +.ui.primary.inverted.segment { + background: #1B1C1D; + color: rgba(255, 255, 255, 0.9); +} + +/* Nested */ +.ui.inverted.segment .segment { + color: rgba(0, 0, 0, 0.87); +} +.ui.inverted.segment .inverted.segment { + color: rgba(255, 255, 255, 0.9); +} + +/* Attached */ +.ui.inverted.attached.segment { + border-color: #555555; +} + +/*------------------- + Emphasis +--------------------*/ + + +/* Secondary */ +.ui.secondary.segment { + background: #F3F4F5; + color: rgba(0, 0, 0, 0.6); +} +.ui.secondary.inverted.segment { + background: #4c4f52 -webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.2)), to(rgba(255, 255, 255, 0.2))); + background: #4c4f52 -webkit-linear-gradient(rgba(255, 255, 255, 0.2) 0%, rgba(255, 255, 255, 0.2) 100%); + background: #4c4f52 linear-gradient(rgba(255, 255, 255, 0.2) 0%, rgba(255, 255, 255, 0.2) 100%); + color: rgba(255, 255, 255, 0.8); +} + +/* Tertiary */ +.ui.tertiary.segment { + background: #DCDDDE; + color: rgba(0, 0, 0, 0.6); +} +.ui.tertiary.inverted.segment { + background: #717579 -webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.35)), to(rgba(255, 255, 255, 0.35))); + background: #717579 -webkit-linear-gradient(rgba(255, 255, 255, 0.35) 0%, rgba(255, 255, 255, 0.35) 100%); + background: #717579 linear-gradient(rgba(255, 255, 255, 0.35) 0%, rgba(255, 255, 255, 0.35) 100%); + color: rgba(255, 255, 255, 0.8); +} + +/*------------------- + Attached +--------------------*/ + + +/* Middle */ +.ui.attached.segment { + top: 0px; + bottom: 0px; + border-radius: 0px; + margin: 0em -1px; + width: calc(100% - (-1px * 2)); + max-width: calc(100% - (-1px * 2)); + -webkit-box-shadow: none; + box-shadow: none; + border: 1px solid #D4D4D5; +} +.ui.attached:not(.message) + .ui.attached.segment:not(.top) { + border-top: none; +} + +/* Top */ +.ui[class*="top attached"].segment { + bottom: 0px; + margin-bottom: 0em; + top: 0px; + margin-top: 1rem; + border-radius: 0.28571429rem 0.28571429rem 0em 0em; +} +.ui.segment[class*="top attached"]:first-child { + margin-top: 0em; +} + +/* Bottom */ +.ui.segment[class*="bottom attached"] { + bottom: 0px; + margin-top: 0em; + top: 0px; + margin-bottom: 1rem; + -webkit-box-shadow: 0px 1px 2px 0 rgba(34, 36, 38, 0.15), none; + box-shadow: 0px 1px 2px 0 rgba(34, 36, 38, 0.15), none; + border-radius: 0em 0em 0.28571429rem 0.28571429rem; +} +.ui.segment[class*="bottom attached"]:last-child { + margin-bottom: 0em; +} + +/*------------------- + Size +--------------------*/ + +.ui.mini.segments .segment, +.ui.mini.segment { + font-size: 0.78571429rem; +} +.ui.tiny.segments .segment, +.ui.tiny.segment { + font-size: 0.85714286rem; +} +.ui.small.segments .segment, +.ui.small.segment { + font-size: 0.92857143rem; +} +.ui.segments .segment, +.ui.segment { + font-size: 1rem; +} +.ui.large.segments .segment, +.ui.large.segment { + font-size: 1.14285714rem; +} +.ui.big.segments .segment, +.ui.big.segment { + font-size: 1.28571429rem; +} +.ui.huge.segments .segment, +.ui.huge.segment { + font-size: 1.42857143rem; +} +.ui.massive.segments .segment, +.ui.massive.segment { + font-size: 1.71428571rem; +} + + +/******************************* + Theme Overrides +*******************************/ + + + +/******************************* + Site Overrides +*******************************/ + diff --git a/app/static/semantic/components/segment.min.css b/app/static/semantic/components/segment.min.css new file mode 100755 index 0000000..61ba350 --- /dev/null +++ b/app/static/semantic/components/segment.min.css @@ -0,0 +1,9 @@ +/*! + * # Semantic UI 2.4.1 - Segment + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */.ui.segment{position:relative;background:#fff;-webkit-box-shadow:0 1px 2px 0 rgba(34,36,38,.15);box-shadow:0 1px 2px 0 rgba(34,36,38,.15);margin:1rem 0;padding:1em 1em;border-radius:.28571429rem;border:1px solid rgba(34,36,38,.15)}.ui.segment:first-child{margin-top:0}.ui.segment:last-child{margin-bottom:0}.ui.vertical.segment{margin:0;padding-left:0;padding-right:0;background:none transparent;border-radius:0;-webkit-box-shadow:none;box-shadow:none;border:none;border-bottom:1px solid rgba(34,36,38,.15)}.ui.vertical.segment:last-child{border-bottom:none}.ui.inverted.segment>.ui.header{color:#fff}.ui[class*="bottom attached"].segment>[class*="top attached"].label{border-top-left-radius:0;border-top-right-radius:0}.ui[class*="top attached"].segment>[class*="bottom attached"].label{border-bottom-left-radius:0;border-bottom-right-radius:0}.ui.attached.segment:not(.top):not(.bottom)>[class*="top attached"].label{border-top-left-radius:0;border-top-right-radius:0}.ui.attached.segment:not(.top):not(.bottom)>[class*="bottom attached"].label{border-bottom-left-radius:0;border-bottom-right-radius:0}.ui.grid>.row>.ui.segment.column,.ui.grid>.ui.segment.column,.ui.page.grid.segment{padding-top:2em;padding-bottom:2em}.ui.grid.segment{margin:1rem 0;border-radius:.28571429rem}.ui.basic.table.segment{background:#fff;border:1px solid rgba(34,36,38,.15);-webkit-box-shadow:0 1px 2px 0 rgba(34,36,38,.15);box-shadow:0 1px 2px 0 rgba(34,36,38,.15)}.ui[class*="very basic"].table.segment{padding:1em 1em}.ui.placeholder.segment{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;max-width:initial;-webkit-animation:none;animation:none;overflow:visible;padding:1em 1em;min-height:18rem;background:#f9fafb;border-color:rgba(34,36,38,.15);-webkit-box-shadow:0 2px 25px 0 rgba(34,36,38,.05) inset;box-shadow:0 2px 25px 0 rgba(34,36,38,.05) inset}.ui.placeholder.segment .button,.ui.placeholder.segment textarea{display:block}.ui.placeholder.segment .button,.ui.placeholder.segment .field,.ui.placeholder.segment textarea,.ui.placeholder.segment>.ui.input{max-width:15rem;margin-left:auto;margin-right:auto}.ui.placeholder.segment .column .button,.ui.placeholder.segment .column .field,.ui.placeholder.segment .column textarea,.ui.placeholder.segment .column>.ui.input{max-width:15rem;margin-left:auto;margin-right:auto}.ui.placeholder.segment>.inline{-ms-flex-item-align:center;align-self:center}.ui.placeholder.segment>.inline>.button{display:inline-block;width:auto;margin:0 .35714286rem 0 0}.ui.placeholder.segment>.inline>.button:last-child{margin-right:0}.ui.piled.segment,.ui.piled.segments{margin:3em 0;-webkit-box-shadow:'';box-shadow:'';z-index:auto}.ui.piled.segment:first-child{margin-top:0}.ui.piled.segment:last-child{margin-bottom:0}.ui.piled.segment:after,.ui.piled.segment:before,.ui.piled.segments:after,.ui.piled.segments:before{background-color:#fff;visibility:visible;content:'';display:block;height:100%;left:0;position:absolute;width:100%;border:1px solid rgba(34,36,38,.15);-webkit-box-shadow:'';box-shadow:''}.ui.piled.segment:before,.ui.piled.segments:before{-webkit-transform:rotate(-1.2deg);transform:rotate(-1.2deg);top:0;z-index:-2}.ui.piled.segment:after,.ui.piled.segments:after{-webkit-transform:rotate(1.2deg);transform:rotate(1.2deg);top:0;z-index:-1}.ui[class*="top attached"].piled.segment{margin-top:3em;margin-bottom:0}.ui.piled.segment[class*="top attached"]:first-child{margin-top:0}.ui.piled.segment[class*="bottom attached"]{margin-top:0;margin-bottom:3em}.ui.piled.segment[class*="bottom attached"]:last-child{margin-bottom:0}.ui.stacked.segment{padding-bottom:1.4em}.ui.stacked.segment:after,.ui.stacked.segment:before,.ui.stacked.segments:after,.ui.stacked.segments:before{content:'';position:absolute;bottom:-3px;left:0;border-top:1px solid rgba(34,36,38,.15);background:rgba(0,0,0,.03);width:100%;height:6px;visibility:visible}.ui.stacked.segment:before,.ui.stacked.segments:before{display:none}.ui.tall.stacked.segment:before,.ui.tall.stacked.segments:before{display:block;bottom:0}.ui.stacked.inverted.segment:after,.ui.stacked.inverted.segment:before,.ui.stacked.inverted.segments:after,.ui.stacked.inverted.segments:before{background-color:rgba(0,0,0,.03);border-top:1px solid rgba(34,36,38,.35)}.ui.padded.segment{padding:1.5em}.ui[class*="very padded"].segment{padding:3em}.ui.padded.segment.vertical.segment,.ui[class*="very padded"].vertical.segment{padding-left:0;padding-right:0}.ui.compact.segment{display:table}.ui.compact.segments{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.ui.compact.segments .segment,.ui.segments .compact.segment{display:block;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto}.ui.circular.segment{display:table-cell;padding:2em;text-align:center;vertical-align:middle;border-radius:500em}.ui.raised.segment,.ui.raised.segments{-webkit-box-shadow:0 2px 4px 0 rgba(34,36,38,.12),0 2px 10px 0 rgba(34,36,38,.15);box-shadow:0 2px 4px 0 rgba(34,36,38,.12),0 2px 10px 0 rgba(34,36,38,.15)}.ui.segments{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;position:relative;margin:1rem 0;border:1px solid rgba(34,36,38,.15);-webkit-box-shadow:0 1px 2px 0 rgba(34,36,38,.15);box-shadow:0 1px 2px 0 rgba(34,36,38,.15);border-radius:.28571429rem}.ui.segments:first-child{margin-top:0}.ui.segments:last-child{margin-bottom:0}.ui.segments>.segment{top:0;bottom:0;border-radius:0;margin:0;width:auto;-webkit-box-shadow:none;box-shadow:none;border:none;border-top:1px solid rgba(34,36,38,.15)}.ui.segments:not(.horizontal)>.segment:first-child{border-top:none;margin-top:0;bottom:0;margin-bottom:0;top:0;border-radius:.28571429rem .28571429rem 0 0}.ui.segments:not(.horizontal)>.segment:last-child{top:0;bottom:0;margin-top:0;margin-bottom:0;-webkit-box-shadow:0 1px 2px 0 rgba(34,36,38,.15),none;box-shadow:0 1px 2px 0 rgba(34,36,38,.15),none;border-radius:0 0 .28571429rem .28571429rem}.ui.segments:not(.horizontal)>.segment:only-child{border-radius:.28571429rem}.ui.segments>.ui.segments{border-top:1px solid rgba(34,36,38,.15);margin:1rem 1rem}.ui.segments>.segments:first-child{border-top:none}.ui.segments>.segment+.segments:not(.horizontal){margin-top:0}.ui.horizontal.segments{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;background-color:transparent;border-radius:0;padding:0;background-color:#fff;-webkit-box-shadow:0 1px 2px 0 rgba(34,36,38,.15);box-shadow:0 1px 2px 0 rgba(34,36,38,.15);margin:1rem 0;border-radius:.28571429rem;border:1px solid rgba(34,36,38,.15)}.ui.segments>.horizontal.segments{margin:0;background-color:transparent;border-radius:0;border:none;-webkit-box-shadow:none;box-shadow:none;border-top:1px solid rgba(34,36,38,.15)}.ui.horizontal.segments>.segment{-webkit-box-flex:1;flex:1 1 auto;-ms-flex:1 1 0px;margin:0;min-width:0;background-color:transparent;border-radius:0;border:none;-webkit-box-shadow:none;box-shadow:none;border-left:1px solid rgba(34,36,38,.15)}.ui.segments>.horizontal.segments:first-child{border-top:none}.ui.horizontal.segments>.segment:first-child{border-left:none}.ui.disabled.segment{opacity:.45;color:rgba(40,40,40,.3)}.ui.loading.segment{position:relative;cursor:default;pointer-events:none;text-shadow:none!important;color:transparent!important;-webkit-transition:all 0s linear;transition:all 0s linear}.ui.loading.segment:before{position:absolute;content:'';top:0;left:0;background:rgba(255,255,255,.8);width:100%;height:100%;border-radius:.28571429rem;z-index:100}.ui.loading.segment:after{position:absolute;content:'';top:50%;left:50%;margin:-1.5em 0 0 -1.5em;width:3em;height:3em;-webkit-animation:segment-spin .6s linear;animation:segment-spin .6s linear;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;border-radius:500rem;border-color:#767676 rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.1);border-style:solid;border-width:.2em;-webkit-box-shadow:0 0 0 1px transparent;box-shadow:0 0 0 1px transparent;visibility:visible;z-index:101}@-webkit-keyframes segment-spin{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes segment-spin{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.ui.basic.segment{background:none transparent;-webkit-box-shadow:none;box-shadow:none;border:none;border-radius:0}.ui.clearing.segment:after{content:".";display:block;height:0;clear:both;visibility:hidden}.ui.red.segment:not(.inverted){border-top:2px solid #db2828!important}.ui.inverted.red.segment{background-color:#db2828!important;color:#fff!important}.ui.orange.segment:not(.inverted){border-top:2px solid #f2711c!important}.ui.inverted.orange.segment{background-color:#f2711c!important;color:#fff!important}.ui.yellow.segment:not(.inverted){border-top:2px solid #fbbd08!important}.ui.inverted.yellow.segment{background-color:#fbbd08!important;color:#fff!important}.ui.olive.segment:not(.inverted){border-top:2px solid #b5cc18!important}.ui.inverted.olive.segment{background-color:#b5cc18!important;color:#fff!important}.ui.green.segment:not(.inverted){border-top:2px solid #21ba45!important}.ui.inverted.green.segment{background-color:#21ba45!important;color:#fff!important}.ui.teal.segment:not(.inverted){border-top:2px solid #00b5ad!important}.ui.inverted.teal.segment{background-color:#00b5ad!important;color:#fff!important}.ui.blue.segment:not(.inverted){border-top:2px solid #2185d0!important}.ui.inverted.blue.segment{background-color:#2185d0!important;color:#fff!important}.ui.violet.segment:not(.inverted){border-top:2px solid #6435c9!important}.ui.inverted.violet.segment{background-color:#6435c9!important;color:#fff!important}.ui.purple.segment:not(.inverted){border-top:2px solid #a333c8!important}.ui.inverted.purple.segment{background-color:#a333c8!important;color:#fff!important}.ui.pink.segment:not(.inverted){border-top:2px solid #e03997!important}.ui.inverted.pink.segment{background-color:#e03997!important;color:#fff!important}.ui.brown.segment:not(.inverted){border-top:2px solid #a5673f!important}.ui.inverted.brown.segment{background-color:#a5673f!important;color:#fff!important}.ui.grey.segment:not(.inverted){border-top:2px solid #767676!important}.ui.inverted.grey.segment{background-color:#767676!important;color:#fff!important}.ui.black.segment:not(.inverted){border-top:2px solid #1b1c1d!important}.ui.inverted.black.segment{background-color:#1b1c1d!important;color:#fff!important}.ui[class*="left aligned"].segment{text-align:left}.ui[class*="right aligned"].segment{text-align:right}.ui[class*="center aligned"].segment{text-align:center}.ui.floated.segment,.ui[class*="left floated"].segment{float:left;margin-right:1em}.ui[class*="right floated"].segment{float:right;margin-left:1em}.ui.inverted.segment{border:none;-webkit-box-shadow:none;box-shadow:none}.ui.inverted.segment,.ui.primary.inverted.segment{background:#1b1c1d;color:rgba(255,255,255,.9)}.ui.inverted.segment .segment{color:rgba(0,0,0,.87)}.ui.inverted.segment .inverted.segment{color:rgba(255,255,255,.9)}.ui.inverted.attached.segment{border-color:#555}.ui.secondary.segment{background:#f3f4f5;color:rgba(0,0,0,.6)}.ui.secondary.inverted.segment{background:#4c4f52 -webkit-gradient(linear,left top,left bottom,from(rgba(255,255,255,.2)),to(rgba(255,255,255,.2)));background:#4c4f52 -webkit-linear-gradient(rgba(255,255,255,.2) 0,rgba(255,255,255,.2) 100%);background:#4c4f52 linear-gradient(rgba(255,255,255,.2) 0,rgba(255,255,255,.2) 100%);color:rgba(255,255,255,.8)}.ui.tertiary.segment{background:#dcddde;color:rgba(0,0,0,.6)}.ui.tertiary.inverted.segment{background:#717579 -webkit-gradient(linear,left top,left bottom,from(rgba(255,255,255,.35)),to(rgba(255,255,255,.35)));background:#717579 -webkit-linear-gradient(rgba(255,255,255,.35) 0,rgba(255,255,255,.35) 100%);background:#717579 linear-gradient(rgba(255,255,255,.35) 0,rgba(255,255,255,.35) 100%);color:rgba(255,255,255,.8)}.ui.attached.segment{top:0;bottom:0;border-radius:0;margin:0 -1px;width:calc(100% - (-1px * 2));max-width:calc(100% - (-1px * 2));-webkit-box-shadow:none;box-shadow:none;border:1px solid #d4d4d5}.ui.attached:not(.message)+.ui.attached.segment:not(.top){border-top:none}.ui[class*="top attached"].segment{bottom:0;margin-bottom:0;top:0;margin-top:1rem;border-radius:.28571429rem .28571429rem 0 0}.ui.segment[class*="top attached"]:first-child{margin-top:0}.ui.segment[class*="bottom attached"]{bottom:0;margin-top:0;top:0;margin-bottom:1rem;-webkit-box-shadow:0 1px 2px 0 rgba(34,36,38,.15),none;box-shadow:0 1px 2px 0 rgba(34,36,38,.15),none;border-radius:0 0 .28571429rem .28571429rem}.ui.segment[class*="bottom attached"]:last-child{margin-bottom:0}.ui.mini.segment,.ui.mini.segments .segment{font-size:.78571429rem}.ui.tiny.segment,.ui.tiny.segments .segment{font-size:.85714286rem}.ui.small.segment,.ui.small.segments .segment{font-size:.92857143rem}.ui.segment,.ui.segments .segment{font-size:1rem}.ui.large.segment,.ui.large.segments .segment{font-size:1.14285714rem}.ui.big.segment,.ui.big.segments .segment{font-size:1.28571429rem}.ui.huge.segment,.ui.huge.segments .segment{font-size:1.42857143rem}.ui.massive.segment,.ui.massive.segments .segment{font-size:1.71428571rem} \ No newline at end of file diff --git a/app/static/semantic/components/shape.css b/app/static/semantic/components/shape.css new file mode 100755 index 0000000..1c2386e --- /dev/null +++ b/app/static/semantic/components/shape.css @@ -0,0 +1,158 @@ +/*! + * # Semantic UI 2.4.0 - Shape + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */ + + +/******************************* + Shape +*******************************/ + +.ui.shape { + position: relative; + vertical-align: top; + display: inline-block; + -webkit-perspective: 2000px; + perspective: 2000px; + -webkit-transition: left 0.6s ease-in-out, width 0.6s ease-in-out, height 0.6s ease-in-out, -webkit-transform 0.6s ease-in-out; + transition: left 0.6s ease-in-out, width 0.6s ease-in-out, height 0.6s ease-in-out, -webkit-transform 0.6s ease-in-out; + transition: transform 0.6s ease-in-out, left 0.6s ease-in-out, width 0.6s ease-in-out, height 0.6s ease-in-out; + transition: transform 0.6s ease-in-out, left 0.6s ease-in-out, width 0.6s ease-in-out, height 0.6s ease-in-out, -webkit-transform 0.6s ease-in-out; +} +.ui.shape .sides { + -webkit-transform-style: preserve-3d; + transform-style: preserve-3d; +} +.ui.shape .side { + opacity: 1; + width: 100%; + margin: 0em !important; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} +.ui.shape .side { + display: none; +} +.ui.shape .side * { + -webkit-backface-visibility: visible !important; + backface-visibility: visible !important; +} + + +/******************************* + Types +*******************************/ + +.ui.cube.shape .side { + min-width: 15em; + height: 15em; + padding: 2em; + background-color: #E6E6E6; + color: rgba(0, 0, 0, 0.87); + -webkit-box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.3); + box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.3); +} +.ui.cube.shape .side > .content { + width: 100%; + height: 100%; + display: table; + text-align: center; + -webkit-user-select: text; + -moz-user-select: text; + -ms-user-select: text; + user-select: text; +} +.ui.cube.shape .side > .content > div { + display: table-cell; + vertical-align: middle; + font-size: 2em; +} + + +/******************************* + Variations +*******************************/ + +.ui.text.shape.animating .sides { + position: static; +} +.ui.text.shape .side { + white-space: nowrap; +} +.ui.text.shape .side > * { + white-space: normal; +} + + +/******************************* + States +*******************************/ + + +/*-------------- + Loading +---------------*/ + +.ui.loading.shape { + position: absolute; + top: -9999px; + left: -9999px; +} + +/*-------------- + Animating +---------------*/ + +.ui.shape .animating.side { + position: absolute; + top: 0px; + left: 0px; + display: block; + z-index: 100; +} +.ui.shape .hidden.side { + opacity: 0.6; +} + +/*-------------- + CSS +---------------*/ + +.ui.shape.animating .sides { + position: absolute; +} +.ui.shape.animating .sides { + -webkit-transition: left 0.6s ease-in-out, width 0.6s ease-in-out, height 0.6s ease-in-out, -webkit-transform 0.6s ease-in-out; + transition: left 0.6s ease-in-out, width 0.6s ease-in-out, height 0.6s ease-in-out, -webkit-transform 0.6s ease-in-out; + transition: transform 0.6s ease-in-out, left 0.6s ease-in-out, width 0.6s ease-in-out, height 0.6s ease-in-out; + transition: transform 0.6s ease-in-out, left 0.6s ease-in-out, width 0.6s ease-in-out, height 0.6s ease-in-out, -webkit-transform 0.6s ease-in-out; +} +.ui.shape.animating .side { + -webkit-transition: opacity 0.6s ease-in-out; + transition: opacity 0.6s ease-in-out; +} + +/*-------------- + Active +---------------*/ + +.ui.shape .active.side { + display: block; +} + + +/******************************* + Theme Overrides +*******************************/ + + + +/******************************* + User Overrides +*******************************/ + diff --git a/app/static/semantic/components/shape.js b/app/static/semantic/components/shape.js new file mode 100755 index 0000000..97010cf --- /dev/null +++ b/app/static/semantic/components/shape.js @@ -0,0 +1,921 @@ +/*! + * # Semantic UI 2.4.1 - Shape + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */ + +;(function ($, window, document, undefined) { + +'use strict'; + +window = (typeof window != 'undefined' && window.Math == Math) + ? window + : (typeof self != 'undefined' && self.Math == Math) + ? self + : Function('return this')() +; + +$.fn.shape = function(parameters) { + var + $allModules = $(this), + $body = $('body'), + + time = new Date().getTime(), + performance = [], + + query = arguments[0], + methodInvoked = (typeof query == 'string'), + queryArguments = [].slice.call(arguments, 1), + + requestAnimationFrame = window.requestAnimationFrame + || window.mozRequestAnimationFrame + || window.webkitRequestAnimationFrame + || window.msRequestAnimationFrame + || function(callback) { setTimeout(callback, 0); }, + + returnedValue + ; + + $allModules + .each(function() { + var + moduleSelector = $allModules.selector || '', + settings = ( $.isPlainObject(parameters) ) + ? $.extend(true, {}, $.fn.shape.settings, parameters) + : $.extend({}, $.fn.shape.settings), + + // internal aliases + namespace = settings.namespace, + selector = settings.selector, + error = settings.error, + className = settings.className, + + // define namespaces for modules + eventNamespace = '.' + namespace, + moduleNamespace = 'module-' + namespace, + + // selector cache + $module = $(this), + $sides = $module.find(selector.sides), + $side = $module.find(selector.side), + + // private variables + nextIndex = false, + $activeSide, + $nextSide, + + // standard module + element = this, + instance = $module.data(moduleNamespace), + module + ; + + module = { + + initialize: function() { + module.verbose('Initializing module for', element); + module.set.defaultSide(); + module.instantiate(); + }, + + instantiate: function() { + module.verbose('Storing instance of module', module); + instance = module; + $module + .data(moduleNamespace, instance) + ; + }, + + destroy: function() { + module.verbose('Destroying previous module for', element); + $module + .removeData(moduleNamespace) + .off(eventNamespace) + ; + }, + + refresh: function() { + module.verbose('Refreshing selector cache for', element); + $module = $(element); + $sides = $(this).find(selector.shape); + $side = $(this).find(selector.side); + }, + + repaint: function() { + module.verbose('Forcing repaint event'); + var + shape = $sides[0] || document.createElement('div'), + fakeAssignment = shape.offsetWidth + ; + }, + + animate: function(propertyObject, callback) { + module.verbose('Animating box with properties', propertyObject); + callback = callback || function(event) { + module.verbose('Executing animation callback'); + if(event !== undefined) { + event.stopPropagation(); + } + module.reset(); + module.set.active(); + }; + settings.beforeChange.call($nextSide[0]); + if(module.get.transitionEvent()) { + module.verbose('Starting CSS animation'); + $module + .addClass(className.animating) + ; + $sides + .css(propertyObject) + .one(module.get.transitionEvent(), callback) + ; + module.set.duration(settings.duration); + requestAnimationFrame(function() { + $module + .addClass(className.animating) + ; + $activeSide + .addClass(className.hidden) + ; + }); + } + else { + callback(); + } + }, + + queue: function(method) { + module.debug('Queueing animation of', method); + $sides + .one(module.get.transitionEvent(), function() { + module.debug('Executing queued animation'); + setTimeout(function(){ + $module.shape(method); + }, 0); + }) + ; + }, + + reset: function() { + module.verbose('Animating states reset'); + $module + .removeClass(className.animating) + .attr('style', '') + .removeAttr('style') + ; + // removeAttr style does not consistently work in safari + $sides + .attr('style', '') + .removeAttr('style') + ; + $side + .attr('style', '') + .removeAttr('style') + .removeClass(className.hidden) + ; + $nextSide + .removeClass(className.animating) + .attr('style', '') + .removeAttr('style') + ; + }, + + is: { + complete: function() { + return ($side.filter('.' + className.active)[0] == $nextSide[0]); + }, + animating: function() { + return $module.hasClass(className.animating); + } + }, + + set: { + + defaultSide: function() { + $activeSide = $module.find('.' + settings.className.active); + $nextSide = ( $activeSide.next(selector.side).length > 0 ) + ? $activeSide.next(selector.side) + : $module.find(selector.side).first() + ; + nextIndex = false; + module.verbose('Active side set to', $activeSide); + module.verbose('Next side set to', $nextSide); + }, + + duration: function(duration) { + duration = duration || settings.duration; + duration = (typeof duration == 'number') + ? duration + 'ms' + : duration + ; + module.verbose('Setting animation duration', duration); + if(settings.duration || settings.duration === 0) { + $sides.add($side) + .css({ + '-webkit-transition-duration': duration, + '-moz-transition-duration': duration, + '-ms-transition-duration': duration, + '-o-transition-duration': duration, + 'transition-duration': duration + }) + ; + } + }, + + currentStageSize: function() { + var + $activeSide = $module.find('.' + settings.className.active), + width = $activeSide.outerWidth(true), + height = $activeSide.outerHeight(true) + ; + $module + .css({ + width: width, + height: height + }) + ; + }, + + stageSize: function() { + var + $clone = $module.clone().addClass(className.loading), + $activeSide = $clone.find('.' + settings.className.active), + $nextSide = (nextIndex) + ? $clone.find(selector.side).eq(nextIndex) + : ( $activeSide.next(selector.side).length > 0 ) + ? $activeSide.next(selector.side) + : $clone.find(selector.side).first(), + newWidth = (settings.width == 'next') + ? $nextSide.outerWidth(true) + : (settings.width == 'initial') + ? $module.width() + : settings.width, + newHeight = (settings.height == 'next') + ? $nextSide.outerHeight(true) + : (settings.height == 'initial') + ? $module.height() + : settings.height + ; + $activeSide.removeClass(className.active); + $nextSide.addClass(className.active); + $clone.insertAfter($module); + $clone.remove(); + if(settings.width != 'auto') { + $module.css('width', newWidth + settings.jitter); + module.verbose('Specifying width during animation', newWidth); + } + if(settings.height != 'auto') { + $module.css('height', newHeight + settings.jitter); + module.verbose('Specifying height during animation', newHeight); + } + }, + + nextSide: function(selector) { + nextIndex = selector; + $nextSide = $side.filter(selector); + nextIndex = $side.index($nextSide); + if($nextSide.length === 0) { + module.set.defaultSide(); + module.error(error.side); + } + module.verbose('Next side manually set to', $nextSide); + }, + + active: function() { + module.verbose('Setting new side to active', $nextSide); + $side + .removeClass(className.active) + ; + $nextSide + .addClass(className.active) + ; + settings.onChange.call($nextSide[0]); + module.set.defaultSide(); + } + }, + + flip: { + + up: function() { + if(module.is.complete() && !module.is.animating() && !settings.allowRepeats) { + module.debug('Side already visible', $nextSide); + return; + } + if( !module.is.animating()) { + module.debug('Flipping up', $nextSide); + var + transform = module.get.transform.up() + ; + module.set.stageSize(); + module.stage.above(); + module.animate(transform); + } + else { + module.queue('flip up'); + } + }, + + down: function() { + if(module.is.complete() && !module.is.animating() && !settings.allowRepeats) { + module.debug('Side already visible', $nextSide); + return; + } + if( !module.is.animating()) { + module.debug('Flipping down', $nextSide); + var + transform = module.get.transform.down() + ; + module.set.stageSize(); + module.stage.below(); + module.animate(transform); + } + else { + module.queue('flip down'); + } + }, + + left: function() { + if(module.is.complete() && !module.is.animating() && !settings.allowRepeats) { + module.debug('Side already visible', $nextSide); + return; + } + if( !module.is.animating()) { + module.debug('Flipping left', $nextSide); + var + transform = module.get.transform.left() + ; + module.set.stageSize(); + module.stage.left(); + module.animate(transform); + } + else { + module.queue('flip left'); + } + }, + + right: function() { + if(module.is.complete() && !module.is.animating() && !settings.allowRepeats) { + module.debug('Side already visible', $nextSide); + return; + } + if( !module.is.animating()) { + module.debug('Flipping right', $nextSide); + var + transform = module.get.transform.right() + ; + module.set.stageSize(); + module.stage.right(); + module.animate(transform); + } + else { + module.queue('flip right'); + } + }, + + over: function() { + if(module.is.complete() && !module.is.animating() && !settings.allowRepeats) { + module.debug('Side already visible', $nextSide); + return; + } + if( !module.is.animating()) { + module.debug('Flipping over', $nextSide); + module.set.stageSize(); + module.stage.behind(); + module.animate(module.get.transform.over() ); + } + else { + module.queue('flip over'); + } + }, + + back: function() { + if(module.is.complete() && !module.is.animating() && !settings.allowRepeats) { + module.debug('Side already visible', $nextSide); + return; + } + if( !module.is.animating()) { + module.debug('Flipping back', $nextSide); + module.set.stageSize(); + module.stage.behind(); + module.animate(module.get.transform.back() ); + } + else { + module.queue('flip back'); + } + } + + }, + + get: { + + transform: { + up: function() { + var + translate = { + y: -(($activeSide.outerHeight(true) - $nextSide.outerHeight(true)) / 2), + z: -($activeSide.outerHeight(true) / 2) + } + ; + return { + transform: 'translateY(' + translate.y + 'px) translateZ('+ translate.z + 'px) rotateX(-90deg)' + }; + }, + + down: function() { + var + translate = { + y: -(($activeSide.outerHeight(true) - $nextSide.outerHeight(true)) / 2), + z: -($activeSide.outerHeight(true) / 2) + } + ; + return { + transform: 'translateY(' + translate.y + 'px) translateZ('+ translate.z + 'px) rotateX(90deg)' + }; + }, + + left: function() { + var + translate = { + x : -(($activeSide.outerWidth(true) - $nextSide.outerWidth(true)) / 2), + z : -($activeSide.outerWidth(true) / 2) + } + ; + return { + transform: 'translateX(' + translate.x + 'px) translateZ(' + translate.z + 'px) rotateY(90deg)' + }; + }, + + right: function() { + var + translate = { + x : -(($activeSide.outerWidth(true) - $nextSide.outerWidth(true)) / 2), + z : -($activeSide.outerWidth(true) / 2) + } + ; + return { + transform: 'translateX(' + translate.x + 'px) translateZ(' + translate.z + 'px) rotateY(-90deg)' + }; + }, + + over: function() { + var + translate = { + x : -(($activeSide.outerWidth(true) - $nextSide.outerWidth(true)) / 2) + } + ; + return { + transform: 'translateX(' + translate.x + 'px) rotateY(180deg)' + }; + }, + + back: function() { + var + translate = { + x : -(($activeSide.outerWidth(true) - $nextSide.outerWidth(true)) / 2) + } + ; + return { + transform: 'translateX(' + translate.x + 'px) rotateY(-180deg)' + }; + } + }, + + transitionEvent: function() { + var + element = document.createElement('element'), + transitions = { + 'transition' :'transitionend', + 'OTransition' :'oTransitionEnd', + 'MozTransition' :'transitionend', + 'WebkitTransition' :'webkitTransitionEnd' + }, + transition + ; + for(transition in transitions){ + if( element.style[transition] !== undefined ){ + return transitions[transition]; + } + } + }, + + nextSide: function() { + return ( $activeSide.next(selector.side).length > 0 ) + ? $activeSide.next(selector.side) + : $module.find(selector.side).first() + ; + } + + }, + + stage: { + + above: function() { + var + box = { + origin : (($activeSide.outerHeight(true) - $nextSide.outerHeight(true)) / 2), + depth : { + active : ($nextSide.outerHeight(true) / 2), + next : ($activeSide.outerHeight(true) / 2) + } + } + ; + module.verbose('Setting the initial animation position as above', $nextSide, box); + $sides + .css({ + 'transform' : 'translateZ(-' + box.depth.active + 'px)' + }) + ; + $activeSide + .css({ + 'transform' : 'rotateY(0deg) translateZ(' + box.depth.active + 'px)' + }) + ; + $nextSide + .addClass(className.animating) + .css({ + 'top' : box.origin + 'px', + 'transform' : 'rotateX(90deg) translateZ(' + box.depth.next + 'px)' + }) + ; + }, + + below: function() { + var + box = { + origin : (($activeSide.outerHeight(true) - $nextSide.outerHeight(true)) / 2), + depth : { + active : ($nextSide.outerHeight(true) / 2), + next : ($activeSide.outerHeight(true) / 2) + } + } + ; + module.verbose('Setting the initial animation position as below', $nextSide, box); + $sides + .css({ + 'transform' : 'translateZ(-' + box.depth.active + 'px)' + }) + ; + $activeSide + .css({ + 'transform' : 'rotateY(0deg) translateZ(' + box.depth.active + 'px)' + }) + ; + $nextSide + .addClass(className.animating) + .css({ + 'top' : box.origin + 'px', + 'transform' : 'rotateX(-90deg) translateZ(' + box.depth.next + 'px)' + }) + ; + }, + + left: function() { + var + height = { + active : $activeSide.outerWidth(true), + next : $nextSide.outerWidth(true) + }, + box = { + origin : ( ( height.active - height.next ) / 2), + depth : { + active : (height.next / 2), + next : (height.active / 2) + } + } + ; + module.verbose('Setting the initial animation position as left', $nextSide, box); + $sides + .css({ + 'transform' : 'translateZ(-' + box.depth.active + 'px)' + }) + ; + $activeSide + .css({ + 'transform' : 'rotateY(0deg) translateZ(' + box.depth.active + 'px)' + }) + ; + $nextSide + .addClass(className.animating) + .css({ + 'left' : box.origin + 'px', + 'transform' : 'rotateY(-90deg) translateZ(' + box.depth.next + 'px)' + }) + ; + }, + + right: function() { + var + height = { + active : $activeSide.outerWidth(true), + next : $nextSide.outerWidth(true) + }, + box = { + origin : ( ( height.active - height.next ) / 2), + depth : { + active : (height.next / 2), + next : (height.active / 2) + } + } + ; + module.verbose('Setting the initial animation position as left', $nextSide, box); + $sides + .css({ + 'transform' : 'translateZ(-' + box.depth.active + 'px)' + }) + ; + $activeSide + .css({ + 'transform' : 'rotateY(0deg) translateZ(' + box.depth.active + 'px)' + }) + ; + $nextSide + .addClass(className.animating) + .css({ + 'left' : box.origin + 'px', + 'transform' : 'rotateY(90deg) translateZ(' + box.depth.next + 'px)' + }) + ; + }, + + behind: function() { + var + height = { + active : $activeSide.outerWidth(true), + next : $nextSide.outerWidth(true) + }, + box = { + origin : ( ( height.active - height.next ) / 2), + depth : { + active : (height.next / 2), + next : (height.active / 2) + } + } + ; + module.verbose('Setting the initial animation position as behind', $nextSide, box); + $activeSide + .css({ + 'transform' : 'rotateY(0deg)' + }) + ; + $nextSide + .addClass(className.animating) + .css({ + 'left' : box.origin + 'px', + 'transform' : 'rotateY(-180deg)' + }) + ; + } + }, + setting: function(name, value) { + module.debug('Changing setting', name, value); + if( $.isPlainObject(name) ) { + $.extend(true, settings, name); + } + else if(value !== undefined) { + if($.isPlainObject(settings[name])) { + $.extend(true, settings[name], value); + } + else { + settings[name] = value; + } + } + else { + return settings[name]; + } + }, + internal: function(name, value) { + if( $.isPlainObject(name) ) { + $.extend(true, module, name); + } + else if(value !== undefined) { + module[name] = value; + } + else { + return module[name]; + } + }, + debug: function() { + if(!settings.silent && settings.debug) { + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':'); + module.debug.apply(console, arguments); + } + } + }, + verbose: function() { + if(!settings.silent && settings.verbose && settings.debug) { + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':'); + module.verbose.apply(console, arguments); + } + } + }, + error: function() { + if(!settings.silent) { + module.error = Function.prototype.bind.call(console.error, console, settings.name + ':'); + module.error.apply(console, arguments); + } + }, + performance: { + log: function(message) { + var + currentTime, + executionTime, + previousTime + ; + if(settings.performance) { + currentTime = new Date().getTime(); + previousTime = time || currentTime; + executionTime = currentTime - previousTime; + time = currentTime; + performance.push({ + 'Name' : message[0], + 'Arguments' : [].slice.call(message, 1) || '', + 'Element' : element, + 'Execution Time' : executionTime + }); + } + clearTimeout(module.performance.timer); + module.performance.timer = setTimeout(module.performance.display, 500); + }, + display: function() { + var + title = settings.name + ':', + totalTime = 0 + ; + time = false; + clearTimeout(module.performance.timer); + $.each(performance, function(index, data) { + totalTime += data['Execution Time']; + }); + title += ' ' + totalTime + 'ms'; + if(moduleSelector) { + title += ' \'' + moduleSelector + '\''; + } + if($allModules.length > 1) { + title += ' ' + '(' + $allModules.length + ')'; + } + if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { + console.groupCollapsed(title); + if(console.table) { + console.table(performance); + } + else { + $.each(performance, function(index, data) { + console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); + }); + } + console.groupEnd(); + } + performance = []; + } + }, + invoke: function(query, passedArguments, context) { + var + object = instance, + maxDepth, + found, + response + ; + passedArguments = passedArguments || queryArguments; + context = element || context; + if(typeof query == 'string' && object !== undefined) { + query = query.split(/[\. ]/); + maxDepth = query.length - 1; + $.each(query, function(depth, value) { + var camelCaseValue = (depth != maxDepth) + ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) + : query + ; + if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) { + object = object[camelCaseValue]; + } + else if( object[camelCaseValue] !== undefined ) { + found = object[camelCaseValue]; + return false; + } + else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) { + object = object[value]; + } + else if( object[value] !== undefined ) { + found = object[value]; + return false; + } + else { + return false; + } + }); + } + if ( $.isFunction( found ) ) { + response = found.apply(context, passedArguments); + } + else if(found !== undefined) { + response = found; + } + if($.isArray(returnedValue)) { + returnedValue.push(response); + } + else if(returnedValue !== undefined) { + returnedValue = [returnedValue, response]; + } + else if(response !== undefined) { + returnedValue = response; + } + return found; + } + }; + + if(methodInvoked) { + if(instance === undefined) { + module.initialize(); + } + module.invoke(query); + } + else { + if(instance !== undefined) { + instance.invoke('destroy'); + } + module.initialize(); + } + }) + ; + + return (returnedValue !== undefined) + ? returnedValue + : this + ; +}; + +$.fn.shape.settings = { + + // module info + name : 'Shape', + + // hide all debug content + silent : false, + + // debug content outputted to console + debug : false, + + // verbose debug output + verbose : false, + + // fudge factor in pixels when swapping from 2d to 3d (can be useful to correct rounding errors) + jitter : 0, + + // performance data output + performance: true, + + // event namespace + namespace : 'shape', + + // width during animation, can be set to 'auto', initial', 'next' or pixel amount + width: 'initial', + + // height during animation, can be set to 'auto', 'initial', 'next' or pixel amount + height: 'initial', + + // callback occurs on side change + beforeChange : function() {}, + onChange : function() {}, + + // allow animation to same side + allowRepeats: false, + + // animation duration + duration : false, + + // possible errors + error: { + side : 'You tried to switch to a side that does not exist.', + method : 'The method you called is not defined' + }, + + // classnames used + className : { + animating : 'animating', + hidden : 'hidden', + loading : 'loading', + active : 'active' + }, + + // selectors used + selector : { + sides : '.sides', + side : '.side' + } + +}; + + +})( jQuery, window, document ); diff --git a/app/static/semantic/components/shape.min.css b/app/static/semantic/components/shape.min.css new file mode 100755 index 0000000..a7d491f --- /dev/null +++ b/app/static/semantic/components/shape.min.css @@ -0,0 +1,9 @@ +/*! + * # Semantic UI 2.4.0 - Shape + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */.ui.shape{position:relative;vertical-align:top;display:inline-block;-webkit-perspective:2000px;perspective:2000px;-webkit-transition:left .6s ease-in-out,width .6s ease-in-out,height .6s ease-in-out,-webkit-transform .6s ease-in-out;transition:left .6s ease-in-out,width .6s ease-in-out,height .6s ease-in-out,-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out,left .6s ease-in-out,width .6s ease-in-out,height .6s ease-in-out;transition:transform .6s ease-in-out,left .6s ease-in-out,width .6s ease-in-out,height .6s ease-in-out,-webkit-transform .6s ease-in-out}.ui.shape .sides{-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.ui.shape .side{opacity:1;width:100%;margin:0!important;-webkit-backface-visibility:hidden;backface-visibility:hidden}.ui.shape .side{display:none}.ui.shape .side *{-webkit-backface-visibility:visible!important;backface-visibility:visible!important}.ui.cube.shape .side{min-width:15em;height:15em;padding:2em;background-color:#e6e6e6;color:rgba(0,0,0,.87);-webkit-box-shadow:0 0 2px rgba(0,0,0,.3);box-shadow:0 0 2px rgba(0,0,0,.3)}.ui.cube.shape .side>.content{width:100%;height:100%;display:table;text-align:center;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.ui.cube.shape .side>.content>div{display:table-cell;vertical-align:middle;font-size:2em}.ui.text.shape.animating .sides{position:static}.ui.text.shape .side{white-space:nowrap}.ui.text.shape .side>*{white-space:normal}.ui.loading.shape{position:absolute;top:-9999px;left:-9999px}.ui.shape .animating.side{position:absolute;top:0;left:0;display:block;z-index:100}.ui.shape .hidden.side{opacity:.6}.ui.shape.animating .sides{position:absolute}.ui.shape.animating .sides{-webkit-transition:left .6s ease-in-out,width .6s ease-in-out,height .6s ease-in-out,-webkit-transform .6s ease-in-out;transition:left .6s ease-in-out,width .6s ease-in-out,height .6s ease-in-out,-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out,left .6s ease-in-out,width .6s ease-in-out,height .6s ease-in-out;transition:transform .6s ease-in-out,left .6s ease-in-out,width .6s ease-in-out,height .6s ease-in-out,-webkit-transform .6s ease-in-out}.ui.shape.animating .side{-webkit-transition:opacity .6s ease-in-out;transition:opacity .6s ease-in-out}.ui.shape .active.side{display:block} \ No newline at end of file diff --git a/app/static/semantic/components/shape.min.js b/app/static/semantic/components/shape.min.js new file mode 100755 index 0000000..c50c05d --- /dev/null +++ b/app/static/semantic/components/shape.min.js @@ -0,0 +1 @@ +!function(H,e,T,Z){"use strict";e=void 0!==e&&e.Math==Math?e:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),H.fn.shape=function(v){var b,x=H(this),y=(H("body"),(new Date).getTime()),S=[],w=v,C="string"==typeof w,W=[].slice.call(arguments,1),F=e.requestAnimationFrame||e.mozRequestAnimationFrame||e.webkitRequestAnimationFrame||e.msRequestAnimationFrame||function(e){setTimeout(e,0)};return x.each(function(){var n,a,o,t=x.selector||"",s=H.isPlainObject(v)?H.extend(!0,{},H.fn.shape.settings,v):H.extend({},H.fn.shape.settings),e=s.namespace,r=s.selector,i=s.error,l=s.className,d="."+e,u="module-"+e,c=H(this),g=c.find(r.sides),f=c.find(r.side),m=!1,h=this,p=c.data(u);o={initialize:function(){o.verbose("Initializing module for",h),o.set.defaultSide(),o.instantiate()},instantiate:function(){o.verbose("Storing instance of module",o),p=o,c.data(u,p)},destroy:function(){o.verbose("Destroying previous module for",h),c.removeData(u).off(d)},refresh:function(){o.verbose("Refreshing selector cache for",h),c=H(h),g=H(this).find(r.shape),f=H(this).find(r.side)},repaint:function(){o.verbose("Forcing repaint event");(g[0]||T.createElement("div")).offsetWidth},animate:function(e,t){o.verbose("Animating box with properties",e),t=t||function(e){o.verbose("Executing animation callback"),e!==Z&&e.stopPropagation(),o.reset(),o.set.active()},s.beforeChange.call(a[0]),o.get.transitionEvent()?(o.verbose("Starting CSS animation"),c.addClass(l.animating),g.css(e).one(o.get.transitionEvent(),t),o.set.duration(s.duration),F(function(){c.addClass(l.animating),n.addClass(l.hidden)})):t()},queue:function(e){o.debug("Queueing animation of",e),g.one(o.get.transitionEvent(),function(){o.debug("Executing queued animation"),setTimeout(function(){c.shape(e)},0)})},reset:function(){o.verbose("Animating states reset"),c.removeClass(l.animating).attr("style","").removeAttr("style"),g.attr("style","").removeAttr("style"),f.attr("style","").removeAttr("style").removeClass(l.hidden),a.removeClass(l.animating).attr("style","").removeAttr("style")},is:{complete:function(){return f.filter("."+l.active)[0]==a[0]},animating:function(){return c.hasClass(l.animating)}},set:{defaultSide:function(){n=c.find("."+s.className.active),a=0 * { + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} + +/*-------------- + Direction +---------------*/ + +.ui.left.sidebar { + right: auto; + left: 0px; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); +} +.ui.right.sidebar { + right: 0px !important; + left: auto !important; + -webkit-transform: translate3d(100%, 0%, 0); + transform: translate3d(100%, 0%, 0); +} +.ui.top.sidebar, +.ui.bottom.sidebar { + width: 100% !important; + height: auto !important; +} +.ui.top.sidebar { + top: 0px !important; + bottom: auto !important; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); +} +.ui.bottom.sidebar { + top: auto !important; + bottom: 0px !important; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); +} + +/*-------------- + Pushable +---------------*/ + +.pushable { + height: 100%; + overflow-x: hidden; + padding: 0em !important; +} + +/* Whole Page */ +body.pushable { + background: #545454 !important; +} + +/* Page Context */ +.pushable:not(body) { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); +} +.pushable:not(body) > .ui.sidebar, +.pushable:not(body) > .fixed, +.pushable:not(body) > .pusher:after { + position: absolute; +} + +/*-------------- + Fixed +---------------*/ + +.pushable > .fixed { + position: fixed; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-transition: -webkit-transform 500ms ease; + transition: -webkit-transform 500ms ease; + transition: transform 500ms ease; + transition: transform 500ms ease, -webkit-transform 500ms ease; + will-change: transform; + z-index: 101; +} + +/*-------------- + Page +---------------*/ + +.pushable > .pusher { + position: relative; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + overflow: hidden; + min-height: 100%; + -webkit-transition: -webkit-transform 500ms ease; + transition: -webkit-transform 500ms ease; + transition: transform 500ms ease; + transition: transform 500ms ease, -webkit-transform 500ms ease; + z-index: 2; +} +body.pushable > .pusher { + background: #FFFFFF; +} + +/* Pusher should inherit background from context */ +.pushable > .pusher { + background: inherit; +} + +/*-------------- + Dimmer +---------------*/ + +.pushable > .pusher:after { + position: fixed; + top: 0px; + right: 0px; + content: ''; + background-color: rgba(0, 0, 0, 0.4); + overflow: hidden; + opacity: 0; + -webkit-transition: opacity 500ms; + transition: opacity 500ms; + will-change: opacity; + z-index: 1000; +} + +/*-------------- + Coupling +---------------*/ + +.ui.sidebar.menu .item { + border-radius: 0em !important; +} + + +/******************************* + States +*******************************/ + + +/*-------------- + Dimmed +---------------*/ + +.pushable > .pusher.dimmed:after { + width: 100% !important; + height: 100% !important; + opacity: 1 !important; +} + +/*-------------- + Animating +---------------*/ + +.ui.animating.sidebar { + visibility: visible; +} + +/*-------------- + Visible +---------------*/ + +.ui.visible.sidebar { + visibility: visible; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); +} + +/* Shadow Direction */ +.ui.left.visible.sidebar, +.ui.right.visible.sidebar { + -webkit-box-shadow: 0px 0px 20px rgba(34, 36, 38, 0.15); + box-shadow: 0px 0px 20px rgba(34, 36, 38, 0.15); +} +.ui.top.visible.sidebar, +.ui.bottom.visible.sidebar { + -webkit-box-shadow: 0px 0px 20px rgba(34, 36, 38, 0.15); + box-shadow: 0px 0px 20px rgba(34, 36, 38, 0.15); +} + +/* Visible On Load */ +.ui.visible.left.sidebar ~ .fixed, +.ui.visible.left.sidebar ~ .pusher { + -webkit-transform: translate3d(260px, 0, 0); + transform: translate3d(260px, 0, 0); +} +.ui.visible.right.sidebar ~ .fixed, +.ui.visible.right.sidebar ~ .pusher { + -webkit-transform: translate3d(-260px, 0, 0); + transform: translate3d(-260px, 0, 0); +} +.ui.visible.top.sidebar ~ .fixed, +.ui.visible.top.sidebar ~ .pusher { + -webkit-transform: translate3d(0, 36px, 0); + transform: translate3d(0, 36px, 0); +} +.ui.visible.bottom.sidebar ~ .fixed, +.ui.visible.bottom.sidebar ~ .pusher { + -webkit-transform: translate3d(0, -36px, 0); + transform: translate3d(0, -36px, 0); +} + +/* opposite sides visible forces content overlay */ +.ui.visible.left.sidebar ~ .ui.visible.right.sidebar ~ .fixed, +.ui.visible.left.sidebar ~ .ui.visible.right.sidebar ~ .pusher, +.ui.visible.right.sidebar ~ .ui.visible.left.sidebar ~ .fixed, +.ui.visible.right.sidebar ~ .ui.visible.left.sidebar ~ .pusher { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); +} + +/*-------------- + iOS +---------------*/ + + + +/******************************* + Variations +*******************************/ + + +/*-------------- + Width +---------------*/ + + +/* Left / Right */ +.ui.thin.left.sidebar, +.ui.thin.right.sidebar { + width: 150px; +} +.ui[class*="very thin"].left.sidebar, +.ui[class*="very thin"].right.sidebar { + width: 60px; +} +.ui.left.sidebar, +.ui.right.sidebar { + width: 260px; +} +.ui.wide.left.sidebar, +.ui.wide.right.sidebar { + width: 350px; +} +.ui[class*="very wide"].left.sidebar, +.ui[class*="very wide"].right.sidebar { + width: 475px; +} + +/* Left Visible */ +.ui.visible.thin.left.sidebar ~ .fixed, +.ui.visible.thin.left.sidebar ~ .pusher { + -webkit-transform: translate3d(150px, 0, 0); + transform: translate3d(150px, 0, 0); +} +.ui.visible[class*="very thin"].left.sidebar ~ .fixed, +.ui.visible[class*="very thin"].left.sidebar ~ .pusher { + -webkit-transform: translate3d(60px, 0, 0); + transform: translate3d(60px, 0, 0); +} +.ui.visible.wide.left.sidebar ~ .fixed, +.ui.visible.wide.left.sidebar ~ .pusher { + -webkit-transform: translate3d(350px, 0, 0); + transform: translate3d(350px, 0, 0); +} +.ui.visible[class*="very wide"].left.sidebar ~ .fixed, +.ui.visible[class*="very wide"].left.sidebar ~ .pusher { + -webkit-transform: translate3d(475px, 0, 0); + transform: translate3d(475px, 0, 0); +} + +/* Right Visible */ +.ui.visible.thin.right.sidebar ~ .fixed, +.ui.visible.thin.right.sidebar ~ .pusher { + -webkit-transform: translate3d(-150px, 0, 0); + transform: translate3d(-150px, 0, 0); +} +.ui.visible[class*="very thin"].right.sidebar ~ .fixed, +.ui.visible[class*="very thin"].right.sidebar ~ .pusher { + -webkit-transform: translate3d(-60px, 0, 0); + transform: translate3d(-60px, 0, 0); +} +.ui.visible.wide.right.sidebar ~ .fixed, +.ui.visible.wide.right.sidebar ~ .pusher { + -webkit-transform: translate3d(-350px, 0, 0); + transform: translate3d(-350px, 0, 0); +} +.ui.visible[class*="very wide"].right.sidebar ~ .fixed, +.ui.visible[class*="very wide"].right.sidebar ~ .pusher { + -webkit-transform: translate3d(-475px, 0, 0); + transform: translate3d(-475px, 0, 0); +} + + +/******************************* + Animations +*******************************/ + + +/*-------------- + Overlay +---------------*/ + + +/* Set-up */ +.ui.overlay.sidebar { + z-index: 102; +} + +/* Initial */ +.ui.left.overlay.sidebar { + -webkit-transform: translate3d(-100%, 0%, 0); + transform: translate3d(-100%, 0%, 0); +} +.ui.right.overlay.sidebar { + -webkit-transform: translate3d(100%, 0%, 0); + transform: translate3d(100%, 0%, 0); +} +.ui.top.overlay.sidebar { + -webkit-transform: translate3d(0%, -100%, 0); + transform: translate3d(0%, -100%, 0); +} +.ui.bottom.overlay.sidebar { + -webkit-transform: translate3d(0%, 100%, 0); + transform: translate3d(0%, 100%, 0); +} + +/* Animation */ +.animating.ui.overlay.sidebar, +.ui.visible.overlay.sidebar { + -webkit-transition: -webkit-transform 500ms ease; + transition: -webkit-transform 500ms ease; + transition: transform 500ms ease; + transition: transform 500ms ease, -webkit-transform 500ms ease; +} + +/* End - Sidebar */ +.ui.visible.left.overlay.sidebar { + -webkit-transform: translate3d(0%, 0%, 0); + transform: translate3d(0%, 0%, 0); +} +.ui.visible.right.overlay.sidebar { + -webkit-transform: translate3d(0%, 0%, 0); + transform: translate3d(0%, 0%, 0); +} +.ui.visible.top.overlay.sidebar { + -webkit-transform: translate3d(0%, 0%, 0); + transform: translate3d(0%, 0%, 0); +} +.ui.visible.bottom.overlay.sidebar { + -webkit-transform: translate3d(0%, 0%, 0); + transform: translate3d(0%, 0%, 0); +} + +/* End - Pusher */ +.ui.visible.overlay.sidebar ~ .fixed, +.ui.visible.overlay.sidebar ~ .pusher { + -webkit-transform: none !important; + transform: none !important; +} + +/*-------------- + Push +---------------*/ + + +/* Initial */ +.ui.push.sidebar { + -webkit-transition: -webkit-transform 500ms ease; + transition: -webkit-transform 500ms ease; + transition: transform 500ms ease; + transition: transform 500ms ease, -webkit-transform 500ms ease; + z-index: 102; +} + +/* Sidebar - Initial */ +.ui.left.push.sidebar { + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); +} +.ui.right.push.sidebar { + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); +} +.ui.top.push.sidebar { + -webkit-transform: translate3d(0%, -100%, 0); + transform: translate3d(0%, -100%, 0); +} +.ui.bottom.push.sidebar { + -webkit-transform: translate3d(0%, 100%, 0); + transform: translate3d(0%, 100%, 0); +} + +/* End */ +.ui.visible.push.sidebar { + -webkit-transform: translate3d(0%, 0, 0); + transform: translate3d(0%, 0, 0); +} + +/*-------------- + Uncover +---------------*/ + + +/* Initial */ +.ui.uncover.sidebar { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + z-index: 1; +} + +/* End */ +.ui.visible.uncover.sidebar { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + -webkit-transition: -webkit-transform 500ms ease; + transition: -webkit-transform 500ms ease; + transition: transform 500ms ease; + transition: transform 500ms ease, -webkit-transform 500ms ease; +} + +/*-------------- + Slide Along +---------------*/ + + +/* Initial */ +.ui.slide.along.sidebar { + z-index: 1; +} + +/* Sidebar - Initial */ +.ui.left.slide.along.sidebar { + -webkit-transform: translate3d(-50%, 0, 0); + transform: translate3d(-50%, 0, 0); +} +.ui.right.slide.along.sidebar { + -webkit-transform: translate3d(50%, 0, 0); + transform: translate3d(50%, 0, 0); +} +.ui.top.slide.along.sidebar { + -webkit-transform: translate3d(0, -50%, 0); + transform: translate3d(0, -50%, 0); +} +.ui.bottom.slide.along.sidebar { + -webkit-transform: translate3d(0%, 50%, 0); + transform: translate3d(0%, 50%, 0); +} + +/* Animation */ +.ui.animating.slide.along.sidebar { + -webkit-transition: -webkit-transform 500ms ease; + transition: -webkit-transform 500ms ease; + transition: transform 500ms ease; + transition: transform 500ms ease, -webkit-transform 500ms ease; +} + +/* End */ +.ui.visible.slide.along.sidebar { + -webkit-transform: translate3d(0%, 0, 0); + transform: translate3d(0%, 0, 0); +} + +/*-------------- + Slide Out +---------------*/ + + +/* Initial */ +.ui.slide.out.sidebar { + z-index: 1; +} + +/* Sidebar - Initial */ +.ui.left.slide.out.sidebar { + -webkit-transform: translate3d(50%, 0, 0); + transform: translate3d(50%, 0, 0); +} +.ui.right.slide.out.sidebar { + -webkit-transform: translate3d(-50%, 0, 0); + transform: translate3d(-50%, 0, 0); +} +.ui.top.slide.out.sidebar { + -webkit-transform: translate3d(0%, 50%, 0); + transform: translate3d(0%, 50%, 0); +} +.ui.bottom.slide.out.sidebar { + -webkit-transform: translate3d(0%, -50%, 0); + transform: translate3d(0%, -50%, 0); +} + +/* Animation */ +.ui.animating.slide.out.sidebar { + -webkit-transition: -webkit-transform 500ms ease; + transition: -webkit-transform 500ms ease; + transition: transform 500ms ease; + transition: transform 500ms ease, -webkit-transform 500ms ease; +} + +/* End */ +.ui.visible.slide.out.sidebar { + -webkit-transform: translate3d(0%, 0, 0); + transform: translate3d(0%, 0, 0); +} + +/*-------------- + Scale Down +---------------*/ + + +/* Initial */ +.ui.scale.down.sidebar { + -webkit-transition: -webkit-transform 500ms ease; + transition: -webkit-transform 500ms ease; + transition: transform 500ms ease; + transition: transform 500ms ease, -webkit-transform 500ms ease; + z-index: 102; +} + +/* Sidebar - Initial */ +.ui.left.scale.down.sidebar { + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); +} +.ui.right.scale.down.sidebar { + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); +} +.ui.top.scale.down.sidebar { + -webkit-transform: translate3d(0%, -100%, 0); + transform: translate3d(0%, -100%, 0); +} +.ui.bottom.scale.down.sidebar { + -webkit-transform: translate3d(0%, 100%, 0); + transform: translate3d(0%, 100%, 0); +} + +/* Pusher - Initial */ +.ui.scale.down.left.sidebar ~ .pusher { + -webkit-transform-origin: 75% 50%; + transform-origin: 75% 50%; +} +.ui.scale.down.right.sidebar ~ .pusher { + -webkit-transform-origin: 25% 50%; + transform-origin: 25% 50%; +} +.ui.scale.down.top.sidebar ~ .pusher { + -webkit-transform-origin: 50% 75%; + transform-origin: 50% 75%; +} +.ui.scale.down.bottom.sidebar ~ .pusher { + -webkit-transform-origin: 50% 25%; + transform-origin: 50% 25%; +} + +/* Animation */ +.ui.animating.scale.down > .visible.ui.sidebar { + -webkit-transition: -webkit-transform 500ms ease; + transition: -webkit-transform 500ms ease; + transition: transform 500ms ease; + transition: transform 500ms ease, -webkit-transform 500ms ease; +} +.ui.visible.scale.down.sidebar ~ .pusher, +.ui.animating.scale.down.sidebar ~ .pusher { + display: block !important; + width: 100%; + height: 100%; + overflow: hidden !important; +} + +/* End */ +.ui.visible.scale.down.sidebar { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); +} +.ui.visible.scale.down.sidebar ~ .pusher { + -webkit-transform: scale(0.75); + transform: scale(0.75); +} + + +/******************************* + Theme Overrides +*******************************/ + + + +/******************************* + Site Overrides +*******************************/ + diff --git a/app/static/semantic/components/sidebar.js b/app/static/semantic/components/sidebar.js new file mode 100755 index 0000000..cfdefa1 --- /dev/null +++ b/app/static/semantic/components/sidebar.js @@ -0,0 +1,1033 @@ +/*! + * # Semantic UI 2.4.1 - Sidebar + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */ + +;(function ($, window, document, undefined) { + +'use strict'; + +window = (typeof window != 'undefined' && window.Math == Math) + ? window + : (typeof self != 'undefined' && self.Math == Math) + ? self + : Function('return this')() +; + +$.fn.sidebar = function(parameters) { + var + $allModules = $(this), + $window = $(window), + $document = $(document), + $html = $('html'), + $head = $('head'), + + moduleSelector = $allModules.selector || '', + + time = new Date().getTime(), + performance = [], + + query = arguments[0], + methodInvoked = (typeof query == 'string'), + queryArguments = [].slice.call(arguments, 1), + + requestAnimationFrame = window.requestAnimationFrame + || window.mozRequestAnimationFrame + || window.webkitRequestAnimationFrame + || window.msRequestAnimationFrame + || function(callback) { setTimeout(callback, 0); }, + + returnedValue + ; + + $allModules + .each(function() { + var + settings = ( $.isPlainObject(parameters) ) + ? $.extend(true, {}, $.fn.sidebar.settings, parameters) + : $.extend({}, $.fn.sidebar.settings), + + selector = settings.selector, + className = settings.className, + namespace = settings.namespace, + regExp = settings.regExp, + error = settings.error, + + eventNamespace = '.' + namespace, + moduleNamespace = 'module-' + namespace, + + $module = $(this), + $context = $(settings.context), + + $sidebars = $module.children(selector.sidebar), + $fixed = $context.children(selector.fixed), + $pusher = $context.children(selector.pusher), + $style, + + element = this, + instance = $module.data(moduleNamespace), + + elementNamespace, + id, + currentScroll, + transitionEvent, + + module + ; + + module = { + + initialize: function() { + module.debug('Initializing sidebar', parameters); + + module.create.id(); + + transitionEvent = module.get.transitionEvent(); + + // avoids locking rendering if initialized in onReady + if(settings.delaySetup) { + requestAnimationFrame(module.setup.layout); + } + else { + module.setup.layout(); + } + + requestAnimationFrame(function() { + module.setup.cache(); + }); + + module.instantiate(); + }, + + instantiate: function() { + module.verbose('Storing instance of module', module); + instance = module; + $module + .data(moduleNamespace, module) + ; + }, + + create: { + id: function() { + id = (Math.random().toString(16) + '000000000').substr(2,8); + elementNamespace = '.' + id; + module.verbose('Creating unique id for element', id); + } + }, + + destroy: function() { + module.verbose('Destroying previous module for', $module); + $module + .off(eventNamespace) + .removeData(moduleNamespace) + ; + if(module.is.ios()) { + module.remove.ios(); + } + // bound by uuid + $context.off(elementNamespace); + $window.off(elementNamespace); + $document.off(elementNamespace); + }, + + event: { + clickaway: function(event) { + var + clickedInPusher = ($pusher.find(event.target).length > 0 || $pusher.is(event.target)), + clickedContext = ($context.is(event.target)) + ; + if(clickedInPusher) { + module.verbose('User clicked on dimmed page'); + module.hide(); + } + if(clickedContext) { + module.verbose('User clicked on dimmable context (scaled out page)'); + module.hide(); + } + }, + touch: function(event) { + //event.stopPropagation(); + }, + containScroll: function(event) { + if(element.scrollTop <= 0) { + element.scrollTop = 1; + } + if((element.scrollTop + element.offsetHeight) >= element.scrollHeight) { + element.scrollTop = element.scrollHeight - element.offsetHeight - 1; + } + }, + scroll: function(event) { + if( $(event.target).closest(selector.sidebar).length === 0 ) { + event.preventDefault(); + } + } + }, + + bind: { + clickaway: function() { + module.verbose('Adding clickaway events to context', $context); + if(settings.closable) { + $context + .on('click' + elementNamespace, module.event.clickaway) + .on('touchend' + elementNamespace, module.event.clickaway) + ; + } + }, + scrollLock: function() { + if(settings.scrollLock) { + module.debug('Disabling page scroll'); + $window + .on('DOMMouseScroll' + elementNamespace, module.event.scroll) + ; + } + module.verbose('Adding events to contain sidebar scroll'); + $document + .on('touchmove' + elementNamespace, module.event.touch) + ; + $module + .on('scroll' + eventNamespace, module.event.containScroll) + ; + } + }, + unbind: { + clickaway: function() { + module.verbose('Removing clickaway events from context', $context); + $context.off(elementNamespace); + }, + scrollLock: function() { + module.verbose('Removing scroll lock from page'); + $document.off(elementNamespace); + $window.off(elementNamespace); + $module.off('scroll' + eventNamespace); + } + }, + + add: { + inlineCSS: function() { + var + width = module.cache.width || $module.outerWidth(), + height = module.cache.height || $module.outerHeight(), + isRTL = module.is.rtl(), + direction = module.get.direction(), + distance = { + left : width, + right : -width, + top : height, + bottom : -height + }, + style + ; + + if(isRTL){ + module.verbose('RTL detected, flipping widths'); + distance.left = -width; + distance.right = width; + } + + style = ''; + $style = $(style) + .appendTo($head) + ; + module.debug('Adding sizing css to head', $style); + } + }, + + refresh: function() { + module.verbose('Refreshing selector cache'); + $context = $(settings.context); + $sidebars = $context.children(selector.sidebar); + $pusher = $context.children(selector.pusher); + $fixed = $context.children(selector.fixed); + module.clear.cache(); + }, + + refreshSidebars: function() { + module.verbose('Refreshing other sidebars'); + $sidebars = $context.children(selector.sidebar); + }, + + repaint: function() { + module.verbose('Forcing repaint event'); + element.style.display = 'none'; + var ignored = element.offsetHeight; + element.scrollTop = element.scrollTop; + element.style.display = ''; + }, + + setup: { + cache: function() { + module.cache = { + width : $module.outerWidth(), + height : $module.outerHeight(), + rtl : ($module.css('direction') == 'rtl') + }; + }, + layout: function() { + if( $context.children(selector.pusher).length === 0 ) { + module.debug('Adding wrapper element for sidebar'); + module.error(error.pusher); + $pusher = $('
'); + $context + .children() + .not(selector.omitted) + .not($sidebars) + .wrapAll($pusher) + ; + module.refresh(); + } + if($module.nextAll(selector.pusher).length === 0 || $module.nextAll(selector.pusher)[0] !== $pusher[0]) { + module.debug('Moved sidebar to correct parent element'); + module.error(error.movedSidebar, element); + $module.detach().prependTo($context); + module.refresh(); + } + module.clear.cache(); + module.set.pushable(); + module.set.direction(); + } + }, + + attachEvents: function(selector, event) { + var + $toggle = $(selector) + ; + event = $.isFunction(module[event]) + ? module[event] + : module.toggle + ; + if($toggle.length > 0) { + module.debug('Attaching sidebar events to element', selector, event); + $toggle + .on('click' + eventNamespace, event) + ; + } + else { + module.error(error.notFound, selector); + } + }, + + show: function(callback) { + callback = $.isFunction(callback) + ? callback + : function(){} + ; + if(module.is.hidden()) { + module.refreshSidebars(); + if(settings.overlay) { + module.error(error.overlay); + settings.transition = 'overlay'; + } + module.refresh(); + if(module.othersActive()) { + module.debug('Other sidebars currently visible'); + if(settings.exclusive) { + // if not overlay queue animation after hide + if(settings.transition != 'overlay') { + module.hideOthers(module.show); + return; + } + else { + module.hideOthers(); + } + } + else { + settings.transition = 'overlay'; + } + } + module.pushPage(function() { + callback.call(element); + settings.onShow.call(element); + }); + settings.onChange.call(element); + settings.onVisible.call(element); + } + else { + module.debug('Sidebar is already visible'); + } + }, + + hide: function(callback) { + callback = $.isFunction(callback) + ? callback + : function(){} + ; + if(module.is.visible() || module.is.animating()) { + module.debug('Hiding sidebar', callback); + module.refreshSidebars(); + module.pullPage(function() { + callback.call(element); + settings.onHidden.call(element); + }); + settings.onChange.call(element); + settings.onHide.call(element); + } + }, + + othersAnimating: function() { + return ($sidebars.not($module).filter('.' + className.animating).length > 0); + }, + othersVisible: function() { + return ($sidebars.not($module).filter('.' + className.visible).length > 0); + }, + othersActive: function() { + return(module.othersVisible() || module.othersAnimating()); + }, + + hideOthers: function(callback) { + var + $otherSidebars = $sidebars.not($module).filter('.' + className.visible), + sidebarCount = $otherSidebars.length, + callbackCount = 0 + ; + callback = callback || function(){}; + $otherSidebars + .sidebar('hide', function() { + callbackCount++; + if(callbackCount == sidebarCount) { + callback(); + } + }) + ; + }, + + toggle: function() { + module.verbose('Determining toggled direction'); + if(module.is.hidden()) { + module.show(); + } + else { + module.hide(); + } + }, + + pushPage: function(callback) { + var + transition = module.get.transition(), + $transition = (transition === 'overlay' || module.othersActive()) + ? $module + : $pusher, + animate, + dim, + transitionEnd + ; + callback = $.isFunction(callback) + ? callback + : function(){} + ; + if(settings.transition == 'scale down') { + module.scrollToTop(); + } + module.set.transition(transition); + module.repaint(); + animate = function() { + module.bind.clickaway(); + module.add.inlineCSS(); + module.set.animating(); + module.set.visible(); + }; + dim = function() { + module.set.dimmed(); + }; + transitionEnd = function(event) { + if( event.target == $transition[0] ) { + $transition.off(transitionEvent + elementNamespace, transitionEnd); + module.remove.animating(); + module.bind.scrollLock(); + callback.call(element); + } + }; + $transition.off(transitionEvent + elementNamespace); + $transition.on(transitionEvent + elementNamespace, transitionEnd); + requestAnimationFrame(animate); + if(settings.dimPage && !module.othersVisible()) { + requestAnimationFrame(dim); + } + }, + + pullPage: function(callback) { + var + transition = module.get.transition(), + $transition = (transition == 'overlay' || module.othersActive()) + ? $module + : $pusher, + animate, + transitionEnd + ; + callback = $.isFunction(callback) + ? callback + : function(){} + ; + module.verbose('Removing context push state', module.get.direction()); + + module.unbind.clickaway(); + module.unbind.scrollLock(); + + animate = function() { + module.set.transition(transition); + module.set.animating(); + module.remove.visible(); + if(settings.dimPage && !module.othersVisible()) { + $pusher.removeClass(className.dimmed); + } + }; + transitionEnd = function(event) { + if( event.target == $transition[0] ) { + $transition.off(transitionEvent + elementNamespace, transitionEnd); + module.remove.animating(); + module.remove.transition(); + module.remove.inlineCSS(); + if(transition == 'scale down' || (settings.returnScroll && module.is.mobile()) ) { + module.scrollBack(); + } + callback.call(element); + } + }; + $transition.off(transitionEvent + elementNamespace); + $transition.on(transitionEvent + elementNamespace, transitionEnd); + requestAnimationFrame(animate); + }, + + scrollToTop: function() { + module.verbose('Scrolling to top of page to avoid animation issues'); + currentScroll = $(window).scrollTop(); + $module.scrollTop(0); + window.scrollTo(0, 0); + }, + + scrollBack: function() { + module.verbose('Scrolling back to original page position'); + window.scrollTo(0, currentScroll); + }, + + clear: { + cache: function() { + module.verbose('Clearing cached dimensions'); + module.cache = {}; + } + }, + + set: { + + // ios only (scroll on html not document). This prevent auto-resize canvas/scroll in ios + // (This is no longer necessary in latest iOS) + ios: function() { + $html.addClass(className.ios); + }, + + // container + pushed: function() { + $context.addClass(className.pushed); + }, + pushable: function() { + $context.addClass(className.pushable); + }, + + // pusher + dimmed: function() { + $pusher.addClass(className.dimmed); + }, + + // sidebar + active: function() { + $module.addClass(className.active); + }, + animating: function() { + $module.addClass(className.animating); + }, + transition: function(transition) { + transition = transition || module.get.transition(); + $module.addClass(transition); + }, + direction: function(direction) { + direction = direction || module.get.direction(); + $module.addClass(className[direction]); + }, + visible: function() { + $module.addClass(className.visible); + }, + overlay: function() { + $module.addClass(className.overlay); + } + }, + remove: { + + inlineCSS: function() { + module.debug('Removing inline css styles', $style); + if($style && $style.length > 0) { + $style.remove(); + } + }, + + // ios scroll on html not document + ios: function() { + $html.removeClass(className.ios); + }, + + // context + pushed: function() { + $context.removeClass(className.pushed); + }, + pushable: function() { + $context.removeClass(className.pushable); + }, + + // sidebar + active: function() { + $module.removeClass(className.active); + }, + animating: function() { + $module.removeClass(className.animating); + }, + transition: function(transition) { + transition = transition || module.get.transition(); + $module.removeClass(transition); + }, + direction: function(direction) { + direction = direction || module.get.direction(); + $module.removeClass(className[direction]); + }, + visible: function() { + $module.removeClass(className.visible); + }, + overlay: function() { + $module.removeClass(className.overlay); + } + }, + + get: { + direction: function() { + if($module.hasClass(className.top)) { + return className.top; + } + else if($module.hasClass(className.right)) { + return className.right; + } + else if($module.hasClass(className.bottom)) { + return className.bottom; + } + return className.left; + }, + transition: function() { + var + direction = module.get.direction(), + transition + ; + transition = ( module.is.mobile() ) + ? (settings.mobileTransition == 'auto') + ? settings.defaultTransition.mobile[direction] + : settings.mobileTransition + : (settings.transition == 'auto') + ? settings.defaultTransition.computer[direction] + : settings.transition + ; + module.verbose('Determined transition', transition); + return transition; + }, + transitionEvent: function() { + var + element = document.createElement('element'), + transitions = { + 'transition' :'transitionend', + 'OTransition' :'oTransitionEnd', + 'MozTransition' :'transitionend', + 'WebkitTransition' :'webkitTransitionEnd' + }, + transition + ; + for(transition in transitions){ + if( element.style[transition] !== undefined ){ + return transitions[transition]; + } + } + } + }, + + is: { + + ie: function() { + var + isIE11 = (!(window.ActiveXObject) && 'ActiveXObject' in window), + isIE = ('ActiveXObject' in window) + ; + return (isIE11 || isIE); + }, + + ios: function() { + var + userAgent = navigator.userAgent, + isIOS = userAgent.match(regExp.ios), + isMobileChrome = userAgent.match(regExp.mobileChrome) + ; + if(isIOS && !isMobileChrome) { + module.verbose('Browser was found to be iOS', userAgent); + return true; + } + else { + return false; + } + }, + mobile: function() { + var + userAgent = navigator.userAgent, + isMobile = userAgent.match(regExp.mobile) + ; + if(isMobile) { + module.verbose('Browser was found to be mobile', userAgent); + return true; + } + else { + module.verbose('Browser is not mobile, using regular transition', userAgent); + return false; + } + }, + hidden: function() { + return !module.is.visible(); + }, + visible: function() { + return $module.hasClass(className.visible); + }, + // alias + open: function() { + return module.is.visible(); + }, + closed: function() { + return module.is.hidden(); + }, + vertical: function() { + return $module.hasClass(className.top); + }, + animating: function() { + return $context.hasClass(className.animating); + }, + rtl: function () { + if(module.cache.rtl === undefined) { + module.cache.rtl = ($module.css('direction') == 'rtl'); + } + return module.cache.rtl; + } + }, + + setting: function(name, value) { + module.debug('Changing setting', name, value); + if( $.isPlainObject(name) ) { + $.extend(true, settings, name); + } + else if(value !== undefined) { + if($.isPlainObject(settings[name])) { + $.extend(true, settings[name], value); + } + else { + settings[name] = value; + } + } + else { + return settings[name]; + } + }, + internal: function(name, value) { + if( $.isPlainObject(name) ) { + $.extend(true, module, name); + } + else if(value !== undefined) { + module[name] = value; + } + else { + return module[name]; + } + }, + debug: function() { + if(!settings.silent && settings.debug) { + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':'); + module.debug.apply(console, arguments); + } + } + }, + verbose: function() { + if(!settings.silent && settings.verbose && settings.debug) { + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':'); + module.verbose.apply(console, arguments); + } + } + }, + error: function() { + if(!settings.silent) { + module.error = Function.prototype.bind.call(console.error, console, settings.name + ':'); + module.error.apply(console, arguments); + } + }, + performance: { + log: function(message) { + var + currentTime, + executionTime, + previousTime + ; + if(settings.performance) { + currentTime = new Date().getTime(); + previousTime = time || currentTime; + executionTime = currentTime - previousTime; + time = currentTime; + performance.push({ + 'Name' : message[0], + 'Arguments' : [].slice.call(message, 1) || '', + 'Element' : element, + 'Execution Time' : executionTime + }); + } + clearTimeout(module.performance.timer); + module.performance.timer = setTimeout(module.performance.display, 500); + }, + display: function() { + var + title = settings.name + ':', + totalTime = 0 + ; + time = false; + clearTimeout(module.performance.timer); + $.each(performance, function(index, data) { + totalTime += data['Execution Time']; + }); + title += ' ' + totalTime + 'ms'; + if(moduleSelector) { + title += ' \'' + moduleSelector + '\''; + } + if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { + console.groupCollapsed(title); + if(console.table) { + console.table(performance); + } + else { + $.each(performance, function(index, data) { + console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); + }); + } + console.groupEnd(); + } + performance = []; + } + }, + invoke: function(query, passedArguments, context) { + var + object = instance, + maxDepth, + found, + response + ; + passedArguments = passedArguments || queryArguments; + context = element || context; + if(typeof query == 'string' && object !== undefined) { + query = query.split(/[\. ]/); + maxDepth = query.length - 1; + $.each(query, function(depth, value) { + var camelCaseValue = (depth != maxDepth) + ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) + : query + ; + if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) { + object = object[camelCaseValue]; + } + else if( object[camelCaseValue] !== undefined ) { + found = object[camelCaseValue]; + return false; + } + else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) { + object = object[value]; + } + else if( object[value] !== undefined ) { + found = object[value]; + return false; + } + else { + module.error(error.method, query); + return false; + } + }); + } + if ( $.isFunction( found ) ) { + response = found.apply(context, passedArguments); + } + else if(found !== undefined) { + response = found; + } + if($.isArray(returnedValue)) { + returnedValue.push(response); + } + else if(returnedValue !== undefined) { + returnedValue = [returnedValue, response]; + } + else if(response !== undefined) { + returnedValue = response; + } + return found; + } + } + ; + + if(methodInvoked) { + if(instance === undefined) { + module.initialize(); + } + module.invoke(query); + } + else { + if(instance !== undefined) { + module.invoke('destroy'); + } + module.initialize(); + } + }); + + return (returnedValue !== undefined) + ? returnedValue + : this + ; +}; + +$.fn.sidebar.settings = { + + name : 'Sidebar', + namespace : 'sidebar', + + silent : false, + debug : false, + verbose : false, + performance : true, + + transition : 'auto', + mobileTransition : 'auto', + + defaultTransition : { + computer: { + left : 'uncover', + right : 'uncover', + top : 'overlay', + bottom : 'overlay' + }, + mobile: { + left : 'uncover', + right : 'uncover', + top : 'overlay', + bottom : 'overlay' + } + }, + + context : 'body', + exclusive : false, + closable : true, + dimPage : true, + scrollLock : false, + returnScroll : false, + delaySetup : false, + + duration : 500, + + onChange : function(){}, + onShow : function(){}, + onHide : function(){}, + + onHidden : function(){}, + onVisible : function(){}, + + className : { + active : 'active', + animating : 'animating', + dimmed : 'dimmed', + ios : 'ios', + pushable : 'pushable', + pushed : 'pushed', + right : 'right', + top : 'top', + left : 'left', + bottom : 'bottom', + visible : 'visible' + }, + + selector: { + fixed : '.fixed', + omitted : 'script, link, style, .ui.modal, .ui.dimmer, .ui.nag, .ui.fixed', + pusher : '.pusher', + sidebar : '.ui.sidebar' + }, + + regExp: { + ios : /(iPad|iPhone|iPod)/g, + mobileChrome : /(CriOS)/g, + mobile : /Mobile|iP(hone|od|ad)|Android|BlackBerry|IEMobile|Kindle|NetFront|Silk-Accelerated|(hpw|web)OS|Fennec|Minimo|Opera M(obi|ini)|Blazer|Dolfin|Dolphin|Skyfire|Zune/g + }, + + error : { + method : 'The method you called is not defined.', + pusher : 'Had to add pusher element. For optimal performance make sure body content is inside a pusher element', + movedSidebar : 'Had to move sidebar. For optimal performance make sure sidebar and pusher are direct children of your body tag', + overlay : 'The overlay setting is no longer supported, use animation: overlay', + notFound : 'There were no elements that matched the specified selector' + } + +}; + + +})( jQuery, window, document ); diff --git a/app/static/semantic/components/sidebar.min.css b/app/static/semantic/components/sidebar.min.css new file mode 100755 index 0000000..2abeab6 --- /dev/null +++ b/app/static/semantic/components/sidebar.min.css @@ -0,0 +1,9 @@ +/*! + * # Semantic UI 2.4.0 - Sidebar + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */.ui.sidebar{position:fixed;top:0;left:0;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transition:none;transition:none;will-change:transform;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);visibility:hidden;-webkit-overflow-scrolling:touch;height:100%!important;max-height:100%;border-radius:0!important;margin:0!important;overflow-y:auto!important;z-index:102}.ui.sidebar>*{-webkit-backface-visibility:hidden;backface-visibility:hidden}.ui.left.sidebar{right:auto;left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.ui.right.sidebar{right:0!important;left:auto!important;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.ui.bottom.sidebar,.ui.top.sidebar{width:100%!important;height:auto!important}.ui.top.sidebar{top:0!important;bottom:auto!important;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}.ui.bottom.sidebar{top:auto!important;bottom:0!important;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}.pushable{height:100%;overflow-x:hidden;padding:0!important}body.pushable{background:#545454!important}.pushable:not(body){-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.pushable:not(body)>.fixed,.pushable:not(body)>.pusher:after,.pushable:not(body)>.ui.sidebar{position:absolute}.pushable>.fixed{position:fixed;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transition:-webkit-transform .5s ease;transition:-webkit-transform .5s ease;transition:transform .5s ease;transition:transform .5s ease,-webkit-transform .5s ease;will-change:transform;z-index:101}.pushable>.pusher{position:relative;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;min-height:100%;-webkit-transition:-webkit-transform .5s ease;transition:-webkit-transform .5s ease;transition:transform .5s ease;transition:transform .5s ease,-webkit-transform .5s ease;z-index:2}body.pushable>.pusher{background:#fff}.pushable>.pusher{background:inherit}.pushable>.pusher:after{position:fixed;top:0;right:0;content:'';background-color:rgba(0,0,0,.4);overflow:hidden;opacity:0;-webkit-transition:opacity .5s;transition:opacity .5s;will-change:opacity;z-index:1000}.ui.sidebar.menu .item{border-radius:0!important}.pushable>.pusher.dimmed:after{width:100%!important;height:100%!important;opacity:1!important}.ui.animating.sidebar{visibility:visible}.ui.visible.sidebar{visibility:visible;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.ui.left.visible.sidebar,.ui.right.visible.sidebar{-webkit-box-shadow:0 0 20px rgba(34,36,38,.15);box-shadow:0 0 20px rgba(34,36,38,.15)}.ui.bottom.visible.sidebar,.ui.top.visible.sidebar{-webkit-box-shadow:0 0 20px rgba(34,36,38,.15);box-shadow:0 0 20px rgba(34,36,38,.15)}.ui.visible.left.sidebar~.fixed,.ui.visible.left.sidebar~.pusher{-webkit-transform:translate3d(260px,0,0);transform:translate3d(260px,0,0)}.ui.visible.right.sidebar~.fixed,.ui.visible.right.sidebar~.pusher{-webkit-transform:translate3d(-260px,0,0);transform:translate3d(-260px,0,0)}.ui.visible.top.sidebar~.fixed,.ui.visible.top.sidebar~.pusher{-webkit-transform:translate3d(0,36px,0);transform:translate3d(0,36px,0)}.ui.visible.bottom.sidebar~.fixed,.ui.visible.bottom.sidebar~.pusher{-webkit-transform:translate3d(0,-36px,0);transform:translate3d(0,-36px,0)}.ui.visible.left.sidebar~.ui.visible.right.sidebar~.fixed,.ui.visible.left.sidebar~.ui.visible.right.sidebar~.pusher,.ui.visible.right.sidebar~.ui.visible.left.sidebar~.fixed,.ui.visible.right.sidebar~.ui.visible.left.sidebar~.pusher{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.ui.thin.left.sidebar,.ui.thin.right.sidebar{width:150px}.ui[class*="very thin"].left.sidebar,.ui[class*="very thin"].right.sidebar{width:60px}.ui.left.sidebar,.ui.right.sidebar{width:260px}.ui.wide.left.sidebar,.ui.wide.right.sidebar{width:350px}.ui[class*="very wide"].left.sidebar,.ui[class*="very wide"].right.sidebar{width:475px}.ui.visible.thin.left.sidebar~.fixed,.ui.visible.thin.left.sidebar~.pusher{-webkit-transform:translate3d(150px,0,0);transform:translate3d(150px,0,0)}.ui.visible[class*="very thin"].left.sidebar~.fixed,.ui.visible[class*="very thin"].left.sidebar~.pusher{-webkit-transform:translate3d(60px,0,0);transform:translate3d(60px,0,0)}.ui.visible.wide.left.sidebar~.fixed,.ui.visible.wide.left.sidebar~.pusher{-webkit-transform:translate3d(350px,0,0);transform:translate3d(350px,0,0)}.ui.visible[class*="very wide"].left.sidebar~.fixed,.ui.visible[class*="very wide"].left.sidebar~.pusher{-webkit-transform:translate3d(475px,0,0);transform:translate3d(475px,0,0)}.ui.visible.thin.right.sidebar~.fixed,.ui.visible.thin.right.sidebar~.pusher{-webkit-transform:translate3d(-150px,0,0);transform:translate3d(-150px,0,0)}.ui.visible[class*="very thin"].right.sidebar~.fixed,.ui.visible[class*="very thin"].right.sidebar~.pusher{-webkit-transform:translate3d(-60px,0,0);transform:translate3d(-60px,0,0)}.ui.visible.wide.right.sidebar~.fixed,.ui.visible.wide.right.sidebar~.pusher{-webkit-transform:translate3d(-350px,0,0);transform:translate3d(-350px,0,0)}.ui.visible[class*="very wide"].right.sidebar~.fixed,.ui.visible[class*="very wide"].right.sidebar~.pusher{-webkit-transform:translate3d(-475px,0,0);transform:translate3d(-475px,0,0)}.ui.overlay.sidebar{z-index:102}.ui.left.overlay.sidebar{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.ui.right.overlay.sidebar{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.ui.top.overlay.sidebar{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}.ui.bottom.overlay.sidebar{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}.animating.ui.overlay.sidebar,.ui.visible.overlay.sidebar{-webkit-transition:-webkit-transform .5s ease;transition:-webkit-transform .5s ease;transition:transform .5s ease;transition:transform .5s ease,-webkit-transform .5s ease}.ui.visible.left.overlay.sidebar{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.ui.visible.right.overlay.sidebar{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.ui.visible.top.overlay.sidebar{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.ui.visible.bottom.overlay.sidebar{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.ui.visible.overlay.sidebar~.fixed,.ui.visible.overlay.sidebar~.pusher{-webkit-transform:none!important;transform:none!important}.ui.push.sidebar{-webkit-transition:-webkit-transform .5s ease;transition:-webkit-transform .5s ease;transition:transform .5s ease;transition:transform .5s ease,-webkit-transform .5s ease;z-index:102}.ui.left.push.sidebar{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.ui.right.push.sidebar{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.ui.top.push.sidebar{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}.ui.bottom.push.sidebar{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}.ui.visible.push.sidebar{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.ui.uncover.sidebar{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);z-index:1}.ui.visible.uncover.sidebar{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-webkit-transition:-webkit-transform .5s ease;transition:-webkit-transform .5s ease;transition:transform .5s ease;transition:transform .5s ease,-webkit-transform .5s ease}.ui.slide.along.sidebar{z-index:1}.ui.left.slide.along.sidebar{-webkit-transform:translate3d(-50%,0,0);transform:translate3d(-50%,0,0)}.ui.right.slide.along.sidebar{-webkit-transform:translate3d(50%,0,0);transform:translate3d(50%,0,0)}.ui.top.slide.along.sidebar{-webkit-transform:translate3d(0,-50%,0);transform:translate3d(0,-50%,0)}.ui.bottom.slide.along.sidebar{-webkit-transform:translate3d(0,50%,0);transform:translate3d(0,50%,0)}.ui.animating.slide.along.sidebar{-webkit-transition:-webkit-transform .5s ease;transition:-webkit-transform .5s ease;transition:transform .5s ease;transition:transform .5s ease,-webkit-transform .5s ease}.ui.visible.slide.along.sidebar{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.ui.slide.out.sidebar{z-index:1}.ui.left.slide.out.sidebar{-webkit-transform:translate3d(50%,0,0);transform:translate3d(50%,0,0)}.ui.right.slide.out.sidebar{-webkit-transform:translate3d(-50%,0,0);transform:translate3d(-50%,0,0)}.ui.top.slide.out.sidebar{-webkit-transform:translate3d(0,50%,0);transform:translate3d(0,50%,0)}.ui.bottom.slide.out.sidebar{-webkit-transform:translate3d(0,-50%,0);transform:translate3d(0,-50%,0)}.ui.animating.slide.out.sidebar{-webkit-transition:-webkit-transform .5s ease;transition:-webkit-transform .5s ease;transition:transform .5s ease;transition:transform .5s ease,-webkit-transform .5s ease}.ui.visible.slide.out.sidebar{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.ui.scale.down.sidebar{-webkit-transition:-webkit-transform .5s ease;transition:-webkit-transform .5s ease;transition:transform .5s ease;transition:transform .5s ease,-webkit-transform .5s ease;z-index:102}.ui.left.scale.down.sidebar{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.ui.right.scale.down.sidebar{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.ui.top.scale.down.sidebar{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}.ui.bottom.scale.down.sidebar{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}.ui.scale.down.left.sidebar~.pusher{-webkit-transform-origin:75% 50%;transform-origin:75% 50%}.ui.scale.down.right.sidebar~.pusher{-webkit-transform-origin:25% 50%;transform-origin:25% 50%}.ui.scale.down.top.sidebar~.pusher{-webkit-transform-origin:50% 75%;transform-origin:50% 75%}.ui.scale.down.bottom.sidebar~.pusher{-webkit-transform-origin:50% 25%;transform-origin:50% 25%}.ui.animating.scale.down>.visible.ui.sidebar{-webkit-transition:-webkit-transform .5s ease;transition:-webkit-transform .5s ease;transition:transform .5s ease;transition:transform .5s ease,-webkit-transform .5s ease}.ui.animating.scale.down.sidebar~.pusher,.ui.visible.scale.down.sidebar~.pusher{display:block!important;width:100%;height:100%;overflow:hidden!important}.ui.visible.scale.down.sidebar{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.ui.visible.scale.down.sidebar~.pusher{-webkit-transform:scale(.75);transform:scale(.75)} \ No newline at end of file diff --git a/app/static/semantic/components/sidebar.min.js b/app/static/semantic/components/sidebar.min.js new file mode 100755 index 0000000..3aa8535 --- /dev/null +++ b/app/static/semantic/components/sidebar.min.js @@ -0,0 +1 @@ +!function(D,j,R,z){"use strict";j=void 0!==j&&j.Math==Math?j:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),D.fn.sidebar=function(C){var k,e=D(this),w=D(j),T=D(R),x=D("html"),S=D("head"),A=e.selector||"",F=(new Date).getTime(),O=[],P=C,E="string"==typeof P,H=[].slice.call(arguments,1),M=j.requestAnimationFrame||j.mozRequestAnimationFrame||j.webkitRequestAnimationFrame||j.msRequestAnimationFrame||function(e){setTimeout(e,0)};return e.each(function(){var s,a,e,i,l,c,d=D.isPlainObject(C)?D.extend(!0,{},D.fn.sidebar.settings,C):D.extend({},D.fn.sidebar.settings),n=d.selector,r=d.className,t=d.namespace,o=d.regExp,u=d.error,f="."+t,b="module-"+t,h=D(this),m=D(d.context),g=h.children(n.sidebar),v=(m.children(n.fixed),m.children(n.pusher)),p=this,y=h.data(b);c={initialize:function(){c.debug("Initializing sidebar",C),c.create.id(),l=c.get.transitionEvent(),d.delaySetup?M(c.setup.layout):c.setup.layout(),M(function(){c.setup.cache()}),c.instantiate()},instantiate:function(){c.verbose("Storing instance of module",c),y=c,h.data(b,c)},create:{id:function(){e=(Math.random().toString(16)+"000000000").substr(2,8),a="."+e,c.verbose("Creating unique id for element",e)}},destroy:function(){c.verbose("Destroying previous module for",h),h.off(f).removeData(b),c.is.ios()&&c.remove.ios(),m.off(a),w.off(a),T.off(a)},event:{clickaway:function(e){var i=0=p.scrollHeight&&(p.scrollTop=p.scrollHeight-p.offsetHeight-1)},scroll:function(e){0===D(e.target).closest(n.sidebar).length&&e.preventDefault()}},bind:{clickaway:function(){c.verbose("Adding clickaway events to context",m),d.closable&&m.on("click"+a,c.event.clickaway).on("touchend"+a,c.event.clickaway)},scrollLock:function(){d.scrollLock&&(c.debug("Disabling page scroll"),w.on("DOMMouseScroll"+a,c.event.scroll)),c.verbose("Adding events to contain sidebar scroll"),T.on("touchmove"+a,c.event.touch),h.on("scroll"+f,c.event.containScroll)}},unbind:{clickaway:function(){c.verbose("Removing clickaway events from context",m),m.off(a)},scrollLock:function(){c.verbose("Removing scroll lock from page"),T.off(a),w.off(a),h.off("scroll"+f)}},add:{inlineCSS:function(){var e,i=c.cache.width||h.outerWidth(),n=c.cache.height||h.outerHeight(),t=c.is.rtl(),o=c.get.direction(),r={left:i,right:-i,top:n,bottom:-n};t&&(c.verbose("RTL detected, flipping widths"),r.left=-i,r.right=i),e="").appendTo(S),c.debug("Adding sizing css to head",s)}},refresh:function(){c.verbose("Refreshing selector cache"),m=D(d.context),g=m.children(n.sidebar),v=m.children(n.pusher),m.children(n.fixed),c.clear.cache()},refreshSidebars:function(){c.verbose("Refreshing other sidebars"),g=m.children(n.sidebar)},repaint:function(){c.verbose("Forcing repaint event"),p.style.display="none";p.offsetHeight;p.scrollTop=p.scrollTop,p.style.display=""},setup:{cache:function(){c.cache={width:h.outerWidth(),height:h.outerHeight(),rtl:"rtl"==h.css("direction")}},layout:function(){0===m.children(n.pusher).length&&(c.debug("Adding wrapper element for sidebar"),c.error(u.pusher),v=D('
'),m.children().not(n.omitted).not(g).wrapAll(v),c.refresh()),0!==h.nextAll(n.pusher).length&&h.nextAll(n.pusher)[0]===v[0]||(c.debug("Moved sidebar to correct parent element"),c.error(u.movedSidebar,p),h.detach().prependTo(m),c.refresh()),c.clear.cache(),c.set.pushable(),c.set.direction()}},attachEvents:function(e,i){var n=D(e);i=D.isFunction(c[i])?c[i]:c.toggle,0 0) { + module.verbose('Modifying existing settings', $existingModules); + $existingModules[name]('setting', setting, value); + } + } + } + }); + }, + settings: function(newSettings, modules, modifyExisting) { + modules = (typeof modules === 'string') + ? [modules] + : modules || settings.modules + ; + modifyExisting = (modifyExisting !== undefined) + ? modifyExisting + : true + ; + $.each(modules, function(index, name) { + var + $existingModules + ; + if(module.moduleExists(name)) { + module.verbose('Changing default setting', newSettings, name); + $.extend(true, $.fn[name].settings, newSettings); + if(modifyExisting && namespace) { + $existingModules = $(':data(module-' + namespace + ')'); + if($existingModules.length > 0) { + module.verbose('Modifying existing settings', $existingModules); + $existingModules[name]('setting', newSettings); + } + } + } + }); + } + }, + + enable: { + console: function() { + module.console(true); + }, + debug: function(modules, modifyExisting) { + modules = modules || settings.modules; + module.debug('Enabling debug for modules', modules); + module.change.setting('debug', true, modules, modifyExisting); + }, + verbose: function(modules, modifyExisting) { + modules = modules || settings.modules; + module.debug('Enabling verbose debug for modules', modules); + module.change.setting('verbose', true, modules, modifyExisting); + } + }, + disable: { + console: function() { + module.console(false); + }, + debug: function(modules, modifyExisting) { + modules = modules || settings.modules; + module.debug('Disabling debug for modules', modules); + module.change.setting('debug', false, modules, modifyExisting); + }, + verbose: function(modules, modifyExisting) { + modules = modules || settings.modules; + module.debug('Disabling verbose debug for modules', modules); + module.change.setting('verbose', false, modules, modifyExisting); + } + }, + + console: function(enable) { + if(enable) { + if(instance.cache.console === undefined) { + module.error(error.console); + return; + } + module.debug('Restoring console function'); + window.console = instance.cache.console; + } + else { + module.debug('Disabling console function'); + instance.cache.console = window.console; + window.console = { + clear : function(){}, + error : function(){}, + group : function(){}, + groupCollapsed : function(){}, + groupEnd : function(){}, + info : function(){}, + log : function(){}, + markTimeline : function(){}, + warn : function(){} + }; + } + }, + + destroy: function() { + module.verbose('Destroying previous site for', $module); + $module + .removeData(moduleNamespace) + ; + }, + + cache: {}, + + setting: function(name, value) { + if( $.isPlainObject(name) ) { + $.extend(true, settings, name); + } + else if(value !== undefined) { + settings[name] = value; + } + else { + return settings[name]; + } + }, + internal: function(name, value) { + if( $.isPlainObject(name) ) { + $.extend(true, module, name); + } + else if(value !== undefined) { + module[name] = value; + } + else { + return module[name]; + } + }, + debug: function() { + if(settings.debug) { + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':'); + module.debug.apply(console, arguments); + } + } + }, + verbose: function() { + if(settings.verbose && settings.debug) { + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':'); + module.verbose.apply(console, arguments); + } + } + }, + error: function() { + module.error = Function.prototype.bind.call(console.error, console, settings.name + ':'); + module.error.apply(console, arguments); + }, + performance: { + log: function(message) { + var + currentTime, + executionTime, + previousTime + ; + if(settings.performance) { + currentTime = new Date().getTime(); + previousTime = time || currentTime; + executionTime = currentTime - previousTime; + time = currentTime; + performance.push({ + 'Element' : element, + 'Name' : message[0], + 'Arguments' : [].slice.call(message, 1) || '', + 'Execution Time' : executionTime + }); + } + clearTimeout(module.performance.timer); + module.performance.timer = setTimeout(module.performance.display, 500); + }, + display: function() { + var + title = settings.name + ':', + totalTime = 0 + ; + time = false; + clearTimeout(module.performance.timer); + $.each(performance, function(index, data) { + totalTime += data['Execution Time']; + }); + title += ' ' + totalTime + 'ms'; + if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { + console.groupCollapsed(title); + if(console.table) { + console.table(performance); + } + else { + $.each(performance, function(index, data) { + console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); + }); + } + console.groupEnd(); + } + performance = []; + } + }, + invoke: function(query, passedArguments, context) { + var + object = instance, + maxDepth, + found, + response + ; + passedArguments = passedArguments || queryArguments; + context = element || context; + if(typeof query == 'string' && object !== undefined) { + query = query.split(/[\. ]/); + maxDepth = query.length - 1; + $.each(query, function(depth, value) { + var camelCaseValue = (depth != maxDepth) + ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) + : query + ; + if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) { + object = object[camelCaseValue]; + } + else if( object[camelCaseValue] !== undefined ) { + found = object[camelCaseValue]; + return false; + } + else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) { + object = object[value]; + } + else if( object[value] !== undefined ) { + found = object[value]; + return false; + } + else { + module.error(error.method, query); + return false; + } + }); + } + if ( $.isFunction( found ) ) { + response = found.apply(context, passedArguments); + } + else if(found !== undefined) { + response = found; + } + if($.isArray(returnedValue)) { + returnedValue.push(response); + } + else if(returnedValue !== undefined) { + returnedValue = [returnedValue, response]; + } + else if(response !== undefined) { + returnedValue = response; + } + return found; + } + }; + + if(methodInvoked) { + if(instance === undefined) { + module.initialize(); + } + module.invoke(query); + } + else { + if(instance !== undefined) { + module.destroy(); + } + module.initialize(); + } + return (returnedValue !== undefined) + ? returnedValue + : this + ; +}; + +$.site.settings = { + + name : 'Site', + namespace : 'site', + + error : { + console : 'Console cannot be restored, most likely it was overwritten outside of module', + method : 'The method you called is not defined.' + }, + + debug : false, + verbose : false, + performance : true, + + modules: [ + 'accordion', + 'api', + 'checkbox', + 'dimmer', + 'dropdown', + 'embed', + 'form', + 'modal', + 'nag', + 'popup', + 'rating', + 'shape', + 'sidebar', + 'state', + 'sticky', + 'tab', + 'transition', + 'visit', + 'visibility' + ], + + siteNamespace : 'site', + namespaceStub : { + cache : {}, + config : {}, + sections : {}, + section : {}, + utilities : {} + } + +}; + +// allows for selection of elements with data attributes +$.extend($.expr[ ":" ], { + data: ($.expr.createPseudo) + ? $.expr.createPseudo(function(dataName) { + return function(elem) { + return !!$.data(elem, dataName); + }; + }) + : function(elem, i, match) { + // support: jQuery < 1.8 + return !!$.data(elem, match[ 3 ]); + } +}); + + +})( jQuery, window, document ); diff --git a/app/static/semantic/components/site.min.css b/app/static/semantic/components/site.min.css new file mode 100755 index 0000000..bc2e2ef --- /dev/null +++ b/app/static/semantic/components/site.min.css @@ -0,0 +1,9 @@ +/*! + * # Semantic UI 2.4.1 - Site + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic&subset=latin);body,html{height:100%}html{font-size:14px}body{margin:0;padding:0;overflow-x:hidden;min-width:320px;background:#fff;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-size:14px;line-height:1.4285em;color:rgba(0,0,0,.87);font-smoothing:antialiased}h1,h2,h3,h4,h5{font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;line-height:1.28571429em;margin:calc(2rem - .14285714em) 0 1rem;font-weight:700;padding:0}h1{min-height:1rem;font-size:2rem}h2{font-size:1.71428571rem}h3{font-size:1.28571429rem}h4{font-size:1.07142857rem}h5{font-size:1rem}h1:first-child,h2:first-child,h3:first-child,h4:first-child,h5:first-child{margin-top:0}h1:last-child,h2:last-child,h3:last-child,h4:last-child,h5:last-child{margin-bottom:0}p{margin:0 0 1em;line-height:1.4285em}p:first-child{margin-top:0}p:last-child{margin-bottom:0}a{color:#4183c4;text-decoration:none}a:hover{color:#1e70bf;text-decoration:none}::-webkit-selection{background-color:#cce2ff;color:rgba(0,0,0,.87)}::-moz-selection{background-color:#cce2ff;color:rgba(0,0,0,.87)}::selection{background-color:#cce2ff;color:rgba(0,0,0,.87)}input::-webkit-selection,textarea::-webkit-selection{background-color:rgba(100,100,100,.4);color:rgba(0,0,0,.87)}input::-moz-selection,textarea::-moz-selection{background-color:rgba(100,100,100,.4);color:rgba(0,0,0,.87)}input::selection,textarea::selection{background-color:rgba(100,100,100,.4);color:rgba(0,0,0,.87)}body ::-webkit-scrollbar{-webkit-appearance:none;width:10px;height:10px}body ::-webkit-scrollbar-track{background:rgba(0,0,0,.1);border-radius:0}body ::-webkit-scrollbar-thumb{cursor:pointer;border-radius:5px;background:rgba(0,0,0,.25);-webkit-transition:color .2s ease;transition:color .2s ease}body ::-webkit-scrollbar-thumb:window-inactive{background:rgba(0,0,0,.15)}body ::-webkit-scrollbar-thumb:hover{background:rgba(128,135,139,.8)}body .ui.inverted::-webkit-scrollbar-track{background:rgba(255,255,255,.1)}body .ui.inverted::-webkit-scrollbar-thumb{background:rgba(255,255,255,.25)}body .ui.inverted::-webkit-scrollbar-thumb:window-inactive{background:rgba(255,255,255,.15)}body .ui.inverted::-webkit-scrollbar-thumb:hover{background:rgba(255,255,255,.35)} \ No newline at end of file diff --git a/app/static/semantic/components/site.min.js b/app/static/semantic/components/site.min.js new file mode 100755 index 0000000..263af03 --- /dev/null +++ b/app/static/semantic/components/site.min.js @@ -0,0 +1 @@ +!function(b,p,v,h){b.site=b.fn.site=function(e){var a,c,i=(new Date).getTime(),t=[],n=e,o="string"==typeof n,l=[].slice.call(arguments,1),u=b.isPlainObject(e)?b.extend(!0,{},b.site.settings,e):b.extend({},b.site.settings),s=u.namespace,m=u.error,r="module-"+s,d=b(v),g=this,f=d.data(r);return a={initialize:function(){a.instantiate()},instantiate:function(){a.verbose("Storing instance of site",a),f=a,d.data(r,a)},normalize:function(){a.fix.console(),a.fix.requestAnimationFrame()},fix:{console:function(){a.debug("Normalizing window.console"),console!==h&&console.log!==h||(a.verbose("Console not available, normalizing events"),a.disable.console()),void 0!==console.group&&void 0!==console.groupEnd&&void 0!==console.groupCollapsed||(a.verbose("Console group not available, normalizing events"),p.console.group=function(){},p.console.groupEnd=function(){},p.console.groupCollapsed=function(){}),void 0===console.markTimeline&&(a.verbose("Mark timeline not available, normalizing events"),p.console.markTimeline=function(){})},consoleClear:function(){a.debug("Disabling programmatic console clearing"),p.console.clear=function(){}},requestAnimationFrame:function(){a.debug("Normalizing requestAnimationFrame"),p.requestAnimationFrame===h&&(a.debug("RequestAnimationFrame not available, normalizing event"),p.requestAnimationFrame=p.requestAnimationFrame||p.mozRequestAnimationFrame||p.webkitRequestAnimationFrame||p.msRequestAnimationFrame||function(e){setTimeout(e,0)})}},moduleExists:function(e){return b.fn[e]!==h&&b.fn[e].settings!==h},enabled:{modules:function(e){var o=[];return e=e||u.modules,b.each(e,function(e,n){a.moduleExists(n)&&o.push(n)}),o}},disabled:{modules:function(e){var o=[];return e=e||u.modules,b.each(e,function(e,n){a.moduleExists(n)||o.push(n)}),o}},change:{setting:function(t,s,e,r){e="string"==typeof e?"all"===e?u.modules:[e]:e||u.modules,r=r===h||r,b.each(e,function(e,n){var o,i=!a.moduleExists(n)||(b.fn[n].settings.namespace||!1);a.moduleExists(n)&&(a.verbose("Changing default setting",t,s,n),b.fn[n].settings[t]=s,r&&i&&0<(o=b(":data(module-"+i+")")).length&&(a.verbose("Modifying existing settings",o),o[n]("setting",t,s)))})},settings:function(i,e,t){e="string"==typeof e?[e]:e||u.modules,t=t===h||t,b.each(e,function(e,n){var o;a.moduleExists(n)&&(a.verbose("Changing default setting",i,n),b.extend(!0,b.fn[n].settings,i),t&&s&&0<(o=b(":data(module-"+s+")")).length&&(a.verbose("Modifying existing settings",o),o[n]("setting",i)))})}},enable:{console:function(){a.console(!0)},debug:function(e,n){e=e||u.modules,a.debug("Enabling debug for modules",e),a.change.setting("debug",!0,e,n)},verbose:function(e,n){e=e||u.modules,a.debug("Enabling verbose debug for modules",e),a.change.setting("verbose",!0,e,n)}},disable:{console:function(){a.console(!1)},debug:function(e,n){e=e||u.modules,a.debug("Disabling debug for modules",e),a.change.setting("debug",!1,e,n)},verbose:function(e,n){e=e||u.modules,a.debug("Disabling verbose debug for modules",e),a.change.setting("verbose",!1,e,n)}},console:function(e){if(e){if(f.cache.console===h)return void a.error(m.console);a.debug("Restoring console function"),p.console=f.cache.console}else a.debug("Disabling console function"),f.cache.console=p.console,p.console={clear:function(){},error:function(){},group:function(){},groupCollapsed:function(){},groupEnd:function(){},info:function(){},log:function(){},markTimeline:function(){},warn:function(){}}},destroy:function(){a.verbose("Destroying previous site for",d),d.removeData(r)},cache:{},setting:function(e,n){if(b.isPlainObject(e))b.extend(!0,u,e);else{if(n===h)return u[e];u[e]=n}},internal:function(e,n){if(b.isPlainObject(e))b.extend(!0,a,e);else{if(n===h)return a[e];a[e]=n}},debug:function(){u.debug&&(u.performance?a.performance.log(arguments):(a.debug=Function.prototype.bind.call(console.info,console,u.name+":"),a.debug.apply(console,arguments)))},verbose:function(){u.verbose&&u.debug&&(u.performance?a.performance.log(arguments):(a.verbose=Function.prototype.bind.call(console.info,console,u.name+":"),a.verbose.apply(console,arguments)))},error:function(){a.error=Function.prototype.bind.call(console.error,console,u.name+":"),a.error.apply(console,arguments)},performance:{log:function(e){var n,o;u.performance&&(o=(n=(new Date).getTime())-(i||n),i=n,t.push({Element:g,Name:e[0],Arguments:[].slice.call(e,1)||"","Execution Time":o})),clearTimeout(a.performance.timer),a.performance.timer=setTimeout(a.performance.display,500)},display:function(){var e=u.name+":",o=0;i=!1,clearTimeout(a.performance.timer),b.each(t,function(e,n){o+=n["Execution Time"]}),e+=" "+o+"ms",(console.group!==h||console.table!==h)&&0 0) { + console.groupCollapsed(title); + if(console.table) { + console.table(performance); + } + else { + $.each(performance, function(index, data) { + console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); + }); + } + console.groupEnd(); + } + performance = []; + } + }, + invoke: function(query, passedArguments, context) { + var + object = instance, + maxDepth, + found, + response + ; + passedArguments = passedArguments || queryArguments; + context = element || context; + if(typeof query == 'string' && object !== undefined) { + query = query.split(/[\. ]/); + maxDepth = query.length - 1; + $.each(query, function(depth, value) { + var camelCaseValue = (depth != maxDepth) + ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) + : query + ; + if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) { + object = object[camelCaseValue]; + } + else if( object[camelCaseValue] !== undefined ) { + found = object[camelCaseValue]; + return false; + } + else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) { + object = object[value]; + } + else if( object[value] !== undefined ) { + found = object[value]; + return false; + } + else { + module.error(error.method, query); + return false; + } + }); + } + if ( $.isFunction( found ) ) { + response = found.apply(context, passedArguments); + } + else if(found !== undefined) { + response = found; + } + if($.isArray(returnedValue)) { + returnedValue.push(response); + } + else if(returnedValue !== undefined) { + returnedValue = [returnedValue, response]; + } + else if(response !== undefined) { + returnedValue = response; + } + return found; + } + }; + + if(methodInvoked) { + if(instance === undefined) { + module.initialize(); + } + module.invoke(query); + } + else { + if(instance !== undefined) { + instance.invoke('destroy'); + } + module.initialize(); + } + }) + ; + + return (returnedValue !== undefined) + ? returnedValue + : this + ; +}; + +$.fn.state.settings = { + + // module info + name : 'State', + + // debug output + debug : false, + + // verbose debug output + verbose : false, + + // namespace for events + namespace : 'state', + + // debug data includes performance + performance : true, + + // callback occurs on state change + onActivate : function() {}, + onDeactivate : function() {}, + onChange : function() {}, + + // state test functions + activateTest : function() { return true; }, + deactivateTest : function() { return true; }, + + // whether to automatically map default states + automatic : true, + + // activate / deactivate changes all elements instantiated at same time + sync : false, + + // default flash text duration, used for temporarily changing text of an element + flashDuration : 1000, + + // selector filter + filter : { + text : '.loading, .disabled', + active : '.disabled' + }, + + context : false, + + // error + error: { + beforeSend : 'The before send function has cancelled state change', + method : 'The method you called is not defined.' + }, + + // metadata + metadata: { + promise : 'promise', + storedText : 'stored-text' + }, + + // change class on state + className: { + active : 'active', + disabled : 'disabled', + error : 'error', + loading : 'loading', + success : 'success', + warning : 'warning' + }, + + selector: { + // selector for text node + text: false + }, + + defaults : { + input: { + disabled : true, + loading : true, + active : true + }, + button: { + disabled : true, + loading : true, + active : true, + }, + progress: { + active : true, + success : true, + warning : true, + error : true + } + }, + + states : { + active : true, + disabled : true, + error : true, + loading : true, + success : true, + warning : true + }, + + text : { + disabled : false, + flash : false, + hover : false, + active : false, + inactive : false, + activate : false, + deactivate : false + } + +}; + + + +})( jQuery, window, document ); diff --git a/app/static/semantic/components/state.min.js b/app/static/semantic/components/state.min.js new file mode 100755 index 0000000..d2d4a29 --- /dev/null +++ b/app/static/semantic/components/state.min.js @@ -0,0 +1 @@ +!function(e,t,n,a){"use strict";t=void 0!==t&&t.Math==Math?t:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),e.fn.state=function(t){var i,o=e(this),s=o.selector||"",c=(n.documentElement,(new Date).getTime()),r=[],l=arguments[0],u="string"==typeof l,d=[].slice.call(arguments,1);return o.each(function(){var n,f=e.isPlainObject(t)?e.extend(!0,{},e.fn.state.settings,t):e.extend({},e.fn.state.settings),v=f.error,g=f.metadata,b=f.className,x=f.namespace,h=f.states,m=f.text,p="."+x,T=x+"-module",y=e(this),w=this,C=y.data(T);n={initialize:function(){n.verbose("Initializing module"),f.automatic&&n.add.defaults(),f.context&&""!==s?e(f.context).on(s,"mouseenter"+p,n.change.text).on(s,"mouseleave"+p,n.reset.text).on(s,"click"+p,n.toggle.state):y.on("mouseenter"+p,n.change.text).on("mouseleave"+p,n.reset.text).on("click"+p,n.toggle.state),n.instantiate()},instantiate:function(){n.verbose("Storing instance of module",n),C=n,y.data(T,n)},destroy:function(){n.verbose("Destroying previous module",C),y.off(p).removeData(T)},refresh:function(){n.verbose("Refreshing selector cache"),y=e(w)},add:{defaults:function(){var i=t&&e.isPlainObject(t.states)?t.states:{};e.each(f.defaults,function(t,o){n.is[t]!==a&&n.is[t]()&&(n.verbose("Adding default states",t,w),e.extend(f.states,o,i))})}},is:{active:function(){return y.hasClass(b.active)},loading:function(){return y.hasClass(b.loading)},inactive:function(){return!y.hasClass(b.active)},state:function(e){return b[e]!==a&&y.hasClass(b[e])},enabled:function(){return!y.is(f.filter.active)},disabled:function(){return y.is(f.filter.active)},textEnabled:function(){return!y.is(f.filter.text)},button:function(){return y.is(".button:not(a, .submit)")},input:function(){return y.is("input")},progress:function(){return y.is(".ui.progress")}},allow:function(e){n.debug("Now allowing state",e),h[e]=!0},disallow:function(e){n.debug("No longer allowing",e),h[e]=!1},allows:function(e){return h[e]||!1},enable:function(){y.removeClass(b.disabled)},disable:function(){y.addClass(b.disabled)},setState:function(e){n.allows(e)&&y.addClass(b[e])},removeState:function(e){n.allows(e)&&y.removeClass(b[e])},toggle:{state:function(){var t;if(n.allows("active")&&n.is.enabled()){if(n.refresh(),e.fn.api!==a)if(t=y.api("get request"),y.api("was cancelled"))n.debug("API Request cancelled by beforesend"),f.activateTest=function(){return!1},f.deactivateTest=function(){return!1};else if(t)return void n.listenTo(t);n.change.state()}}},listenTo:function(t){n.debug("API request detected, waiting for state signal",t),t&&(m.loading&&n.update.text(m.loading),e.when(t).then(function(){"resolved"==t.state()?(n.debug("API request succeeded"),f.activateTest=function(){return!0},f.deactivateTest=function(){return!0}):(n.debug("API request failed"),f.activateTest=function(){return!1},f.deactivateTest=function(){return!1}),n.change.state()}))},change:{state:function(){n.debug("Determining state change direction"),n.is.inactive()?n.activate():n.deactivate(),f.sync&&n.sync(),f.onChange.call(w)},text:function(){n.is.textEnabled()&&(n.is.disabled()?(n.verbose("Changing text to disabled text",m.hover),n.update.text(m.disabled)):n.is.active()?m.hover?(n.verbose("Changing text to hover text",m.hover),n.update.text(m.hover)):m.deactivate&&(n.verbose("Changing text to deactivating text",m.deactivate),n.update.text(m.deactivate)):m.hover?(n.verbose("Changing text to hover text",m.hover),n.update.text(m.hover)):m.activate&&(n.verbose("Changing text to activating text",m.activate),n.update.text(m.activate)))}},activate:function(){f.activateTest.call(w)&&(n.debug("Setting state to active"),y.addClass(b.active),n.update.text(m.active),f.onActivate.call(w))},deactivate:function(){f.deactivateTest.call(w)&&(n.debug("Setting state to inactive"),y.removeClass(b.active),n.update.text(m.inactive),f.onDeactivate.call(w))},sync:function(){n.verbose("Syncing other buttons to current state"),n.is.active()?o.not(y).state("activate"):o.not(y).state("deactivate")},get:{text:function(){return f.selector.text?y.find(f.selector.text).text():y.html()},textFor:function(e){return m[e]||!1}},flash:{text:function(e,t,a){var i=n.get.text();n.debug("Flashing text message",e,t),e=e||f.text.flash,t=t||f.flashDuration,a=a||function(){},n.update.text(e),setTimeout(function(){n.update.text(i),a.call(w)},t)}},reset:{text:function(){var e=m.active||y.data(g.storedText),t=m.inactive||y.data(g.storedText);n.is.textEnabled()&&(n.is.active()&&e?(n.verbose("Resetting active text",e),n.update.text(e)):t&&(n.verbose("Resetting inactive text",e),n.update.text(t)))}},update:{text:function(e){var t=n.get.text();e&&e!==t?(n.debug("Updating text",e),f.selector.text?y.data(g.storedText,e).find(f.selector.text).text(e):y.data(g.storedText,e).html(e)):n.debug("Text is already set, ignoring update",e)}},setting:function(t,i){if(n.debug("Changing setting",t,i),e.isPlainObject(t))e.extend(!0,f,t);else{if(i===a)return f[t];e.isPlainObject(f[t])?e.extend(!0,f[t],i):f[t]=i}},internal:function(t,i){if(e.isPlainObject(t))e.extend(!0,n,t);else{if(i===a)return n[t];n[t]=i}},debug:function(){!f.silent&&f.debug&&(f.performance?n.performance.log(arguments):(n.debug=Function.prototype.bind.call(console.info,console,f.name+":"),n.debug.apply(console,arguments)))},verbose:function(){!f.silent&&f.verbose&&f.debug&&(f.performance?n.performance.log(arguments):(n.verbose=Function.prototype.bind.call(console.info,console,f.name+":"),n.verbose.apply(console,arguments)))},error:function(){f.silent||(n.error=Function.prototype.bind.call(console.error,console,f.name+":"),n.error.apply(console,arguments))},performance:{log:function(e){var t,a;f.performance&&(a=(t=(new Date).getTime())-(c||t),c=t,r.push({Name:e[0],Arguments:[].slice.call(e,1)||"",Element:w,"Execution Time":a})),clearTimeout(n.performance.timer),n.performance.timer=setTimeout(n.performance.display,500)},display:function(){var t=f.name+":",i=0;c=!1,clearTimeout(n.performance.timer),e.each(r,function(e,t){i+=t["Execution Time"]}),t+=" "+i+"ms",s&&(t+=" '"+s+"'"),(console.group!==a||console.table!==a)&&r.length>0&&(console.groupCollapsed(t),console.table?console.table(r):e.each(r,function(e,t){console.log(t.Name+": "+t["Execution Time"]+"ms")}),console.groupEnd()),r=[]}},invoke:function(t,o,s){var c,r,l,u=C;return o=o||d,s=w||s,"string"==typeof t&&u!==a&&(t=t.split(/[\. ]/),c=t.length-1,e.each(t,function(i,o){var s=i!=c?o+t[i+1].charAt(0).toUpperCase()+t[i+1].slice(1):t;if(e.isPlainObject(u[s])&&i!=c)u=u[s];else{if(u[s]!==a)return r=u[s],!1;if(!e.isPlainObject(u[o])||i==c)return u[o]!==a?(r=u[o],!1):(n.error(v.method,t),!1);u=u[o]}})),e.isFunction(r)?l=r.apply(s,o):r!==a&&(l=r),e.isArray(i)?i.push(l):i!==a?i=[i,l]:l!==a&&(i=l),r}},u?(C===a&&n.initialize(),n.invoke(l)):(C!==a&&C.invoke("destroy"),n.initialize())}),i!==a?i:this},e.fn.state.settings={name:"State",debug:!1,verbose:!1,namespace:"state",performance:!0,onActivate:function(){},onDeactivate:function(){},onChange:function(){},activateTest:function(){return!0},deactivateTest:function(){return!0},automatic:!0,sync:!1,flashDuration:1e3,filter:{text:".loading, .disabled",active:".disabled"},context:!1,error:{beforeSend:"The before send function has cancelled state change",method:"The method you called is not defined."},metadata:{promise:"promise",storedText:"stored-text"},className:{active:"active",disabled:"disabled",error:"error",loading:"loading",success:"success",warning:"warning"},selector:{text:!1},defaults:{input:{disabled:!0,loading:!0,active:!0},button:{disabled:!0,loading:!0,active:!0},progress:{active:!0,success:!0,warning:!0,error:!0}},states:{active:!0,disabled:!0,error:!0,loading:!0,success:!0,warning:!0},text:{disabled:!1,flash:!1,hover:!1,active:!1,inactive:!1,activate:!1,deactivate:!1}}}(jQuery,window,document); \ No newline at end of file diff --git a/app/static/semantic/components/statistic.css b/app/static/semantic/components/statistic.css new file mode 100755 index 0000000..fb2bb59 --- /dev/null +++ b/app/static/semantic/components/statistic.css @@ -0,0 +1,566 @@ +/*! + * # Semantic UI 2.4.1 - Statistic + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */ + + +/******************************* + Statistic +*******************************/ + + +/* Standalone */ +.ui.statistic { + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + margin: 1em 0em; + max-width: auto; +} +.ui.statistic + .ui.statistic { + margin: 0em 0em 0em 1.5em; +} +.ui.statistic:first-child { + margin-top: 0em; +} +.ui.statistic:last-child { + margin-bottom: 0em; +} + + +/******************************* + Group +*******************************/ + + +/* Grouped */ +.ui.statistics { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start; + -ms-flex-wrap: wrap; + flex-wrap: wrap; +} +.ui.statistics > .statistic { + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-box-flex: 0; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + margin: 0em 1.5em 1em; + max-width: auto; +} +.ui.statistics { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + margin: 1em -1.5em -1em; +} + +/* Clearing */ +.ui.statistics:after { + display: block; + content: ' '; + height: 0px; + clear: both; + overflow: hidden; + visibility: hidden; +} +.ui.statistics:first-child { + margin-top: 0em; +} + + +/******************************* + Content +*******************************/ + + +/*-------------- + Value +---------------*/ + +.ui.statistics .statistic > .value, +.ui.statistic > .value { + font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif; + font-size: 4rem; + font-weight: normal; + line-height: 1em; + color: #1B1C1D; + text-transform: uppercase; + text-align: center; +} + +/*-------------- + Label +---------------*/ + +.ui.statistics .statistic > .label, +.ui.statistic > .label { + font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif; + font-size: 1em; + font-weight: bold; + color: rgba(0, 0, 0, 0.87); + text-transform: uppercase; + text-align: center; +} + +/* Top Label */ +.ui.statistics .statistic > .label ~ .value, +.ui.statistic > .label ~ .value { + margin-top: 0rem; +} + +/* Bottom Label */ +.ui.statistics .statistic > .value ~ .label, +.ui.statistic > .value ~ .label { + margin-top: 0rem; +} + + +/******************************* + Types +*******************************/ + + +/*-------------- + Icon Value +---------------*/ + +.ui.statistics .statistic > .value .icon, +.ui.statistic > .value .icon { + opacity: 1; + width: auto; + margin: 0em; +} + +/*-------------- + Text Value +---------------*/ + +.ui.statistics .statistic > .text.value, +.ui.statistic > .text.value { + line-height: 1em; + min-height: 2em; + font-weight: bold; + text-align: center; +} +.ui.statistics .statistic > .text.value + .label, +.ui.statistic > .text.value + .label { + text-align: center; +} + +/*-------------- + Image Value +---------------*/ + +.ui.statistics .statistic > .value img, +.ui.statistic > .value img { + max-height: 3rem; + vertical-align: baseline; +} + + +/******************************* + Variations +*******************************/ + + +/*-------------- + Count +---------------*/ + +.ui.ten.statistics { + margin: 0em 0em -1em; +} +.ui.ten.statistics .statistic { + min-width: 10%; + margin: 0em 0em 1em; +} +.ui.nine.statistics { + margin: 0em 0em -1em; +} +.ui.nine.statistics .statistic { + min-width: 11.11111111%; + margin: 0em 0em 1em; +} +.ui.eight.statistics { + margin: 0em 0em -1em; +} +.ui.eight.statistics .statistic { + min-width: 12.5%; + margin: 0em 0em 1em; +} +.ui.seven.statistics { + margin: 0em 0em -1em; +} +.ui.seven.statistics .statistic { + min-width: 14.28571429%; + margin: 0em 0em 1em; +} +.ui.six.statistics { + margin: 0em 0em -1em; +} +.ui.six.statistics .statistic { + min-width: 16.66666667%; + margin: 0em 0em 1em; +} +.ui.five.statistics { + margin: 0em 0em -1em; +} +.ui.five.statistics .statistic { + min-width: 20%; + margin: 0em 0em 1em; +} +.ui.four.statistics { + margin: 0em 0em -1em; +} +.ui.four.statistics .statistic { + min-width: 25%; + margin: 0em 0em 1em; +} +.ui.three.statistics { + margin: 0em 0em -1em; +} +.ui.three.statistics .statistic { + min-width: 33.33333333%; + margin: 0em 0em 1em; +} +.ui.two.statistics { + margin: 0em 0em -1em; +} +.ui.two.statistics .statistic { + min-width: 50%; + margin: 0em 0em 1em; +} +.ui.one.statistics { + margin: 0em 0em -1em; +} +.ui.one.statistics .statistic { + min-width: 100%; + margin: 0em 0em 1em; +} + +/*-------------- + Horizontal +---------------*/ + +.ui.horizontal.statistic { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.ui.horizontal.statistics { + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + margin: 0em; + max-width: none; +} +.ui.horizontal.statistics .statistic { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + max-width: none; + margin: 1em 0em; +} +.ui.horizontal.statistic > .text.value, +.ui.horizontal.statistics > .statistic > .text.value { + min-height: 0em !important; +} +.ui.horizontal.statistics .statistic > .value .icon, +.ui.horizontal.statistic > .value .icon { + width: 1.18em; +} +.ui.horizontal.statistics .statistic > .value, +.ui.horizontal.statistic > .value { + display: inline-block; + vertical-align: middle; +} +.ui.horizontal.statistics .statistic > .label, +.ui.horizontal.statistic > .label { + display: inline-block; + vertical-align: middle; + margin: 0em 0em 0em 0.75em; +} + +/*-------------- + Colors +---------------*/ + +.ui.red.statistics .statistic > .value, +.ui.statistics .red.statistic > .value, +.ui.red.statistic > .value { + color: #DB2828; +} +.ui.orange.statistics .statistic > .value, +.ui.statistics .orange.statistic > .value, +.ui.orange.statistic > .value { + color: #F2711C; +} +.ui.yellow.statistics .statistic > .value, +.ui.statistics .yellow.statistic > .value, +.ui.yellow.statistic > .value { + color: #FBBD08; +} +.ui.olive.statistics .statistic > .value, +.ui.statistics .olive.statistic > .value, +.ui.olive.statistic > .value { + color: #B5CC18; +} +.ui.green.statistics .statistic > .value, +.ui.statistics .green.statistic > .value, +.ui.green.statistic > .value { + color: #21BA45; +} +.ui.teal.statistics .statistic > .value, +.ui.statistics .teal.statistic > .value, +.ui.teal.statistic > .value { + color: #00B5AD; +} +.ui.blue.statistics .statistic > .value, +.ui.statistics .blue.statistic > .value, +.ui.blue.statistic > .value { + color: #2185D0; +} +.ui.violet.statistics .statistic > .value, +.ui.statistics .violet.statistic > .value, +.ui.violet.statistic > .value { + color: #6435C9; +} +.ui.purple.statistics .statistic > .value, +.ui.statistics .purple.statistic > .value, +.ui.purple.statistic > .value { + color: #A333C8; +} +.ui.pink.statistics .statistic > .value, +.ui.statistics .pink.statistic > .value, +.ui.pink.statistic > .value { + color: #E03997; +} +.ui.brown.statistics .statistic > .value, +.ui.statistics .brown.statistic > .value, +.ui.brown.statistic > .value { + color: #A5673F; +} +.ui.grey.statistics .statistic > .value, +.ui.statistics .grey.statistic > .value, +.ui.grey.statistic > .value { + color: #767676; +} + +/*-------------- + Inverted +---------------*/ + +.ui.inverted.statistics .statistic > .value, +.ui.inverted.statistic .value { + color: #FFFFFF; +} +.ui.inverted.statistics .statistic > .label, +.ui.inverted.statistic .label { + color: rgba(255, 255, 255, 0.9); +} +.ui.inverted.red.statistics .statistic > .value, +.ui.statistics .inverted.red.statistic > .value, +.ui.inverted.red.statistic > .value { + color: #FF695E; +} +.ui.inverted.orange.statistics .statistic > .value, +.ui.statistics .inverted.orange.statistic > .value, +.ui.inverted.orange.statistic > .value { + color: #FF851B; +} +.ui.inverted.yellow.statistics .statistic > .value, +.ui.statistics .inverted.yellow.statistic > .value, +.ui.inverted.yellow.statistic > .value { + color: #FFE21F; +} +.ui.inverted.olive.statistics .statistic > .value, +.ui.statistics .inverted.olive.statistic > .value, +.ui.inverted.olive.statistic > .value { + color: #D9E778; +} +.ui.inverted.green.statistics .statistic > .value, +.ui.statistics .inverted.green.statistic > .value, +.ui.inverted.green.statistic > .value { + color: #2ECC40; +} +.ui.inverted.teal.statistics .statistic > .value, +.ui.statistics .inverted.teal.statistic > .value, +.ui.inverted.teal.statistic > .value { + color: #6DFFFF; +} +.ui.inverted.blue.statistics .statistic > .value, +.ui.statistics .inverted.blue.statistic > .value, +.ui.inverted.blue.statistic > .value { + color: #54C8FF; +} +.ui.inverted.violet.statistics .statistic > .value, +.ui.statistics .inverted.violet.statistic > .value, +.ui.inverted.violet.statistic > .value { + color: #A291FB; +} +.ui.inverted.purple.statistics .statistic > .value, +.ui.statistics .inverted.purple.statistic > .value, +.ui.inverted.purple.statistic > .value { + color: #DC73FF; +} +.ui.inverted.pink.statistics .statistic > .value, +.ui.statistics .inverted.pink.statistic > .value, +.ui.inverted.pink.statistic > .value { + color: #FF8EDF; +} +.ui.inverted.brown.statistics .statistic > .value, +.ui.statistics .inverted.brown.statistic > .value, +.ui.inverted.brown.statistic > .value { + color: #D67C1C; +} +.ui.inverted.grey.statistics .statistic > .value, +.ui.statistics .inverted.grey.statistic > .value, +.ui.inverted.grey.statistic > .value { + color: #DCDDDE; +} + +/*-------------- + Floated +---------------*/ + +.ui[class*="left floated"].statistic { + float: left; + margin: 0em 2em 1em 0em; +} +.ui[class*="right floated"].statistic { + float: right; + margin: 0em 0em 1em 2em; +} +.ui.floated.statistic:last-child { + margin-bottom: 0em; +} + +/*-------------- + Sizes +---------------*/ + + +/* Mini */ +.ui.mini.statistics .statistic > .value, +.ui.mini.statistic > .value { + font-size: 1.5rem !important; +} +.ui.mini.horizontal.statistics .statistic > .value, +.ui.mini.horizontal.statistic > .value { + font-size: 1.5rem !important; +} +.ui.mini.statistics .statistic > .text.value, +.ui.mini.statistic > .text.value { + font-size: 1rem !important; +} + +/* Tiny */ +.ui.tiny.statistics .statistic > .value, +.ui.tiny.statistic > .value { + font-size: 2rem !important; +} +.ui.tiny.horizontal.statistics .statistic > .value, +.ui.tiny.horizontal.statistic > .value { + font-size: 2rem !important; +} +.ui.tiny.statistics .statistic > .text.value, +.ui.tiny.statistic > .text.value { + font-size: 1rem !important; +} + +/* Small */ +.ui.small.statistics .statistic > .value, +.ui.small.statistic > .value { + font-size: 3rem !important; +} +.ui.small.horizontal.statistics .statistic > .value, +.ui.small.horizontal.statistic > .value { + font-size: 2rem !important; +} +.ui.small.statistics .statistic > .text.value, +.ui.small.statistic > .text.value { + font-size: 1rem !important; +} + +/* Medium */ +.ui.statistics .statistic > .value, +.ui.statistic > .value { + font-size: 4rem !important; +} +.ui.horizontal.statistics .statistic > .value, +.ui.horizontal.statistic > .value { + font-size: 3rem !important; +} +.ui.statistics .statistic > .text.value, +.ui.statistic > .text.value { + font-size: 2rem !important; +} + +/* Large */ +.ui.large.statistics .statistic > .value, +.ui.large.statistic > .value { + font-size: 5rem !important; +} +.ui.large.horizontal.statistics .statistic > .value, +.ui.large.horizontal.statistic > .value { + font-size: 4rem !important; +} +.ui.large.statistics .statistic > .text.value, +.ui.large.statistic > .text.value { + font-size: 2.5rem !important; +} + +/* Huge */ +.ui.huge.statistics .statistic > .value, +.ui.huge.statistic > .value { + font-size: 6rem !important; +} +.ui.huge.horizontal.statistics .statistic > .value, +.ui.huge.horizontal.statistic > .value { + font-size: 5rem !important; +} +.ui.huge.statistics .statistic > .text.value, +.ui.huge.statistic > .text.value { + font-size: 2.5rem !important; +} + + +/******************************* + Theme Overrides +*******************************/ + + + +/******************************* + User Variable Overrides +*******************************/ + diff --git a/app/static/semantic/components/statistic.min.css b/app/static/semantic/components/statistic.min.css new file mode 100755 index 0000000..57c16f4 --- /dev/null +++ b/app/static/semantic/components/statistic.min.css @@ -0,0 +1,9 @@ +/*! + * # Semantic UI 2.4.1 - Statistic + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */.ui.statistic{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin:1em 0;max-width:auto}.ui.statistic+.ui.statistic{margin:0 0 0 1.5em}.ui.statistic:first-child{margin-top:0}.ui.statistic:last-child{margin-bottom:0}.ui.statistics{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-ms-flex-wrap:wrap;flex-wrap:wrap}.ui.statistics>.statistic{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin:0 1.5em 1em;max-width:auto}.ui.statistics{display:-webkit-box;display:-ms-flexbox;display:flex;margin:1em -1.5em -1em}.ui.statistics:after{display:block;content:' ';height:0;clear:both;overflow:hidden;visibility:hidden}.ui.statistics:first-child{margin-top:0}.ui.statistic>.value,.ui.statistics .statistic>.value{font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-size:4rem;font-weight:400;line-height:1em;color:#1b1c1d;text-transform:uppercase;text-align:center}.ui.statistic>.label,.ui.statistics .statistic>.label{font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-size:1em;font-weight:700;color:rgba(0,0,0,.87);text-transform:uppercase;text-align:center}.ui.statistic>.label~.value,.ui.statistics .statistic>.label~.value{margin-top:0}.ui.statistic>.value~.label,.ui.statistics .statistic>.value~.label{margin-top:0}.ui.statistic>.value .icon,.ui.statistics .statistic>.value .icon{opacity:1;width:auto;margin:0}.ui.statistic>.text.value,.ui.statistics .statistic>.text.value{line-height:1em;min-height:2em;font-weight:700;text-align:center}.ui.statistic>.text.value+.label,.ui.statistics .statistic>.text.value+.label{text-align:center}.ui.statistic>.value img,.ui.statistics .statistic>.value img{max-height:3rem;vertical-align:baseline}.ui.ten.statistics{margin:0 0 -1em}.ui.ten.statistics .statistic{min-width:10%;margin:0 0 1em}.ui.nine.statistics{margin:0 0 -1em}.ui.nine.statistics .statistic{min-width:11.11111111%;margin:0 0 1em}.ui.eight.statistics{margin:0 0 -1em}.ui.eight.statistics .statistic{min-width:12.5%;margin:0 0 1em}.ui.seven.statistics{margin:0 0 -1em}.ui.seven.statistics .statistic{min-width:14.28571429%;margin:0 0 1em}.ui.six.statistics{margin:0 0 -1em}.ui.six.statistics .statistic{min-width:16.66666667%;margin:0 0 1em}.ui.five.statistics{margin:0 0 -1em}.ui.five.statistics .statistic{min-width:20%;margin:0 0 1em}.ui.four.statistics{margin:0 0 -1em}.ui.four.statistics .statistic{min-width:25%;margin:0 0 1em}.ui.three.statistics{margin:0 0 -1em}.ui.three.statistics .statistic{min-width:33.33333333%;margin:0 0 1em}.ui.two.statistics{margin:0 0 -1em}.ui.two.statistics .statistic{min-width:50%;margin:0 0 1em}.ui.one.statistics{margin:0 0 -1em}.ui.one.statistics .statistic{min-width:100%;margin:0 0 1em}.ui.horizontal.statistic{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.ui.horizontal.statistics{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin:0;max-width:none}.ui.horizontal.statistics .statistic{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:none;margin:1em 0}.ui.horizontal.statistic>.text.value,.ui.horizontal.statistics>.statistic>.text.value{min-height:0!important}.ui.horizontal.statistic>.value .icon,.ui.horizontal.statistics .statistic>.value .icon{width:1.18em}.ui.horizontal.statistic>.value,.ui.horizontal.statistics .statistic>.value{display:inline-block;vertical-align:middle}.ui.horizontal.statistic>.label,.ui.horizontal.statistics .statistic>.label{display:inline-block;vertical-align:middle;margin:0 0 0 .75em}.ui.red.statistic>.value,.ui.red.statistics .statistic>.value,.ui.statistics .red.statistic>.value{color:#db2828}.ui.orange.statistic>.value,.ui.orange.statistics .statistic>.value,.ui.statistics .orange.statistic>.value{color:#f2711c}.ui.statistics .yellow.statistic>.value,.ui.yellow.statistic>.value,.ui.yellow.statistics .statistic>.value{color:#fbbd08}.ui.olive.statistic>.value,.ui.olive.statistics .statistic>.value,.ui.statistics .olive.statistic>.value{color:#b5cc18}.ui.green.statistic>.value,.ui.green.statistics .statistic>.value,.ui.statistics .green.statistic>.value{color:#21ba45}.ui.statistics .teal.statistic>.value,.ui.teal.statistic>.value,.ui.teal.statistics .statistic>.value{color:#00b5ad}.ui.blue.statistic>.value,.ui.blue.statistics .statistic>.value,.ui.statistics .blue.statistic>.value{color:#2185d0}.ui.statistics .violet.statistic>.value,.ui.violet.statistic>.value,.ui.violet.statistics .statistic>.value{color:#6435c9}.ui.purple.statistic>.value,.ui.purple.statistics .statistic>.value,.ui.statistics .purple.statistic>.value{color:#a333c8}.ui.pink.statistic>.value,.ui.pink.statistics .statistic>.value,.ui.statistics .pink.statistic>.value{color:#e03997}.ui.brown.statistic>.value,.ui.brown.statistics .statistic>.value,.ui.statistics .brown.statistic>.value{color:#a5673f}.ui.grey.statistic>.value,.ui.grey.statistics .statistic>.value,.ui.statistics .grey.statistic>.value{color:#767676}.ui.inverted.statistic .value,.ui.inverted.statistics .statistic>.value{color:#fff}.ui.inverted.statistic .label,.ui.inverted.statistics .statistic>.label{color:rgba(255,255,255,.9)}.ui.inverted.red.statistic>.value,.ui.inverted.red.statistics .statistic>.value,.ui.statistics .inverted.red.statistic>.value{color:#ff695e}.ui.inverted.orange.statistic>.value,.ui.inverted.orange.statistics .statistic>.value,.ui.statistics .inverted.orange.statistic>.value{color:#ff851b}.ui.inverted.yellow.statistic>.value,.ui.inverted.yellow.statistics .statistic>.value,.ui.statistics .inverted.yellow.statistic>.value{color:#ffe21f}.ui.inverted.olive.statistic>.value,.ui.inverted.olive.statistics .statistic>.value,.ui.statistics .inverted.olive.statistic>.value{color:#d9e778}.ui.inverted.green.statistic>.value,.ui.inverted.green.statistics .statistic>.value,.ui.statistics .inverted.green.statistic>.value{color:#2ecc40}.ui.inverted.teal.statistic>.value,.ui.inverted.teal.statistics .statistic>.value,.ui.statistics .inverted.teal.statistic>.value{color:#6dffff}.ui.inverted.blue.statistic>.value,.ui.inverted.blue.statistics .statistic>.value,.ui.statistics .inverted.blue.statistic>.value{color:#54c8ff}.ui.inverted.violet.statistic>.value,.ui.inverted.violet.statistics .statistic>.value,.ui.statistics .inverted.violet.statistic>.value{color:#a291fb}.ui.inverted.purple.statistic>.value,.ui.inverted.purple.statistics .statistic>.value,.ui.statistics .inverted.purple.statistic>.value{color:#dc73ff}.ui.inverted.pink.statistic>.value,.ui.inverted.pink.statistics .statistic>.value,.ui.statistics .inverted.pink.statistic>.value{color:#ff8edf}.ui.inverted.brown.statistic>.value,.ui.inverted.brown.statistics .statistic>.value,.ui.statistics .inverted.brown.statistic>.value{color:#d67c1c}.ui.inverted.grey.statistic>.value,.ui.inverted.grey.statistics .statistic>.value,.ui.statistics .inverted.grey.statistic>.value{color:#dcddde}.ui[class*="left floated"].statistic{float:left;margin:0 2em 1em 0}.ui[class*="right floated"].statistic{float:right;margin:0 0 1em 2em}.ui.floated.statistic:last-child{margin-bottom:0}.ui.mini.statistic>.value,.ui.mini.statistics .statistic>.value{font-size:1.5rem!important}.ui.mini.horizontal.statistic>.value,.ui.mini.horizontal.statistics .statistic>.value{font-size:1.5rem!important}.ui.mini.statistic>.text.value,.ui.mini.statistics .statistic>.text.value{font-size:1rem!important}.ui.tiny.statistic>.value,.ui.tiny.statistics .statistic>.value{font-size:2rem!important}.ui.tiny.horizontal.statistic>.value,.ui.tiny.horizontal.statistics .statistic>.value{font-size:2rem!important}.ui.tiny.statistic>.text.value,.ui.tiny.statistics .statistic>.text.value{font-size:1rem!important}.ui.small.statistic>.value,.ui.small.statistics .statistic>.value{font-size:3rem!important}.ui.small.horizontal.statistic>.value,.ui.small.horizontal.statistics .statistic>.value{font-size:2rem!important}.ui.small.statistic>.text.value,.ui.small.statistics .statistic>.text.value{font-size:1rem!important}.ui.statistic>.value,.ui.statistics .statistic>.value{font-size:4rem!important}.ui.horizontal.statistic>.value,.ui.horizontal.statistics .statistic>.value{font-size:3rem!important}.ui.statistic>.text.value,.ui.statistics .statistic>.text.value{font-size:2rem!important}.ui.large.statistic>.value,.ui.large.statistics .statistic>.value{font-size:5rem!important}.ui.large.horizontal.statistic>.value,.ui.large.horizontal.statistics .statistic>.value{font-size:4rem!important}.ui.large.statistic>.text.value,.ui.large.statistics .statistic>.text.value{font-size:2.5rem!important}.ui.huge.statistic>.value,.ui.huge.statistics .statistic>.value{font-size:6rem!important}.ui.huge.horizontal.statistic>.value,.ui.huge.horizontal.statistics .statistic>.value{font-size:5rem!important}.ui.huge.statistic>.text.value,.ui.huge.statistics .statistic>.text.value{font-size:2.5rem!important} \ No newline at end of file diff --git a/app/static/semantic/components/step.css b/app/static/semantic/components/step.css new file mode 100755 index 0000000..a720b4d --- /dev/null +++ b/app/static/semantic/components/step.css @@ -0,0 +1,626 @@ +/*! + * # Semantic UI 2.4.1 - Step + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */ + + +/******************************* + Plural +*******************************/ + +.ui.steps { + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: stretch; + -ms-flex-align: stretch; + align-items: stretch; + margin: 1em 0em; + background: ''; + -webkit-box-shadow: none; + box-shadow: none; + line-height: 1.14285714em; + border-radius: 0.28571429rem; + border: 1px solid rgba(34, 36, 38, 0.15); +} + +/* First Steps */ +.ui.steps:first-child { + margin-top: 0em; +} + +/* Last Steps */ +.ui.steps:last-child { + margin-bottom: 0em; +} + + +/******************************* + Singular +*******************************/ + +.ui.steps .step { + position: relative; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 1; + -ms-flex: 1 0 auto; + flex: 1 0 auto; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + vertical-align: middle; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + margin: 0em 0em; + padding: 1.14285714em 2em; + background: #FFFFFF; + color: rgba(0, 0, 0, 0.87); + -webkit-box-shadow: none; + box-shadow: none; + border-radius: 0em; + border: none; + border-right: 1px solid rgba(34, 36, 38, 0.15); + -webkit-transition: background-color 0.1s ease, opacity 0.1s ease, color 0.1s ease, -webkit-box-shadow 0.1s ease; + transition: background-color 0.1s ease, opacity 0.1s ease, color 0.1s ease, -webkit-box-shadow 0.1s ease; + transition: background-color 0.1s ease, opacity 0.1s ease, color 0.1s ease, box-shadow 0.1s ease; + transition: background-color 0.1s ease, opacity 0.1s ease, color 0.1s ease, box-shadow 0.1s ease, -webkit-box-shadow 0.1s ease; +} + +/* Arrow */ +.ui.steps .step:after { + display: none; + position: absolute; + z-index: 2; + content: ''; + top: 50%; + right: 0%; + border: medium none; + background-color: #FFFFFF; + width: 1.14285714em; + height: 1.14285714em; + border-style: solid; + border-color: rgba(34, 36, 38, 0.15); + border-width: 0px 1px 1px 0px; + -webkit-transition: background-color 0.1s ease, opacity 0.1s ease, color 0.1s ease, -webkit-box-shadow 0.1s ease; + transition: background-color 0.1s ease, opacity 0.1s ease, color 0.1s ease, -webkit-box-shadow 0.1s ease; + transition: background-color 0.1s ease, opacity 0.1s ease, color 0.1s ease, box-shadow 0.1s ease; + transition: background-color 0.1s ease, opacity 0.1s ease, color 0.1s ease, box-shadow 0.1s ease, -webkit-box-shadow 0.1s ease; + -webkit-transform: translateY(-50%) translateX(50%) rotate(-45deg); + transform: translateY(-50%) translateX(50%) rotate(-45deg); +} + +/* First Step */ +.ui.steps .step:first-child { + padding-left: 2em; + border-radius: 0.28571429rem 0em 0em 0.28571429rem; +} + +/* Last Step */ +.ui.steps .step:last-child { + border-radius: 0em 0.28571429rem 0.28571429rem 0em; +} +.ui.steps .step:last-child { + border-right: none; + margin-right: 0em; +} + +/* Only Step */ +.ui.steps .step:only-child { + border-radius: 0.28571429rem; +} + + +/******************************* + Content +*******************************/ + + +/* Title */ +.ui.steps .step .title { + font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif; + font-size: 1.14285714em; + font-weight: bold; +} +.ui.steps .step > .title { + width: 100%; +} + +/* Description */ +.ui.steps .step .description { + font-weight: normal; + font-size: 0.92857143em; + color: rgba(0, 0, 0, 0.87); +} +.ui.steps .step > .description { + width: 100%; +} +.ui.steps .step .title ~ .description { + margin-top: 0.25em; +} + +/* Icon */ +.ui.steps .step > .icon { + line-height: 1; + font-size: 2.5em; + margin: 0em 1rem 0em 0em; +} +.ui.steps .step > .icon, +.ui.steps .step > .icon ~ .content { + display: block; + -webkit-box-flex: 0; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + -ms-flex-item-align: middle; + align-self: middle; +} +.ui.steps .step > .icon ~ .content { + -webkit-box-flex: 1 0 auto; + -ms-flex-positive: 1 0 auto; + flex-grow: 1 0 auto; +} + +/* Horizontal Icon */ +.ui.steps:not(.vertical) .step > .icon { + width: auto; +} + +/* Link */ +.ui.steps .link.step, +.ui.steps a.step { + cursor: pointer; +} + + +/******************************* + Types +*******************************/ + + +/*-------------- + Ordered +---------------*/ + +.ui.ordered.steps { + counter-reset: ordered; +} +.ui.ordered.steps .step:before { + display: block; + position: static; + text-align: center; + content: counters(ordered, "."); + -ms-flex-item-align: middle; + align-self: middle; + margin-right: 1rem; + font-size: 2.5em; + counter-increment: ordered; + font-family: inherit; + font-weight: bold; +} +.ui.ordered.steps .step > * { + display: block; + -ms-flex-item-align: middle; + align-self: middle; +} + +/*-------------- + Vertical +---------------*/ + +.ui.vertical.steps { + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + overflow: visible; +} +.ui.vertical.steps .step { + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; + border-radius: 0em; + padding: 1.14285714em 2em; + border-right: none; + border-bottom: 1px solid rgba(34, 36, 38, 0.15); +} +.ui.vertical.steps .step:first-child { + padding: 1.14285714em 2em; + border-radius: 0.28571429rem 0.28571429rem 0em 0em; +} +.ui.vertical.steps .step:last-child { + border-bottom: none; + border-radius: 0em 0em 0.28571429rem 0.28571429rem; +} +.ui.vertical.steps .step:only-child { + border-radius: 0.28571429rem; +} + +/* Arrow */ +.ui.vertical.steps .step:after { + display: none; +} +.ui.vertical.steps .step:after { + top: 50%; + right: 0%; + border-width: 0px 1px 1px 0px; +} +.ui.vertical.steps .step:after { + display: none; +} +.ui.vertical.steps .active.step:after { + display: block; +} +.ui.vertical.steps .step:last-child:after { + display: none; +} +.ui.vertical.steps .active.step:last-child:after { + display: block; +} + +/*--------------- + Responsive +----------------*/ + + +/* Mobile (Default) */ +@media only screen and (max-width: 767px) { + .ui.steps:not(.unstackable) { + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; + overflow: visible; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + } + .ui.steps:not(.unstackable) .step { + width: 100% !important; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + border-radius: 0em; + padding: 1.14285714em 2em; + } + .ui.steps:not(.unstackable) .step:first-child { + padding: 1.14285714em 2em; + border-radius: 0.28571429rem 0.28571429rem 0em 0em; + } + .ui.steps:not(.unstackable) .step:last-child { + border-radius: 0em 0em 0.28571429rem 0.28571429rem; + } + +/* Arrow */ + .ui.steps:not(.unstackable) .step:after { + display: none !important; + } + +/* Content */ + .ui.steps:not(.unstackable) .step .content { + text-align: center; + } + +/* Icon */ + .ui.steps:not(.unstackable) .step > .icon, + .ui.ordered.steps:not(.unstackable) .step:before { + margin: 0em 0em 1rem 0em; + } +} + + +/******************************* + States +*******************************/ + + +/* Link Hover */ +.ui.steps .link.step:hover::after, +.ui.steps .link.step:hover, +.ui.steps a.step:hover::after, +.ui.steps a.step:hover { + background: #F9FAFB; + color: rgba(0, 0, 0, 0.8); +} + +/* Link Down */ +.ui.steps .link.step:active::after, +.ui.steps .link.step:active, +.ui.steps a.step:active::after, +.ui.steps a.step:active { + background: #F3F4F5; + color: rgba(0, 0, 0, 0.9); +} + +/* Active */ +.ui.steps .step.active { + cursor: auto; + background: #F3F4F5; +} +.ui.steps .step.active:after { + background: #F3F4F5; +} +.ui.steps .step.active .title { + color: #4183C4; +} +.ui.ordered.steps .step.active:before, +.ui.steps .active.step .icon { + color: rgba(0, 0, 0, 0.85); +} + +/* Active Arrow */ +.ui.steps .step:after { + display: block; +} +.ui.steps .active.step:after { + display: block; +} +.ui.steps .step:last-child:after { + display: none; +} +.ui.steps .active.step:last-child:after { + display: none; +} + +/* Active Hover */ +.ui.steps .link.active.step:hover::after, +.ui.steps .link.active.step:hover, +.ui.steps a.active.step:hover::after, +.ui.steps a.active.step:hover { + cursor: pointer; + background: #DCDDDE; + color: rgba(0, 0, 0, 0.87); +} + +/* Completed */ +.ui.steps .step.completed > .icon:before, +.ui.ordered.steps .step.completed:before { + color: #21BA45; +} + +/* Disabled */ +.ui.steps .disabled.step { + cursor: auto; + background: #FFFFFF; + pointer-events: none; +} +.ui.steps .disabled.step, +.ui.steps .disabled.step .title, +.ui.steps .disabled.step .description { + color: rgba(40, 40, 40, 0.3); +} +.ui.steps .disabled.step:after { + background: #FFFFFF; +} + + +/******************************* + Variations +*******************************/ + + +/*-------------- + Stackable +---------------*/ + + +/* Tablet Or Below */ +@media only screen and (max-width: 991px) { + .ui[class*="tablet stackable"].steps { + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; + overflow: visible; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + } + +/* Steps */ + .ui[class*="tablet stackable"].steps .step { + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + border-radius: 0em; + padding: 1.14285714em 2em; + } + .ui[class*="tablet stackable"].steps .step:first-child { + padding: 1.14285714em 2em; + border-radius: 0.28571429rem 0.28571429rem 0em 0em; + } + .ui[class*="tablet stackable"].steps .step:last-child { + border-radius: 0em 0em 0.28571429rem 0.28571429rem; + } + +/* Arrow */ + .ui[class*="tablet stackable"].steps .step:after { + display: none !important; + } + +/* Content */ + .ui[class*="tablet stackable"].steps .step .content { + text-align: center; + } + +/* Icon */ + .ui[class*="tablet stackable"].steps .step > .icon, + .ui[class*="tablet stackable"].ordered.steps .step:before { + margin: 0em 0em 1rem 0em; + } +} + +/*-------------- + Fluid +---------------*/ + + +/* Fluid */ +.ui.fluid.steps { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + width: 100%; +} + +/*-------------- + Attached +---------------*/ + + +/* Top */ +.ui.attached.steps { + width: calc(100% + (--1px * 2)) !important; + margin: 0em -1px 0; + max-width: calc(100% + (--1px * 2)); + border-radius: 0.28571429rem 0.28571429rem 0em 0em; +} +.ui.attached.steps .step:first-child { + border-radius: 0.28571429rem 0em 0em 0em; +} +.ui.attached.steps .step:last-child { + border-radius: 0em 0.28571429rem 0em 0em; +} + +/* Bottom */ +.ui.bottom.attached.steps { + margin: 0 -1px 0em; + border-radius: 0em 0em 0.28571429rem 0.28571429rem; +} +.ui.bottom.attached.steps .step:first-child { + border-radius: 0em 0em 0em 0.28571429rem; +} +.ui.bottom.attached.steps .step:last-child { + border-radius: 0em 0em 0.28571429rem 0em; +} + +/*------------------- + Evenly Divided +--------------------*/ + +.ui.one.steps, +.ui.two.steps, +.ui.three.steps, +.ui.four.steps, +.ui.five.steps, +.ui.six.steps, +.ui.seven.steps, +.ui.eight.steps { + width: 100%; +} +.ui.one.steps > .step, +.ui.two.steps > .step, +.ui.three.steps > .step, +.ui.four.steps > .step, +.ui.five.steps > .step, +.ui.six.steps > .step, +.ui.seven.steps > .step, +.ui.eight.steps > .step { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; +} +.ui.one.steps > .step { + width: 100%; +} +.ui.two.steps > .step { + width: 50%; +} +.ui.three.steps > .step { + width: 33.333%; +} +.ui.four.steps > .step { + width: 25%; +} +.ui.five.steps > .step { + width: 20%; +} +.ui.six.steps > .step { + width: 16.666%; +} +.ui.seven.steps > .step { + width: 14.285%; +} +.ui.eight.steps > .step { + width: 12.5%; +} + +/*------------------- + Sizes +--------------------*/ + +.ui.mini.steps .step, +.ui.mini.step { + font-size: 0.78571429rem; +} +.ui.tiny.steps .step, +.ui.tiny.step { + font-size: 0.85714286rem; +} +.ui.small.steps .step, +.ui.small.step { + font-size: 0.92857143rem; +} +.ui.steps .step, +.ui.step { + font-size: 1rem; +} +.ui.large.steps .step, +.ui.large.step { + font-size: 1.14285714rem; +} +.ui.big.steps .step, +.ui.big.step { + font-size: 1.28571429rem; +} +.ui.huge.steps .step, +.ui.huge.step { + font-size: 1.42857143rem; +} +.ui.massive.steps .step, +.ui.massive.step { + font-size: 1.71428571rem; +} + + +/******************************* + Theme Overrides +*******************************/ + +@font-face { + font-family: 'Step'; + src: url(data:application/x-font-ttf;charset=utf-8;;base64,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) format('truetype'), url(data:application/font-woff;charset=utf-8;base64,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) format('woff'); +} +.ui.steps .step.completed > .icon:before, +.ui.ordered.steps .step.completed:before { + font-family: 'Step'; + content: '\e800'; + +/* '' */ +} + + +/******************************* + Site Overrides +*******************************/ + diff --git a/app/static/semantic/components/step.min.css b/app/static/semantic/components/step.min.css new file mode 100755 index 0000000..6f82825 --- /dev/null +++ b/app/static/semantic/components/step.min.css @@ -0,0 +1,9 @@ +/*! + * # Semantic UI 2.4.1 - Step + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */.ui.steps{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;margin:1em 0;background:'';-webkit-box-shadow:none;box-shadow:none;line-height:1.14285714em;border-radius:.28571429rem;border:1px solid rgba(34,36,38,.15)}.ui.steps:first-child{margin-top:0}.ui.steps:last-child{margin-bottom:0}.ui.steps .step{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;vertical-align:middle;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin:0 0;padding:1.14285714em 2em;background:#fff;color:rgba(0,0,0,.87);-webkit-box-shadow:none;box-shadow:none;border-radius:0;border:none;border-right:1px solid rgba(34,36,38,.15);-webkit-transition:background-color .1s ease,opacity .1s ease,color .1s ease,-webkit-box-shadow .1s ease;transition:background-color .1s ease,opacity .1s ease,color .1s ease,-webkit-box-shadow .1s ease;transition:background-color .1s ease,opacity .1s ease,color .1s ease,box-shadow .1s ease;transition:background-color .1s ease,opacity .1s ease,color .1s ease,box-shadow .1s ease,-webkit-box-shadow .1s ease}.ui.steps .step:after{display:none;position:absolute;z-index:2;content:'';top:50%;right:0;border:medium none;background-color:#fff;width:1.14285714em;height:1.14285714em;border-style:solid;border-color:rgba(34,36,38,.15);border-width:0 1px 1px 0;-webkit-transition:background-color .1s ease,opacity .1s ease,color .1s ease,-webkit-box-shadow .1s ease;transition:background-color .1s ease,opacity .1s ease,color .1s ease,-webkit-box-shadow .1s ease;transition:background-color .1s ease,opacity .1s ease,color .1s ease,box-shadow .1s ease;transition:background-color .1s ease,opacity .1s ease,color .1s ease,box-shadow .1s ease,-webkit-box-shadow .1s ease;-webkit-transform:translateY(-50%) translateX(50%) rotate(-45deg);transform:translateY(-50%) translateX(50%) rotate(-45deg)}.ui.steps .step:first-child{padding-left:2em;border-radius:.28571429rem 0 0 .28571429rem}.ui.steps .step:last-child{border-radius:0 .28571429rem .28571429rem 0}.ui.steps .step:last-child{border-right:none;margin-right:0}.ui.steps .step:only-child{border-radius:.28571429rem}.ui.steps .step .title{font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-size:1.14285714em;font-weight:700}.ui.steps .step>.title{width:100%}.ui.steps .step .description{font-weight:400;font-size:.92857143em;color:rgba(0,0,0,.87)}.ui.steps .step>.description{width:100%}.ui.steps .step .title~.description{margin-top:.25em}.ui.steps .step>.icon{line-height:1;font-size:2.5em;margin:0 1rem 0 0}.ui.steps .step>.icon,.ui.steps .step>.icon~.content{display:block;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;-ms-flex-item-align:middle;align-self:middle}.ui.steps .step>.icon~.content{-webkit-box-flex:1 0 auto;-ms-flex-positive:1 0 auto;flex-grow:1 0 auto}.ui.steps:not(.vertical) .step>.icon{width:auto}.ui.steps .link.step,.ui.steps a.step{cursor:pointer}.ui.ordered.steps{counter-reset:ordered}.ui.ordered.steps .step:before{display:block;position:static;text-align:center;content:counters(ordered, ".");-ms-flex-item-align:middle;align-self:middle;margin-right:1rem;font-size:2.5em;counter-increment:ordered;font-family:inherit;font-weight:700}.ui.ordered.steps .step>*{display:block;-ms-flex-item-align:middle;align-self:middle}.ui.vertical.steps{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:visible}.ui.vertical.steps .step{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;border-radius:0;padding:1.14285714em 2em;border-right:none;border-bottom:1px solid rgba(34,36,38,.15)}.ui.vertical.steps .step:first-child{padding:1.14285714em 2em;border-radius:.28571429rem .28571429rem 0 0}.ui.vertical.steps .step:last-child{border-bottom:none;border-radius:0 0 .28571429rem .28571429rem}.ui.vertical.steps .step:only-child{border-radius:.28571429rem}.ui.vertical.steps .step:after{display:none}.ui.vertical.steps .step:after{top:50%;right:0;border-width:0 1px 1px 0}.ui.vertical.steps .step:after{display:none}.ui.vertical.steps .active.step:after{display:block}.ui.vertical.steps .step:last-child:after{display:none}.ui.vertical.steps .active.step:last-child:after{display:block}@media only screen and (max-width:767px){.ui.steps:not(.unstackable){display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;overflow:visible;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.ui.steps:not(.unstackable) .step{width:100%!important;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;border-radius:0;padding:1.14285714em 2em}.ui.steps:not(.unstackable) .step:first-child{padding:1.14285714em 2em;border-radius:.28571429rem .28571429rem 0 0}.ui.steps:not(.unstackable) .step:last-child{border-radius:0 0 .28571429rem .28571429rem}.ui.steps:not(.unstackable) .step:after{display:none!important}.ui.steps:not(.unstackable) .step .content{text-align:center}.ui.ordered.steps:not(.unstackable) .step:before,.ui.steps:not(.unstackable) .step>.icon{margin:0 0 1rem 0}}.ui.steps .link.step:hover,.ui.steps .link.step:hover::after,.ui.steps a.step:hover,.ui.steps a.step:hover::after{background:#f9fafb;color:rgba(0,0,0,.8)}.ui.steps .link.step:active,.ui.steps .link.step:active::after,.ui.steps a.step:active,.ui.steps a.step:active::after{background:#f3f4f5;color:rgba(0,0,0,.9)}.ui.steps .step.active{cursor:auto;background:#f3f4f5}.ui.steps .step.active:after{background:#f3f4f5}.ui.steps .step.active .title{color:#4183c4}.ui.ordered.steps .step.active:before,.ui.steps .active.step .icon{color:rgba(0,0,0,.85)}.ui.steps .step:after{display:block}.ui.steps .active.step:after{display:block}.ui.steps .step:last-child:after{display:none}.ui.steps .active.step:last-child:after{display:none}.ui.steps .link.active.step:hover,.ui.steps .link.active.step:hover::after,.ui.steps a.active.step:hover,.ui.steps a.active.step:hover::after{cursor:pointer;background:#dcddde;color:rgba(0,0,0,.87)}.ui.ordered.steps .step.completed:before,.ui.steps .step.completed>.icon:before{color:#21ba45}.ui.steps .disabled.step{cursor:auto;background:#fff;pointer-events:none}.ui.steps .disabled.step,.ui.steps .disabled.step .description,.ui.steps .disabled.step .title{color:rgba(40,40,40,.3)}.ui.steps .disabled.step:after{background:#fff}@media only screen and (max-width:991px){.ui[class*="tablet stackable"].steps{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;overflow:visible;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.ui[class*="tablet stackable"].steps .step{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;border-radius:0;padding:1.14285714em 2em}.ui[class*="tablet stackable"].steps .step:first-child{padding:1.14285714em 2em;border-radius:.28571429rem .28571429rem 0 0}.ui[class*="tablet stackable"].steps .step:last-child{border-radius:0 0 .28571429rem .28571429rem}.ui[class*="tablet stackable"].steps .step:after{display:none!important}.ui[class*="tablet stackable"].steps .step .content{text-align:center}.ui[class*="tablet stackable"].ordered.steps .step:before,.ui[class*="tablet stackable"].steps .step>.icon{margin:0 0 1rem 0}}.ui.fluid.steps{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%}.ui.attached.steps{width:calc(100% + (--1px * 2))!important;margin:0 -1px 0;max-width:calc(100% + (--1px * 2));border-radius:.28571429rem .28571429rem 0 0}.ui.attached.steps .step:first-child{border-radius:.28571429rem 0 0 0}.ui.attached.steps .step:last-child{border-radius:0 .28571429rem 0 0}.ui.bottom.attached.steps{margin:0 -1px 0;border-radius:0 0 .28571429rem .28571429rem}.ui.bottom.attached.steps .step:first-child{border-radius:0 0 0 .28571429rem}.ui.bottom.attached.steps .step:last-child{border-radius:0 0 .28571429rem 0}.ui.eight.steps,.ui.five.steps,.ui.four.steps,.ui.one.steps,.ui.seven.steps,.ui.six.steps,.ui.three.steps,.ui.two.steps{width:100%}.ui.eight.steps>.step,.ui.five.steps>.step,.ui.four.steps>.step,.ui.one.steps>.step,.ui.seven.steps>.step,.ui.six.steps>.step,.ui.three.steps>.step,.ui.two.steps>.step{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.ui.one.steps>.step{width:100%}.ui.two.steps>.step{width:50%}.ui.three.steps>.step{width:33.333%}.ui.four.steps>.step{width:25%}.ui.five.steps>.step{width:20%}.ui.six.steps>.step{width:16.666%}.ui.seven.steps>.step{width:14.285%}.ui.eight.steps>.step{width:12.5%}.ui.mini.step,.ui.mini.steps .step{font-size:.78571429rem}.ui.tiny.step,.ui.tiny.steps .step{font-size:.85714286rem}.ui.small.step,.ui.small.steps .step{font-size:.92857143rem}.ui.step,.ui.steps .step{font-size:1rem}.ui.large.step,.ui.large.steps .step{font-size:1.14285714rem}.ui.big.step,.ui.big.steps .step{font-size:1.28571429rem}.ui.huge.step,.ui.huge.steps .step{font-size:1.42857143rem}.ui.massive.step,.ui.massive.steps .step{font-size:1.71428571rem}@font-face{font-family:Step;src:url(data:application/x-font-ttf;charset=utf-8;;base64,AAEAAAAOAIAAAwBgT1MvMj3hSQEAAADsAAAAVmNtYXDQEhm3AAABRAAAAUpjdnQgBkn/lAAABuwAAAAcZnBnbYoKeDsAAAcIAAAJkWdhc3AAAAAQAAAG5AAAAAhnbHlm32cEdgAAApAAAAC2aGVhZAErPHsAAANIAAAANmhoZWEHUwNNAAADgAAAACRobXR4CykAAAAAA6QAAAAMbG9jYQA4AFsAAAOwAAAACG1heHAApgm8AAADuAAAACBuYW1lzJ0aHAAAA9gAAALNcG9zdK69QJgAAAaoAAAAO3ByZXCSoZr/AAAQnAAAAFYAAQO4AZAABQAIAnoCvAAAAIwCegK8AAAB4AAxAQIAAAIABQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUGZFZABA6ADoAQNS/2oAWgMLAE8AAAABAAAAAAAAAAAAAwAAAAMAAAAcAAEAAAAAAEQAAwABAAAAHAAEACgAAAAGAAQAAQACAADoAf//AAAAAOgA//8AABgBAAEAAAAAAAAAAAEGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAADpAKYABUAHEAZDwEAAQFCAAIBAmoAAQABagAAAGEUFxQDEisBFAcBBiInASY0PwE2Mh8BATYyHwEWA6QP/iAQLBD+6g8PTBAsEKQBbhAsEEwPAhYWEP4gDw8BFhAsEEwQEKUBbxAQTBAAAAH//f+xA18DCwAMABJADwABAQpDAAAACwBEFRMCESsBFA4BIi4CPgEyHgEDWXLG6MhuBnq89Lp+AV51xHR0xOrEdHTEAAAAAAEAAAABAADDeRpdXw889QALA+gAAAAAzzWYjQAAAADPNWBN//3/sQOkAwsAAAAIAAIAAAAAAAAAAQAAA1L/agBaA+gAAP/3A6QAAQAAAAAAAAAAAAAAAAAAAAMD6AAAA+gAAANZAAAAAAAAADgAWwABAAAAAwAWAAEAAAAAAAIABgATAG4AAAAtCZEAAAAAAAAAEgDeAAEAAAAAAAAANQAAAAEAAAAAAAEACAA1AAEAAAAAAAIABwA9AAEAAAAAAAMACABEAAEAAAAAAAQACABMAAEAAAAAAAUACwBUAAEAAAAAAAYACABfAAEAAAAAAAoAKwBnAAEAAAAAAAsAEwCSAAMAAQQJAAAAagClAAMAAQQJAAEAEAEPAAMAAQQJAAIADgEfAAMAAQQJAAMAEAEtAAMAAQQJAAQAEAE9AAMAAQQJAAUAFgFNAAMAAQQJAAYAEAFjAAMAAQQJAAoAVgFzAAMAAQQJAAsAJgHJQ29weXJpZ2h0IChDKSAyMDE0IGJ5IG9yaWdpbmFsIGF1dGhvcnMgQCBmb250ZWxsby5jb21mb250ZWxsb1JlZ3VsYXJmb250ZWxsb2ZvbnRlbGxvVmVyc2lvbiAxLjBmb250ZWxsb0dlbmVyYXRlZCBieSBzdmcydHRmIGZyb20gRm9udGVsbG8gcHJvamVjdC5odHRwOi8vZm9udGVsbG8uY29tAEMAbwBwAHkAcgBpAGcAaAB0ACAAKABDACkAIAAyADAAMQA0ACAAYgB5ACAAbwByAGkAZwBpAG4AYQBsACAAYQB1AHQAaABvAHIAcwAgAEAAIABmAG8AbgB0AGUAbABsAG8ALgBjAG8AbQBmAG8AbgB0AGUAbABsAG8AUgBlAGcAdQBsAGEAcgBmAG8AbgB0AGUAbABsAG8AZgBvAG4AdABlAGwAbABvAFYAZQByAHMAaQBvAG4AIAAxAC4AMABmAG8AbgB0AGUAbABsAG8ARwBlAG4AZQByAGEAdABlAGQAIABiAHkAIABzAHYAZwAyAHQAdABmACAAZgByAG8AbQAgAEYAbwBuAHQAZQBsAGwAbwAgAHAAcgBvAGoAZQBjAHQALgBoAHQAdABwADoALwAvAGYAbwBuAHQAZQBsAGwAbwAuAGMAbwBtAAAAAAIAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAQIBAwljaGVja21hcmsGY2lyY2xlAAAAAAEAAf//AA8AAAAAAAAAAAAAAAAAAAAAADIAMgML/7EDC/+xsAAssCBgZi2wASwgZCCwwFCwBCZasARFW1ghIyEbilggsFBQWCGwQFkbILA4UFghsDhZWSCwCkVhZLAoUFghsApFILAwUFghsDBZGyCwwFBYIGYgiophILAKUFhgGyCwIFBYIbAKYBsgsDZQWCGwNmAbYFlZWRuwACtZWSOwAFBYZVlZLbACLCBFILAEJWFkILAFQ1BYsAUjQrAGI0IbISFZsAFgLbADLCMhIyEgZLEFYkIgsAYjQrIKAAIqISCwBkMgiiCKsAArsTAFJYpRWGBQG2FSWVgjWSEgsEBTWLAAKxshsEBZI7AAUFhlWS2wBCywB0MrsgACAENgQi2wBSywByNCIyCwACNCYbCAYrABYLAEKi2wBiwgIEUgsAJFY7ABRWJgRLABYC2wBywgIEUgsAArI7ECBCVgIEWKI2EgZCCwIFBYIbAAG7AwUFiwIBuwQFlZI7AAUFhlWbADJSNhRESwAWAtsAgssQUFRbABYUQtsAkssAFgICCwCUNKsABQWCCwCSNCWbAKQ0qwAFJYILAKI0JZLbAKLCC4BABiILgEAGOKI2GwC0NgIIpgILALI0IjLbALLEtUWLEHAURZJLANZSN4LbAMLEtRWEtTWLEHAURZGyFZJLATZSN4LbANLLEADENVWLEMDEOwAWFCsAorWbAAQ7ACJUKxCQIlQrEKAiVCsAEWIyCwAyVQWLEBAENgsAQlQoqKIIojYbAJKiEjsAFhIIojYbAJKiEbsQEAQ2CwAiVCsAIlYbAJKiFZsAlDR7AKQ0dgsIBiILACRWOwAUViYLEAABMjRLABQ7AAPrIBAQFDYEItsA4ssQAFRVRYALAMI0IgYLABYbUNDQEACwBCQopgsQ0FK7BtKxsiWS2wDyyxAA4rLbAQLLEBDistsBEssQIOKy2wEiyxAw4rLbATLLEEDistsBQssQUOKy2wFSyxBg4rLbAWLLEHDistsBcssQgOKy2wGCyxCQ4rLbAZLLAIK7EABUVUWACwDCNCIGCwAWG1DQ0BAAsAQkKKYLENBSuwbSsbIlktsBossQAZKy2wGyyxARkrLbAcLLECGSstsB0ssQMZKy2wHiyxBBkrLbAfLLEFGSstsCAssQYZKy2wISyxBxkrLbAiLLEIGSstsCMssQkZKy2wJCwgPLABYC2wJSwgYLANYCBDI7ABYEOwAiVhsAFgsCQqIS2wJiywJSuwJSotsCcsICBHICCwAkVjsAFFYmAjYTgjIIpVWCBHICCwAkVjsAFFYmAjYTgbIVktsCgssQAFRVRYALABFrAnKrABFTAbIlktsCkssAgrsQAFRVRYALABFrAnKrABFTAbIlktsCosIDWwAWAtsCssALADRWOwAUVisAArsAJFY7ABRWKwACuwABa0AAAAAABEPiM4sSoBFSotsCwsIDwgRyCwAkVjsAFFYmCwAENhOC2wLSwuFzwtsC4sIDwgRyCwAkVjsAFFYmCwAENhsAFDYzgtsC8ssQIAFiUgLiBHsAAjQrACJUmKikcjRyNhIFhiGyFZsAEjQrIuAQEVFCotsDAssAAWsAQlsAQlRyNHI2GwBkUrZYouIyAgPIo4LbAxLLAAFrAEJbAEJSAuRyNHI2EgsAQjQrAGRSsgsGBQWCCwQFFYswIgAyAbswImAxpZQkIjILAIQyCKI0cjRyNhI0ZgsARDsIBiYCCwACsgiophILACQ2BkI7ADQ2FkUFiwAkNhG7ADQ2BZsAMlsIBiYSMgILAEJiNGYTgbI7AIQ0awAiWwCENHI0cjYWAgsARDsIBiYCMgsAArI7AEQ2CwACuwBSVhsAUlsIBisAQmYSCwBCVgZCOwAyVgZFBYIRsjIVkjICCwBCYjRmE4WS2wMiywABYgICCwBSYgLkcjRyNhIzw4LbAzLLAAFiCwCCNCICAgRiNHsAArI2E4LbA0LLAAFrADJbACJUcjRyNhsABUWC4gPCMhG7ACJbACJUcjRyNhILAFJbAEJUcjRyNhsAYlsAUlSbACJWGwAUVjIyBYYhshWWOwAUViYCMuIyAgPIo4IyFZLbA1LLAAFiCwCEMgLkcjRyNhIGCwIGBmsIBiIyAgPIo4LbA2LCMgLkawAiVGUlggPFkusSYBFCstsDcsIyAuRrACJUZQWCA8WS6xJgEUKy2wOCwjIC5GsAIlRlJYIDxZIyAuRrACJUZQWCA8WS6xJgEUKy2wOSywMCsjIC5GsAIlRlJYIDxZLrEmARQrLbA6LLAxK4ogIDywBCNCijgjIC5GsAIlRlJYIDxZLrEmARQrsARDLrAmKy2wOyywABawBCWwBCYgLkcjRyNhsAZFKyMgPCAuIzixJgEUKy2wPCyxCAQlQrAAFrAEJbAEJSAuRyNHI2EgsAQjQrAGRSsgsGBQWCCwQFFYswIgAyAbswImAxpZQkIjIEewBEOwgGJgILAAKyCKimEgsAJDYGQjsANDYWRQWLACQ2EbsANDYFmwAyWwgGJhsAIlRmE4IyA8IzgbISAgRiNHsAArI2E4IVmxJgEUKy2wPSywMCsusSYBFCstsD4ssDErISMgIDywBCNCIzixJgEUK7AEQy6wJistsD8ssAAVIEewACNCsgABARUUEy6wLCotsEAssAAVIEewACNCsgABARUUEy6wLCotsEEssQABFBOwLSotsEIssC8qLbBDLLAAFkUjIC4gRoojYTixJgEUKy2wRCywCCNCsEMrLbBFLLIAADwrLbBGLLIAATwrLbBHLLIBADwrLbBILLIBATwrLbBJLLIAAD0rLbBKLLIAAT0rLbBLLLIBAD0rLbBMLLIBAT0rLbBNLLIAADkrLbBOLLIAATkrLbBPLLIBADkrLbBQLLIBATkrLbBRLLIAADsrLbBSLLIAATsrLbBTLLIBADsrLbBULLIBATsrLbBVLLIAAD4rLbBWLLIAAT4rLbBXLLIBAD4rLbBYLLIBAT4rLbBZLLIAADorLbBaLLIAATorLbBbLLIBADorLbBcLLIBATorLbBdLLAyKy6xJgEUKy2wXiywMiuwNistsF8ssDIrsDcrLbBgLLAAFrAyK7A4Ky2wYSywMysusSYBFCstsGIssDMrsDYrLbBjLLAzK7A3Ky2wZCywMyuwOCstsGUssDQrLrEmARQrLbBmLLA0K7A2Ky2wZyywNCuwNystsGgssDQrsDgrLbBpLLA1Ky6xJgEUKy2waiywNSuwNistsGsssDUrsDcrLbBsLLA1K7A4Ky2wbSwrsAhlsAMkUHiwARUwLQAAAEu4AMhSWLEBAY5ZuQgACABjILABI0SwAyNwsgQoCUVSRLIKAgcqsQYBRLEkAYhRWLBAiFixBgNEsSYBiFFYuAQAiFixBgFEWVlZWbgB/4WwBI2xBQBEAAA=) format('truetype'),url(data:application/font-woff;charset=utf-8;base64,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) format('woff')}.ui.ordered.steps .step.completed:before,.ui.steps .step.completed>.icon:before{font-family:Step;content:'\e800'} \ No newline at end of file diff --git a/app/static/semantic/components/sticky.css b/app/static/semantic/components/sticky.css new file mode 100755 index 0000000..19aca17 --- /dev/null +++ b/app/static/semantic/components/sticky.css @@ -0,0 +1,78 @@ +/*! + * # Semantic UI 2.4.0 - Sticky + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */ + + +/******************************* + Sticky +*******************************/ + +.ui.sticky { + position: static; + -webkit-transition: none; + transition: none; + z-index: 800; +} + + +/******************************* + States +*******************************/ + + +/* Bound */ +.ui.sticky.bound { + position: absolute; + left: auto; + right: auto; +} + +/* Fixed */ +.ui.sticky.fixed { + position: fixed; + left: auto; + right: auto; +} + +/* Bound/Fixed Position */ +.ui.sticky.bound.top, +.ui.sticky.fixed.top { + top: 0px; + bottom: auto; +} +.ui.sticky.bound.bottom, +.ui.sticky.fixed.bottom { + top: auto; + bottom: 0px; +} + + +/******************************* + Types +*******************************/ + +.ui.native.sticky { + position: -webkit-sticky; + position: -moz-sticky; + position: -ms-sticky; + position: -o-sticky; + position: sticky; +} + + +/******************************* + Theme Overrides +*******************************/ + + + +/******************************* + Site Overrides +*******************************/ + diff --git a/app/static/semantic/components/sticky.js b/app/static/semantic/components/sticky.js new file mode 100755 index 0000000..6b7773a --- /dev/null +++ b/app/static/semantic/components/sticky.js @@ -0,0 +1,959 @@ +/*! + * # Semantic UI 2.4.1 - Sticky + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */ + +;(function ($, window, document, undefined) { + +'use strict'; + +window = (typeof window != 'undefined' && window.Math == Math) + ? window + : (typeof self != 'undefined' && self.Math == Math) + ? self + : Function('return this')() +; + +$.fn.sticky = function(parameters) { + var + $allModules = $(this), + moduleSelector = $allModules.selector || '', + + time = new Date().getTime(), + performance = [], + + query = arguments[0], + methodInvoked = (typeof query == 'string'), + queryArguments = [].slice.call(arguments, 1), + returnedValue + ; + + $allModules + .each(function() { + var + settings = ( $.isPlainObject(parameters) ) + ? $.extend(true, {}, $.fn.sticky.settings, parameters) + : $.extend({}, $.fn.sticky.settings), + + className = settings.className, + namespace = settings.namespace, + error = settings.error, + + eventNamespace = '.' + namespace, + moduleNamespace = 'module-' + namespace, + + $module = $(this), + $window = $(window), + $scroll = $(settings.scrollContext), + $container, + $context, + + selector = $module.selector || '', + instance = $module.data(moduleNamespace), + + requestAnimationFrame = window.requestAnimationFrame + || window.mozRequestAnimationFrame + || window.webkitRequestAnimationFrame + || window.msRequestAnimationFrame + || function(callback) { setTimeout(callback, 0); }, + + element = this, + + documentObserver, + observer, + module + ; + + module = { + + initialize: function() { + + module.determineContainer(); + module.determineContext(); + module.verbose('Initializing sticky', settings, $container); + + module.save.positions(); + module.checkErrors(); + module.bind.events(); + + if(settings.observeChanges) { + module.observeChanges(); + } + module.instantiate(); + }, + + instantiate: function() { + module.verbose('Storing instance of module', module); + instance = module; + $module + .data(moduleNamespace, module) + ; + }, + + destroy: function() { + module.verbose('Destroying previous instance'); + module.reset(); + if(documentObserver) { + documentObserver.disconnect(); + } + if(observer) { + observer.disconnect(); + } + $window + .off('load' + eventNamespace, module.event.load) + .off('resize' + eventNamespace, module.event.resize) + ; + $scroll + .off('scrollchange' + eventNamespace, module.event.scrollchange) + ; + $module.removeData(moduleNamespace); + }, + + observeChanges: function() { + if('MutationObserver' in window) { + documentObserver = new MutationObserver(module.event.documentChanged); + observer = new MutationObserver(module.event.changed); + documentObserver.observe(document, { + childList : true, + subtree : true + }); + observer.observe(element, { + childList : true, + subtree : true + }); + observer.observe($context[0], { + childList : true, + subtree : true + }); + module.debug('Setting up mutation observer', observer); + } + }, + + determineContainer: function() { + if(settings.container) { + $container = $(settings.container); + } + else { + $container = $module.offsetParent(); + } + }, + + determineContext: function() { + if(settings.context) { + $context = $(settings.context); + } + else { + $context = $container; + } + if($context.length === 0) { + module.error(error.invalidContext, settings.context, $module); + return; + } + }, + + checkErrors: function() { + if( module.is.hidden() ) { + module.error(error.visible, $module); + } + if(module.cache.element.height > module.cache.context.height) { + module.reset(); + module.error(error.elementSize, $module); + return; + } + }, + + bind: { + events: function() { + $window + .on('load' + eventNamespace, module.event.load) + .on('resize' + eventNamespace, module.event.resize) + ; + // pub/sub pattern + $scroll + .off('scroll' + eventNamespace) + .on('scroll' + eventNamespace, module.event.scroll) + .on('scrollchange' + eventNamespace, module.event.scrollchange) + ; + } + }, + + event: { + changed: function(mutations) { + clearTimeout(module.timer); + module.timer = setTimeout(function() { + module.verbose('DOM tree modified, updating sticky menu', mutations); + module.refresh(); + }, 100); + }, + documentChanged: function(mutations) { + [].forEach.call(mutations, function(mutation) { + if(mutation.removedNodes) { + [].forEach.call(mutation.removedNodes, function(node) { + if(node == element || $(node).find(element).length > 0) { + module.debug('Element removed from DOM, tearing down events'); + module.destroy(); + } + }); + } + }); + }, + load: function() { + module.verbose('Page contents finished loading'); + requestAnimationFrame(module.refresh); + }, + resize: function() { + module.verbose('Window resized'); + requestAnimationFrame(module.refresh); + }, + scroll: function() { + requestAnimationFrame(function() { + $scroll.triggerHandler('scrollchange' + eventNamespace, $scroll.scrollTop() ); + }); + }, + scrollchange: function(event, scrollPosition) { + module.stick(scrollPosition); + settings.onScroll.call(element); + } + }, + + refresh: function(hardRefresh) { + module.reset(); + if(!settings.context) { + module.determineContext(); + } + if(hardRefresh) { + module.determineContainer(); + } + module.save.positions(); + module.stick(); + settings.onReposition.call(element); + }, + + supports: { + sticky: function() { + var + $element = $('
'), + element = $element[0] + ; + $element.addClass(className.supported); + return($element.css('position').match('sticky')); + } + }, + + save: { + lastScroll: function(scroll) { + module.lastScroll = scroll; + }, + elementScroll: function(scroll) { + module.elementScroll = scroll; + }, + positions: function() { + var + scrollContext = { + height : $scroll.height() + }, + element = { + margin: { + top : parseInt($module.css('margin-top'), 10), + bottom : parseInt($module.css('margin-bottom'), 10), + }, + offset : $module.offset(), + width : $module.outerWidth(), + height : $module.outerHeight() + }, + context = { + offset : $context.offset(), + height : $context.outerHeight() + }, + container = { + height: $container.outerHeight() + } + ; + if( !module.is.standardScroll() ) { + module.debug('Non-standard scroll. Removing scroll offset from element offset'); + + scrollContext.top = $scroll.scrollTop(); + scrollContext.left = $scroll.scrollLeft(); + + element.offset.top += scrollContext.top; + context.offset.top += scrollContext.top; + element.offset.left += scrollContext.left; + context.offset.left += scrollContext.left; + } + module.cache = { + fits : ( (element.height + settings.offset) <= scrollContext.height), + sameHeight : (element.height == context.height), + scrollContext : { + height : scrollContext.height + }, + element: { + margin : element.margin, + top : element.offset.top - element.margin.top, + left : element.offset.left, + width : element.width, + height : element.height, + bottom : element.offset.top + element.height + }, + context: { + top : context.offset.top, + height : context.height, + bottom : context.offset.top + context.height + } + }; + module.set.containerSize(); + + module.stick(); + module.debug('Caching element positions', module.cache); + } + }, + + get: { + direction: function(scroll) { + var + direction = 'down' + ; + scroll = scroll || $scroll.scrollTop(); + if(module.lastScroll !== undefined) { + if(module.lastScroll < scroll) { + direction = 'down'; + } + else if(module.lastScroll > scroll) { + direction = 'up'; + } + } + return direction; + }, + scrollChange: function(scroll) { + scroll = scroll || $scroll.scrollTop(); + return (module.lastScroll) + ? (scroll - module.lastScroll) + : 0 + ; + }, + currentElementScroll: function() { + if(module.elementScroll) { + return module.elementScroll; + } + return ( module.is.top() ) + ? Math.abs(parseInt($module.css('top'), 10)) || 0 + : Math.abs(parseInt($module.css('bottom'), 10)) || 0 + ; + }, + + elementScroll: function(scroll) { + scroll = scroll || $scroll.scrollTop(); + var + element = module.cache.element, + scrollContext = module.cache.scrollContext, + delta = module.get.scrollChange(scroll), + maxScroll = (element.height - scrollContext.height + settings.offset), + elementScroll = module.get.currentElementScroll(), + possibleScroll = (elementScroll + delta) + ; + if(module.cache.fits || possibleScroll < 0) { + elementScroll = 0; + } + else if(possibleScroll > maxScroll ) { + elementScroll = maxScroll; + } + else { + elementScroll = possibleScroll; + } + return elementScroll; + } + }, + + remove: { + lastScroll: function() { + delete module.lastScroll; + }, + elementScroll: function(scroll) { + delete module.elementScroll; + }, + minimumSize: function() { + $container + .css('min-height', '') + ; + }, + offset: function() { + $module.css('margin-top', ''); + } + }, + + set: { + offset: function() { + module.verbose('Setting offset on element', settings.offset); + $module + .css('margin-top', settings.offset) + ; + }, + containerSize: function() { + var + tagName = $container.get(0).tagName + ; + if(tagName === 'HTML' || tagName == 'body') { + // this can trigger for too many reasons + //module.error(error.container, tagName, $module); + module.determineContainer(); + } + else { + if( Math.abs($container.outerHeight() - module.cache.context.height) > settings.jitter) { + module.debug('Context has padding, specifying exact height for container', module.cache.context.height); + $container.css({ + height: module.cache.context.height + }); + } + } + }, + minimumSize: function() { + var + element = module.cache.element + ; + $container + .css('min-height', element.height) + ; + }, + scroll: function(scroll) { + module.debug('Setting scroll on element', scroll); + if(module.elementScroll == scroll) { + return; + } + if( module.is.top() ) { + $module + .css('bottom', '') + .css('top', -scroll) + ; + } + if( module.is.bottom() ) { + $module + .css('top', '') + .css('bottom', scroll) + ; + } + }, + size: function() { + if(module.cache.element.height !== 0 && module.cache.element.width !== 0) { + element.style.setProperty('width', module.cache.element.width + 'px', 'important'); + element.style.setProperty('height', module.cache.element.height + 'px', 'important'); + } + } + }, + + is: { + standardScroll: function() { + return ($scroll[0] == window); + }, + top: function() { + return $module.hasClass(className.top); + }, + bottom: function() { + return $module.hasClass(className.bottom); + }, + initialPosition: function() { + return (!module.is.fixed() && !module.is.bound()); + }, + hidden: function() { + return (!$module.is(':visible')); + }, + bound: function() { + return $module.hasClass(className.bound); + }, + fixed: function() { + return $module.hasClass(className.fixed); + } + }, + + stick: function(scroll) { + var + cachedPosition = scroll || $scroll.scrollTop(), + cache = module.cache, + fits = cache.fits, + sameHeight = cache.sameHeight, + element = cache.element, + scrollContext = cache.scrollContext, + context = cache.context, + offset = (module.is.bottom() && settings.pushing) + ? settings.bottomOffset + : settings.offset, + scroll = { + top : cachedPosition + offset, + bottom : cachedPosition + offset + scrollContext.height + }, + direction = module.get.direction(scroll.top), + elementScroll = (fits) + ? 0 + : module.get.elementScroll(scroll.top), + + // shorthand + doesntFit = !fits, + elementVisible = (element.height !== 0) + ; + if(elementVisible && !sameHeight) { + + if( module.is.initialPosition() ) { + if(scroll.top >= context.bottom) { + module.debug('Initial element position is bottom of container'); + module.bindBottom(); + } + else if(scroll.top > element.top) { + if( (element.height + scroll.top - elementScroll) >= context.bottom ) { + module.debug('Initial element position is bottom of container'); + module.bindBottom(); + } + else { + module.debug('Initial element position is fixed'); + module.fixTop(); + } + } + + } + else if( module.is.fixed() ) { + + // currently fixed top + if( module.is.top() ) { + if( scroll.top <= element.top ) { + module.debug('Fixed element reached top of container'); + module.setInitialPosition(); + } + else if( (element.height + scroll.top - elementScroll) >= context.bottom ) { + module.debug('Fixed element reached bottom of container'); + module.bindBottom(); + } + // scroll element if larger than screen + else if(doesntFit) { + module.set.scroll(elementScroll); + module.save.lastScroll(scroll.top); + module.save.elementScroll(elementScroll); + } + } + + // currently fixed bottom + else if(module.is.bottom() ) { + + // top edge + if( (scroll.bottom - element.height) <= element.top) { + module.debug('Bottom fixed rail has reached top of container'); + module.setInitialPosition(); + } + // bottom edge + else if(scroll.bottom >= context.bottom) { + module.debug('Bottom fixed rail has reached bottom of container'); + module.bindBottom(); + } + // scroll element if larger than screen + else if(doesntFit) { + module.set.scroll(elementScroll); + module.save.lastScroll(scroll.top); + module.save.elementScroll(elementScroll); + } + + } + } + else if( module.is.bottom() ) { + if( scroll.top <= element.top ) { + module.debug('Jumped from bottom fixed to top fixed, most likely used home/end button'); + module.setInitialPosition(); + } + else { + if(settings.pushing) { + if(module.is.bound() && scroll.bottom <= context.bottom ) { + module.debug('Fixing bottom attached element to bottom of browser.'); + module.fixBottom(); + } + } + else { + if(module.is.bound() && (scroll.top <= context.bottom - element.height) ) { + module.debug('Fixing bottom attached element to top of browser.'); + module.fixTop(); + } + } + } + } + } + }, + + bindTop: function() { + module.debug('Binding element to top of parent container'); + module.remove.offset(); + $module + .css({ + left : '', + top : '', + marginBottom : '' + }) + .removeClass(className.fixed) + .removeClass(className.bottom) + .addClass(className.bound) + .addClass(className.top) + ; + settings.onTop.call(element); + settings.onUnstick.call(element); + }, + bindBottom: function() { + module.debug('Binding element to bottom of parent container'); + module.remove.offset(); + $module + .css({ + left : '', + top : '' + }) + .removeClass(className.fixed) + .removeClass(className.top) + .addClass(className.bound) + .addClass(className.bottom) + ; + settings.onBottom.call(element); + settings.onUnstick.call(element); + }, + + setInitialPosition: function() { + module.debug('Returning to initial position'); + module.unfix(); + module.unbind(); + }, + + + fixTop: function() { + module.debug('Fixing element to top of page'); + if(settings.setSize) { + module.set.size(); + } + module.set.minimumSize(); + module.set.offset(); + $module + .css({ + left : module.cache.element.left, + bottom : '', + marginBottom : '' + }) + .removeClass(className.bound) + .removeClass(className.bottom) + .addClass(className.fixed) + .addClass(className.top) + ; + settings.onStick.call(element); + }, + + fixBottom: function() { + module.debug('Sticking element to bottom of page'); + if(settings.setSize) { + module.set.size(); + } + module.set.minimumSize(); + module.set.offset(); + $module + .css({ + left : module.cache.element.left, + bottom : '', + marginBottom : '' + }) + .removeClass(className.bound) + .removeClass(className.top) + .addClass(className.fixed) + .addClass(className.bottom) + ; + settings.onStick.call(element); + }, + + unbind: function() { + if( module.is.bound() ) { + module.debug('Removing container bound position on element'); + module.remove.offset(); + $module + .removeClass(className.bound) + .removeClass(className.top) + .removeClass(className.bottom) + ; + } + }, + + unfix: function() { + if( module.is.fixed() ) { + module.debug('Removing fixed position on element'); + module.remove.minimumSize(); + module.remove.offset(); + $module + .removeClass(className.fixed) + .removeClass(className.top) + .removeClass(className.bottom) + ; + settings.onUnstick.call(element); + } + }, + + reset: function() { + module.debug('Resetting elements position'); + module.unbind(); + module.unfix(); + module.resetCSS(); + module.remove.offset(); + module.remove.lastScroll(); + }, + + resetCSS: function() { + $module + .css({ + width : '', + height : '' + }) + ; + $container + .css({ + height: '' + }) + ; + }, + + setting: function(name, value) { + if( $.isPlainObject(name) ) { + $.extend(true, settings, name); + } + else if(value !== undefined) { + settings[name] = value; + } + else { + return settings[name]; + } + }, + internal: function(name, value) { + if( $.isPlainObject(name) ) { + $.extend(true, module, name); + } + else if(value !== undefined) { + module[name] = value; + } + else { + return module[name]; + } + }, + debug: function() { + if(!settings.silent && settings.debug) { + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':'); + module.debug.apply(console, arguments); + } + } + }, + verbose: function() { + if(!settings.silent && settings.verbose && settings.debug) { + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':'); + module.verbose.apply(console, arguments); + } + } + }, + error: function() { + if(!settings.silent) { + module.error = Function.prototype.bind.call(console.error, console, settings.name + ':'); + module.error.apply(console, arguments); + } + }, + performance: { + log: function(message) { + var + currentTime, + executionTime, + previousTime + ; + if(settings.performance) { + currentTime = new Date().getTime(); + previousTime = time || currentTime; + executionTime = currentTime - previousTime; + time = currentTime; + performance.push({ + 'Name' : message[0], + 'Arguments' : [].slice.call(message, 1) || '', + 'Element' : element, + 'Execution Time' : executionTime + }); + } + clearTimeout(module.performance.timer); + module.performance.timer = setTimeout(module.performance.display, 0); + }, + display: function() { + var + title = settings.name + ':', + totalTime = 0 + ; + time = false; + clearTimeout(module.performance.timer); + $.each(performance, function(index, data) { + totalTime += data['Execution Time']; + }); + title += ' ' + totalTime + 'ms'; + if(moduleSelector) { + title += ' \'' + moduleSelector + '\''; + } + if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { + console.groupCollapsed(title); + if(console.table) { + console.table(performance); + } + else { + $.each(performance, function(index, data) { + console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); + }); + } + console.groupEnd(); + } + performance = []; + } + }, + invoke: function(query, passedArguments, context) { + var + object = instance, + maxDepth, + found, + response + ; + passedArguments = passedArguments || queryArguments; + context = element || context; + if(typeof query == 'string' && object !== undefined) { + query = query.split(/[\. ]/); + maxDepth = query.length - 1; + $.each(query, function(depth, value) { + var camelCaseValue = (depth != maxDepth) + ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) + : query + ; + if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) { + object = object[camelCaseValue]; + } + else if( object[camelCaseValue] !== undefined ) { + found = object[camelCaseValue]; + return false; + } + else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) { + object = object[value]; + } + else if( object[value] !== undefined ) { + found = object[value]; + return false; + } + else { + return false; + } + }); + } + if ( $.isFunction( found ) ) { + response = found.apply(context, passedArguments); + } + else if(found !== undefined) { + response = found; + } + if($.isArray(returnedValue)) { + returnedValue.push(response); + } + else if(returnedValue !== undefined) { + returnedValue = [returnedValue, response]; + } + else if(response !== undefined) { + returnedValue = response; + } + return found; + } + }; + + if(methodInvoked) { + if(instance === undefined) { + module.initialize(); + } + module.invoke(query); + } + else { + if(instance !== undefined) { + instance.invoke('destroy'); + } + module.initialize(); + } + }) + ; + + return (returnedValue !== undefined) + ? returnedValue + : this + ; +}; + +$.fn.sticky.settings = { + + name : 'Sticky', + namespace : 'sticky', + + silent : false, + debug : false, + verbose : true, + performance : true, + + // whether to stick in the opposite direction on scroll up + pushing : false, + + context : false, + container : false, + + // Context to watch scroll events + scrollContext : window, + + // Offset to adjust scroll + offset : 0, + + // Offset to adjust scroll when attached to bottom of screen + bottomOffset : 0, + + // will only set container height if difference between context and container is larger than this number + jitter : 5, + + // set width of sticky element when it is fixed to page (used to make sure 100% width is maintained if no fixed size set) + setSize : true, + + // Whether to automatically observe changes with Mutation Observers + observeChanges : false, + + // Called when position is recalculated + onReposition : function(){}, + + // Called on each scroll + onScroll : function(){}, + + // Called when element is stuck to viewport + onStick : function(){}, + + // Called when element is unstuck from viewport + onUnstick : function(){}, + + // Called when element reaches top of context + onTop : function(){}, + + // Called when element reaches bottom of context + onBottom : function(){}, + + error : { + container : 'Sticky element must be inside a relative container', + visible : 'Element is hidden, you must call refresh after element becomes visible. Use silent setting to surpress this warning in production.', + method : 'The method you called is not defined.', + invalidContext : 'Context specified does not exist', + elementSize : 'Sticky element is larger than its container, cannot create sticky.' + }, + + className : { + bound : 'bound', + fixed : 'fixed', + supported : 'native', + top : 'top', + bottom : 'bottom' + } + +}; + +})( jQuery, window, document ); diff --git a/app/static/semantic/components/sticky.min.css b/app/static/semantic/components/sticky.min.css new file mode 100755 index 0000000..2fcb95b --- /dev/null +++ b/app/static/semantic/components/sticky.min.css @@ -0,0 +1,9 @@ +/*! + * # Semantic UI 2.4.0 - Sticky + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */.ui.sticky{position:static;-webkit-transition:none;transition:none;z-index:800}.ui.sticky.bound{position:absolute;left:auto;right:auto}.ui.sticky.fixed{position:fixed;left:auto;right:auto}.ui.sticky.bound.top,.ui.sticky.fixed.top{top:0;bottom:auto}.ui.sticky.bound.bottom,.ui.sticky.fixed.bottom{top:auto;bottom:0}.ui.native.sticky{position:-webkit-sticky;position:-moz-sticky;position:-ms-sticky;position:-o-sticky;position:sticky} \ No newline at end of file diff --git a/app/static/semantic/components/sticky.min.js b/app/static/semantic/components/sticky.min.js new file mode 100755 index 0000000..cf831ca --- /dev/null +++ b/app/static/semantic/components/sticky.min.js @@ -0,0 +1 @@ +!function(T,w,B,P){"use strict";w=void 0!==w&&w.Math==Math?w:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),T.fn.sticky=function(b){var v,e=T(this),x=e.selector||"",C=(new Date).getTime(),S=[],y=b,k="string"==typeof y,z=[].slice.call(arguments,1);return e.each(function(){var n,i,e,t,m,u=T.isPlainObject(b)?T.extend(!0,{},T.fn.sticky.settings,b):T.extend({},T.fn.sticky.settings),o=u.className,s=u.namespace,r=u.error,c="."+s,l="module-"+s,a=T(this),f=T(w),d=T(u.scrollContext),h=(a.selector,a.data(l)),g=w.requestAnimationFrame||w.mozRequestAnimationFrame||w.webkitRequestAnimationFrame||w.msRequestAnimationFrame||function(e){setTimeout(e,0)},p=this;m={initialize:function(){m.determineContainer(),m.determineContext(),m.verbose("Initializing sticky",u,n),m.save.positions(),m.checkErrors(),m.bind.events(),u.observeChanges&&m.observeChanges(),m.instantiate()},instantiate:function(){m.verbose("Storing instance of module",m),h=m,a.data(l,m)},destroy:function(){m.verbose("Destroying previous instance"),m.reset(),e&&e.disconnect(),t&&t.disconnect(),f.off("load"+c,m.event.load).off("resize"+c,m.event.resize),d.off("scrollchange"+c,m.event.scrollchange),a.removeData(l)},observeChanges:function(){"MutationObserver"in w&&(e=new MutationObserver(m.event.documentChanged),t=new MutationObserver(m.event.changed),e.observe(B,{childList:!0,subtree:!0}),t.observe(p,{childList:!0,subtree:!0}),t.observe(i[0],{childList:!0,subtree:!0}),m.debug("Setting up mutation observer",t))},determineContainer:function(){n=u.container?T(u.container):a.offsetParent()},determineContext:function(){0!==(i=u.context?T(u.context):n).length||m.error(r.invalidContext,u.context,a)},checkErrors:function(){if(m.is.hidden()&&m.error(r.visible,a),m.cache.element.height>m.cache.context.height)return m.reset(),void m.error(r.elementSize,a)},bind:{events:function(){f.on("load"+c,m.event.load).on("resize"+c,m.event.resize),d.off("scroll"+c).on("scroll"+c,m.event.scroll).on("scrollchange"+c,m.event.scrollchange)}},event:{changed:function(e){clearTimeout(m.timer),m.timer=setTimeout(function(){m.verbose("DOM tree modified, updating sticky menu",e),m.refresh()},100)},documentChanged:function(e){[].forEach.call(e,function(e){e.removedNodes&&[].forEach.call(e.removedNodes,function(e){(e==p||0");e[0];return e.addClass(o.supported),e.css("position").match("sticky")}},save:{lastScroll:function(e){m.lastScroll=e},elementScroll:function(e){m.elementScroll=e},positions:function(){var e={height:d.height()},t={margin:{top:parseInt(a.css("margin-top"),10),bottom:parseInt(a.css("margin-bottom"),10)},offset:a.offset(),width:a.outerWidth(),height:a.outerHeight()},o={offset:i.offset(),height:i.outerHeight()};n.outerHeight();m.is.standardScroll()||(m.debug("Non-standard scroll. Removing scroll offset from element offset"),e.top=d.scrollTop(),e.left=d.scrollLeft(),t.offset.top+=e.top,o.offset.top+=e.top,t.offset.left+=e.left,o.offset.left+=e.left),m.cache={fits:t.height+u.offset<=e.height,sameHeight:t.height==o.height,scrollContext:{height:e.height},element:{margin:t.margin,top:t.offset.top-t.margin.top,left:t.offset.left,width:t.width,height:t.height,bottom:t.offset.top+t.height},context:{top:o.offset.top,height:o.height,bottom:o.offset.top+o.height}},m.set.containerSize(),m.stick(),m.debug("Caching element positions",m.cache)}},get:{direction:function(e){var t="down";return e=e||d.scrollTop(),m.lastScroll!==P&&(m.lastScrolle&&(t="up")),t},scrollChange:function(e){return e=e||d.scrollTop(),m.lastScroll?e-m.lastScroll:0},currentElementScroll:function(){return m.elementScroll?m.elementScroll:m.is.top()?Math.abs(parseInt(a.css("top"),10))||0:Math.abs(parseInt(a.css("bottom"),10))||0},elementScroll:function(e){e=e||d.scrollTop();var t=m.cache.element,o=m.cache.scrollContext,n=m.get.scrollChange(e),i=t.height-o.height+u.offset,s=m.get.currentElementScroll(),r=s+n;return s=m.cache.fits||r<0?0:iu.jitter&&(m.debug("Context has padding, specifying exact height for container",m.cache.context.height),n.css({height:m.cache.context.height}))},minimumSize:function(){var e=m.cache.element;n.css("min-height",e.height)},scroll:function(e){m.debug("Setting scroll on element",e),m.elementScroll!=e&&(m.is.top()&&a.css("bottom","").css("top",-e),m.is.bottom()&&a.css("top","").css("bottom",e))},size:function(){0!==m.cache.element.height&&0!==m.cache.element.width&&(p.style.setProperty("width",m.cache.element.width+"px","important"),p.style.setProperty("height",m.cache.element.height+"px","important"))}},is:{standardScroll:function(){return d[0]==w},top:function(){return a.hasClass(o.top)},bottom:function(){return a.hasClass(o.bottom)},initialPosition:function(){return!m.is.fixed()&&!m.is.bound()},hidden:function(){return!a.is(":visible")},bound:function(){return a.hasClass(o.bound)},fixed:function(){return a.hasClass(o.fixed)}},stick:function(e){var t=e||d.scrollTop(),o=m.cache,n=o.fits,i=o.sameHeight,s=o.element,r=o.scrollContext,c=o.context,l=m.is.bottom()&&u.pushing?u.bottomOffset:u.offset,a=(e={top:t+l,bottom:t+l+r.height},m.get.direction(e.top),n?0:m.get.elementScroll(e.top)),f=!n;0!==s.height&&!i&&(m.is.initialPosition()?e.top>=c.bottom?(m.debug("Initial element position is bottom of container"),m.bindBottom()):e.top>s.top&&(s.height+e.top-a>=c.bottom?(m.debug("Initial element position is bottom of container"),m.bindBottom()):(m.debug("Initial element position is fixed"),m.fixTop())):m.is.fixed()?m.is.top()?e.top<=s.top?(m.debug("Fixed element reached top of container"),m.setInitialPosition()):s.height+e.top-a>=c.bottom?(m.debug("Fixed element reached bottom of container"),m.bindBottom()):f&&(m.set.scroll(a),m.save.lastScroll(e.top),m.save.elementScroll(a)):m.is.bottom()&&(e.bottom-s.height<=s.top?(m.debug("Bottom fixed rail has reached top of container"),m.setInitialPosition()):e.bottom>=c.bottom?(m.debug("Bottom fixed rail has reached bottom of container"),m.bindBottom()):f&&(m.set.scroll(a),m.save.lastScroll(e.top),m.save.elementScroll(a))):m.is.bottom()&&(e.top<=s.top?(m.debug("Jumped from bottom fixed to top fixed, most likely used home/end button"),m.setInitialPosition()):u.pushing?m.is.bound()&&e.bottom<=c.bottom&&(m.debug("Fixing bottom attached element to bottom of browser."),m.fixBottom()):m.is.bound()&&e.top<=c.bottom-s.height&&(m.debug("Fixing bottom attached element to top of browser."),m.fixTop())))},bindTop:function(){m.debug("Binding element to top of parent container"),m.remove.offset(),a.css({left:"",top:"",marginBottom:""}).removeClass(o.fixed).removeClass(o.bottom).addClass(o.bound).addClass(o.top),u.onTop.call(p),u.onUnstick.call(p)},bindBottom:function(){m.debug("Binding element to bottom of parent container"),m.remove.offset(),a.css({left:"",top:""}).removeClass(o.fixed).removeClass(o.top).addClass(o.bound).addClass(o.bottom),u.onBottom.call(p),u.onUnstick.call(p)},setInitialPosition:function(){m.debug("Returning to initial position"),m.unfix(),m.unbind()},fixTop:function(){m.debug("Fixing element to top of page"),u.setSize&&m.set.size(),m.set.minimumSize(),m.set.offset(),a.css({left:m.cache.element.left,bottom:"",marginBottom:""}).removeClass(o.bound).removeClass(o.bottom).addClass(o.fixed).addClass(o.top),u.onStick.call(p)},fixBottom:function(){m.debug("Sticking element to bottom of page"),u.setSize&&m.set.size(),m.set.minimumSize(),m.set.offset(),a.css({left:m.cache.element.left,bottom:"",marginBottom:""}).removeClass(o.bound).removeClass(o.top).addClass(o.fixed).addClass(o.bottom),u.onStick.call(p)},unbind:function(){m.is.bound()&&(m.debug("Removing container bound position on element"),m.remove.offset(),a.removeClass(o.bound).removeClass(o.top).removeClass(o.bottom))},unfix:function(){m.is.fixed()&&(m.debug("Removing fixed position on element"),m.remove.minimumSize(),m.remove.offset(),a.removeClass(o.fixed).removeClass(o.top).removeClass(o.bottom),u.onUnstick.call(p))},reset:function(){m.debug("Resetting elements position"),m.unbind(),m.unfix(),m.resetCSS(),m.remove.offset(),m.remove.lastScroll()},resetCSS:function(){a.css({width:"",height:""}),n.css({height:""})},setting:function(e,t){if(T.isPlainObject(e))T.extend(!0,u,e);else{if(t===P)return u[e];u[e]=t}},internal:function(e,t){if(T.isPlainObject(e))T.extend(!0,m,e);else{if(t===P)return m[e];m[e]=t}},debug:function(){!u.silent&&u.debug&&(u.performance?m.performance.log(arguments):(m.debug=Function.prototype.bind.call(console.info,console,u.name+":"),m.debug.apply(console,arguments)))},verbose:function(){!u.silent&&u.verbose&&u.debug&&(u.performance?m.performance.log(arguments):(m.verbose=Function.prototype.bind.call(console.info,console,u.name+":"),m.verbose.apply(console,arguments)))},error:function(){u.silent||(m.error=Function.prototype.bind.call(console.error,console,u.name+":"),m.error.apply(console,arguments))},performance:{log:function(e){var t,o;u.performance&&(o=(t=(new Date).getTime())-(C||t),C=t,S.push({Name:e[0],Arguments:[].slice.call(e,1)||"",Element:p,"Execution Time":o})),clearTimeout(m.performance.timer),m.performance.timer=setTimeout(m.performance.display,0)},display:function(){var e=u.name+":",o=0;C=!1,clearTimeout(m.performance.timer),T.each(S,function(e,t){o+=t["Execution Time"]}),e+=" "+o+"ms",x&&(e+=" '"+x+"'"),(console.group!==P||console.table!==P)&&0 0) { + $reference = $module.closest(selector.ui); + module.verbose('Using closest UI element as parent', $reference); + } + else { + $reference = $module; + } + $context = $reference.parent(); + module.verbose('Determined parent element for creating context', $context); + } + else if(settings.context) { + $context = $(settings.context); + module.verbose('Using selector for tab context', settings.context, $context); + } + else { + $context = $('body'); + } + // find tabs + if(settings.childrenOnly) { + $tabs = $context.children(selector.tabs); + module.debug('Searching tab context children for tabs', $context, $tabs); + } + else { + $tabs = $context.find(selector.tabs); + module.debug('Searching tab context for tabs', $context, $tabs); + } + }, + + fix: { + callbacks: function() { + if( $.isPlainObject(parameters) && (parameters.onTabLoad || parameters.onTabInit) ) { + if(parameters.onTabLoad) { + parameters.onLoad = parameters.onTabLoad; + delete parameters.onTabLoad; + module.error(error.legacyLoad, parameters.onLoad); + } + if(parameters.onTabInit) { + parameters.onFirstLoad = parameters.onTabInit; + delete parameters.onTabInit; + module.error(error.legacyInit, parameters.onFirstLoad); + } + settings = $.extend(true, {}, $.fn.tab.settings, parameters); + } + } + }, + + initializeHistory: function() { + module.debug('Initializing page state'); + if( $.address === undefined ) { + module.error(error.state); + return false; + } + else { + if(settings.historyType == 'state') { + module.debug('Using HTML5 to manage state'); + if(settings.path !== false) { + $.address + .history(true) + .state(settings.path) + ; + } + else { + module.error(error.path); + return false; + } + } + $.address + .bind('change', module.event.history.change) + ; + } + }, + + event: { + click: function(event) { + var + tabPath = $(this).data(metadata.tab) + ; + if(tabPath !== undefined) { + if(settings.history) { + module.verbose('Updating page state', event); + $.address.value(tabPath); + } + else { + module.verbose('Changing tab', event); + module.changeTab(tabPath); + } + event.preventDefault(); + } + else { + module.debug('No tab specified'); + } + }, + history: { + change: function(event) { + var + tabPath = event.pathNames.join('/') || module.get.initialPath(), + pageTitle = settings.templates.determineTitle(tabPath) || false + ; + module.performance.display(); + module.debug('History change event', tabPath, event); + historyEvent = event; + if(tabPath !== undefined) { + module.changeTab(tabPath); + } + if(pageTitle) { + $.address.title(pageTitle); + } + } + } + }, + + refresh: function() { + if(activeTabPath) { + module.debug('Refreshing tab', activeTabPath); + module.changeTab(activeTabPath); + } + }, + + cache: { + + read: function(cacheKey) { + return (cacheKey !== undefined) + ? cache[cacheKey] + : false + ; + }, + add: function(cacheKey, content) { + cacheKey = cacheKey || activeTabPath; + module.debug('Adding cached content for', cacheKey); + cache[cacheKey] = content; + }, + remove: function(cacheKey) { + cacheKey = cacheKey || activeTabPath; + module.debug('Removing cached content for', cacheKey); + delete cache[cacheKey]; + } + }, + + set: { + auto: function() { + var + url = (typeof settings.path == 'string') + ? settings.path.replace(/\/$/, '') + '/{$tab}' + : '/{$tab}' + ; + module.verbose('Setting up automatic tab retrieval from server', url); + if($.isPlainObject(settings.apiSettings)) { + settings.apiSettings.url = url; + } + else { + settings.apiSettings = { + url: url + }; + } + }, + loading: function(tabPath) { + var + $tab = module.get.tabElement(tabPath), + isLoading = $tab.hasClass(className.loading) + ; + if(!isLoading) { + module.verbose('Setting loading state for', $tab); + $tab + .addClass(className.loading) + .siblings($tabs) + .removeClass(className.active + ' ' + className.loading) + ; + if($tab.length > 0) { + settings.onRequest.call($tab[0], tabPath); + } + } + }, + state: function(state) { + $.address.value(state); + } + }, + + changeTab: function(tabPath) { + var + pushStateAvailable = (window.history && window.history.pushState), + shouldIgnoreLoad = (pushStateAvailable && settings.ignoreFirstLoad && firstLoad), + remoteContent = (settings.auto || $.isPlainObject(settings.apiSettings) ), + // only add default path if not remote content + pathArray = (remoteContent && !shouldIgnoreLoad) + ? module.utilities.pathToArray(tabPath) + : module.get.defaultPathArray(tabPath) + ; + tabPath = module.utilities.arrayToPath(pathArray); + $.each(pathArray, function(index, tab) { + var + currentPathArray = pathArray.slice(0, index + 1), + currentPath = module.utilities.arrayToPath(currentPathArray), + + isTab = module.is.tab(currentPath), + isLastIndex = (index + 1 == pathArray.length), + + $tab = module.get.tabElement(currentPath), + $anchor, + nextPathArray, + nextPath, + isLastTab + ; + module.verbose('Looking for tab', tab); + if(isTab) { + module.verbose('Tab was found', tab); + // scope up + activeTabPath = currentPath; + parameterArray = module.utilities.filterArray(pathArray, currentPathArray); + + if(isLastIndex) { + isLastTab = true; + } + else { + nextPathArray = pathArray.slice(0, index + 2); + nextPath = module.utilities.arrayToPath(nextPathArray); + isLastTab = ( !module.is.tab(nextPath) ); + if(isLastTab) { + module.verbose('Tab parameters found', nextPathArray); + } + } + if(isLastTab && remoteContent) { + if(!shouldIgnoreLoad) { + module.activate.navigation(currentPath); + module.fetch.content(currentPath, tabPath); + } + else { + module.debug('Ignoring remote content on first tab load', currentPath); + firstLoad = false; + module.cache.add(tabPath, $tab.html()); + module.activate.all(currentPath); + settings.onFirstLoad.call($tab[0], currentPath, parameterArray, historyEvent); + settings.onLoad.call($tab[0], currentPath, parameterArray, historyEvent); + } + return false; + } + else { + module.debug('Opened local tab', currentPath); + module.activate.all(currentPath); + if( !module.cache.read(currentPath) ) { + module.cache.add(currentPath, true); + module.debug('First time tab loaded calling tab init'); + settings.onFirstLoad.call($tab[0], currentPath, parameterArray, historyEvent); + } + settings.onLoad.call($tab[0], currentPath, parameterArray, historyEvent); + } + + } + else if(tabPath.search('/') == -1 && tabPath !== '') { + // look for in page anchor + $anchor = $('#' + tabPath + ', a[name="' + tabPath + '"]'); + currentPath = $anchor.closest('[data-tab]').data(metadata.tab); + $tab = module.get.tabElement(currentPath); + // if anchor exists use parent tab + if($anchor && $anchor.length > 0 && currentPath) { + module.debug('Anchor link used, opening parent tab', $tab, $anchor); + if( !$tab.hasClass(className.active) ) { + setTimeout(function() { + module.scrollTo($anchor); + }, 0); + } + module.activate.all(currentPath); + if( !module.cache.read(currentPath) ) { + module.cache.add(currentPath, true); + module.debug('First time tab loaded calling tab init'); + settings.onFirstLoad.call($tab[0], currentPath, parameterArray, historyEvent); + } + settings.onLoad.call($tab[0], currentPath, parameterArray, historyEvent); + return false; + } + } + else { + module.error(error.missingTab, $module, $context, currentPath); + return false; + } + }); + }, + + scrollTo: function($element) { + var + scrollOffset = ($element && $element.length > 0) + ? $element.offset().top + : false + ; + if(scrollOffset !== false) { + module.debug('Forcing scroll to an in-page link in a hidden tab', scrollOffset, $element); + $(document).scrollTop(scrollOffset); + } + }, + + update: { + content: function(tabPath, html, evaluateScripts) { + var + $tab = module.get.tabElement(tabPath), + tab = $tab[0] + ; + evaluateScripts = (evaluateScripts !== undefined) + ? evaluateScripts + : settings.evaluateScripts + ; + if(typeof settings.cacheType == 'string' && settings.cacheType.toLowerCase() == 'dom' && typeof html !== 'string') { + $tab + .empty() + .append($(html).clone(true)) + ; + } + else { + if(evaluateScripts) { + module.debug('Updating HTML and evaluating inline scripts', tabPath, html); + $tab.html(html); + } + else { + module.debug('Updating HTML', tabPath, html); + tab.innerHTML = html; + } + } + } + }, + + fetch: { + + content: function(tabPath, fullTabPath) { + var + $tab = module.get.tabElement(tabPath), + apiSettings = { + dataType : 'html', + encodeParameters : false, + on : 'now', + cache : settings.alwaysRefresh, + headers : { + 'X-Remote': true + }, + onSuccess : function(response) { + if(settings.cacheType == 'response') { + module.cache.add(fullTabPath, response); + } + module.update.content(tabPath, response); + if(tabPath == activeTabPath) { + module.debug('Content loaded', tabPath); + module.activate.tab(tabPath); + } + else { + module.debug('Content loaded in background', tabPath); + } + settings.onFirstLoad.call($tab[0], tabPath, parameterArray, historyEvent); + settings.onLoad.call($tab[0], tabPath, parameterArray, historyEvent); + + if(settings.loadOnce) { + module.cache.add(fullTabPath, true); + } + else if(typeof settings.cacheType == 'string' && settings.cacheType.toLowerCase() == 'dom' && $tab.children().length > 0) { + setTimeout(function() { + var + $clone = $tab.children().clone(true) + ; + $clone = $clone.not('script'); + module.cache.add(fullTabPath, $clone); + }, 0); + } + else { + module.cache.add(fullTabPath, $tab.html()); + } + }, + urlData: { + tab: fullTabPath + } + }, + request = $tab.api('get request') || false, + existingRequest = ( request && request.state() === 'pending' ), + requestSettings, + cachedContent + ; + + fullTabPath = fullTabPath || tabPath; + cachedContent = module.cache.read(fullTabPath); + + + if(settings.cache && cachedContent) { + module.activate.tab(tabPath); + module.debug('Adding cached content', fullTabPath); + if(!settings.loadOnce) { + if(settings.evaluateScripts == 'once') { + module.update.content(tabPath, cachedContent, false); + } + else { + module.update.content(tabPath, cachedContent); + } + } + settings.onLoad.call($tab[0], tabPath, parameterArray, historyEvent); + } + else if(existingRequest) { + module.set.loading(tabPath); + module.debug('Content is already loading', fullTabPath); + } + else if($.api !== undefined) { + requestSettings = $.extend(true, {}, settings.apiSettings, apiSettings); + module.debug('Retrieving remote content', fullTabPath, requestSettings); + module.set.loading(tabPath); + $tab.api(requestSettings); + } + else { + module.error(error.api); + } + } + }, + + activate: { + all: function(tabPath) { + module.activate.tab(tabPath); + module.activate.navigation(tabPath); + }, + tab: function(tabPath) { + var + $tab = module.get.tabElement(tabPath), + $deactiveTabs = (settings.deactivate == 'siblings') + ? $tab.siblings($tabs) + : $tabs.not($tab), + isActive = $tab.hasClass(className.active) + ; + module.verbose('Showing tab content for', $tab); + if(!isActive) { + $tab + .addClass(className.active) + ; + $deactiveTabs + .removeClass(className.active + ' ' + className.loading) + ; + if($tab.length > 0) { + settings.onVisible.call($tab[0], tabPath); + } + } + }, + navigation: function(tabPath) { + var + $navigation = module.get.navElement(tabPath), + $deactiveNavigation = (settings.deactivate == 'siblings') + ? $navigation.siblings($allModules) + : $allModules.not($navigation), + isActive = $navigation.hasClass(className.active) + ; + module.verbose('Activating tab navigation for', $navigation, tabPath); + if(!isActive) { + $navigation + .addClass(className.active) + ; + $deactiveNavigation + .removeClass(className.active + ' ' + className.loading) + ; + } + } + }, + + deactivate: { + all: function() { + module.deactivate.navigation(); + module.deactivate.tabs(); + }, + navigation: function() { + $allModules + .removeClass(className.active) + ; + }, + tabs: function() { + $tabs + .removeClass(className.active + ' ' + className.loading) + ; + } + }, + + is: { + tab: function(tabName) { + return (tabName !== undefined) + ? ( module.get.tabElement(tabName).length > 0 ) + : false + ; + } + }, + + get: { + initialPath: function() { + return $allModules.eq(0).data(metadata.tab) || $tabs.eq(0).data(metadata.tab); + }, + path: function() { + return $.address.value(); + }, + // adds default tabs to tab path + defaultPathArray: function(tabPath) { + return module.utilities.pathToArray( module.get.defaultPath(tabPath) ); + }, + defaultPath: function(tabPath) { + var + $defaultNav = $allModules.filter('[data-' + metadata.tab + '^="' + tabPath + '/"]').eq(0), + defaultTab = $defaultNav.data(metadata.tab) || false + ; + if( defaultTab ) { + module.debug('Found default tab', defaultTab); + if(recursionDepth < settings.maxDepth) { + recursionDepth++; + return module.get.defaultPath(defaultTab); + } + module.error(error.recursion); + } + else { + module.debug('No default tabs found for', tabPath, $tabs); + } + recursionDepth = 0; + return tabPath; + }, + navElement: function(tabPath) { + tabPath = tabPath || activeTabPath; + return $allModules.filter('[data-' + metadata.tab + '="' + tabPath + '"]'); + }, + tabElement: function(tabPath) { + var + $fullPathTab, + $simplePathTab, + tabPathArray, + lastTab + ; + tabPath = tabPath || activeTabPath; + tabPathArray = module.utilities.pathToArray(tabPath); + lastTab = module.utilities.last(tabPathArray); + $fullPathTab = $tabs.filter('[data-' + metadata.tab + '="' + tabPath + '"]'); + $simplePathTab = $tabs.filter('[data-' + metadata.tab + '="' + lastTab + '"]'); + return ($fullPathTab.length > 0) + ? $fullPathTab + : $simplePathTab + ; + }, + tab: function() { + return activeTabPath; + } + }, + + utilities: { + filterArray: function(keepArray, removeArray) { + return $.grep(keepArray, function(keepValue) { + return ( $.inArray(keepValue, removeArray) == -1); + }); + }, + last: function(array) { + return $.isArray(array) + ? array[ array.length - 1] + : false + ; + }, + pathToArray: function(pathName) { + if(pathName === undefined) { + pathName = activeTabPath; + } + return typeof pathName == 'string' + ? pathName.split('/') + : [pathName] + ; + }, + arrayToPath: function(pathArray) { + return $.isArray(pathArray) + ? pathArray.join('/') + : false + ; + } + }, + + setting: function(name, value) { + module.debug('Changing setting', name, value); + if( $.isPlainObject(name) ) { + $.extend(true, settings, name); + } + else if(value !== undefined) { + if($.isPlainObject(settings[name])) { + $.extend(true, settings[name], value); + } + else { + settings[name] = value; + } + } + else { + return settings[name]; + } + }, + internal: function(name, value) { + if( $.isPlainObject(name) ) { + $.extend(true, module, name); + } + else if(value !== undefined) { + module[name] = value; + } + else { + return module[name]; + } + }, + debug: function() { + if(!settings.silent && settings.debug) { + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':'); + module.debug.apply(console, arguments); + } + } + }, + verbose: function() { + if(!settings.silent && settings.verbose && settings.debug) { + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':'); + module.verbose.apply(console, arguments); + } + } + }, + error: function() { + if(!settings.silent) { + module.error = Function.prototype.bind.call(console.error, console, settings.name + ':'); + module.error.apply(console, arguments); + } + }, + performance: { + log: function(message) { + var + currentTime, + executionTime, + previousTime + ; + if(settings.performance) { + currentTime = new Date().getTime(); + previousTime = time || currentTime; + executionTime = currentTime - previousTime; + time = currentTime; + performance.push({ + 'Name' : message[0], + 'Arguments' : [].slice.call(message, 1) || '', + 'Element' : element, + 'Execution Time' : executionTime + }); + } + clearTimeout(module.performance.timer); + module.performance.timer = setTimeout(module.performance.display, 500); + }, + display: function() { + var + title = settings.name + ':', + totalTime = 0 + ; + time = false; + clearTimeout(module.performance.timer); + $.each(performance, function(index, data) { + totalTime += data['Execution Time']; + }); + title += ' ' + totalTime + 'ms'; + if(moduleSelector) { + title += ' \'' + moduleSelector + '\''; + } + if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { + console.groupCollapsed(title); + if(console.table) { + console.table(performance); + } + else { + $.each(performance, function(index, data) { + console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); + }); + } + console.groupEnd(); + } + performance = []; + } + }, + invoke: function(query, passedArguments, context) { + var + object = instance, + maxDepth, + found, + response + ; + passedArguments = passedArguments || queryArguments; + context = element || context; + if(typeof query == 'string' && object !== undefined) { + query = query.split(/[\. ]/); + maxDepth = query.length - 1; + $.each(query, function(depth, value) { + var camelCaseValue = (depth != maxDepth) + ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) + : query + ; + if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) { + object = object[camelCaseValue]; + } + else if( object[camelCaseValue] !== undefined ) { + found = object[camelCaseValue]; + return false; + } + else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) { + object = object[value]; + } + else if( object[value] !== undefined ) { + found = object[value]; + return false; + } + else { + module.error(error.method, query); + return false; + } + }); + } + if ( $.isFunction( found ) ) { + response = found.apply(context, passedArguments); + } + else if(found !== undefined) { + response = found; + } + if($.isArray(returnedValue)) { + returnedValue.push(response); + } + else if(returnedValue !== undefined) { + returnedValue = [returnedValue, response]; + } + else if(response !== undefined) { + returnedValue = response; + } + return found; + } + }; + if(methodInvoked) { + if(instance === undefined) { + module.initialize(); + } + module.invoke(query); + } + else { + if(instance !== undefined) { + instance.invoke('destroy'); + } + module.initialize(); + } + }) + ; + return (returnedValue !== undefined) + ? returnedValue + : this + ; + +}; + +// shortcut for tabbed content with no defined navigation +$.tab = function() { + $(window).tab.apply(this, arguments); +}; + +$.fn.tab.settings = { + + name : 'Tab', + namespace : 'tab', + + silent : false, + debug : false, + verbose : false, + performance : true, + + auto : false, // uses pjax style endpoints fetching content from same url with remote-content headers + history : false, // use browser history + historyType : 'hash', // #/ or html5 state + path : false, // base path of url + + context : false, // specify a context that tabs must appear inside + childrenOnly : false, // use only tabs that are children of context + maxDepth : 25, // max depth a tab can be nested + + deactivate : 'siblings', // whether tabs should deactivate sibling menu elements or all elements initialized together + + alwaysRefresh : false, // load tab content new every tab click + cache : true, // cache the content requests to pull locally + loadOnce : false, // Whether tab data should only be loaded once when using remote content + cacheType : 'response', // Whether to cache exact response, or to html cache contents after scripts execute + ignoreFirstLoad : false, // don't load remote content on first load + + apiSettings : false, // settings for api call + evaluateScripts : 'once', // whether inline scripts should be parsed (true/false/once). Once will not re-evaluate on cached content + + onFirstLoad : function(tabPath, parameterArray, historyEvent) {}, // called first time loaded + onLoad : function(tabPath, parameterArray, historyEvent) {}, // called on every load + onVisible : function(tabPath, parameterArray, historyEvent) {}, // called every time tab visible + onRequest : function(tabPath, parameterArray, historyEvent) {}, // called ever time a tab beings loading remote content + + templates : { + determineTitle: function(tabArray) {} // returns page title for path + }, + + error: { + api : 'You attempted to load content without API module', + method : 'The method you called is not defined', + missingTab : 'Activated tab cannot be found. Tabs are case-sensitive.', + noContent : 'The tab you specified is missing a content url.', + path : 'History enabled, but no path was specified', + recursion : 'Max recursive depth reached', + legacyInit : 'onTabInit has been renamed to onFirstLoad in 2.0, please adjust your code.', + legacyLoad : 'onTabLoad has been renamed to onLoad in 2.0. Please adjust your code', + state : 'History requires Asual\'s Address library ' + }, + + metadata : { + tab : 'tab', + loaded : 'loaded', + promise: 'promise' + }, + + className : { + loading : 'loading', + active : 'active' + }, + + selector : { + tabs : '.ui.tab', + ui : '.ui' + } + +}; + +})( jQuery, window, document ); diff --git a/app/static/semantic/components/tab.min.css b/app/static/semantic/components/tab.min.css new file mode 100755 index 0000000..a1f92a8 --- /dev/null +++ b/app/static/semantic/components/tab.min.css @@ -0,0 +1,9 @@ +/*! + * # Semantic UI 2.4.0 - Tab + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */.ui.tab{display:none}.ui.tab.active,.ui.tab.open{display:block}.ui.tab.loading{position:relative;overflow:hidden;display:block;min-height:250px}.ui.tab.loading *{position:relative!important;left:-10000px!important}.ui.tab.loading.segment:before,.ui.tab.loading:before{position:absolute;content:'';top:100px;left:50%;margin:-1.25em 0 0 -1.25em;width:2.5em;height:2.5em;border-radius:500rem;border:.2em solid rgba(0,0,0,.1)}.ui.tab.loading.segment:after,.ui.tab.loading:after{position:absolute;content:'';top:100px;left:50%;margin:-1.25em 0 0 -1.25em;width:2.5em;height:2.5em;-webkit-animation:button-spin .6s linear;animation:button-spin .6s linear;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;border-radius:500rem;border-color:#767676 transparent transparent;border-style:solid;border-width:.2em;-webkit-box-shadow:0 0 0 1px transparent;box-shadow:0 0 0 1px transparent} \ No newline at end of file diff --git a/app/static/semantic/components/tab.min.js b/app/static/semantic/components/tab.min.js new file mode 100755 index 0000000..b7a1e7b --- /dev/null +++ b/app/static/semantic/components/tab.min.js @@ -0,0 +1 @@ +!function(E,O,w,k){"use strict";O=void 0!==O&&O.Math==Math?O:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),E.fn.tab=function(r){var l,d=E.isFunction(this)?E(O):E(this),u=d.selector||"",b=(new Date).getTime(),g=[],f=r,F="string"==typeof f,S=[].slice.call(arguments,1),j=!1;return d.each(function(){var h,o,p,m,v,y,T=E.isPlainObject(r)?E.extend(!0,{},E.fn.tab.settings,r):E.extend({},E.fn.tab.settings),L=T.className,x=T.metadata,t=T.selector,A=T.error,e="."+T.namespace,a="module-"+T.namespace,P=E(this),n={},C=!0,i=0,s=this,c=P.data(a);v={initialize:function(){v.debug("Initializing tab menu item",P),v.fix.callbacks(),v.determineTabs(),v.debug("Determining tabs",T.context,o),T.auto&&v.set.auto(),v.bind.events(),T.history&&!j&&(v.initializeHistory(),j=!0),v.instantiate()},instantiate:function(){v.verbose("Storing instance of module",v),c=v,P.data(a,v)},destroy:function(){v.debug("Destroying tabs",P),P.removeData(a).off(e)},bind:{events:function(){E.isWindow(s)||(v.debug("Attaching tab activation events to element",P),P.on("click"+e,v.event.click))}},determineTabs:function(){var e;"parent"===T.context?(0