diff --git a/.gitignore b/.gitignore index 35ed792..c4b9084 100644 --- a/.gitignore +++ b/.gitignore @@ -72,3 +72,5 @@ media/ bower_components/ node_modules/ amiibofindr/static/css + +*~ \ No newline at end of file diff --git a/amiibofindr/apps/amiibo/admin.py b/amiibofindr/apps/amiibo/admin.py index ccb0136..174bfe9 100644 --- a/amiibofindr/apps/amiibo/admin.py +++ b/amiibofindr/apps/amiibo/admin.py @@ -12,6 +12,7 @@ import reversion # amiibo from .models import ( Collection, Amiibo, + AmiiboFigure, AmiiboCard, AmiiboShop, AmiiboPrice, AmiiboPriceHistory ) @@ -22,9 +23,9 @@ class ColectionResource(resources.ModelResource): model = Collection -class AmiiboResource(resources.ModelResource): +class AmiiboFigureResource(resources.ModelResource): class Meta: - model = Amiibo + model = AmiiboFigure class AmiiboShopResource(resources.ModelResource): @@ -32,18 +33,23 @@ class AmiiboShopResource(resources.ModelResource): model = AmiiboShop +class AmiiboCardResource(resources.ModelResource): + class Meta: + model = AmiiboCard + + class CollectionAdmin(ImportExportModelAdmin, reversion.VersionAdmin): resource_class = ColectionResource - list_display = ('name_eu', 'amiibo_number', 'have_cards', ) + list_display = ('name_eu', 'amiibo_number', ) def amiibo_number(self, obj): return obj.amiibos.count() amiibo_number.short_description = 'Amiibos' -class AmiiboAdmin(ImportExportModelAdmin, reversion.VersionAdmin): - resource_class = AmiiboResource +class AmiiboFigureAdmin(ImportExportModelAdmin, reversion.VersionAdmin): + resource_class = AmiiboFigureResource list_display_links = ('name_eu', ) list_display = ('statue_image', 'name_eu', 'collection',) @@ -63,11 +69,12 @@ class AmiiboAdmin(ImportExportModelAdmin, reversion.VersionAdmin): class AmiiboCardAdmin(ImportExportModelAdmin, reversion.VersionAdmin): - resource_class = AmiiboResource + resource_class = AmiiboCardResource list_display_links = ('name_eu', ) - list_display = ('image_image', 'name_eu', 'collection', 'dice', 'rps', ) - search_fields = ('collection__name_eu', 'name_eu', 'name_us',) + list_display = ('image_image', 'name_eu', 'collection',) + search_fields = ('collection__name_eu', 'name_eu', 'name_us', + 'model_number') def image_image(self, obj): if obj.image: @@ -79,10 +86,13 @@ class AmiiboCardAdmin(ImportExportModelAdmin, reversion.VersionAdmin): class AmiiboShopAdmin(ImportExportModelAdmin, reversion.VersionAdmin): resource_class = AmiiboShopResource - list_display = ('amiibo', 'shop', 'check_price') - list_filter = ('amiibo', 'shop', ) + list_display = ('amiibos_names', 'shop_name', 'shop', 'check_price') + list_filter = ('shop', 'shop_name', ) list_editable = ('check_price', ) - + filter_horizontal = ('amiibo', ) + + def amiibos_names(self, obj): + return ", ".join(obj.amiibo.all().values_list('name_eu', flat=True)) class AmiiboPriceAdmin(reversion.VersionAdmin): @@ -94,7 +104,8 @@ class AmiiboPriceHistoryAdmin(admin.ModelAdmin): admin.site.register(Collection, CollectionAdmin) -admin.site.register(Amiibo, AmiiboAdmin) +admin.site.register(AmiiboFigure, AmiiboFigureAdmin) +admin.site.register(AmiiboCard, AmiiboCardAdmin) admin.site.register(AmiiboShop, AmiiboShopAdmin) admin.site.register(AmiiboPrice, AmiiboPriceAdmin) admin.site.register(AmiiboPriceHistory, AmiiboPriceHistoryAdmin) diff --git a/amiibofindr/apps/amiibo/context_processors.py b/amiibofindr/apps/amiibo/context_processors.py index 261b649..a162342 100644 --- a/amiibofindr/apps/amiibo/context_processors.py +++ b/amiibofindr/apps/amiibo/context_processors.py @@ -1,13 +1,16 @@ # coding: utf-8 # amiibo -from .models import Collection, AmiiboPrice +from .models import Collection, AmiiboPrice, AmiiboCard, UserAmiibo def collections(request): return { 'COLLECTIONS_FIGURES': Collection.objects.all().order_by('name_eu'), - 'COLLECTIONS_CARDS': Collection.objects.filter(have_cards=True).order_by('name_eu'), + 'COLLECTIONS_CARDS': Collection.objects.filter(pk__in= + AmiiboCard.objects.all().distinct('collection').order_by('collection')\ + .values_list('collection__id', flat=True) + ) } @@ -16,3 +19,22 @@ def currencies(request): 'CURRENCIES': AmiiboPrice.objects.all().distinct('currency')\ .values_list('currency', flat=True) } + + +def user_amiibo(request): + owned = [] + wishlisted = [] + trading = [] + if request.user.is_authenticated(): + owned = UserAmiibo.objects.filter(own=True, + user_id=request.user.pk).values_list('_amiibo__id', flat=True) + wishlisted = UserAmiibo.objects.filter(want=True, + user_id=request.user.pk).values_list('_amiibo__id', flat=True) + trading = UserAmiibo.objects.filter(trade=True, + user_id=request.user.pk).values_list('_amiibo__id', flat=True) + + return { + 'USER_AMIIBO_OWNED': owned, + 'USER_AMIIBO_WISHLIST': wishlisted, + 'USER_AMIIBO_TRADE': trading + } diff --git a/amiibofindr/apps/amiibo/handlers.py b/amiibofindr/apps/amiibo/handlers.py index eb82fda..dc7b520 100644 --- a/amiibofindr/apps/amiibo/handlers.py +++ b/amiibofindr/apps/amiibo/handlers.py @@ -30,7 +30,7 @@ def post_check_price_change(sender, instance, created, **kwargs): amiibo_price_changed.send( sender=instance.__class__, instance=instance, - amiibo=instance.amiibo_shop.amiibo, + amiibo=instance.amiibo_shop.amiibo.first(), old_stock=instance.old_stock, old_price=instance.old_price, new_price=instance.price diff --git a/amiibofindr/apps/amiibo/management/commands/fetch_cards.py b/amiibofindr/apps/amiibo/management/commands/fetch_cards.py new file mode 100644 index 0000000..ef12924 --- /dev/null +++ b/amiibofindr/apps/amiibo/management/commands/fetch_cards.py @@ -0,0 +1,166 @@ +# coding: utf-8 + +from __future__ import unicode_literals + +import requests + +from django.core.files.base import ContentFile +from django.core.management.base import BaseCommand +from django.utils.text import slugify + +from amiibofindr.apps.amiibo.models import AmiiboCard, Collection + +CARD_IMAGES = """ +/amiibo-cards/assets/img/cards/NVL-C-MAAA-USZ-F0(0)001.png +/amiibo-cards/assets/img/cards/NVL-C-MAAB-USZ-F0(0)002.png +/amiibo-cards/assets/img/cards/NVL-C-MAAC-USZ-F0(0)003.png +/amiibo-cards/assets/img/cards/NVL-C-MAAD-USZ-F0(0)004.png +/amiibo-cards/assets/img/cards/NVL-C-MAAE-USZ-F0(0)005.png +/amiibo-cards/assets/img/cards/NVL-C-MAAF-USZ-F0(0)006.png +/amiibo-cards/assets/img/cards/NVL-C-MAAG-USZ-F0(0)007.png +/amiibo-cards/assets/img/cards/NVL-C-MAAH-USZ-F0(0)008.png +/amiibo-cards/assets/img/cards/NVL-C-MAAJ-USZ-F0(0)009.png +/amiibo-cards/assets/img/cards/NVL-C-MAAK-USZ-F0(0)010.png +/amiibo-cards/assets/img/cards/NVL-C-MAAL-USZ-F0(0)011.png +/amiibo-cards/assets/img/cards/NVL-C-MAAM-USZ-F0(0)012.png +/amiibo-cards/assets/img/cards/NVL-C-MAAN-USZ-F0(0)013.png +/amiibo-cards/assets/img/cards/NVL-C-MAAP-USZ-F0(0)014.png +/amiibo-cards/assets/img/cards/NVL-C-MAAQ-USZ-F0(0)015.png +/amiibo-cards/assets/img/cards/NVL-C-MAAR-USZ-F0(0)016.png +/amiibo-cards/assets/img/cards/NVL-C-MAAS-USZ-F0(0)017.png +/amiibo-cards/assets/img/cards/NVL-C-MAAT-USZ-F0(0)018.png +/amiibo-cards/assets/img/cards/NVL-C-MAAU-USZ-F0(0)019.png +/amiibo-cards/assets/img/cards/NVL-C-MAAV-USZ-F0(0)020.png +/amiibo-cards/assets/img/cards/NVL-C-MAAW-USZ-F0(0)021.png +/amiibo-cards/assets/img/cards/NVL-C-MAAX-USZ-F0(0)022.png +/amiibo-cards/assets/img/cards/NVL-C-MAAY-USZ-F0(0)023.png +/amiibo-cards/assets/img/cards/NVL-C-MAAZ-USZ-F0(0)024.png +/amiibo-cards/assets/img/cards/NVL-C-MABA-USZ-F0(0)025.png +/amiibo-cards/assets/img/cards/NVL-C-MABB-USZ-F0(0)026.png +/amiibo-cards/assets/img/cards/NVL-C-MABC-USZ-F0(0)027.png +/amiibo-cards/assets/img/cards/NVL-C-MABD-USZ-F0(0)028.png +/amiibo-cards/assets/img/cards/NVL-C-MABE-USZ-F0(0)029.png +/amiibo-cards/assets/img/cards/NVL-C-MABF-USZ-F0(0)030.png +/amiibo-cards/assets/img/cards/NVL-C-MABG-USZ-F0(0)031.png +/amiibo-cards/assets/img/cards/NVL-C-MABH-USZ-F0(0)032.png +/amiibo-cards/assets/img/cards/NVL-C-MABJ-USZ-F0(0)033.png +/amiibo-cards/assets/img/cards/NVL-C-MABK-USZ-F0(0)034.png +/amiibo-cards/assets/img/cards/NVL-C-MABL-USZ-F0(0)035.png +/amiibo-cards/assets/img/cards/NVL-C-MABM-USZ-F0(0)036.png +/amiibo-cards/assets/img/cards/NVL-C-MABN-USZ-F0(0)037.png +/amiibo-cards/assets/img/cards/NVL-C-MABP-USZ-F0(0)038.png +/amiibo-cards/assets/img/cards/NVL-C-MABQ-USZ-F0(0)039.png +/amiibo-cards/assets/img/cards/NVL-C-MABR-USZ-F0(0)040.png +/amiibo-cards/assets/img/cards/NVL-C-MABS-USZ-F0(0)041.png +/amiibo-cards/assets/img/cards/NVL-C-MABT-USZ-F0(0)042.png +/amiibo-cards/assets/img/cards/NVL-C-MABU-USZ-F0(0)043.png +/amiibo-cards/assets/img/cards/NVL-C-MABV-USZ-F0(0)044.png +/amiibo-cards/assets/img/cards/NVL-C-MABW-USZ-F0(0)045.png +/amiibo-cards/assets/img/cards/NVL-C-MABX-USZ-F0(0)046.png +/amiibo-cards/assets/img/cards/NVL-C-MABY-USZ-F0(0)047.png +/amiibo-cards/assets/img/cards/NVL-C-MABZ-USZ-F0(0)048.png +/amiibo-cards/assets/img/cards/NVL-C-MACA-USZ-F0(0)049.png +/amiibo-cards/assets/img/cards/NVL-C-MACB-USZ-F0(0)050.png +/amiibo-cards/assets/img/cards/NVL-C-MACC-USZ-F0(0)051.png +/amiibo-cards/assets/img/cards/NVL-C-MACD-USZ-F0(0)052.png +/amiibo-cards/assets/img/cards/NVL-C-MACE-USZ-F0(0)053.png +/amiibo-cards/assets/img/cards/NVL-C-MACF-USZ-F0(0)054.png +/amiibo-cards/assets/img/cards/NVL-C-MACG-USZ-F0(0)055.png +/amiibo-cards/assets/img/cards/NVL-C-MACH-USZ-F0(0)056.png +/amiibo-cards/assets/img/cards/NVL-C-MACJ-USZ-F0(0)057.png +/amiibo-cards/assets/img/cards/NVL-C-MACK-USZ-F0(0)058.png +/amiibo-cards/assets/img/cards/NVL-C-MACL-USZ-F0(0)059.png +/amiibo-cards/assets/img/cards/NVL-C-MACM-USZ-F0(0)060.png +/amiibo-cards/assets/img/cards/NVL-C-MACN-USZ-F0(0)061.png +/amiibo-cards/assets/img/cards/NVL-C-MACP-USZ-F0(0)062.png +/amiibo-cards/assets/img/cards/NVL-C-MACQ-USZ-F0(0)063.png +/amiibo-cards/assets/img/cards/NVL-C-MACR-USZ-F0(0)064.png +/amiibo-cards/assets/img/cards/NVL-C-MACS-USZ-F0(0)065.png +/amiibo-cards/assets/img/cards/NVL-C-MACT-USZ-F0(0)066.png +/amiibo-cards/assets/img/cards/NVL-C-MACU-USZ-F0(0)067.png +/amiibo-cards/assets/img/cards/NVL-C-MACV-USZ-F0(0)068.png +/amiibo-cards/assets/img/cards/NVL-C-MACW-USZ-F0(0)069.png +/amiibo-cards/assets/img/cards/NVL-C-MACX-USZ-F0(0)070.png +/amiibo-cards/assets/img/cards/NVL-C-MACY-USZ-F0(0)071.png +/amiibo-cards/assets/img/cards/NVL-C-MACZ-USZ-F0(0)072.png +/amiibo-cards/assets/img/cards/NVL-C-MADA-USZ-F0(0)073.png +/amiibo-cards/assets/img/cards/NVL-C-MADB-USZ-F0(0)074.png +/amiibo-cards/assets/img/cards/NVL-C-MADC-USZ-F0(0)075.png +/amiibo-cards/assets/img/cards/NVL-C-MADD-USZ-F0(0)076.png +/amiibo-cards/assets/img/cards/NVL-C-MADE-USZ-F0(0)077.png +/amiibo-cards/assets/img/cards/NVL-C-MADF-USZ-F0(0)078.png +/amiibo-cards/assets/img/cards/NVL-C-MADG-USZ-F0(0)079.png +/amiibo-cards/assets/img/cards/NVL-C-MADH-USZ-F0(0)080.png +/amiibo-cards/assets/img/cards/NVL-C-MADJ-USZ-F0(0)081.png +/amiibo-cards/assets/img/cards/NVL-C-MADK-USZ-F0(0)082.png +/amiibo-cards/assets/img/cards/NVL-C-MADL-USZ-F0(0)083.png +/amiibo-cards/assets/img/cards/NVL-C-MADM-USZ-F0(0)084.png +/amiibo-cards/assets/img/cards/NVL-C-MADN-USZ-F0(0)085.png +/amiibo-cards/assets/img/cards/NVL-C-MADP-USZ-F0(0)086.png +/amiibo-cards/assets/img/cards/NVL-C-MADQ-USZ-F0(0)087.png +/amiibo-cards/assets/img/cards/NVL-C-MADR-USZ-F0(0)088.png +/amiibo-cards/assets/img/cards/NVL-C-MADS-USZ-F0(0)089.png +/amiibo-cards/assets/img/cards/NVL-C-MADT-USZ-F0(0)090.png +/amiibo-cards/assets/img/cards/NVL-C-MADU-USZ-F0(0)091.png +/amiibo-cards/assets/img/cards/NVL-C-MADV-USZ-F0(0)092.png +/amiibo-cards/assets/img/cards/NVL-C-MADW-USZ-F0(0)093.png +/amiibo-cards/assets/img/cards/NVL-C-MADX-USZ-F0(0)094.png +/amiibo-cards/assets/img/cards/NVL-C-MADY-USZ-F0(0)095.png +/amiibo-cards/assets/img/cards/NVL-C-MADZ-USZ-F0(0)096.png +/amiibo-cards/assets/img/cards/NVL-C-MAEA-USZ-F0(0)097.png +/amiibo-cards/assets/img/cards/NVL-C-MAEB-USZ-F0(0)098.png +/amiibo-cards/assets/img/cards/NVL-C-MAEC-USZ-F0(0)099.png +/amiibo-cards/assets/img/cards/NVL-C-MAED-USZ-F0(0)100.png +""".split('\n') + + +class Command(BaseCommand): + collection_slug = 'animal-crossing' + url = 'https://api.import.io/store/data/d7057867-dd48-4f5a-80ba-7051daf72bf4/_query?input/webpage/url=http%3A%2F%2Fanimalcrossingworld.com%2Fanimal-crossing-happy-home-designer-amiibo-cards%2F&_user=4519bdcf-aa0b-4b78-b014-e51476ba977c&_apikey=4519bdcfaa0b4b78b014e51476ba977c42d9d75fd621c0ccd433708c1f742487e763cb6a68202c4a5c7aa32c3ef0c99bc18dbc96548bc0c4fd1470abd0418732c82cf53dba34076decc64b68c504026e' + dice = { + 'one': 1, 'two': 2, 'three': 3, 'four': 4, 'five': 5, 'six': 6, + } + card_image_domain = 'http://animal-crossing.com' + headers = { + 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.85 Safari/537.36', + } + + def handle_image(self, image_url): + image = requests.get(image_url, headers=self.headers) + f = ContentFile(image.content, image_url.split('/')[-1]) + return f + + def handle(self, *args, **kwargs): + collection = Collection.objects.get(slug=self.collection_slug) + data = requests.get(self.url).json() + + for item in data['results']: + amiibo, created = AmiiboCard.objects.get_or_create( + collection_id=collection.pk, + collection_number=int(item['number_number']) + ) + print(' => {} {}'.format(collection.slug, amiibo.collection_number)) + amiibo.type = AmiiboCard.CARD + if created: + amiibo.name_en = item['name_value'] + amiibo.name_eu = amiibo.name_en + amiibo.name_us = amiibo.name_en + + # amiibo.collection_number = int(item['number_number']) + amiibo.collection = collection + + # amiibo.image = self.handle_image(item['cardphoto_link']) + else: + if amiibo.image: + amiibo.image.delete() + amiibo.image = self.handle_image('{}{}'.format(self.card_image_domain, + CARD_IMAGES[int(item['number_number'])])) + + amiibo.dice = self.dice[item['dice_value'].lower()] + amiibo.rps = item['rps_value'].lower() + + amiibo.card_type = item['type_value'].lower() + + amiibo.slug = slugify(amiibo.name_en) + + amiibo.save() diff --git a/amiibofindr/apps/amiibo/management/commands/fetch_price.py b/amiibofindr/apps/amiibo/management/commands/fetch_price.py index b4869b7..7a41327 100644 --- a/amiibofindr/apps/amiibo/management/commands/fetch_price.py +++ b/amiibofindr/apps/amiibo/management/commands/fetch_price.py @@ -13,6 +13,16 @@ from amiibofindr.apps.shop.crawlers import Crawler class Command(BaseCommand): + def update_product(self, product, region): + amiibo_shop = AmiiboShop.objects.get( + item_id=product['shop_product_id'], + shop__flag_code=region[0] + ) + if amiibo_shop.shop_name != product['title']: + amiibo_shop.shop_name = product['title'] + amiibo_shop.save() + amiibo_shop.update_price(product['price'], product['currency']) + def handle(self, *args, **kwargs): regions = Shop.objects.all()\ .order_by('flag_code')\ @@ -25,9 +35,8 @@ class Command(BaseCommand): check_price=True).values_list('item_id', flat=True) amazon = Crawler(region[1]) products = amazon.fetch_batch(item_codes) - for product in products: - amiibo_shop = AmiiboShop.objects.get( - item_id=product['shop_product_id'], - shop__flag_code=region[0] - ) - amiibo_shop.update_price(product['price'], product['currency']) + try: + for product in products: + self.update_product(product, region) + except TypeError: + self.update_product(product, region) \ No newline at end of file diff --git a/amiibofindr/apps/amiibo/migrations/0019_auto_20150827_1825.py b/amiibofindr/apps/amiibo/migrations/0019_auto_20150827_1825.py deleted file mode 100644 index 72e2afd..0000000 --- a/amiibofindr/apps/amiibo/migrations/0019_auto_20150827_1825.py +++ /dev/null @@ -1,48 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations -import amiibofindr.apps.amiibo.models - - -class Migration(migrations.Migration): - - dependencies = [ - ('amiibo', '0018_amiiboshop_check_price'), - ] - - operations = [ - migrations.CreateModel( - name='AmiiboCard', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('number', models.IntegerField(default=1)), - ('name', models.CharField(max_length=60)), - ('name_en', models.CharField(max_length=64, null=True, blank=True)), - ('name_es', models.CharField(max_length=64, null=True, blank=True)), - ('name_fr', models.CharField(max_length=64, null=True, blank=True)), - ('name_it', models.CharField(max_length=64, null=True, blank=True)), - ('name_de', models.CharField(max_length=64, null=True, blank=True)), - ('name_eu', models.CharField(max_length=64, null=True, blank=True)), - ('name_jp', models.CharField(max_length=64, null=True, blank=True)), - ('name_us', models.CharField(max_length=64, null=True, blank=True)), - ('slug', models.SlugField(max_length=60)), - ('image', models.ImageField(upload_to=amiibofindr.apps.amiibo.models.image_card_upload)), - ('dice', models.IntegerField(default=1)), - ('rps', models.CharField(default=1, max_length=1, choices=[(1, b'Rock'), (2, b'Paper'), (3, b'Scissors')])), - ], - options={ - 'ordering': ('collection', 'number', 'name'), - }, - ), - migrations.AddField( - model_name='collection', - name='have_cards', - field=models.BooleanField(default=False), - ), - migrations.AddField( - model_name='amiibocard', - name='collection', - field=models.ForeignKey(related_name='cards_qs', to='amiibo.Collection'), - ), - ] diff --git a/amiibofindr/apps/amiibo/migrations/0020_amiiboshop_type.py b/amiibofindr/apps/amiibo/migrations/0020_amiiboshop_type.py index a575986..c12eba3 100644 --- a/amiibofindr/apps/amiibo/migrations/0020_amiiboshop_type.py +++ b/amiibofindr/apps/amiibo/migrations/0020_amiiboshop_type.py @@ -7,7 +7,7 @@ from django.db import models, migrations class Migration(migrations.Migration): dependencies = [ - ('amiibo', '0019_auto_20150827_1825'), + ('amiibo', '0018_amiiboshop_check_price'), ] operations = [ diff --git a/amiibofindr/apps/amiibo/migrations/0021_auto_20150907_2143.py b/amiibofindr/apps/amiibo/migrations/0021_auto_20150907_2143.py new file mode 100644 index 0000000..c931b92 --- /dev/null +++ b/amiibofindr/apps/amiibo/migrations/0021_auto_20150907_2143.py @@ -0,0 +1,137 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import models, migrations +import amiibofindr.apps.amiibo.models + + +BACKUP = {} + + +def backup_images(apps, schema_editor): + Amiibo = apps.get_model("amiibo", "Amiibo") + for amiibo in Amiibo.objects.all(): + BACKUP[amiibo.pk] = { + 'box': amiibo.box, + 'statue': amiibo.statue, + } + +def restore_images(apps, schema_editor): + AmiiboFigure = apps.get_model("amiibo", "AmiiboFigure") + for pk, images in BACKUP.items(): + amiibo = AmiiboFigure.objects.get(pk=pk) + amiibo.box = images['box'] + amiibo.statue = images['statue'] + amiibo.save() + + +def convert_all_to_figures(apps, schema_editor): + Amiibo = apps.get_model('amiibo', 'Amiibo') + AmiiboFigure = apps.get_model('amiibo', 'AmiiboFigure') + for amiibo in Amiibo.objects.all(): + figure = AmiiboFigure(amiibo_ptr=amiibo) + for key, value in amiibo.__dict__.items(): + figure.__dict__[key] = value + figure.save() + + +class Migration(migrations.Migration): + + dependencies = [ + ('amiibo', '0020_amiiboshop_type'), + ] + + operations = [ + # From removed migrations + migrations.RunSQL("DROP TABLE amiibo_amiibocard;"), + migrations.RunSQL("ALTER TABLE amiibo_collection DROP COLUMN have_cards;"), + # Fresh start + migrations.RunPython(backup_images), + migrations.RemoveField( + model_name='amiibo', + name='box', + ), + migrations.RemoveField( + model_name='amiibo', + name='statue', + ), + migrations.AddField( + model_name='amiibo', + name='link_de', + field=models.CharField(max_length=64, null=True, blank=True), + ), + migrations.AddField( + model_name='amiibo', + name='link_en', + field=models.CharField(max_length=64, null=True, blank=True), + ), + migrations.AddField( + model_name='amiibo', + name='link_es', + field=models.CharField(max_length=64, null=True, blank=True), + ), + migrations.AddField( + model_name='amiibo', + name='link_fr', + field=models.CharField(max_length=64, null=True, blank=True), + ), + migrations.AddField( + model_name='amiibo', + name='link_it', + field=models.CharField(max_length=64, null=True, blank=True), + ), + migrations.AddField( + model_name='amiibo', + name='name_de', + field=models.CharField(max_length=64, null=True, blank=True), + ), + migrations.AddField( + model_name='amiibo', + name='name_en', + field=models.CharField(max_length=64, null=True, blank=True), + ), + migrations.AddField( + model_name='amiibo', + name='name_es', + field=models.CharField(max_length=64, null=True, blank=True), + ), + migrations.AddField( + model_name='amiibo', + name='name_fr', + field=models.CharField(max_length=64, null=True, blank=True), + ), + migrations.AddField( + model_name='amiibo', + name='name_it', + field=models.CharField(max_length=64, null=True, blank=True), + ), + migrations.AddField( + model_name='amiibo', + name='type', + field=models.CharField(default=b'figure', max_length=9, choices=[(b'figure', b'Figure'), (b'card', b'Card')]), + ), + migrations.CreateModel( + name='AmiiboCard', + fields=[ + ('amiibo_ptr', models.OneToOneField(parent_link=True, auto_created=True, primary_key=True, serialize=False, to='amiibo.Amiibo')), + ('image', models.ImageField(upload_to=amiibofindr.apps.amiibo.models.image_card_upload)), + ('dice', models.IntegerField(default=1)), + ('rps', models.CharField(default=1, max_length=1, choices=[(1, b'Rock'), (2, b'Paper'), (3, b'Scissors')])), + ], + options={ + 'ordering': ('collection', 'collection_number', 'name_eu'), + }, + bases=('amiibo.amiibo',), + ), + migrations.CreateModel( + name='AmiiboFigure', + fields=[ + ('amiibo_ptr', models.OneToOneField(parent_link=True, auto_created=True, primary_key=True, serialize=False, to='amiibo.Amiibo')), + ('statue', models.ImageField(upload_to=amiibofindr.apps.amiibo.models.image_statue_upload)), + ('box', models.ImageField(null=True, upload_to=amiibofindr.apps.amiibo.models.image_box_upload, blank=True)), + ], + bases=('amiibo.amiibo',), + ), + migrations.RunPython(convert_all_to_figures), + migrations.RunPython(restore_images), + ] diff --git a/amiibofindr/apps/amiibo/migrations/0022_useramiibo.py b/amiibofindr/apps/amiibo/migrations/0022_useramiibo.py new file mode 100644 index 0000000..9d65f3e --- /dev/null +++ b/amiibofindr/apps/amiibo/migrations/0022_useramiibo.py @@ -0,0 +1,28 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import models, migrations +from django.conf import settings + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('amiibo', '0021_auto_20150907_2143'), + ] + + operations = [ + migrations.CreateModel( + name='UserAmiibo', + fields=[ + ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('want', models.BooleanField(default=False)), + ('have', models.BooleanField(default=False)), + ('trade', models.BooleanField(default=False)), + ('date', models.DateTimeField(auto_now=True)), + ('_amiibo', models.ForeignKey(to='amiibo.Amiibo')), + ('user', models.ForeignKey(to=settings.AUTH_USER_MODEL)), + ], + ), + ] diff --git a/amiibofindr/apps/amiibo/migrations/0023_amiiboshop_image.py b/amiibofindr/apps/amiibo/migrations/0023_amiiboshop_image.py new file mode 100644 index 0000000..7768881 --- /dev/null +++ b/amiibofindr/apps/amiibo/migrations/0023_amiiboshop_image.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import models, migrations +import amiibofindr.apps.amiibo.models + + +class Migration(migrations.Migration): + + dependencies = [ + ('amiibo', '0022_useramiibo'), + ] + + operations = [ + migrations.AddField( + model_name='amiiboshop', + name='image', + field=models.ImageField(null=True, upload_to=amiibofindr.apps.amiibo.models.shop_item_upload, blank=True), + ), + ] diff --git a/amiibofindr/apps/amiibo/migrations/0024_auto_20150908_2114.py b/amiibofindr/apps/amiibo/migrations/0024_auto_20150908_2114.py new file mode 100644 index 0000000..adb22f7 --- /dev/null +++ b/amiibofindr/apps/amiibo/migrations/0024_auto_20150908_2114.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import models, migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('amiibo', '0023_amiiboshop_image'), + ] + + operations = [ + migrations.RenameField( + model_name='useramiibo', + old_name='have', + new_name='own', + ), + ] diff --git a/amiibofindr/apps/amiibo/migrations/0025_amiibocard_card_type.py b/amiibofindr/apps/amiibo/migrations/0025_amiibocard_card_type.py new file mode 100644 index 0000000..017e7dc --- /dev/null +++ b/amiibofindr/apps/amiibo/migrations/0025_amiibocard_card_type.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import models, migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('amiibo', '0024_auto_20150908_2114'), + ] + + operations = [ + migrations.AddField( + model_name='amiibocard', + name='card_type', + field=models.CharField(default=b'special', max_length=12), + ), + ] diff --git a/amiibofindr/apps/amiibo/migrations/0026_auto_20150909_2331.py b/amiibofindr/apps/amiibo/migrations/0026_auto_20150909_2331.py new file mode 100644 index 0000000..0e13a2c --- /dev/null +++ b/amiibofindr/apps/amiibo/migrations/0026_auto_20150909_2331.py @@ -0,0 +1,39 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import models, migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('amiibo', '0025_amiibocard_card_type'), + ] + + operations = [ + migrations.AddField( + model_name='collection', + name='name_de', + field=models.CharField(max_length=64, null=True, blank=True), + ), + migrations.AddField( + model_name='collection', + name='name_en', + field=models.CharField(max_length=64, null=True, blank=True), + ), + migrations.AddField( + model_name='collection', + name='name_es', + field=models.CharField(max_length=64, null=True, blank=True), + ), + migrations.AddField( + model_name='collection', + name='name_fr', + field=models.CharField(max_length=64, null=True, blank=True), + ), + migrations.AddField( + model_name='collection', + name='name_it', + field=models.CharField(max_length=64, null=True, blank=True), + ), + ] diff --git a/amiibofindr/apps/amiibo/migrations/0027_auto_20150910_0021.py b/amiibofindr/apps/amiibo/migrations/0027_auto_20150910_0021.py new file mode 100644 index 0000000..753569d --- /dev/null +++ b/amiibofindr/apps/amiibo/migrations/0027_auto_20150910_0021.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import models, migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('amiibo', '0026_auto_20150909_2331'), + ] + + operations = [ + migrations.AlterField( + model_name='amiibocard', + name='rps', + field=models.CharField(default=b'rock', max_length=1, choices=[(b'rock', b'Rock'), (b'paper', b'Paper'), (b'scissors', b'Scissors')]), + ), + ] diff --git a/amiibofindr/apps/amiibo/migrations/0028_auto_20150910_0021.py b/amiibofindr/apps/amiibo/migrations/0028_auto_20150910_0021.py new file mode 100644 index 0000000..89a4de8 --- /dev/null +++ b/amiibofindr/apps/amiibo/migrations/0028_auto_20150910_0021.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import models, migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('amiibo', '0027_auto_20150910_0021'), + ] + + operations = [ + migrations.AlterField( + model_name='amiibocard', + name='rps', + field=models.CharField(default=b'rock', max_length=12, choices=[(b'rock', b'Rock'), (b'paper', b'Paper'), (b'scissors', b'Scissors')]), + ), + ] diff --git a/amiibofindr/apps/amiibo/migrations/0029_amiiboshop_shop_name.py b/amiibofindr/apps/amiibo/migrations/0029_amiiboshop_shop_name.py new file mode 100644 index 0000000..d5c2e53 --- /dev/null +++ b/amiibofindr/apps/amiibo/migrations/0029_amiiboshop_shop_name.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import models, migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('amiibo', '0028_auto_20150910_0021'), + ] + + operations = [ + migrations.AddField( + model_name='amiiboshop', + name='shop_name', + field=models.CharField(max_length=255, null=True, blank=True), + ), + ] diff --git a/amiibofindr/apps/amiibo/migrations/0030_auto_20150910_2116.py b/amiibofindr/apps/amiibo/migrations/0030_auto_20150910_2116.py new file mode 100644 index 0000000..4d396bf --- /dev/null +++ b/amiibofindr/apps/amiibo/migrations/0030_auto_20150910_2116.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- + +from __future__ import unicode_literals + +from django.db import models, migrations + + +BACKUP = {} + + +def backup(apps, schema_editor): + AmiiboShop = apps.get_model("amiibo", "AmiiboShop") + for shop in AmiiboShop.objects.all(): + BACKUP[shop.pk] = { + 'amiibo_id': shop.amiibo_id, + } + +def restore(apps, schema_editor): + AmiiboShop = apps.get_model("amiibo", "AmiiboShop") + Amiibo = apps.get_model("amiibo", "Amiibo") + for pk, info in BACKUP.items(): + a = AmiiboShop.objects.get(pk=pk) + a.amiibo.add(Amiibo.objects.get(pk=int(info['amiibo_id']))) + a.save() + + +class Migration(migrations.Migration): + + dependencies = [ + ('amiibo', '0029_amiiboshop_shop_name'), + ] + + operations = [ + migrations.RunPython(backup), + migrations.RemoveField( + model_name='amiiboshop', + name='amiibo', + ), + migrations.AddField( + model_name='amiiboshop', + name='amiibo', + field=models.ManyToManyField(related_name='shops_set', to='amiibo.Amiibo'), + ), + migrations.RunPython(restore), + ] diff --git a/amiibofindr/apps/amiibo/migrations/0031_english_names.py b/amiibofindr/apps/amiibo/migrations/0031_english_names.py new file mode 100644 index 0000000..4fc7f74 --- /dev/null +++ b/amiibofindr/apps/amiibo/migrations/0031_english_names.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- + +from __future__ import unicode_literals + +from django.db import migrations + + +def convert(apps, schema_editor): + Amiibo = apps.get_model("amiibo", "Amiibo") + for amiibo in Amiibo.objects.all(): + amiibo.name_en = amiibo.name_eu + amiibo.save() + + +class Migration(migrations.Migration): + + dependencies = [ + ('amiibo', '0030_auto_20150910_2116'), + ] + + operations = [ + migrations.RunPython(convert), + ] diff --git a/amiibofindr/apps/amiibo/models.py b/amiibofindr/apps/amiibo/models.py index 8e20f71..088921f 100644 --- a/amiibofindr/apps/amiibo/models.py +++ b/amiibofindr/apps/amiibo/models.py @@ -1,16 +1,16 @@ # coding: utf-8 -# python import os -# django +from django.apps import apps from django.conf import settings +from django.core.urlresolvers import reverse from django.db import models +from django.utils.text import slugify +from django.utils.translation import ugettext_lazy as _, get_language -# 3rd party from amazonify import amazonify -# project from amiibofindr.apps.shop.crawlers import Crawler @@ -28,29 +28,63 @@ def image_box_upload(self, filename): def image_card_upload(self, filename): name, extension = os.path.splitext(filename) - return 'amiibos/{}/card-{}-{}{}'.format( - self.collection.slug, self.number, self.slug, extension) + return 'amiibos/c/{}/{}_{}{}'.format( + self.collection.pk, self.collection_number, self.pk, extension) + +def shop_item_upload(self, filename): + name, extension = os.path.splitext(filename) + return 'amiibos/si/{}_{}{}'.format( + self.shop.pk, self.pk, extension) + # # Models class Collection(models.Model): slug = models.SlugField(max_length=128) + + name_en = models.CharField(max_length=64, blank=True, null=True) + name_es = models.CharField(max_length=64, blank=True, null=True) + name_fr = models.CharField(max_length=64, blank=True, null=True) + name_it = models.CharField(max_length=64, blank=True, null=True) + name_de = models.CharField(max_length=64, blank=True, null=True) + name_eu = models.CharField(max_length=128) name_jp = models.CharField(max_length=128, blank=True, null=True) name_us = models.CharField(max_length=128, blank=True, null=True) - have_cards = models.BooleanField(default=False) + + @models.permalink + def get_absolute_url(self): + return ('amiibo:figures-list', (slugify(self.name), self.pk)) + + def get_absolute_url_figures(self): + return reverse('amiibo:figures-list', args=(slugify(self.name), self.pk)) + + def get_absolute_url_cards(self): + return reverse('amiibo:cards-list', args=(slugify(self.name), self.pk)) @property def amiibos(self): return self.amiibos_qs.all() - @models.permalink - def get_absolute_url(self): - return ('amiibo:collection', [self.slug]) + @property + def figures(self): + return AmiiboFigure.objects.filter(collection_id=self.pk) + + @property + def cards(self): + return AmiiboCard.objects.filter(collection_id=self.pk) @property def name(self): + name = getattr(self, 'name_{}'.format(get_language()), None) + + if name: + return name + + if self.name_en: + return self.name_en + return self.name_eu def __unicode__(self): @@ -58,75 +92,21 @@ class Collection(models.Model): class Amiibo(models.Model): + FIGURE = 'figure' + CARD = 'card' + AMIIBO_TYPES = ( + (FIGURE, 'Figure'), + (CARD, 'Card'), + ) + collection = models.ForeignKey(Collection, related_name='amiibos_qs') collection_number = models.IntegerField(blank=True, null=True) + type = models.CharField(max_length=9, default=FIGURE, choices=AMIIBO_TYPES) model_number = models.CharField(max_length=20, blank=True, null=True) slug = models.SlugField(max_length=64) - statue = models.ImageField(upload_to=image_statue_upload) - box = models.ImageField(upload_to=image_box_upload, blank=True, null=True) - - name_eu = models.CharField(max_length=64, blank=True, null=True) - name_jp = models.CharField(max_length=64, blank=True, null=True) - name_us = models.CharField(max_length=64, blank=True, null=True) - - # Links - link_eu = models.CharField(max_length=255, blank=True, null=True) - link_jp = models.CharField(max_length=255, blank=True, null=True) - link_us = models.CharField(max_length=255, blank=True, null=True) - - release_date = models.DateField(null=True, blank=True) - - visible = models.BooleanField(default=True) - - def get_all_names(self): - result = u'' - for key, value in self.__dict__.items(): - if u'name_' in key and self.__dict__[key]: - result += u' {}'.format(self.__dict__[key]) - - return result - - @models.permalink - def get_absolute_url(self): - return ('amiibo:amiibo', [self.collection.slug, self.slug]) - - @property - def image_box(self): - return 'images/amiibo/{}/{}-box.jpg'.format( - self.collection.slug, self.slug - ) - - @property - def image_statue(self): - return 'images/amiibo/{}/{}.png'.format( - self.collection.slug, self.slug - ) - - def __unicode__(self): - return unicode(self.name_eu) or u'' - - @property - def name(self): - return self.name_eu - - -class AmiiboCard(models.Model): - ROCK = 1 - PAPER = 2 - SCISSORS = 3 - RPS_CHOICES = ( - (ROCK, 'Rock'), - (PAPER, 'Paper'), - (SCISSORS, 'Scissors'), - ) - - collection = models.ForeignKey(Collection, related_name='cards_qs') - number = models.IntegerField(default=1) - name = models.CharField(max_length=60) - name_en = models.CharField(max_length=64, blank=True, null=True) name_es = models.CharField(max_length=64, blank=True, null=True) name_fr = models.CharField(max_length=64, blank=True, null=True) @@ -137,16 +117,157 @@ class AmiiboCard(models.Model): name_jp = models.CharField(max_length=64, blank=True, null=True) name_us = models.CharField(max_length=64, blank=True, null=True) - slug = models.SlugField(max_length=60) - image = models.ImageField(upload_to=image_card_upload) - dice = models.IntegerField(default=1) - rps = models.CharField(choices=RPS_CHOICES, default=ROCK, max_length=1) + # Links + link_en = models.CharField(max_length=64, blank=True, null=True) + link_es = models.CharField(max_length=64, blank=True, null=True) + link_fr = models.CharField(max_length=64, blank=True, null=True) + link_it = models.CharField(max_length=64, blank=True, null=True) + link_de = models.CharField(max_length=64, blank=True, null=True) - class Meta: - ordering = ('collection', 'number', 'name', ) + link_eu = models.CharField(max_length=255, blank=True, null=True) + link_jp = models.CharField(max_length=255, blank=True, null=True) + link_us = models.CharField(max_length=255, blank=True, null=True) + + release_date = models.DateField(null=True, blank=True) + + visible = models.BooleanField(default=True) + + _types = { + 'figure': 'amiibo.AmiiboFigure', + 'card': 'amiibo.AmiiboCard', + } + + def as_type(self): + """ Returns the amiibo as the correct type model """ + # TODO: Improve this, because queries. Change to a manager. + model = apps.get_model(self._types[self.type]) + return model.objects.get(pk=self.pk) + + def get_all_names(self): + result = u'' + for key, value in self.__dict__.items(): + if u'name_' in key and self.__dict__[key]: + result += u' {}'.format(self.__dict__[key]) + + return result + + @property + def is_card(self): + return self.type == self.CARD + + @property + def is_figure(self): + return self.type == self.FIGURE def __unicode__(self): - return u"{} {}".format(self.number, self.name) + return unicode(self.name_eu) or u'' + + @property + def name(self): + name = getattr(self, 'name_{}'.format(get_language()), None) + + if name: + return name + + if self.name_en: + return self.name_en + + return self.name_eu + + +class AmiiboFigure(Amiibo): + statue = models.ImageField(upload_to=image_statue_upload) + box = models.ImageField(upload_to=image_box_upload, blank=True, null=True) + + @models.permalink + def get_absolute_url(self): + return ('amiibo:figure-detail', [self.collection.slug, slugify(self.name), self.pk]) + + @property + def image_box(self): + return 'images/amiibo/{}/{}-box.jpg'.format( + self.collection.slug, self.slug + ) + + @property + def image(self): + return self.statue + + @property + def image_statue(self): + return 'images/amiibo/{}/{}.png'.format( + self.collection.slug, self.slug + ) + + +class AmiiboCard(Amiibo): + ROCK = 'rock' + PAPER = 'paper' + SCISSORS = 'scissors' + RPS_CHOICES = ( + (ROCK, _('Rock')), + (PAPER, _('Paper')), + (SCISSORS, _('Scissors')), + ) + + CARD_TYPE_CHOICES = ( + ('alligator', _('Alligator')), + ('anteater', _('Anteater')), + ('bear', _('Bear')), + ('bird', _('Bird')), + ('bull', _('Bull')), + ('cat', _('Cat')), + ('chicken', _('Chicken')), + ('cow', _('Cow')), + ('cub', _('Cub')), + ('deer', _('Deer')), + ('dog', _('Dog')), + ('duck', _('Duck')), + ('eagle', _('Eagle')), + ('elephant', _('Elephant')), + ('frog', _('Frog')), + ('goat', _('Goat')), + ('gorilla', _('Gorilla')), + ('hamster', _('Hamster')), + ('hippo', _('Hippo')), + ('horse', _('Horse')), + ('kangaroo', _('Kangaroo')), + ('koala', _('Koala')), + ('lion', _('Lion')), + ('monkey', _('Monkey')), + ('mouse', _('Mouse')), + ('octopus', _('Octopus')), + ('ostrich', _('Ostrich')), + ('penguin', _('Penguin')), + ('pig', _('Pig')), + ('rabbit', _('Rabbit')), + ('rhino', _('Rhino')), + ('sheep', _('Sheep')), + ('special', _('Special')), + ('squirrel', _('Squirrel')), + ('tiger', _('Tiger')), + ('wolf', _('Wolf')), + ) + + image = models.ImageField(upload_to=image_card_upload) + card_type = models.CharField(max_length=12, default='special') + + dice = models.IntegerField(default=1) + rps = models.CharField(choices=RPS_CHOICES, default=ROCK, max_length=12) + + class Meta: + ordering = ('collection', 'collection_number', 'name_eu', ) + + def get_card_type_display(self): + return dict(self.CARD_TYPE_CHOICES)[self.card_type] + + @models.permalink + def get_absolute_url(self): + return ('amiibo:card-detail', + [slugify(self.collection.name), slugify(self.name), self.pk]) + + def __unicode__(self): + return u"{} {}".format(self.collection_number, self.slug) class AmiiboShop(models.Model): @@ -158,12 +279,15 @@ class AmiiboShop(models.Model): (PACK, 'Pack'), ) - amiibo = models.ForeignKey(Amiibo, related_name='shops_set') + amiibo = models.ManyToManyField(Amiibo, related_name='shops_set') shop = models.ForeignKey('shop.Shop', related_name='amiibos_set') type = models.CharField(choices=ITEM_TYPES, default=FIGURE, max_length=1) url = models.TextField() item_id = models.CharField(max_length=64) check_price = models.BooleanField(default=True) + shop_name = models.CharField(max_length=255, blank=True, null=True) + image = models.ImageField(upload_to=shop_item_upload, + null=True, blank=True) class Meta: ordering = ('shop__name', ) @@ -194,7 +318,7 @@ class AmiiboShop(models.Model): return self.type == self.PACK def __unicode__(self): - return u'{} in {}'.format(self.amiibo.name, self.shop.name) + return u'{} in {}'.format(self.shop_name, self.shop.name) class AmiiboPrice(models.Model): @@ -258,3 +382,17 @@ class AmiiboPriceHistory(models.Model): self.diff, self.currency, self.date ) + + +class UserAmiibo(models.Model): + user = models.ForeignKey(settings.AUTH_USER_MODEL) + _amiibo = models.ForeignKey(Amiibo) + + want = models.BooleanField(default=False) + own = models.BooleanField(default=False) + trade = models.BooleanField(default=False) + date = models.DateTimeField(auto_now=True) + + @property + def amiibo(self): + return self._amiibo.as_type() diff --git a/amiibofindr/apps/amiibo/services.py b/amiibofindr/apps/amiibo/services.py new file mode 100644 index 0000000..6d715d3 --- /dev/null +++ b/amiibofindr/apps/amiibo/services.py @@ -0,0 +1,54 @@ +# -*- coding: utf-8 -*- + +from . import models + + +def is_owned_by(amiibo, user): + relation, created = models.UserAmiibo.objects.get_or_create( + _amiibo=amiibo, user=user) + return relation.own + +def user_add_owned(user, amiibo): + relation, created = models.UserAmiibo.objects.get_or_create( + _amiibo=amiibo, user=user) + relation.own = True + relation.want = False + relation.save() + +def user_remove_owned(user, amiibo): + relation, created = models.UserAmiibo.objects.get_or_create( + _amiibo=amiibo, user=user) + relation.own = False + relation.trade = False + relation.save() + +def user_add_wishlist(user, amiibo): + relation, created = models.UserAmiibo.objects.get_or_create( + _amiibo=amiibo, user=user) + relation.own = False + relation.want = True + relation.save() + +def user_remove_wishlist(user, amiibo): + relation, created = models.UserAmiibo.objects.get_or_create( + _amiibo=amiibo, user=user) + relation.want = False + relation.save() + +def user_add_trade(user, amiibo): + relation, created = models.UserAmiibo.objects.get_or_create( + _amiibo=amiibo, user=user) + relation.trade = True + relation.save() + +def user_remove_trade(user, amiibo): + relation, created = models.UserAmiibo.objects.get_or_create( + _amiibo=amiibo, user=user) + relation.trade = False + relation.save() + +def user_toggle_trade(user, amiibo): + relation, created = models.UserAmiibo.objects.get_or_create( + _amiibo=amiibo, user=user) + relation.trade = not relation.trade + relation.save() diff --git a/amiibofindr/apps/amiibo/urls.py b/amiibofindr/apps/amiibo/urls.py index 7bc9c3a..3d21d29 100644 --- a/amiibofindr/apps/amiibo/urls.py +++ b/amiibofindr/apps/amiibo/urls.py @@ -2,18 +2,39 @@ # django from django.conf.urls import url, patterns +from django.utils.translation import ugettext_lazy as _ # home -from .views import AmiiboView, CollectionView - +from .views import ( + AmiiboView, AmiiboCardView, AmiiboFigureView, + CollectionView, CollectionCardView, CollectionFigureView, + UserAmiiboView +) urlpatterns = patterns( '', - url(r'^(?P[\w\d\-]+)/$', - CollectionView.as_view(), - name='collection'), - url(r'^(?P[\w\d\-]+)/(?P[\w\d\-]+)$', - AmiiboView.as_view(), - name='amiibo'), + url(_('^cards$'), + CollectionCardView.as_view(), + name='cards-all'), + url(_(r'^figures$'), + CollectionFigureView.as_view(), + name='figures-all'), + url(_(r'^cards/(?P[\w\d\-]+)?\-(?P\d+)$'), + CollectionCardView.as_view(), + name='cards-list'), + url(_(r'^figures/(?P[\w\d\-]+)?\-(?P\d+)$'), + CollectionFigureView.as_view(), + name='figures-list'), + + url(_(r'^cards/(?P[\w\d\-]+)?/(?P[\w\d\-]+)?-(?P[\w\d\-]+)$'), + AmiiboCardView.as_view(), + name='card-detail'), + url(_(r'^figures/(?P[\w\d\-]+)?/(?P[\w\d\-]+)?-(?P[\w\d\-]+)$'), + AmiiboFigureView.as_view(), + name='figure-detail'), + + url(_(r'^amiibo/(?P\d+)/(?P[\w\+\-\=]+)$'), + UserAmiiboView.as_view(), + name='user-action'), ) diff --git a/amiibofindr/apps/amiibo/views.py b/amiibofindr/apps/amiibo/views.py index 5eeb47d..d882bf0 100644 --- a/amiibofindr/apps/amiibo/views.py +++ b/amiibofindr/apps/amiibo/views.py @@ -1,39 +1,146 @@ -# coding: utf-8 +# -*- coding: utf-8 -*- -# django +from django.http import HttpResponseRedirect from django.shortcuts import render, get_object_or_404 from django.views.generic.base import View -# amiibo -from amiibofindr.apps.amiibo.models import Collection, Amiibo +from .models import ( + Collection, Amiibo, + AmiiboFigure, AmiiboCard, + UserAmiibo +) +from . import services class CollectionView(View): template = 'amiibo/collection.html' + type = Amiibo.FIGURE + model = AmiiboFigure + section = 'collection' - def get(self, request, collection='all'): - if collection != 'all': - collection = get_object_or_404(Collection, slug=collection) - amiibo_list = collection.amiibos + def get(self, request, collection=None, dummy=None): + if collection: + collection = get_object_or_404(Collection, pk=collection) + if self.type == self.model.FIGURE: + amiibo_list = collection.figures.filter(visible=True) + elif self.type == self.model.CARD: + amiibo_list = collection.cards.filter(visible=True) + else: + amiibo_list = collection.amiibo.filter(visible=True) else: collection = None - amiibo_list = Amiibo.objects.all().order_by('name_eu') + amiibo_list = self.model.objects.filter(visible=True) return render(request, self.template, { 'selected_collection': collection, 'amiibo_list': amiibo_list, + 'item': collection, + 'section': self.section, }) -class AmiiboView(View): - template = 'amiibo/amiibo.html' +class CollectionFigureView(CollectionView): + type = Amiibo.FIGURE + model = AmiiboFigure - def get(self, request, collection=None, amiibo=None): - amiibo_obj = get_object_or_404(Amiibo, - slug=amiibo, - collection__slug=collection) + +class CollectionCardView(CollectionView): + template = 'amiibo/collection-cards.html' + type = Amiibo.CARD + model = AmiiboCard + + +class AmiiboView(View): + section = 'amiibo' + def get(self, request, collection=None, amiibo=None, dummy=None): + amiibo_obj = get_object_or_404(self.model, + pk=amiibo, + # collection__slug=collection, + type=self.type) return render(request, self.template, { 'selected_collection': amiibo_obj.collection, 'amiibo': amiibo_obj, + 'item': amiibo_obj, + 'section': self.section, + 'users_trading': UserAmiibo.objects.filter( + trade=True, _amiibo_id=amiibo_obj.pk + ).order_by('user__username'), }) + +class AmiiboFigureView(AmiiboView): + template = 'amiibo/amiibo-figure.html' + type = Amiibo.FIGURE + model = AmiiboFigure + + +class AmiiboCardView(AmiiboView): + template = 'amiibo/amiibo-card.html' + type = Amiibo.CARD + model = AmiiboCard + + +class UserAmiiboView(View): + actions = { + '+owned': 'add_owned', + '-owned': 'remove_owned', + '+wishlist': 'add_wishlist', + '-wishlist': 'remove_wishlist', + '+trade': 'add_trade', + '-trade': 'remove_trade', + '+-trade': 'toggle_trade', + } + + ajax = { + 'detail': 'amiibo/widgets/relation_header_buttons.html', + 'list': 'amiibo/widgets/amiibo-card.html', + } + + def get(self, request, amiibo, action): + obj = get_object_or_404(Amiibo, pk=amiibo) + amiibo = obj.as_type() + if action in self.actions: + method = getattr(self, self.actions[action], None) + if method: + result = method(request, amiibo) + if result: + return result + + # Handle templating + request_from = request.GET.get('from', None) + if request_from in self.ajax: + return render(request, self.ajax[request_from], + { 'amiibo': amiibo, 'request': request }) + + return HttpResponseRedirect(amiibo.as_type().get_absolute_url()) + + def add_wishlist(self, request, amiibo): + services.user_add_wishlist(request.user, amiibo) + # TODO: Add message + + def remove_wishlist(self, request, amiibo): + services.user_remove_wishlist(request.user, amiibo) + # TODO: Add message + + def add_trade(self, request, amiibo): + if services.is_owned_by(amiibo, request.user): + services.user_add_trade(request.user, amiibo) + # TODO: Add message + + def remove_trade(self, request, amiibo): + if services.is_owned_by(amiibo, request.user): + services.user_remove_trade(request.user, amiibo) + # TODO: Add message + + def toggle_trade(self, request, amiibo): + if services.is_owned_by(amiibo, request.user): + services.user_toggle_trade(request.user, amiibo) + # TODO: Add message + + def add_owned(self, request, amiibo): + services.user_add_owned(request.user, amiibo) + # TODO: Add message + + def remove_owned(self, request, amiibo): + services.user_remove_owned(request.user, amiibo) + # TODO: Add message diff --git a/amiibofindr/apps/core/context_processors.py b/amiibofindr/apps/core/context_processors.py index 9a6c7a8..3e605da 100644 --- a/amiibofindr/apps/core/context_processors.py +++ b/amiibofindr/apps/core/context_processors.py @@ -1,9 +1,9 @@ # coding: utf-8 -# py3 from __future__ import unicode_literals -# django +from django.utils.translation import activate, deactivate, get_language +from django.core.urlresolvers import resolve, reverse_lazy from django.conf import settings @@ -18,3 +18,31 @@ def files(request): 'MEDIA_URL': settings.MEDIA_URL, 'STATIC_URL': settings.STATIC_URL, } + + +def i18n(request): + lang = get_language() + result = [] + try: + res = resolve(request.path) + for lang_code, name in settings.LANGUAGES: + activate(lang_code) + this = { + 'code': lang_code, + 'name': name, + 'url': reverse_lazy(res.view_name, args=res.args, kwargs=res.kwargs) + } + result.append(this) + deactivate() + activate(lang) + except: + for lang_code, name in settings.LANGUAGES: + this = { + 'code': lang_code, + 'name': name, + 'url': '/{}/'.format(lang_code) + } + result.append(this) + return { + 'LANGUAGES': result + } diff --git a/amiibofindr/apps/core/middleware.py b/amiibofindr/apps/core/middleware.py new file mode 100644 index 0000000..9310688 --- /dev/null +++ b/amiibofindr/apps/core/middleware.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- + +from django.conf import settings +from django.utils.translation import activate + + +class LanguageMiddleware: + def process_request(self, request): + languages = dict(settings.LANGUAGES) + accept_language = request.META.get('HTTP_ACCEPT_LANGUAGE', '') + + if not accept_language: + return None + + lang = accept_language.split(',')[0] + + if '-' in lang: + lang = lang.split('-')[0] + + if lang in languages: + activate(lang) + + return None diff --git a/amiibofindr/apps/home/urls.py b/amiibofindr/apps/home/urls.py index a8d1cb6..48ef40a 100644 --- a/amiibofindr/apps/home/urls.py +++ b/amiibofindr/apps/home/urls.py @@ -9,5 +9,5 @@ from .views import HomeView urlpatterns = patterns( '', - url(r'^$', HomeView.as_view()), + url(r'^$', HomeView.as_view(), name='home'), ) diff --git a/amiibofindr/apps/home/views.py b/amiibofindr/apps/home/views.py index 2f97458..5e3f6e5 100644 --- a/amiibofindr/apps/home/views.py +++ b/amiibofindr/apps/home/views.py @@ -1,11 +1,11 @@ -# coding: utf-8 +# -*- coding: utf-8 -*- -# django from django.views.generic.base import View -from django.shortcuts import redirect -from django.core.urlresolvers import reverse +from django.shortcuts import render class HomeView(View): + template = 'home/home.html' + def get(self, request): - return redirect(reverse('amiibo:collection', args=['all'])) + return render(request, self.template, {}) diff --git a/amiibofindr/apps/notifications/admin.py b/amiibofindr/apps/notifications/admin.py index 2d3085d..c06ea05 100644 --- a/amiibofindr/apps/notifications/admin.py +++ b/amiibofindr/apps/notifications/admin.py @@ -11,8 +11,8 @@ from .models import AmiiboNotification class AmiiboNotificationAdmin(reversion.VersionAdmin): - list_display = ('amiibo', 'max_price', 'interval', 'shops_list', 'last_notification',) - list_editable = ('interval', ) + list_display = ('amiibo', 'max_price', 'interval', 'shops_list', 'notify_twitter', 'last_notification',) + list_editable = ('interval', 'notify_twitter', ) filter_horizontal = ('shops', ) def shops_list(self, obj): diff --git a/amiibofindr/apps/profile/__init__.py b/amiibofindr/apps/profile/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/amiibofindr/apps/profile/models.py b/amiibofindr/apps/profile/models.py new file mode 100644 index 0000000..e69de29 diff --git a/amiibofindr/apps/profile/templatetags/__init__.py b/amiibofindr/apps/profile/templatetags/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/amiibofindr/apps/profile/templatetags/gravatar.py b/amiibofindr/apps/profile/templatetags/gravatar.py new file mode 100644 index 0000000..84ff405 --- /dev/null +++ b/amiibofindr/apps/profile/templatetags/gravatar.py @@ -0,0 +1,13 @@ +# -*- coding: utf-8 -*- +import hashlib + +from django import template + +register = template.Library() + +@register.simple_tag +def gravatar(user, size=200): + return 'https://www.gravatar.com/avatar/{}?s={}&d=mm'.format( + hashlib.md5(user.email).hexdigest(), + size + ) diff --git a/amiibofindr/apps/profile/urls.py b/amiibofindr/apps/profile/urls.py new file mode 100644 index 0000000..aa61f9c --- /dev/null +++ b/amiibofindr/apps/profile/urls.py @@ -0,0 +1,20 @@ +# coding: utf-8 + +# django +from django.conf.urls import url, patterns +from django.utils.translation import ugettext_lazy as _ + +# home +from .views import ProfileView + + +urlpatterns = patterns( + '', + url(_(r'^profile/(?P[\w\d\-]+)/$'), + ProfileView.as_view(), + name='main'), + url(_(r'^profile/(?P[\w\d\-]+)/(?P\w+)/(?P\w+)/$'), + ProfileView.as_view(), + name='main-filter'), + +) diff --git a/amiibofindr/apps/profile/views.py b/amiibofindr/apps/profile/views.py new file mode 100644 index 0000000..3259811 --- /dev/null +++ b/amiibofindr/apps/profile/views.py @@ -0,0 +1,42 @@ +# -*- coding: utf-8 -*- + +from django.contrib.auth import get_user_model +from django.views.generic.base import View +from django.shortcuts import render, get_object_or_404 + +from amiibofindr.apps.amiibo.models import UserAmiibo, AmiiboFigure, AmiiboCard + + +class ProfileView(View): + template = 'profile/main.html' + + types = { + 'figures': ('figure', AmiiboFigure), + 'cards': ('card', AmiiboCard), + } + + relations = ('own', 'want', 'trade', ) + + def get(self, request, username, type='figures', relation='own'): + user = get_object_or_404(get_user_model(), username=username) + relation_filter = {relation: True} + amiibo_pks = UserAmiibo.objects.filter( + user=user, + _amiibo__type=self.types[type][0], + **relation_filter + ).values_list('_amiibo__id', flat=True) + + amiibo_list = self.types[type][1].objects.filter(pk__in=amiibo_pks) + + return render(request, self.template, { + 'this_user': user, + 'amiibo_list': amiibo_list, + 'type': type, + 'relation': relation, + 'stats': { + 'figures_count': UserAmiibo.objects.filter( + user=user, _amiibo__type='figure', own=True).count(), + 'cards_count': UserAmiibo.objects.filter( + user=user, _amiibo__type='card', own=True).count(), + } + }) diff --git a/amiibofindr/apps/shop/crawlers/_amazon.py b/amiibofindr/apps/shop/crawlers/_amazon.py index 4e8da14..59ed2c4 100644 --- a/amiibofindr/apps/shop/crawlers/_amazon.py +++ b/amiibofindr/apps/shop/crawlers/_amazon.py @@ -3,6 +3,7 @@ # py from __future__ import unicode_literals from time import sleep +import urllib2 # third party from amazon.api import AmazonAPI @@ -26,26 +27,36 @@ class AmazonBaseCrawler(object): region=self.region ) + def parse_product(self, product): + price_and_currency = product.price_and_currency + + price = price_and_currency[0] + currency = price_and_currency[1] + + if currency == 'JPY': + price = float(price)*100 + + print(self.region, product.asin, price, currency, product.title) + + return { + 'shop_product_id': product.asin, + 'price': price, + 'currency': currency, + 'title': product.title, + } + def fetch_batch(self, product_ids): result = [] for chunk_product_ids in chunks(product_ids, self.max_batch_lookup): - products = self.amazon.lookup(ItemId=','.join(chunk_product_ids)) - for product in products: - price_and_currency = product.price_and_currency - - price = price_and_currency[0] - currency = price_and_currency[1] - - if currency == 'JPY': - price = float(price)*100 - - print(self.region, product.asin, price, currency) - - result.append({ - 'shop_product_id': product.asin, - 'price': price, - 'currency': currency, - }) + try: + products = self.amazon.lookup(ItemId=','.join(chunk_product_ids)) + except urllib2.HTTPError: + return result + try: + for product in products: + result.append(self.parse_product(product)) + except TypeError: + result.append(self.parse_product(products)) sleep(1) return result diff --git a/amiibofindr/locale/es/LC_MESSAGES/django.po b/amiibofindr/locale/es/LC_MESSAGES/django.po new file mode 100644 index 0000000..163bbbd --- /dev/null +++ b/amiibofindr/locale/es/LC_MESSAGES/django.po @@ -0,0 +1,989 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-10-11 10:53+0200\n" +"PO-Revision-Date: 2015-10-11 10:54+0200\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 1.8.5\n" + +#: amiibofindr/apps/amiibo/models.py:208 +msgid "Rock" +msgstr "Piedra" + +#: amiibofindr/apps/amiibo/models.py:209 +msgid "Paper" +msgstr "Papel" + +#: amiibofindr/apps/amiibo/models.py:210 +msgid "Scissors" +msgstr "Tijera" + +#: amiibofindr/apps/amiibo/models.py:214 +msgid "Alligator" +msgstr "Caimán" + +#: amiibofindr/apps/amiibo/models.py:215 +msgid "Anteater" +msgstr "Oso hormiguero" + +#: amiibofindr/apps/amiibo/models.py:216 +msgid "Bear" +msgstr "Oso" + +#: amiibofindr/apps/amiibo/models.py:217 +msgid "Bird" +msgstr "Pájaro" + +#: amiibofindr/apps/amiibo/models.py:218 +msgid "Bull" +msgstr "Toro" + +#: amiibofindr/apps/amiibo/models.py:219 +msgid "Cat" +msgstr "Gato" + +#: amiibofindr/apps/amiibo/models.py:220 +msgid "Chicken" +msgstr "Gallina" + +#: amiibofindr/apps/amiibo/models.py:221 +msgid "Cow" +msgstr "Vaca" + +#: amiibofindr/apps/amiibo/models.py:222 +msgid "Cub" +msgstr "Cachorro" + +#: amiibofindr/apps/amiibo/models.py:223 +msgid "Deer" +msgstr "Ciervo" + +#: amiibofindr/apps/amiibo/models.py:224 +msgid "Dog" +msgstr "Perro" + +#: amiibofindr/apps/amiibo/models.py:225 +msgid "Duck" +msgstr "Pato" + +#: amiibofindr/apps/amiibo/models.py:226 +msgid "Eagle" +msgstr "Águila" + +#: amiibofindr/apps/amiibo/models.py:227 +msgid "Elephant" +msgstr "Elefante" + +#: amiibofindr/apps/amiibo/models.py:228 +msgid "Frog" +msgstr "Rana" + +#: amiibofindr/apps/amiibo/models.py:229 +msgid "Goat" +msgstr "Cabra" + +#: amiibofindr/apps/amiibo/models.py:230 +msgid "Gorilla" +msgstr "Gorila" + +#: amiibofindr/apps/amiibo/models.py:231 +msgid "Hamster" +msgstr "Hamster" + +#: amiibofindr/apps/amiibo/models.py:232 +msgid "Hippo" +msgstr "Hipopótamo" + +#: amiibofindr/apps/amiibo/models.py:233 +msgid "Horse" +msgstr "Caballo" + +#: amiibofindr/apps/amiibo/models.py:234 +msgid "Kangaroo" +msgstr "Canguro" + +#: amiibofindr/apps/amiibo/models.py:235 +msgid "Koala" +msgstr "Koala" + +#: amiibofindr/apps/amiibo/models.py:236 +msgid "Lion" +msgstr "León" + +#: amiibofindr/apps/amiibo/models.py:237 +msgid "Monkey" +msgstr "Mono" + +#: amiibofindr/apps/amiibo/models.py:238 +msgid "Mouse" +msgstr "Ratón" + +#: amiibofindr/apps/amiibo/models.py:239 +msgid "Octopus" +msgstr "Pulpo" + +#: amiibofindr/apps/amiibo/models.py:240 +msgid "Ostrich" +msgstr "Avestruz" + +#: amiibofindr/apps/amiibo/models.py:241 +msgid "Penguin" +msgstr "Pinguino" + +#: amiibofindr/apps/amiibo/models.py:242 +msgid "Pig" +msgstr "Cerdo" + +#: amiibofindr/apps/amiibo/models.py:243 +msgid "Rabbit" +msgstr "Conejo" + +#: amiibofindr/apps/amiibo/models.py:244 +msgid "Rhino" +msgstr "Rinoceronte" + +#: amiibofindr/apps/amiibo/models.py:245 +msgid "Sheep" +msgstr "Oveja" + +#: amiibofindr/apps/amiibo/models.py:246 +msgid "Special" +msgstr "Especial" + +#: amiibofindr/apps/amiibo/models.py:247 +msgid "Squirrel" +msgstr "Ardilla" + +#: amiibofindr/apps/amiibo/models.py:248 +msgid "Tiger" +msgstr "Tigre" + +#: amiibofindr/apps/amiibo/models.py:249 +msgid "Wolf" +msgstr "Lobo" + +#: amiibofindr/apps/amiibo/urls.py:16 +msgid "^cards$" +msgstr "^tarjetas$" + +#: amiibofindr/apps/amiibo/urls.py:19 +msgid "^figures$" +msgstr "^figuras$" + +#: amiibofindr/apps/amiibo/urls.py:23 +msgid "^cards/(?P[\\w\\d\\-]+)?\\-(?P\\d+)$" +msgstr "^tarjetas/(?P[\\w\\d\\-]+)?\\-(?P\\d+)$" + +#: amiibofindr/apps/amiibo/urls.py:26 +msgid "^figures/(?P[\\w\\d\\-]+)?\\-(?P\\d+)$" +msgstr "^figuras/(?P[\\w\\d\\-]+)?\\-(?P\\d+)$" + +#: amiibofindr/apps/amiibo/urls.py:30 +msgid "" +"^cards/(?P[\\w\\d\\-]+)?/(?P[\\w\\d\\-]+)?-(?P[\\w" +"\\d\\-]+)$" +msgstr "" +"^tarjetas/(?P[\\w\\d\\-]+)?/(?P[\\w\\d\\-]+)?-(?" +"P[\\w\\d\\-]+)$" + +#: amiibofindr/apps/amiibo/urls.py:33 +msgid "" +"^figures/(?P[\\w\\d\\-]+)?/(?P[\\w\\d\\-]+)?-(?" +"P[\\w\\d\\-]+)$" +msgstr "" +"^figuras/(?P[\\w\\d\\-]+)?/(?P[\\w\\d\\-]+)?-(?" +"P[\\w\\d\\-]+)$" + +#: amiibofindr/apps/amiibo/urls.py:37 +msgid "^amiibo/(?P\\d+)/(?P[\\w\\+\\-\\=]+)$" +msgstr "^amiibo/(?P\\d+)/(?P[\\w\\+\\-\\=]+)$" + +#: amiibofindr/apps/profile/urls.py:13 +msgid "^profile/(?P[\\w\\d\\-]+)/$" +msgstr "^perfil/(?P[\\w\\d\\-]+)/$" + +#: amiibofindr/apps/profile/urls.py:16 +msgid "^profile/(?P[\\w\\d\\-]+)/(?P\\w+)/(?P\\w+)/$" +msgstr "^perfil/(?P[\\w\\d\\-]+)/(?P\\w+)/(?P\\w+)/$" + +#: amiibofindr/templates/404.html:10 +msgid "Not found!" +msgstr "No encontrado." + +#: amiibofindr/templates/404.html:12 +#, python-format +msgid "" +"\n" +"\t\t\t\tOoooopsie. We didn't find what you're looking for. Go back to the home page.\n" +"\t\t\t" +msgstr "" +"\n" +"Ooops. No hemos podido encontrar lo que estabas buscando. Volver a la home." + +#: amiibofindr/templates/500.html:9 +msgid "Server error" +msgstr "Error de servidor" + +#: amiibofindr/templates/500.html:12 +#, python-format +msgid "" +"\n" +"\t\t\t\tThere was a server issue. Our developers have been informed of this. " +"Please try refreshing the page or go back to the " +"home page.\n" +"\t\t\t" +msgstr "" +"\n" +"Ha habido un problema en nuestro servidor. Nuestros desarrolladores han sido " +"informados. Por favor, prueba refrescando la página o vuelve a la home." + +#: amiibofindr/templates/_layout.html:5 +msgid "all" +msgstr "todas" + +#: amiibofindr/templates/_layout.html:37 amiibofindr/templates/_layout.html:108 +#: amiibofindr/templates/profile/main.html:25 +#: amiibofindr/templates/profile/main.html:78 +msgid "Figures" +msgstr "Figuras" + +#: amiibofindr/templates/_layout.html:40 amiibofindr/templates/_layout.html:51 +#: amiibofindr/templates/_layout.html:110 +#: amiibofindr/templates/_layout.html:119 +msgid "All" +msgstr "Todas" + +#: amiibofindr/templates/_layout.html:48 amiibofindr/templates/_layout.html:117 +#: amiibofindr/templates/profile/main.html:33 +#: amiibofindr/templates/profile/main.html:79 +msgid "Cards" +msgstr "Tarjetas" + +#: amiibofindr/templates/_layout.html:63 amiibofindr/templates/_layout.html:92 +msgid "My public profile" +msgstr "Mi perfil público" + +#: amiibofindr/templates/_layout.html:64 amiibofindr/templates/_layout.html:93 +#: amiibofindr/templates/account/password_reset_from_key.html:49 +msgid "Change password" +msgstr "Cambiar contraseña" + +#: amiibofindr/templates/_layout.html:65 amiibofindr/templates/_layout.html:95 +msgid "Social accounts" +msgstr "Redes sociales" + +#: amiibofindr/templates/_layout.html:66 amiibofindr/templates/_layout.html:94 +msgid "Emails" +msgstr "Emails" + +#: amiibofindr/templates/_layout.html:68 amiibofindr/templates/_layout.html:96 +msgid "Log out" +msgstr "Cerrar sesión" + +#: amiibofindr/templates/_layout.html:72 amiibofindr/templates/_layout.html:102 +#: amiibofindr/templates/home/home.html:90 +msgid "Login" +msgstr "Iniciar sesión" + +#: amiibofindr/templates/_layout.html:73 amiibofindr/templates/_layout.html:103 +#: amiibofindr/templates/home/home.html:88 +msgid "Register" +msgstr "Registrarse" + +#: amiibofindr/templates/_layout.html:147 +msgid "Select desired currency" +msgstr "Seleccionar moneda" + +#: amiibofindr/templates/_layout.html:152 +msgid "No convert" +msgstr "Sin conversión" + +#: amiibofindr/templates/_layout.html:156 +msgid "Language" +msgstr "Idioma" + +#: amiibofindr/templates/account/email.html:5 +msgid "Account" +msgstr "Mi cuenta" + +#: amiibofindr/templates/account/email.html:10 +msgid "E-mail Addresses" +msgstr "Cuentas de email" + +#: amiibofindr/templates/account/email.html:15 +msgid "The following e-mail addresses are associated with your account:" +msgstr "Los siguientes emails están asociados a tu cuenta:" + +#: amiibofindr/templates/account/email.html:37 +msgid "Verified" +msgstr "Verificada" + +#: amiibofindr/templates/account/email.html:39 +msgid "Unverified" +msgstr "Sin verificar" + +#: amiibofindr/templates/account/email.html:42 +msgid "Primary" +msgstr "Primaria" + +#: amiibofindr/templates/account/email.html:51 +msgid "Make Primary" +msgstr "Hacer primaria" + +#: amiibofindr/templates/account/email.html:53 +msgid "Re-send Verification" +msgstr "Re-enviar verificación" + +#: amiibofindr/templates/account/email.html:55 +#: amiibofindr/templates/socialaccount/connections.html:46 +msgid "Remove" +msgstr "Eliminar" + +#: amiibofindr/templates/account/email.html:60 +msgid "Warning:" +msgstr "Alerta:" + +#: amiibofindr/templates/account/email.html:60 +msgid "" +"You currently do not have any e-mail address set up. You should really add " +"an e-mail address so you can receive notifications, reset your password, etc." +msgstr "" +"Actualmente no tienes ningún email asociado a tu cuenta. Deberías añadir uno " +"para que puedas recibir notificaciones, restablecer tu contraseña, etc." + +#: amiibofindr/templates/account/email.html:63 +msgid "Add E-mail Address" +msgstr "Añadir una dirección de email" + +#: amiibofindr/templates/account/email.html:83 +msgid "Add E-mail" +msgstr "Añadir email" + +#: amiibofindr/templates/account/email/email_confirmation_message.txt:1 +#, python-format +msgid "" +"Hello from %(site_name)s!\n" +"\n" +"You're receiving this e-mail because user %(user_display)s at " +"%(site_domain)s has given yours as an e-mail address to connect their " +"account.\n" +"\n" +"To confirm this is correct, go to %(activate_url)s\n" +msgstr "" +"¡Hola desde %(site_name)s!\n" +"\n" +"Recibes este correo electrónico porque el usuario %(user_display)s en " +"%(site_domain)s nos ha dado esta dirección para vincular su cuenta. \n" +"\n" +"Para confirmar que esto es correcto, por favor accede a este enlace: " +"%(activate_url)s\n" + +#: amiibofindr/templates/account/email/email_confirmation_message.txt:7 +#, python-format +msgid "" +"Thank you from %(site_name)s!\n" +"%(site_domain)s" +msgstr "" +"¡Un saludo desde %(site_name)s!\n" +"%(site_domain)s" + +#: amiibofindr/templates/account/email/email_confirmation_subject.txt:3 +msgid "Please Confirm Your E-mail Address" +msgstr "Por favor confirma tu correo electrónico" + +#: amiibofindr/templates/account/email/password_reset_key_message.txt:1 +#, python-format +msgid "" +"Hello from %(site_name)s!\n" +"\n" +"You're receiving this e-mail because you or someone else has requested a " +"password for your user account at %(site_domain)s.\n" +"It can be safely ignored if you did not request a password reset. Click the " +"link below to reset your password." +msgstr "" +"¡Hola desde %(site_name)s!\n" +"\n" +"Recibes este correo porque tu u otra persona ha solicitado la recuperación " +"de tu cuenta en %(site_domain)s.\n" +"Sigue el enlace a continuación para continuar con el restablecimiento de tu " +"contraseña." + +#: amiibofindr/templates/account/email/password_reset_key_message.txt:8 +#, python-format +msgid "In case you forgot, your username is %(username)s." +msgstr "" +"En el caso de que te hayas olvidado, tu nombre de usuario es %(username)s." + +#: amiibofindr/templates/account/email/password_reset_key_message.txt:10 +#, python-format +msgid "" +"Thank you for using %(site_name)s!\n" +"%(site_domain)s" +msgstr "" +"¡Gracias por usar %(site_name)s!\n" +"%(site_domain)s" + +#: amiibofindr/templates/account/email/password_reset_key_subject.txt:3 +msgid "Password Reset E-mail" +msgstr "Correo electrónico" + +#: amiibofindr/templates/account/email_confirm.html:6 +#: amiibofindr/templates/account/email_confirm.html:12 +#: amiibofindr/templates/account/email_confirmed.html:6 +#: amiibofindr/templates/account/email_confirmed.html:12 +#: amiibofindr/templates/email_confirm.html:6 +#: amiibofindr/templates/email_confirm.html:12 +msgid "Confirm E-mail Address" +msgstr "Confirmar correo electrónico" + +#: amiibofindr/templates/account/email_confirm.html:19 +#: amiibofindr/templates/email_confirm.html:19 +#, python-format +msgid "" +"Please confirm that %(email)s is an e-mail " +"address for user %(user_display)s." +msgstr "" +"Por favor confirma que el correo electrónico " +"%(email)s es del usuario %(user_display)s." + +#: amiibofindr/templates/account/email_confirm.html:23 +#: amiibofindr/templates/email_confirm.html:23 +msgid "Confirm" +msgstr "Confirmar" + +#: amiibofindr/templates/account/email_confirm.html:30 +#: amiibofindr/templates/email_confirm.html:30 +#, python-format +msgid "" +"This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request." +msgstr "" +"Este enlace de activación de correo electrónico ha expirado. Por favor pide una nueva confirmación." + +#: amiibofindr/templates/account/email_confirmed.html:17 +#, python-format +msgid "" +"You have confirmed that %(email)s is an e-" +"mail address for user %(user_display)s." +msgstr "" +"Has confirmado el correo electrónico %(email)s para el usuario %(user_display)s." + +#: amiibofindr/templates/account/login.html:6 +#: amiibofindr/templates/account/login.html:13 +#: amiibofindr/templates/account/login.html:99 +msgid "Sign In" +msgstr "Iniciar sesión" + +#: amiibofindr/templates/account/login.html:17 +#, python-format +msgid "" +"Please sign in with one\n" +" of your existing social accounts. Or, sign up\n" +" for a %(site_name)s account and sign in below." +msgstr "" +"Por favor inicia sesión con una de tus redes sociales. O, registrate para crear una cuenta en %(site_name)s e " +"inicia sesión más abajo." + +#: amiibofindr/templates/account/login.html:46 +#, python-format +msgid "" +"If you have not created an account yet, then please\n" +" sign up first." +msgstr "" +"Si aún no has creado una cuenta, por favor, regístrate primero." + +#: amiibofindr/templates/account/login.html:51 +msgid "If you already have an account, please sign in here:" +msgstr "Si ya tienes una cuenta, inicia sesión aquí:" + +#: amiibofindr/templates/account/login.html:89 +msgid "Remember me" +msgstr "Recordarme" + +#: amiibofindr/templates/account/login.html:98 +msgid "Forgot Password?" +msgstr "He olvidado mi contraseña" + +#: amiibofindr/templates/account/messages/cannot_delete_primary_email.txt:2 +#, python-format +msgid "You cannot remove your primary e-mail address (%(email)s)." +msgstr "No puedes eliminar tu dirección de correo primaria (%(email)s)." + +#: amiibofindr/templates/account/messages/email_confirmation_sent.txt:2 +#, python-format +msgid "Confirmation e-mail sent to %(email)s." +msgstr "Correo electrónico de confirmación enviado a %(email)s." + +#: amiibofindr/templates/account/messages/email_confirmed.txt:2 +#, python-format +msgid "You have confirmed %(email)s." +msgstr "El correo %(email)s ha sido confirmado." + +#: amiibofindr/templates/account/messages/email_deleted.txt:2 +#, python-format +msgid "Removed e-mail address %(email)s." +msgstr "El correo electronico %(email)s ha sido eliminado." + +#: amiibofindr/templates/account/messages/logged_in.txt:4 +#, python-format +msgid "Successfully signed in as %(name)s." +msgstr "Hola %(name)s, has iniciado sesión satisfactoriamente." + +#: amiibofindr/templates/account/messages/logged_out.txt:2 +msgid "You have signed out." +msgstr "Has cerrado sesión." + +#: amiibofindr/templates/account/messages/password_changed.txt:2 +msgid "Password successfully changed." +msgstr "Tu contraseña ha sido cambiada." + +#: amiibofindr/templates/account/messages/password_set.txt:2 +msgid "Password successfully set." +msgstr "Tu contraseña ha sido fijada." + +#: amiibofindr/templates/account/messages/primary_email_set.txt:2 +msgid "Primary e-mail address set." +msgstr "Establecido tu correo electrónico primario." + +#: amiibofindr/templates/account/messages/unverified_primary_email.txt:2 +msgid "Your primary e-mail address must be verified." +msgstr "Tu dirección de correo electrónico primaria debe ser verificada." + +#: amiibofindr/templates/account/password_change.html:5 +#: amiibofindr/templates/account/password_change.html:10 +#: amiibofindr/templates/account/password_reset_from_key.html:5 +#: amiibofindr/templates/account/password_reset_from_key.html:10 +#: amiibofindr/templates/account/password_reset_from_key_done.html:5 +#: amiibofindr/templates/account/password_reset_from_key_done.html:10 +msgid "Change Password" +msgstr "Cambiar contraseña" + +#: amiibofindr/templates/account/password_change.html:56 +#: amiibofindr/templates/account/password_set.html:56 +msgid "Set password" +msgstr "Establecer una contraseña" + +#: amiibofindr/templates/account/password_reset.html:6 +#: amiibofindr/templates/account/password_reset.html:11 +#: amiibofindr/templates/account/password_reset_done.html:6 +#: amiibofindr/templates/account/password_reset_done.html:11 +msgid "Password Reset" +msgstr "Respetar mi contraseña" + +#: amiibofindr/templates/account/password_reset.html:18 +msgid "Go back to the homepage" +msgstr "Volver a la página principal" + +#: amiibofindr/templates/account/password_reset.html:20 +msgid "" +"Have you forgotten your password? Enter your e-mail address below, and we'll " +"send you an e-mail allowing you to reset it." +msgstr "" +"¿Has olvidado tu contraseña? Introduce tu dirección de correo y te " +"enviaremos instrucciones de como restablecerla." + +#: amiibofindr/templates/account/password_reset.html:36 +msgid "Reset My Password" +msgstr "Restablecer mi contraseña" + +#: amiibofindr/templates/account/password_reset.html:39 +msgid "Please contact us if you have any trouble resetting your password." +msgstr "" +"Por favor contacta con nosotros si tienes algún problema restablecer tu " +"contraseña." + +#: amiibofindr/templates/account/password_reset_done.html:19 +msgid "" +"We have sent you an e-mail. Please contact us if you do not receive it " +"within a few minutes." +msgstr "" +"Te hemos enviado un correo electrónico. Contacta con nosotros si no lo has " +"recibido en unos minutos." + +#: amiibofindr/templates/account/password_reset_from_key.html:10 +msgid "Bad Token" +msgstr "Token invalido" + +#: amiibofindr/templates/account/password_reset_from_key.html:15 +#, python-format +msgid "" +"The password reset link was invalid, possibly because it has already been " +"used. Please request a new password reset." +msgstr "" +"El enlace para restablecer tu contraseña es invalido, probablemente porque " +"ya haya sido usado. Por favor, vuelve a " +"restablecer tu contraseña." + +#: amiibofindr/templates/account/password_reset_from_key.html:53 +#: amiibofindr/templates/account/password_reset_from_key_done.html:12 +msgid "Your password is now changed." +msgstr "Tu contraseña ha sido cambiada." + +#: amiibofindr/templates/account/password_set.html:5 +#: amiibofindr/templates/account/password_set.html:10 +msgid "Set Password" +msgstr "Establecer contraseña" + +#: amiibofindr/templates/account/signup.html:5 +msgid "Signup" +msgstr "Registrarse" + +#: amiibofindr/templates/account/signup.html:10 +#: amiibofindr/templates/account/signup.html:77 +msgid "Sign Up" +msgstr "Registrarse" + +#: amiibofindr/templates/account/signup.html:14 +#, python-format +msgid "" +"Already have an account? Then please sign in." +msgstr "¿Ya tienes una cuenta? Inicia sesión." + +#: amiibofindr/templates/amiibo/amiibo-card.html:11 +msgid "Number" +msgstr "Numero" + +#: amiibofindr/templates/amiibo/amiibo-card.html:15 +msgid "Type" +msgstr "Tipo" + +#: amiibofindr/templates/amiibo/amiibo-card.html:19 +msgid "RPS" +msgstr "PPT" + +#: amiibofindr/templates/amiibo/amiibo-card.html:23 +msgid "Dice" +msgstr "Dado" + +#: amiibofindr/templates/amiibo/amiibo-figure.html:9 +#: amiibofindr/templates/amiibo/amiibo-figure.html:11 +#: amiibofindr/templates/amiibo/amiibo-figure.html:12 +#, python-format +msgid "%(amiibo)s amiibo from %(collection)s in " +msgstr "%(amiibo)s amiibo de %(collection)s en " + +#: amiibofindr/templates/amiibo/amiibo-figure.html:59 +msgid "Shops" +msgstr "Tiendas" + +#: amiibofindr/templates/amiibo/amiibo-figure.html:60 +msgid "Users trading" +msgstr "Usuarios para cambio" + +#: amiibofindr/templates/amiibo/amiibo-figure.html:74 +msgid "Buy now for" +msgstr "Comprar ahora por" + +#: amiibofindr/templates/amiibo/amiibo-figure.html:81 +msgid "No stock" +msgstr "Sin stock" + +#: amiibofindr/templates/amiibo/amiibo-figure.html:89 +msgid "Updated" +msgstr "Actualizado" + +#: amiibofindr/templates/amiibo/amiibo-figure.html:92 +msgid "This item had never been in stock" +msgstr "Este articulo nunca ha estado en stock" + +#: amiibofindr/templates/amiibo/amiibo-figure.html:98 +msgid "This is a pack of various items" +msgstr "Este es un pack que contiene varios artículos" + +#: amiibofindr/templates/amiibo/amiibo-figure.html:108 +msgid "No shops :(" +msgstr "Sin tiendas :(" + +#: amiibofindr/templates/amiibo/amiibo-figure.html:128 +msgid "No user have this amiibo available for trade :(" +msgstr "Ningún usuario tiene disponible este amiibo para cambio :(" + +#: amiibofindr/templates/amiibo/collection-cards.html:9 +#: amiibofindr/templates/amiibo/collection.html:29 +msgid "Search..." +msgstr "Buscar…" + +#: amiibofindr/templates/amiibo/collection.html:4 +#: amiibofindr/templates/amiibo/collection.html:6 +#: amiibofindr/templates/amiibo/collection.html:7 +#, python-format +msgid "%(collection)s amiibos in " +msgstr "Amiibos de %(collection)s en " + +#: amiibofindr/templates/amiibo/collection.html:18 +msgid "All amiibo" +msgstr "Todos los amiibo" + +#: amiibofindr/templates/amiibo/widgets/relation_header_buttons.html:9 +msgid "Available for trade" +msgstr "Disponible para cambio" + +#: amiibofindr/templates/amiibo/widgets/relation_header_buttons.html:12 +msgid "I do not have it" +msgstr "No lo tengo" + +#: amiibofindr/templates/amiibo/widgets/relation_header_buttons.html:17 +msgid "I do not want this" +msgstr "No lo quiero" + +#: amiibofindr/templates/amiibo/widgets/relation_header_buttons.html:20 +#: amiibofindr/templates/amiibo/widgets/relation_header_buttons.html:32 +msgid "I want this" +msgstr "Lo quiero" + +#: amiibofindr/templates/amiibo/widgets/relation_header_buttons.html:22 +#: amiibofindr/templates/amiibo/widgets/relation_header_buttons.html:33 +#: amiibofindr/templates/home/home.html:89 +msgid "or" +msgstr "o" + +#: amiibofindr/templates/amiibo/widgets/relation_header_buttons.html:24 +#: amiibofindr/templates/amiibo/widgets/relation_header_buttons.html:34 +msgid "I have this" +msgstr "Lo tengo" + +#: amiibofindr/templates/amiibo/widgets/relation_header_buttons.html:37 +msgid "Register and star collecting amiibo!" +msgstr "¡Regístrate y empieza a coleccionar Amiibo!" + +#: amiibofindr/templates/home/home.html:9 +msgid "Welcome to amiibofindr!" +msgstr "¡Bienvenido a Amiibofindr!" + +#: amiibofindr/templates/home/home.html:11 +msgid "" +"Welcome to the latest version of the site, with tons of new features for you!" +msgstr "" +"¡Bienvenido a la nueva versión del sitio, con muchas novedades para ti!" + +#: amiibofindr/templates/home/home.html:12 +msgid "Why stay with us? there are some reasons..." +msgstr "¿Por qué nosotros? Aquí te dejamos algunas razones…" + +#: amiibofindr/templates/home/home.html:21 +msgid "Keep track of what you have and what you want" +msgstr "Lo que tienes y lo que quieres" + +#: amiibofindr/templates/home/home.html:22 +msgid "" +"Here, you can easily check what amiibo you have or want. Just enter an " +"amiibo description and click one of the buttons, yes, that easy! " +msgstr "" +"Aquí puedes comprobar fácilmente que amibos tienes… ¡y cuales quieres! Solo " +"ve al amiibo y pulsa uno de los dos botones, ¡así de fácil!" + +#: amiibofindr/templates/home/home.html:29 +msgid "Repeated stuff? No problem! Trade it!" +msgstr "¿Repes? ¡Sin problema! ¡Intercambia!" + +#: amiibofindr/templates/home/home.html:30 +msgid "" +"Just mark an amiibo as tradeable to show everyone you have one -or more- " +"spare, show some contact information and let the offers come through!" +msgstr "" +"Tan solo tienes que marcar tu amiibo como disponible para mostrar a todos " +"que tienes uno (o más). ¡Deja información de contacto para recibir las " +"ofertas!" + +#: amiibofindr/templates/home/home.html:37 +msgid "Collect from ANYWHERE" +msgstr "Colecciona desde cualquier sitio" + +#: amiibofindr/templates/home/home.html:38 +msgid "" +"Lots of stuff to mark as collected or wanted? No problem! You can check your " +"owned amiibo from everywhere on the site, detail, lists or even other users " +"collections." +msgstr "" +"¿Tienes demasiadas cosas en tu colección? ¡No hay problema! Puedes marcar " +"que amibos tienes o quieres desde cualquier parte de la web. Detalles, " +"listados… incluso desde los perfiles de otros usuarios." + +#: amiibofindr/templates/home/home.html:45 +msgid "Don't lose sight with color coding" +msgstr "No te pierdas con nuestro código de colores" + +#: amiibofindr/templates/home/home.html:46 +msgid "" +"When logged in, you will see what amiibo you have, want or want to trade. " +"Even when on lists or looking another person's amiibo list." +msgstr "" +"Cuando inicies sesión sabrás de un vistazo que amiibo tienes, quieres o " +"intercambias. ¡Incluso cuando estés mirando la lista de otro usuario!" + +#: amiibofindr/templates/home/home.html:53 +msgid "Public profiles" +msgstr "Perfiles públicos" + +#: amiibofindr/templates/home/home.html:54 +msgid "" +"You will get a unique URL where you have all you collected, wanted and " +"traded amiibo. For free! This way you will never forget what you have " +"available." +msgstr "" +"Dispondrás de una dirección web única para ti donde estarán visibles los " +"amiibo que quieres, tienes e intercambias. ¡Gratis! De esta manera nunca " +"olvidaras lo que tienes." + +#: amiibofindr/templates/home/home.html:61 +msgid "Always at the best price" +msgstr "Siempre al mejor precio" + +#: amiibofindr/templates/home/home.html:62 +msgid "" +"We know sometimes the most wanted amiibo is difficult to find, so we keep " +"track of online shops for you to get the best prices. And we will be adding " +"more and more!" +msgstr "" +"Sabemos que a veces el amiibo que más deseamos es el más difícil de " +"encontrar así que nosotros monitorizamos tiendas para obtener los mejores " +"precios, e iremos añadiendo más y más." + +#: amiibofindr/templates/home/home.html:69 +msgid "EUR, GBP, JPY, USD..." +msgstr "EUR, GBP, JPY, USD..." + +#: amiibofindr/templates/home/home.html:70 +msgid "" +"Because not everyone can do math to convert from currencies on the fly, you " +"can select your desired currency to get an approximate conversion in real " +"time. Easy!" +msgstr "" +"Porque no todo el mundo es bueno con las matemáticas, si te pierdes con " +"monedas extranjeras puedes seleccionar tu preferida para ver todos los " +"precios con ella, ¡así de fácil!" + +#: amiibofindr/templates/home/home.html:77 +msgid "Even from mobile phones" +msgstr "Incluso desde el móvil" + +#: amiibofindr/templates/home/home.html:78 +msgid "" +"The site is viewable from mobile phones too! This way you will know what " +"amiibo are you mising... from anywhere!" +msgstr "" +"¡La web se adapta a dispositivos móviles! De esta manera siempre podrás " +"saber que amiibos te faltan… ¡desde cualquier parte!" + +#: amiibofindr/templates/home/home.html:82 +msgid "And the most important reason of all?" +msgstr "¿Y cual es la razón más importante de todas?" + +#: amiibofindr/templates/home/home.html:84 +msgid "" +"We are collectors too! We like amiibo and we do this for fun on our spare " +"time." +msgstr "" +"¡Nosotros también somos coleccionistas! Nos gustan los amiibo y hacemos esto " +"por diversión en nuestro tiempo libre." + +#: amiibofindr/templates/home/home.html:85 +msgid "We'd like to continue with this journey, and you to be helping us." +msgstr "Nos gustaría seguir con ello, ¡y que tu te apuntes!" + +#: amiibofindr/templates/home/home.html:93 +msgid "" +"And remember that we all make this better. You want your favourite shop " +"added? We're missing some HUGE feature you'd like to see? Just want to get " +"in touch? Feel free! You have our contact details at the bottom." +msgstr "" +"Y recuerda que somos todos los que hacemos esto mejor. ¿Quieres tu tienda " +"favorita añadida? ¿Nos falta algo muy importante que te hará la vida mas " +"fácil? ¿Solo quieres hablar un rato? ¡Contacta con nosotros!" + +#: amiibofindr/templates/profile/main.html:15 +#: amiibofindr/templates/profile/main.html:63 +msgid "Look at my amiibo collection!" +msgstr "¡Mira mi colección de #amiibo!" + +#: amiibofindr/templates/profile/main.html:43 +msgid "Contact me in:" +msgstr "Contáctame en:" + +#: amiibofindr/templates/profile/main.html:62 +msgid "Want everyone to see your collection? Spread the word!" +msgstr "¿Quieres presumir de colección? ¡Difunde la palabra!" + +#: amiibofindr/templates/profile/main.html:71 +msgid "Have it" +msgstr "Lo tiene" + +#: amiibofindr/templates/profile/main.html:72 +msgid "Want it" +msgstr "Lo quiere" + +#: amiibofindr/templates/profile/main.html:73 +msgid "Trade it" +msgstr "Lo cambia" + +#: amiibofindr/templates/profile/main.html:91 +msgid "Oooops, seems this user have nothing for that." +msgstr "Ups, ¡parece que no tiene nada por aquí!" + +#: amiibofindr/templates/socialaccount/connections.html:5 +#: amiibofindr/templates/socialaccount/connections.html:10 +msgid "Account Connections" +msgstr "Conexiones con mi cuenta" + +#: amiibofindr/templates/socialaccount/connections.html:14 +msgid "" +"You can sign in to your account using any of the following third party " +"accounts:" +msgstr "" +"Puedes iniciar sesión en tu cuenta usando una de las siguientes redes " +"sociales:" + +#: amiibofindr/templates/socialaccount/connections.html:51 +msgid "" +"You currently have no social network accounts connected to this account." +msgstr "No tienes redes sociales asociadas a tu cuenta." + +#: amiibofindr/templates/socialaccount/connections.html:55 +msgid "Add a 3rd Party Account" +msgstr "Asociar una red social" + +#: amiibofindr/templates/socialaccount/messages/account_connected.txt:2 +msgid "The social account has been connected." +msgstr "La red social ha sido vinculada." + +#: amiibofindr/templates/socialaccount/messages/account_connected_other.txt:2 +msgid "The social account is already connected to a different account." +msgstr "Esta red social esta vinculada a otra cuenta del sitio." + +#: amiibofindr/templates/socialaccount/messages/account_disconnected.txt:2 +msgid "The social account has been disconnected." +msgstr "La red social ha sido desvinculada." + +#: amiibofindr/urls.py:36 +msgid "^account/" +msgstr "^mi-cuenta/" + +#~ msgid "Here you can browse over %(username)s's collection" +#~ msgstr "Aquí puedes ver la colección de %(username)s" + +#~ msgid "^(?P[\\w\\d\\-]+)/(?P[\\w\\d\\-]+)$" +#~ msgstr "^(?P[\\w\\d\\-]+)/(?P[\\w\\d\\-]+)$" + +#~ msgid "Price" +#~ msgstr "Precio" diff --git a/amiibofindr/settings/base.py b/amiibofindr/settings/base.py index 8a47569..5af8bba 100644 --- a/amiibofindr/settings/base.py +++ b/amiibofindr/settings/base.py @@ -1,3 +1,4 @@ +# coding: utf-8 """ Django settings for amiibofindr project. @@ -33,6 +34,7 @@ ALLOWED_HOSTS = [] INSTALLED_APPS = ( 'suit', 'django.contrib.admin', + 'django.contrib.sites', # For allauth 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', @@ -45,11 +47,21 @@ INSTALLED_APPS = ( 'easy_thumbnails', 'django_extensions', + # Auth + 'allauth', + 'allauth.account', + 'allauth.socialaccount', + 'allauth.socialaccount.providers.twitter', + 'allauth.socialaccount.providers.facebook', + 'allauth.socialaccount.providers.google', + 'allauth.socialaccount.providers.instagram', + # own apps 'amiibofindr.apps.core', 'amiibofindr.apps.amiibo', 'amiibofindr.apps.shop', 'amiibofindr.apps.home', + 'amiibofindr.apps.profile', 'amiibofindr.apps.notifications', ) @@ -58,6 +70,8 @@ MIDDLEWARE_CLASSES = ( 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', + 'amiibofindr.apps.core.middleware.LanguageMiddleware', + 'django.middleware.locale.LocaleMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', @@ -86,6 +100,8 @@ TEMPLATES = [ 'amiibofindr.apps.amiibo.context_processors.currencies', 'amiibofindr.apps.core.context_processors.debug', 'amiibofindr.apps.core.context_processors.files', + 'amiibofindr.apps.core.context_processors.i18n', + 'amiibofindr.apps.amiibo.context_processors.user_amiibo', ], }, }, @@ -108,7 +124,12 @@ DATABASES = { # Internationalization # https://docs.djangoproject.com/en/1.8/topics/i18n/ -LANGUAGE_CODE = 'en-us' +LANGUAGE_CODE = 'en' + +LANGUAGES = ( + ('en', u'English'), + ('es', u'Español'), +) TIME_ZONE = 'Europe/Madrid' @@ -118,6 +139,9 @@ USE_L10N = True USE_TZ = True +LOCALE_PATHS = ( + os.path.join(BASE_DIR, 'locale'), +) # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/1.8/howto/static-files/ @@ -127,3 +151,19 @@ STATICFILES_DIRS = ( ) MEDIA_URL = '/media/' + + +# Auth +AUTHENTICATION_BACKENDS = ( + 'django.contrib.auth.backends.ModelBackend', + 'allauth.account.auth_backends.AuthenticationBackend', +) + + +# Sites and social auth +ACCOUNT_LOGOUT_ON_GET = True +ACCOUNT_USERNAME_MIN_LENGTH = 3 + +SITE_ID = 1 +LOGIN_REDIRECT_URL = '/' +LOGIN_URL = '/account/login/' diff --git a/amiibofindr/settings/devel.py b/amiibofindr/settings/devel.py index 8cd51e1..1ae8ac5 100644 --- a/amiibofindr/settings/devel.py +++ b/amiibofindr/settings/devel.py @@ -21,6 +21,8 @@ DATABASES = { MEDIA_URL = '/media/' MEDIA_ROOT = '/vagrant/media' +EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' + try: from local_settings import * except ImportError as e: diff --git a/amiibofindr/static/app/collectionSearch.js b/amiibofindr/static/app/collectionSearch.js index c8070e3..f50c103 100644 --- a/amiibofindr/static/app/collectionSearch.js +++ b/amiibofindr/static/app/collectionSearch.js @@ -1,62 +1,67 @@ (function() { - var CollectionSearchComponent = function() { - this.initialize(); - }; + var CollectionSearchComponent = function() { + this.initialize(); + }; - CollectionSearchComponent.prototype.initialize = function() { - var self = this; + CollectionSearchComponent.prototype.initialize = function() { + var self = this; - // Required DOM - this.$searchInput = document.querySelector('[data-component="collectionSearchInput"]'); - this.$resetButton = document.querySelector('[data-component="collectionSearchReset"]'); - this.$collectionList = document.querySelector('[data-component="collectionList"]').children; + // Required DOM + this.$searchInput = document.querySelector('[data-component="collectionSearchInput"]'); + this.$resetButton = document.querySelector('[data-component="collectionSearchReset"]'); + this.$collectionList = document.querySelector('[data-component="collectionList"]').children; - // Add event handlers - this.$searchInput.addEventListener('keyup', function(event) { - self.search(self.$searchInput.value); - }); + // Add event handlers + this.$searchInput.addEventListener('keyup', function(event) { + self.search(self.$searchInput.value); + }); - this.$resetButton.addEventListener('click', function(event) { - self.reset(); - }); + this.$resetButton.addEventListener('click', function(event) { + self.reset(); + }); - // Focus search input - this.$searchInput.focus(); - }; + // Focus search input + this.$searchInput.focus(); - CollectionSearchComponent.prototype.showItem = function(item) { - item.style.display = 'block'; - }; + // Trigger search + if (this.$searchInput.value !== '') { + this.search(this.$searchInput.value); + } + }; - CollectionSearchComponent.prototype.hideItem = function(item) { - item.style.display = 'none'; - }; + CollectionSearchComponent.prototype.showItem = function(item) { + item.style.display = 'block'; + }; - CollectionSearchComponent.prototype.reset = function() { - this.$searchInput.value = ''; + CollectionSearchComponent.prototype.hideItem = function(item) { + item.style.display = 'none'; + }; - for (var index = 0; index < this.$collectionList.length; index++) { - var item = this.$collectionList[index]; - this.showItem(item); - } - }; + CollectionSearchComponent.prototype.reset = function() { + this.$searchInput.value = ''; - CollectionSearchComponent.prototype.search = function(searchQuery) { - if (!searchQuery || searchQuery === null || searchQuery === '') { - this.reset(); - return false; - } + for (var index = 0; index < this.$collectionList.length; index++) { + var item = this.$collectionList[index]; + this.showItem(item); + } + }; - for (var index = 0; index < this.$collectionList.length; index++) { - var item = this.$collectionList[index]; - var names = item.getAttribute('data-amiibo-names'); - if (names.indexOf(searchQuery.toLowerCase()) === -1) { - this.hideItem(item); - } else { - this.showItem(item); - } - } - }; + CollectionSearchComponent.prototype.search = function(searchQuery) { + if (!searchQuery || searchQuery === null || searchQuery === '') { + this.reset(); + return false; + } - SimpleViews.register('collection-search', CollectionSearchComponent); + for (var index = 0; index < this.$collectionList.length; index++) { + var item = this.$collectionList[index]; + var names = item.getAttribute('data-amiibo-names'); + if (names.indexOf(searchQuery.toLowerCase()) === -1) { + this.hideItem(item); + } else { + this.showItem(item); + } + } + }; + + SimpleViews.register('collection-search', CollectionSearchComponent); })(); diff --git a/amiibofindr/static/app/global.js b/amiibofindr/static/app/global.js index c9b19e1..a522f3f 100644 --- a/amiibofindr/static/app/global.js +++ b/amiibofindr/static/app/global.js @@ -1,23 +1,34 @@ // Handle data-href $('[data-href]').on('click', function(event) { - location.href = $(this).attr('data-href'); + location.href = $(this).attr('data-href'); }); // Enable dropdowns $('.dropdown').dropdown({transition: 'drop', on: 'hover'}); $('.toggle-menu').on('click', function() { - $('.responsive-menu').toggle(200); + $('.responsive-menu').toggle(200); }) $(function(){ - $('[data-component="silbingPopup"]').popup({ - inline: true, - position: 'left center' - }); + $('[data-component="silbingPopup"]').popup({ + inline: true, + position: 'left center' + }); - $('.right.menu.open').on("click",function(e){ - e.preventDefault(); - $('.ui.vertical.menu').toggle(); - }); + // Tabs + $('.tabular.menu .item').tab(); + + $(document).on('click', '[data-toggle]', function(event) { + var $el = event.target; + var $target = $($el.getAttribute('data-toggle')); + $target.slideToggle(200); + }); + + $('.right.menu.open').on("click",function(e){ + e.preventDefault(); + $('.ui.vertical.menu').toggle(); + }); + + moment.locale(document.querySelector('html').getAttribute('lang')); }); diff --git a/amiibofindr/static/app/money.js b/amiibofindr/static/app/money.js index 119c9c3..ee9f01d 100644 --- a/amiibofindr/static/app/money.js +++ b/amiibofindr/static/app/money.js @@ -1,7 +1,7 @@ (function() { var MoneyComponent = function() { this.DEBUG = DEBUG; - this.currency = 'EUR'; + this.currency = 'reset'; this.currencies = CURRENCIES; this.ratesSet = false; this.initialize(); @@ -59,16 +59,30 @@ MoneyComponent.prototype.setCurrency = function(currency) { var self = this; - if (this.currencies.indexOf(currency) !== -1) { + if (this.currencies.indexOf(currency) !== -1 || currency === 'reset') { if (this.DEBUG) console.log('[money] set user currency: ' + currency) - $('[data-currency-change]').removeClass('underlined'); - $('[data-currency-change="' + currency + '"]').addClass('underlined'); - window.localStorage.setItem('currency', currency); + $('[data-currency-change]').removeClass('active'); + $('[data-currency-change="' + currency + '"]').addClass('active'); this.currency = currency; - this.convertPrices(); + if (currency === 'reset') { + window.localStorage.removeItem('currency'); + this.resetConversion(); + } else { + window.localStorage.setItem('currency', currency); + this.convertPrices(); + } } }; + MoneyComponent.prototype.resetConversion = function() { + var self = this; + [].forEach.call(document.querySelectorAll('[data-money]'), function(item) { + var price = item.getAttribute('data-price'); + var currency = item.getAttribute('data-currency'); + item.innerHTML = price + ' ' + currency; + }); + } + MoneyComponent.prototype.convertPrices = function() { var self = this; if (!this.ratesSet) { diff --git a/amiibofindr/static/app/relation.js b/amiibofindr/static/app/relation.js new file mode 100644 index 0000000..49fa1ec --- /dev/null +++ b/amiibofindr/static/app/relation.js @@ -0,0 +1,63 @@ +(function() { + var RelationComponent = function() { + this.relationsQuerySelector = '[data-handle="relation"]'; + this.initialize(); + }; + + RelationComponent.prototype.initialize = function() { + var self = this; + + // Prepare handlers + var linkHandler = function(event) { + event.preventDefault(); + event.stopPropagation(); + + var target = event.target; + + // Handles clicking in the icon + if (event.target.href === undefined) + target = event.target.parentNode + + self.click(target); + }; + + $(document).on('click', this.relationsQuerySelector + ' a', linkHandler); + }; + + RelationComponent.prototype.click = function(element) { + var $link = element; + var href = $link.href; + var $buttons = $(element).closest('[data-amiibo]'); + var from = $buttons.attr('data-from'); + var amiiboId = $buttons.attr('data-amiibo'); + var loader = $buttons.closest('[data-loader="' + amiiboId + '"]'); + this.doGet(href, from, loader, $buttons); + }; + + RelationComponent.prototype.doGet = function(href, from, loader, container) { + var self = this; + // loader.addClass('loading'); + + // If list, the entire card is the container + if (from === "list") container = loader; + + $.ajax({ + url: href, + data: { from: from }, + success: function(result) { + self.handleResult(loader, from, container, result); + } + }); + }; + + RelationComponent.prototype.handleResult = function(loader, from, container, result) { + if (from === 'list') { + container.replaceWith(result); + } else { + container.html(result) + } + // loader.removeClass('loading'); + }; + + SimpleViews.register('relation', RelationComponent); +})(); diff --git a/amiibofindr/static/images/avatar-female.png b/amiibofindr/static/images/avatar-female.png new file mode 100644 index 0000000..48df324 Binary files /dev/null and b/amiibofindr/static/images/avatar-female.png differ diff --git a/amiibofindr/static/images/avatar-male.png b/amiibofindr/static/images/avatar-male.png new file mode 100644 index 0000000..5593710 Binary files /dev/null and b/amiibofindr/static/images/avatar-male.png differ diff --git a/amiibofindr/static/images/home/buy.en.png b/amiibofindr/static/images/home/buy.en.png new file mode 100644 index 0000000..72270a6 Binary files /dev/null and b/amiibofindr/static/images/home/buy.en.png differ diff --git a/amiibofindr/static/images/home/buy.es.png b/amiibofindr/static/images/home/buy.es.png new file mode 100644 index 0000000..757a41e Binary files /dev/null and b/amiibofindr/static/images/home/buy.es.png differ diff --git a/amiibofindr/static/images/home/collection.png b/amiibofindr/static/images/home/collection.png new file mode 100644 index 0000000..0cd42c8 Binary files /dev/null and b/amiibofindr/static/images/home/collection.png differ diff --git a/amiibofindr/static/images/home/colorcoding.png b/amiibofindr/static/images/home/colorcoding.png new file mode 100644 index 0000000..7cbcce6 Binary files /dev/null and b/amiibofindr/static/images/home/colorcoding.png differ diff --git a/amiibofindr/static/images/home/currency.en.png b/amiibofindr/static/images/home/currency.en.png new file mode 100644 index 0000000..b045b4f Binary files /dev/null and b/amiibofindr/static/images/home/currency.en.png differ diff --git a/amiibofindr/static/images/home/currency.es.png b/amiibofindr/static/images/home/currency.es.png new file mode 100644 index 0000000..2e365d7 Binary files /dev/null and b/amiibofindr/static/images/home/currency.es.png differ diff --git a/amiibofindr/static/images/home/easycheck.png b/amiibofindr/static/images/home/easycheck.png new file mode 100644 index 0000000..743400d Binary files /dev/null and b/amiibofindr/static/images/home/easycheck.png differ diff --git a/amiibofindr/static/images/home/mobile.png b/amiibofindr/static/images/home/mobile.png new file mode 100644 index 0000000..1544299 Binary files /dev/null and b/amiibofindr/static/images/home/mobile.png differ diff --git a/amiibofindr/static/images/home/publicprofile.es.png b/amiibofindr/static/images/home/publicprofile.es.png new file mode 100644 index 0000000..3dc76c9 Binary files /dev/null and b/amiibofindr/static/images/home/publicprofile.es.png differ diff --git a/amiibofindr/static/images/home/trade.en.png b/amiibofindr/static/images/home/trade.en.png new file mode 100644 index 0000000..0daa360 Binary files /dev/null and b/amiibofindr/static/images/home/trade.en.png differ diff --git a/amiibofindr/static/images/home/trade.es.png b/amiibofindr/static/images/home/trade.es.png new file mode 100644 index 0000000..c7e42de Binary files /dev/null and b/amiibofindr/static/images/home/trade.es.png differ diff --git a/amiibofindr/static/less/style.less b/amiibofindr/static/less/style.less index 228a50d..85227b6 100644 --- a/amiibofindr/static/less/style.less +++ b/amiibofindr/static/less/style.less @@ -1,5 +1,5 @@ // Semantic-UI -@import "../semantic/semantic.css"; +@import "../semantic/semantic.min.css"; .price-converted { @@ -30,4 +30,28 @@ .navbar { margin-top: 10px !important; +} + +.nowrap { + white-space: nowrap; +} + +.no-margin-bottom { + margin-bottom: 0 !important; +} + +.relation-buttons { + position: absolute; + left: 6px; + right: 6px; + bottom: 6px; + width: 100%; + text-align: center; + z-index: 30; +} + +.menu.fixzindex { z-index: 61 !important; } + +.ui.tabular.menu .item { + cursor: pointer; } \ No newline at end of file diff --git a/amiibofindr/static/semantic/components/accordion.css b/amiibofindr/static/semantic/components/accordion.css index 5c2b044..c815529 100755 --- a/amiibofindr/static/semantic/components/accordion.css +++ b/amiibofindr/static/semantic/components/accordion.css @@ -1,9 +1,9 @@ /*! - * # Semantic UI 1.12.3 - Accordion + * # Semantic UI 2.1.3 - Accordion * http://github.com/semantic-org/semantic-ui/ * * - * Copyright 2014 Contributors + * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * @@ -17,7 +17,6 @@ .ui.accordion, .ui.accordion .accordion { max-width: 100%; - font-size: 1em; } .ui.accordion .accordion { margin: 1em 0em 0em; @@ -35,7 +34,7 @@ padding: 0.5em 0em; font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif; font-size: 1em; - color: rgba(0, 0, 0, 0.8); + color: rgba(0, 0, 0, 0.87); } /* Content */ @@ -47,7 +46,7 @@ /* Default Styling */ .ui.accordion:not(.styled) .title ~ .content:not(.ui), .ui.accordion:not(.styled) .accordion .title ~ .content:not(.ui) { - margin: 0em; + margin: ''; padding: 0.5em 0em 1em; } .ui.accordion:not(.styled) .title ~ .content:not(.ui):last-child { @@ -65,8 +64,8 @@ margin: 0em 0.25rem 0em 0rem; padding: 0em; font-size: 1em; - -webkit-transition: -webkit-transform 0.2s ease, opacity 0.2s ease; - transition: transform 0.2s ease, opacity 0.2s ease; + -webkit-transition: -webkit-transform 0.1s ease, opacity 0.1s ease; + transition: transform 0.1s ease, opacity 0.1s ease; vertical-align: baseline; -webkit-transform: none; -ms-transform: none; @@ -85,7 +84,7 @@ } .ui.accordion.menu .item .title > .dropdown.icon { float: right; - margin: 0.165em 0em 0em 1em; + margin: 0.21425em 0em 0em 1em; -webkit-transform: rotate(180deg); -ms-transform: rotate(180deg); transform: rotate(180deg); @@ -129,9 +128,9 @@ } .ui.styled.accordion, .ui.styled.accordion .accordion { - border-radius: 0.2857rem; + border-radius: 0.28571429rem; background: #ffffff; - box-shadow: 0px 1px 2px 0 rgba(0, 0, 0, 0.05), 0px 0px 0px 1px rgba(39, 41, 43, 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 { @@ -139,9 +138,9 @@ padding: 0.75em 1em; color: rgba(0, 0, 0, 0.4); font-weight: bold; - border-top: 1px solid rgba(39, 41, 43, 0.15); - -webkit-transition: background 0.2s ease, color 0.2s ease; - transition: background 0.2s ease, color 0.2s ease; + 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 { @@ -165,22 +164,22 @@ .ui.styled.accordion .accordion .title:hover, .ui.styled.accordion .accordion .active.title { background: transparent; - color: rgba(0, 0, 0, 0.8); + 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.8); + color: rgba(0, 0, 0, 0.87); } /* Active */ .ui.styled.accordion .active.title { background: transparent; - color: rgba(0, 0, 0, 0.8); + color: rgba(0, 0, 0, 0.95); } .ui.styled.accordion .accordion .active.title { background: transparent; - color: rgba(0, 0, 0, 0.8); + color: rgba(0, 0, 0, 0.95); } @@ -218,7 +217,7 @@ ---------------*/ .ui.inverted.accordion .title:not(.ui) { - color: #ffffff; + color: rgba(255, 255, 255, 0.9); } diff --git a/amiibofindr/static/semantic/components/accordion.js b/amiibofindr/static/semantic/components/accordion.js index eaccf97..af4544b 100644 --- a/amiibofindr/static/semantic/components/accordion.js +++ b/amiibofindr/static/semantic/components/accordion.js @@ -1,9 +1,9 @@ /*! - * # Semantic UI 1.12.3 - Accordion + * # Semantic UI 2.1.3 - Accordion * http://github.com/semantic-org/semantic-ui/ * * - * Copyright 2014 Contributors + * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * @@ -63,7 +63,9 @@ $.fn.accordion = function(parameters) { initialize: function() { module.debug('Initializing', $module); module.bind.events(); - module.observeChanges(); + if(settings.observeChanges) { + module.observeChanges(); + } module.instantiate(); }, @@ -105,7 +107,7 @@ $.fn.accordion = function(parameters) { events: function() { module.debug('Binding delegated events'); $module - .on('click' + eventNamespace, selector.trigger, module.event.click) + .on(settings.on + eventNamespace, selector.trigger, module.event.click) ; } }, @@ -153,54 +155,59 @@ $.fn.accordion = function(parameters) { $activeContent = $activeTitle.next($content), isAnimating = $activeContent.hasClass(className.animating), isActive = $activeContent.hasClass(className.active), - isUnopen = (!isActive && !isAnimating) + isOpen = (isActive || isAnimating) ; - if(isUnopen) { - module.debug('Opening accordion content', $activeTitle); - if(settings.exclusive) { - module.closeOthers.call($activeTitle); - } - $activeTitle - .addClass(className.active) - ; - $activeContent.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) - .animate({ - opacity: 1 - }, settings.duration, module.resetOpacity) - ; - } - } - $activeContent - .stop(true) - .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); - }) - ; + if(isOpen) { + module.debug('Accordion already open, skipping', $activeContent); + return; } + module.debug('Opening accordion content', $activeTitle); + settings.onOpening.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) { @@ -218,10 +225,12 @@ $.fn.accordion = function(parameters) { ; if((isActive || isOpening) && !isClosing) { module.debug('Closing accordion content', $activeContent); + settings.onClosing.call($activeContent); $activeTitle .removeClass(className.active) ; $activeContent + .stop(true, true) .addClass(className.animating) ; if(settings.animateChildren) { @@ -241,7 +250,7 @@ $.fn.accordion = function(parameters) { else { $activeContent .children() - .stop(true) + .stop(true, true) .animate({ opacity: 0 }, settings.duration, module.resetOpacity) @@ -249,7 +258,6 @@ $.fn.accordion = function(parameters) { } } $activeContent - .stop(true) .slideUp(settings.duration, settings.easing, function() { $activeContent .removeClass(className.animating) @@ -291,6 +299,10 @@ $.fn.accordion = function(parameters) { $openTitles .removeClass(className.active) ; + $openContents + .removeClass(className.animating) + .stop(true, true) + ; if(settings.animateChildren) { if($.fn.transition !== undefined && $module.transition('is supported')) { $openContents @@ -307,7 +319,7 @@ $.fn.accordion = function(parameters) { else { $openContents .children() - .stop() + .stop(true, true) .animate({ opacity: 0 }, settings.duration, module.resetOpacity) @@ -315,7 +327,6 @@ $.fn.accordion = function(parameters) { } } $openContents - .stop() .slideUp(settings.duration , settings.easing, function() { $(this).removeClass(className.active); module.reset.display.call(this); @@ -422,7 +433,7 @@ $.fn.accordion = function(parameters) { }); } clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(module.performance.display, 100); + module.performance.timer = setTimeout(module.performance.display, 500); }, display: function() { var @@ -534,20 +545,27 @@ $.fn.accordion.settings = { namespace : 'accordion', debug : false, - verbose : true, + verbose : false, performance : true, - exclusive : true, - collapsible : true, - closeNested : false, - animateChildren : true, + on : 'click', // event on title that opens accordion - duration : 350, - easing : 'easeOutQuad', + observeChanges : true, // whether accordion should automatically refresh on DOM insertion - onOpen : function(){}, - onClose : function(){}, - onChange : function(){}, + 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 + onOpen : function(){}, // callback after open animation + onClosing : function(){}, // callback before closing animation + onClose : function(){}, // callback after closing animation + onChange : function(){}, // callback after closing or opening animation error: { method : 'The method you called is not defined' diff --git a/amiibofindr/static/semantic/components/accordion.min.css b/amiibofindr/static/semantic/components/accordion.min.css index 961fd52..c91532a 100755 --- a/amiibofindr/static/semantic/components/accordion.min.css +++ b/amiibofindr/static/semantic/components/accordion.min.css @@ -1,10 +1,10 @@ /*! - * # Semantic UI 1.12.3 - Accordion + * # Semantic UI 2.1.3 - Accordion * http://github.com/semantic-org/semantic-ui/ * * - * Copyright 2014 Contributors + * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * - */.ui.accordion,.ui.accordion .accordion{max-width:100%;font-size:1em}.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,.8)}.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:0;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:-webkit-transform .2s ease,opacity .2s ease;transition:transform .2s ease,opacity .2s ease;vertical-align:baseline;-webkit-transform:none;-ms-transform:none;transform:none}.ui.accordion.menu .item .title{display:block;padding:0}.ui.accordion.menu .item .title>.dropdown.icon{float:right;margin:.165em 0 0 1em;-webkit-transform:rotate(180deg);-ms-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,.ui.accordion.menu .item .active.title>.dropdown.icon{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.ui.styled.accordion{width:600px}.ui.styled.accordion,.ui.styled.accordion .accordion{border-radius:.2857rem;background:#fff;box-shadow:0 1px 2px 0 rgba(0,0,0,.05),0 0 0 1px rgba(39,41,43,.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(39,41,43,.15);-webkit-transition:background .2s ease,color .2s ease;transition:background .2s ease,color .2s 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:.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,.8)}.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:#fff}@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 + */.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:-webkit-transform .1s ease,opacity .1s ease;transition:transform .1s ease,opacity .1s ease;vertical-align:baseline;-webkit-transform:none;-ms-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);-ms-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,.ui.accordion.menu .item .active.title>.dropdown.icon{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.ui.styled.accordion{width:600px}.ui.styled.accordion,.ui.styled.accordion .accordion{border-radius:.28571429rem;background:#fff;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:.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 .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/amiibofindr/static/semantic/components/accordion.min.js b/amiibofindr/static/semantic/components/accordion.min.js index 2cb43ae..05dde6b 100644 --- a/amiibofindr/static/semantic/components/accordion.min.js +++ b/amiibofindr/static/semantic/components/accordion.min.js @@ -1,11 +1,11 @@ /*! - * # Semantic UI 1.12.3 - Accordion + * # Semantic UI 2.1.3 - Accordion * http://github.com/semantic-org/semantic-ui/ * * - * Copyright 2014 Contributors + * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ -!function(e,n,t,i){"use strict";e.fn.accordion=function(t){{var o,a=e(this),s=(new Date).getTime(),r=[],c=arguments[0],l="string"==typeof c,u=[].slice.call(arguments,1);n.requestAnimationFrame||n.mozRequestAnimationFrame||n.webkitRequestAnimationFrame||n.msRequestAnimationFrame||function(e){setTimeout(e,0)}}return a.each(function(){var d,m,g=e.isPlainObject(t)?e.extend(!0,{},e.fn.accordion.settings,t):e.extend({},e.fn.accordion.settings),f=g.className,p=g.namespace,v=g.selector,h=g.error,b="."+p,y="module-"+p,C=a.selector||"",O=e(this),x=O.find(v.title),F=O.find(v.content),T=this,q=O.data(y);m={initialize:function(){m.debug("Initializing",O),m.bind.events(),m.observeChanges(),m.instantiate()},instantiate:function(){q=m,O.data(y,m)},destroy:function(){m.debug("Destroying previous instance",O),O.off(b).removeData(y)},refresh:function(){x=O.find(v.title),F=O.find(v.content)},observeChanges:function(){"MutationObserver"in n&&(d=new MutationObserver(function(e){m.debug("DOM tree modified, updating selector cache"),m.refresh()}),d.observe(T,{childList:!0,subtree:!0}),m.debug("Setting up mutation observer",d))},bind:{events:function(){m.debug("Binding delegated events"),O.on("click"+b,v.trigger,m.event.click)}},event:{click:function(){m.toggle.call(this)}},toggle:function(n){var t=n!==i?"number"==typeof n?x.eq(n):e(n).closest(v.title):e(this).closest(v.title),o=t.next(F),a=o.hasClass(f.animating),s=o.hasClass(f.active),r=s&&!a,c=!s&&a;m.debug("Toggling visibility of content",t),r||c?g.collapsible?m.close.call(t):m.debug("Cannot close accordion content collapsing is disabled"):m.open.call(t)},open:function(n){var t=n!==i?"number"==typeof n?x.eq(n):e(n).closest(v.title):e(this).closest(v.title),o=t.next(F),a=o.hasClass(f.animating),s=o.hasClass(f.active),r=!s&&!a;r&&(m.debug("Opening accordion content",t),g.exclusive&&m.closeOthers.call(t),t.addClass(f.active),o.addClass(f.animating),g.animateChildren&&(e.fn.transition!==i&&O.transition("is supported")?o.children().transition({animation:"fade in",queue:!1,useFailSafe:!0,debug:g.debug,verbose:g.verbose,duration:g.duration}):o.children().stop(!0).animate({opacity:1},g.duration,m.resetOpacity)),o.stop(!0).slideDown(g.duration,g.easing,function(){o.removeClass(f.animating).addClass(f.active),m.reset.display.call(this),g.onOpen.call(this),g.onChange.call(this)}))},close:function(n){var t=n!==i?"number"==typeof n?x.eq(n):e(n).closest(v.title):e(this).closest(v.title),o=t.next(F),a=o.hasClass(f.animating),s=o.hasClass(f.active),r=!s&&a,c=s&&a;!s&&!r||c||(m.debug("Closing accordion content",o),t.removeClass(f.active),o.addClass(f.animating),g.animateChildren&&(e.fn.transition!==i&&O.transition("is supported")?o.children().transition({animation:"fade out",queue:!1,useFailSafe:!0,debug:g.debug,verbose:g.verbose,duration:g.duration}):o.children().stop(!0).animate({opacity:0},g.duration,m.resetOpacity)),o.stop(!0).slideUp(g.duration,g.easing,function(){o.removeClass(f.animating).removeClass(f.active),m.reset.display.call(this),g.onClose.call(this),g.onChange.call(this)}))},closeOthers:function(n){var t,o,a,s=n!==i?x.eq(n):e(this).closest(v.title),r=s.parents(v.content).prev(v.title),c=s.closest(v.accordion),l=v.title+"."+f.active+":visible",u=v.content+"."+f.active+":visible";g.closeNested?(t=c.find(l).not(r),a=t.next(F)):(t=c.find(l).not(r),o=c.find(u).find(l).not(r),t=t.not(o),a=t.next(F)),t.length>0&&(m.debug("Exclusive enabled, closing other content",t),t.removeClass(f.active),g.animateChildren&&(e.fn.transition!==i&&O.transition("is supported")?a.children().transition({animation:"fade out",useFailSafe:!0,debug:g.debug,verbose:g.verbose,duration:g.duration}):a.children().stop().animate({opacity:0},g.duration,m.resetOpacity)),a.stop().slideUp(g.duration,g.easing,function(){e(this).removeClass(f.active),m.reset.display.call(this)}))},reset:{display:function(){m.verbose("Removing inline display from element",this),e(this).css("display",""),""===e(this).attr("style")&&e(this).attr("style","").removeAttr("style")},opacity:function(){m.verbose("Removing inline opacity from element",this),e(this).css("opacity",""),""===e(this).attr("style")&&e(this).attr("style","").removeAttr("style")}},setting:function(n,t){if(m.debug("Changing setting",n,t),e.isPlainObject(n))e.extend(!0,g,n);else{if(t===i)return g[n];g[n]=t}},internal:function(n,t){return m.debug("Changing internal",n,t),t===i?m[n]:void(e.isPlainObject(n)?e.extend(!0,m,n):m[n]=t)},debug:function(){g.debug&&(g.performance?m.performance.log(arguments):(m.debug=Function.prototype.bind.call(console.info,console,g.name+":"),m.debug.apply(console,arguments)))},verbose:function(){g.verbose&&g.debug&&(g.performance?m.performance.log(arguments):(m.verbose=Function.prototype.bind.call(console.info,console,g.name+":"),m.verbose.apply(console,arguments)))},error:function(){m.error=Function.prototype.bind.call(console.error,console,g.name+":"),m.error.apply(console,arguments)},performance:{log:function(e){var n,t,i;g.performance&&(n=(new Date).getTime(),i=s||n,t=n-i,s=n,r.push({Name:e[0],Arguments:[].slice.call(e,1)||"",Element:T,"Execution Time":t})),clearTimeout(m.performance.timer),m.performance.timer=setTimeout(m.performance.display,100)},display:function(){var n=g.name+":",t=0;s=!1,clearTimeout(m.performance.timer),e.each(r,function(e,n){t+=n["Execution Time"]}),n+=" "+t+"ms",C&&(n+=" '"+C+"'"),(console.group!==i||console.table!==i)&&r.length>0&&(console.groupCollapsed(n),console.table?console.table(r):e.each(r,function(e,n){console.log(n.Name+": "+n["Execution Time"]+"ms")}),console.groupEnd()),r=[]}},invoke:function(n,t,a){var s,r,c,l=q;return t=t||u,a=T||a,"string"==typeof n&&l!==i&&(n=n.split(/[\. ]/),s=n.length-1,e.each(n,function(t,o){var a=t!=s?o+n[t+1].charAt(0).toUpperCase()+n[t+1].slice(1):n;if(e.isPlainObject(l[a])&&t!=s)l=l[a];else{if(l[a]!==i)return r=l[a],!1;if(!e.isPlainObject(l[o])||t==s)return l[o]!==i?(r=l[o],!1):(m.error(h.method,n),!1);l=l[o]}})),e.isFunction(r)?c=r.apply(a,t):r!==i&&(c=r),e.isArray(o)?o.push(c):o!==i?o=[o,c]:c!==i&&(o=c),r}},l?(q===i&&m.initialize(),m.invoke(c)):(q!==i&&q.invoke("destroy"),m.initialize())}),o!==i?o:this},e.fn.accordion.settings={name:"Accordion",namespace:"accordion",debug:!1,verbose:!0,performance:!0,exclusive:!0,collapsible:!0,closeNested:!1,animateChildren:!0,duration:350,easing:"easeOutQuad",onOpen:function(){},onClose:function(){},onChange:function(){},error:{method:"The method you called is not defined"},className:{active:"active",animating:"animating"},selector:{accordion:".accordion",title:".title",trigger:".title",content:".content"}},e.extend(e.easing,{easeOutQuad:function(e,n,t,i,o){return-i*(n/=o)*(n-2)+t}})}(jQuery,window,document); \ No newline at end of file +!function(e,n,t,i){"use strict";e.fn.accordion=function(t){var o,a=e(this),s=(new Date).getTime(),r=[],c=arguments[0],l="string"==typeof c,u=[].slice.call(arguments,1);n.requestAnimationFrame||n.mozRequestAnimationFrame||n.webkitRequestAnimationFrame||n.msRequestAnimationFrame||function(e){setTimeout(e,0)};return a.each(function(){var d,g,m=e.isPlainObject(t)?e.extend(!0,{},e.fn.accordion.settings,t):e.extend({},e.fn.accordion.settings),f=m.className,p=m.namespace,v=m.selector,b=m.error,h="."+p,y="module-"+p,C=a.selector||"",O=e(this),x=O.find(v.title),A=O.find(v.content),F=this,T=O.data(y);g={initialize:function(){g.debug("Initializing",O),g.bind.events(),m.observeChanges&&g.observeChanges(),g.instantiate()},instantiate:function(){T=g,O.data(y,g)},destroy:function(){g.debug("Destroying previous instance",O),O.off(h).removeData(y)},refresh:function(){x=O.find(v.title),A=O.find(v.content)},observeChanges:function(){"MutationObserver"in n&&(d=new MutationObserver(function(e){g.debug("DOM tree modified, updating selector cache"),g.refresh()}),d.observe(F,{childList:!0,subtree:!0}),g.debug("Setting up mutation observer",d))},bind:{events:function(){g.debug("Binding delegated events"),O.on(m.on+h,v.trigger,g.event.click)}},event:{click:function(){g.toggle.call(this)}},toggle:function(n){var t=n!==i?"number"==typeof n?x.eq(n):e(n).closest(v.title):e(this).closest(v.title),o=t.next(A),a=o.hasClass(f.animating),s=o.hasClass(f.active),r=s&&!a,c=!s&&a;g.debug("Toggling visibility of content",t),r||c?m.collapsible?g.close.call(t):g.debug("Cannot close accordion content collapsing is disabled"):g.open.call(t)},open:function(n){var t=n!==i?"number"==typeof n?x.eq(n):e(n).closest(v.title):e(this).closest(v.title),o=t.next(A),a=o.hasClass(f.animating),s=o.hasClass(f.active),r=s||a;return r?void g.debug("Accordion already open, skipping",o):(g.debug("Opening accordion content",t),m.onOpening.call(o),m.exclusive&&g.closeOthers.call(t),t.addClass(f.active),o.stop(!0,!0).addClass(f.animating),m.animateChildren&&(e.fn.transition!==i&&O.transition("is supported")?o.children().transition({animation:"fade in",queue:!1,useFailSafe:!0,debug:m.debug,verbose:m.verbose,duration:m.duration}):o.children().stop(!0,!0).animate({opacity:1},m.duration,g.resetOpacity)),void o.slideDown(m.duration,m.easing,function(){o.removeClass(f.animating).addClass(f.active),g.reset.display.call(this),m.onOpen.call(this),m.onChange.call(this)}))},close:function(n){var t=n!==i?"number"==typeof n?x.eq(n):e(n).closest(v.title):e(this).closest(v.title),o=t.next(A),a=o.hasClass(f.animating),s=o.hasClass(f.active),r=!s&&a,c=s&&a;!s&&!r||c||(g.debug("Closing accordion content",o),m.onClosing.call(o),t.removeClass(f.active),o.stop(!0,!0).addClass(f.animating),m.animateChildren&&(e.fn.transition!==i&&O.transition("is supported")?o.children().transition({animation:"fade out",queue:!1,useFailSafe:!0,debug:m.debug,verbose:m.verbose,duration:m.duration}):o.children().stop(!0,!0).animate({opacity:0},m.duration,g.resetOpacity)),o.slideUp(m.duration,m.easing,function(){o.removeClass(f.animating).removeClass(f.active),g.reset.display.call(this),m.onClose.call(this),m.onChange.call(this)}))},closeOthers:function(n){var t,o,a,s=n!==i?x.eq(n):e(this).closest(v.title),r=s.parents(v.content).prev(v.title),c=s.closest(v.accordion),l=v.title+"."+f.active+":visible",u=v.content+"."+f.active+":visible";m.closeNested?(t=c.find(l).not(r),a=t.next(A)):(t=c.find(l).not(r),o=c.find(u).find(l).not(r),t=t.not(o),a=t.next(A)),t.length>0&&(g.debug("Exclusive enabled, closing other content",t),t.removeClass(f.active),a.removeClass(f.animating).stop(!0,!0),m.animateChildren&&(e.fn.transition!==i&&O.transition("is supported")?a.children().transition({animation:"fade out",useFailSafe:!0,debug:m.debug,verbose:m.verbose,duration:m.duration}):a.children().stop(!0,!0).animate({opacity:0},m.duration,g.resetOpacity)),a.slideUp(m.duration,m.easing,function(){e(this).removeClass(f.active),g.reset.display.call(this)}))},reset:{display:function(){g.verbose("Removing inline display from element",this),e(this).css("display",""),""===e(this).attr("style")&&e(this).attr("style","").removeAttr("style")},opacity:function(){g.verbose("Removing inline opacity from element",this),e(this).css("opacity",""),""===e(this).attr("style")&&e(this).attr("style","").removeAttr("style")}},setting:function(n,t){if(g.debug("Changing setting",n,t),e.isPlainObject(n))e.extend(!0,m,n);else{if(t===i)return m[n];m[n]=t}},internal:function(n,t){return g.debug("Changing internal",n,t),t===i?g[n]:void(e.isPlainObject(n)?e.extend(!0,g,n):g[n]=t)},debug:function(){m.debug&&(m.performance?g.performance.log(arguments):(g.debug=Function.prototype.bind.call(console.info,console,m.name+":"),g.debug.apply(console,arguments)))},verbose:function(){m.verbose&&m.debug&&(m.performance?g.performance.log(arguments):(g.verbose=Function.prototype.bind.call(console.info,console,m.name+":"),g.verbose.apply(console,arguments)))},error:function(){g.error=Function.prototype.bind.call(console.error,console,m.name+":"),g.error.apply(console,arguments)},performance:{log:function(e){var n,t,i;m.performance&&(n=(new Date).getTime(),i=s||n,t=n-i,s=n,r.push({Name:e[0],Arguments:[].slice.call(e,1)||"",Element:F,"Execution Time":t})),clearTimeout(g.performance.timer),g.performance.timer=setTimeout(g.performance.display,500)},display:function(){var n=m.name+":",t=0;s=!1,clearTimeout(g.performance.timer),e.each(r,function(e,n){t+=n["Execution Time"]}),n+=" "+t+"ms",C&&(n+=" '"+C+"'"),(console.group!==i||console.table!==i)&&r.length>0&&(console.groupCollapsed(n),console.table?console.table(r):e.each(r,function(e,n){console.log(n.Name+": "+n["Execution Time"]+"ms")}),console.groupEnd()),r=[]}},invoke:function(n,t,a){var s,r,c,l=T;return t=t||u,a=F||a,"string"==typeof n&&l!==i&&(n=n.split(/[\. ]/),s=n.length-1,e.each(n,function(t,o){var a=t!=s?o+n[t+1].charAt(0).toUpperCase()+n[t+1].slice(1):n;if(e.isPlainObject(l[a])&&t!=s)l=l[a];else{if(l[a]!==i)return r=l[a],!1;if(!e.isPlainObject(l[o])||t==s)return l[o]!==i?(r=l[o],!1):(g.error(b.method,n),!1);l=l[o]}})),e.isFunction(r)?c=r.apply(a,t):r!==i&&(c=r),e.isArray(o)?o.push(c):o!==i?o=[o,c]:c!==i&&(o=c),r}},l?(T===i&&g.initialize(),g.invoke(c)):(T!==i&&T.invoke("destroy"),g.initialize())}),o!==i?o:this},e.fn.accordion.settings={name:"Accordion",namespace:"accordion",debug:!1,verbose:!1,performance:!0,on:"click",observeChanges:!0,exclusive:!0,collapsible:!0,closeNested:!1,animateChildren:!0,duration:350,easing:"easeOutQuad",onOpening:function(){},onOpen:function(){},onClosing:function(){},onClose:function(){},onChange:function(){},error:{method:"The method you called is not defined"},className:{active:"active",animating:"animating"},selector:{accordion:".accordion",title:".title",trigger:".title",content:".content"}},e.extend(e.easing,{easeOutQuad:function(e,n,t,i,o){return-i*(n/=o)*(n-2)+t}})}(jQuery,window,document); \ No newline at end of file diff --git a/amiibofindr/static/semantic/components/ad.css b/amiibofindr/static/semantic/components/ad.css index c51da7a..10fe736 100644 --- a/amiibofindr/static/semantic/components/ad.css +++ b/amiibofindr/static/semantic/components/ad.css @@ -1,5 +1,5 @@ /*! - * # Semantic UI 1.12.3 - Ad + * # Semantic UI 2.1.3 - Ad * http://github.com/semantic-org/semantic-ui/ * * @@ -240,7 +240,7 @@ } .ui.test.ad { position: relative; - background: #333333; + background: #545454; } .ui.test.ad:after { position: absolute; @@ -257,7 +257,7 @@ font-weight: bold; } .ui.mobile.test.ad:after { - font-size: 0.85714em; + font-size: 0.85714286em; } .ui.test.ad[data-text]:after { content: attr(data-text); diff --git a/amiibofindr/static/semantic/components/ad.min.css b/amiibofindr/static/semantic/components/ad.min.css index 706580b..ba81135 100644 --- a/amiibofindr/static/semantic/components/ad.min.css +++ b/amiibofindr/static/semantic/components/ad.min.css @@ -1,5 +1,5 @@ /*! - * # Semantic UI 1.12.3 - Ad + * # Semantic UI 2.1.3 - Ad * http://github.com/semantic-org/semantic-ui/ * * @@ -7,4 +7,4 @@ * Released under the MIT license * http://opensource.org/licenses/MIT * - */.ui.ad{display:block;overflow:hidden;margin:1em 0}.ui.ad:first-child,.ui.ad:last-child{margin:0}.ui.ad iframe{margin:0;padding:0;border:none;overflow:hidden}.ui.leaderboard.ad{width:728px;height:90px}.ui[class*="medium rectangle"].ad{width:300px;height:250px}.ui[class*="large rectangle"].ad{width:336px;height:280px}.ui[class*="half page"].ad{width:300px;height:600px}.ui.square.ad{width:250px;height:250px}.ui[class*="small square"].ad{width:200px;height:200px}.ui[class*="small rectangle"].ad{width:180px;height:150px}.ui[class*="vertical rectangle"].ad{width:240px;height:400px}.ui.button.ad{width:120px;height:90px}.ui[class*="square button"].ad{width:125px;height:125px}.ui[class*="small button"].ad{width:120px;height:60px}.ui.skyscraper.ad{width:120px;height:600px}.ui[class*="wide skyscraper"].ad{width:160px}.ui.banner.ad{width:468px;height:60px}.ui[class*="vertical banner"].ad{width:120px;height:240px}.ui[class*="top banner"].ad{width:930px;height:180px}.ui[class*="half banner"].ad{width:234px;height:60px}.ui[class*="large leaderboard"].ad{width:970px;height:90px}.ui.billboard.ad{width:970px;height:250px}.ui.panorama.ad{width:980px;height:120px}.ui.netboard.ad{width:580px;height:400px}.ui[class*="large mobile banner"].ad{width:320px;height:100px}.ui[class*="mobile leaderboard"].ad{width:320px;height:50px}.ui.mobile.ad{display:none}@media only screen and (max-width:767px){.ui.mobile.ad{display:block}}.ui.centered.ad{margin-left:auto;margin-right:auto}.ui.test.ad{position:relative;background:#333}.ui.test.ad:after{position:absolute;top:50%;left:50%;width:100%;text-align:center;-webkit-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%);content:'Ad';color:#fff;font-size:1em;font-weight:700}.ui.mobile.test.ad:after{font-size:.85714em}.ui.test.ad[data-text]:after{content:attr(data-text)} \ No newline at end of file + */.ui.ad{display:block;overflow:hidden;margin:1em 0}.ui.ad:first-child,.ui.ad:last-child{margin:0}.ui.ad iframe{margin:0;padding:0;border:none;overflow:hidden}.ui.leaderboard.ad{width:728px;height:90px}.ui[class*="medium rectangle"].ad{width:300px;height:250px}.ui[class*="large rectangle"].ad{width:21pc;height:280px}.ui[class*="half page"].ad{width:300px;height:600px}.ui.square.ad{width:250px;height:250px}.ui[class*="small square"].ad{width:200px;height:200px}.ui[class*="small rectangle"].ad{width:180px;height:150px}.ui[class*="vertical rectangle"].ad{width:15pc;height:25pc}.ui.button.ad{width:90pt;height:90px}.ui[class*="square button"].ad{width:125px;height:125px}.ui[class*="small button"].ad{width:90pt;height:60px}.ui.skyscraper.ad{width:90pt;height:600px}.ui[class*="wide skyscraper"].ad{width:10pc}.ui.banner.ad{width:468px;height:60px}.ui[class*="vertical banner"].ad{width:90pt;height:15pc}.ui[class*="top banner"].ad{width:930px;height:180px}.ui[class*="half banner"].ad{width:234px;height:60px}.ui[class*="large leaderboard"].ad{width:970px;height:90px}.ui.billboard.ad{width:970px;height:250px}.ui.panorama.ad{width:980px;height:90pt}.ui.netboard.ad{width:580px;height:25pc}.ui[class*="large mobile banner"].ad{width:20pc;height:75pt}.ui[class*="mobile leaderboard"].ad{width:20pc;height:50px}.ui.mobile.ad{display:none}@media only screen and (max-width:767px){.ui.mobile.ad{display:block}}.ui.centered.ad{margin-left:auto;margin-right:auto}.ui.test.ad{position:relative;background:#545454}.ui.test.ad:after{position:absolute;top:50%;left:50%;width:100%;text-align:center;-webkit-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%);content:'Ad';color:#fff;font-size:1em;font-weight:700}.ui.mobile.test.ad:after{font-size:.85714286em}.ui.test.ad[data-text]:after{content:attr(data-text)} \ No newline at end of file diff --git a/amiibofindr/static/semantic/components/api.js b/amiibofindr/static/semantic/components/api.js index 708954d..7d4e934 100644 --- a/amiibofindr/static/semantic/components/api.js +++ b/amiibofindr/static/semantic/components/api.js @@ -1,9 +1,9 @@ /*! - * # Semantic UI 1.12.3 - API + * # Semantic UI 2.1.3 - API * http://github.com/semantic-org/semantic-ui/ * * - * Copyright 2014 Contributors + * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * @@ -63,10 +63,11 @@ $.api = $.fn.api = function(parameters) { requestSettings, url, data, + requestStartTime, // standard module element = this, - context = $context.get(), + context = $context[0], instance = $module.data(moduleNamespace), module ; @@ -74,21 +75,8 @@ $.api = $.fn.api = function(parameters) { module = { initialize: function() { - var - triggerEvent = module.get.event() - ; - // bind events if(!methodInvoked) { - if( triggerEvent ) { - module.debug('Attaching API events to element', triggerEvent); - $module - .on(triggerEvent + eventNamespace, module.event.trigger) - ; - } - else if(settings.on == 'now') { - module.debug('Querying API now', triggerEvent); - module.query(); - } + module.bind.events(); } module.instantiate(); }, @@ -109,16 +97,87 @@ $.api = $.fn.api = function(parameters) { ; }, + bind: { + events: function() { + var + triggerEvent = module.get.event() + ; + if( triggerEvent ) { + module.verbose('Attaching API events to element', triggerEvent); + $module + .on(triggerEvent + eventNamespace, module.event.trigger) + ; + } + else if(settings.on == 'now') { + module.debug('Querying API endpoint immediately'); + module.query(); + } + } + }, + + decode: { + json: function(response) { + if(response !== undefined && typeof response == 'string') { + try { + response = JSON.parse(response); + } + catch(e) { + // isnt json string + } + } + return response; + } + }, + + read: { + cachedResponse: function(url) { + var + response + ; + if(window.Storage === undefined) { + module.error(error.noStorage); + return; + } + response = sessionStorage.getItem(url); + module.debug('Using cached response', url, response); + response = module.decode.json(response); + return false; + } + }, + write: { + cachedResponse: function(url, response) { + if(response && response === '') { + module.debug('Response empty, not caching', response); + return; + } + if(window.Storage === undefined) { + module.error(error.noStorage); + return; + } + if( $.isPlainObject(response) ) { + response = JSON.stringify(response); + } + sessionStorage.setItem(url, response); + module.verbose('Storing cached response for url', url, response); + } + }, + query: function() { if(module.is.disabled()) { module.debug('Element is disabled API request aborted'); return; } - // determine if an api event already occurred - if(module.is.loading() && settings.throttle === 0 ) { - module.debug('Cancelling request, previous request is still pending'); - return; + + if(module.is.loading()) { + if(settings.interruptRequests) { + module.debug('Interrupting previous request'); + module.abort(); + } + else { + module.debug('Cancelling request, previous request is still pending'); + return; + } } // pass element metadata to url (value, text) @@ -127,17 +186,12 @@ $.api = $.fn.api = function(parameters) { } // Add form content - if(settings.serializeForm !== false || $context.is('form')) { - if(settings.serializeForm == 'json') { - $.extend(true, settings.data, module.get.formData()); - } - else { - settings.data = module.get.formData(); - } + if(settings.serializeForm) { + settings.data = module.add.formData(settings.data); } // call beforesend and get any settings changes - requestSettings = module.get.settings(); + requestSettings = module.get.settings(); // check if before send cancelled request if(requestSettings === false) { @@ -149,31 +203,22 @@ $.api = $.fn.api = function(parameters) { module.cancelled = false; } - if(settings.url) { - // override with url if specified - module.debug('Using specified url', url); - url = module.add.urlData( settings.url ); - } - else { - // otherwise find url from api endpoints - url = module.add.urlData( module.get.templateURL() ); - module.debug('Added URL Data to url', url); + // get url + url = module.get.templatedURL(); + + if(!url && !module.is.mocked()) { + module.error(error.missingURL); + return; } - // exit conditions reached, missing url parameters - if( !url ) { - if( module.is.form() ) { - url = $module.attr('action') || ''; - module.debug('No url or action specified, defaulting to form action', url); - } - else { - module.error(error.missingURL, settings.action); - return; - } + // replace variables + url = module.add.urlData( url ); + + // missing url parameters + if( !url && !module.is.mocked()) { + return; } - // add loading state - module.set.loading(); // look for jQuery ajax parameters in settings ajaxSettings = $.extend(true, {}, settings, { @@ -187,39 +232,86 @@ $.api = $.fn.api = function(parameters) { }); module.debug('Querying URL', ajaxSettings.url); - module.debug('Sending data', data, ajaxSettings.method); module.verbose('Using AJAX settings', ajaxSettings); - if( module.is.loading() ) { - // throttle additional requests - module.timer = setTimeout(function() { - module.request = module.create.request(); - module.xhr = module.create.xhr(); - settings.onRequest.call(context, module.request, module.xhr); - }, settings.throttle); + if(settings.cache === 'local' && module.read.cachedResponse(url)) { + module.debug('Response returned from local cache'); + module.request = module.create.request(); + module.request.resolveWith(context, [ module.read.cachedResponse(url) ]); + return; + } + + if( !settings.throttle ) { + module.debug('Sending request', data, ajaxSettings.method); + module.send.request(); } else { - // immediately on first request - module.request = module.create.request(); - module.xhr = module.create.xhr(); - settings.onRequest.call(context, module.request, module.xhr); + if(!settings.throttleFirstRequest && !module.timer) { + module.debug('Sending request', data, ajaxSettings.method); + module.send.request(); + module.timer = setTimeout(function(){}, settings.throttle); + } + else { + module.debug('Throttling request', settings.throttle); + clearTimeout(module.timer); + module.timer = setTimeout(function() { + if(module.timer) { + delete module.timer; + } + module.debug('Sending throttled request', data, ajaxSettings.method); + module.send.request(); + }, settings.throttle); + } } }, + should: { + removeError: function() { + return ( settings.hideError === true || (settings.hideError === 'auto' && !module.is.form()) ); + } + }, is: { disabled: function() { - return ($module.filter(settings.filter).length > 0); + return ($module.filter(selector.disabled).length > 0); }, form: function() { - return $module.is('form'); + return $module.is('form') || $context.is('form'); + }, + mocked: function() { + return (settings.mockResponse || settings.mockResponseAsync); }, input: function() { return $module.is('input'); }, loading: function() { return (module.request && module.request.state() == 'pending'); + }, + 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( (settings.dataType !== 'json' && settings.dataType !== 'jsonp') || !$.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; + } } }, @@ -272,6 +364,10 @@ $.api = $.fn.api = function(parameters) { } else { module.verbose('Found required variable', variable, value); + value = (settings.encodeParameters) + ? module.get.urlEncodedValue(value) + : value + ; url = url.replace(templatedString, value); } }); @@ -311,6 +407,48 @@ $.api = $.fn.api = function(parameters) { } } 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); } }, @@ -323,130 +461,192 @@ $.api = $.fn.api = function(parameters) { }, xhr: { always: function() { - // calculate if loading time was below minimum threshold + // nothing special }, - done: function(response) { + done: function(response, textStatus, xhr) { var - context = this, - elapsedTime = (new Date().getTime() - time), - timeLeft = (settings.loadingDuration - elapsedTime) + context = this, + elapsedTime = (new Date().getTime() - requestStartTime), + timeLeft = (settings.loadingDuration - elapsedTime), + translatedResponse = ( $.isFunction(settings.onResponse) ) + ? settings.onResponse.call(context, $.extend(true, {}, 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() { - module.request.resolveWith(context, [response]); + 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() - time), + elapsedTime = (new Date().getTime() - requestStartTime), timeLeft = (settings.loadingDuration - elapsedTime) ; timeLeft = (timeLeft > 0) ? timeLeft : 0 ; - // page triggers abort on navigation, dont show error + if(timeLeft > 0) { + module.debug('Response completed early delaying state change by', timeLeft); + } setTimeout(function() { - if(status !== 'abort') { - module.request.rejectWith(context, [xhr, status, httpMessage]); + if( module.is.abortedRequest(xhr) ) { + module.request.rejectWith(context, [xhr, 'aborted', httpMessage]); } else { - module.reset(); + module.request.rejectWith(context, [xhr, 'error', status, httpMessage]); } }, timeLeft); } }, request: { - complete: function(response) { - module.remove.loading(); - settings.onComplete.call(context, response, $module); - }, - done: function(response) { - module.debug('API Response Received', response); - if(settings.dataType == 'json') { - if( $.isFunction(settings.successTest) ) { - module.debug('Checking JSON returned success', settings.successTest, response); - if( settings.successTest(response) ) { - settings.onSuccess.call(context, response, $module); - } - else { - module.debug('JSON test specified by user and response failed', response); - settings.onFailure.call(context, response, $module); - } - } - else { - settings.onSuccess.call(context, response, $module); - } - } - else { - settings.onSuccess.call(context, response, $module); + 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); }, - error: function(xhr, status, httpMessage) { + complete: function(firstParameter, secondParameter) { var - errorMessage = (settings.error[status] !== undefined) - ? settings.error[status] - : httpMessage, + xhr, response ; - // let em know unless request aborted - if(xhr !== undefined) { - // readyState 4 = done, anything less is not really sent - if(xhr.readyState !== undefined && xhr.readyState == 4) { - - // if http status code returned and json returned error, look for it + // 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); + } + 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); } - else { - if(status == 'error' && settings.dataType == 'json') { - try { - response = $.parseJSON(xhr.responseText); - if(response && response.error !== undefined) { - errorMessage = response.error; - } - } - catch(e) { - module.error(error.JSONParse); - } - } - } - module.remove.loading(); - module.set.error(); - // show error state only for duration specified in settings - if(settings.errorDuration) { - setTimeout(module.remove.error, settings.errorDuration); - } - module.debug('API Request error:', errorMessage); - settings.onError.call(context, errorMessage, $module); - } - else { - settings.onAbort.call(context, errorMessage, $module); - module.debug('Request Aborted (Most likely caused by page change or CORS Policy)', status, httpMessage); + 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.error) + .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, + asyncCallback, + response, + mockedXHR + ; + + mockedXHR = $.Deferred() + .always(module.event.xhr.complete) + .done(module.event.xhr.done) + .fail(module.event.xhr.fail) + ; + + if(settings.mockResponse) { + if( $.isFunction(settings.mockResponse) ) { + module.debug('Using mocked callback returning response', settings.mockResponse); + response = settings.mockResponse.call(context, settings); + } + else { + module.debug('Using specified response', settings.mockResponse); + response = settings.mockResponse; + } + // simulating response + mockedXHR.resolveWith(context, [ response, textStatus, { responseText: response }]); + } + else if( $.isFunction(settings.mockResponseAsync) ) { + 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 async mocked response', settings.mockResponseAsync); + settings.mockResponseAsync.call(context, settings, asyncCallback); + } + return mockedXHR; + }, + xhr: function() { - return $.ajax(ajaxSettings) + 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); + return xhr; } }, @@ -458,6 +658,7 @@ $.api = $.fn.api = function(parameters) { loading: function() { module.verbose('Adding loading state to element', $context); $context.addClass(className.loading); + requestStartTime = new Date().getTime(); } }, @@ -473,6 +674,22 @@ $.api = $.fn.api = function(parameters) { }, get: { + responseFromXHR: function(xhr) { + return $.isPlainObject(xhr) + ? (settings.dataType == 'json' || settings.dataType == 'jsonp') + ? 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; }, @@ -483,7 +700,7 @@ $.api = $.fn.api = function(parameters) { var runSettings ; - runSettings = settings.beforeSend.call($module, settings); + runSettings = settings.beforeSend.call(context, settings); if(runSettings) { if(runSettings.success !== undefined) { module.debug('Legacy success callback detected', runSettings); @@ -509,6 +726,19 @@ $.api = $.fn.api = function(parameters) { : 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 = {} @@ -551,34 +781,24 @@ $.api = $.fn.api = function(parameters) { return settings.on; } }, - formData: function() { - var - formData - ; - if($module.serializeObject !== undefined) { - formData = $form.serializeObject(); - } - else { - module.error(error.missingSerialize); - formData = $form.serialize(); - } - module.debug('Retrieved form data', formData); - return formData; - }, - templateURL: function(action) { - var - url - ; + 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) { - url = settings.api[action]; - module.debug('Found template url', url); - } - else if( !module.is.form() ) { + 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; } @@ -591,7 +811,6 @@ $.api = $.fn.api = function(parameters) { if( xhr && xhr.state() !== 'resolved') { module.debug('Cancelling API request'); xhr.abort(); - module.request.rejectWith(settings.apiSettings); } }, @@ -670,7 +889,7 @@ $.api = $.fn.api = function(parameters) { }); } clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(module.performance.display, 100); + module.performance.timer = setTimeout(module.performance.display, 500); }, display: function() { var @@ -780,49 +999,94 @@ $.api = $.fn.api = function(parameters) { $.api.settings = { - name : 'API', - namespace : 'api', + name : 'API', + namespace : 'api', - debug : true, - verbose : false, - performance : true, + 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', - filter : '.disabled', - stateContext : false, + on : 'auto', - // state - loadingDuration : 0, - errorDuration : 2000, + // context for applying state classes + stateContext : false, - // templating - action : false, - url : false, - base : '', + // duration for loading state + loadingDuration : 0, - // data - urlData : {}, + // whether to hide errors after a period of time + hideError : 'auto', - // ui - defaultData : true, - serializeForm : false, - throttle : 0, + // duration for error state + errorDuration : 2000, - // jQ ajax - method : 'get', - data : {}, - dataType : 'json', + // whether parameters should be encoded with encodeURIComponent + encodeParameters : true, - // callbacks + // 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, + + // 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) {}, - onFailure : function(errorMessage, $module) {}, + + // failed JSON success test + onFailure : function(response, $module) {}, + + // server error onError : function(errorMessage, $module) {}, + + // request aborted onAbort : function(errorMessage, $module) {}, successTest : false, @@ -836,9 +1100,10 @@ $.api.settings = { 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 : 'Required dependency jquery-serialize-object missing, using basic serialize', + 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 respopnses locally requires session storage', parseError : 'There was an error parsing your request', requiredParameter : 'Missing a required URL parameter: ', statusMessage : 'Server gave an error: ', @@ -846,8 +1111,8 @@ $.api.settings = { }, regExp : { - required: /\{\$*[A-z0-9]+\}/g, - optional: /\{\/\$*[A-z0-9]+\}/g, + required : /\{\$*[A-z0-9]+\}/g, + optional : /\{\/\$*[A-z0-9]+\}/g, }, className: { @@ -856,16 +1121,16 @@ $.api.settings = { }, selector: { - form: 'form' + disabled : '.disabled', + form : 'form' }, metadata: { - action : 'action' + action : 'action', + url : 'url' } }; -$.api.settings.api = {}; - -})( jQuery, window , document ); \ No newline at end of file +})( jQuery, window , document ); diff --git a/amiibofindr/static/semantic/components/api.min.js b/amiibofindr/static/semantic/components/api.min.js index f6d6d1b..633f0c0 100644 --- a/amiibofindr/static/semantic/components/api.min.js +++ b/amiibofindr/static/semantic/components/api.min.js @@ -1,11 +1,11 @@ /*! - * # Semantic UI 1.12.3 - API + * # Semantic UI 2.1.3 - API * http://github.com/semantic-org/semantic-ui/ * * - * Copyright 2014 Contributors + * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ -!function(e,t,r,n){"use strict";e.api=e.fn.api=function(r){var o,a=e(e.isFunction(this)?t:this),i=a.selector||"",s=(new Date).getTime(),u=[],c=arguments[0],l="string"==typeof c,d=[].slice.call(arguments,1);return a.each(function(){var t,a,f,g,m,p=e.isPlainObject(r)?e.extend(!0,{},e.fn.api.settings,r):e.extend({},e.fn.api.settings),b=p.namespace,v=p.metadata,h=p.selector,y=p.error,q=p.className,x="."+b,A="module-"+b,D=e(this),P=D.closest(h.form),R=p.stateContext?e(p.stateContext):D,T=this,S=R.get(),j=D.data(A);m={initialize:function(){var e=m.get.event();l||(e?(m.debug("Attaching API events to element",e),D.on(e+x,m.event.trigger)):"now"==p.on&&(m.debug("Querying API now",e),m.query())),m.instantiate()},instantiate:function(){m.verbose("Storing instance of module",m),j=m,D.data(A,j)},destroy:function(){m.verbose("Destroying previous module for",T),D.removeData(A).off(x)},query:function(){if(m.is.disabled())return void m.debug("Element is disabled API request aborted");if(m.is.loading()&&0===p.throttle)return void m.debug("Cancelling request, previous request is still pending");if(p.defaultData&&e.extend(!0,p.urlData,m.get.defaultData()),(p.serializeForm!==!1||R.is("form"))&&("json"==p.serializeForm?e.extend(!0,p.data,m.get.formData()):p.data=m.get.formData()),a=m.get.settings(),a===!1)return m.cancelled=!0,void m.error(y.beforeSend);if(m.cancelled=!1,p.url?(m.debug("Using specified url",f),f=m.add.urlData(p.url)):(f=m.add.urlData(m.get.templateURL()),m.debug("Added URL Data to url",f)),!f){if(!m.is.form())return void m.error(y.missingURL,p.action);f=D.attr("action")||"",m.debug("No url or action specified, defaulting to form action",f)}m.set.loading(),t=e.extend(!0,{},p,{type:p.method||p.type,data:g,url:p.base+f,beforeSend:p.beforeXHR,success:function(){},failure:function(){},complete:function(){}}),m.debug("Querying URL",t.url),m.debug("Sending data",g,t.method),m.verbose("Using AJAX settings",t),m.is.loading()?m.timer=setTimeout(function(){m.request=m.create.request(),m.xhr=m.create.xhr(),p.onRequest.call(S,m.request,m.xhr)},p.throttle):(m.request=m.create.request(),m.xhr=m.create.xhr(),p.onRequest.call(S,m.request,m.xhr))},is:{disabled:function(){return D.filter(p.filter).length>0},form:function(){return D.is("form")},input:function(){return D.is("input")},loading:function(){return m.request&&"pending"==m.request.state()}},was:{cancelled:function(){return m.cancelled||!1},succesful:function(){return m.request&&"resolved"==m.request.state()},failure:function(){return m.request&&"rejected"==m.request.state()},complete:function(){return m.request&&("resolved"==m.request.state()||"rejected"==m.request.state())}},add:{urlData:function(t,r){var o,a;return t&&(o=t.match(p.regExp.required),a=t.match(p.regExp.optional),r=r||p.urlData,o&&(m.debug("Looking for required URL variables",o),e.each(o,function(o,a){var i=-1!==a.indexOf("$")?a.substr(2,a.length-3):a.substr(1,a.length-2),s=e.isPlainObject(r)&&r[i]!==n?r[i]:D.data(i)!==n?D.data(i):R.data(i)!==n?R.data(i):r[i];return s===n?(m.error(y.requiredParameter,i,t),t=!1,!1):(m.verbose("Found required variable",i,s),void(t=t.replace(a,s)))})),a&&(m.debug("Looking for optional URL variables",o),e.each(a,function(o,a){var i=-1!==a.indexOf("$")?a.substr(3,a.length-4):a.substr(2,a.length-3),s=e.isPlainObject(r)&&r[i]!==n?r[i]:D.data(i)!==n?D.data(i):R.data(i)!==n?R.data(i):r[i];s!==n?(m.verbose("Optional variable Found",i,s),t=t.replace(a,s)):(m.verbose("Optional variable not found",i),t=-1!==t.indexOf("/"+a)?t.replace("/"+a,""):t.replace(a,""))}))),t}},event:{trigger:function(e){m.query(),("submit"==e.type||"click"==e.type)&&e.preventDefault()},xhr:{always:function(){},done:function(e){var t=this,r=(new Date).getTime()-s,n=p.loadingDuration-r;n=n>0?n:0,setTimeout(function(){m.request.resolveWith(t,[e])},n)},fail:function(e,t,r){var n=this,o=(new Date).getTime()-s,a=p.loadingDuration-o;a=a>0?a:0,setTimeout(function(){"abort"!==t?m.request.rejectWith(n,[e,t,r]):m.reset()},a)}},request:{complete:function(e){m.remove.loading(),p.onComplete.call(S,e,D)},done:function(t){m.debug("API Response Received",t),"json"==p.dataType&&e.isFunction(p.successTest)?(m.debug("Checking JSON returned success",p.successTest,t),p.successTest(t)?p.onSuccess.call(S,t,D):(m.debug("JSON test specified by user and response failed",t),p.onFailure.call(S,t,D))):p.onSuccess.call(S,t,D)},error:function(r,o,a){var i,s=p.error[o]!==n?p.error[o]:a;if(r!==n)if(r.readyState!==n&&4==r.readyState){if(200!=r.status&&a!==n&&""!==a)m.error(y.statusMessage+a,t.url);else if("error"==o&&"json"==p.dataType)try{i=e.parseJSON(r.responseText),i&&i.error!==n&&(s=i.error)}catch(u){m.error(y.JSONParse)}m.remove.loading(),m.set.error(),p.errorDuration&&setTimeout(m.remove.error,p.errorDuration),m.debug("API Request error:",s),p.onError.call(S,s,D)}else p.onAbort.call(S,s,D),m.debug("Request Aborted (Most likely caused by page change or CORS Policy)",o,a)}}},create:{request:function(){return e.Deferred().always(m.event.request.complete).done(m.event.request.done).fail(m.event.request.error)},xhr:function(){return e.ajax(t).always(m.event.xhr.always).done(m.event.xhr.done).fail(m.event.xhr.fail)}},set:{error:function(){m.verbose("Adding error state to element",R),R.addClass(q.error)},loading:function(){m.verbose("Adding loading state to element",R),R.addClass(q.loading)}},remove:{error:function(){m.verbose("Removing error state from element",R),R.removeClass(q.error)},loading:function(){m.verbose("Removing loading state from element",R),R.removeClass(q.loading)}},get:{request:function(){return m.request||!1},xhr:function(){return m.xhr||!1},settings:function(){var e;return e=p.beforeSend.call(D,p),e&&(e.success!==n&&(m.debug("Legacy success callback detected",e),m.error(y.legacyParameters,e.success),e.onSuccess=e.success),e.failure!==n&&(m.debug("Legacy failure callback detected",e),m.error(y.legacyParameters,e.failure),e.onFailure=e.failure),e.complete!==n&&(m.debug("Legacy complete callback detected",e),m.error(y.legacyParameters,e.complete),e.onComplete=e.complete)),e===n&&m.error(y.noReturnedValue),e!==n?e:p},defaultData:function(){var t={};return e.isWindow(T)||(m.is.input()?t.value=D.val():m.is.form()&&(t.text=D.text())),t},event:function(){return e.isWindow(T)||"now"==p.on?(m.debug("API called without element, no events attached"),!1):"auto"==p.on?D.is("input")?T.oninput!==n?"input":T.onpropertychange!==n?"propertychange":"keyup":D.is("form")?"submit":"click":p.on},formData:function(){var e;return D.serializeObject!==n?e=P.serializeObject():(m.error(y.missingSerialize),e=P.serialize()),m.debug("Retrieved form data",e),e},templateURL:function(e){var t;return e=e||D.data(v.action)||p.action||!1,e&&(m.debug("Looking up url for action",e,p.api),p.api[e]!==n?(t=p.api[e],m.debug("Found template url",t)):m.is.form()||m.error(y.missingAction,p.action,p.api)),t}},abort:function(){var e=m.get.xhr();e&&"resolved"!==e.state()&&(m.debug("Cancelling API request"),e.abort(),m.request.rejectWith(p.apiSettings))},reset:function(){m.remove.error(),m.remove.loading()},setting:function(t,r){if(m.debug("Changing setting",t,r),e.isPlainObject(t))e.extend(!0,p,t);else{if(r===n)return p[t];p[t]=r}},internal:function(t,r){if(e.isPlainObject(t))e.extend(!0,m,t);else{if(r===n)return m[t];m[t]=r}},debug:function(){p.debug&&(p.performance?m.performance.log(arguments):(m.debug=Function.prototype.bind.call(console.info,console,p.name+":"),m.debug.apply(console,arguments)))},verbose:function(){p.verbose&&p.debug&&(p.performance?m.performance.log(arguments):(m.verbose=Function.prototype.bind.call(console.info,console,p.name+":"),m.verbose.apply(console,arguments)))},error:function(){m.error=Function.prototype.bind.call(console.error,console,p.name+":"),m.error.apply(console,arguments)},performance:{log:function(e){var t,r,n;p.performance&&(t=(new Date).getTime(),n=s||t,r=t-n,s=t,u.push({Name:e[0],Arguments:[].slice.call(e,1)||"","Execution Time":r})),clearTimeout(m.performance.timer),m.performance.timer=setTimeout(m.performance.display,100)},display:function(){var t=p.name+":",r=0;s=!1,clearTimeout(m.performance.timer),e.each(u,function(e,t){r+=t["Execution Time"]}),t+=" "+r+"ms",i&&(t+=" '"+i+"'"),(console.group!==n||console.table!==n)&&u.length>0&&(console.groupCollapsed(t),console.table?console.table(u):e.each(u,function(e,t){console.log(t.Name+": "+t["Execution Time"]+"ms")}),console.groupEnd()),u=[]}},invoke:function(t,r,a){var i,s,u,c=j;return r=r||d,a=T||a,"string"==typeof t&&c!==n&&(t=t.split(/[\. ]/),i=t.length-1,e.each(t,function(r,o){var a=r!=i?o+t[r+1].charAt(0).toUpperCase()+t[r+1].slice(1):t;if(e.isPlainObject(c[a])&&r!=i)c=c[a];else{if(c[a]!==n)return s=c[a],!1;if(!e.isPlainObject(c[o])||r==i)return c[o]!==n?(s=c[o],!1):(m.error(y.method,t),!1);c=c[o]}})),e.isFunction(s)?u=s.apply(a,r):s!==n&&(u=s),e.isArray(o)?o.push(u):o!==n?o=[o,u]:u!==n&&(o=u),s}},l?(j===n&&m.initialize(),m.invoke(c)):(j!==n&&j.invoke("destroy"),m.initialize())}),o!==n?o:this},e.api.settings={name:"API",namespace:"api",debug:!0,verbose:!1,performance:!0,on:"auto",filter:".disabled",stateContext:!1,loadingDuration:0,errorDuration:2e3,action:!1,url:!1,base:"",urlData:{},defaultData:!0,serializeForm:!1,throttle:0,method:"get",data:{},dataType:"json",beforeSend:function(e){return e},beforeXHR:function(e){},onRequest:function(e,t){},onSuccess:function(e,t){},onComplete:function(e,t){},onFailure:function(e,t){},onError:function(e,t){},onAbort:function(e,t){},successTest:!1,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:"Required dependency jquery-serialize-object missing, using basic serialize",missingURL:"No URL specified for api event",noReturnedValue:"The beforeSend callback must return a settings object, beforeSend ignored.",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:{form:"form"},metadata:{action:"action"}},e.api.settings.api={}}(jQuery,window,document); \ No newline at end of file +!function(e,t,r,n){"use strict";e.api=e.fn.api=function(r){var o,s=e(e.isFunction(this)?t:this),a=s.selector||"",i=(new Date).getTime(),u=[],c=arguments[0],d="string"==typeof c,l=[].slice.call(arguments,1);return s.each(function(){var s,g,f,m,p,b,v=e.isPlainObject(r)?e.extend(!0,{},e.fn.api.settings,r):e.extend({},e.fn.api.settings),h=v.namespace,y=v.metadata,R=v.selector,q=v.error,x=v.className,k="."+h,T="module-"+h,A=e(this),S=A.closest(R.form),j=v.stateContext?e(v.stateContext):A,P=this,w=j[0],D=A.data(T);b={initialize:function(){d||b.bind.events(),b.instantiate()},instantiate:function(){b.verbose("Storing instance of module",b),D=b,A.data(T,D)},destroy:function(){b.verbose("Destroying previous module for",P),A.removeData(T).off(k)},bind:{events:function(){var e=b.get.event();e?(b.verbose("Attaching API events to element",e),A.on(e+k,b.event.trigger)):"now"==v.on&&(b.debug("Querying API endpoint immediately"),b.query())}},decode:{json:function(e){if(e!==n&&"string"==typeof e)try{e=JSON.parse(e)}catch(t){}return e}},read:{cachedResponse:function(e){var r;return t.Storage===n?void b.error(q.noStorage):(r=sessionStorage.getItem(e),b.debug("Using cached response",e,r),r=b.decode.json(r),!1)}},write:{cachedResponse:function(r,o){return o&&""===o?void b.debug("Response empty, not caching",o):t.Storage===n?void b.error(q.noStorage):(e.isPlainObject(o)&&(o=JSON.stringify(o)),sessionStorage.setItem(r,o),void b.verbose("Storing cached response for url",r,o))}},query:function(){if(b.is.disabled())return void b.debug("Element is disabled API request aborted");if(b.is.loading()){if(!v.interruptRequests)return void b.debug("Cancelling request, previous request is still pending");b.debug("Interrupting previous request"),b.abort()}return v.defaultData&&e.extend(!0,v.urlData,b.get.defaultData()),v.serializeForm&&(v.data=b.add.formData(v.data)),g=b.get.settings(),g===!1?(b.cancelled=!0,void b.error(q.beforeSend)):(b.cancelled=!1,f=b.get.templatedURL(),f||b.is.mocked()?(f=b.add.urlData(f),f||b.is.mocked()?(s=e.extend(!0,{},v,{type:v.method||v.type,data:m,url:v.base+f,beforeSend:v.beforeXHR,success:function(){},failure:function(){},complete:function(){}}),b.debug("Querying URL",s.url),b.verbose("Using AJAX settings",s),"local"===v.cache&&b.read.cachedResponse(f)?(b.debug("Response returned from local cache"),b.request=b.create.request(),void b.request.resolveWith(w,[b.read.cachedResponse(f)])):void(v.throttle?v.throttleFirstRequest||b.timer?(b.debug("Throttling request",v.throttle),clearTimeout(b.timer),b.timer=setTimeout(function(){b.timer&&delete b.timer,b.debug("Sending throttled request",m,s.method),b.send.request()},v.throttle)):(b.debug("Sending request",m,s.method),b.send.request(),b.timer=setTimeout(function(){},v.throttle)):(b.debug("Sending request",m,s.method),b.send.request()))):void 0):void b.error(q.missingURL))},should:{removeError:function(){return v.hideError===!0||"auto"===v.hideError&&!b.is.form()}},is:{disabled:function(){return A.filter(R.disabled).length>0},form:function(){return A.is("form")||j.is("form")},mocked:function(){return v.mockResponse||v.mockResponseAsync},input:function(){return A.is("input")},loading:function(){return b.request&&"pending"==b.request.state()},abortedRequest:function(e){return e&&e.readyState!==n&&0===e.readyState?(b.verbose("XHR request determined to be aborted"),!0):(b.verbose("XHR request was not aborted"),!1)},validResponse:function(t){return"json"!==v.dataType&&"jsonp"!==v.dataType||!e.isFunction(v.successTest)?(b.verbose("Response is not JSON, skipping validation",v.successTest,t),!0):(b.debug("Checking JSON returned success",v.successTest,t),v.successTest(t)?(b.debug("Response passed success test",t),!0):(b.debug("Response failed success test",t),!1))}},was:{cancelled:function(){return b.cancelled||!1},succesful:function(){return b.request&&"resolved"==b.request.state()},failure:function(){return b.request&&"rejected"==b.request.state()},complete:function(){return b.request&&("resolved"==b.request.state()||"rejected"==b.request.state())}},add:{urlData:function(t,r){var o,s;return t&&(o=t.match(v.regExp.required),s=t.match(v.regExp.optional),r=r||v.urlData,o&&(b.debug("Looking for required URL variables",o),e.each(o,function(o,s){var a=-1!==s.indexOf("$")?s.substr(2,s.length-3):s.substr(1,s.length-2),i=e.isPlainObject(r)&&r[a]!==n?r[a]:A.data(a)!==n?A.data(a):j.data(a)!==n?j.data(a):r[a];return i===n?(b.error(q.requiredParameter,a,t),t=!1,!1):(b.verbose("Found required variable",a,i),i=v.encodeParameters?b.get.urlEncodedValue(i):i,t=t.replace(s,i),void 0)})),s&&(b.debug("Looking for optional URL variables",o),e.each(s,function(o,s){var a=-1!==s.indexOf("$")?s.substr(3,s.length-4):s.substr(2,s.length-3),i=e.isPlainObject(r)&&r[a]!==n?r[a]:A.data(a)!==n?A.data(a):j.data(a)!==n?j.data(a):r[a];i!==n?(b.verbose("Optional variable Found",a,i),t=t.replace(s,i)):(b.verbose("Optional variable not found",a),t=-1!==t.indexOf("/"+s)?t.replace("/"+s,""):t.replace(s,""))}))),t},formData:function(t){var r,o=e.fn.serializeObject!==n,s=o?S.serializeObject():S.serialize();return t=t||v.data,r=e.isPlainObject(t),r?o?(b.debug("Extending existing data with form data",t,s),t=e.extend(!0,{},t,s)):(b.error(q.missingSerialize),b.debug("Cant extend data. Replacing data with form data",t,s),t=s):(b.debug("Adding form data",s),t=s),t}},send:{request:function(){b.set.loading(),b.request=b.create.request(),b.is.mocked()?b.mockedXHR=b.create.mockedXHR():b.xhr=b.create.xhr(),v.onRequest.call(w,b.request,b.xhr)}},event:{trigger:function(e){b.query(),("submit"==e.type||"click"==e.type)&&e.preventDefault()},xhr:{always:function(){},done:function(t,r,n){var o=this,s=(new Date).getTime()-p,a=v.loadingDuration-s,i=e.isFunction(v.onResponse)?v.onResponse.call(o,e.extend(!0,{},t)):!1;a=a>0?a:0,i&&(b.debug("Modified API response in onResponse callback",v.onResponse,i,t),t=i),a>0&&b.debug("Response completed early delaying state change by",a),setTimeout(function(){b.is.validResponse(t)?b.request.resolveWith(o,[t,n]):b.request.rejectWith(o,[n,"invalid"])},a)},fail:function(e,t,r){var n=this,o=(new Date).getTime()-p,s=v.loadingDuration-o;s=s>0?s:0,s>0&&b.debug("Response completed early delaying state change by",s),setTimeout(function(){b.is.abortedRequest(e)?b.request.rejectWith(n,[e,"aborted",r]):b.request.rejectWith(n,[e,"error",t,r])},s)}},request:{done:function(e,t){b.debug("Successful API Response",e),"local"===v.cache&&f&&(b.write.cachedResponse(f,e),b.debug("Saving server response locally",b.cache)),v.onSuccess.call(w,e,A,t)},complete:function(e,t){var r,n;b.was.succesful()?(n=e,r=t):(r=e,n=b.get.responseFromXHR(r)),b.remove.loading(),v.onComplete.call(w,n,A,r)},fail:function(e,t,r){var o=b.get.responseFromXHR(e),a=b.get.errorFromRequest(o,t,r);"aborted"==t?(b.debug("XHR Aborted (Most likely caused by page navigation or CORS Policy)",t,r),v.onAbort.call(w,t,A,e)):"invalid"==t?b.debug("JSON did not pass success test. A server-side error has most likely occurred",o):"error"==t&&e!==n&&(b.debug("XHR produced a server error",t,r),200!=e.status&&r!==n&&""!==r&&b.error(q.statusMessage+r,s.url),v.onError.call(w,a,A,e)),v.errorDuration&&"aborted"!==t&&(b.debug("Adding error state"),b.set.error(),b.should.removeError()&&setTimeout(b.remove.error,v.errorDuration)),b.debug("API Request failed",a,e),v.onFailure.call(w,o,A,e)}}},create:{request:function(){return e.Deferred().always(b.event.request.complete).done(b.event.request.done).fail(b.event.request.fail)},mockedXHR:function(){var t,r,n,o=!1,s=!1,a=!1;return n=e.Deferred().always(b.event.xhr.complete).done(b.event.xhr.done).fail(b.event.xhr.fail),v.mockResponse?(e.isFunction(v.mockResponse)?(b.debug("Using mocked callback returning response",v.mockResponse),r=v.mockResponse.call(w,v)):(b.debug("Using specified response",v.mockResponse),r=v.mockResponse),n.resolveWith(w,[r,o,{responseText:r}])):e.isFunction(v.mockResponseAsync)&&(t=function(e){b.debug("Async callback returned response",e),e?n.resolveWith(w,[e,o,{responseText:e}]):n.rejectWith(w,[{responseText:e},s,a])},b.debug("Using async mocked response",v.mockResponseAsync),v.mockResponseAsync.call(w,v,t)),n},xhr:function(){var t;return t=e.ajax(s).always(b.event.xhr.always).done(b.event.xhr.done).fail(b.event.xhr.fail),b.verbose("Created server request",t),t}},set:{error:function(){b.verbose("Adding error state to element",j),j.addClass(x.error)},loading:function(){b.verbose("Adding loading state to element",j),j.addClass(x.loading),p=(new Date).getTime()}},remove:{error:function(){b.verbose("Removing error state from element",j),j.removeClass(x.error)},loading:function(){b.verbose("Removing loading state from element",j),j.removeClass(x.loading)}},get:{responseFromXHR:function(t){return e.isPlainObject(t)?"json"==v.dataType||"jsonp"==v.dataType?b.decode.json(t.responseText):t.responseText:!1},errorFromRequest:function(t,r,o){return e.isPlainObject(t)&&t.error!==n?t.error:v.error[r]!==n?v.error[r]:o},request:function(){return b.request||!1},xhr:function(){return b.xhr||!1},settings:function(){var e;return e=v.beforeSend.call(w,v),e&&(e.success!==n&&(b.debug("Legacy success callback detected",e),b.error(q.legacyParameters,e.success),e.onSuccess=e.success),e.failure!==n&&(b.debug("Legacy failure callback detected",e),b.error(q.legacyParameters,e.failure),e.onFailure=e.failure),e.complete!==n&&(b.debug("Legacy complete callback detected",e),b.error(q.legacyParameters,e.complete),e.onComplete=e.complete)),e===n&&b.error(q.noReturnedValue),e!==n?e:v},urlEncodedValue:function(e){var r=t.decodeURIComponent(e),n=t.encodeURIComponent(e),o=r!==e;return o?(b.debug("URL value is already encoded, avoiding double encoding",e),e):(b.verbose("Encoding value using encodeURIComponent",e,n),n)},defaultData:function(){var t={};return e.isWindow(P)||(b.is.input()?t.value=A.val():b.is.form()&&(t.text=A.text())),t},event:function(){return e.isWindow(P)||"now"==v.on?(b.debug("API called without element, no events attached"),!1):"auto"==v.on?A.is("input")?P.oninput!==n?"input":P.onpropertychange!==n?"propertychange":"keyup":A.is("form")?"submit":"click":v.on},templatedURL:function(e){if(e=e||A.data(y.action)||v.action||!1,f=A.data(y.url)||v.url||!1)return b.debug("Using specified url",f),f;if(e){if(b.debug("Looking up url for action",e,v.api),v.api[e]===n&&!b.is.mocked())return void b.error(q.missingAction,v.action,v.api);f=v.api[e]}else b.is.form()&&(f=A.attr("action")||j.attr("action")||!1,b.debug("No url or action specified, defaulting to form action",f));return f}},abort:function(){var e=b.get.xhr();e&&"resolved"!==e.state()&&(b.debug("Cancelling API request"),e.abort())},reset:function(){b.remove.error(),b.remove.loading()},setting:function(t,r){if(b.debug("Changing setting",t,r),e.isPlainObject(t))e.extend(!0,v,t);else{if(r===n)return v[t];v[t]=r}},internal:function(t,r){if(e.isPlainObject(t))e.extend(!0,b,t);else{if(r===n)return b[t];b[t]=r}},debug:function(){v.debug&&(v.performance?b.performance.log(arguments):(b.debug=Function.prototype.bind.call(console.info,console,v.name+":"),b.debug.apply(console,arguments)))},verbose:function(){v.verbose&&v.debug&&(v.performance?b.performance.log(arguments):(b.verbose=Function.prototype.bind.call(console.info,console,v.name+":"),b.verbose.apply(console,arguments)))},error:function(){b.error=Function.prototype.bind.call(console.error,console,v.name+":"),b.error.apply(console,arguments)},performance:{log:function(e){var t,r,n;v.performance&&(t=(new Date).getTime(),n=i||t,r=t-n,i=t,u.push({Name:e[0],Arguments:[].slice.call(e,1)||"","Execution Time":r})),clearTimeout(b.performance.timer),b.performance.timer=setTimeout(b.performance.display,500)},display:function(){var t=v.name+":",r=0;i=!1,clearTimeout(b.performance.timer),e.each(u,function(e,t){r+=t["Execution Time"]}),t+=" "+r+"ms",a&&(t+=" '"+a+"'"),(console.group!==n||console.table!==n)&&u.length>0&&(console.groupCollapsed(t),console.table?console.table(u):e.each(u,function(e,t){console.log(t.Name+": "+t["Execution Time"]+"ms")}),console.groupEnd()),u=[]}},invoke:function(t,r,s){var a,i,u,c=D;return r=r||l,s=P||s,"string"==typeof t&&c!==n&&(t=t.split(/[\. ]/),a=t.length-1,e.each(t,function(r,o){var s=r!=a?o+t[r+1].charAt(0).toUpperCase()+t[r+1].slice(1):t;if(e.isPlainObject(c[s])&&r!=a)c=c[s];else{if(c[s]!==n)return i=c[s],!1;if(!e.isPlainObject(c[o])||r==a)return c[o]!==n?(i=c[o],!1):(b.error(q.method,t),!1);c=c[o]}})),e.isFunction(i)?u=i.apply(s,r):i!==n&&(u=i),e.isArray(o)?o.push(u):o!==n?o=[o,u]:u!==n&&(o=u),i}},d?(D===n&&b.initialize(),b.invoke(c)):(D!==n&&D.invoke("destroy"),b.initialize())}),o!==n?o:this},e.api.settings={name:"API",namespace:"api",debug:!1,verbose:!1,performance:!0,api:{},cache:!0,interruptRequests:!0,on:"auto",stateContext:!1,loadingDuration:0,hideError:"auto",errorDuration:2e3,encodeParameters:!0,action:!1,url:!1,base:"",urlData:{},defaultData:!0,serializeForm:!1,throttle:0,throttleFirstRequest:!0,method:"get",data:{},dataType:"json",mockResponse:!1,mockResponseAsync:!1,beforeSend:function(e){return e},beforeXHR:function(e){},onRequest:function(e,t){},onResponse:!1,onSuccess:function(e,t){},onComplete:function(e,t){},onFailure:function(e,t){},onError:function(e,t){},onAbort:function(e,t){},successTest:!1,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 respopnses 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); \ No newline at end of file diff --git a/amiibofindr/static/semantic/components/breadcrumb.css b/amiibofindr/static/semantic/components/breadcrumb.css index c0cc3c4..d659513 100755 --- a/amiibofindr/static/semantic/components/breadcrumb.css +++ b/amiibofindr/static/semantic/components/breadcrumb.css @@ -1,9 +1,9 @@ /*! - * # Semantic UI 1.12.3 - Breadcrumb + * # Semantic UI 2.1.3 - Breadcrumb * http://github.com/semantic-org/semantic-ui/ * * - * Copyright 2014 Contributors + * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * @@ -15,8 +15,9 @@ *******************************/ .ui.breadcrumb { - margin: 1em 0em; + line-height: 1; display: inline-block; + margin: 0em 0em; vertical-align: middle; } .ui.breadcrumb:first-child { @@ -35,19 +36,19 @@ /* Divider */ .ui.breadcrumb .divider { display: inline-block; - opacity: 0.5; - margin: 0em 0.2rem 0em; - font-size: 0.9em; + opacity: 0.7; + margin: 0em 0.21428571rem 0em; + font-size: 0.92857143em; color: rgba(0, 0, 0, 0.4); vertical-align: baseline; } /* Link */ .ui.breadcrumb a { - color: #009fda; + color: #4183c4; } .ui.breadcrumb a:hover { - color: #00b2f3; + color: #1e70bf; } /* Icon Divider */ @@ -69,7 +70,7 @@ /* Loose Coupling */ .ui.breadcrumb.segment { display: inline-block; - padding: 0.5em 1em; + padding: 0.71428571em 1em; } @@ -87,28 +88,28 @@ *******************************/ .ui.mini.breadcrumb { - font-size: 0.65em; + font-size: 0.71428571rem; } .ui.tiny.breadcrumb { - font-size: 0.7em; + font-size: 0.85714286rem; } .ui.small.breadcrumb { - font-size: 0.75em; + font-size: 0.92857143rem; } .ui.breadcrumb { - font-size: 1em; + font-size: 1rem; } .ui.large.breadcrumb { - font-size: 1.1em; + font-size: 1.14285714rem; } .ui.big.breadcrumb { - font-size: 1.05em; + font-size: 1.28571429rem; } .ui.huge.breadcrumb { - font-size: 1.3em; + font-size: 1.42857143rem; } .ui.massive.breadcrumb { - font-size: 1.5em; + font-size: 1.71428571rem; } diff --git a/amiibofindr/static/semantic/components/breadcrumb.min.css b/amiibofindr/static/semantic/components/breadcrumb.min.css index f1a3581..a6abaeb 100755 --- a/amiibofindr/static/semantic/components/breadcrumb.min.css +++ b/amiibofindr/static/semantic/components/breadcrumb.min.css @@ -1,10 +1,10 @@ /*! - * # Semantic UI 1.12.3 - Breadcrumb + * # Semantic UI 2.1.3 - Breadcrumb * http://github.com/semantic-org/semantic-ui/ * * - * Copyright 2014 Contributors + * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * - */.ui.breadcrumb{margin:1em 0;display:inline-block;vertical-align:middle}.ui.breadcrumb:first-child{margin-top:0}.ui.breadcrumb:last-child{margin-bottom:0}.ui.breadcrumb .divider{display:inline-block;opacity:.5;margin:0 .2rem;font-size:.9em;color:rgba(0,0,0,.4);vertical-align:baseline}.ui.breadcrumb a{color:#009fda}.ui.breadcrumb a:hover{color:#00b2f3}.ui.breadcrumb .icon.divider{font-size:.85714286em;vertical-align:baseline}.ui.breadcrumb a.section{cursor:pointer}.ui.breadcrumb .section{display:inline-block;margin:0;padding:0}.ui.breadcrumb.segment{display:inline-block;padding:.5em 1em}.ui.breadcrumb .active.section{font-weight:700}.ui.mini.breadcrumb{font-size:.65em}.ui.tiny.breadcrumb{font-size:.7em}.ui.small.breadcrumb{font-size:.75em}.ui.breadcrumb{font-size:1em}.ui.large.breadcrumb{font-size:1.1em}.ui.big.breadcrumb{font-size:1.05em}.ui.huge.breadcrumb{font-size:1.3em}.ui.massive.breadcrumb{font-size:1.5em} \ No newline at end of file + */.ui.breadcrumb{line-height:1;display:inline-block;margin:0;vertical-align:middle}.ui.breadcrumb:first-child{margin-top:0}.ui.breadcrumb:last-child{margin-bottom:0}.ui.breadcrumb .divider{display:inline-block;opacity:.7;margin:0 .21428571rem;font-size:.92857143em;color:rgba(0,0,0,.4);vertical-align:baseline}.ui.breadcrumb a{color:#4183c4}.ui.breadcrumb a:hover{color:#1e70bf}.ui.breadcrumb .icon.divider{font-size:.85714286em;vertical-align:baseline}.ui.breadcrumb a.section{cursor:pointer}.ui.breadcrumb .section{display:inline-block;margin:0;padding:0}.ui.breadcrumb.segment{display:inline-block;padding:.71428571em 1em}.ui.breadcrumb .active.section{font-weight:700}.ui.mini.breadcrumb{font-size:.71428571rem}.ui.tiny.breadcrumb{font-size:.85714286rem}.ui.small.breadcrumb{font-size:.92857143rem}.ui.breadcrumb{font-size:1rem}.ui.large.breadcrumb{font-size:1.14285714rem}.ui.big.breadcrumb{font-size:1.28571429rem}.ui.huge.breadcrumb{font-size:1.42857143rem}.ui.massive.breadcrumb{font-size:1.71428571rem} \ No newline at end of file diff --git a/amiibofindr/static/semantic/components/button.css b/amiibofindr/static/semantic/components/button.css index ed7ad1d..f9ee73a 100755 --- a/amiibofindr/static/semantic/components/button.css +++ b/amiibofindr/static/semantic/components/button.css @@ -1,9 +1,9 @@ /*! - * # Semantic UI 1.12.3 - Button + * # Semantic UI 2.1.3 - Button * http://github.com/semantic-org/semantic-ui/ * * - * Copyright 2014 Contributorss + * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * @@ -21,21 +21,20 @@ outline: none; border: none; vertical-align: baseline; - background-color: #e0e0e0; + background: #e0e1e2 none; color: rgba(0, 0, 0, 0.6); font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif; margin: 0em 0.25em 0em 0em; - padding: 0.78571em 1.5em 0.78571em; + padding: 0.78571429em 1.5em 0.78571429em; text-transform: none; text-shadow: none; font-weight: bold; - line-height: 1; + line-height: 1em; font-style: normal; text-align: center; text-decoration: none; - background-image: none; - border-radius: 0.2857rem; - box-shadow: 0px 0px 0px 1px transparent inset, 0px 0em 0px 0px rgba(39, 41, 43, 0.15) inset; + border-radius: 0.28571429rem; + box-shadow: 0px 0px 0px 1px transparent inset, 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; @@ -57,9 +56,9 @@ ---------------*/ .ui.button:hover { - background-color: #e8e8e8; + background-color: #cacbcd; background-image: none; - box-shadow: ''; + box-shadow: 0px 0px 0px 1px transparent inset, 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; color: rgba(0, 0, 0, 0.8); } .ui.button:hover .icon { @@ -71,10 +70,10 @@ ---------------*/ .ui.button:focus { - background-color: ''; + background-color: #cacbcd; color: rgba(0, 0, 0, 0.8); background-image: '' !important; - box-shadow: 0px 0px 0px 1px transparent inset, 0px 0px 1px rgba(81, 167, 232, 0.8) inset, 0px 0px 3px 2px rgba(81, 167, 232, 0.8) !important; + box-shadow: '' !important; } .ui.button:focus .icon { opacity: 0.85; @@ -86,10 +85,10 @@ .ui.button:active, .ui.active.button:active { - background-color: #cccccc; + background-color: #babbbc; background-image: ''; - color: rgba(0, 0, 0, 0.8); - box-shadow: 0px 0px 0px 1px transparent inset, 0px 1px 4px 0px rgba(39, 41, 43, 0.15) inset !important; + color: rgba(0, 0, 0, 0.9); + box-shadow: 0px 0px 0px 1px transparent inset, none; } /*-------------- @@ -97,18 +96,18 @@ ---------------*/ .ui.active.button { - background-color: #d0d0d0; + background-color: #c0c1c2; background-image: none; box-shadow: 0px 0px 0px 1px transparent inset; - color: rgba(0, 0, 0, 0.8); + color: rgba(0, 0, 0, 0.95); } .ui.active.button:hover { - background-color: #d0d0d0; + background-color: #c0c1c2; background-image: none; - color: rgba(0, 0, 0, 0.8); + color: rgba(0, 0, 0, 0.95); } .ui.active.button:active { - background-color: #d0d0d0; + background-color: #c0c1c2; background-image: none; } @@ -124,18 +123,18 @@ text-shadow: none !important; color: transparent !important; opacity: 1; - pointer-events: none; - -webkit-transition: all 0s linear, opacity 0.2s ease; - transition: all 0s linear, opacity 0.2s ease; + pointer-events: auto; + -webkit-transition: all 0s linear, opacity 0.1s ease; + transition: all 0s linear, opacity 0.1s ease; } .ui.loading.button:before { position: absolute; content: ''; top: 50%; left: 50%; - margin: -0.64285em 0em 0em -0.64285em; - width: 1.2857em; - height: 1.2857em; + 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.15); } @@ -144,9 +143,9 @@ content: ''; top: 50%; left: 50%; - margin: -0.64285em 0em 0em -0.64285em; - width: 1.2857em; - height: 1.2857em; + 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; @@ -185,7 +184,7 @@ border-color: rgba(0, 0, 0, 0.1); } .ui.basic.loading.button:not(.inverted):after { - border-top-color: #aaaaaa; + border-top-color: #767676; } /*------------------- @@ -198,9 +197,7 @@ .ui.disabled.button:hover, .ui.disabled.active.button { cursor: default; - background-color: #dcddde !important; - color: rgba(0, 0, 0, 0.4) !important; - opacity: 0.3 !important; + opacity: 0.45 !important; background-image: none !important; box-shadow: none !important; pointer-events: none; @@ -208,7 +205,7 @@ /* Basic Group With Disabled */ .ui.basic.buttons .ui.disabled.button { - border-color: rgba(39, 41, 43, 0.5); + border-color: rgba(34, 36, 38, 0.5); } @@ -224,8 +221,9 @@ .ui.animated.button { position: relative; overflow: hidden; - vertical-align: middle; padding-right: 0em !important; + vertical-align: middle; + z-index: 1; } .ui.animated.button .content { will-change: transform, opacity; @@ -255,10 +253,12 @@ right: -100%; margin-top: -0.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%; @@ -281,12 +281,14 @@ left: 0%; right: auto; } +.ui.vertical.animated.button:focus .visible.content, .ui.vertical.animated.button:hover .visible.content { -webkit-transform: translateY(200%); -ms-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; @@ -314,6 +316,7 @@ -ms-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; @@ -322,6 +325,7 @@ -ms-transform: scale(0.75); transform: scale(0.75); } +.ui.fade.animated.button:focus .hidden.content, .ui.fade.animated.button:hover .hidden.content { left: 0%; right: auto; @@ -341,6 +345,8 @@ color: #ffffff; text-shadow: none !important; } + +/* Group */ .ui.inverted.buttons .button { margin: 0px 0px 0px -2px; } @@ -353,15 +359,94 @@ .ui.inverted.vertical.buttons .button:first-child { margin-top: 0em; } -.ui.inverted.buttons .button:hover { - position: relative; -} + +/* States */ + +/* Hover */ .ui.inverted.button:hover { background: #ffffff; box-shadow: 0px 0px 0px 2px #ffffff inset !important; color: rgba(0, 0, 0, 0.8); } +/* Active / Focus */ +.ui.inverted.button:focus, +.ui.inverted.button.active { + background: #ffffff; + box-shadow: 0px 0px 0px 2px #ffffff inset !important; + color: rgba(0, 0, 0, 0.8); +} + +/* Active Focus */ +.ui.inverted.button.active:focus { + background: #dcddde; + box-shadow: 0px 0px 0px 2px #dcddde inset !important; + color: rgba(0, 0, 0, 0.8); +} + +/*------------------- + Labeled Button +--------------------*/ + +.ui.labeled.button:not(.icon) { + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + background: none !important; + padding: 0px !important; + border: none !important; + box-shadow: none !important; +} +.ui.labeled.button > .button { + margin: 0px; +} +.ui.labeled.button > .label { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -webkit-align-items: 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 --------------------*/ @@ -369,57 +454,57 @@ /* Facebook */ .ui.facebook.button { - background-color: #3b579d; + background-color: #3b5998; color: #ffffff; text-shadow: none; background-image: none; - box-shadow: 0px 0em 0px 0px rgba(39, 41, 43, 0.15) inset; + box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; } .ui.facebook.button:hover { - background-color: #3f5da8; + background-color: #304d8a; color: #ffffff; text-shadow: none; } .ui.facebook.button:active { - background-color: #314983; + background-color: #2d4373; color: #ffffff; text-shadow: none; } /* Twitter */ .ui.twitter.button { - background-color: #4092cc; + background-color: #0084b4; color: #ffffff; text-shadow: none; background-image: none; - box-shadow: 0px 0em 0px 0px rgba(39, 41, 43, 0.15) inset; + box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; } .ui.twitter.button:hover { - background-color: #4c99cf; + background-color: #00719b; color: #ffffff; text-shadow: none; } .ui.twitter.button:active { - background-color: #3180b7; + background-color: #005f81; color: #ffffff; text-shadow: none; } /* Google Plus */ .ui.google.plus.button { - background-color: #d34836; + background-color: #dc4a38; color: #ffffff; text-shadow: none; background-image: none; - box-shadow: 0px 0em 0px 0px rgba(39, 41, 43, 0.15) inset; + box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; } .ui.google.plus.button:hover { - background-color: #d65343; + background-color: #de321d; color: #ffffff; text-shadow: none; } .ui.google.plus.button:active { - background-color: #bc3a29; + background-color: #bf3322; color: #ffffff; text-shadow: none; } @@ -431,12 +516,12 @@ text-shadow: none; } .ui.linkedin.button:hover { - background-color: #2191cb; + background-color: #147baf; color: #ffffff; text-shadow: none; } .ui.linkedin.button:active { - background-color: #1a729f; + background-color: #186992; color: #ffffff; text-shadow: none; } @@ -447,15 +532,15 @@ color: #ffffff; text-shadow: none; background-image: none; - box-shadow: 0px 0em 0px 0px rgba(39, 41, 43, 0.15) inset; + box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; } .ui.youtube.button:hover { - background-color: #da1a20; + background-color: #bd0d13; color: #ffffff; text-shadow: none; } .ui.youtube.button:active { - background-color: #ac1419; + background-color: #9e1317; color: #ffffff; text-shadow: none; } @@ -466,15 +551,15 @@ color: #ffffff; text-shadow: none; background-image: none; - box-shadow: 0px 0em 0px 0px rgba(39, 41, 43, 0.15) inset; + box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; } .ui.instagram.button:hover { - background-color: #4e7ea6; + background-color: #3d698e; color: #ffffff; text-shadow: none; } .ui.instagram.button:active { - background-color: #3e6484; + background-color: #395c79; color: #ffffff; text-shadow: none; } @@ -485,15 +570,15 @@ color: #ffffff; text-shadow: none; background-image: none; - box-shadow: 0px 0em 0px 0px rgba(39, 41, 43, 0.15) inset; + box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; } .ui.pinterest.button:hover { - background-color: #00b7fc; + background-color: #0099d4; color: #ffffff; text-shadow: none; } .ui.pinterest.button:active { - background-color: #0092c9; + background-color: #0087ba; color: #ffffff; text-shadow: none; } @@ -503,14 +588,14 @@ background-color: #4D7198; color: #ffffff; background-image: none; - box-shadow: 0px 0em 0px 0px rgba(39, 41, 43, 0.15) inset; + box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; } .ui.vk.button:hover { - background-color: #5279a2; + background-color: #41648a; color: #ffffff; } .ui.vk.button:active { - background-color: #415f80; + background-color: #3c5876; color: #ffffff; } @@ -518,16 +603,17 @@ Icon ---------------*/ -.ui.button > .icon { +.ui.button > .icon:not(.button) { + height: 0.85714286em; opacity: 0.8; - margin: 0em 0.4em 0em -0.2em; - -webkit-transition: opacity 0.2s ease; - transition: opacity 0.2s ease; - vertical-align: baseline; + margin: 0em 0.42857143em 0em -0.21428571em; + -webkit-transition: opacity 0.1s ease; + transition: opacity 0.1s ease; + vertical-align: ''; color: ''; } -.ui.button > .right.icon { - margin: 0em -0.2em 0em 0.4em; +.ui.button > .right.icon:not(.button) { + margin: 0em -0.21428571em 0em 0.42857143em; } @@ -559,15 +645,15 @@ .ui.compact.buttons .button, .ui.compact.button { - padding: 0.5892825em 1.125em 0.5892825em; + padding: 0.58928571em 1.125em 0.58928571em; } .ui.compact.icon.buttons .button, .ui.compact.icon.button { - padding: 0.5892825em 0.5892825em 0.5892825em; + padding: 0.58928571em 0.58928571em 0.58928571em; } .ui.compact.labeled.icon.buttons .button, .ui.compact.labeled.icon.button { - padding: 0.5892825em 3.69642em 0.5892825em; + padding: 0.58928571em 3.69642857em 0.58928571em; } /*------------------- @@ -621,7 +707,7 @@ .ui.icon.buttons .button, .ui.icon.button { - padding: 0.78571em 0.78571em 0.78571em; + padding: 0.78571429em 0.78571429em 0.78571429em; } .ui.icon.buttons .button > .icon, .ui.icon.button > .icon { @@ -636,40 +722,46 @@ .ui.basic.buttons .button, .ui.basic.button { - background: transparent !important; - background-image: none; + background: transparent none !important; color: rgba(0, 0, 0, 0.6) !important; font-weight: normal; - border-radius: 0.2857rem; + border-radius: 0.28571429rem; text-transform: none; text-shadow: none !important; - box-shadow: 0px 0px 0px 1px rgba(39, 41, 43, 0.15) inset; + box-shadow: 0px 0px 0px 1px rgba(34, 36, 38, 0.15) inset; } .ui.basic.buttons { - box-shadow: 0px 0px 0px 1px rgba(39, 41, 43, 0.15); - border-radius: 0.2857rem; + 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: #fafafa !important; + background: #ffffff !important; color: rgba(0, 0, 0, 0.8) !important; - box-shadow: 0px 0px 0px 1px rgba(39, 41, 43, 0.15) inset, 0px 0px 0px 0px rgba(39, 41, 43, 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; + 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.8) !important; - box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.15) inset, 0px 1px 4px 0px rgba(39, 41, 43, 0.15) inset; + color: rgba(0, 0, 0, 0.9) !important; + 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; box-shadow: '' !important; - color: rgba(0, 0, 0, 0.8); - box-shadow: rgba(39, 41, 43, 0.3); + color: rgba(0, 0, 0, 0.95); + box-shadow: rgba(34, 36, 38, 0.35); } .ui.basic.buttons .active.button:hover, .ui.basic.active.button:hover { @@ -678,20 +770,20 @@ /* Vertical */ .ui.basic.buttons .button:hover { - box-shadow: 0px 0px 0px 1px rgba(39, 41, 43, 0.15) inset, 0px 0px 0px 0px rgba(39, 41, 43, 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 { - box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.15) inset, 0px 1px 4px 0px rgba(39, 41, 43, 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 { - box-shadow: rgba(39, 41, 43, 0.3) inset; + box-shadow: rgba(34, 36, 38, 0.35) inset; } /* Standard Basic Inverted */ .ui.basic.inverted.buttons .button, .ui.basic.inverted.button { background-color: transparent !important; - color: #fafafa !important; + color: #f9fafb !important; box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 0.5) inset !important; } .ui.basic.inverted.buttons .button:hover, @@ -699,28 +791,33 @@ color: #ffffff !important; box-shadow: 0px 0px 0px 2px #ffffff inset !important; } +.ui.basic.inverted.buttons .button:focus, +.ui.basic.inverted.button:focus { + color: #ffffff !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.05) !important; + background-color: rgba(255, 255, 255, 0.08) !important; color: #ffffff !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.05); + background-color: rgba(255, 255, 255, 0.08); color: #ffffff; text-shadow: none; 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.07); + background-color: rgba(255, 255, 255, 0.15); box-shadow: 0px 0px 0px 2px #ffffff inset !important; } /* Basic Group */ .ui.basic.buttons .button { - border-left: 1px solid rgba(39, 41, 43, 0.15); + border-left: 1px solid rgba(34, 36, 38, 0.15); box-shadow: none; } .ui.basic.vertical.buttons .button { @@ -728,7 +825,7 @@ } .ui.basic.vertical.buttons .button { border-left-width: 0px; - border-top: 1px solid rgba(39, 41, 43, 0.15); + border-top: 1px solid rgba(34, 36, 38, 0.15); } .ui.basic.vertical.buttons .button:first-child { border-top-width: 0px; @@ -741,7 +838,7 @@ .ui.labeled.icon.buttons .button, .ui.labeled.icon.button { position: relative; - padding-left: 4.07142em !important; + padding-left: 4.07142857em !important; padding-right: 1.5em !important; } @@ -749,13 +846,15 @@ .ui.labeled.icon.buttons > .button > .icon, .ui.labeled.icon.button > .icon { position: absolute; - width: 2.57142em; height: 100%; + line-height: 1; + border-radius: 0px; + border-top-left-radius: inherit; + border-bottom-left-radius: inherit; + width: 2.57142857em; background-color: rgba(0, 0, 0, 0.05); text-align: center; color: ''; - border-radius: 0.2857rem 0px 0px 0.2857rem; - line-height: 1; box-shadow: -1px 0px 0px 0px transparent inset; } @@ -768,13 +867,15 @@ /* Right Labeled */ .ui[class*="right labeled"].icon.button { - padding-right: 4.07142em !important; + padding-right: 4.07142857em !important; padding-left: 1.5em !important; } .ui[class*="right labeled"].icon.button > .icon { left: auto; right: 0em; - border-radius: 0em 0.2857rem 0.2857rem 0em; + border-radius: 0px; + border-top-right-radius: inherit; + border-bottom-right-radius: inherit; box-shadow: 1px 0px 0px 0px transparent inset; } .ui.labeled.icon.buttons > .button > .icon:before, @@ -786,26 +887,28 @@ width: 100%; top: 50%; text-align: center; - margin-top: -0.5em; + -webkit-transform: translateY(-50%); + -ms-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.2857rem; - border-bottom-left-radius: 0.2857rem; + 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.2857rem; - border-bottom-right-radius: 0.2857rem; + 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.2857rem; + border-top-left-radius: 0.28571429rem; } .ui.vertical.labeled.icon.buttons .button:last-child > .icon { border-radius: 0em; - border-bottom-left-radius: 0.2857rem; + border-bottom-left-radius: 0.28571429rem; } /* Fluid Labeled */ @@ -824,13 +927,13 @@ .ui.toggle.buttons .active.button, .ui.buttons .button.toggle.active, .ui.button.toggle.active { - background-color: #5bbd72 !important; + background-color: #21ba45 !important; box-shadow: none !important; text-shadow: none; color: #ffffff !important; } .ui.button.toggle.active:hover { - background-color: #66c17b !important; + background-color: #16ab39 !important; text-shadow: none; color: #ffffff !important; } @@ -847,45 +950,14 @@ vertical-align: baseline; } -/*-------------- - Attached ----------------*/ - -.ui.attached.button { - display: block; - margin: 0em; - box-shadow: 0px 0px 0px 1px rgba(39, 41, 43, 0.15) !important; - border-radius: 0em; -} -.ui.attached.top.button { - border-radius: 0.2857rem 0.2857rem 0em 0em; -} -.ui.attached.bottom.button { - border-radius: 0em 0em 0.2857rem 0.2857rem; -} -.ui.attached.left.button { - display: inline-block; - border-left: none; - padding-right: 0.75em; - text-align: right; - border-radius: 0.2857rem 0em 0em 0.2857rem; -} -.ui.attached.right.button { - display: inline-block; - padding-left: 0.75em; - text-align: left; - border-radius: 0em 0.2857rem 0.2857rem 0em; -} - /*------------------- Or Buttons --------------------*/ .ui.buttons .or { position: relative; - float: left; width: 0.3em; - height: 2.57142em; + height: 2.57142857em; z-index: 3; } .ui.buttons .or:before { @@ -897,11 +969,11 @@ left: 50%; background-color: #ffffff; text-shadow: none; - margin-top: -0.892855em; - margin-left: -0.892855em; - width: 1.78571em; - height: 1.78571em; - line-height: 1.78571em; + 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; @@ -924,166 +996,193 @@ --------------------*/ -/* Plural Attached */ -.attached.ui.buttons { - margin: 0px; - border-radius: 0em 0em 0em 0em; +/* Singular */ +.ui.attached.button { + position: relative; + display: block; + margin: 0em; + border-radius: 0em; + box-shadow: 0px 0px 0px 1px rgba(34, 36, 38, 0.15) !important; } -.attached.ui.buttons .button { + +/* 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: -webkit-flex; + 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; } -.attached.ui.buttons .button:first-child { - border-radius: 0em 0em 0em 0em; +.ui.attached.buttons .button:first-child { + border-radius: 0em; } -.attached.ui.buttons .button:last-child { - border-radius: 0em 0em 0em 0em; +.ui.attached.buttons .button:last-child { + border-radius: 0em; } -/* Top Side */ -[class*="top attached"].ui.buttons { +/* Top / Bottom */ +.ui[class*="top attached"].buttons { margin-bottom: -1px; - border-radius: 0.2857rem 0.2857rem 0em 0em; + border-radius: 0.28571429rem 0.28571429rem 0em 0em; } -[class*="top attached"].ui.buttons .button:first-child { - border-radius: 0.2857rem 0em 0em 0em; +.ui[class*="top attached"].buttons .button:first-child { + border-radius: 0.28571429rem 0em 0em 0em; } -[class*="top attached"].ui.buttons .button:last-child { - border-radius: 0em 0.2857rem 0em 0em; +.ui[class*="top attached"].buttons .button:last-child { + border-radius: 0em 0.28571429rem 0em 0em; } - -/* Bottom Side */ -[class*="bottom attached"].ui.buttons { +.ui[class*="bottom attached"].buttons { margin-top: -1px; - border-radius: 0em 0em 0.2857rem 0.2857rem; + border-radius: 0em 0em 0.28571429rem 0.28571429rem; } -[class*="bottom attached"].ui.buttons .button:first-child { - border-radius: 0em 0em 0em 0.2857rem; +.ui[class*="bottom attached"].buttons .button:first-child { + border-radius: 0em 0em 0em 0.28571429rem; } -[class*="bottom attached"].ui.buttons .button:last-child { - border-radius: 0em 0em 0.2857rem 0em; +.ui[class*="bottom attached"].buttons .button:last-child { + border-radius: 0em 0em 0.28571429rem 0em; } -/* Left Side */ -[class*="left attached"].ui.buttons { +/* Left / Right */ +.ui[class*="left attached"].buttons { + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + margin-right: 0em; margin-left: -1px; - border-radius: 0em 0.2857rem 0.2857rem 0em; + border-radius: 0em 0.28571429rem 0.28571429rem 0em; } -[class*="left attached"].ui.buttons .button:first-child { +.ui[class*="left attached"].buttons .button:first-child { margin-left: -1px; - border-radius: 0em 0.2857rem 0em 0em; + border-radius: 0em 0.28571429rem 0em 0em; } -[class*="left attached"].ui.buttons .button:last-child { +.ui[class*="left attached"].buttons .button:last-child { margin-left: -1px; - border-radius: 0em 0em 0.2857rem 0em; + border-radius: 0em 0em 0.28571429rem 0em; } - -/* Right Side */ -[class*="right attached"].ui.buttons, -[class*="right attached"].ui.buttons .button { +.ui[class*="right attached"].buttons { + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + margin-left: 0em; margin-right: -1px; - border-radius: 0.2857rem 0em 0em 0.2857rem; + border-radius: 0.28571429rem 0em 0em 0.28571429rem; } -[class*="right attached"].ui.buttons .button:first-child { +.ui[class*="right attached"].buttons .button:first-child { margin-left: -1px; - border-radius: 0.2857rem 0em 0em 0em; + border-radius: 0.28571429rem 0em 0em 0em; } -[class*="right attached"].ui.buttons .button:last-child { +.ui[class*="right attached"].buttons .button:last-child { margin-left: -1px; - border-radius: 0em 0em 0em 0.2857rem; + border-radius: 0em 0em 0em 0.28571429rem; } -/* Fluid */ +/*------------------- + Fluid +--------------------*/ + .ui.fluid.buttons, -.ui.button.fluid, -.ui.fluid.buttons > .button { - display: block; +.ui.fluid.button { width: 100%; } -.ui.\32.buttons, +.ui.fluid.button { + display: block; +} .ui.two.buttons { width: 100%; } -.ui.\32.buttons > .button, .ui.two.buttons > .button { width: 50%; } -.ui.\33.buttons, .ui.three.buttons { width: 100%; } -.ui.\33.buttons > .button, .ui.three.buttons > .button { width: 33.333%; } -.ui.\34.buttons, .ui.four.buttons { width: 100%; } -.ui.\34.buttons > .button, .ui.four.buttons > .button { width: 25%; } -.ui.\35.buttons, .ui.five.buttons { width: 100%; } -.ui.\35.buttons > .button, .ui.five.buttons > .button { width: 20%; } -.ui.\36.buttons, .ui.six.buttons { width: 100%; } -.ui.\36.buttons > .button, .ui.six.buttons > .button { width: 16.666%; } -.ui.\37.buttons, .ui.seven.buttons { width: 100%; } -.ui.\37.buttons > .button, .ui.seven.buttons > .button { width: 14.285%; } -.ui.\38.buttons, .ui.eight.buttons { width: 100%; } -.ui.\38.buttons > .button, .ui.eight.buttons > .button { width: 12.500%; } -.ui.\39.buttons, .ui.nine.buttons { width: 100%; } -.ui.\39.buttons > .button, .ui.nine.buttons > .button { width: 11.11%; } -.ui.\31\30.buttons, .ui.ten.buttons { width: 100%; } -.ui.\31\30.buttons > .button, .ui.ten.buttons > .button { width: 10%; } -.ui.\31\31.buttons, .ui.eleven.buttons { width: 100%; } -.ui.\31\31.buttons > .button, .ui.eleven.buttons > .button { width: 9.09%; } -.ui.\31\32.buttons, .ui.twelve.buttons { width: 100%; } -.ui.\31\32.buttons > .button, .ui.twelve.buttons > .button { width: 8.3333%; } @@ -1091,50 +1190,42 @@ /* Fluid Vertical Buttons */ .ui.fluid.vertical.buttons, .ui.fluid.vertical.buttons > .button { - display: block; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; width: auto; } -.ui.\32.vertical.buttons > .button, .ui.two.vertical.buttons > .button { height: 50%; } -.ui.\33.vertical.buttons > .button, .ui.three.vertical.buttons > .button { height: 33.333%; } -.ui.\34.vertical.buttons > .button, .ui.four.vertical.buttons > .button { height: 25%; } -.ui.\35.vertical.buttons > .button, .ui.five.vertical.buttons > .button { height: 20%; } -.ui.\36.vertical.buttons > .button, .ui.six.vertical.buttons > .button { height: 16.666%; } -.ui.\37.vertical.buttons > .button, .ui.seven.vertical.buttons > .button { height: 14.285%; } -.ui.\38.vertical.buttons > .button, .ui.eight.vertical.buttons > .button { height: 12.500%; } -.ui.\39.vertical.buttons > .button, .ui.nine.vertical.buttons > .button { height: 11.11%; } -.ui.\31\30.vertical.buttons > .button, .ui.ten.vertical.buttons > .button { height: 10%; } -.ui.\31\31.vertical.buttons > .button, .ui.eleven.vertical.buttons > .button { height: 9.09%; } -.ui.\31\32.vertical.buttons > .button, .ui.twelve.vertical.buttons > .button { height: 8.3333%; } @@ -1154,17 +1245,23 @@ background-image: none; } .ui.black.button { - box-shadow: 0px 0em 0px 0px rgba(39, 41, 43, 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: #1b1c1d; + 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: #0a0a0b; + background-color: #343637; color: #ffffff; text-shadow: none; } @@ -1180,28 +1277,34 @@ /* Basic */ .ui.basic.black.buttons .button, .ui.basic.black.button { - box-shadow: 0px 0px 0px 2px rgba(39, 41, 43, 0.15) inset !important; - color: rgba(0, 0, 0, 0.6) !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; - box-shadow: 0px 0px 0px 2px #1b1c1d inset !important; - color: #1b1c1d !important; + box-shadow: 0px 0px 0px 1px #27292a inset !important; + color: #27292a !important; } -.ui.basic.black.buttons .button:active, -.ui.basic.black.button:active { - box-shadow: 0px 0px 0px 2px #0a0a0b inset !important; - color: #0a0a0b !important; +.ui.basic.black.buttons .button:focus, +.ui.basic.black.button:focus { + background: transparent !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; - box-shadow: 0px 0px 0px 2px #0a0a0b inset !important; - color: #0a0a0b !important; + box-shadow: 0px 0px 0px 1px #0f0f10 inset !important; + color: #343637 !important; } -.ui.buttons > .basic.black.button:not(:first-child) { - margin-left: -2px; +.ui.basic.black.buttons .button:active, +.ui.basic.black.button:active { + 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 */ @@ -1212,22 +1315,31 @@ color: #ffffff; } .ui.inverted.black.buttons .button:hover, -.ui.inverted.black.button:hover { - box-shadow: 0px 0px 0px 2px #333333 inset !important; - background-color: #333333; +.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 { + 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 { - box-shadow: 0px 0px 0px 2px #333333 inset !important; - background-color: #333333; - color: #ffffff; + background-color: #000000; } .ui.inverted.black.buttons .button:active, .ui.inverted.black.button:active { - box-shadow: 0px 0px 0px 2px #212121 inset !important; - background-color: #212121; - color: #ffffff; + background-color: #000000; } /* Inverted Basic */ @@ -1241,43 +1353,335 @@ .ui.inverted.black.basic.buttons .button:hover, .ui.inverted.black.buttons .basic.button:hover, .ui.inverted.black.basic.button:hover { - box-shadow: 0px 0px 0px 2px #333333 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 { + 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 { - box-shadow: 0px 0px 0px 2px #333333 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 { - box-shadow: 0px 0px 0px 2px #212121 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 { + 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 { + 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; + 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; + 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; + box-shadow: 0px 0px 0px 1px #696969 inset !important; + color: #909090 !important; +} +.ui.basic.grey.buttons .button:active, +.ui.basic.grey.button:active { + 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; + 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 { + 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; + 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 { + 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 { + 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 { + 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 { + 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 { + 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 { + 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; + 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; + 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; + box-shadow: 0px 0px 0px 1px #995a31 inset !important; + color: #805031 !important; +} +.ui.basic.brown.buttons .button:active, +.ui.basic.brown.button:active { + 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; + 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 { + 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; + 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 { + 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 { + 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 { + 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 { + box-shadow: 0px 0px 0px 2px #a96216 inset !important; + color: #d67c1c !important; +} + /*--- Blue ---*/ .ui.blue.buttons .button, .ui.blue.button { - background-color: #3b83c0; + background-color: #2185d0; color: #ffffff; text-shadow: none; background-image: none; } .ui.blue.button { - box-shadow: 0px 0em 0px 0px rgba(39, 41, 43, 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: #458ac6; + 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: #3370a5; + background-color: #1a69a4; color: #ffffff; text-shadow: none; } @@ -1285,7 +1689,7 @@ .ui.blue.buttons .active.button:active, .ui.blue.active.button, .ui.blue.button .active.button:active { - background-color: #3576ac; + background-color: #1279c6; color: #ffffff; text-shadow: none; } @@ -1293,28 +1697,34 @@ /* Basic */ .ui.basic.blue.buttons .button, .ui.basic.blue.button { - box-shadow: 0px 0px 0px 2px rgba(39, 41, 43, 0.15) inset !important; - color: rgba(0, 0, 0, 0.6) !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; - box-shadow: 0px 0px 0px 2px #458ac6 inset !important; - color: #458ac6 !important; + box-shadow: 0px 0px 0px 1px #1678c2 inset !important; + color: #1678c2 !important; } -.ui.basic.blue.buttons .button:active, -.ui.basic.blue.button:active { - box-shadow: 0px 0px 0px 2px #3370a5 inset !important; - color: #3370a5 !important; +.ui.basic.blue.buttons .button:focus, +.ui.basic.blue.button:focus { + background: transparent !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; - box-shadow: 0px 0px 0px 2px #3370a5 inset !important; - color: #3370a5 !important; + box-shadow: 0px 0px 0px 1px #1279c6 inset !important; + color: #1a69a4 !important; } -.ui.buttons > .basic.blue.button:not(:first-child) { - margin-left: -2px; +.ui.basic.blue.buttons .button:active, +.ui.basic.blue.button:active { + 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 */ @@ -1325,22 +1735,31 @@ color: #54c8ff; } .ui.inverted.blue.buttons .button:hover, -.ui.inverted.blue.button:hover { - box-shadow: 0px 0px 0px 2px #54c8ff inset !important; - background-color: #54c8ff; +.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 { + 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 { - box-shadow: 0px 0px 0px 2px #54c8ff inset !important; - background-color: #54c8ff; - color: #ffffff; + background-color: #3ac0ff; } .ui.inverted.blue.buttons .button:active, .ui.inverted.blue.button:active { - box-shadow: 0px 0px 0px 2px #30bdff inset !important; - background-color: #30bdff; - color: #ffffff; + background-color: #21b8ff; } /* Inverted Basic */ @@ -1354,19 +1773,25 @@ .ui.inverted.blue.basic.buttons .button:hover, .ui.inverted.blue.buttons .basic.button:hover, .ui.inverted.blue.basic.button:hover { - box-shadow: 0px 0px 0px 2px #54c8ff 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 { + 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 { - box-shadow: 0px 0px 0px 2px #54c8ff 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 { - box-shadow: 0px 0px 0px 2px #30bdff inset !important; + box-shadow: 0px 0px 0px 2px #21b8ff inset !important; color: #54c8ff !important; } @@ -1374,23 +1799,29 @@ .ui.green.buttons .button, .ui.green.button { - background-color: #5bbd72; + background-color: #21ba45; color: #ffffff; text-shadow: none; background-image: none; } .ui.green.button { - box-shadow: 0px 0em 0px 0px rgba(39, 41, 43, 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: #66c17b; + 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: #46ae5f; + background-color: #198f35; color: #ffffff; text-shadow: none; } @@ -1398,7 +1829,7 @@ .ui.green.buttons .active.button:active, .ui.green.active.button, .ui.green.button .active.button:active { - background-color: #49b562; + background-color: #13ae38; color: #ffffff; text-shadow: none; } @@ -1406,28 +1837,34 @@ /* Basic */ .ui.basic.green.buttons .button, .ui.basic.green.button { - box-shadow: 0px 0px 0px 2px rgba(39, 41, 43, 0.15) inset !important; - color: rgba(0, 0, 0, 0.6) !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; - box-shadow: 0px 0px 0px 2px #66c17b inset !important; - color: #66c17b !important; + box-shadow: 0px 0px 0px 1px #16ab39 inset !important; + color: #16ab39 !important; } -.ui.basic.green.buttons .button:active, -.ui.basic.green.button:active { - box-shadow: 0px 0px 0px 2px #46ae5f inset !important; - color: #46ae5f !important; +.ui.basic.green.buttons .button:focus, +.ui.basic.green.button:focus { + background: transparent !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; - box-shadow: 0px 0px 0px 2px #46ae5f inset !important; - color: #46ae5f !important; + box-shadow: 0px 0px 0px 1px #13ae38 inset !important; + color: #198f35 !important; } -.ui.buttons > .basic.green.button:not(:first-child) { - margin-left: -2px; +.ui.basic.green.buttons .button:active, +.ui.basic.green.button:active { + 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 */ @@ -1438,22 +1875,31 @@ color: #2ecc40; } .ui.inverted.green.buttons .button:hover, -.ui.inverted.green.button:hover { - box-shadow: 0px 0px 0px 2px #2ecc40 inset !important; - background-color: #2ecc40; +.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 { + box-shadlightOw: 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 { - box-shadow: 0px 0px 0px 2px #2ecc40 inset !important; - background-color: #2ecc40; - color: #ffffff; + background-color: #1fc231; } .ui.inverted.green.buttons .button:active, .ui.inverted.green.button:active { - box-shadow: 0px 0px 0px 2px #27af37 inset !important; - background-color: #27af37; - color: #ffffff; + background-color: #25a233; } /* Inverted Basic */ @@ -1467,19 +1913,25 @@ .ui.inverted.green.basic.buttons .button:hover, .ui.inverted.green.buttons .basic.button:hover, .ui.inverted.green.basic.button:hover { - box-shadow: 0px 0px 0px 2px #2ecc40 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 { + 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 { - box-shadow: 0px 0px 0px 2px #2ecc40 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 { - box-shadow: 0px 0px 0px 2px #27af37 inset !important; + box-shadow: 0px 0px 0px 2px #25a233 inset !important; color: #2ecc40 !important; } @@ -1487,23 +1939,29 @@ .ui.orange.buttons .button, .ui.orange.button { - background-color: #e07b53; + background-color: #f2711c; color: #ffffff; text-shadow: none; background-image: none; } .ui.orange.button { - box-shadow: 0px 0em 0px 0px rgba(39, 41, 43, 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: #e28560; + 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: #db6435; + background-color: #cf590c; color: #ffffff; text-shadow: none; } @@ -1511,7 +1969,7 @@ .ui.orange.buttons .active.button:active, .ui.orange.active.button, .ui.orange.button .active.button:active { - background-color: #dc6a3d; + background-color: #f56100; color: #ffffff; text-shadow: none; } @@ -1519,28 +1977,34 @@ /* Basic */ .ui.basic.orange.buttons .button, .ui.basic.orange.button { - box-shadow: 0px 0px 0px 2px rgba(39, 41, 43, 0.15) inset !important; - color: rgba(0, 0, 0, 0.6) !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; - box-shadow: 0px 0px 0px 2px #e28560 inset !important; - color: #e28560 !important; + box-shadow: 0px 0px 0px 1px #f26202 inset !important; + color: #f26202 !important; } -.ui.basic.orange.buttons .button:active, -.ui.basic.orange.button:active { - box-shadow: 0px 0px 0px 2px #db6435 inset !important; - color: #db6435 !important; +.ui.basic.orange.buttons .button:focus, +.ui.basic.orange.button:focus { + background: transparent !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; - box-shadow: 0px 0px 0px 2px #db6435 inset !important; - color: #db6435 !important; + box-shadow: 0px 0px 0px 1px #f56100 inset !important; + color: #cf590c !important; } -.ui.buttons > .basic.orange.button:not(:first-child) { - margin-left: -2px; +.ui.basic.orange.buttons .button:active, +.ui.basic.orange.button:active { + 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 */ @@ -1551,22 +2015,31 @@ color: #ff851b; } .ui.inverted.orange.buttons .button:hover, -.ui.inverted.orange.button:hover { - box-shadow: 0px 0px 0px 2px #ff851b inset !important; - background-color: #ff851b; +.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 { + 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 { - box-shadow: 0px 0px 0px 2px #ff851b inset !important; - background-color: #ff851b; - color: #ffffff; + background-color: #ff7701; } .ui.inverted.orange.buttons .button:active, .ui.inverted.orange.button:active { - box-shadow: 0px 0px 0px 2px #f67300 inset !important; - background-color: #f67300; - color: #ffffff; + background-color: #e76b00; } /* Inverted Basic */ @@ -1580,19 +2053,25 @@ .ui.inverted.orange.basic.buttons .button:hover, .ui.inverted.orange.buttons .basic.button:hover, .ui.inverted.orange.basic.button:hover { - box-shadow: 0px 0px 0px 2px #ff851b 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 { + 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 { - box-shadow: 0px 0px 0px 2px #ff851b 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 { - box-shadow: 0px 0px 0px 2px #f67300 inset !important; + box-shadow: 0px 0px 0px 2px #e76b00 inset !important; color: #ff851b !important; } @@ -1600,23 +2079,29 @@ .ui.pink.buttons .button, .ui.pink.button { - background-color: #d9499a; + background-color: #e03997; color: #ffffff; text-shadow: none; background-image: none; } .ui.pink.button { - box-shadow: 0px 0em 0px 0px rgba(39, 41, 43, 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: #dc56a1; + 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: #d22c8a; + background-color: #c71f7e; color: #ffffff; text-shadow: none; } @@ -1624,7 +2109,7 @@ .ui.pink.buttons .active.button:active, .ui.pink.active.button, .ui.pink.button .active.button:active { - background-color: #d5348e; + background-color: #ea158d; color: #ffffff; text-shadow: none; } @@ -1632,28 +2117,34 @@ /* Basic */ .ui.basic.pink.buttons .button, .ui.basic.pink.button { - box-shadow: 0px 0px 0px 2px rgba(39, 41, 43, 0.15) inset !important; - color: rgba(0, 0, 0, 0.6) !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; - box-shadow: 0px 0px 0px 2px #dc56a1 inset !important; - color: #dc56a1 !important; + box-shadow: 0px 0px 0px 1px #e61a8d inset !important; + color: #e61a8d !important; } -.ui.basic.pink.buttons .button:active, -.ui.basic.pink.button:active { - box-shadow: 0px 0px 0px 2px #d22c8a inset !important; - color: #d22c8a !important; +.ui.basic.pink.buttons .button:focus, +.ui.basic.pink.button:focus { + background: transparent !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; - box-shadow: 0px 0px 0px 2px #d22c8a inset !important; - color: #d22c8a !important; + box-shadow: 0px 0px 0px 1px #ea158d inset !important; + color: #c71f7e !important; } -.ui.buttons > .basic.pink.button:not(:first-child) { - margin-left: -2px; +.ui.basic.pink.buttons .button:active, +.ui.basic.pink.button:active { + 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 */ @@ -1664,22 +2155,31 @@ color: #ff8edf; } .ui.inverted.pink.buttons .button:hover, -.ui.inverted.pink.button:hover { - box-shadow: 0px 0px 0px 2px #ff8edf inset !important; - background-color: #ff8edf; +.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 { + 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 { - box-shadow: 0px 0px 0px 2px #ff8edf inset !important; - background-color: #ff8edf; - color: #ffffff; + background-color: #ff74d8; } .ui.inverted.pink.buttons .button:active, .ui.inverted.pink.button:active { - box-shadow: 0px 0px 0px 2px #ff6ad5 inset !important; - background-color: #ff6ad5; - color: #ffffff; + background-color: #ff5bd1; } /* Inverted Basic */ @@ -1693,43 +2193,195 @@ .ui.inverted.pink.basic.buttons .button:hover, .ui.inverted.pink.buttons .basic.button:hover, .ui.inverted.pink.basic.button:hover { - box-shadow: 0px 0px 0px 2px #ff8edf 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 { + 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 { - box-shadow: 0px 0px 0px 2px #ff8edf 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 { - box-shadow: 0px 0px 0px 2px #ff6ad5 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 { + 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 { + 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; + 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; + 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; + box-shadow: 0px 0px 0px 1px #5626bf inset !important; + color: #502aa1 !important; +} +.ui.basic.violet.buttons .button:active, +.ui.basic.violet.button:active { + 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; + 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 { + 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; + 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 { + 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 { + 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 { + 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 { + box-shadow: 0px 0px 0px 2px #7860f9 inset !important; + color: #a291fb !important; +} + /*--- Purple ---*/ .ui.purple.buttons .button, .ui.purple.button { - background-color: #564f8a; + background-color: #a333c8; color: #ffffff; text-shadow: none; background-image: none; } .ui.purple.button { - box-shadow: 0px 0em 0px 0px rgba(39, 41, 43, 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: #5c5594; + 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: #484273; + background-color: #82299f; color: #ffffff; text-shadow: none; } @@ -1737,7 +2389,7 @@ .ui.purple.buttons .active.button:active, .ui.purple.active.button, .ui.purple.button .active.button:active { - background-color: #4c467a; + background-color: #9724be; color: #ffffff; text-shadow: none; } @@ -1745,54 +2397,69 @@ /* Basic */ .ui.basic.purple.buttons .button, .ui.basic.purple.button { - box-shadow: 0px 0px 0px 2px rgba(39, 41, 43, 0.15) inset !important; - color: rgba(0, 0, 0, 0.6) !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; - box-shadow: 0px 0px 0px 2px #5c5594 inset !important; - color: #5c5594 !important; + box-shadow: 0px 0px 0px 1px #9627ba inset !important; + color: #9627ba !important; } -.ui.basic.purple.buttons .button:active, -.ui.basic.purple.button:active { - box-shadow: 0px 0px 0px 2px #484273 inset !important; - color: #484273 !important; +.ui.basic.purple.buttons .button:focus, +.ui.basic.purple.button:focus { + background: transparent !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; - box-shadow: 0px 0px 0px 2px #484273 inset !important; - color: #484273 !important; + box-shadow: 0px 0px 0px 1px #9724be inset !important; + color: #82299f !important; } -.ui.buttons > .basic.purple.button:not(:first-child) { - margin-left: -2px; +.ui.basic.purple.buttons .button:active, +.ui.basic.purple.button:active { + 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; - box-shadow: 0px 0px 0px 2px #cdc6ff inset !important; - color: #cdc6ff; + 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 { + box-shadow: none !important; + color: #ffffff; } .ui.inverted.purple.buttons .button:hover, .ui.inverted.purple.button:hover { - box-shadow: 0px 0px 0px 2px #cdc6ff inset !important; - background-color: #cdc6ff; - color: #1b1c1d; + 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 { - box-shadow: 0px 0px 0px 2px #cdc6ff inset !important; - background-color: #cdc6ff; - color: #1b1c1d; + background-color: #d65aff; } .ui.inverted.purple.buttons .button:active, .ui.inverted.purple.button:active { - box-shadow: 0px 0px 0px 2px #aea2ff inset !important; - background-color: #aea2ff; - color: #1b1c1d; + background-color: #cf40ff; } /* Inverted Basic */ @@ -1806,43 +2473,55 @@ .ui.inverted.purple.basic.buttons .button:hover, .ui.inverted.purple.buttons .basic.button:hover, .ui.inverted.purple.basic.button:hover { - box-shadow: 0px 0px 0px 2px #cdc6ff inset !important; - color: #cdc6ff !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 { + 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 { - box-shadow: 0px 0px 0px 2px #cdc6ff inset !important; - color: #cdc6ff !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 { - box-shadow: 0px 0px 0px 2px #aea2ff inset !important; - color: #cdc6ff !important; + box-shadow: 0px 0px 0px 2px #cf40ff inset !important; + color: #dc73ff !important; } /*--- Red ---*/ .ui.red.buttons .button, .ui.red.button { - background-color: #d95c5c; + background-color: #db2828; color: #ffffff; text-shadow: none; background-image: none; } .ui.red.button { - box-shadow: 0px 0em 0px 0px rgba(39, 41, 43, 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: #dc6868; + 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: #d23f3f; + background-color: #b21e1e; color: #ffffff; text-shadow: none; } @@ -1850,7 +2529,7 @@ .ui.red.buttons .active.button:active, .ui.red.active.button, .ui.red.button .active.button:active { - background-color: #d44747; + background-color: #d41515; color: #ffffff; text-shadow: none; } @@ -1858,28 +2537,34 @@ /* Basic */ .ui.basic.red.buttons .button, .ui.basic.red.button { - box-shadow: 0px 0px 0px 2px rgba(39, 41, 43, 0.15) inset !important; - color: rgba(0, 0, 0, 0.6) !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; - box-shadow: 0px 0px 0px 2px #dc6868 inset !important; - color: #dc6868 !important; + box-shadow: 0px 0px 0px 1px #d01919 inset !important; + color: #d01919 !important; } -.ui.basic.red.buttons .button:active, -.ui.basic.red.button:active { - box-shadow: 0px 0px 0px 2px #d23f3f inset !important; - color: #d23f3f !important; +.ui.basic.red.buttons .button:focus, +.ui.basic.red.button:focus { + background: transparent !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; - box-shadow: 0px 0px 0px 2px #d23f3f inset !important; - color: #d23f3f !important; + box-shadow: 0px 0px 0px 1px #d41515 inset !important; + color: #b21e1e !important; } -.ui.buttons > .basic.red.button:not(:first-child) { - margin-left: -2px; +.ui.basic.red.buttons .button:active, +.ui.basic.red.button:active { + 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 */ @@ -1890,22 +2575,31 @@ color: #ff695e; } .ui.inverted.red.buttons .button:hover, -.ui.inverted.red.button:hover { - box-shadow: 0px 0px 0px 2px #ff695e inset !important; - background-color: #ff695e; +.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 { + 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 { - box-shadow: 0px 0px 0px 2px #ff695e inset !important; - background-color: #ff695e; - color: #ffffff; + background-color: #ff5144; } .ui.inverted.red.buttons .button:active, .ui.inverted.red.button:active { - box-shadow: 0px 0px 0px 2px #ff483a inset !important; - background-color: #ff483a; - color: #ffffff; + background-color: #ff392b; } /* Inverted Basic */ @@ -1919,19 +2613,25 @@ .ui.inverted.red.basic.buttons .button:hover, .ui.inverted.red.buttons .basic.button:hover, .ui.inverted.red.basic.button:hover { - box-shadow: 0px 0px 0px 2px #ff695e 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 { + 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 { - box-shadow: 0px 0px 0px 2px #ff695e 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 { - box-shadow: 0px 0px 0px 2px #ff483a inset !important; + box-shadow: 0px 0px 0px 2px #ff392b inset !important; color: #ff695e !important; } @@ -1945,17 +2645,23 @@ background-image: none; } .ui.teal.button { - box-shadow: 0px 0em 0px 0px rgba(39, 41, 43, 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: #00c4bc; + 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: #00918b; + background-color: #00827c; color: #ffffff; text-shadow: none; } @@ -1971,28 +2677,34 @@ /* Basic */ .ui.basic.teal.buttons .button, .ui.basic.teal.button { - box-shadow: 0px 0px 0px 2px rgba(39, 41, 43, 0.15) inset !important; - color: rgba(0, 0, 0, 0.6) !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; - box-shadow: 0px 0px 0px 2px #00c4bc inset !important; - color: #00c4bc !important; + box-shadow: 0px 0px 0px 1px #009c95 inset !important; + color: #009c95 !important; } -.ui.basic.teal.buttons .button:active, -.ui.basic.teal.button:active { - box-shadow: 0px 0px 0px 2px #00918b inset !important; - color: #00918b !important; +.ui.basic.teal.buttons .button:focus, +.ui.basic.teal.button:focus { + background: transparent !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; - box-shadow: 0px 0px 0px 2px #00918b inset !important; - color: #00918b !important; + box-shadow: 0px 0px 0px 1px #009c95 inset !important; + color: #00827c !important; } -.ui.buttons > .basic.teal.button:not(:first-child) { - margin-left: -2px; +.ui.basic.teal.buttons .button:active, +.ui.basic.teal.button:active { + 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 */ @@ -2003,22 +2715,31 @@ 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 { + box-shadow: none !important; + color: rgba(0, 0, 0, 0.6); +} +.ui.inverted.teal.buttons .button:hover, .ui.inverted.teal.button:hover { - box-shadow: 0px 0px 0px 2px #6dffff inset !important; - background-color: #6dffff; - color: #1b1c1d; + 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 { - box-shadow: 0px 0px 0px 2px #6dffff inset !important; - background-color: #6dffff; - color: #1b1c1d; + background-color: #54ffff; } .ui.inverted.teal.buttons .button:active, .ui.inverted.teal.button:active { - box-shadow: 0px 0px 0px 2px #49ffff inset !important; - background-color: #49ffff; - color: #1b1c1d; + background-color: #3affff; } /* Inverted Basic */ @@ -2032,43 +2753,195 @@ .ui.inverted.teal.basic.buttons .button:hover, .ui.inverted.teal.buttons .basic.button:hover, .ui.inverted.teal.basic.button:hover { - box-shadow: 0px 0px 0px 2px #6dffff 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 { + 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 { - box-shadow: 0px 0px 0px 2px #6dffff 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 { - box-shadow: 0px 0px 0px 2px #49ffff 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 { + 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 { + 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; + 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; + 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; + box-shadow: 0px 0px 0px 1px #aac109 inset !important; + color: #8d9e13 !important; +} +.ui.basic.olive.buttons .button:active, +.ui.basic.olive.button:active { + 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; + 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 { + 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; + 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 { + 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 { + 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 { + 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 { + box-shadow: 0px 0px 0px 2px #cddf4d inset !important; + color: #d9e778 !important; +} + /*--- Yellow ---*/ .ui.yellow.buttons .button, .ui.yellow.button { - background-color: #f2c61f; + background-color: #fbbd08; color: #ffffff; text-shadow: none; background-image: none; } .ui.yellow.button { - box-shadow: 0px 0em 0px 0px rgba(39, 41, 43, 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: #f3ca2d; + 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: #e0b40d; + background-color: #cd9903; color: #ffffff; text-shadow: none; } @@ -2076,7 +2949,7 @@ .ui.yellow.buttons .active.button:active, .ui.yellow.active.button, .ui.yellow.button .active.button:active { - background-color: #eabc0e; + background-color: #eaae00; color: #ffffff; text-shadow: none; } @@ -2084,28 +2957,34 @@ /* Basic */ .ui.basic.yellow.buttons .button, .ui.basic.yellow.button { - box-shadow: 0px 0px 0px 2px rgba(39, 41, 43, 0.15) inset !important; - color: rgba(0, 0, 0, 0.6) !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; - box-shadow: 0px 0px 0px 2px #f3ca2d inset !important; - color: #f3ca2d !important; + box-shadow: 0px 0px 0px 1px #eaae00 inset !important; + color: #eaae00 !important; } -.ui.basic.yellow.buttons .button:active, -.ui.basic.yellow.button:active { - box-shadow: 0px 0px 0px 2px #e0b40d inset !important; - color: #e0b40d !important; +.ui.basic.yellow.buttons .button:focus, +.ui.basic.yellow.button:focus { + background: transparent !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; - box-shadow: 0px 0px 0px 2px #e0b40d inset !important; - color: #e0b40d !important; + box-shadow: 0px 0px 0px 1px #eaae00 inset !important; + color: #cd9903 !important; } -.ui.buttons > .basic.yellow.button:not(:first-child) { - margin-left: -2px; +.ui.basic.yellow.buttons .button:active, +.ui.basic.yellow.button:active { + 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 */ @@ -2116,22 +2995,31 @@ 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 { + box-shadow: none !important; + color: rgba(0, 0, 0, 0.6); +} +.ui.inverted.yellow.buttons .button:hover, .ui.inverted.yellow.button:hover { - box-shadow: 0px 0px 0px 2px #ffe21f inset !important; - background-color: #ffe21f; - color: #1b1c1d; + 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 { - box-shadow: 0px 0px 0px 2px #ffe21f inset !important; - background-color: #ffe21f; - color: #1b1c1d; + background-color: #ffdf05; } .ui.inverted.yellow.buttons .button:active, .ui.inverted.yellow.button:active { - box-shadow: 0px 0px 0px 2px #fada00 inset !important; - background-color: #fada00; - color: #1b1c1d; + background-color: #ebcd00; } /* Inverted Basic */ @@ -2145,19 +3033,25 @@ .ui.inverted.yellow.basic.buttons .button:hover, .ui.inverted.yellow.buttons .basic.button:hover, .ui.inverted.yellow.basic.button:hover { - box-shadow: 0px 0px 0px 2px #ffe21f 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 { + 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 { - box-shadow: 0px 0px 0px 2px #ffe21f 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 { - box-shadow: 0px 0px 0px 2px #fada00 inset !important; + box-shadow: 0px 0px 0px 2px #ebcd00 inset !important; color: #ffe21f !important; } @@ -2167,29 +3061,35 @@ .ui.primary.buttons .button, .ui.primary.button { - background-color: #3b83c0; + background-color: #2185d0; color: #ffffff; text-shadow: none; background-image: none; } .ui.primary.button { - box-shadow: 0px 0em 0px 0px rgba(39, 41, 43, 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: #458ac6; + 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: #3370a5; + background-color: #1a69a4; color: #ffffff; text-shadow: none; } .ui.primary.buttons .active.button, .ui.primary.active.button { - background-color: #3576ac; + background-color: #1279c6; color: #ffffff; text-shadow: none; } @@ -2206,23 +3106,29 @@ background-image: none; } .ui.secondary.button { - box-shadow: 0px 0em 0px 0px rgba(39, 41, 43, 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: #222425; + 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: #0a0a0b; + background-color: #343637; color: #ffffff; text-shadow: none; } .ui.secondary.buttons .active.button, .ui.secondary.active.button { - background-color: #0f0f10; + background-color: #27292a; color: #ffffff; text-shadow: none; } @@ -2233,33 +3139,36 @@ .ui.positive.buttons .button, .ui.positive.button { - background-color: #5bbd72 !important; + background-color: #21ba45 !important; color: #ffffff; text-shadow: none; background-image: none; } .ui.positive.button { - box-shadow: 0px 0em 0px 0px rgba(39, 41, 43, 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, -.ui.positive.buttons .active.button, -.ui.positive.active.button { - background-color: #66c17b !important; +.ui.positive.button:hover { + background-color: #16ab39 !important; + color: #ffffff; + text-shadow: none; +} +.ui.positive.buttons .button:focus, +.ui.positive.button:focus { + background-color: #0ea432 !important; color: #ffffff; text-shadow: none; } .ui.positive.buttons .button:active, .ui.positive.button:active { - background-color: #46ae5f !important; + background-color: #198f35 !important; 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: #49b562; +.ui.positive.buttons .active.button:active { + background-color: #13ae38; color: #ffffff; text-shadow: none; } @@ -2270,33 +3179,36 @@ .ui.negative.buttons .button, .ui.negative.button { - background-color: #d95c5c !important; + background-color: #db2828 !important; color: #ffffff; text-shadow: none; background-image: none; } .ui.negative.button { - box-shadow: 0px 0em 0px 0px rgba(39, 41, 43, 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, -.ui.negative.buttons .active.button, -.ui.negative.active.button { - background-color: #dc6868 !important; +.ui.negative.button:hover { + background-color: #d01919 !important; + color: #ffffff; + text-shadow: none; +} +.ui.negative.buttons .button:focus, +.ui.negative.button:focus { + background-color: #ca1010 !important; color: #ffffff; text-shadow: none; } .ui.negative.buttons .button:active, .ui.negative.button:active { - background-color: #d23f3f !important; + background-color: #b21e1e !important; 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: #d44747; +.ui.negative.buttons .active.button:active { + background-color: #d41515; color: #ffffff; text-shadow: none; } @@ -2307,14 +3219,24 @@ *******************************/ .ui.buttons { - display: inline-block; - vertical-align: middle; + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + font-size: 0em; + vertical-align: baseline; margin: 0em 0.25em 0em 0em; } -.ui.buttons > .button:hover, -.ui.buttons > .active.button { - position: relative; +.ui.buttons:not(.basic):not(.inverted) { + box-shadow: none; } + +/* Clearfix */ .ui.buttons:after { content: "."; display: block; @@ -2322,35 +3244,43 @@ clear: both; visibility: hidden; } -.ui.buttons .button:first-child { - border-left: none; -} -.ui.buttons:not(.basic):not(.inverted) { - box-shadow: none; -} -.ui.buttons > .ui.button:not(.basic):not(.inverted), -.ui.buttons:not(.basic):not(.inverted) > .button { - box-shadow: 0px 0px 0px 1px transparent inset, 0px 0em 0px 0px rgba(39, 41, 43, 0.15) inset; -} + +/* Standard Group */ .ui.buttons .button { + -webkit-box-flex: 1; + -webkit-flex: 1 0 auto; + -ms-flex: 1 0 auto; + flex: 1 0 auto; margin: 0em; - float: left; border-radius: 0em; margin: 0px 0px 0px 0px; } +.ui.buttons > .ui.button:not(.basic):not(.inverted), +.ui.buttons:not(.basic):not(.inverted) > .button { + 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.2857rem; - border-bottom-left-radius: 0.2857rem; + border-top-left-radius: 0.28571429rem; + border-bottom-left-radius: 0.28571429rem; } .ui.buttons .button:last-child { - border-top-right-radius: 0.2857rem; - border-bottom-right-radius: 0.2857rem; + border-top-right-radius: 0.28571429rem; + border-bottom-right-radius: 0.28571429rem; } /* Vertical Style */ .ui.vertical.buttons { - display: inline-block; + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; } .ui.vertical.buttons .button { display: block; @@ -2365,7 +3295,7 @@ .ui.vertical.buttons .small.button:first-child, .ui.vertical.buttons .massive.button:first-child, .ui.vertical.buttons .huge.button:first-child { - border-radius: 0.2857rem 0.2857rem 0px 0px; + border-radius: 0.28571429rem 0.28571429rem 0px 0px; } .ui.vertical.buttons .button:last-child, .ui.vertical.buttons .mini.button:last-child, @@ -2375,7 +3305,7 @@ .ui.vertical.buttons .huge.button:last-child, .ui.vertical.buttons .gigantic.button:last-child { margin-bottom: 0px; - border-radius: 0px 0px 0.2857rem 0.2857rem; + border-radius: 0px 0px 0.28571429rem 0.28571429rem; } diff --git a/amiibofindr/static/semantic/components/button.min.css b/amiibofindr/static/semantic/components/button.min.css index 090486e..7961557 100755 --- a/amiibofindr/static/semantic/components/button.min.css +++ b/amiibofindr/static/semantic/components/button.min.css @@ -1,10 +1,10 @@ /*! - * # Semantic UI 1.12.3 - Button + * # Semantic UI 2.1.3 - Button * http://github.com/semantic-org/semantic-ui/ * * - * Copyright 2014 Contributorss + * Copyright 2015 Contributors * 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-color:#e0e0e0;color:rgba(0,0,0,.6);font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;margin:0 .25em 0 0;padding:.78571em 1.5em;text-transform:none;text-shadow:none;font-weight:700;line-height:1;font-style:normal;text-align:center;text-decoration:none;background-image:none;border-radius:.2857rem;box-shadow:0 0 0 1px transparent inset,0 0 0 0 rgba(39,41,43,.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,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;will-change:'';-webkit-tap-highlight-color:transparent}.ui.button:hover{background-color:#e8e8e8;background-image:none;box-shadow:'';color:rgba(0,0,0,.8)}.ui.button:hover .icon{opacity:.85}.ui.button:focus{background-color:'';color:rgba(0,0,0,.8);background-image:''!important;box-shadow:0 0 0 1px transparent inset,0 0 1px rgba(81,167,232,.8) inset,0 0 3px 2px rgba(81,167,232,.8)!important}.ui.button:focus .icon{opacity:.85}.ui.active.button:active,.ui.button:active{background-color:#ccc;background-image:'';color:rgba(0,0,0,.8);box-shadow:0 0 0 1px transparent inset,0 1px 4px 0 rgba(39,41,43,.15) inset!important}.ui.active.button{background-color:#d0d0d0;background-image:none;box-shadow:0 0 0 1px transparent inset;color:rgba(0,0,0,.8)}.ui.active.button:hover{background-color:#d0d0d0;background-image:none;color:rgba(0,0,0,.8)}.ui.active.button:active{background-color:#d0d0d0;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:none;-webkit-transition:all 0s linear,opacity .2s ease;transition:all 0s linear,opacity .2s ease}.ui.loading.button:before{position:absolute;content:'';top:50%;left:50%;margin:-.64285em 0 0 -.64285em;width:1.2857em;height:1.2857em;border-radius:500rem;border:.2em solid rgba(0,0,0,.15)}.ui.loading.button:after{position:absolute;content:'';top:50%;left:50%;margin:-.64285em 0 0 -.64285em;width:1.2857em;height:1.2857em;-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;box-shadow:0 0 0 1px transparent}.ui.labeled.icon.loading.button .icon{background-color:transparent;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:#aaa}.ui.button:disabled,.ui.buttons .disabled.button,.ui.disabled.active.button,.ui.disabled.button,.ui.disabled.button:hover{cursor:default;background-color:#dcddde!important;color:rgba(0,0,0,.4)!important;opacity:.3!important;background-image:none!important;box-shadow:none!important;pointer-events:none}.ui.basic.buttons .ui.disabled.button{border-color:rgba(39,41,43,.5)}.ui.animated.button{position:relative;overflow:hidden;vertical-align:middle;padding-right:0!important}.ui.animated.button .content{will-change:transform,opacity}.ui.animated.button .visible.content{position:relative;margin-right:1.5em;left:auto;right:0}.ui.animated.button .hidden.content{position:absolute;width:100%;top:50%;left:auto;right:-100%;margin-top:-.5em}.ui.animated.button .hidden.content,.ui.animated.button .visible.content{-webkit-transition:right .3s ease 0s;transition:right .3s ease 0s}.ui.animated.button:hover .visible.content{left:auto;right:200%}.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,transform .3s ease}.ui.vertical.animated.button .visible.content{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);right:auto}.ui.vertical.animated.button .hidden.content{top:-50%;left:0;right:auto}.ui.vertical.animated.button:hover .visible.content{-webkit-transform:translateY(200%);-ms-transform:translateY(200%);transform:translateY(200%);right:auto}.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,transform .3s ease}.ui.fade.animated.button .visible.content{left:auto;right:auto;opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.ui.fade.animated.button .hidden.content{opacity:0;left:0;right:auto;-webkit-transform:scale(1.5);-ms-transform:scale(1.5);transform:scale(1.5)}.ui.fade.animated.button:hover .visible.content{left:auto;right:auto;opacity:0;-webkit-transform:scale(.75);-ms-transform:scale(.75);transform:scale(.75)}.ui.fade.animated.button:hover .hidden.content{left:0;right:auto;opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.ui.inverted.button{box-shadow:0 0 0 2px #fff inset!important;background:0 0;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}.ui.inverted.vertical.buttons .button:first-child{margin-top:0}.ui.inverted.buttons .button:hover{position:relative}.ui.inverted.button:hover{background:#fff;box-shadow:0 0 0 2px #fff inset!important;color:rgba(0,0,0,.8)}.ui.facebook.button{background-color:#3b579d;color:#fff;text-shadow:none;background-image:none;box-shadow:0 0 0 0 rgba(39,41,43,.15) inset}.ui.facebook.button:hover{background-color:#3f5da8;color:#fff;text-shadow:none}.ui.facebook.button:active{background-color:#314983;color:#fff;text-shadow:none}.ui.twitter.button{background-color:#4092cc;color:#fff;text-shadow:none;background-image:none;box-shadow:0 0 0 0 rgba(39,41,43,.15) inset}.ui.twitter.button:hover{background-color:#4c99cf;color:#fff;text-shadow:none}.ui.twitter.button:active{background-color:#3180b7;color:#fff;text-shadow:none}.ui.google.plus.button{background-color:#d34836;color:#fff;text-shadow:none;background-image:none;box-shadow:0 0 0 0 rgba(39,41,43,.15) inset}.ui.google.plus.button:hover{background-color:#d65343;color:#fff;text-shadow:none}.ui.google.plus.button:active{background-color:#bc3a29;color:#fff;text-shadow:none}.ui.linkedin.button{background-color:#1f88be;color:#fff;text-shadow:none}.ui.linkedin.button:hover{background-color:#2191cb;color:#fff;text-shadow:none}.ui.linkedin.button:active{background-color:#1a729f;color:#fff;text-shadow:none}.ui.youtube.button{background-color:#cc181e;color:#fff;text-shadow:none;background-image:none;box-shadow:0 0 0 0 rgba(39,41,43,.15) inset}.ui.youtube.button:hover{background-color:#da1a20;color:#fff;text-shadow:none}.ui.youtube.button:active{background-color:#ac1419;color:#fff;text-shadow:none}.ui.instagram.button{background-color:#49769c;color:#fff;text-shadow:none;background-image:none;box-shadow:0 0 0 0 rgba(39,41,43,.15) inset}.ui.instagram.button:hover{background-color:#4e7ea6;color:#fff;text-shadow:none}.ui.instagram.button:active{background-color:#3e6484;color:#fff;text-shadow:none}.ui.pinterest.button{background-color:#00aced;color:#fff;text-shadow:none;background-image:none;box-shadow:0 0 0 0 rgba(39,41,43,.15) inset}.ui.pinterest.button:hover{background-color:#00b7fc;color:#fff;text-shadow:none}.ui.pinterest.button:active{background-color:#0092c9;color:#fff;text-shadow:none}.ui.vk.button{background-color:#4D7198;color:#fff;background-image:none;box-shadow:0 0 0 0 rgba(39,41,43,.15) inset}.ui.vk.button:hover{background-color:#5279a2;color:#fff}.ui.vk.button:active{background-color:#415f80;color:#fff}.ui.button>.icon{opacity:.8;margin:0 .4em 0 -.2em;-webkit-transition:opacity .2s ease;transition:opacity .2s ease;vertical-align:baseline;color:''}.ui.button>.right.icon{margin:0 -.2em 0 .4em}.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:.5892825em 1.125em}.ui.compact.icon.button,.ui.compact.icon.buttons .button{padding:.5892825em}.ui.compact.labeled.icon.button,.ui.compact.labeled.icon.buttons .button{padding:.5892825em 3.69642em}.ui.mini.button,.ui.mini.buttons .button,.ui.mini.buttons .or{font-size:.71428571rem}.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:.78571em}.ui.icon.button>.icon,.ui.icon.buttons .button>.icon{opacity:.9;margin:0;vertical-align:top}.ui.basic.button,.ui.basic.buttons .button{background:0 0!important;color:rgba(0,0,0,.6)!important;font-weight:400;border-radius:.2857rem;text-transform:none;text-shadow:none!important;box-shadow:0 0 0 1px rgba(39,41,43,.15) inset}.ui.basic.buttons{box-shadow:0 0 0 1px rgba(39,41,43,.15);border-radius:.2857rem}.ui.basic.button:hover,.ui.basic.buttons .button:hover{background:#fafafa!important;color:rgba(0,0,0,.8)!important;box-shadow:0 0 0 1px rgba(39,41,43,.15) inset,0 0 0 0 rgba(39,41,43,.15) inset}.ui.basic.button:active,.ui.basic.buttons .button:active{background:#f8f8f8!important;color:rgba(0,0,0,.8)!important;box-shadow:0 0 0 1px rgba(0,0,0,.15) inset,0 1px 4px 0 rgba(39,41,43,.15) inset}.ui.basic.active.button,.ui.basic.buttons .active.button{background:rgba(0,0,0,.05)!important;box-shadow:''!important;color:rgba(0,0,0,.8)}.ui.basic.active.button:hover,.ui.basic.buttons .active.button:hover{background-color:rgba(0,0,0,.05)}.ui.basic.buttons .button:hover{box-shadow:0 0 0 1px rgba(39,41,43,.15) inset,0 0 0 0 rgba(39,41,43,.15) inset inset}.ui.basic.buttons .button:active{box-shadow:0 0 0 1px rgba(0,0,0,.15) inset,0 1px 4px 0 rgba(39,41,43,.15) inset inset}.ui.basic.buttons .active.button{box-shadow:rgba(39,41,43,.3) inset}.ui.basic.inverted.button,.ui.basic.inverted.buttons .button{background-color:transparent!important;color:#fafafa!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;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,.05)!important;color:#fff!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,.05);color:#fff;text-shadow:none;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,.07);box-shadow:0 0 0 2px #fff inset!important}.ui.basic.buttons .button{border-radius:0;border-left:1px solid rgba(39,41,43,.15);box-shadow:none}.ui.basic.vertical.buttons .button{border-left:none;border-left-width:0;border-top:1px solid rgba(39,41,43,.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.07142em!important;padding-right:1.5em!important}.ui.labeled.icon.button>.icon,.ui.labeled.icon.buttons>.button>.icon{position:absolute;width:2.57142em;height:100%;background-color:rgba(0,0,0,.05);text-align:center;color:'';border-radius:.2857rem 0 0 .2857rem;line-height:1;box-shadow:-1px 0 0 0 transparent inset;top:0;left:0}.ui[class*="right labeled"].icon.button{padding-right:4.07142em!important;padding-left:1.5em!important}.ui[class*="right labeled"].icon.button>.icon{left:auto;right:0;border-radius:0 .2857rem .2857rem 0;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;margin-top:-.5em}.ui.labeled.icon.buttons .button>.icon{border-radius:0}.ui.labeled.icon.buttons .button:first-child>.icon{border-top-left-radius:.2857rem;border-bottom-left-radius:.2857rem}.ui.labeled.icon.buttons .button:last-child>.icon{border-top-right-radius:.2857rem;border-bottom-right-radius:.2857rem}.ui.vertical.labeled.icon.buttons .button:first-child>.icon{border-radius:.2857rem 0 0}.ui.vertical.labeled.icon.buttons .button:last-child>.icon{border-radius:0 0 0 .2857rem}.ui.fluid[class*="right labeled"].icon.button,.ui.fluid[class*="left 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:#5bbd72!important;box-shadow:none!important;text-shadow:none;color:#fff!important}.ui.button.toggle.active:hover{background-color:#66c17b!important;text-shadow:none;color:#fff!important}.ui.circular.button{border-radius:10em}.ui.circular.button>.icon{width:1em;vertical-align:baseline}.ui.attached.button{display:block;margin:0;box-shadow:0 0 0 1px rgba(39,41,43,.15)!important;border-radius:0}.ui.attached.top.button{border-radius:.2857rem .2857rem 0 0}.ui.attached.bottom.button{border-radius:0 0 .2857rem .2857rem}.ui.attached.left.button{display:inline-block;border-left:none;padding-right:.75em;text-align:right;border-radius:.2857rem 0 0 .2857rem}.ui.attached.right.button{display:inline-block;padding-left:.75em;text-align:left;border-radius:0 .2857rem .2857rem 0}.ui.buttons .or{position:relative;float:left;width:.3em;height:2.57142em;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:-.892855em;margin-left:-.892855em;width:1.78571em;height:1.78571em;line-height:1.78571em;color:rgba(0,0,0,.4);font-style:normal;font-weight:700;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}.attached.ui.buttons{margin:0;border-radius:0}.attached.ui.buttons .button{margin:0}.attached.ui.buttons .button:first-child,.attached.ui.buttons .button:last-child{border-radius:0}[class*="top attached"].ui.buttons{margin-bottom:-1px;border-radius:.2857rem .2857rem 0 0}[class*="top attached"].ui.buttons .button:first-child{border-radius:.2857rem 0 0}[class*="top attached"].ui.buttons .button:last-child{border-radius:0 .2857rem 0 0}[class*="bottom attached"].ui.buttons{margin-top:-1px;border-radius:0 0 .2857rem .2857rem}[class*="bottom attached"].ui.buttons .button:first-child{border-radius:0 0 0 .2857rem}[class*="bottom attached"].ui.buttons .button:last-child{border-radius:0 0 .2857rem}[class*="left attached"].ui.buttons{margin-left:-1px;border-radius:0 .2857rem .2857rem 0}[class*="left attached"].ui.buttons .button:first-child{margin-left:-1px;border-radius:0 .2857rem 0 0}[class*="left attached"].ui.buttons .button:last-child{margin-left:-1px;border-radius:0 0 .2857rem}[class*="right attached"].ui.buttons,[class*="right attached"].ui.buttons .button{margin-right:-1px;border-radius:.2857rem 0 0 .2857rem}[class*="right attached"].ui.buttons .button:first-child{margin-left:-1px;border-radius:.2857rem 0 0}[class*="right attached"].ui.buttons .button:last-child{margin-left:-1px;border-radius:0 0 0 .2857rem}.ui.button.fluid,.ui.fluid.buttons,.ui.fluid.buttons>.button{display:block;width:100%}.ui.\32.buttons,.ui.two.buttons{width:100%}.ui.\32.buttons>.button,.ui.two.buttons>.button{width:50%}.ui.\33.buttons,.ui.three.buttons{width:100%}.ui.\33.buttons>.button,.ui.three.buttons>.button{width:33.333%}.ui.\34.buttons,.ui.four.buttons{width:100%}.ui.\34.buttons>.button,.ui.four.buttons>.button{width:25%}.ui.\35.buttons,.ui.five.buttons{width:100%}.ui.\35.buttons>.button,.ui.five.buttons>.button{width:20%}.ui.\36.buttons,.ui.six.buttons{width:100%}.ui.\36.buttons>.button,.ui.six.buttons>.button{width:16.666%}.ui.\37.buttons,.ui.seven.buttons{width:100%}.ui.\37.buttons>.button,.ui.seven.buttons>.button{width:14.285%}.ui.\38.buttons,.ui.eight.buttons{width:100%}.ui.\38.buttons>.button,.ui.eight.buttons>.button{width:12.5%}.ui.\39.buttons,.ui.nine.buttons{width:100%}.ui.\39.buttons>.button,.ui.nine.buttons>.button{width:11.11%}.ui.\31\30.buttons,.ui.ten.buttons{width:100%}.ui.\31\30.buttons>.button,.ui.ten.buttons>.button{width:10%}.ui.\31\31.buttons,.ui.eleven.buttons{width:100%}.ui.\31\31.buttons>.button,.ui.eleven.buttons>.button{width:9.09%}.ui.\31\32.buttons,.ui.twelve.buttons{width:100%}.ui.\31\32.buttons>.button,.ui.twelve.buttons>.button{width:8.3333%}.ui.fluid.vertical.buttons,.ui.fluid.vertical.buttons>.button{display:block;width:auto}.ui.\32.vertical.buttons>.button,.ui.two.vertical.buttons>.button{height:50%}.ui.\33.vertical.buttons>.button,.ui.three.vertical.buttons>.button{height:33.333%}.ui.\34.vertical.buttons>.button,.ui.four.vertical.buttons>.button{height:25%}.ui.\35.vertical.buttons>.button,.ui.five.vertical.buttons>.button{height:20%}.ui.\36.vertical.buttons>.button,.ui.six.vertical.buttons>.button{height:16.666%}.ui.\37.vertical.buttons>.button,.ui.seven.vertical.buttons>.button{height:14.285%}.ui.\38.vertical.buttons>.button,.ui.eight.vertical.buttons>.button{height:12.5%}.ui.\39.vertical.buttons>.button,.ui.nine.vertical.buttons>.button{height:11.11%}.ui.\31\30.vertical.buttons>.button,.ui.ten.vertical.buttons>.button{height:10%}.ui.\31\31.vertical.buttons>.button,.ui.eleven.vertical.buttons>.button{height:9.09%}.ui.\31\32.vertical.buttons>.button,.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{box-shadow:0 0 0 0 rgba(39,41,43,.15) inset}.ui.black.button:hover,.ui.black.buttons .button:hover{background-color:#1b1c1d;color:#fff;text-shadow:none}.ui.black.button:active,.ui.black.buttons .button:active{background-color:#0a0a0b;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{box-shadow:0 0 0 2px rgba(39,41,43,.15) inset!important;color:rgba(0,0,0,.6)!important}.ui.basic.black.button:hover,.ui.basic.black.buttons .button:hover{background:0 0!important;box-shadow:0 0 0 2px #1b1c1d inset!important;color:#1b1c1d!important}.ui.basic.black.button:active,.ui.basic.black.buttons .button:active{box-shadow:0 0 0 2px #0a0a0b inset!important;color:#0a0a0b!important}.ui.basic.black.active.button,.ui.basic.black.buttons .active.button{background:0 0!important;box-shadow:0 0 0 2px #0a0a0b inset!important;color:#0a0a0b!important}.ui.buttons>.basic.black.button:not(:first-child){margin-left:-2px}.ui.inverted.black.button,.ui.inverted.black.buttons .button{background-color:transparent;box-shadow:0 0 0 2px #d4d4d5 inset!important;color:#fff}.ui.inverted.black.active.button,.ui.inverted.black.button:hover,.ui.inverted.black.buttons .active.button,.ui.inverted.black.buttons .button:hover{box-shadow:0 0 0 2px #333 inset!important;background-color:#333;color:#fff}.ui.inverted.black.button:active,.ui.inverted.black.buttons .button:active{box-shadow:0 0 0 2px #212121 inset!important;background-color:#212121;color:#fff}.ui.inverted.black.basic.button,.ui.inverted.black.basic.buttons .button,.ui.inverted.black.buttons .basic.button{background-color:transparent;box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;color:#fff!important}.ui.inverted.black.basic.active.button,.ui.inverted.black.basic.button:hover,.ui.inverted.black.basic.buttons .active.button,.ui.inverted.black.basic.buttons .button:hover,.ui.inverted.black.buttons .basic.active.button,.ui.inverted.black.buttons .basic.button:hover{box-shadow:0 0 0 2px #333 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{box-shadow:0 0 0 2px #212121 inset!important;color:#fff!important}.ui.blue.button,.ui.blue.buttons .button{background-color:#3b83c0;color:#fff;text-shadow:none;background-image:none}.ui.blue.button{box-shadow:0 0 0 0 rgba(39,41,43,.15) inset}.ui.blue.button:hover,.ui.blue.buttons .button:hover{background-color:#458ac6;color:#fff;text-shadow:none}.ui.blue.button:active,.ui.blue.buttons .button:active{background-color:#3370a5;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:#3576ac;color:#fff;text-shadow:none}.ui.basic.blue.button,.ui.basic.blue.buttons .button{box-shadow:0 0 0 2px rgba(39,41,43,.15) inset!important;color:rgba(0,0,0,.6)!important}.ui.basic.blue.button:hover,.ui.basic.blue.buttons .button:hover{background:0 0!important;box-shadow:0 0 0 2px #458ac6 inset!important;color:#458ac6!important}.ui.basic.blue.button:active,.ui.basic.blue.buttons .button:active{box-shadow:0 0 0 2px #3370a5 inset!important;color:#3370a5!important}.ui.basic.blue.active.button,.ui.basic.blue.buttons .active.button{background:0 0!important;box-shadow:0 0 0 2px #3370a5 inset!important;color:#3370a5!important}.ui.buttons>.basic.blue.button:not(:first-child){margin-left:-2px}.ui.inverted.blue.button,.ui.inverted.blue.buttons .button{background-color:transparent;box-shadow:0 0 0 2px #54c8ff inset!important;color:#54c8ff}.ui.inverted.blue.active.button,.ui.inverted.blue.button:hover,.ui.inverted.blue.buttons .active.button,.ui.inverted.blue.buttons .button:hover{box-shadow:0 0 0 2px #54c8ff inset!important;background-color:#54c8ff;color:#fff}.ui.inverted.blue.button:active,.ui.inverted.blue.buttons .button:active{box-shadow:0 0 0 2px #30bdff inset!important;background-color:#30bdff;color:#fff}.ui.inverted.blue.basic.button,.ui.inverted.blue.basic.buttons .button,.ui.inverted.blue.buttons .basic.button{background-color:transparent;box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;color:#fff!important}.ui.inverted.blue.basic.active.button,.ui.inverted.blue.basic.button:hover,.ui.inverted.blue.basic.buttons .active.button,.ui.inverted.blue.basic.buttons .button:hover,.ui.inverted.blue.buttons .basic.active.button,.ui.inverted.blue.buttons .basic.button:hover{box-shadow:0 0 0 2px #54c8ff 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{box-shadow:0 0 0 2px #30bdff inset!important;color:#54c8ff!important}.ui.green.button,.ui.green.buttons .button{background-color:#5bbd72;color:#fff;text-shadow:none;background-image:none}.ui.green.button{box-shadow:0 0 0 0 rgba(39,41,43,.15) inset}.ui.green.button:hover,.ui.green.buttons .button:hover{background-color:#66c17b;color:#fff;text-shadow:none}.ui.green.button:active,.ui.green.buttons .button:active{background-color:#46ae5f;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:#49b562;color:#fff;text-shadow:none}.ui.basic.green.button,.ui.basic.green.buttons .button{box-shadow:0 0 0 2px rgba(39,41,43,.15) inset!important;color:rgba(0,0,0,.6)!important}.ui.basic.green.button:hover,.ui.basic.green.buttons .button:hover{background:0 0!important;box-shadow:0 0 0 2px #66c17b inset!important;color:#66c17b!important}.ui.basic.green.button:active,.ui.basic.green.buttons .button:active{box-shadow:0 0 0 2px #46ae5f inset!important;color:#46ae5f!important}.ui.basic.green.active.button,.ui.basic.green.buttons .active.button{background:0 0!important;box-shadow:0 0 0 2px #46ae5f inset!important;color:#46ae5f!important}.ui.buttons>.basic.green.button:not(:first-child){margin-left:-2px}.ui.inverted.green.button,.ui.inverted.green.buttons .button{background-color:transparent;box-shadow:0 0 0 2px #2ecc40 inset!important;color:#2ecc40}.ui.inverted.green.active.button,.ui.inverted.green.button:hover,.ui.inverted.green.buttons .active.button,.ui.inverted.green.buttons .button:hover{box-shadow:0 0 0 2px #2ecc40 inset!important;background-color:#2ecc40;color:#fff}.ui.inverted.green.button:active,.ui.inverted.green.buttons .button:active{box-shadow:0 0 0 2px #27af37 inset!important;background-color:#27af37;color:#fff}.ui.inverted.green.basic.button,.ui.inverted.green.basic.buttons .button,.ui.inverted.green.buttons .basic.button{background-color:transparent;box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;color:#fff!important}.ui.inverted.green.basic.active.button,.ui.inverted.green.basic.button:hover,.ui.inverted.green.basic.buttons .active.button,.ui.inverted.green.basic.buttons .button:hover,.ui.inverted.green.buttons .basic.active.button,.ui.inverted.green.buttons .basic.button:hover{box-shadow:0 0 0 2px #2ecc40 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{box-shadow:0 0 0 2px #27af37 inset!important;color:#2ecc40!important}.ui.orange.button,.ui.orange.buttons .button{background-color:#e07b53;color:#fff;text-shadow:none;background-image:none}.ui.orange.button{box-shadow:0 0 0 0 rgba(39,41,43,.15) inset}.ui.orange.button:hover,.ui.orange.buttons .button:hover{background-color:#e28560;color:#fff;text-shadow:none}.ui.orange.button:active,.ui.orange.buttons .button:active{background-color:#db6435;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:#dc6a3d;color:#fff;text-shadow:none}.ui.basic.orange.button,.ui.basic.orange.buttons .button{box-shadow:0 0 0 2px rgba(39,41,43,.15) inset!important;color:rgba(0,0,0,.6)!important}.ui.basic.orange.button:hover,.ui.basic.orange.buttons .button:hover{background:0 0!important;box-shadow:0 0 0 2px #e28560 inset!important;color:#e28560!important}.ui.basic.orange.button:active,.ui.basic.orange.buttons .button:active{box-shadow:0 0 0 2px #db6435 inset!important;color:#db6435!important}.ui.basic.orange.active.button,.ui.basic.orange.buttons .active.button{background:0 0!important;box-shadow:0 0 0 2px #db6435 inset!important;color:#db6435!important}.ui.buttons>.basic.orange.button:not(:first-child){margin-left:-2px}.ui.inverted.orange.button,.ui.inverted.orange.buttons .button{background-color:transparent;box-shadow:0 0 0 2px #ff851b inset!important;color:#ff851b}.ui.inverted.orange.active.button,.ui.inverted.orange.button:hover,.ui.inverted.orange.buttons .active.button,.ui.inverted.orange.buttons .button:hover{box-shadow:0 0 0 2px #ff851b inset!important;background-color:#ff851b;color:#fff}.ui.inverted.orange.button:active,.ui.inverted.orange.buttons .button:active{box-shadow:0 0 0 2px #f67300 inset!important;background-color:#f67300;color:#fff}.ui.inverted.orange.basic.button,.ui.inverted.orange.basic.buttons .button,.ui.inverted.orange.buttons .basic.button{background-color:transparent;box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;color:#fff!important}.ui.inverted.orange.basic.active.button,.ui.inverted.orange.basic.button:hover,.ui.inverted.orange.basic.buttons .active.button,.ui.inverted.orange.basic.buttons .button:hover,.ui.inverted.orange.buttons .basic.active.button,.ui.inverted.orange.buttons .basic.button:hover{box-shadow:0 0 0 2px #ff851b 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{box-shadow:0 0 0 2px #f67300 inset!important;color:#ff851b!important}.ui.pink.button,.ui.pink.buttons .button{background-color:#d9499a;color:#fff;text-shadow:none;background-image:none}.ui.pink.button{box-shadow:0 0 0 0 rgba(39,41,43,.15) inset}.ui.pink.button:hover,.ui.pink.buttons .button:hover{background-color:#dc56a1;color:#fff;text-shadow:none}.ui.pink.button:active,.ui.pink.buttons .button:active{background-color:#d22c8a;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:#d5348e;color:#fff;text-shadow:none}.ui.basic.pink.button,.ui.basic.pink.buttons .button{box-shadow:0 0 0 2px rgba(39,41,43,.15) inset!important;color:rgba(0,0,0,.6)!important}.ui.basic.pink.button:hover,.ui.basic.pink.buttons .button:hover{background:0 0!important;box-shadow:0 0 0 2px #dc56a1 inset!important;color:#dc56a1!important}.ui.basic.pink.button:active,.ui.basic.pink.buttons .button:active{box-shadow:0 0 0 2px #d22c8a inset!important;color:#d22c8a!important}.ui.basic.pink.active.button,.ui.basic.pink.buttons .active.button{background:0 0!important;box-shadow:0 0 0 2px #d22c8a inset!important;color:#d22c8a!important}.ui.buttons>.basic.pink.button:not(:first-child){margin-left:-2px}.ui.inverted.pink.button,.ui.inverted.pink.buttons .button{background-color:transparent;box-shadow:0 0 0 2px #ff8edf inset!important;color:#ff8edf}.ui.inverted.pink.active.button,.ui.inverted.pink.button:hover,.ui.inverted.pink.buttons .active.button,.ui.inverted.pink.buttons .button:hover{box-shadow:0 0 0 2px #ff8edf inset!important;background-color:#ff8edf;color:#fff}.ui.inverted.pink.button:active,.ui.inverted.pink.buttons .button:active{box-shadow:0 0 0 2px #ff6ad5 inset!important;background-color:#ff6ad5;color:#fff}.ui.inverted.pink.basic.button,.ui.inverted.pink.basic.buttons .button,.ui.inverted.pink.buttons .basic.button{background-color:transparent;box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;color:#fff!important}.ui.inverted.pink.basic.active.button,.ui.inverted.pink.basic.button:hover,.ui.inverted.pink.basic.buttons .active.button,.ui.inverted.pink.basic.buttons .button:hover,.ui.inverted.pink.buttons .basic.active.button,.ui.inverted.pink.buttons .basic.button:hover{box-shadow:0 0 0 2px #ff8edf 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{box-shadow:0 0 0 2px #ff6ad5 inset!important;color:#ff8edf!important}.ui.purple.button,.ui.purple.buttons .button{background-color:#564f8a;color:#fff;text-shadow:none;background-image:none}.ui.purple.button{box-shadow:0 0 0 0 rgba(39,41,43,.15) inset}.ui.purple.button:hover,.ui.purple.buttons .button:hover{background-color:#5c5594;color:#fff;text-shadow:none}.ui.purple.button:active,.ui.purple.buttons .button:active{background-color:#484273;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:#4c467a;color:#fff;text-shadow:none}.ui.basic.purple.button,.ui.basic.purple.buttons .button{box-shadow:0 0 0 2px rgba(39,41,43,.15) inset!important;color:rgba(0,0,0,.6)!important}.ui.basic.purple.button:hover,.ui.basic.purple.buttons .button:hover{background:0 0!important;box-shadow:0 0 0 2px #5c5594 inset!important;color:#5c5594!important}.ui.basic.purple.button:active,.ui.basic.purple.buttons .button:active{box-shadow:0 0 0 2px #484273 inset!important;color:#484273!important}.ui.basic.purple.active.button,.ui.basic.purple.buttons .active.button{background:0 0!important;box-shadow:0 0 0 2px #484273 inset!important;color:#484273!important}.ui.buttons>.basic.purple.button:not(:first-child){margin-left:-2px}.ui.inverted.purple.button,.ui.inverted.purple.buttons .button{background-color:transparent;box-shadow:0 0 0 2px #cdc6ff inset!important;color:#cdc6ff}.ui.inverted.purple.active.button,.ui.inverted.purple.button:hover,.ui.inverted.purple.buttons .active.button,.ui.inverted.purple.buttons .button:hover{box-shadow:0 0 0 2px #cdc6ff inset!important;background-color:#cdc6ff;color:#1b1c1d}.ui.inverted.purple.button:active,.ui.inverted.purple.buttons .button:active{box-shadow:0 0 0 2px #aea2ff inset!important;background-color:#aea2ff;color:#1b1c1d}.ui.inverted.purple.basic.button,.ui.inverted.purple.basic.buttons .button,.ui.inverted.purple.buttons .basic.button{background-color:transparent;box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;color:#fff!important}.ui.inverted.purple.basic.active.button,.ui.inverted.purple.basic.button:hover,.ui.inverted.purple.basic.buttons .active.button,.ui.inverted.purple.basic.buttons .button:hover,.ui.inverted.purple.buttons .basic.active.button,.ui.inverted.purple.buttons .basic.button:hover{box-shadow:0 0 0 2px #cdc6ff inset!important;color:#cdc6ff!important}.ui.inverted.purple.basic.button:active,.ui.inverted.purple.basic.buttons .button:active,.ui.inverted.purple.buttons .basic.button:active{box-shadow:0 0 0 2px #aea2ff inset!important;color:#cdc6ff!important}.ui.red.button,.ui.red.buttons .button{background-color:#d95c5c;color:#fff;text-shadow:none;background-image:none}.ui.red.button{box-shadow:0 0 0 0 rgba(39,41,43,.15) inset}.ui.red.button:hover,.ui.red.buttons .button:hover{background-color:#dc6868;color:#fff;text-shadow:none}.ui.red.button:active,.ui.red.buttons .button:active{background-color:#d23f3f;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:#d44747;color:#fff;text-shadow:none}.ui.basic.red.button,.ui.basic.red.buttons .button{box-shadow:0 0 0 2px rgba(39,41,43,.15) inset!important;color:rgba(0,0,0,.6)!important}.ui.basic.red.button:hover,.ui.basic.red.buttons .button:hover{background:0 0!important;box-shadow:0 0 0 2px #dc6868 inset!important;color:#dc6868!important}.ui.basic.red.button:active,.ui.basic.red.buttons .button:active{box-shadow:0 0 0 2px #d23f3f inset!important;color:#d23f3f!important}.ui.basic.red.active.button,.ui.basic.red.buttons .active.button{background:0 0!important;box-shadow:0 0 0 2px #d23f3f inset!important;color:#d23f3f!important}.ui.buttons>.basic.red.button:not(:first-child){margin-left:-2px}.ui.inverted.red.button,.ui.inverted.red.buttons .button{background-color:transparent;box-shadow:0 0 0 2px #ff695e inset!important;color:#ff695e}.ui.inverted.red.active.button,.ui.inverted.red.button:hover,.ui.inverted.red.buttons .active.button,.ui.inverted.red.buttons .button:hover{box-shadow:0 0 0 2px #ff695e inset!important;background-color:#ff695e;color:#fff}.ui.inverted.red.button:active,.ui.inverted.red.buttons .button:active{box-shadow:0 0 0 2px #ff483a inset!important;background-color:#ff483a;color:#fff}.ui.inverted.red.basic.button,.ui.inverted.red.basic.buttons .button,.ui.inverted.red.buttons .basic.button{background-color:transparent;box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;color:#fff!important}.ui.inverted.red.basic.active.button,.ui.inverted.red.basic.button:hover,.ui.inverted.red.basic.buttons .active.button,.ui.inverted.red.basic.buttons .button:hover,.ui.inverted.red.buttons .basic.active.button,.ui.inverted.red.buttons .basic.button:hover{box-shadow:0 0 0 2px #ff695e 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{box-shadow:0 0 0 2px #ff483a 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{box-shadow:0 0 0 0 rgba(39,41,43,.15) inset}.ui.teal.button:hover,.ui.teal.buttons .button:hover{background-color:#00c4bc;color:#fff;text-shadow:none}.ui.teal.button:active,.ui.teal.buttons .button:active{background-color:#00918b;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{box-shadow:0 0 0 2px rgba(39,41,43,.15) inset!important;color:rgba(0,0,0,.6)!important}.ui.basic.teal.button:hover,.ui.basic.teal.buttons .button:hover{background:0 0!important;box-shadow:0 0 0 2px #00c4bc inset!important;color:#00c4bc!important}.ui.basic.teal.button:active,.ui.basic.teal.buttons .button:active{box-shadow:0 0 0 2px #00918b inset!important;color:#00918b!important}.ui.basic.teal.active.button,.ui.basic.teal.buttons .active.button{background:0 0!important;box-shadow:0 0 0 2px #00918b inset!important;color:#00918b!important}.ui.buttons>.basic.teal.button:not(:first-child){margin-left:-2px}.ui.inverted.teal.button,.ui.inverted.teal.buttons .button{background-color:transparent;box-shadow:0 0 0 2px #6dffff inset!important;color:#6dffff}.ui.inverted.teal.active.button,.ui.inverted.teal.button:hover,.ui.inverted.teal.buttons .active.button,.ui.inverted.teal.buttons .button:hover{box-shadow:0 0 0 2px #6dffff inset!important;background-color:#6dffff;color:#1b1c1d}.ui.inverted.teal.button:active,.ui.inverted.teal.buttons .button:active{box-shadow:0 0 0 2px #49ffff inset!important;background-color:#49ffff;color:#1b1c1d}.ui.inverted.teal.basic.button,.ui.inverted.teal.basic.buttons .button,.ui.inverted.teal.buttons .basic.button{background-color:transparent;box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;color:#fff!important}.ui.inverted.teal.basic.active.button,.ui.inverted.teal.basic.button:hover,.ui.inverted.teal.basic.buttons .active.button,.ui.inverted.teal.basic.buttons .button:hover,.ui.inverted.teal.buttons .basic.active.button,.ui.inverted.teal.buttons .basic.button:hover{box-shadow:0 0 0 2px #6dffff 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{box-shadow:0 0 0 2px #49ffff inset!important;color:#6dffff!important}.ui.yellow.button,.ui.yellow.buttons .button{background-color:#f2c61f;color:#fff;text-shadow:none;background-image:none}.ui.yellow.button{box-shadow:0 0 0 0 rgba(39,41,43,.15) inset}.ui.yellow.button:hover,.ui.yellow.buttons .button:hover{background-color:#f3ca2d;color:#fff;text-shadow:none}.ui.yellow.button:active,.ui.yellow.buttons .button:active{background-color:#e0b40d;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:#eabc0e;color:#fff;text-shadow:none}.ui.basic.yellow.button,.ui.basic.yellow.buttons .button{box-shadow:0 0 0 2px rgba(39,41,43,.15) inset!important;color:rgba(0,0,0,.6)!important}.ui.basic.yellow.button:hover,.ui.basic.yellow.buttons .button:hover{background:0 0!important;box-shadow:0 0 0 2px #f3ca2d inset!important;color:#f3ca2d!important}.ui.basic.yellow.button:active,.ui.basic.yellow.buttons .button:active{box-shadow:0 0 0 2px #e0b40d inset!important;color:#e0b40d!important}.ui.basic.yellow.active.button,.ui.basic.yellow.buttons .active.button{background:0 0!important;box-shadow:0 0 0 2px #e0b40d inset!important;color:#e0b40d!important}.ui.buttons>.basic.yellow.button:not(:first-child){margin-left:-2px}.ui.inverted.yellow.button,.ui.inverted.yellow.buttons .button{background-color:transparent;box-shadow:0 0 0 2px #ffe21f inset!important;color:#ffe21f}.ui.inverted.yellow.active.button,.ui.inverted.yellow.button:hover,.ui.inverted.yellow.buttons .active.button,.ui.inverted.yellow.buttons .button:hover{box-shadow:0 0 0 2px #ffe21f inset!important;background-color:#ffe21f;color:#1b1c1d}.ui.inverted.yellow.button:active,.ui.inverted.yellow.buttons .button:active{box-shadow:0 0 0 2px #fada00 inset!important;background-color:#fada00;color:#1b1c1d}.ui.inverted.yellow.basic.button,.ui.inverted.yellow.basic.buttons .button,.ui.inverted.yellow.buttons .basic.button{background-color:transparent;box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;color:#fff!important}.ui.inverted.yellow.basic.active.button,.ui.inverted.yellow.basic.button:hover,.ui.inverted.yellow.basic.buttons .active.button,.ui.inverted.yellow.basic.buttons .button:hover,.ui.inverted.yellow.buttons .basic.active.button,.ui.inverted.yellow.buttons .basic.button:hover{box-shadow:0 0 0 2px #ffe21f 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{box-shadow:0 0 0 2px #fada00 inset!important;color:#ffe21f!important}.ui.primary.button,.ui.primary.buttons .button{background-color:#3b83c0;color:#fff;text-shadow:none;background-image:none}.ui.primary.button{box-shadow:0 0 0 0 rgba(39,41,43,.15) inset}.ui.primary.button:hover,.ui.primary.buttons .button:hover{background-color:#458ac6;color:#fff;text-shadow:none}.ui.primary.button:active,.ui.primary.buttons .button:active{background-color:#3370a5;color:#fff;text-shadow:none}.ui.primary.active.button,.ui.primary.buttons .active.button{background-color:#3576ac;color:#fff;text-shadow:none}.ui.secondary.button,.ui.secondary.buttons .button{background-color:#1b1c1d;color:#fff;text-shadow:none;background-image:none}.ui.secondary.button{box-shadow:0 0 0 0 rgba(39,41,43,.15) inset}.ui.secondary.button:hover,.ui.secondary.buttons .button:hover{background-color:#222425;color:#fff;text-shadow:none}.ui.secondary.button:active,.ui.secondary.buttons .button:active{background-color:#0a0a0b;color:#fff;text-shadow:none}.ui.secondary.active.button,.ui.secondary.buttons .active.button{background-color:#0f0f10;color:#fff;text-shadow:none}.ui.positive.button,.ui.positive.buttons .button{background-color:#5bbd72!important;color:#fff;text-shadow:none;background-image:none}.ui.positive.button{box-shadow:0 0 0 0 rgba(39,41,43,.15) inset}.ui.positive.active.button,.ui.positive.button:hover,.ui.positive.buttons .active.button,.ui.positive.buttons .button:hover{background-color:#66c17b!important;color:#fff;text-shadow:none}.ui.positive.button:active,.ui.positive.buttons .button:active{background-color:#46ae5f!important;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:#49b562;color:#fff;text-shadow:none}.ui.negative.button,.ui.negative.buttons .button{background-color:#d95c5c!important;color:#fff;text-shadow:none;background-image:none}.ui.negative.button{box-shadow:0 0 0 0 rgba(39,41,43,.15) inset}.ui.negative.active.button,.ui.negative.button:hover,.ui.negative.buttons .active.button,.ui.negative.buttons .button:hover{background-color:#dc6868!important;color:#fff;text-shadow:none}.ui.negative.button:active,.ui.negative.buttons .button:active{background-color:#d23f3f!important;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:#d44747;color:#fff;text-shadow:none}.ui.buttons{display:inline-block;vertical-align:middle;margin:0 .25em 0 0}.ui.buttons>.active.button,.ui.buttons>.button:hover{position:relative}.ui.buttons:after{content:".";display:block;height:0;clear:both;visibility:hidden}.ui.buttons:not(.basic):not(.inverted){box-shadow:none}.ui.buttons:not(.basic):not(.inverted)>.button,.ui.buttons>.ui.button:not(.basic):not(.inverted){box-shadow:0 0 0 1px transparent inset,0 0 0 0 rgba(39,41,43,.15) inset}.ui.buttons .button{float:left;border-radius:0;margin:0}.ui.buttons .button:first-child{border-left:none;margin-left:0;border-top-left-radius:.2857rem;border-bottom-left-radius:.2857rem}.ui.buttons .button:last-child{border-top-right-radius:.2857rem;border-bottom-right-radius:.2857rem}.ui.vertical.buttons{display:inline-block}.ui.vertical.buttons .button{display:block;float:none;width:100%;margin:0;box-shadow:none}.ui.vertical.buttons .button:first-child,.ui.vertical.buttons .huge.button:first-child,.ui.vertical.buttons .massive.button:first-child,.ui.vertical.buttons .mini.button:first-child,.ui.vertical.buttons .small.button:first-child,.ui.vertical.buttons .tiny.button:first-child{border-radius:.2857rem .2857rem 0 0}.ui.vertical.buttons .button:last-child,.ui.vertical.buttons .gigantic.button:last-child,.ui.vertical.buttons .huge.button:last-child,.ui.vertical.buttons .massive.button:last-child,.ui.vertical.buttons .mini.button:last-child,.ui.vertical.buttons .small.button:last-child,.ui.vertical.buttons .tiny.button:last-child{margin-bottom:0;border-radius:0 0 .2857rem .2857rem} \ No newline at end of file + */.ui.button{cursor:pointer;display:inline-block;min-height:1em;outline:0;border:none;vertical-align:baseline;background:#e0e1e2;color:rgba(0,0,0,.6);font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;margin:0 .25em 0 0;padding:.78571429em 1.5em;text-transform:none;text-shadow:none;font-weight:700;line-height:1em;font-style:normal;text-align:center;text-decoration:none;border-radius:.28571429rem;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,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;will-change:'';-webkit-tap-highlight-color:transparent}.ui.button:hover{background-color:#cacbcd;background-image:none;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;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);box-shadow:0 0 0 1px transparent inset,none}.ui.active.button{background-color:#c0c1c2;background-image:none;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;box-shadow:0 0 0 1px transparent}.ui.labeled.icon.loading.button .icon{background-color:transparent;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;box-shadow:none!important;pointer-events:none}.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;left:auto;right:0}.ui.animated.button .hidden.content{position:absolute;width:100%;top:50%;left:auto;right:-100%;margin-top:-.5em}.ui.animated.button .hidden.content,.ui.animated.button .visible.content{-webkit-transition:right .3s ease 0s;transition:right .3s ease 0s}.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,transform .3s ease}.ui.vertical.animated.button .visible.content{-webkit-transform:translateY(0);-ms-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%);-ms-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,transform .3s ease}.ui.fade.animated.button .visible.content{left:auto;right:auto;opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.ui.fade.animated.button .hidden.content{opacity:0;left:0;right:auto;-webkit-transform:scale(1.5);-ms-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);-ms-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);-ms-transform:scale(1);transform:scale(1)}.ui.inverted.button{box-shadow:0 0 0 2px #fff inset!important;background:0 0;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}.ui.inverted.vertical.buttons .button:first-child{margin-top:0}.ui.inverted.button.active,.ui.inverted.button:focus,.ui.inverted.button:hover{background:#fff;box-shadow:0 0 0 2px #fff inset!important;color:rgba(0,0,0,.8)}.ui.inverted.button.active:focus{background:#dcddde;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:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;background:0 0!important;padding:0!important;border:none!important;box-shadow:none!important}.ui.labeled.button>.button{margin:0}.ui.labeled.button>.label{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items: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,.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;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:#0084b4;color:#fff;text-shadow:none;background-image:none;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.twitter.button:hover{background-color:#00719b;color:#fff;text-shadow:none}.ui.twitter.button:active{background-color:#005f81;color:#fff;text-shadow:none}.ui.google.plus.button{background-color:#dc4a38;color:#fff;text-shadow:none;background-image:none;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.google.plus.button:hover{background-color:#de321d;color:#fff;text-shadow:none}.ui.google.plus.button:active{background-color:#bf3322;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:#cc181e;color:#fff;text-shadow:none;background-image:none;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.youtube.button:hover{background-color:#bd0d13;color:#fff;text-shadow:none}.ui.youtube.button:active{background-color:#9e1317;color:#fff;text-shadow:none}.ui.instagram.button{background-color:#49769c;color:#fff;text-shadow:none;background-image:none;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:#00aced;color:#fff;text-shadow:none;background-image:none;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.pinterest.button:hover{background-color:#0099d4;color:#fff;text-shadow:none}.ui.pinterest.button:active{background-color:#0087ba;color:#fff;text-shadow:none}.ui.vk.button{background-color:#4D7198;color:#fff;background-image:none;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>.right.icon:not(.button){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}.ui.compact.icon.button,.ui.compact.icon.buttons .button{padding:.58928571em}.ui.compact.labeled.icon.button,.ui.compact.labeled.icon.buttons .button{padding:.58928571em 3.69642857em}.ui.mini.button,.ui.mini.buttons .button,.ui.mini.buttons .or{font-size:.71428571rem}.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}.ui.icon.button>.icon,.ui.icon.buttons .button>.icon{opacity:.9;margin:0;vertical-align:top}.ui.basic.button,.ui.basic.buttons .button{background:0 0!important;color:rgba(0,0,0,.6)!important;font-weight:400;border-radius:.28571429rem;text-transform:none;text-shadow:none!important;box-shadow:0 0 0 1px rgba(34,36,38,.15) inset}.ui.basic.buttons{box-shadow:none;border:1px solid rgba(34,36,38,.15);border-radius:.28571429rem}.ui.basic.button:focus,.ui.basic.button:hover,.ui.basic.buttons .button:focus,.ui.basic.buttons .button:hover{background:#fff!important;color:rgba(0,0,0,.8)!important;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;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;box-shadow:''!important;color:rgba(0,0,0,.95)}.ui.basic.active.button:hover,.ui.basic.buttons .active.button:hover{background-color:rgba(0,0,0,.05)}.ui.basic.buttons .button:hover{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{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{box-shadow:rgba(34,36,38,.35) inset}.ui.basic.inverted.button,.ui.basic.inverted.buttons .button{background-color:transparent!important;color:#f9fafb!important;box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important}.ui.basic.inverted.button:focus,.ui.basic.inverted.button:hover,.ui.basic.inverted.buttons .button:focus,.ui.basic.inverted.buttons .button:hover{color:#fff!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;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;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);box-shadow:0 0 0 2px #fff inset!important}.ui.basic.buttons .button{border-radius:0;border-left:1px solid rgba(34,36,38,.15);box-shadow:none}.ui.basic.vertical.buttons .button{border-left:none;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;width:2.57142857em;background-color:rgba(0,0,0,.05);text-align:center;color:'';box-shadow:-1px 0 0 0 transparent inset;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;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%);-ms-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:.28571429rem 0 0}.ui.vertical.labeled.icon.buttons .button:last-child>.icon{border-radius:0 0 0 .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;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;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;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:-webkit-flex;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,.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}.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}.ui[class*="left attached"].buttons{display:-webkit-inline-box;display:-webkit-inline-flex;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}.ui[class*="right attached"].buttons{display:-webkit-inline-box;display:-webkit-inline-flex;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}.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:-webkit-flex;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{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{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;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;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;box-shadow:0 0 0 1px #0f0f10 inset!important;color:#343637!important}.ui.basic.black.button:active,.ui.basic.black.buttons .button:active{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;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{box-shadow:none!important;color:#fff}.ui.inverted.black.active.button,.ui.inverted.black.button:active,.ui.inverted.black.button:focus,.ui.inverted.black.button:hover,.ui.inverted.black.buttons .active.button,.ui.inverted.black.buttons .button:active,.ui.inverted.black.buttons .button:focus,.ui.inverted.black.buttons .button:hover{background-color:#000}.ui.inverted.black.basic.button,.ui.inverted.black.basic.buttons .button,.ui.inverted.black.buttons .basic.button{background-color:transparent;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{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{box-shadow:0 0 0 2px #000 inset!important;color:#545454!important}.ui.inverted.black.basic.active.button,.ui.inverted.black.basic.button:active,.ui.inverted.black.basic.buttons .active.button,.ui.inverted.black.basic.buttons .button:active,.ui.inverted.black.buttons .basic.active.button,.ui.inverted.black.buttons .basic.button:active{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{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{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;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;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;box-shadow:0 0 0 1px #696969 inset!important;color:#909090!important}.ui.basic.grey.button:active,.ui.basic.grey.buttons .button:active{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;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{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;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{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{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{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{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{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{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;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;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;box-shadow:0 0 0 1px #995a31 inset!important;color:#805031!important}.ui.basic.brown.button:active,.ui.basic.brown.buttons .button:active{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;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{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;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{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{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{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{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{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{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;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;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;box-shadow:0 0 0 1px #1279c6 inset!important;color:#1a69a4!important}.ui.basic.blue.button:active,.ui.basic.blue.buttons .button:active{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;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{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;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{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{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{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{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{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{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;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;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;box-shadow:0 0 0 1px #13ae38 inset!important;color:#198f35!important}.ui.basic.green.button:active,.ui.basic.green.buttons .button:active{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;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{box-shadlightOw: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;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{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{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{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{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{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{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;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;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;box-shadow:0 0 0 1px #f56100 inset!important;color:#cf590c!important}.ui.basic.orange.button:active,.ui.basic.orange.buttons .button:active{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;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{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;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{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{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{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{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{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{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;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;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;box-shadow:0 0 0 1px #ea158d inset!important;color:#c71f7e!important}.ui.basic.pink.button:active,.ui.basic.pink.buttons .button:active{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;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{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;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{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{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{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{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{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{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;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;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;box-shadow:0 0 0 1px #5626bf inset!important;color:#502aa1!important}.ui.basic.violet.button:active,.ui.basic.violet.buttons .button:active{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;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{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;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{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{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{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{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{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{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;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;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;box-shadow:0 0 0 1px #9724be inset!important;color:#82299f!important}.ui.basic.purple.button:active,.ui.basic.purple.buttons .button:active{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;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{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;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{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{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{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{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{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{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;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;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;box-shadow:0 0 0 1px #d41515 inset!important;color:#b21e1e!important}.ui.basic.red.button:active,.ui.basic.red.buttons .button:active{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;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{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;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{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{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{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{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{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{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;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;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;box-shadow:0 0 0 1px #009c95 inset!important;color:#00827c!important}.ui.basic.teal.button:active,.ui.basic.teal.buttons .button:active{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;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{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;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{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{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{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{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{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{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;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;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;box-shadow:0 0 0 1px #aac109 inset!important;color:#8d9e13!important}.ui.basic.olive.button:active,.ui.basic.olive.buttons .button:active{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;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{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;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{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{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{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{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{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{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;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;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;box-shadow:0 0 0 1px #eaae00 inset!important;color:#cd9903!important}.ui.basic.yellow.button:active,.ui.basic.yellow.buttons .button:active{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;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{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;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{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{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{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{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{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.buttons .active.button{background-color:#1279c6;color:#fff;text-shadow:none}.ui.secondary.button,.ui.secondary.buttons .button{background-color:#1b1c1d;color:#fff;text-shadow:none;background-image:none}.ui.secondary.button{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.buttons .active.button{background-color:#27292a;color:#fff;text-shadow:none}.ui.positive.button,.ui.positive.buttons .button{background-color:#21ba45!important;color:#fff;text-shadow:none;background-image:none}.ui.positive.button{box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.positive.button:hover,.ui.positive.buttons .button:hover{background-color:#16ab39!important;color:#fff;text-shadow:none}.ui.positive.button:focus,.ui.positive.buttons .button:focus{background-color:#0ea432!important;color:#fff;text-shadow:none}.ui.positive.button:active,.ui.positive.buttons .button:active{background-color:#198f35!important;color:#fff;text-shadow:none}.ui.positive.active.button,.ui.positive.buttons .active.button,.ui.positive.buttons .active.button:active{background-color:#13ae38;color:#fff;text-shadow:none}.ui.negative.button,.ui.negative.buttons .button{background-color:#db2828!important;color:#fff;text-shadow:none;background-image:none}.ui.negative.button{box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.negative.button:hover,.ui.negative.buttons .button:hover{background-color:#d01919!important;color:#fff;text-shadow:none}.ui.negative.button:focus,.ui.negative.buttons .button:focus{background-color:#ca1010!important;color:#fff;text-shadow:none}.ui.negative.button:active,.ui.negative.buttons .button:active{background-color:#b21e1e!important;color:#fff;text-shadow:none}.ui.negative.active.button,.ui.negative.buttons .active.button,.ui.negative.buttons .active.button:active{background-color:#d41515;color:#fff;text-shadow:none}.ui.buttons{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;font-size:0;vertical-align:baseline;margin:0 .25em 0 0}.ui.buttons:not(.basic):not(.inverted){box-shadow:none}.ui.buttons:after{content:".";display:block;height:0;clear:both;visibility:hidden}.ui.buttons .button{-webkit-box-flex:1;-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;border-radius:0;margin:0}.ui.buttons:not(.basic):not(.inverted)>.button,.ui.buttons>.ui.button:not(.basic):not(.inverted){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:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.ui.vertical.buttons .button{display:block;float:none;width:100%;margin:0;box-shadow:none}.ui.vertical.buttons .button:first-child,.ui.vertical.buttons .huge.button:first-child,.ui.vertical.buttons .massive.button:first-child,.ui.vertical.buttons .mini.button:first-child,.ui.vertical.buttons .small.button:first-child,.ui.vertical.buttons .tiny.button:first-child{border-radius:.28571429rem .28571429rem 0 0}.ui.vertical.buttons .button:last-child,.ui.vertical.buttons .gigantic.button:last-child,.ui.vertical.buttons .huge.button:last-child,.ui.vertical.buttons .massive.button:last-child,.ui.vertical.buttons .mini.button:last-child,.ui.vertical.buttons .small.button:last-child,.ui.vertical.buttons .tiny.button:last-child{margin-bottom:0;border-radius:0 0 .28571429rem .28571429rem} \ No newline at end of file diff --git a/amiibofindr/static/semantic/components/card.css b/amiibofindr/static/semantic/components/card.css index ec18109..5845fd7 100755 --- a/amiibofindr/static/semantic/components/card.css +++ b/amiibofindr/static/semantic/components/card.css @@ -1,9 +1,9 @@ /*! - * # Semantic UI 1.12.3 - Item + * # Semantic UI 2.1.3 - Item * http://github.com/semantic-org/semantic-ui/ * * - * Copyright 2014 Contributorss + * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * @@ -37,10 +37,10 @@ background: #ffffff; padding: 0em; border: none; - border-radius: 0.2857rem; - box-shadow: 0px 3px 0px 0px #d4d4d5, 0px 0px 0px 1px #d4d4d5; - -webkit-transition: box-shadow 0.2s ease; - transition: box-shadow 0.2s ease; + border-radius: 0.28571429rem; + box-shadow: 0px 1px 3px 0px #d4d4d5, 0px 0px 0px 1px #d4d4d5; + -webkit-transition: box-shadow 0.1s ease, -webkit-transform 0.1s ease; + transition: box-shadow 0.1s ease, transform 0.1s ease; z-index: ''; } .ui.card { @@ -102,11 +102,16 @@ .ui.cards > .card > :first-child, .ui.card > :first-child { - border-radius: 0.2857rem 0.2857rem 0em 0em !important; + 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.2857rem 0.2857rem !important; + border-radius: 0em 0em 0.28571429rem 0.28571429rem !important; +} +.ui.cards > .card > :only-child, +.ui.card > :only-child { + border-radius: 0.28571429rem !important; } /*-------------- @@ -115,12 +120,12 @@ .ui.cards > .card > .image, .ui.card > .image { + position: relative; display: block; -webkit-box-flex: 0; -webkit-flex: 0 0 auto; -ms-flex: 0 0 auto; flex: 0 0 auto; - position: relative; padding: 0em; background: rgba(0, 0, 0, 0.05); } @@ -129,12 +134,11 @@ display: block; width: 100%; height: auto; - border-radius: 0.2857rem 0.2857rem 0em 0em; - border: none; + border-radius: inherit; } -.ui.cards > .card > .image:only-child > img, -.ui.card > .image:only-child > img { - border-radius: 0.2857rem; +.ui.cards > .card > .image:not(.ui) > img, +.ui.card > .image:not(.ui) > img { + border: none; } /*-------------- @@ -147,12 +151,13 @@ -webkit-flex-grow: 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; box-shadow: none; font-size: 1em; - border: none; border-radius: 0em; } .ui.cards > .card > .content:after, @@ -167,7 +172,7 @@ .ui.cards > .card > .content > .header, .ui.card > .content > .header { display: block; - margin: 0em; + margin: ''; font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif; color: rgba(0, 0, 0, 0.85); } @@ -176,9 +181,9 @@ .ui.cards > .card > .content > .header:not(.ui), .ui.card > .content > .header:not(.ui) { font-weight: bold; - font-size: 1.2em; - margin-top: -0.165em; - line-height: 1.33em; + font-size: 1.28571429em; + margin-top: -0.21425em; + line-height: 1.2857em; } .ui.cards > .card > .content > .meta + .description, .ui.cards > .card > .content > .header + .description, @@ -187,9 +192,9 @@ margin-top: 0.5em; } -/*-------------- - Floated ----------------*/ +/*---------------- + Floated Content +-----------------*/ .ui.cards > .card [class*="left floated"], .ui.card [class*="left floated"] { @@ -225,14 +230,14 @@ .ui.card .content img { display: inline-block; vertical-align: middle; - width: auto; + width: ''; } .ui.cards > .card img.avatar, .ui.cards > .card .avatar img, .ui.card img.avatar, .ui.card .avatar img { - width: 2.5em; - height: 2.5em; + width: 2em; + height: 2em; border-radius: 500rem; } @@ -243,7 +248,7 @@ .ui.cards > .card > .content > .description, .ui.card > .content > .description { clear: both; - color: rgba(0, 0, 0, 0.5); + color: rgba(0, 0, 0, 0.68); } /*-------------- @@ -265,7 +270,7 @@ .ui.cards > .card .meta, .ui.card .meta { - font-size: 0.9em; + font-size: 1em; color: rgba(0, 0, 0, 0.4); } .ui.cards > .card .meta *, @@ -291,8 +296,8 @@ .ui.cards > .card > .content a:not(.ui), .ui.card > .content a:not(.ui) { color: ''; - -webkit-transition: color 0.2s ease; - transition: color 0.2s ease; + -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 { @@ -306,7 +311,7 @@ } .ui.cards > .card > .content > a.header:hover, .ui.card > .content > a.header:hover { - color: #00b2f3; + color: #1e70bf; } /* Meta */ @@ -316,19 +321,19 @@ } .ui.cards > .card .meta > a:not(.ui):hover, .ui.card .meta > a:not(.ui):hover { - color: rgba(0, 0, 0, 0.8); + color: rgba(0, 0, 0, 0.87); } /*-------------- Buttons ---------------*/ -.ui.cards > .card > .buttons:last-child, -.ui.card > .buttons:last-child, -.ui.cards > .card > .button:last-child, -.ui.card > .button:last-child { - margin: 0em 0em -1px; - width: 100%; +.ui.cards > .card > .buttons, +.ui.card > .buttons, +.ui.cards > .card > .button, +.ui.card > .button { + margin: 0px -1px; + width: calc(100% + 2px ); } /*-------------- @@ -354,8 +359,8 @@ .ui.card > .content .star.icon { cursor: pointer; opacity: 0.75; - -webkit-transition: color 0.2s ease; - transition: color 0.2s ease; + -webkit-transition: color 0.1s ease; + transition: color 0.1s ease; } .ui.cards > .card > .content .star.icon:hover, .ui.card > .content .star.icon:hover { @@ -375,8 +380,8 @@ .ui.card > .content .like.icon { cursor: pointer; opacity: 0.75; - -webkit-transition: color 0.2s ease; - transition: color 0.2s ease; + -webkit-transition: color 0.1s ease; + transition: color 0.1s ease; } .ui.cards > .card > .content .like.icon:hover, .ui.card > .content .like.icon:hover { @@ -400,6 +405,7 @@ -webkit-flex-grow: 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; @@ -409,9 +415,8 @@ left: 0em; color: rgba(0, 0, 0, 0.4); box-shadow: none; - -webkit-transition: color 0.2s ease; - transition: color 0.2s ease; - border-top: 1px solid rgba(0, 0, 0, 0.05); + -webkit-transition: color 0.1s ease; + transition: color 0.1s ease; } .ui.cards > .card > .extra a:not(.ui), .ui.card > .extra a:not(.ui) { @@ -419,7 +424,7 @@ } .ui.cards > .card > .extra a:not(.ui):hover, .ui.card > .extra a:not(.ui):hover { - color: #00b2f3; + color: #1e70bf; } @@ -428,6 +433,21 @@ *******************************/ +/*------------------- + Centered +--------------------*/ + +.ui.centered.cards { + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; +} +.ui.centered.card { + margin-left: auto; + margin-right: auto; +} + /*------------------- Fluid --------------------*/ @@ -441,112 +461,187 @@ Link --------------------*/ +.ui.cards a.card, +.ui.link.cards .card, +a.ui.card, +.ui.link.card { + -webkit-transform: none; + -ms-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: ''; + background: #ffffff; border: none; - box-shadow: 0px 3px 0px 0px #bebebf, 0px 0px 0px 1px rgba(39, 41, 43, 0.3); + box-shadow: 0px 1px 3px 0px #bcbdbd, 0px 0px 0px 1px #d4d4d5; + -webkit-transform: translateY(-3px); + -ms-transform: translateY(-3px); + transform: translateY(-3px); } /*------------------- Colors --------------------*/ -.ui.black.cards > .card, -.ui.cards > .black.card, -.ui.black.card { - box-shadow: 0px 3px 0px 0px #1b1c1d, 0px 0px 0px 1px #d4d4d5; -} -.ui.blue.cards > .card, -.ui.cards > .blue.card, -.ui.blue.card { - box-shadow: 0px 3px 0px 0px #3b83c0, 0px 0px 0px 1px #d4d4d5; -} -.ui.green.cards > .card, -.ui.cards > .green.card, -.ui.green.card { - box-shadow: 0px 3px 0px 0px #5bbd72, 0px 0px 0px 1px #d4d4d5; -} -.ui.orange.cards > .card, -.ui.cards > .orange.card, -.ui.orange.card { - box-shadow: 0px 3px 0px 0px #e07b53, 0px 0px 0px 1px #d4d4d5; -} -.ui.pink.cards > .card, -.ui.cards > .pink.card, -.ui.pink.card { - box-shadow: 0px 3px 0px 0px #d9499a, 0px 0px 0px 1px #d4d4d5; -} -.ui.purple.cards > .card, -.ui.cards > .purple.card, -.ui.purple.card { - box-shadow: 0px 3px 0px 0px #564f8a, 0px 0px 0px 1px #d4d4d5; -} + +/* Red */ .ui.red.cards > .card, .ui.cards > .red.card, .ui.red.card { - box-shadow: 0px 3px 0px 0px #d95c5c, 0px 0px 0px 1px #d4d4d5; -} -.ui.teal.cards > .card, -.ui.cards > .teal.card, -.ui.teal.card { - box-shadow: 0px 3px 0px 0px #00b5ad, 0px 0px 0px 1px #d4d4d5; -} -.ui.yellow.cards > .card, -.ui.cards > .yellow.card, -.ui.yellow.card { - box-shadow: 0px 3px 0px 0px #f2c61f, 0px 0px 0px 1px #d4d4d5; -} - -/* Hover */ -.ui.black.cards > .card:hover, -.ui.cards > .black.card:hover, -.ui.black.card:hover { - box-shadow: 0px 3px 0px 0px #1b1c1d, 0px 0px 0px 1px #d4d4d5; -} -.ui.blue.cards > .card:hover, -.ui.cards > .blue.card:hover, -.ui.blue.card:hover { - box-shadow: 0px 3px 0px 0px #458ac6, 0px 0px 0px 1px #d4d4d5; -} -.ui.green.cards > .card:hover, -.ui.cards > .green.card:hover, -.ui.green.card:hover { - box-shadow: 0px 3px 0px 0px #66c17b, 0px 0px 0px 1px #d4d4d5; -} -.ui.orange.cards > .card:hover, -.ui.cards > .orange.card:hover, -.ui.orange.card:hover { - box-shadow: 0px 3px 0px 0px #e28560, 0px 0px 0px 1px #d4d4d5; -} -.ui.pink.cards > .card:hover, -.ui.cards > .pink.card:hover, -.ui.pink.card:hover { - box-shadow: 0px 3px 0px 0px #dc56a1, 0px 0px 0px 1px #d4d4d5; -} -.ui.purple.cards > .card:hover, -.ui.cards > .purple.card:hover, -.ui.purple.card:hover { - box-shadow: 0px 3px 0px 0px #5c5594, 0px 0px 0px 1px #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 { - box-shadow: 0px 3px 0px 0px #dc6868, 0px 0px 0px 1px #d4d4d5; + box-shadow: 0px 0px 0px 1px #d4d4d5, 0px 2px 0px 0px #d01919, 0px 1px 3px 0px #bcbdbd; } -.ui.teal.cards > .card:hover, -.ui.cards > .teal.card:hover, -.ui.teal.card:hover { - box-shadow: 0px 3px 0px 0px #00c4bc, 0px 0px 0px 1px #d4d4d5; + +/* Orange */ +.ui.orange.cards > .card, +.ui.cards > .orange.card, +.ui.orange.card { + 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 { + 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 { + 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 { - box-shadow: 0px 3px 0px 0px #f3ca2d, 0px 0px 0px 1px #d4d4d5; + 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 { + 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 { + 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 { + 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 { + 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 { + 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 { + 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 { + 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 { + 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 { + 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 { + 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 { + 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 { + 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 { + 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 { + 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 { + 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 { + 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 { + 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 { + 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 { + 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 { + box-shadow: 0px 0px 0px 1px #d4d4d5, 0px 2px 0px 0px #27292a, 0px 1px 3px 0px #bcbdbd; } /*-------------- @@ -565,120 +660,84 @@ a.ui.card:hover, margin-right: -1em; } .ui.two.cards > .card { - width: -webkit-calc( 50% - 2em ); width: calc( 50% - 2em ); margin-left: 1em; margin-right: 1em; } -.ui.two.cards > .card:nth-child(2n+1) { - clear: left; -} .ui.three.cards { margin-left: -1em; margin-right: -1em; } .ui.three.cards > .card { - width: -webkit-calc( 33.33333333% - 2em ); width: calc( 33.33333333% - 2em ); margin-left: 1em; margin-right: 1em; } -.ui.three.cards > .card:nth-child(3n+1) { - clear: left; -} .ui.four.cards { margin-left: -0.75em; margin-right: -0.75em; } .ui.four.cards > .card { - width: -webkit-calc( 25% - 1.5em ); width: calc( 25% - 1.5em ); margin-left: 0.75em; margin-right: 0.75em; } -.ui.four.cards > .card:nth-child(4n+1) { - clear: left; -} .ui.five.cards { margin-left: -0.75em; margin-right: -0.75em; } .ui.five.cards > .card { - width: -webkit-calc( 20% - 1.5em ); width: calc( 20% - 1.5em ); margin-left: 0.75em; margin-right: 0.75em; } -.ui.five.cards > .card:nth-child(5n+1) { - clear: left; -} .ui.six.cards { margin-left: -0.75em; margin-right: -0.75em; } .ui.six.cards > .card { - width: -webkit-calc( 16.66666667% - 1.5em ); width: calc( 16.66666667% - 1.5em ); margin-left: 0.75em; margin-right: 0.75em; } -.ui.six.cards > .card:nth-child(6n+1) { - clear: left; -} .ui.seven.cards { margin-left: -0.5em; margin-right: -0.5em; } .ui.seven.cards > .card { - width: -webkit-calc( 14.28571429% - 1em ); width: calc( 14.28571429% - 1em ); margin-left: 0.5em; margin-right: 0.5em; } -.ui.seven.cards > .card:nth-child(7n+1) { - clear: left; -} .ui.eight.cards { margin-left: -0.5em; margin-right: -0.5em; } .ui.eight.cards > .card { - width: -webkit-calc( 12.5% - 1em ); width: calc( 12.5% - 1em ); margin-left: 0.5em; margin-right: 0.5em; font-size: 11px; } -.ui.eight.cards > .card:nth-child(8n+1) { - clear: left; -} .ui.nine.cards { margin-left: -0.5em; margin-right: -0.5em; } .ui.nine.cards > .card { - width: -webkit-calc( 11.11111111% - 1em ); width: calc( 11.11111111% - 1em ); margin-left: 0.5em; margin-right: 0.5em; font-size: 10px; } -.ui.nine.cards > .card:nth-child(9n+1) { - clear: left; -} .ui.ten.cards { margin-left: -0.5em; margin-right: -0.5em; } .ui.ten.cards > .card { - width: -webkit-calc( 10% - 1em ); width: calc( 10% - 1em ); margin-left: 0.5em; margin-right: 0.5em; } -.ui.ten.cards > .card:nth-child(10n+1) { - clear: left; -} /*------------------- Doubling @@ -701,7 +760,6 @@ a.ui.card:hover, margin-right: -1em; } .ui.three.doubling.cards .card { - width: -webkit-calc( 50% - 2em ); width: calc( 50% - 2em ); margin-left: 1em; margin-right: 1em; @@ -711,7 +769,6 @@ a.ui.card:hover, margin-right: -1em; } .ui.four.doubling.cards .card { - width: -webkit-calc( 50% - 2em ); width: calc( 50% - 2em ); margin-left: 1em; margin-right: 1em; @@ -721,7 +778,6 @@ a.ui.card:hover, margin-right: -1em; } .ui.five.doubling.cards .card { - width: -webkit-calc( 50% - 2em ); width: calc( 50% - 2em ); margin-left: 1em; margin-right: 1em; @@ -731,7 +787,6 @@ a.ui.card:hover, margin-right: -1em; } .ui.six.doubling.cards .card { - width: -webkit-calc( 50% - 2em ); width: calc( 50% - 2em ); margin-left: 1em; margin-right: 1em; @@ -741,7 +796,6 @@ a.ui.card:hover, margin-right: -1em; } .ui.seven.doubling.cards .card { - width: -webkit-calc( 33.33333333% - 2em ); width: calc( 33.33333333% - 2em ); margin-left: 1em; margin-right: 1em; @@ -751,7 +805,6 @@ a.ui.card:hover, margin-right: -1em; } .ui.eight.doubling.cards .card { - width: -webkit-calc( 33.33333333% - 2em ); width: calc( 33.33333333% - 2em ); margin-left: 1em; margin-right: 1em; @@ -761,7 +814,6 @@ a.ui.card:hover, margin-right: -1em; } .ui.nine.doubling.cards .card { - width: -webkit-calc( 33.33333333% - 2em ); width: calc( 33.33333333% - 2em ); margin-left: 1em; margin-right: 1em; @@ -771,7 +823,6 @@ a.ui.card:hover, margin-right: -1em; } .ui.ten.doubling.cards .card { - width: -webkit-calc( 33.33333333% - 2em ); width: calc( 33.33333333% - 2em ); margin-left: 1em; margin-right: 1em; @@ -794,7 +845,6 @@ a.ui.card:hover, margin-right: -1em; } .ui.three.doubling.cards .card { - width: -webkit-calc( 50% - 2em ); width: calc( 50% - 2em ); margin-left: 1em; margin-right: 1em; @@ -804,7 +854,6 @@ a.ui.card:hover, margin-right: -1em; } .ui.four.doubling.cards .card { - width: -webkit-calc( 50% - 2em ); width: calc( 50% - 2em ); margin-left: 1em; margin-right: 1em; @@ -814,7 +863,6 @@ a.ui.card:hover, margin-right: -1em; } .ui.five.doubling.cards .card { - width: -webkit-calc( 33.33333333% - 2em ); width: calc( 33.33333333% - 2em ); margin-left: 1em; margin-right: 1em; @@ -824,7 +872,6 @@ a.ui.card:hover, margin-right: -1em; } .ui.six.doubling.cards .card { - width: -webkit-calc( 33.33333333% - 2em ); width: calc( 33.33333333% - 2em ); margin-left: 1em; margin-right: 1em; @@ -834,7 +881,6 @@ a.ui.card:hover, margin-right: -1em; } .ui.eight.doubling.cards .card { - width: -webkit-calc( 33.33333333% - 2em ); width: calc( 33.33333333% - 2em ); margin-left: 1em; margin-right: 1em; @@ -844,7 +890,6 @@ a.ui.card:hover, margin-right: -0.75em; } .ui.eight.doubling.cards .card { - width: -webkit-calc( 25% - 1.5em ); width: calc( 25% - 1.5em ); margin-left: 0.75em; margin-right: 0.75em; @@ -854,7 +899,6 @@ a.ui.card:hover, margin-right: -0.75em; } .ui.nine.doubling.cards .card { - width: -webkit-calc( 25% - 1.5em ); width: calc( 25% - 1.5em ); margin-left: 0.75em; margin-right: 0.75em; @@ -864,7 +908,6 @@ a.ui.card:hover, margin-right: -0.75em; } .ui.ten.doubling.cards .card { - width: -webkit-calc( 20% - 1.5em ); width: calc( 20% - 1.5em ); margin-left: 0.75em; margin-right: 0.75em; @@ -887,7 +930,6 @@ a.ui.card:hover, height: auto !important; margin: 1em 1em; padding: 0 !important; - width: -webkit-calc( 100% - 2em ) !important; width: calc( 100% - 2em ) !important; } } diff --git a/amiibofindr/static/semantic/components/card.min.css b/amiibofindr/static/semantic/components/card.min.css index 52f5ce6..4fe26da 100755 --- a/amiibofindr/static/semantic/components/card.min.css +++ b/amiibofindr/static/semantic/components/card.min.css @@ -1,10 +1,10 @@ /*! - * # Semantic UI 1.12.3 - Item + * # Semantic UI 2.1.3 - Item * http://github.com/semantic-org/semantic-ui/ * * - * Copyright 2014 Contributorss + * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * - */.ui.card,.ui.cards>.card{max-width:100%;position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;width:290px;min-height:0;background:#fff;padding:0;border:none;border-radius:.2857rem;box-shadow:0 3px 0 0 #d4d4d5,0 0 0 1px #d4d4d5;-webkit-transition:box-shadow .2s ease;transition:box-shadow .2s 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:-webkit-flex;display:-ms-flexbox;display:flex;margin:-.875em -.5em;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.ui.cards>.card{display:-webkit-box;display:-webkit-flex;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:.2857rem .2857rem 0 0!important}.ui.card>:last-child,.ui.cards>.card>:last-child{border-radius:0 0 .2857rem .2857rem!important}.ui.card>.image,.ui.cards>.card>.image{display:block;-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;position:relative;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:.2857rem .2857rem 0 0;border:none}.ui.card>.image:only-child>img,.ui.cards>.card>.image:only-child>img{border-radius:.2857rem}.ui.card>.content,.ui.cards>.card>.content{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;background:0 0;margin:0;padding:1em;box-shadow:none;font-size:1em;border:none;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:0;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.2em;margin-top:-.165em;line-height:1.33em}.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:auto}.ui.card .avatar img,.ui.card img.avatar,.ui.cards>.card .avatar img,.ui.cards>.card img.avatar{width:2.5em;height:2.5em;border-radius:500rem}.ui.card>.content>.description,.ui.cards>.card>.content>.description{clear:both;color:rgba(0,0,0,.5)}.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:.9em;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 .2s ease;transition:color .2s 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:#00b2f3}.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,.8)}.ui.card>.button:last-child,.ui.card>.buttons:last-child,.ui.cards>.card>.button:last-child,.ui.cards>.card>.buttons:last-child{margin:0 0 -1px;width:100%}.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 .2s ease;transition:color .2s 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 .2s ease;transition:color .2s 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;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0;position:static;background:0 0;width:auto;margin:0;padding:.75em 1em;top:0;left:0;color:rgba(0,0,0,.4);box-shadow:none;-webkit-transition:color .2s ease;transition:color .2s ease;border-top:1px solid rgba(0,0,0,.05)}.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:#00b2f3}.ui.fluid.card{width:100%;max-width:9999px}.ui.cards a.card:hover,.ui.link.card:hover,.ui.link.cards .card:hover,a.ui.card:hover{cursor:pointer;z-index:5;background:0 0;border:none;box-shadow:0 3px 0 0 #bebebf,0 0 0 1px rgba(39,41,43,.3)}.ui.black.card,.ui.black.cards>.card,.ui.cards>.black.card{box-shadow:0 3px 0 0 #1b1c1d,0 0 0 1px #d4d4d5}.ui.blue.card,.ui.blue.cards>.card,.ui.cards>.blue.card{box-shadow:0 3px 0 0 #3b83c0,0 0 0 1px #d4d4d5}.ui.cards>.green.card,.ui.green.card,.ui.green.cards>.card{box-shadow:0 3px 0 0 #5bbd72,0 0 0 1px #d4d4d5}.ui.cards>.orange.card,.ui.orange.card,.ui.orange.cards>.card{box-shadow:0 3px 0 0 #e07b53,0 0 0 1px #d4d4d5}.ui.cards>.pink.card,.ui.pink.card,.ui.pink.cards>.card{box-shadow:0 3px 0 0 #d9499a,0 0 0 1px #d4d4d5}.ui.cards>.purple.card,.ui.purple.card,.ui.purple.cards>.card{box-shadow:0 3px 0 0 #564f8a,0 0 0 1px #d4d4d5}.ui.cards>.red.card,.ui.red.card,.ui.red.cards>.card{box-shadow:0 3px 0 0 #d95c5c,0 0 0 1px #d4d4d5}.ui.cards>.teal.card,.ui.teal.card,.ui.teal.cards>.card{box-shadow:0 3px 0 0 #00b5ad,0 0 0 1px #d4d4d5}.ui.cards>.yellow.card,.ui.yellow.card,.ui.yellow.cards>.card{box-shadow:0 3px 0 0 #f2c61f,0 0 0 1px #d4d4d5}.ui.black.card:hover,.ui.black.cards>.card:hover,.ui.cards>.black.card:hover{box-shadow:0 3px 0 0 #1b1c1d,0 0 0 1px #d4d4d5}.ui.blue.card:hover,.ui.blue.cards>.card:hover,.ui.cards>.blue.card:hover{box-shadow:0 3px 0 0 #458ac6,0 0 0 1px #d4d4d5}.ui.cards>.green.card:hover,.ui.green.card:hover,.ui.green.cards>.card:hover{box-shadow:0 3px 0 0 #66c17b,0 0 0 1px #d4d4d5}.ui.cards>.orange.card:hover,.ui.orange.card:hover,.ui.orange.cards>.card:hover{box-shadow:0 3px 0 0 #e28560,0 0 0 1px #d4d4d5}.ui.cards>.pink.card:hover,.ui.pink.card:hover,.ui.pink.cards>.card:hover{box-shadow:0 3px 0 0 #dc56a1,0 0 0 1px #d4d4d5}.ui.cards>.purple.card:hover,.ui.purple.card:hover,.ui.purple.cards>.card:hover{box-shadow:0 3px 0 0 #5c5594,0 0 0 1px #d4d4d5}.ui.cards>.red.card:hover,.ui.red.card:hover,.ui.red.cards>.card:hover{box-shadow:0 3px 0 0 #dc6868,0 0 0 1px #d4d4d5}.ui.cards>.teal.card:hover,.ui.teal.card:hover,.ui.teal.cards>.card:hover{box-shadow:0 3px 0 0 #00c4bc,0 0 0 1px #d4d4d5}.ui.cards>.yellow.card:hover,.ui.yellow.card:hover,.ui.yellow.cards>.card:hover{box-shadow:0 3px 0 0 #f3ca2d,0 0 0 1px #d4d4d5}.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:-webkit-calc(50% - 2em);width:calc(50% - 2em);margin-left:1em;margin-right:1em}.ui.two.cards>.card:nth-child(2n+1){clear:left}.ui.three.cards{margin-left:-1em;margin-right:-1em}.ui.three.cards>.card{width:-webkit-calc(33.33333333% - 2em);width:calc(33.33333333% - 2em);margin-left:1em;margin-right:1em}.ui.three.cards>.card:nth-child(3n+1){clear:left}.ui.four.cards{margin-left:-.75em;margin-right:-.75em}.ui.four.cards>.card{width:-webkit-calc(25% - 1.5em);width:calc(25% - 1.5em);margin-left:.75em;margin-right:.75em}.ui.four.cards>.card:nth-child(4n+1){clear:left}.ui.five.cards{margin-left:-.75em;margin-right:-.75em}.ui.five.cards>.card{width:-webkit-calc(20% - 1.5em);width:calc(20% - 1.5em);margin-left:.75em;margin-right:.75em}.ui.five.cards>.card:nth-child(5n+1){clear:left}.ui.six.cards{margin-left:-.75em;margin-right:-.75em}.ui.six.cards>.card{width:-webkit-calc(16.66666667% - 1.5em);width:calc(16.66666667% - 1.5em);margin-left:.75em;margin-right:.75em}.ui.six.cards>.card:nth-child(6n+1){clear:left}.ui.seven.cards{margin-left:-.5em;margin-right:-.5em}.ui.seven.cards>.card{width:-webkit-calc(14.28571429% - 1em);width:calc(14.28571429% - 1em);margin-left:.5em;margin-right:.5em}.ui.seven.cards>.card:nth-child(7n+1){clear:left}.ui.eight.cards{margin-left:-.5em;margin-right:-.5em}.ui.eight.cards>.card{width:-webkit-calc(12.5% - 1em);width:calc(12.5% - 1em);margin-left:.5em;margin-right:.5em;font-size:11px}.ui.eight.cards>.card:nth-child(8n+1){clear:left}.ui.nine.cards{margin-left:-.5em;margin-right:-.5em}.ui.nine.cards>.card{width:-webkit-calc(11.11111111% - 1em);width:calc(11.11111111% - 1em);margin-left:.5em;margin-right:.5em;font-size:10px}.ui.nine.cards>.card:nth-child(9n+1){clear:left}.ui.ten.cards{margin-left:-.5em;margin-right:-.5em}.ui.ten.cards>.card{width:-webkit-calc(10% - 1em);width:calc(10% - 1em);margin-left:.5em;margin-right:.5em}.ui.ten.cards>.card:nth-child(10n+1){clear:left}@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:-webkit-calc(50% - 2em);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:-webkit-calc(50% - 2em);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:-webkit-calc(50% - 2em);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:-webkit-calc(50% - 2em);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:-webkit-calc(33.33333333% - 2em);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:-webkit-calc(33.33333333% - 2em);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:-webkit-calc(33.33333333% - 2em);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:-webkit-calc(33.33333333% - 2em);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:-webkit-calc(50% - 2em);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:-webkit-calc(50% - 2em);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:-webkit-calc(33.33333333% - 2em);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:-webkit-calc(33.33333333% - 2em);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:-webkit-calc(25% - 1.5em);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:-webkit-calc(25% - 1.5em);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:-webkit-calc(20% - 1.5em);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;padding:0!important;width:-webkit-calc(100% - 2em)!important;width:calc(100% - 2em)!important}}.ui.cards>.card{font-size:1em} \ No newline at end of file + */.ui.card,.ui.cards>.card{max-width:100%;position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;width:290px;min-height:0;background:#fff;padding:0;border:none;border-radius:.28571429rem;box-shadow:0 1px 3px 0 #d4d4d5,0 0 0 1px #d4d4d5;-webkit-transition:box-shadow .1s ease,-webkit-transform .1s ease;transition:box-shadow .1s ease,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:-webkit-flex;display:-ms-flexbox;display:flex;margin:-.875em -.5em;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.ui.cards>.card{display:-webkit-box;display:-webkit-flex;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;-webkit-flex:0 0 auto;-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;-webkit-flex-grow: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;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.2857em}.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;-webkit-flex-grow: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;padding:.75em 1em;top:0;left:0;color:rgba(0,0,0,.4);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.centered.cards{-webkit-box-pack:center;-webkit-justify-content: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;-ms-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;box-shadow:0 1px 3px 0 #bcbdbd,0 0 0 1px #d4d4d5;-webkit-transform:translateY(-3px);-ms-transform:translateY(-3px);transform:translateY(-3px)}.ui.cards>.red.card,.ui.red.card,.ui.red.cards>.card{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{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{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{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{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{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{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{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{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{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{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{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{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{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{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{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{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{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{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{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{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{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{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{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{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{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:-.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;padding:0!important;width:calc(100% - 2em)!important}}.ui.cards>.card{font-size:1em} \ No newline at end of file diff --git a/amiibofindr/static/semantic/components/checkbox.css b/amiibofindr/static/semantic/components/checkbox.css index 8ae23a7..2e73472 100755 --- a/amiibofindr/static/semantic/components/checkbox.css +++ b/amiibofindr/static/semantic/components/checkbox.css @@ -1,9 +1,9 @@ /*! - * # Semantic UI 1.12.3 - Checkbox + * # Semantic UI 2.1.3 - Checkbox * http://github.com/semantic-org/semantic-ui/ * * - * Copyright 2014 Contributors + * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * @@ -22,23 +22,29 @@ .ui.checkbox { position: relative; display: inline-block; - min-height: 17px; - font-size: 1rem; - line-height: 15px; - min-width: 17px; -webkit-backface-visibility: hidden; backface-visibility: hidden; outline: none; - vertical-align: middle; + 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: -1; + z-index: 3; + width: 17px; + height: 17px; } /*-------------- @@ -47,27 +53,25 @@ .ui.checkbox .box, .ui.checkbox label { + cursor: auto; + position: relative; display: block; - cursor: pointer; - padding-left: 1.75em; + padding-left: 1.85714em; outline: none; -} -.ui.checkbox label { font-size: 1em; } .ui.checkbox .box:before, .ui.checkbox label:before { position: absolute; - line-height: 1; + top: 0px; + left: 0px; width: 17px; height: 17px; - top: 0em; - left: 0em; content: ''; background: #ffffff; - border-radius: 0.25em; - -webkit-transition: background-color 0.3s ease, border 0.3s ease, box-shadow 0.3s ease; - transition: background-color 0.3s ease, border 0.3s ease, box-shadow 0.3s ease; + border-radius: 0.21428571rem; + -webkit-transition: border 0.1s ease, opacity 0.1s ease, -webkit-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; border: 1px solid #d4d4d5; } @@ -78,16 +82,16 @@ .ui.checkbox .box:after, .ui.checkbox label:after { position: absolute; + font-size: 14px; top: 0px; left: 0px; - line-height: 17px; width: 17px; height: 17px; text-align: center; opacity: 0; - color: rgba(0, 0, 0, 0.8); - -webkit-transition: all 0.1s ease; - transition: all 0.1s ease; + color: rgba(0, 0, 0, 0.87); + -webkit-transition: border 0.1s ease, opacity 0.1s ease, -webkit-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; } /*-------------- @@ -98,14 +102,9 @@ /* Inside */ .ui.checkbox label, .ui.checkbox + label { - cursor: pointer; - color: rgba(0, 0, 0, 0.8); - -webkit-transition: color 0.2s ease; - transition: color 0.2s ease; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; + color: rgba(0, 0, 0, 0.87); + -webkit-transition: color 0.1s ease; + transition: color 0.1s ease; } /* Outside */ @@ -126,7 +125,7 @@ .ui.checkbox .box:hover::before, .ui.checkbox label:hover::before { background: #ffffff; - border: 1px solid rgba(39, 41, 43, 0.3); + border-color: rgba(34, 36, 38, 0.35); } .ui.checkbox label:hover, .ui.checkbox + label:hover { @@ -139,39 +138,80 @@ .ui.checkbox .box:active::before, .ui.checkbox label:active::before { - background: #f5f5f5; - border: 1px solid 1px solid rgba(39, 41, 43, 0.3); + background: #f9fafb; + border-color: rgba(34, 36, 38, 0.35); } -.ui.checkbox input[type="checkbox"]:active ~ label, -.ui.checkbox input[type="radio"]:active ~ label { - color: rgba(0, 0, 0, 0.8); +.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 + Focus ---------------*/ -.ui.checkbox input[type="checkbox"]:focus ~ .box:before, -.ui.checkbox input[type="checkbox"]:focus ~ label:before, -.ui.checkbox input[type="radio"]:focus ~ .box:before, -.ui.checkbox input[type="radio"]:focus ~ label:before { - background: #f5f5f5; - border: 1px solid 1px solid rgba(39, 41, 43, 0.3); +.ui.checkbox input:focus ~ .box:before, +.ui.checkbox input:focus ~ label:before { + background: #ffffff; + border-color: #96c8da; } -.ui.checkbox input[type="checkbox"]:focus ~ label, -.ui.checkbox input[type="radio"]:focus ~ label { - color: rgba(0, 0, 0, 0.8); +.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[type="checkbox"]:checked ~ .box:after, -.ui.checkbox input[type="checkbox"]:checked ~ label:after, -.ui.checkbox input[type="radio"]:checked ~ .box:after, -.ui.checkbox input[type="radio"]:checked ~ label:after { +.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:indeterminate ~ .box:before, +.ui.checkbox input:indeterminate ~ label:before { + background: #ffffff; + border-color: rgba(34, 36, 38, 0.35); +} +.ui.checkbox input:indeterminate ~ .box:after, +.ui.checkbox input:indeterminate ~ label:after { + opacity: 1; + color: rgba(0, 0, 0, 0.95); +} + +/*-------------- + Active Focus +---------------*/ + +.ui.checkbox input:indeterminate:focus ~ .box:before, +.ui.checkbox input: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:indeterminate:focus ~ .box:after, +.ui.checkbox input: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); } /*-------------- @@ -189,15 +229,33 @@ .ui.disabled.checkbox .box:after, .ui.disabled.checkbox label, -.ui.checkbox input[type="checkbox"][disabled] ~ .box:after, -.ui.checkbox input[type="checkbox"][disabled] ~ label, -.ui.checkbox input[type="radio"][disabled] ~ .box:after, -.ui.checkbox input[type="radio"][disabled] ~ label { +.ui.checkbox input[disabled] ~ .box:after, +.ui.checkbox input[disabled] ~ label { cursor: default; 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 @@ -209,44 +267,85 @@ ---------------*/ .ui.radio.checkbox { - min-height: 14px; + 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 { - width: 14px; - height: 14px; - border-radius: 500rem; - top: 1px; - left: 0px; + content: ''; -webkit-transform: none; -ms-transform: none; transform: none; + width: 15px; + height: 15px; + border-radius: 500rem; + top: 1px; + left: 0px; } -/* Circle */ +/* Bullet */ .ui.radio.checkbox .box:after, .ui.radio.checkbox label:after { border: none; - width: 14px; - height: 14px; - line-height: 14px; - top: 1px; - left: 0px; - font-size: 9px; + content: '' !important; + width: 15px; + height: 15px; + line-height: 15px; } /* Radio Checkbox */ .ui.radio.checkbox .box:after, .ui.radio.checkbox label:after { - width: 14px; - height: 14px; + top: 1px; + left: 0px; + width: 15px; + height: 15px; border-radius: 500rem; - -webkit-transform: scale(0.42857143); - -ms-transform: scale(0.42857143); - transform: scale(0.42857143); - background-color: rgba(0, 0, 0, 0.8); + -webkit-transform: scale(0.46666667); + -ms-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); } /*-------------- @@ -254,9 +353,16 @@ ---------------*/ .ui.slider.checkbox { - cursor: pointer; 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; @@ -267,25 +373,22 @@ /* Line */ .ui.slider.checkbox .box:before, .ui.slider.checkbox label:before { - cursor: pointer; display: block; position: absolute; content: ''; - top: 0.4rem; + border: none !important; left: 0em; z-index: 1; - border: none !important; + top: 0.4rem; background-color: rgba(0, 0, 0, 0.05); width: 3.5rem; - height: 0.25rem; + height: 0.21428571rem; -webkit-transform: none; -ms-transform: none; transform: none; border-radius: 500rem; - -webkit-transition: background 0.3s ease - ; - transition: background 0.3s ease - ; + -webkit-transition: background 0.3s ease; + transition: background 0.3s ease; } /* Handle */ @@ -294,11 +397,11 @@ 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: ''; + content: '' !important; opacity: 1; z-index: 2; border: none; - box-shadow: 0px 1px 2px 0 rgba(0, 0, 0, 0.05), 0px 0px 0px 1px rgba(39, 41, 43, 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; @@ -307,18 +410,14 @@ -ms-transform: none; transform: none; border-radius: 500rem; - -webkit-transition: left 0.3s ease 0s - ; - transition: left 0.3s ease 0s - ; + -webkit-transition: left 0.3s ease; + transition: left 0.3s ease; } /* Focus */ -.ui.slider.checkbox input[type="checkbox"]:focus ~ .box:before, -.ui.slider.checkbox input[type="checkbox"]:focus ~ label:before, -.ui.slider.checkbox input[type="radio"]:focus ~ .box:before, -.ui.slider.checkbox input[type="radio"]:focus ~ label:before { - background-color: rgba(0, 0, 0, 0.1); +.ui.slider.checkbox input:focus ~ .box:before, +.ui.slider.checkbox input:focus ~ label:before { + background-color: rgba(0, 0, 0, 0.15); border: none; } @@ -329,42 +428,53 @@ } .ui.slider.checkbox .box:hover::before, .ui.slider.checkbox label:hover::before { - background: rgba(0, 0, 0, 0.1); + background: rgba(0, 0, 0, 0.15); } /* Active */ -.ui.slider.checkbox input[type="checkbox"]:checked ~ .box, -.ui.slider.checkbox input[type="checkbox"]:checked ~ label, -.ui.slider.checkbox input[type="radio"]:checked ~ .box, -.ui.slider.checkbox input[type="radio"]:checked ~ label { - color: rgba(0, 0, 0, 0.8); +.ui.slider.checkbox input:checked ~ .box, +.ui.slider.checkbox input:checked ~ label { + color: rgba(0, 0, 0, 0.95) !important; } -.ui.slider.checkbox input[type="checkbox"]:checked ~ .box:before, -.ui.slider.checkbox input[type="checkbox"]:checked ~ label:before, -.ui.slider.checkbox input[type="radio"]:checked ~ .box:before, -.ui.slider.checkbox input[type="radio"]:checked ~ label:before { - background-color: rgba(0, 0, 0, 0.1); +.ui.slider.checkbox input:checked ~ .box:before, +.ui.slider.checkbox input:checked ~ label:before { + background-color: #545454 !important; } -.ui.slider.checkbox input[type="checkbox"]:checked ~ .box:after, -.ui.slider.checkbox input[type="checkbox"]:checked ~ label:after, -.ui.slider.checkbox input[type="radio"]:checked ~ .box:after, -.ui.slider.checkbox input[type="radio"]:checked ~ label:after { +.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 { - cursor: pointer; 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.8); + color: rgba(0, 0, 0, 0.87); } .ui.toggle.checkbox label { padding-top: 0.15em; @@ -373,14 +483,16 @@ /* Switch */ .ui.toggle.checkbox .box:before, .ui.toggle.checkbox label:before { - cursor: pointer; display: block; position: absolute; content: ''; - top: 0rem; z-index: 1; + -webkit-transform: none; + -ms-transform: none; + transform: none; border: none; - background-color: rgba(0, 0, 0, 0.05); + top: 0rem; + background: rgba(0, 0, 0, 0.05); width: 3.5rem; height: 1.5rem; border-radius: 500rem; @@ -392,64 +504,60 @@ 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: ''; + content: '' !important; opacity: 1; z-index: 2; border: none; - box-shadow: 0px 1px 2px 0 rgba(0, 0, 0, 0.05), 0px 0px 0px 1px rgba(39, 41, 43, 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 0s, - left 0.3s ease 0s - ; - transition: background 0.3s ease 0s, - left 0.3s ease 0s - ; + -webkit-transition: background 0.3s ease, left 0.3s ease; + transition: background 0.3s ease, left 0.3s ease; } -.ui.toggle.checkbox input[type="checkbox"] ~ .box:after, -.ui.toggle.checkbox input[type="checkbox"] ~ label:after, -.ui.toggle.checkbox input[type="radio"] ~ .box:after, -.ui.toggle.checkbox input[type="radio"] ~ label:after { +.ui.toggle.checkbox input ~ .box:after, +.ui.toggle.checkbox input ~ label:after { left: -0.05rem; } /* Focus */ -.ui.toggle.checkbox input[type="checkbox"]:focus ~ .box:before, -.ui.toggle.checkbox input[type="checkbox"]:focus ~ label:before, -.ui.toggle.checkbox input[type="radio"]:focus ~ .box:before, -.ui.toggle.checkbox input[type="radio"]:focus ~ label:before { - background-color: rgba(0, 0, 0, 0.1); +.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.1); + background-color: rgba(0, 0, 0, 0.15); border: none; } /* Active */ -.ui.toggle.checkbox input[type="checkbox"]:checked ~ .box, -.ui.toggle.checkbox input[type="checkbox"]:checked ~ label, -.ui.toggle.checkbox input[type="radio"]:checked ~ .box, -.ui.toggle.checkbox input[type="radio"]:checked ~ label { - color: #5bbd72; +.ui.toggle.checkbox input:checked ~ .box, +.ui.toggle.checkbox input:checked ~ label { + color: rgba(0, 0, 0, 0.95) !important; } -.ui.toggle.checkbox input[type="checkbox"]:checked ~ .box:before, -.ui.toggle.checkbox input[type="checkbox"]:checked ~ label:before, -.ui.toggle.checkbox input[type="radio"]:checked ~ .box:before, -.ui.toggle.checkbox input[type="radio"]:checked ~ label:before { - background-color: #5bbd72; +.ui.toggle.checkbox input:checked ~ .box:before, +.ui.toggle.checkbox input:checked ~ label:before { + background-color: #2185d0 !important; } -.ui.toggle.checkbox input[type="checkbox"]:checked ~ .box:after, -.ui.toggle.checkbox input[type="checkbox"]:checked ~ label:after, -.ui.toggle.checkbox input[type="radio"]:checked ~ .box:after, -.ui.toggle.checkbox input[type="radio"]:checked ~ label:after { - left: 2.05rem; +.ui.toggle.checkbox input:checked ~ .box:after, +.ui.toggle.checkbox input:checked ~ label:after { + left: 2.15rem; +} + +/* 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; } @@ -482,28 +590,31 @@ @font-face { font-family: 'Checkbox'; - 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,d09GRgABAAAAAAoUAA4AAAAAEPQAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABPUy8yAAABRAAAAEQAAABWPeFJAWNtYXAAAAGIAAAAOgAAAUrQEhm3Y3Z0IAAAAcQAAAAUAAAAHAZJ/5RmcGdtAAAB2AAABPkAAAmRigp4O2dhc3AAAAbUAAAACAAAAAgAAAAQZ2x5ZgAABtwAAACuAAAAtt9nBHZoZWFkAAAHjAAAADUAAAA2ASs8e2hoZWEAAAfEAAAAIAAAACQHUwNNaG10eAAAB+QAAAAMAAAADAspAABsb2NhAAAH8AAAAAgAAAAIADgAW21heHAAAAf4AAAAIAAAACAApgm8bmFtZQAACBgAAAF3AAACzcydGhxwb3N0AAAJkAAAACoAAAA7rr1AmHByZXAAAAm8AAAAVgAAAFaSoZr/eJxjYGTewTiBgZWBg6mKaQ8DA0MPhGZ8wGDIyMTAwMTAysyAFQSkuaYwOLxgeMHIHPQ/iyGKmZvBHyjMCJIDAPe9C2B4nGNgYGBmgGAZBkYGEHAB8hjBfBYGDSDNBqQZGZgYGF4w/v8PUvCCAURLMELVAwEjG8OIBwBk5AavAAB4nGNgQANGDEbM3P83gjAAELQD4XicnVXZdtNWFJU8ZHASOmSgoA7X3DhQ68qEKRgwaSrFdiEdHAitBB2kDHTkncc+62uOQrtWH/m07n09JLR0rbYsls++R1tn2DrnRhwjKn0aiGvUoZKXA6msPZZK90lc13Uvj5UMBnFdthJPSZuonSRKat3sUC7xWOsqWSdYJ+PlIFZPVZ5noAziFB5lSUQbRBuplyZJ4onjJ4kWZxAfJUkgJaMQp9LIUEI1GsRS1aFM6dCr1xNx00DKRqMedVhU90PFJ8c1p9SsA0YqVznCFevVRr4bpwMve5DEOsGzrYcxHnisfpQqkIqR6cg/dkpOlIaBVHHUoVbi6DCTX/eRTCrNQKaMYkWl7oG43f102xYxPXQ6vi5KlUaqurnOKJrt0fGogygP2cbppNzQ2fbw5RlTVKtdcbPtQGYNXErJbHSfRAAdJlLj6QFONZwCqRn1R8XZ588BEslclKo8VTKHegOZMzt7cTHtbiersnCknwcyb3Z2452HQ6dXh3/R+hdM4cxHj+Jifj5C+lBqfiJOJKVGWMzyp4YfcVcgQrkxiAsXyuBThDl0RdrZZl3jtTH2hs/5SqlhPQna6KP4fgr9TiQrHGdRo/VInM1j13Wt3GdQS7W7Fzsyr0OVIu7vCwuuM+eEYZ4WC1VfnvneBTT/Bohn/EDeNIVL+5YpSrRvm6JMu2iKCu0SVKVdNsUU7YoppmnPmmKG9h1TzNKeMzLj/8vc55H7HN7xkJv2XeSmfQ+5ad9HbtoPkJtWITdtHblpLyA3rUZu2lWjOnYEGgZpF1IVQdA0svph3Fab9UDWjDR8aWDyLmLI+upER521tcofxX914gsHcmmip7siF5viLq/bFj483e6rj5pG3bDV+MaR8jAeRnocmtBZ+c3hv+1N3S6a7jKqMugBFUwKwABl7UAC0zrbCaT1mqf48gdgXIZ4zkpDtVSfO4am7+V5X/exOfG+x+3GLrdcd3kJWdYNcmP28N9SZKrrH+UtrVQnR6wrJ49VaxhDKrwour6SlHu0tRu/KKmy8l6U1srnk5CbPYMbQlu27mGwI0xpyiUeXlOlKD3UUo6yQyxvKco84JSLC1qGxLgOdQ9qa8TpoXoYGwshhqG0vRBwSCldFd+0ynfxHqtr2Oj4xRXh6XpyEhGf4ir7UfBU10b96A7avGbdMoMpVaqn+4xPsa/b9lFZaaSOsxe3VAfXNOsaORXTT+Rr4HRvOGjdAz1UfDRBI1U1x+jGKGM0ljXl3wR0MVZ+w2jVYvs93E+dpFWsuUuY7JsT9+C0u/0q+7WcW0bW/dcGvW3kip8jMb8tCvw7B2K3ZA3UO5OBGAvIWdAYxhYmdxiug23EbfY/Jqf/34aFRXJXOxq7eerD1ZNRJXfZ8rjLTXZZ16M2R9VOGvsIjS0PN+bY4XIstsRgQbb+wf8x7gF3aVEC4NDIZZiI2nShnurh6h6rsW04VxIBds2x43QAegAuQd8cu9bzCYD13CPnLsB9cgh2yCH4lByCz8i5BfA5OQRfkEMwIIdgl5w7AA/IIXhIDsEeOQSPyNkE+JIcgq/IIYjJIUjIuQ3wmByCJ+QQfE0OwTdGrk5k/pYH2QD6zqKbQKmdGhzaOGRGrk3Y+zxY9oFFZB9aROqRkesT6lMeLPV7i0j9wSJSfzRyY0L9iQdL/dkiUn+xiNRnxpeZIymvDp7zjg7+BJfqrV4AAAAAAQAB//8AD3icY2BkAALmJUwzGEQZZBwk+RkZGBmdGJgYmbIYgMwsoGSiiLgIs5A2owg7I5uSOqOaiT2jmZE8I5gQY17C/09BQEfg3yt+fh8gvYQxD0j68DOJiQn8U+DnZxQDcQUEljLmCwBpBgbG/3//b2SOZ+Zm4GEQcuAH2sblDLSEm8FFVJhJEGgLH6OSHpMdo5EcI3Nk0bEXJ/LYqvZ82VXHGFd6pKTkyCsQwQAAq+QkqAAAeJxjYGRgYADiw5VSsfH8Nl8ZuJlfAEUYzpvO6IXQCb7///7fyLyEmRvI5WBgAokCAFb/DJAAAAB4nGNgZGBgDvqfxRDF/IKB4f935iUMQBEUwAwAi5YFpgPoAAAD6AAAA1kAAAAAAAAAOABbAAEAAAADABYAAQAAAAAAAgAGABMAbgAAAC0JkQAAAAB4nHWQy2rCQBSG//HSi0JbWui2sypKabxgN4IgWHTTbqS4LTHGJBIzMhkFX6Pv0IfpS/RZ+puMpShNmMx3vjlz5mQAXOMbAvnzxJGzwBmjnAs4Rc9ykf7Zcon8YrmMKt4sn9C/W67gAYHlKm7wwQqidM5ogU/LAlfi0nIBF+LOcpH+0XKJ3LNcxq14tXxC71muYCJSy1Xci6+BWm11FIRG1gZ12W62OnK6lYoqStxYumsTKp3KvpyrxPhxrBxPLfc89oN17Op9uJ8nvk4jlciW09yrkZ/42jX+bFc93QRtY+ZyrtVSDm2GXGm18D3jhMasuo3G3/MwgMIKW2hEvKoQBhI12jrnNppooUOaMkMyM8+KkMBFTONizR1htpIy7nPMGSW0PjNisgOP3+WRH5MC7o9ZRR+tHsYT0u6MKPOSfTns7jBrREqyTDezs9/eU2x4WpvWcNeuS511JTE8qCF5H7u1BY1H72S3Ymi7aPD95/9+AN1fhEsAeJxjYGKAAC4G7ICZgYGRiZGZMzkjNTk7N7Eomy05syg5J5WBAQBE1QZBAABLuADIUlixAQGOWbkIAAgAYyCwASNEsAMjcLIEKAlFUkSyCgIHKrEGAUSxJAGIUViwQIhYsQYDRLEmAYhRWLgEAIhYsQYBRFlZWVm4Af+FsASNsQUARAAA) format('woff'); + src: url(data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMg8SBD8AAAC8AAAAYGNtYXAYVtCJAAABHAAAAFRnYXNwAAAAEAAAAXAAAAAIZ2x5Zn4huwUAAAF4AAABYGhlYWQGPe1ZAAAC2AAAADZoaGVhB30DyAAAAxAAAAAkaG10eBBKAEUAAAM0AAAAHGxvY2EAmgESAAADUAAAABBtYXhwAAkALwAAA2AAAAAgbmFtZSC8IugAAAOAAAABknBvc3QAAwAAAAAFFAAAACAAAwMTAZAABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADoAgPA/8AAQAPAAEAAAAABAAAAAAAAAAAAAAAgAAAAAAADAAAAAwAAABwAAQADAAAAHAADAAEAAAAcAAQAOAAAAAoACAACAAIAAQAg6AL//f//AAAAAAAg6AD//f//AAH/4xgEAAMAAQAAAAAAAAAAAAAAAQAB//8ADwABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAABAEUAUQO7AvgAGgAAARQHAQYjIicBJjU0PwE2MzIfAQE2MzIfARYVA7sQ/hQQFhcQ/uMQEE4QFxcQqAF2EBcXEE4QAnMWEP4UEBABHRAXFhBOEBCoAXcQEE4QFwAAAAABAAABbgMlAkkAFAAAARUUBwYjISInJj0BNDc2MyEyFxYVAyUQEBf9SRcQEBAQFwK3FxAQAhJtFxAQEBAXbRcQEBAQFwAAAAABAAAASQMlA24ALAAAARUUBwYrARUUBwYrASInJj0BIyInJj0BNDc2OwE1NDc2OwEyFxYdATMyFxYVAyUQEBfuEBAXbhYQEO4XEBAQEBfuEBAWbhcQEO4XEBACEm0XEBDuFxAQEBAX7hAQF20XEBDuFxAQEBAX7hAQFwAAAQAAAAIAAHRSzT9fDzz1AAsEAAAAAADRsdR3AAAAANGx1HcAAAAAA7sDbgAAAAgAAgAAAAAAAAABAAADwP/AAAAEAAAAAAADuwABAAAAAAAAAAAAAAAAAAAABwQAAAAAAAAAAAAAAAIAAAAEAABFAyUAAAMlAAAAAAAAAAoAFAAeAE4AcgCwAAEAAAAHAC0AAQAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAOAK4AAQAAAAAAAQAIAAAAAQAAAAAAAgAHAGkAAQAAAAAAAwAIADkAAQAAAAAABAAIAH4AAQAAAAAABQALABgAAQAAAAAABgAIAFEAAQAAAAAACgAaAJYAAwABBAkAAQAQAAgAAwABBAkAAgAOAHAAAwABBAkAAwAQAEEAAwABBAkABAAQAIYAAwABBAkABQAWACMAAwABBAkABgAQAFkAAwABBAkACgA0ALBDaGVja2JveABDAGgAZQBjAGsAYgBvAHhWZXJzaW9uIDIuMABWAGUAcgBzAGkAbwBuACAAMgAuADBDaGVja2JveABDAGgAZQBjAGsAYgBvAHhDaGVja2JveABDAGgAZQBjAGsAYgBvAHhSZWd1bGFyAFIAZQBnAHUAbABhAHJDaGVja2JveABDAGgAZQBjAGsAYgBvAHhGb250IGdlbmVyYXRlZCBieSBJY29Nb29uLgBGAG8AbgB0ACAAZwBlAG4AZQByAGEAdABlAGQAIABiAHkAIABJAGMAbwBNAG8AbwBuAC4AAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA) format('truetype'); } -.ui.checkbox label:before, -.ui.checkbox .box:before, + +/* Checkmark */ .ui.checkbox label:after, .ui.checkbox .box:after { font-family: 'Checkbox'; } -.ui.checkbox label:after, -.ui.checkbox .box:after { + +/* Checked */ +.ui.checkbox input:checked ~ .box:after, +.ui.checkbox input:checked ~ label:after { content: '\e800'; } -/* UTF Reference -.check:before { content: '\e800'; } '' -.circle:before { content: '\e801'; } -.ok-circled:before { content: '\e806'; } -.ok-circle:before { content: '\e805'; } -.cancel-circle:before { content: '\e807'; } -.cancel-circle-1:before { content: '\e804'; } -.empty-circle:before { content: '\e802'; } -.radio:before { content: '\e803'; } +/* 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'; } */ diff --git a/amiibofindr/static/semantic/components/checkbox.js b/amiibofindr/static/semantic/components/checkbox.js index 0791589..264f5c9 100644 --- a/amiibofindr/static/semantic/components/checkbox.js +++ b/amiibofindr/static/semantic/components/checkbox.js @@ -1,9 +1,9 @@ /*! - * # Semantic UI 1.12.3 - Checkbox + * # Semantic UI 2.1.3 - Checkbox * http://github.com/semantic-org/semantic-ui/ * * - * Copyright 2014 Contributors + * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * @@ -41,9 +41,12 @@ $.fn.checkbox = function(parameters) { moduleNamespace = 'module-' + namespace, $module = $(this), - $label = $(this).find(selector.label).first(), - $input = $(this).find(selector.input), + $label = $(this).children(selector.label), + $input = $(this).children(selector.input), + input = $input[0], + initialLoad = false, + shortcutPressed = false, instance = $module.data(moduleNamespace), observer, @@ -57,23 +60,14 @@ $.fn.checkbox = function(parameters) { module.verbose('Initializing checkbox', settings); module.create.label(); - module.add.events(); + module.bind.events(); + + module.set.tabbable(); + module.hide.input(); - if( module.is.checked() ) { - module.set.checked(); - if(settings.fireOnInit) { - settings.onChecked.call($input.get()); - } - } - else { - module.remove.checked(); - if(settings.fireOnInit) { - settings.onUnchecked.call($input.get()); - } - } module.observeChanges(); - module.instantiate(); + module.setup(); }, instantiate: function() { @@ -86,16 +80,55 @@ $.fn.checkbox = function(parameters) { destroy: function() { module.verbose('Destroying module'); - module.remove.events(); - $module - .removeData(moduleNamespace) - ; + 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() { - $module = $(element); - $label = $(element).find(selector.label).first(); - $input = $(element).find(selector.input); + $label = $module.children(selector.label); + $input = $module.children(selector.input); + input = $input[0]; + }, + + hide: { + input: function() { + module.verbose('Modfying z-index to be unselectable'); + $input.addClass(className.hidden); + } + }, + show: { + input: function() { + module.verbose('Modfying z-index to be selectable'); + $input.removeClass(className.hidden); + } }, observeChanges: function() { @@ -132,6 +165,22 @@ $.fn.checkbox = function(parameters) { }, 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, @@ -141,35 +190,195 @@ $.fn.checkbox = function(parameters) { escape : 27 } ; - if( key == keyCode.escape) { + if(key == keyCode.escape) { module.verbose('Escape key pressed blurring field'); - $module - .blur() - ; + $input.blur(); + shortcutPressed = true; } - if(!event.ctrlKey && (key == keyCode.enter || key == keyCode.space)) { - module.verbose('Enter key pressed, toggling checkbox'); - module.toggle.call(this); + 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); + }, + + disable: function() { + if( module.is.disabled() ) { + module.debug('Checkbox is already disabled'); + return; + } + module.debug('Disabling checkbox'); + module.set.disabled(); + settings.onDisable.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 $module.hasClass(className.radio); + 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') ); + return !( $module.hasClass(className.disabled) || $module.hasClass(className.readOnly) || $input.prop('disabled') || $input.prop('readonly') ); }, uncheck: function() { return (typeof settings.uncheckable === 'boolean') @@ -180,18 +389,127 @@ $.fn.checkbox = function(parameters) { }, set: { - checked: function() { - $module.addClass(className.checked); + initialLoad: function() { + initialLoad = true; }, - tab: function() { + 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) - ; + $input.attr('tabindex', 0); } } }, + remove: { + initialLoad: function() { + initialLoad = false; + } + }, + + trigger: { + change: function() { + module.verbose('Triggering change event from programmatic change'); + $input + .trigger('change') + ; + } + }, + + create: { label: function() { if($input.prevAll(selector.label).length > 0) { @@ -211,84 +529,47 @@ $.fn.checkbox = function(parameters) { } }, - add: { + bind: { events: function() { module.verbose('Attaching checkbox events'); $module - .on('click' + eventNamespace, module.toggle) + .on('click' + eventNamespace, module.event.click) .on('keydown' + eventNamespace, selector.input, module.event.keydown) + .on('keyup' + eventNamespace, selector.input, module.event.keyup) ; } }, - remove: { - checked: function() { - $module.removeClass(className.checked); - }, + unbind: { events: function() { module.debug('Removing events'); $module .off(eventNamespace) - .removeData(moduleNamespace) - ; - $input - .off(eventNamespace, module.event.keydown) - ; - $label - .off(eventNamespace) ; } }, - enable: function() { - module.debug('Enabling checkbox functionality'); - $module.removeClass(className.disabled); - $input.prop('disabled', false); - settings.onEnabled.call($input.get()); - }, - - disable: function() { - module.debug('Disabling checkbox functionality'); - $module.addClass(className.disabled); - $input.prop('disabled', 'disabled'); - settings.onDisabled.call($input.get()); - }, - - check: function() { - module.debug('Enabling checkbox', $input); - $input - .prop('checked', true) - .trigger('change') + uncheckOthers: function() { + var + $radios = module.get.otherRadios() ; - module.set.checked(); - $input.trigger('blur'); - settings.onChange.call($input.get()); - settings.onChecked.call($input.get()); + module.debug('Unchecking other radios', $radios); + $radios.removeClass(className.checked); }, - uncheck: function() { - module.debug('Disabling checkbox'); - $input - .prop('checked', false) - .trigger('change') - ; - module.remove.checked(); - $input.trigger('blur'); - settings.onChange.call($input.get()); - settings.onUnchecked.call($input.get()); - }, - - toggle: function(event) { + toggle: function() { if( !module.can.change() ) { - console.log(module.can.change()); - module.debug('Checkbox is read-only or disabled, ignoring toggle'); + if(!module.is.radio()) { + module.debug('Checkbox is read-only or disabled, ignoring toggle'); + } return; } - module.verbose('Determining new checkbox state'); - if( module.is.unchecked() ) { + if( module.is.indeterminate() || module.is.unchecked() ) { + module.debug('Currently unchecked'); module.check(); } else if( module.is.checked() && module.can.uncheck() ) { + module.debug('Currently checked'); module.uncheck(); } }, @@ -361,7 +642,7 @@ $.fn.checkbox = function(parameters) { }); } clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(module.performance.display, 100); + module.performance.timer = setTimeout(module.performance.display, 500); }, display: function() { var @@ -471,37 +752,51 @@ $.fn.checkbox = function(parameters) { $.fn.checkbox.settings = { - name : 'Checkbox', - namespace : 'checkbox', + name : 'Checkbox', + namespace : 'checkbox', - debug : false, - verbose : true, - performance : true, + debug : false, + verbose : true, + performance : true, // delegated event context - uncheckable : 'auto', - fireOnInit : true, + uncheckable : 'auto', + fireOnInit : false, - onChange : function(){}, - onChecked : function(){}, - onUnchecked : function(){}, - onEnabled : function(){}, - onDisabled : function(){}, + onChange : function(){}, - className : { - checked : 'checked', - disabled : 'disabled', - radio : 'radio', - readOnly : 'read-only' + beforeChecked : function(){}, + beforeUnchecked : function(){}, + beforeDeterminate : function(){}, + beforeIndeterminate : function(){}, + + onChecked : function(){}, + onUnchecked : function(){}, + + onDeterminate : function() {}, + onIndeterminate : function() {}, + + onEnabled : function(){}, + onDisabled : function(){}, + + className : { + checked : 'checked', + indeterminate : 'indeterminate', + disabled : 'disabled', + hidden : 'hidden', + radio : 'radio', + readOnly : 'read-only' }, error : { - method : 'The method you called is not defined' + method : 'The method you called is not defined' }, selector : { - input : 'input[type="checkbox"], input[type="radio"]', - label : 'label' + checkbox : '.ui.checkbox', + label : 'label, .box', + input : 'input[type="checkbox"], input[type="radio"]', + link : 'a[href]' } }; diff --git a/amiibofindr/static/semantic/components/checkbox.min.css b/amiibofindr/static/semantic/components/checkbox.min.css index a9bca72..1a3b869 100755 --- a/amiibofindr/static/semantic/components/checkbox.min.css +++ b/amiibofindr/static/semantic/components/checkbox.min.css @@ -1,10 +1,10 @@ /*! - * # Semantic UI 1.12.3 - Checkbox + * # Semantic UI 2.1.3 - Checkbox * http://github.com/semantic-org/semantic-ui/ * * - * Copyright 2014 Contributors + * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * - */.ui.checkbox{position:relative;display:inline-block;min-height:17px;font-size:1rem;line-height:15px;min-width:17px;-webkit-backface-visibility:hidden;backface-visibility:hidden;outline:0;vertical-align:middle}.ui.checkbox input[type=checkbox],.ui.checkbox input[type=radio]{position:absolute;top:0;left:0;opacity:0!important;outline:0;z-index:-1}.ui.checkbox .box,.ui.checkbox label{display:block;cursor:pointer;padding-left:1.75em;outline:0}.ui.checkbox label{font-size:1em}.ui.checkbox .box:before,.ui.checkbox label:before{position:absolute;line-height:1;width:17px;height:17px;top:0;left:0;content:'';background:#fff;border-radius:.25em;-webkit-transition:background-color .3s ease,border .3s ease,box-shadow .3s ease;transition:background-color .3s ease,border .3s ease,box-shadow .3s ease;border:1px solid #d4d4d5}.ui.checkbox .box:after,.ui.checkbox label:after{position:absolute;top:0;left:0;line-height:17px;width:17px;height:17px;text-align:center;opacity:0;color:rgba(0,0,0,.8);-webkit-transition:all .1s ease;transition:all .1s ease}.ui.checkbox label,.ui.checkbox+label{cursor:pointer;color:rgba(0,0,0,.8);-webkit-transition:color .2s ease;transition:color .2s ease;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ui.checkbox+label{vertical-align:middle}.ui.checkbox .box:hover::before,.ui.checkbox label:hover::before{background:#fff;border:1px solid rgba(39,41,43,.3)}.ui.checkbox label:hover,.ui.checkbox+label:hover{color:rgba(0,0,0,.8)}.ui.checkbox .box:active::before,.ui.checkbox label:active::before{background:#f5f5f5;border:1px solid solid}.ui.checkbox input[type=checkbox]:active~label,.ui.checkbox input[type=radio]:active~label{color:rgba(0,0,0,.8)}.ui.checkbox input[type=checkbox]:focus~.box:before,.ui.checkbox input[type=checkbox]:focus~label:before,.ui.checkbox input[type=radio]:focus~.box:before,.ui.checkbox input[type=radio]:focus~label:before{background:#f5f5f5;border:1px solid solid}.ui.checkbox input[type=checkbox]:focus~label,.ui.checkbox input[type=radio]:focus~label{color:rgba(0,0,0,.8)}.ui.checkbox input[type=checkbox]:checked~.box:after,.ui.checkbox input[type=checkbox]:checked~label:after,.ui.checkbox input[type=radio]:checked~.box:after,.ui.checkbox input[type=radio]:checked~label:after{opacity:1}.ui.read-only.checkbox,.ui.read-only.checkbox label{cursor:default}.ui.checkbox input[type=checkbox][disabled]~.box:after,.ui.checkbox input[type=checkbox][disabled]~label,.ui.checkbox input[type=radio][disabled]~.box:after,.ui.checkbox input[type=radio][disabled]~label,.ui.disabled.checkbox .box:after,.ui.disabled.checkbox label{cursor:default;opacity:.5;color:#000}.ui.radio.checkbox{min-height:14px}.ui.radio.checkbox .box:before,.ui.radio.checkbox label:before{width:14px;height:14px;border-radius:500rem;top:1px;left:0;-webkit-transform:none;-ms-transform:none;transform:none}.ui.radio.checkbox .box:after,.ui.radio.checkbox label:after{border:none;line-height:14px;top:1px;left:0;font-size:9px;width:14px;height:14px;border-radius:500rem;-webkit-transform:scale(.42857143);-ms-transform:scale(.42857143);transform:scale(.42857143);background-color:rgba(0,0,0,.8)}.ui.slider.checkbox{cursor:pointer;min-height:1.25rem}.ui.slider.checkbox .box,.ui.slider.checkbox label{padding-left:4.5rem;line-height:1rem;color:rgba(0,0,0,.4)}.ui.slider.checkbox .box:before,.ui.slider.checkbox label:before{cursor:pointer;display:block;position:absolute;content:'';top:.4rem;left:0;z-index:1;border:none!important;background-color:rgba(0,0,0,.05);width:3.5rem;height:.25rem;-webkit-transform:none;-ms-transform:none;transform:none;border-radius:500rem;-webkit-transition:background .3s ease;transition:background .3s ease}.ui.slider.checkbox .box:after,.ui.slider.checkbox label:after{background:-webkit-linear-gradient(transparent,rgba(0,0,0,.05)) #fff;background:linear-gradient(transparent,rgba(0,0,0,.05)) #fff;position:absolute;content:'';opacity:1;z-index:2;border:none;box-shadow:0 1px 2px 0 rgba(0,0,0,.05),0 0 0 1px rgba(39,41,43,.15) inset;width:1.5rem;height:1.5rem;top:-.25rem;left:0;-webkit-transform:none;-ms-transform:none;transform:none;border-radius:500rem;-webkit-transition:left .3s ease 0s;transition:left .3s ease 0s}.ui.slider.checkbox input[type=checkbox]:focus~.box:before,.ui.slider.checkbox input[type=checkbox]:focus~label:before,.ui.slider.checkbox input[type=radio]:focus~.box:before,.ui.slider.checkbox input[type=radio]:focus~label:before{background-color:rgba(0,0,0,.1);border:none}.ui.slider.checkbox .box:hover,.ui.slider.checkbox label:hover{color:rgba(0,0,0,.8)}.ui.slider.checkbox .box:hover::before,.ui.slider.checkbox label:hover::before{background:rgba(0,0,0,.1)}.ui.slider.checkbox input[type=checkbox]:checked~.box,.ui.slider.checkbox input[type=checkbox]:checked~label,.ui.slider.checkbox input[type=radio]:checked~.box,.ui.slider.checkbox input[type=radio]:checked~label{color:rgba(0,0,0,.8)}.ui.slider.checkbox input[type=checkbox]:checked~.box:before,.ui.slider.checkbox input[type=checkbox]:checked~label:before,.ui.slider.checkbox input[type=radio]:checked~.box:before,.ui.slider.checkbox input[type=radio]:checked~label:before{background-color:rgba(0,0,0,.1)}.ui.slider.checkbox input[type=checkbox]:checked~.box:after,.ui.slider.checkbox input[type=checkbox]:checked~label:after,.ui.slider.checkbox input[type=radio]:checked~.box:after,.ui.slider.checkbox input[type=radio]:checked~label:after{left:2rem}.ui.toggle.checkbox{cursor:pointer;min-height:1.5rem}.ui.toggle.checkbox .box,.ui.toggle.checkbox label{min-height:1.5rem;padding-left:4.5rem;color:rgba(0,0,0,.8)}.ui.toggle.checkbox label{padding-top:.15em}.ui.toggle.checkbox .box:before,.ui.toggle.checkbox label:before{cursor:pointer;display:block;position:absolute;content:'';top:0;z-index:1;border:none;background-color:rgba(0,0,0,.05);width:3.5rem;height:1.5rem;border-radius:500rem}.ui.toggle.checkbox .box:after,.ui.toggle.checkbox label:after{background:-webkit-linear-gradient(transparent,rgba(0,0,0,.05)) #fff;background:linear-gradient(transparent,rgba(0,0,0,.05)) #fff;position:absolute;content:'';opacity:1;z-index:2;border:none;box-shadow:0 1px 2px 0 rgba(0,0,0,.05),0 0 0 1px rgba(39,41,43,.15) inset;width:1.5rem;height:1.5rem;top:0;left:0;border-radius:500rem;-webkit-transition:background .3s ease 0s,left .3s ease 0s;transition:background .3s ease 0s,left .3s ease 0s}.ui.toggle.checkbox input[type=checkbox]~.box:after,.ui.toggle.checkbox input[type=checkbox]~label:after,.ui.toggle.checkbox input[type=radio]~.box:after,.ui.toggle.checkbox input[type=radio]~label:after{left:-.05rem}.ui.toggle.checkbox .box:hover::before,.ui.toggle.checkbox input[type=checkbox]:focus~.box:before,.ui.toggle.checkbox input[type=checkbox]:focus~label:before,.ui.toggle.checkbox input[type=radio]:focus~.box:before,.ui.toggle.checkbox input[type=radio]:focus~label:before,.ui.toggle.checkbox label:hover::before{background-color:rgba(0,0,0,.1);border:none}.ui.toggle.checkbox input[type=checkbox]:checked~.box,.ui.toggle.checkbox input[type=checkbox]:checked~label,.ui.toggle.checkbox input[type=radio]:checked~.box,.ui.toggle.checkbox input[type=radio]:checked~label{color:#5bbd72}.ui.toggle.checkbox input[type=checkbox]:checked~.box:before,.ui.toggle.checkbox input[type=checkbox]:checked~label:before,.ui.toggle.checkbox input[type=radio]:checked~.box:before,.ui.toggle.checkbox input[type=radio]:checked~label:before{background-color:#5bbd72}.ui.toggle.checkbox input[type=checkbox]:checked~.box:after,.ui.toggle.checkbox input[type=checkbox]:checked~label:after,.ui.toggle.checkbox input[type=radio]:checked~.box:after,.ui.toggle.checkbox input[type=radio]:checked~label:after{left:2.05rem}.ui.fitted.checkbox .box,.ui.fitted.checkbox label{padding-left:0!important}.ui.fitted.slider.checkbox,.ui.fitted.toggle.checkbox{width:3.5rem}@font-face{font-family:Checkbox;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,d09GRgABAAAAAAoUAA4AAAAAEPQAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABPUy8yAAABRAAAAEQAAABWPeFJAWNtYXAAAAGIAAAAOgAAAUrQEhm3Y3Z0IAAAAcQAAAAUAAAAHAZJ/5RmcGdtAAAB2AAABPkAAAmRigp4O2dhc3AAAAbUAAAACAAAAAgAAAAQZ2x5ZgAABtwAAACuAAAAtt9nBHZoZWFkAAAHjAAAADUAAAA2ASs8e2hoZWEAAAfEAAAAIAAAACQHUwNNaG10eAAAB+QAAAAMAAAADAspAABsb2NhAAAH8AAAAAgAAAAIADgAW21heHAAAAf4AAAAIAAAACAApgm8bmFtZQAACBgAAAF3AAACzcydGhxwb3N0AAAJkAAAACoAAAA7rr1AmHByZXAAAAm8AAAAVgAAAFaSoZr/eJxjYGTewTiBgZWBg6mKaQ8DA0MPhGZ8wGDIyMTAwMTAysyAFQSkuaYwOLxgeMHIHPQ/iyGKmZvBHyjMCJIDAPe9C2B4nGNgYGBmgGAZBkYGEHAB8hjBfBYGDSDNBqQZGZgYGF4w/v8PUvCCAURLMELVAwEjG8OIBwBk5AavAAB4nGNgQANGDEbM3P83gjAAELQD4XicnVXZdtNWFJU8ZHASOmSgoA7X3DhQ68qEKRgwaSrFdiEdHAitBB2kDHTkncc+62uOQrtWH/m07n09JLR0rbYsls++R1tn2DrnRhwjKn0aiGvUoZKXA6msPZZK90lc13Uvj5UMBnFdthJPSZuonSRKat3sUC7xWOsqWSdYJ+PlIFZPVZ5noAziFB5lSUQbRBuplyZJ4onjJ4kWZxAfJUkgJaMQp9LIUEI1GsRS1aFM6dCr1xNx00DKRqMedVhU90PFJ8c1p9SsA0YqVznCFevVRr4bpwMve5DEOsGzrYcxHnisfpQqkIqR6cg/dkpOlIaBVHHUoVbi6DCTX/eRTCrNQKaMYkWl7oG43f102xYxPXQ6vi5KlUaqurnOKJrt0fGogygP2cbppNzQ2fbw5RlTVKtdcbPtQGYNXErJbHSfRAAdJlLj6QFONZwCqRn1R8XZ588BEslclKo8VTKHegOZMzt7cTHtbiersnCknwcyb3Z2452HQ6dXh3/R+hdM4cxHj+Jifj5C+lBqfiJOJKVGWMzyp4YfcVcgQrkxiAsXyuBThDl0RdrZZl3jtTH2hs/5SqlhPQna6KP4fgr9TiQrHGdRo/VInM1j13Wt3GdQS7W7Fzsyr0OVIu7vCwuuM+eEYZ4WC1VfnvneBTT/Bohn/EDeNIVL+5YpSrRvm6JMu2iKCu0SVKVdNsUU7YoppmnPmmKG9h1TzNKeMzLj/8vc55H7HN7xkJv2XeSmfQ+5ad9HbtoPkJtWITdtHblpLyA3rUZu2lWjOnYEGgZpF1IVQdA0svph3Fab9UDWjDR8aWDyLmLI+upER521tcofxX914gsHcmmip7siF5viLq/bFj483e6rj5pG3bDV+MaR8jAeRnocmtBZ+c3hv+1N3S6a7jKqMugBFUwKwABl7UAC0zrbCaT1mqf48gdgXIZ4zkpDtVSfO4am7+V5X/exOfG+x+3GLrdcd3kJWdYNcmP28N9SZKrrH+UtrVQnR6wrJ49VaxhDKrwour6SlHu0tRu/KKmy8l6U1srnk5CbPYMbQlu27mGwI0xpyiUeXlOlKD3UUo6yQyxvKco84JSLC1qGxLgOdQ9qa8TpoXoYGwshhqG0vRBwSCldFd+0ynfxHqtr2Oj4xRXh6XpyEhGf4ir7UfBU10b96A7avGbdMoMpVaqn+4xPsa/b9lFZaaSOsxe3VAfXNOsaORXTT+Rr4HRvOGjdAz1UfDRBI1U1x+jGKGM0ljXl3wR0MVZ+w2jVYvs93E+dpFWsuUuY7JsT9+C0u/0q+7WcW0bW/dcGvW3kip8jMb8tCvw7B2K3ZA3UO5OBGAvIWdAYxhYmdxiug23EbfY/Jqf/34aFRXJXOxq7eerD1ZNRJXfZ8rjLTXZZ16M2R9VOGvsIjS0PN+bY4XIstsRgQbb+wf8x7gF3aVEC4NDIZZiI2nShnurh6h6rsW04VxIBds2x43QAegAuQd8cu9bzCYD13CPnLsB9cgh2yCH4lByCz8i5BfA5OQRfkEMwIIdgl5w7AA/IIXhIDsEeOQSPyNkE+JIcgq/IIYjJIUjIuQ3wmByCJ+QQfE0OwTdGrk5k/pYH2QD6zqKbQKmdGhzaOGRGrk3Y+zxY9oFFZB9aROqRkesT6lMeLPV7i0j9wSJSfzRyY0L9iQdL/dkiUn+xiNRnxpeZIymvDp7zjg7+BJfqrV4AAAAAAQAB//8AD3icY2BkAALmJUwzGEQZZBwk+RkZGBmdGJgYmbIYgMwsoGSiiLgIs5A2owg7I5uSOqOaiT2jmZE8I5gQY17C/09BQEfg3yt+fh8gvYQxD0j68DOJiQn8U+DnZxQDcQUEljLmCwBpBgbG/3//b2SOZ+Zm4GEQcuAH2sblDLSEm8FFVJhJEGgLH6OSHpMdo5EcI3Nk0bEXJ/LYqvZ82VXHGFd6pKTkyCsQwQAAq+QkqAAAeJxjYGRgYADiw5VSsfH8Nl8ZuJlfAEUYzpvO6IXQCb7///7fyLyEmRvI5WBgAokCAFb/DJAAAAB4nGNgZGBgDvqfxRDF/IKB4f935iUMQBEUwAwAi5YFpgPoAAAD6AAAA1kAAAAAAAAAOABbAAEAAAADABYAAQAAAAAAAgAGABMAbgAAAC0JkQAAAAB4nHWQy2rCQBSG//HSi0JbWui2sypKabxgN4IgWHTTbqS4LTHGJBIzMhkFX6Pv0IfpS/RZ+puMpShNmMx3vjlz5mQAXOMbAvnzxJGzwBmjnAs4Rc9ykf7Zcon8YrmMKt4sn9C/W67gAYHlKm7wwQqidM5ogU/LAlfi0nIBF+LOcpH+0XKJ3LNcxq14tXxC71muYCJSy1Xci6+BWm11FIRG1gZ12W62OnK6lYoqStxYumsTKp3KvpyrxPhxrBxPLfc89oN17Op9uJ8nvk4jlciW09yrkZ/42jX+bFc93QRtY+ZyrtVSDm2GXGm18D3jhMasuo3G3/MwgMIKW2hEvKoQBhI12jrnNppooUOaMkMyM8+KkMBFTONizR1htpIy7nPMGSW0PjNisgOP3+WRH5MC7o9ZRR+tHsYT0u6MKPOSfTns7jBrREqyTDezs9/eU2x4WpvWcNeuS511JTE8qCF5H7u1BY1H72S3Ymi7aPD95/9+AN1fhEsAeJxjYGKAAC4G7ICZgYGRiZGZMzkjNTk7N7Eomy05syg5J5WBAQBE1QZBAABLuADIUlixAQGOWbkIAAgAYyCwASNEsAMjcLIEKAlFUkSyCgIHKrEGAUSxJAGIUViwQIhYsQYDRLEmAYhRWLgEAIhYsQYBRFlZWVm4Af+FsASNsQUARAAA) format('woff')}.ui.checkbox .box:after,.ui.checkbox .box:before,.ui.checkbox label:after,.ui.checkbox label:before{font-family:Checkbox}.ui.checkbox .box:after,.ui.checkbox label:after{content:'\e800'} \ No newline at end of file + */.ui.checkbox{position:relative;display:inline-block;-webkit-backface-visibility:hidden;backface-visibility:hidden;outline:0;vertical-align:baseline;font-style:normal;min-height:17px;font-size:1rem;line-height:17px;min-width:17px}.ui.checkbox input[type=checkbox],.ui.checkbox input[type=radio]{cursor:pointer;position:absolute;top:0;left:0;opacity:0!important;outline:0;z-index:3;width:17px;height:17px}.ui.checkbox .box,.ui.checkbox label{cursor:auto;position:relative;display:block;padding-left:1.85714em;outline:0;font-size:1em}.ui.checkbox .box:before,.ui.checkbox label:before{position:absolute;top:0;left:0;width:17px;height:17px;content:'';background:#fff;border-radius:.21428571rem;-webkit-transition:border .1s ease,opacity .1s ease,-webkit-transform .1s ease,box-shadow .1s ease;transition:border .1s ease,opacity .1s ease,transform .1s ease,box-shadow .1s ease;border:1px solid #d4d4d5}.ui.checkbox .box:after,.ui.checkbox label:after{position:absolute;font-size:14px;top:0;left:0;width:17px;height:17px;text-align:center;opacity:0;color:rgba(0,0,0,.87);-webkit-transition:border .1s ease,opacity .1s ease,-webkit-transform .1s ease,box-shadow .1s ease;transition:border .1s ease,opacity .1s ease,transform .1s ease,box-shadow .1s ease;font-family:Checkbox}.ui.checkbox label,.ui.checkbox+label{color:rgba(0,0,0,.87);-webkit-transition:color .1s ease;transition:color .1s ease}.ui.checkbox+label{vertical-align:middle}.ui.checkbox .box:hover::before,.ui.checkbox label:hover::before{background:#fff;border-color:rgba(34,36,38,.35)}.ui.checkbox label:hover,.ui.checkbox+label:hover{color:rgba(0,0,0,.8)}.ui.checkbox .box:active::before,.ui.checkbox label:active::before{background:#f9fafb;border-color:rgba(34,36,38,.35)}.ui.checkbox .box:active::after,.ui.checkbox input:active~label,.ui.checkbox label:active::after{color:rgba(0,0,0,.95)}.ui.checkbox input:focus~.box:before,.ui.checkbox input:focus~label:before{background:#fff;border-color:#96c8da}.ui.checkbox input:focus~.box:after,.ui.checkbox input:focus~label,.ui.checkbox input:focus~label:after{color:rgba(0,0,0,.95)}.ui.checkbox input:checked~.box:before,.ui.checkbox input:checked~label:before{background:#fff;border-color:rgba(34,36,38,.35)}.ui.checkbox input:checked~.box:after,.ui.checkbox input:checked~label:after{opacity:1;color:rgba(0,0,0,.95)}.ui.checkbox input:indeterminate~.box:before,.ui.checkbox input:indeterminate~label:before{background:#fff;border-color:rgba(34,36,38,.35)}.ui.checkbox input:indeterminate~.box:after,.ui.checkbox input:indeterminate~label:after{opacity:1;color:rgba(0,0,0,.95)}.ui.checkbox input:checked:focus~.box:before,.ui.checkbox input:checked:focus~label:before,.ui.checkbox input:indeterminate:focus~.box:before,.ui.checkbox input:indeterminate:focus~label:before{background:#fff;border-color:#96c8da}.ui.checkbox input:checked:focus~.box:after,.ui.checkbox input:checked:focus~label:after,.ui.checkbox input:indeterminate:focus~.box:after,.ui.checkbox input:indeterminate:focus~label:after{color:rgba(0,0,0,.95)}.ui.read-only.checkbox,.ui.read-only.checkbox label{cursor:default}.ui.checkbox input[disabled]~.box:after,.ui.checkbox input[disabled]~label,.ui.disabled.checkbox .box:after,.ui.disabled.checkbox label{cursor:default;opacity:.5;color:#000}.ui.checkbox input.hidden{z-index:-1}.ui.checkbox input.hidden+label{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ui.radio.checkbox{min-height:15px}.ui.radio.checkbox .box,.ui.radio.checkbox label{padding-left:1.85714em}.ui.radio.checkbox .box:before,.ui.radio.checkbox label:before{content:'';-webkit-transform:none;-ms-transform:none;transform:none;width:15px;height:15px;border-radius:500rem;top:1px;left:0}.ui.radio.checkbox .box:after,.ui.radio.checkbox label:after{border:none;content:''!important;line-height:15px;top:1px;left:0;width:15px;height:15px;border-radius:500rem;-webkit-transform:scale(.46666667);-ms-transform:scale(.46666667);transform:scale(.46666667);background-color:rgba(0,0,0,.87)}.ui.radio.checkbox input:focus~.box:before,.ui.radio.checkbox input:focus~label:before{background-color:#fff}.ui.radio.checkbox input:focus~.box:after,.ui.radio.checkbox input:focus~label:after{background-color:rgba(0,0,0,.95)}.ui.radio.checkbox input:indeterminate~.box:after,.ui.radio.checkbox input:indeterminate~label:after{opacity:0}.ui.radio.checkbox input:checked~.box:before,.ui.radio.checkbox input:checked~label:before{background-color:#fff}.ui.radio.checkbox input:checked~.box:after,.ui.radio.checkbox input:checked~label:after{background-color:rgba(0,0,0,.95)}.ui.radio.checkbox input:focus:checked~.box:before,.ui.radio.checkbox input:focus:checked~label:before{background-color:#fff}.ui.radio.checkbox input:focus:checked~.box:after,.ui.radio.checkbox input:focus:checked~label:after{background-color:rgba(0,0,0,.95)}.ui.slider.checkbox{min-height:1.25rem}.ui.slider.checkbox input{width:3.5rem;height:1.25rem}.ui.slider.checkbox .box,.ui.slider.checkbox label{padding-left:4.5rem;line-height:1rem;color:rgba(0,0,0,.4)}.ui.slider.checkbox .box:before,.ui.slider.checkbox label:before{display:block;position:absolute;content:'';border:none!important;left:0;z-index:1;top:.4rem;background-color:rgba(0,0,0,.05);width:3.5rem;height:.21428571rem;-webkit-transform:none;-ms-transform:none;transform:none;border-radius:500rem;-webkit-transition:background .3s ease;transition:background .3s ease}.ui.slider.checkbox .box:after,.ui.slider.checkbox label:after{background:-webkit-linear-gradient(transparent,rgba(0,0,0,.05)) #fff;background:linear-gradient(transparent,rgba(0,0,0,.05)) #fff;position:absolute;content:''!important;opacity:1;z-index:2;border:none;box-shadow:0 1px 2px 0 rgba(34,36,38,.15),0 0 0 1px rgba(34,36,38,.15) inset;width:1.5rem;height:1.5rem;top:-.25rem;left:0;-webkit-transform:none;-ms-transform:none;transform:none;border-radius:500rem;-webkit-transition:left .3s ease;transition:left .3s ease}.ui.slider.checkbox input:focus~.box:before,.ui.slider.checkbox input:focus~label:before{background-color:rgba(0,0,0,.15);border:none}.ui.slider.checkbox .box:hover,.ui.slider.checkbox label:hover{color:rgba(0,0,0,.8)}.ui.slider.checkbox .box:hover::before,.ui.slider.checkbox label:hover::before{background:rgba(0,0,0,.15)}.ui.slider.checkbox input:checked~.box,.ui.slider.checkbox input:checked~label{color:rgba(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}.ui.slider.checkbox input:focus:checked~.box,.ui.slider.checkbox input:focus:checked~label{color:rgba(0,0,0,.95)!important}.ui.slider.checkbox input:focus:checked~.box:before,.ui.slider.checkbox input:focus:checked~label:before{background-color:#000!important}.ui.toggle.checkbox{min-height:1.5rem}.ui.toggle.checkbox input{width:3.5rem;height:1.5rem}.ui.toggle.checkbox .box,.ui.toggle.checkbox label{min-height:1.5rem;padding-left:4.5rem;color:rgba(0,0,0,.87)}.ui.toggle.checkbox label{padding-top:.15em}.ui.toggle.checkbox .box:before,.ui.toggle.checkbox label:before{display:block;position:absolute;content:'';z-index:1;-webkit-transform:none;-ms-transform:none;transform:none;border:none;top:0;background:rgba(0,0,0,.05);width:3.5rem;height:1.5rem;border-radius:500rem}.ui.toggle.checkbox .box:after,.ui.toggle.checkbox label:after{background:-webkit-linear-gradient(transparent,rgba(0,0,0,.05)) #fff;background:linear-gradient(transparent,rgba(0,0,0,.05)) #fff;position:absolute;content:''!important;opacity:1;z-index:2;border:none;box-shadow:0 1px 2px 0 rgba(34,36,38,.15),0 0 0 1px rgba(34,36,38,.15) inset;width:1.5rem;height:1.5rem;top:0;left:0;border-radius:500rem;-webkit-transition:background .3s ease,left .3s ease;transition:background .3s ease,left .3s ease}.ui.toggle.checkbox input~.box:after,.ui.toggle.checkbox input~label:after{left:-.05rem}.ui.toggle.checkbox .box:hover::before,.ui.toggle.checkbox input:focus~.box:before,.ui.toggle.checkbox input:focus~label:before,.ui.toggle.checkbox label:hover::before{background-color:rgba(0,0,0,.15);border:none}.ui.toggle.checkbox input:checked~.box,.ui.toggle.checkbox input:checked~label{color:rgba(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}.ui.toggle.checkbox input:focus:checked~.box,.ui.toggle.checkbox input:focus:checked~label{color:rgba(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}.ui.fitted.checkbox .box,.ui.fitted.checkbox label{padding-left:0!important}.ui.fitted.slider.checkbox,.ui.fitted.toggle.checkbox{width:3.5rem}@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')}.ui.checkbox input:checked~.box:after,.ui.checkbox input:checked~label:after{content:'\e800'}.ui.checkbox input:indeterminate~.box:after,.ui.checkbox input:indeterminate~label:after{font-size:9pt;content:'\e801'} \ No newline at end of file diff --git a/amiibofindr/static/semantic/components/checkbox.min.js b/amiibofindr/static/semantic/components/checkbox.min.js index fae2ca9..4308001 100644 --- a/amiibofindr/static/semantic/components/checkbox.min.js +++ b/amiibofindr/static/semantic/components/checkbox.min.js @@ -1,11 +1,11 @@ /*! - * # Semantic UI 1.12.3 - Checkbox + * # Semantic UI 2.1.3 - Checkbox * http://github.com/semantic-org/semantic-ui/ * * - * Copyright 2014 Contributors + * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ -!function(e,n,t,o){"use strict";e.fn.checkbox=function(t){var c,i=e(this),r=i.selector||"",a=(new Date).getTime(),l=[],s=arguments[0],u="string"==typeof s,d=[].slice.call(arguments,1);return i.each(function(){var i,b,g=e.extend(!0,{},e.fn.checkbox.settings,t),h=g.className,f=g.namespace,p=g.selector,m=g.error,k="."+f,v="module-"+f,y=e(this),x=e(this).find(p.label).first(),C=e(this).find(p.input),D=y.data(v),E=this;b={initialize:function(){b.verbose("Initializing checkbox",g),b.create.label(),b.add.events(),b.is.checked()?(b.set.checked(),g.fireOnInit&&g.onChecked.call(C.get())):(b.remove.checked(),g.fireOnInit&&g.onUnchecked.call(C.get())),b.observeChanges(),b.instantiate()},instantiate:function(){b.verbose("Storing instance of module",b),D=b,y.data(v,b)},destroy:function(){b.verbose("Destroying module"),b.remove.events(),y.removeData(v)},refresh:function(){y=e(E),x=e(E).find(p.label).first(),C=e(E).find(p.input)},observeChanges:function(){"MutationObserver"in n&&(i=new MutationObserver(function(e){b.debug("DOM tree modified, updating selector cache"),b.refresh()}),i.observe(E,{childList:!0,subtree:!0}),b.debug("Setting up mutation observer",i))},attachEvents:function(n,t){var o=e(n);t=e.isFunction(b[t])?b[t]:b.toggle,o.length>0?(b.debug("Attaching checkbox events to element",n,t),o.on("click"+k,t)):b.error(m.notFound)},event:{keydown:function(e){var n=e.which,t={enter:13,space:32,escape:27};n==t.escape&&(b.verbose("Escape key pressed blurring field"),y.blur()),e.ctrlKey||n!=t.enter&&n!=t.space||(b.verbose("Enter key pressed, toggling checkbox"),b.toggle.call(this),e.preventDefault())}},is:{radio:function(){return y.hasClass(h.radio)},checked:function(){return C.prop("checked")!==o&&C.prop("checked")},unchecked:function(){return!b.is.checked()}},can:{change:function(){return!(y.hasClass(h.disabled)||y.hasClass(h.readOnly)||C.prop("disabled"))},uncheck:function(){return"boolean"==typeof g.uncheckable?g.uncheckable:!b.is.radio()}},set:{checked:function(){y.addClass(h.checked)},tab:function(){C.attr("tabindex")===o&&C.attr("tabindex",0)}},create:{label:function(){C.prevAll(p.label).length>0?(C.prev(p.label).detach().insertAfter(C),b.debug("Moving existing label",x)):b.has.label()||(x=e("