diff --git a/ban/__init__.py b/ban/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/ban/admin.py b/ban/admin.py new file mode 100644 index 0000000..a355558 --- /dev/null +++ b/ban/admin.py @@ -0,0 +1,13 @@ +from django.contrib import admin +from .models import UsersBan + +# Register your models here. + +class UsersBanModel(admin.ModelAdmin): + list_display = ['user', 'ban', ] + list_filter = ('ban', ) + search_fields = ('user__username', 'user__id', 'user__first_name', 'user__last_name') + +''' +admin.site.register(UsersBan, UsersBanModel) +''' \ No newline at end of file diff --git a/ban/apps.py b/ban/apps.py new file mode 100644 index 0000000..9407187 --- /dev/null +++ b/ban/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class BanConfig(AppConfig): + name = 'ban' diff --git a/ban/middleware.py b/ban/middleware.py new file mode 100644 index 0000000..4a69940 --- /dev/null +++ b/ban/middleware.py @@ -0,0 +1,22 @@ +from django.shortcuts import render +from django.http import HttpResponseForbidden +from .models import UsersBan + +class BanManagement(): + """Users Management""" + + def __init__(self, get_response): + self.get_response = get_response + + def __call__(self, request): + response = self.get_response(request) + + if(UsersBan.objects.all().filter(ban=True, user_id=request.user.id)): + return HttpResponseForbidden('Commit suicide') + elif request.user.is_authenticated: + if not request.user.is_active(): + return HttpResponseForbidden(request.user.warned_reason) + else: + return response + else: + return response diff --git a/ban/migrations/0001_initial.py b/ban/migrations/0001_initial.py new file mode 100644 index 0000000..3c52bc7 --- /dev/null +++ b/ban/migrations/0001_initial.py @@ -0,0 +1,29 @@ +# Generated by Django 3.2.3 on 2022-02-28 20:18 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.CreateModel( + name='UsersBan', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('ban', models.BooleanField(default=False, help_text='Users Bans', verbose_name='Ban')), + ('user', models.ForeignKey(help_text='Choose Username', on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='User name')), + ], + options={ + 'verbose_name_plural': 'Ban Management', + 'ordering': ('user',), + }, + ), + ] diff --git a/ban/migrations/0002_usersban_reason.py b/ban/migrations/0002_usersban_reason.py new file mode 100644 index 0000000..da4314d --- /dev/null +++ b/ban/migrations/0002_usersban_reason.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.3 on 2022-09-03 21:00 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('ban', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='usersban', + name='reason', + field=models.CharField(blank=True, max_length=1024, null=True), + ), + ] diff --git a/ban/migrations/0003_remove_usersban_reason.py b/ban/migrations/0003_remove_usersban_reason.py new file mode 100644 index 0000000..e629295 --- /dev/null +++ b/ban/migrations/0003_remove_usersban_reason.py @@ -0,0 +1,17 @@ +# Generated by Django 3.2.3 on 2022-09-03 21:03 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('ban', '0002_usersban_reason'), + ] + + operations = [ + migrations.RemoveField( + model_name='usersban', + name='reason', + ), + ] diff --git a/ban/migrations/__init__.py b/ban/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/ban/migrations/__pycache__/0001_initial.cpython-310.pyc b/ban/migrations/__pycache__/0001_initial.cpython-310.pyc new file mode 100644 index 0000000..7f0eb0c Binary files /dev/null and b/ban/migrations/__pycache__/0001_initial.cpython-310.pyc differ diff --git a/ban/migrations/__pycache__/0002_usersban_reason.cpython-310.pyc b/ban/migrations/__pycache__/0002_usersban_reason.cpython-310.pyc new file mode 100644 index 0000000..f5fbf7a Binary files /dev/null and b/ban/migrations/__pycache__/0002_usersban_reason.cpython-310.pyc differ diff --git a/ban/migrations/__pycache__/0003_remove_usersban_reason.cpython-310.pyc b/ban/migrations/__pycache__/0003_remove_usersban_reason.cpython-310.pyc new file mode 100644 index 0000000..f5dd738 Binary files /dev/null and b/ban/migrations/__pycache__/0003_remove_usersban_reason.cpython-310.pyc differ diff --git a/ban/migrations/__pycache__/__init__.cpython-310.pyc b/ban/migrations/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000..2a6d6cb Binary files /dev/null and b/ban/migrations/__pycache__/__init__.cpython-310.pyc differ diff --git a/ban/models.py b/ban/models.py new file mode 100644 index 0000000..afe9c1e --- /dev/null +++ b/ban/models.py @@ -0,0 +1,16 @@ +from django.db import models +from django.conf import settings + +# Create your models here. + +class UsersBan(models.Model): + user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name="User name", help_text="Choose Username", on_delete=models.CASCADE) + + ban = models.BooleanField(default=False, verbose_name="Ban", help_text="Users Bans") + + class Meta: + verbose_name_plural = "Ban Management" + ordering = ('user', ) + + def __str__(self): + return '{}'.format(self.user) diff --git a/ban/templates/ban.html b/ban/templates/ban.html new file mode 100644 index 0000000..e104cf3 --- /dev/null +++ b/ban/templates/ban.html @@ -0,0 +1,7 @@ + + + + +

commit suicide

+ + \ No newline at end of file diff --git a/ban/tests.py b/ban/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/ban/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/ban/views.py b/ban/views.py new file mode 100644 index 0000000..91ea44a --- /dev/null +++ b/ban/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here. diff --git a/closedverse/__init__.py b/closedverse/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/closedverse/settings.py b/closedverse/settings.py new file mode 100644 index 0000000..b687ae9 --- /dev/null +++ b/closedverse/settings.py @@ -0,0 +1,240 @@ +""" +Django settings for closedverse project. + +Generated by 'django-admin startproject' using Django 1.10.7. + +For more information on this file, see +https://docs.djangoproject.com/en/1.10/topics/settings/ + +For the full list of settings and their values, see +https://docs.djangoproject.com/en/1.10/ref/settings/ +""" +# Django Settings +import os + +# Build paths inside the project like this: os.path.join(BASE_DIR, ...) +BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + +# SECURITY WARNING: don't run with debug turned on in production! +DEBUG = False +PROD = False + +# Quick-start development settings - unsuitable for production +# See https://docs.djangoproject.com/en/1.10/howto/deployment/checklist/ + +# SECURITY WARNING: keep the secret key used in production secret! (If you want a website that can generate key https://miniwebtool.com/django-secret-key-generator/ goto here.) +SECRET_KEY = '' + +# Change the ALLOWED_HOSTS to your liking. + +ALLOWED_HOSTS = [ + 'domain.com' +] + +DEFAULT_AUTO_FIELD = 'django.db.models.AutoField' + +# Application definition + +INSTALLED_APPS = [ + 'admin_interface', + 'colorfield', + 'django.contrib.admin', + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.messages', + 'django.contrib.staticfiles', + 'markdown_deux', + 'closedverse_main', + 'ban', + 'maintenance', +] +X_FRAME_OPTIONS='SAMEORIGIN' + +MIDDLEWARE = [ + 'django.middleware.security.SecurityMiddleware', + 'django.contrib.sessions.middleware.SessionMiddleware', + 'django.middleware.common.CommonMiddleware', + 'django.middleware.csrf.CsrfViewMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.contrib.messages.middleware.MessageMiddleware', + 'django.middleware.clickjacking.XFrameOptionsMiddleware', + 'ban.middleware.BanManagement', + 'closedverse_main.middleware.ClosedMiddleware', + 'maintenance.middleware.MaintenanceManagement', + 'whitenoise.middleware.WhiteNoiseMiddleware' +] + +ROOT_URLCONF = 'closedverse.urls' + +TEMPLATES = [ + { + 'BACKEND': 'django.template.backends.django.DjangoTemplates', + 'DIRS': [], + 'APP_DIRS': True, + 'OPTIONS': { + 'context_processors': [ + 'django.template.context_processors.debug', + 'django.template.context_processors.request', + 'django.contrib.auth.context_processors.auth', + 'django.contrib.messages.context_processors.messages', + ], + }, + }, +] + +WSGI_APPLICATION = 'closedverse.wsgi.application' + + +# Database +# https://docs.djangoproject.com/en/1.10/ref/settings/#databases + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', + 'NAME': BASE_DIR + '/sql.sqlite3', + } +} +# log errors. +LOGGING = { + 'version': 1, + 'disable_existing_loggers': False, + 'handlers': { + 'file': { + 'level': 'ERROR', + 'class': 'logging.FileHandler', + 'filename': 'logs/errors.log', + }, + }, + 'loggers': { + 'django': { + 'handlers': ['file'], + 'level': 'ERROR', + 'propagate': True, + }, + }, +} + + +# Password validation +# https://docs.djangoproject.com/en/1.10/ref/settings/#auth-password-validators + +AUTH_PASSWORD_VALIDATORS = [ + { + 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', + }, +] + + +# Internationalization +# https://docs.djangoproject.com/en/1.10/topics/i18n/ + +TIME_ZONE = 'PST8PDT' + +LANGUAGE_CODE = 'en-us' + +USE_I18N = True + +USE_L10N = True + +USE_TZ = True + +# You can use Mailtrap to get the email system working. Mailtrap is free and will work well for what you'll be doing with this. +EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' +EMAIL_HOST = 'send.smtp.mailtrap.io' +EMAIL_HOST_USER = 'api' +EMAIL_HOST_PASSWORD = '' +EMAIL_PORT = '' +EMAIL_USE_TLS = True +DEFAULT_FROM_EMAIL = 'noreply@domain' + +AUTH_USER_MODEL = 'closedverse_main.User' +CSRF_FAILURE_VIEW = 'closedverse_main.views.csrf_fail' +LOGIN_URL = '/login/' +LOGIN_REDIRECT_URL = '/login/' + +# Static files (CSS, JavaScript, Images) +# https://docs.djangoproject.com/en/1.10/howto/static-files/ +STATICFILES_DIRS = [ + os.path.join(BASE_DIR, 'static/') +] +STATIC_URL = '/s/' +STATIC_ROOT = os.path.join(BASE_DIR, 's/') +STATICFILES_STORAGE = 'whitenoise.storage.CompressedStaticFilesStorage' + +# Media root +# This MUST end with a trailing slash and there must be an 'rm' folder in it +MEDIA_ROOT = os.path.join(BASE_DIR, 'media/') +# URL that handles the media served from MEDIA_ROOT. Make sure to use a +# trailing slash. +# Examples: "http://media.lawrence.com/media/", "http://example.com/media/" +MEDIA_URL = '/i/' + +# Cedar Three settings +# reCAPTCHA v2 keys, None for no reCAPTCHA +recaptcha_pub = '' +recaptcha_priv = '' + +# NNID forbidden list. None for no passing. +nnid_forbiddens = BASE_DIR + '/forbidden.json' + +# Memo title and message on communities list +# I got rid of this setting because it was annoying i guess, edit the HTML to change it. -seedur + +# Client key to use for iphub.email, because we're using that +# None for no IP checking (recommended since this is so slow) +iphub_key = "" + +# If IP can be checked, then use this to disallow any proxies +disallow_proxy = False + +# MD +MARKDOWN_DEUX_STYLES = { + "default": { + "extras": { + "code-friendly": None, + }, + "safe_mode": "escape", + }, +} + +# allow sign ups. +allow_signups = True + +# Minimum level required to view IP addresses and user agents. (default: 10) +# Mods under this level will still be able to manage users, however will not be able to view any sensitive data. +min_lvl_metadata_perms = 10 + +# file size limits in megabytes! only applies when using the community tools. +max_icon_size = .5 +max_banner_size = 1 + +# The minimum length required for a user's password. This is to save the users from themselves in the event of a data breach. The longer and more complex the password is, the harder it is to be cracked. (default: 7) +# This will definitely miss a few people off who just want to sign up without worrying about long passwords. +minimum_password_length = 7 + +# The hard limit for uploading, Will cause an error if this is exceeded. This is set to 15MB by default (15728640) +DATA_UPLOAD_MAX_MEMORY_SIZE = 15728640 + +# Set the default theme here! Set this to None to use the normal Closedverse theme. +# TODO, make this work for users who aren't logged in. +site_wide_theme_hex = "#ff00cd" + +# The location to redirect to if a user's status is set to 2 (Redirect) (rickroll) +inactive_redirect = "https://www.youtube.com/watch?v=dQw4w9WgXcQ" + +# Option to delete image if it's local +# 0 - keep, 1 - move to 'rm' folder, 2 - DELETE +image_delete_opt = 0 + +# age (minimal 13 due to C.O.P.P.A) +age_allowed = "16" diff --git a/closedverse/urls.py b/closedverse/urls.py new file mode 100644 index 0000000..ffe183a --- /dev/null +++ b/closedverse/urls.py @@ -0,0 +1,30 @@ +"""closedverse URL Configuration + +The `urlpatterns` list routes URLs to views. For more information please see: + https://docs.djangoproject.com/en/1.10/topics/http/urls/ +Examples: +Function views + 1. Add an import: from my_app import views + 2. Add a URL to urlpatterns: url(r'^$', views.home, name='home') +Class-based views + 1. Add an import: from other_app.views import Home + 2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home') +Including another URLconf + 1. Import the include() function: from django.conf.urls import url, include + 2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls')) +""" +from django.conf.urls import url, include + +from django.contrib import admin +from .settings import INSTALLED_APPS, MEDIA_ROOT, MEDIA_URL +from django.conf.urls.static import static +handler500 = 'closedverse_main.views.server_err' +urlpatterns = [ + url(r'^admin/', admin.site.urls), + url(r'^', include('closedverse_main.urls')) +] + +if 'silk' in INSTALLED_APPS: + urlpatterns += [url(r'^silk/', include('silk.urls', namespace='silk'))] + +urlpatterns += static(MEDIA_URL, document_root=MEDIA_ROOT) diff --git a/closedverse/wsgi.py b/closedverse/wsgi.py new file mode 100644 index 0000000..1208e5b --- /dev/null +++ b/closedverse/wsgi.py @@ -0,0 +1,16 @@ +""" +WSGI config for closedverse project. + +It exposes the WSGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/1.10/howto/deployment/wsgi/ +""" + +import os + +from django.core.wsgi import get_wsgi_application + +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "closedverse.settings") + +application = get_wsgi_application() diff --git a/closedverse_main/__init__.py b/closedverse_main/__init__.py new file mode 100644 index 0000000..c232b53 --- /dev/null +++ b/closedverse_main/__init__.py @@ -0,0 +1 @@ +default_app_config = 'closedverse_main.apps.ClosedverseMainConfig' diff --git a/closedverse_main/admin.py b/closedverse_main/admin.py new file mode 100644 index 0000000..be79a2c --- /dev/null +++ b/closedverse_main/admin.py @@ -0,0 +1,161 @@ +from django.contrib import admin +#from django.contrib.auth.admin import UserAdmin +from django.contrib.auth.models import Group +from django.forms import ModelForm, PasswordInput +from closedverse_main import models +from closedverse import settings + +from . import models + +# Override admin login page +from closedverse_main.views import login_page +admin.autodiscover() +admin.site.login = login_page + +""" +class UserForm(ModelForm): + class Meta: + model = models.User + fields = '__all__' + widgets = { + 'password': PasswordInput(), + } +""" +@admin.action(description='Hide selected items') +def Hide_Memo(modeladmin, request, queryset): + queryset.update(show = False) +@admin.action(description='Show selected items') +def Show_Memo(modeladmin, request, queryset): + queryset.update(show = True) +@admin.action(description='Hide selected items') +def Hide_content(modeladmin, request, queryset): + queryset.update(is_rm = True) +@admin.action(description='Show selected items') +def Show_content(modeladmin, request, queryset): + queryset.update(is_rm = False) +@admin.action(description='Feature selected communities') +def Feature_community(modeladmin, request, queryset): + queryset.update(is_feature = True) +@admin.action(description='Unfeature selected communities') +def Unfeature_community(modeladmin, request, queryset): + queryset.update(is_feature = False) +@admin.action(description='Force login') +def force_login(modeladmin, request, queryset): + queryset.update(require_auth = True) +@admin.action(description='Unforce login') +def unforce_login(modeladmin, request, queryset): + queryset.update(require_auth = False) +@admin.action(description='Disable user') +def Disable_user(modeladmin, request, queryset): + queryset.update(active = False) + +class UserAdmin(admin.ModelAdmin): + search_fields = ('id', 'unique_id', 'username', 'nickname', 'email', ) + list_display = ('id', 'username', 'nickname', 'warned', 'level', 'staff', 'active', ) + exclude = ('addr', 'signup_addr', 'password', ) + actions = [Disable_user] + #exclude = ('staff', ) + # Not yet + #form = UserForm +class ProfileAdmin(admin.ModelAdmin): + search_fields = ('id', 'unique_id', 'origin_id', ) + raw_id_fields = ('user', 'favorite', 'adopted', ) + list_display = ('id', 'user', 'comment', 'let_freedom', ) + +class ComplaintAdmin(admin.ModelAdmin): + search_fields = ('id', 'unique_id', 'body', ) + raw_id_fields = ('creator', ) +class ConversationAdmin(admin.ModelAdmin): + search_fields = ('id', 'unique_id', ) + raw_id_fields = ('source', 'target', ) + +class PostAdmin(admin.ModelAdmin): + raw_id_fields = ('creator', 'poll', ) + search_fields = ('id', 'unique_id', 'body', 'creator__username', ) + list_display = ('id', 'creator', 'body', 'is_rm', ) + actions = [Hide_content, Show_content] + def get_queryset(self, request): + return models.Post.real.get_queryset() + +class CommentAdmin(admin.ModelAdmin): + raw_id_fields = ('creator', 'original_post', ) + search_fields = ('id', 'unique_id', 'body', 'creator__username', ) + list_display = ('id', 'creator', 'body', 'original_post', 'is_rm', ) + actions = [Hide_content, Show_content] + def get_queryset(self, request): + return models.Comment.real.get_queryset() + +class CommunityAdmin(admin.ModelAdmin): + raw_id_fields = ('creator', ) + list_display = ('id', 'name', 'description', 'type', 'creator', 'is_rm', 'is_feature', 'require_auth') + search_fields = ('id', 'unique_id', 'name', 'description', ) + actions = [Hide_content, Show_content, Feature_community, Unfeature_community, force_login, unforce_login] + def get_queryset(self, request): + return models.Community.real.get_queryset() + +class MessageAdmin(admin.ModelAdmin): + raw_id_fields = ('creator', 'conversation', ) + search_fields = ('id', 'unique_id', 'body', 'creator__username', ) + list_display = ('id', 'creator', 'conversation', 'body', ) + actions = [Hide_content, Show_content] + def get_queryset(self, request): + return models.Message.real.get_queryset() + +class NotificationAdmin(admin.ModelAdmin): + raw_id_fields = ('to', 'source', 'context_post', 'context_comment', ) + search_fields = ('unique_id', ) + list_display = ('id', 'to', 'source', 'context_post', 'context_comment', ) + +class AuditAdmin(admin.ModelAdmin): + raw_id_fields = ('by', 'user', 'post', 'comment', 'reversed_by', ) + search_fields = ('by__username', 'user__username', ) + +class AdsAdmin(admin.ModelAdmin): + raw_id_fileds = ('id', 'created', 'url', 'imageurl') + +class MOTDAdmin(admin.ModelAdmin): + raw_id_fileds = ('id', 'created', 'message', ) + list_display = ('message', 'show', 'order', 'created', ) + actions = [Hide_Memo, Show_Memo] + +class WelcomemsgAdmin(admin.ModelAdmin): + raw_id_fileds = ('id', 'created', 'message', ) + list_display = ('Title', 'message', 'show', 'order', 'created', ) + actions = [Hide_Memo, Show_Memo] + +class YeahAdmin(admin.ModelAdmin): + raw_id_fields = ('by', 'post', 'comment', ) + list_display = ('by', 'post', 'comment', ) + search_fields = ('by__username', 'post__body', 'comment__body', ) + +class HistoryAdmin(admin.ModelAdmin): + raw_id_fields = ('user',) + list_display = ('id', 'user') + +#class BlockAdmin(admin.ModelAdmin) + +admin.site.unregister(Group) + +admin.site.register(models.User, UserAdmin) +admin.site.register(models.Profile, ProfileAdmin) +admin.site.register(models.Community, CommunityAdmin) +admin.site.register(models.Complaint, ComplaintAdmin) +admin.site.register(models.Message, MessageAdmin) +admin.site.register(models.Conversation, ConversationAdmin) +admin.site.register(models.Notification, NotificationAdmin) +admin.site.register(models.UserBlock) +admin.site.register(models.AuditLog, AuditAdmin) +admin.site.register(models.ProfileHistory, HistoryAdmin) + + +admin.site.register(models.Post, PostAdmin) +admin.site.register(models.Comment, CommentAdmin) +admin.site.register(models.Ads, AdsAdmin) +admin.site.register(models.Motd, MOTDAdmin) +admin.site.register(models.welcomemsg, WelcomemsgAdmin) +admin.site.register(models.Yeah, YeahAdmin) +admin.site.register(models.Follow) +admin.site.register(models.FriendRequest) +admin.site.register(models.Friendship, ConversationAdmin) +admin.site.register(models.Poll) +admin.site.register(models.PollVote) diff --git a/closedverse_main/apps.py b/closedverse_main/apps.py new file mode 100644 index 0000000..5024b69 --- /dev/null +++ b/closedverse_main/apps.py @@ -0,0 +1,8 @@ +from __future__ import unicode_literals + +from django.apps import AppConfig + + +class ClosedverseMainConfig(AppConfig): + name = 'closedverse_main' + verbose_name = "Cedar" diff --git a/closedverse_main/context_processors.py b/closedverse_main/context_processors.py new file mode 100644 index 0000000..e69de29 diff --git a/closedverse_main/middleware.py b/closedverse_main/middleware.py new file mode 100644 index 0000000..880d444 --- /dev/null +++ b/closedverse_main/middleware.py @@ -0,0 +1,72 @@ +from django.http import HttpResponseForbidden, HttpResponseBadRequest +from closedverse import settings +from django.shortcuts import render +from django.shortcuts import redirect +from django.contrib.auth import logout +from re import compile + +class ClosedMiddleware(object): + def __init__(self, get_response): + self.get_response = get_response + + def __call__(self, request): + response = self.get_response(request) + if request.user.is_authenticated: + if not request.user.profile(): + return HttpResponseForbidden('So, Somehow your profile is completely gone. Your account itself still exists, but your profile does not. Please contact an admin, and ask them to make a profile for you. If you are unable to contact someone, you should make a new account.') + else: + return response + ''' + for keyword in ['24.61.157.95', ]: + if keyword in request.META['HTTP_CF_CONNECTING_IP']: + return redirect('https://file.garden/Xbo5elapeDSxWf1x/adam.mp4') + + for keyword in ['PlayStation', 'Switch', '3DS', ]: + if keyword in request.META['HTTP_USER_AGENT']: + return HttpResponseForbidden('Error code 403') + ''' + else: + return response + +# Taken from https://python-programming.com/recipes/django-require-authentication-pages/ +''' +class ClosedMiddleware(object): + def __init__(self, get_response): + self.get_response = get_response + + def __call__(self, request): + # Force logins if it's set + if settings.force_login and not request.user.is_authenticated: + if not any(m.match(request.path_info.lstrip('/')) for m in EXEMPT_URLS): + if request.is_ajax(): + return HttpResponseForbidden("Login is required") + return redirect(settings.LOGIN_REDIRECT_URL) + # Fix this ; put something in settings signifying if the server supports HTTPS or not + if not request.is_secure() and (not settings.DEBUG) and settings.PROD: + # Let's try to redirect to HTTPS for non-Nintendo stuff. + if not request.META.get('HTTP_USER_AGENT'): + return HttpResponseForbidden("You need a user agent.", content_type='text/plain') + if not request.is_secure() and not 'Nintendo' in request.META['HTTP_USER_AGENT']: + return redirect('https://{0}{1}'.format(request.get_host(), request.get_full_path())) + if request.user.is_authenticated: + # User active; this doesn't work at the moment due to Postgres not being able to change bools to ints + if request.user.is_active() == 0: + return HttpResponseForbidden() + elif request.user.is_active() == 2: + return redirect(settings.inactive_redirect) + + if not request.user.is_active: + return HttpResponseForbidden() + # If there isn't a request.session + if not request.session.get('passwd'): + request.session['passwd'] = request.user.password + else: + if request.session['passwd'] != request.user.password: + logout(request) + response = self.get_response(request) + + return response + ''' + +""" +return HttpResponseForbidden("You're one sick fuck. I would never suggest removing an Inkling girl's clothes and licking her tiny body all over, nibbling her neck and kissing her adorable little nipples. Only a heartless monster would think about her cute girlish mouth and tongue wrapped around a thick cock slick with her saliva, pumping in and out of her mouth until it erupts, the cum more than her little throat can swallow. The idea of thick viscous semen overflowing, dribbling down her chin over her flat chest, her tiny hands scooping it all up and watching her suck it off her fingertips is just horrible. You're all a bunch of sick perverts, thinking of spreading her smooth slender thighs, cock poised at the entrance to her pure, tight, virginal pussy, and thrusting in deep as a whimper escapes her lips which are slippery with cum, while her small body shudders from having her cherry taken in one quick stroke. I am disgusted at how you'd get even more excited as you lean over her, listening to her quickening breath, her girlish moans and gasps while you hasten your strokes, her sweet pants warm and moist on your face and her flat chest, shiny with a sheen of fresh sweat, rising and falling rapidly to meet yours. It is truly nasty how you'd run your hands all over her tiny body while you violate her, feeling her nipples hardening against your tongue as you lick her chest, her neck and her armpits, savoring the scent of her skin and sweat while she trembles from the stimulation and as she reaches her climax, hearing her cry out softly as she has her first orgasm while that cock is buried impossibly deep inside her, pulsing violently as an intense amount of hot cum spurts forth and floods through her freshly-deflowered pussy for the first time, filling her womb only to spill out of her with a sickening squelch. And as you lie atop her flushed body, she murmurs breathlessly, \"You came so much inside of me,\" then her fingers dig into your back as she feels your cock hardening inside again.", content_type='text/plain')""" diff --git a/closedverse_main/migrations/0001_initial.py b/closedverse_main/migrations/0001_initial.py new file mode 100644 index 0000000..f5a3673 --- /dev/null +++ b/closedverse_main/migrations/0001_initial.py @@ -0,0 +1,433 @@ +# Generated by Django 3.2.3 on 2023-02-07 01:50 + +import closedverse_main.models +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion +import uuid + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='User', + fields=[ + ('unique_id', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)), + ('id', models.AutoField(primary_key=True, serialize=False)), + ('username', models.CharField(max_length=32, unique=True)), + ('nickname', models.CharField(max_length=64, null=True)), + ('password', models.CharField(max_length=128)), + ('email', models.EmailField(blank=True, default='', max_length=254, null=True)), + ('has_mh', models.BooleanField(default=False)), + ('avatar', models.CharField(blank=True, default='', max_length=1200)), + ('theme', closedverse_main.models.ColorField(blank=True, max_length=18, null=True)), + ('level', models.SmallIntegerField(default=0)), + ('role', models.SmallIntegerField(choices=[(0, 'normal'), (1, 'Bot'), (2, 'Administrator'), (3, 'Moderator'), (4, 'NO'), (5, 'Donator'), (6, 'Tester'), (7, 'Cools'), (8, 'Developer'), (9, 'SMF9-Django'), (10, 'Staff'), (11, 'GAY DOGWATER'), (12, 'DUMB SNAIL'), (13, 'Russian ADRIAN'), (14, 'Contest'), (15, 'Gamecon'), (16, 'Cedar')], default=0)), + ('addr', models.CharField(blank=True, max_length=64, null=True)), + ('signup_addr', models.CharField(blank=True, max_length=64, null=True)), + ('user_agent', models.TextField(blank=True, null=True)), + ('c_tokens', models.IntegerField(default=1)), + ('hide_online', models.BooleanField(default=False)), + ('color', closedverse_main.models.ColorField(blank=True, default='', max_length=18, null=True)), + ('staff', models.BooleanField(default=False)), + ('active', models.BooleanField(default=True)), + ('warned', models.BooleanField(default=False)), + ('warned_reason', models.CharField(blank=True, max_length=600, null=True)), + ('bg_url', models.CharField(blank=True, max_length=300, null=True)), + ('last_login', models.DateTimeField(auto_now=True)), + ('created', models.DateTimeField(auto_now_add=True)), + ], + ), + migrations.CreateModel( + name='Ads', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False)), + ('created', models.DateTimeField(auto_now_add=True)), + ('url', models.CharField(max_length=256)), + ('imageurl', models.ImageField(upload_to='ad/%y/%m/%d/')), + ], + ), + migrations.CreateModel( + name='Comment', + fields=[ + ('unique_id', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)), + ('id', models.AutoField(primary_key=True, serialize=False)), + ('feeling', models.SmallIntegerField(choices=[(0, 'normal'), (1, 'happy'), (2, 'wink'), (3, 'surprised'), (4, 'frustrated'), (5, 'confused'), (38, 'japan'), (39, 'lol i lied'), (69, 'adam is gay'), (70, 'I am a faggot!'), (71, 'Juice'), (72, 'Commit Suicide'), (73, 'Fresh!')], default=0)), + ('body', models.TextField(null=True)), + ('screenshot', models.CharField(blank=True, default='', max_length=1200, null=True)), + ('drawing', models.CharField(blank=True, max_length=200, null=True)), + ('spoils', models.BooleanField(default=False)), + ('created', models.DateTimeField(auto_now_add=True)), + ('edited', models.DateTimeField(auto_now=True)), + ('befores', models.TextField(blank=True, null=True)), + ('has_edit', models.BooleanField(default=False)), + ('is_rm', models.BooleanField(default=False)), + ('status', models.SmallIntegerField(choices=[(0, 'ok'), (1, 'delete by user'), (2, 'delete by authority'), (3, 'delete by mod'), (4, 'delete by admin'), (5, 'account pruge')], default=0)), + ], + ), + migrations.CreateModel( + name='Community', + fields=[ + ('unique_id', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)), + ('id', models.AutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=255)), + ('description', models.TextField(blank=True, default='')), + ('ico', models.ImageField(blank=True, null=True, upload_to='icon/%y/%m/%d/')), + ('banner', models.ImageField(blank=True, null=True, upload_to='banner/%y/%m/%d/')), + ('type', models.SmallIntegerField(choices=[(0, 'General'), (1, 'Game'), (2, 'Special'), (3, 'User Community'), (4, 'Hide')], default=0)), + ('platform', models.SmallIntegerField(choices=[(0, 'none'), (1, '3ds'), (2, 'wii u'), (3, 'switch'), (4, 'both'), (5, 'PC'), (6, 'Xbox'), (7, 'Playstation')], default=0)), + ('tags', models.CharField(blank=True, choices=[('announcements', 'main announcement community'), ('changelog', 'main changelog'), ('activity', 'Activity Feed posting community'), ('general', 'General Discussion Community')], max_length=255, null=True)), + ('created', models.DateTimeField(auto_now_add=True)), + ('updated', models.DateTimeField(auto_now=True)), + ('is_rm', models.BooleanField(default=False)), + ('is_feature', models.BooleanField(default=False)), + ('require_auth', models.BooleanField(default=False)), + ('allowed_users', models.TextField(blank=True, null=True)), + ('creator', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ], + options={ + 'verbose_name_plural': 'communities', + }, + ), + migrations.CreateModel( + name='Conversation', + fields=[ + ('unique_id', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)), + ('id', models.AutoField(primary_key=True, serialize=False)), + ('created', models.DateTimeField(auto_now_add=True)), + ('source', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='conv_source', to=settings.AUTH_USER_MODEL)), + ('target', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='conv_target', to=settings.AUTH_USER_MODEL)), + ], + ), + migrations.CreateModel( + name='Motd', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False)), + ('order', models.IntegerField(default=1, max_length=3)), + ('show', models.BooleanField(default=True)), + ('created', models.DateTimeField(auto_now_add=True)), + ('Title', models.CharField(blank=True, default='Title', max_length=256)), + ('message', models.TextField()), + ('hide_date', models.BooleanField(default=False)), + ('image', models.ImageField(blank=True, max_length=255, null=True, upload_to='MOTD/%y/%m/%d/')), + ], + ), + migrations.CreateModel( + name='Poll', + fields=[ + ('unique_id', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)), + ('id', models.AutoField(primary_key=True, serialize=False)), + ('able_vote', models.BooleanField(default=True)), + ('choices', models.TextField(default='[]')), + ('created', models.DateTimeField(auto_now_add=True)), + ], + ), + migrations.CreateModel( + name='Post', + fields=[ + ('unique_id', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)), + ('id', models.AutoField(primary_key=True, serialize=False)), + ('feeling', models.SmallIntegerField(choices=[(0, 'normal'), (1, 'happy'), (2, 'wink'), (3, 'surprised'), (4, 'frustrated'), (5, 'confused'), (38, 'japan'), (39, 'lol i lied'), (69, 'adam is gay'), (70, 'I am a faggot!'), (71, 'Juice'), (72, 'Commit Suicide'), (73, 'Fresh!')], default=0)), + ('body', models.TextField(null=True)), + ('drawing', models.CharField(blank=True, max_length=200, null=True)), + ('screenshot', models.CharField(blank=True, default='', max_length=1200, null=True)), + ('url', models.URLField(blank=True, default='', max_length=1200, null=True)), + ('spoils', models.BooleanField(default=False)), + ('disable_yeah', models.BooleanField(default=False)), + ('created', models.DateTimeField(auto_now_add=True)), + ('edited', models.DateTimeField(auto_now=True)), + ('befores', models.TextField(blank=True, null=True)), + ('has_edit', models.BooleanField(default=False)), + ('is_rm', models.BooleanField(default=False)), + ('status', models.SmallIntegerField(choices=[(0, 'ok'), (1, 'delete by user'), (2, 'delete by authority'), (3, 'delete by mod'), (4, 'delete by admin'), (5, 'account pruge')], default=0)), + ('community', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='closedverse_main.community')), + ('creator', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ('poll', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='closedverse_main.poll')), + ], + ), + migrations.CreateModel( + name='welcomemsg', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False)), + ('order', models.IntegerField(default=1, max_length=3)), + ('show', models.BooleanField(default=True)), + ('created', models.DateTimeField(auto_now_add=True)), + ('Title', models.CharField(default='Title', max_length=256)), + ('message', models.TextField()), + ('image', models.ImageField(blank=True, max_length=255, null=True, upload_to='welcomemsg/%y/%m/%d/')), + ], + ), + migrations.CreateModel( + name='UserRequest', + fields=[ + ('user_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='closedverse_main.user')), + ('ua', models.TextField(blank=True, default='', null=True)), + ('latest', models.DateTimeField(auto_now=True)), + ('status', models.SmallIntegerField(choices=[(0, 'submitted'), (1, 'viewed'), (2, 'accepted'), (3, 'decline'), (4, 'ignore')], default=0)), + ], + bases=('closedverse_main.user',), + ), + migrations.CreateModel( + name='Yeah', + fields=[ + ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False, unique=True)), + ('type', models.SmallIntegerField(choices=[(0, 'post'), (1, 'comment')], default=0)), + ('created', models.DateTimeField(auto_now_add=True)), + ('by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ('comment', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='closedverse_main.comment')), + ('post', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='closedverse_main.post')), + ], + ), + migrations.CreateModel( + name='UserBlock', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False)), + ('created', models.DateTimeField(auto_now_add=True)), + ('full', models.BooleanField(default=False)), + ('source', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='block_source', to=settings.AUTH_USER_MODEL)), + ('target', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='block_target', to=settings.AUTH_USER_MODEL)), + ], + ), + migrations.CreateModel( + name='ThermostatTouch', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False)), + ('created', models.DateTimeField(auto_now_add=True)), + ('lvl', models.IntegerField(default=1)), + ('who', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ], + ), + migrations.CreateModel( + name='Restriction', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False)), + ('created', models.DateTimeField(auto_now_add=True)), + ('type', models.SmallIntegerField(choices=[(0, 'Prevent yeah'), (1, 'Prevent follow'), (2, 'Prevent comment')])), + ('by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='restriction_by', to=settings.AUTH_USER_MODEL)), + ('comment', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='restriction_comment', to='closedverse_main.comment')), + ('post', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='restriction_post', to='closedverse_main.post')), + ('user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='restriction_user', to=settings.AUTH_USER_MODEL)), + ], + ), + migrations.CreateModel( + name='RedFlag', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False)), + ('created', models.DateTimeField(auto_now_add=True)), + ('type', models.SmallIntegerField(choices=[(0, 'Post'), (1, 'Comment'), (2, 'User')])), + ('reason', models.SmallIntegerField(choices=[(0, 'Actual harassment'), (1, 'Spam'), (2, "I don't like this"), (3, 'Personal info'), (4, 'Obscene use of swearing'), (5, 'NSFW where not allowed'), (6, 'Overly advertising/spam'), (7, 'Please delete this')])), + ('reasoning', models.TextField(blank=True, default='', null=True)), + ('comment', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='closedverse_main.comment')), + ('post', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='closedverse_main.post')), + ('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ], + ), + migrations.CreateModel( + name='ProfileHistory', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False)), + ('created', models.DateTimeField(auto_now_add=True)), + ('old_nickname', models.CharField(blank=True, max_length=64)), + ('new_nickname', models.CharField(blank=True, max_length=64)), + ('old_comment', models.TextField(blank=True)), + ('new_comment', models.TextField(blank=True)), + ('user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ], + ), + migrations.CreateModel( + name='Profile', + fields=[ + ('is_new', models.BooleanField(default=True)), + ('unique_id', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)), + ('id', models.AutoField(primary_key=True, serialize=False)), + ('origin_id', models.CharField(blank=True, max_length=16, null=True)), + ('origin_info', models.CharField(blank=True, max_length=255, null=True)), + ('comment', models.TextField(blank=True, default='')), + ('country', models.CharField(blank=True, default='', max_length=120)), + ('whatareyou', models.CharField(blank=True, default='', max_length=120)), + ('id_visibility', models.SmallIntegerField(choices=[(0, 'show'), (1, 'friends only'), (2, 'hide')], default=0)), + ('pronoun_is', models.IntegerField(choices=[(0, "I don't know"), (1, 'He/him'), (2, 'She/her'), (3, 'He/she'), (4, 'It'), (5, 'They/Them')], default=0)), + ('gender_is', models.IntegerField(choices=[(0, "I don't know"), (1, 'Girl'), (2, 'Boy'), (3, 'Minion'), (4, 'Toaster'), (5, 'Dinosaur'), (6, 'Truck'), (7, 'Robot'), (8, 'Monkey'), (9, 'Big chungus'), (10, 'Other')], default=0)), + ('let_friendrequest', models.SmallIntegerField(choices=[(0, 'show'), (1, 'friends only'), (2, 'hide')], default=0)), + ('yeahs_visibility', models.SmallIntegerField(choices=[(0, 'show'), (1, 'friends only'), (2, 'hide')], default=0)), + ('comments_visibility', models.SmallIntegerField(choices=[(0, 'show'), (1, 'friends only'), (2, 'hide')], default=2)), + ('weblink', models.CharField(blank=True, default='', max_length=1200)), + ('external', models.CharField(blank=True, default='', max_length=255)), + ('let_yeahnotifs', models.BooleanField(default=True)), + ('let_freedom', models.BooleanField(default=True)), + ('limit_post', models.SmallIntegerField(default=0)), + ('cannot_edit', models.BooleanField(default=False)), + ('email_login', models.SmallIntegerField(choices=[(0, 'Do not allow'), (1, 'Okay'), (2, 'Only allow')], default=1)), + ('adopted', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='children', to=settings.AUTH_USER_MODEL)), + ('favorite', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='closedverse_main.post')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ], + ), + migrations.CreateModel( + name='PollVote', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False)), + ('done', models.DateTimeField(auto_now_add=True)), + ('choice', models.SmallIntegerField(default=0)), + ('by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ('poll', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='closedverse_main.poll')), + ], + ), + migrations.CreateModel( + name='Notification', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('unique_id', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)), + ('read', models.BooleanField(default=False)), + ('type', models.SmallIntegerField(choices=[(0, 'Yeah on post'), (1, 'Yeah on comment'), (2, 'Comment on my post'), (3, "Comment on others' post"), (4, 'Follow to me')])), + ('merges', models.TextField(blank=True, default='')), + ('created', models.DateTimeField(auto_now_add=True)), + ('latest', models.DateTimeField(auto_now=True)), + ('context_comment', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='closedverse_main.comment')), + ('context_post', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='closedverse_main.post')), + ('source', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='notification_sender', to=settings.AUTH_USER_MODEL)), + ('to', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='notification_to', to=settings.AUTH_USER_MODEL)), + ], + ), + migrations.CreateModel( + name='Message', + fields=[ + ('unique_id', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)), + ('id', models.AutoField(primary_key=True, serialize=False)), + ('feeling', models.SmallIntegerField(choices=[(0, 'normal'), (1, 'happy'), (2, 'wink'), (3, 'surprised'), (4, 'frustrated'), (5, 'confused'), (38, 'japan'), (39, 'lol i lied'), (69, 'adam is gay'), (70, 'I am a faggot!'), (71, 'Juice'), (72, 'Commit Suicide'), (73, 'Fresh!')], default=0)), + ('body', models.TextField(null=True)), + ('drawing', models.CharField(blank=True, max_length=200, null=True)), + ('screenshot', models.CharField(blank=True, default='', max_length=1200, null=True)), + ('url', models.URLField(blank=True, default='', max_length=1200, null=True)), + ('created', models.DateTimeField(auto_now_add=True)), + ('read', models.BooleanField(default=False)), + ('is_rm', models.BooleanField(default=False)), + ('conversation', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='closedverse_main.conversation')), + ('creator', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ], + ), + migrations.CreateModel( + name='LoginAttempt', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False)), + ('created', models.DateTimeField(auto_now_add=True)), + ('success', models.BooleanField(default=False)), + ('addr', models.CharField(blank=True, max_length=64, null=True)), + ('user_agent', models.TextField(blank=True, null=True)), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ], + ), + migrations.CreateModel( + name='Friendship', + fields=[ + ('unique_id', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)), + ('id', models.AutoField(primary_key=True, serialize=False)), + ('created', models.DateTimeField(auto_now_add=True)), + ('latest', models.DateTimeField(auto_now=True)), + ('source', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='friend_source', to=settings.AUTH_USER_MODEL)), + ('target', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='friend_target', to=settings.AUTH_USER_MODEL)), + ], + ), + migrations.CreateModel( + name='FriendRequest', + fields=[ + ('unique_id', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)), + ('id', models.AutoField(primary_key=True, serialize=False)), + ('body', models.TextField(blank=True, default='', null=True)), + ('read', models.BooleanField(default=False)), + ('finished', models.BooleanField(default=False)), + ('created', models.DateTimeField(auto_now_add=True)), + ('source', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='fr_source', to=settings.AUTH_USER_MODEL)), + ('target', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='fr_target', to=settings.AUTH_USER_MODEL)), + ], + ), + migrations.CreateModel( + name='Follow', + fields=[ + ('unique_id', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)), + ('id', models.AutoField(primary_key=True, serialize=False)), + ('created', models.DateTimeField(auto_now_add=True)), + ('source', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='follow_source', to=settings.AUTH_USER_MODEL)), + ('target', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='follow_target', to=settings.AUTH_USER_MODEL)), + ], + ), + migrations.CreateModel( + name='ConversationInvite', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False)), + ('body', models.TextField(blank=True, default='', null=True)), + ('read', models.BooleanField(default=False)), + ('finished', models.BooleanField(default=False)), + ('created', models.DateTimeField(auto_now_add=True)), + ('conversation', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='closedverse_main.conversation')), + ('source', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='convinvite_source', to=settings.AUTH_USER_MODEL)), + ('target', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='convinvite_target', to=settings.AUTH_USER_MODEL)), + ], + ), + migrations.CreateModel( + name='Complaint', + fields=[ + ('unique_id', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)), + ('id', models.AutoField(primary_key=True, serialize=False)), + ('type', models.SmallIntegerField(choices=[(0, 'Bug report'), (1, 'Suggestion'), (2, 'Want')])), + ('body', models.TextField(blank=True, default='')), + ('sex', models.SmallIntegerField(choices=[(0, 'girl'), (1, 'privileged one'), (2, '(none)')], null=True)), + ('created', models.DateTimeField(auto_now_add=True)), + ('creator', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ], + ), + migrations.CreateModel( + name='CommunityFavorite', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False)), + ('created', models.DateTimeField(auto_now_add=True)), + ('by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ('community', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='closedverse_main.community')), + ], + ), + migrations.CreateModel( + name='CommunityClink', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('created', models.DateTimeField(auto_now_add=True)), + ('kind', models.BooleanField(default=False)), + ('also', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='two', to='closedverse_main.community')), + ('root', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='one', to='closedverse_main.community')), + ], + ), + migrations.AddField( + model_name='comment', + name='community', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='closedverse_main.community'), + ), + migrations.AddField( + model_name='comment', + name='creator', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), + ), + migrations.AddField( + model_name='comment', + name='original_post', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='closedverse_main.post'), + ), + migrations.CreateModel( + name='AuditLog', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False)), + ('created', models.DateTimeField(auto_now_add=True)), + ('type', models.SmallIntegerField(choices=[(0, 'Post delete'), (1, 'Comment delete'), (2, 'User edit'), (3, 'Generate passwd reset'), (4, 'User delete'), (5, 'Image delete'), (6, 'Purge 1'), (7, 'Purge 2'), (8, 'Purge 3'), (9, 'Purge 4'), (10, 'Purge 5'), (11, 'Un-purge 1'), (12, 'Changed server settings')])), + ('reasoning', models.TextField(blank=True, default='', null=True)), + ('by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='audit_by', to=settings.AUTH_USER_MODEL)), + ('comment', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='audit_comment', to='closedverse_main.comment')), + ('post', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='audit_post', to='closedverse_main.post')), + ('reversed_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='audit_reverse_by', to=settings.AUTH_USER_MODEL)), + ('user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='audit_user', to=settings.AUTH_USER_MODEL)), + ], + ), + ] diff --git a/closedverse_main/migrations/0002_metaviews.py b/closedverse_main/migrations/0002_metaviews.py new file mode 100644 index 0000000..389d414 --- /dev/null +++ b/closedverse_main/migrations/0002_metaviews.py @@ -0,0 +1,24 @@ +# Generated by Django 3.2.3 on 2023-02-08 00:56 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('closedverse_main', '0001_initial'), + ] + + operations = [ + migrations.CreateModel( + name='MetaViews', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False)), + ('created', models.DateTimeField(auto_now_add=True)), + ('from_user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='from_user', to=settings.AUTH_USER_MODEL)), + ('target_user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='target_user', to=settings.AUTH_USER_MODEL)), + ], + ), + ] diff --git a/closedverse_main/migrations/__init__.py b/closedverse_main/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/closedverse_main/models.py b/closedverse_main/models.py new file mode 100644 index 0000000..ddfe649 --- /dev/null +++ b/closedverse_main/models.py @@ -0,0 +1,1799 @@ +from __future__ import unicode_literals +from colorfield.fields import ColorField +from django.db import models +from django.contrib.auth.models import BaseUserManager +from django.db.models import Q, QuerySet, Max, F, Count, Case, When, Exists, OuterRef +from django.utils import timezone +from django.forms.models import model_to_dict +from django.utils.dateformat import format +from django.core.validators import RegexValidator, URLValidator +from django.core.exceptions import ValidationError +from datetime import timedelta, datetime, date, time +from passlib.hash import bcrypt_sha256 +from closedverse import settings +from . import util +from random import getrandbits +import uuid, json, base64 +from django.core.mail import send_mail +from django.template.loader import render_to_string +from django.urls import reverse +from django.db.models.signals import pre_delete +from django.dispatch import receiver +import re +import random + +feelings = ((0, 'normal'), (1, 'happy'), (2, 'wink'), (3, 'surprised'), (4, 'frustrated'), (5, 'confused'), (38, 'japan'), (39, 'lol i lied'), (69, 'adam is gay'), (70, 'I am a faggot!'), (71, 'Juice'), (72, "Commit Suicide"), (73, "Fresh!")) +post_status = ((0, 'ok'), (1, 'delete by user'), (2, 'delete by authority'), (3, 'delete by mod'), (4, 'delete by admin'), (5, 'account pruge')) +visibility = ((0, 'show'), (1, 'friends only'), (2, 'hide'), ) + +# Like set() but orders +def organ(seq): + seen = set() + seen_add = seen.add + return [x for x in seq if not (x in seen or seen_add(x))] + +class UserManager(BaseUserManager): + # idk why this is even here + def create_user(self, username, password): + user = self.model( + username=username, + ) + user.set_password(password) + user.save(using=self._db) + return user + + def closed_create_user(self, username, password, email, addr, signup_addr, user_agent, nick, nn, gravatar): + user = self.model( + username = username, + nickname = util.filterchars(nick), + addr = addr, + signup_addr = signup_addr, + user_agent = user_agent, + email = email, + ) + spamuser = True + profile = Profile.objects.model() + if nn: + user.avatar = nn[0] + profile.origin_id = nn[2] + profile.origin_info = json.dumps(nn) + user.has_mh = True + else: + user.avatar = util.get_gravatar(email) or ('s' if getrandbits(1) else '') + + user.has_mh = False + user.set_password(password) + user.save(using=self._db) + if spamuser: + profile.let_freedom = True + else: + profile.let_freedom = True + profile.user = user + profile.save() + return user + def create_superuser(self, username, password): + user = self.model( + username=username, + ) + user.set_password(password) + user.staff = True + user.save() + profile = Profile.objects.model() + profile.user = user + profile.save() + return user + def authenticate(self, username, password): + if not username or username.isspace(): + return None + user = self.filter(Q(username__iexact=username.replace(' ', '')) | Q(username__iexact=username) | Q(email=username)) + if not user.exists(): + return None + user = user.first() + # If the user is an admin, say that they don't exist, actually no... + # Or, if the user doesn't want username login, don't let them if they didn't enter their email + if user.profile('email_login') == 2 and not user.email == username: + return None + elif user.profile('email_login') == 0 and user.email == username: + return None + try: + passwd = user.check_password(password) + # Check if the password is a valid bcrypt + except ValueError: + return (user, 2) + else: + if not passwd: + return (user, False) + return (user, True) + +class PostManager(models.Manager): + def get_queryset(self): + return super(PostManager, self).get_queryset().filter(is_rm=False) + +class CommunityFavoriteManager(models.Manager): + def get_queryset(self): + return super(CommunityFavoriteManager, self).get_queryset().filter(community__is_rm=False).exclude(community__type=4) + +# Taken from https://github.com/jaredly/django-colorfield/blob/master/colorfield/fields.py +color_re = re.compile('^#([A-Fa-f0-9]{6})$') +validate_color = RegexValidator(color_re, "Enter a valid color", 'invalid') +class ColorField(models.CharField): + default_validators = [validate_color] + def __init__(self, *args, **kwargs): + kwargs['max_length'] = 18 + super(ColorField, self).__init__(*args, **kwargs) + +class User(models.Model): + unique_id = models.UUIDField(default=uuid.uuid4, editable=False, unique=True) + id = models.AutoField(primary_key=True) + username = models.CharField(max_length=32, unique=True) + # Todo: Don't allow nickname to be null (once this is fixed, un-str-ify line 357 of views; the one with ogdata description) + # Also don't let lots of other strings to be null + nickname = models.CharField(max_length=64, null=True) + password = models.CharField(max_length=128) + email = models.EmailField(null=True, blank=True, default='') + has_mh = models.BooleanField(default=False) + avatar = models.CharField(max_length=1200, blank=True, default='') + theme = ColorField(blank=True, null=True) + # LEVEL: 0-1 is default, everything else is just levels + level = models.SmallIntegerField(default=0) + # ROLE: This doesn't have anything + role = models.SmallIntegerField(default=0, choices=((0, 'normal'), (1, 'Bot'), (2, 'Administrator'), (3, 'Moderator'), (4, 'NO'), (5, 'Donator'), (6, 'Tester'), (7, 'Cools'), (8, 'Developer'), (9, 'SMF9-Django'), (10, 'Staff'), (11, 'GAY DOGWATER' ), ( 12, 'DUMB SNAIL' ), (13, 'Russian ADRIAN'), (14, 'Contest'), (15, 'Gamecon'), (16, 'Cedar'), )) + addr = models.CharField(max_length=64, null=True, blank=True) + signup_addr = models.CharField(max_length=64, null=True, blank=True) + user_agent = models.TextField(null=True, blank=True) + # C Tokens are things that let you make communities and shit. + c_tokens = models.IntegerField(default=1) + + # Things that don't have to do with auth lol + hide_online = models.BooleanField(default=False) + color = ColorField(default='', null=True, blank=True) + + staff = models.BooleanField(default=False) + #active = models.SmallIntegerField(default=1, choices=((0, 'Redirect'), (1, 'Good'), (2, 'Disabled'))) + active = models.BooleanField(default=True) + warned = models.BooleanField(default=False) + warned_reason = models.CharField(blank=True, null=True, max_length=600) + bg_url = models.CharField(max_length=300, null=True, blank=True) + + is_anonymous = False + is_authenticated = True + + last_login = models.DateTimeField(auto_now=True) + created = models.DateTimeField(auto_now_add=True) + USERNAME_FIELD = 'username' + EMAIL_FIELD = 'email' + REQUIRED_FIELDS = [] + + objects = UserManager() + + def __str__(self): + return self.username + def ColorTheme(self): + # if the user set a theme, display that. + if self.theme: + the_theme = self.theme + the_theme = the_theme.strip("#") + # if there's no theme set by the user, use the site's picked theme. + elif settings.site_wide_theme_hex: + the_theme = settings.site_wide_theme_hex + the_theme = the_theme.strip("#") + # If there's no theme set in settings.py, return None. + else: + the_theme = None + return the_theme + def get_full_name(self): + return self.username + def get_short_name(self): + return self.nickname + def get_username(self): + return self.username + def has_module_perms(self, a): + return True + def has_perm(self, a): + return self.staff + def is_staff(self): + return self.staff + def is_active(self): + return self.active + def is_warned(self): + return self.warned + def get_warned_reason(self): + return self.warned_reason + def set_password(self, raw_password): + self.password = bcrypt_sha256.using(rounds=13).hash(raw_password) + def check_password(self, raw_password): + return bcrypt_sha256.using(rounds=13).verify(raw_password, hash=self.password) + def profile(self, thing=None): + # If thing is specified, that field is retrieved + if thing: + return self.profile_set.all().values_list(thing, flat=True).first() + # Otherwise just get full profile + return self.profile_set.filter(user=self).first() + def gravatar(self): + g = util.get_gravatar(self.email) + if not g: + return settings.STATIC_URL + 'img/anonymous-mii.png' + return g + def mh(self): + origin_info = self.profile('origin_info') + if not origin_info: + return None + try: + infodecode = json.loads(origin_info) + except: + return None + return infodecode[0] + def has_plain_avatar(self): + if not self.has_mh and 'http' in self.avatar and not 'gravatar.com' in self.avatar: + return True + def has_avatar(self): + if not self.avatar or len(self.avatar) == 1: + return False + return True + def let_yeahnotifs(self): + return self.profile('let_yeahnotifs') + def limit_remaining(self): + limit = self.profile('limit_post') + # If False is returned, no post limit is assumed. + if limit == 0: + return False + today_min = timezone.datetime.combine(timezone.datetime.today(), time.min) + today_max = timezone.datetime.combine(timezone.datetime.today(), time.max) + # recent_posts = + # Posts made by the user today + posts made by the IP today + + # same thing except with comments + recent_posts = Post.real.filter(Q(creator=self.id, created__range=(today_min, today_max)) | Q(creator__addr=self.addr, created__range=(today_min, today_max))).count() + Comment.real.filter(Q(creator=self.id, created__range=(today_min, today_max)) | Q(creator__addr=self.addr, created__range=(today_min, today_max))).count() + + # Posts remaining + return int(limit) - recent_posts + + def get_class(self): + first = { + 1: 'tester', + 2: 'administrator', + 3: 'moderator', + 4: 'openverse', + 5: 'donator', + 6: 'tester', + 7: 'urapp', + 8: 'developer', + 9: 'pipinstalldjango', + 10: 'staff', + 11: 'kanna', + 12: 'verified', + 13: 'artcon', + 14: 'contest', + 15: 'gamecom', + 16: 'mp', + }.get(self.role, '') + second = { + 1: "Bot", + 2: "Administrator", + 3: "Moderator", + 4: "No", + 5: "Donator", + 6: "Tester", + 7: "Cool Dude", + 8: "Wii U still best console.", + 9: "Rixy Installed Django!", + 10: "Staff", + 11: "GAY DOGWATER ETC", + 12: "THE STUPIDEST ROLE IN THE WORLD", + 13: "A D R I A N", + 14: "Contest Winner", + 15: "Game Contest Winner", + 16: "Cedar Inc.", + }.get(self.role, '') + if first: + first = 'official ' + first + return [first, second] + def is_me(self, request): + if request.user.is_authenticated: + return (self == request.user) + else: + return False + def has_freedom(self): + return self.profile('let_freedom') + # This is the coolest one + def online_status(self, force=False): + # Okay so this returns True if the user's online, 2 if they're AFK, False if they're offline and None if they hide it + if self.hide_online: + return None + if (timezone.now() - timedelta(seconds=50)) > self.last_login: + return False + elif (timezone.now() - timedelta(seconds=48)) > self.last_login: + return 2 + else: + return True + def do_avatar(self, feeling=0): + if self.has_mh and self.avatar: + feeling = { + 0: 'normal', + 1: 'happy', + 2: 'like', + 3: 'surprised', + 4: 'frustrated', + 5: 'puzzled', + }.get(feeling, "normal") + url = 'https://mii-secure.cdn.nintendo.net/{0}_{1}_face.png'.format(self.avatar, feeling) + return url + elif not self.avatar: + return settings.STATIC_URL + 'img/anonymous-mii.png' + elif self.avatar == 's': + return settings.STATIC_URL + 'img/anonymous-mii-sad.png' + else: + return self.avatar + + def num_yeahs(self): + return self.yeah_set.filter(by=self).count() + def num_posts(self): + return self.post_set.filter(creator=self).count() + def num_comments(self): + return self.comment_set.filter().count() + def num_following(self): + return self.follow_source.filter().count() + def num_followers(self): + return self.follow_target.filter().count() + def num_friends(self): + return self.friend_source.filter().count() + self.friend_target.filter().count() + def can_follow(self, user): + #if UserBlock.find_block(self, user): + # return False + return True + def can_view(self, user): + #if UserBlock.find_block(self, user, full=True): + # return False + return True + def is_following(self, me): + if not me.is_authenticated: + return False + if self == me: + return True + #if hasattr(self, 'has_follow'): + # return self.has_follow + return self.follow_target.filter(source=me).count() > 0 + def follow(self, source): + if self.is_following(source) or source == self: + return False + if not self.can_follow(source): + return False + # Todo: put a follow limit here + return self.follow_target.create(source=source, target=self) + def unfollow(self, source): + if not self.is_following(source) or source == self: + return False + return self.follow_target.filter(source=source, target=self).delete() + def can_block(self, source): + if self.can_manage(): + return False + #if source.profile('moyenne'): + # return False + return True + # BLOCK this user from SOURCE + def make_block(self, source, full=False): + if find_block(source, self): + return False + return UserBlock.objects.create(source=source, target=self, full=full) + def get_posts(self, limit=50, offset=0, request=None): + if request.user.is_authenticated: + has_yeah = Yeah.objects.filter(post=OuterRef('id'), by=request.user.id) + posts = self.post_set.select_related('community').select_related('creator').annotate(num_yeahs=Count('yeah', distinct=True), num_comments=Count('comment', distinct=True), yeah_given=Exists(has_yeah, distinct=True)).filter().order_by('-created')[offset:offset + limit] + else: + posts = self.post_set.select_related('community').select_related('creator').annotate(num_yeahs=Count('yeah', distinct=True), num_comments=Count('comment', distinct=True)).filter().order_by('-created').exclude(community__require_auth=True)[offset:offset + limit] + if request: + for post in posts: + post.setup(request) + post.recent_comment = post.recent_comment() + return posts + def get_comments(self, limit=50, offset=0, request=None): + if request.user.is_authenticated: + has_yeah = Yeah.objects.filter(comment=OuterRef('id'), by=request.user.id) + posts = self.comment_set.select_related('original_post').select_related('creator').select_related('original_post__creator').annotate(num_yeahs=Count('yeah', distinct=True), yeah_given=Exists(has_yeah, distinct=True)).filter().order_by('-created')[offset:offset + limit] + else: + posts = self.comment_set.select_related('original_post').select_related('original_post__creator').select_related('creator').annotate(num_yeahs=Count('yeah', distinct=True)).filter().order_by('-created').exclude(original_post__community__require_auth=True)[offset:offset + limit] + if request: + for post in posts: + post.setup(request) + return posts + def get_yeahed(self, type=0, limit=20, offset=0): + # 0 - post, 1 - comment, 2 - any + if type == 2: + yeahs = self.yeah_set.select_related('post').select_related('comment').select_related('comment__original_post').select_related('comment__original_post__creator').annotate(num_yeahs_post=Count('post__yeah', distinct=True), num_yeahs_comment=Count('comment__yeah', distinct=True), num_comments=Count('post__comment', distinct=True)).filter().order_by('-created')[offset:offset + limit] + else: + yeahs = self.yeah_set.select_related('post').select_related('post__creator').annotate(num_yeahs_post=Count('post__yeah', distinct=True), num_comments=Count('post__comment', distinct=True)).filter(type=type, post__is_rm=False).order_by('-created')[offset:offset + limit] + for thing in yeahs: + if thing.post: + thing.post.num_yeahs = thing.num_yeahs_post + thing.post.num_comments = thing.num_comments + elif thing.comment: + thing.comment.num_yeahs = thing.num_yeahs_comment + return yeahs + def get_following(self, limit=50, offset=0, request=None): + return self.follow_source.select_related('target').filter().order_by('-created')[offset:offset + limit] + def get_followers(self, limit=50, offset=0, request=None): + return self.follow_target.select_related('source').filter().order_by('-created')[offset:offset + limit] + def notification_count(self): + return self.notification_to.filter(read=False).count() + def notification_read(self): + return self.notification_to.filter(read=False).update(read=True) + def get_notifications(self): + return self.notification_to.select_related('context_post').select_related('context_comment').select_related('source').filter().order_by('-latest')[0:64] + def notifications_clean(self): + """ Broken - gives OperationError on MySQL + notif_get = self.notification_to.all().values_list('id', flat=True) + if notif_get.count() > 64: + self.notification_to.filter().exclude(id__in=notif_get).delete() + """ + + # Admin can-manage + def can_manage(self): + if (self.level >= 2) or self.is_staff(): + return True + return False + # Does user have authority over self? + def has_authority(self, user): + if self.is_staff(): + return False + if (self.level < user.level): + return True + return False + def friend_state(self, other): + # Todo: return -1 for cannot, 0 for nothing, 1 for my friend pending, 2 for their friend pending, 3 for friends + query1 = other.fr_source.filter(target=self, finished=False).exists() + if query1: + return 1 + query2 = self.fr_source.filter(target=other, finished=False).exists() + if query2: + return 2 + query3 = Friendship.find_friendship(self, other) + if query3: + return 3 + return 0 + def get_fr(self, other): + return FriendRequest.objects.filter(Q(source=self) & Q(target=other) | Q(target=self) & Q(source=other)).exclude(finished=True) + def get_frs_target(self): + return FriendRequest.objects.filter(target=self, finished=False).order_by('-created') + def get_frs_notif(self): + return FriendRequest.objects.filter(target=self, finished=False, read=False).count() + def reject_fr(self, target): + fr = self.get_fr(target) + if fr: + try: + fr.first().finish() + except: + pass + def send_fr(self, source, body=None): + if not self.get_fr(source): + return FriendRequest.objects.create(source=source, target=self, body=body) + def accept_fr(self, target): + fr = self.get_fr(target) + if fr: + try: + fr.first().finish() + except: + pass + return Friendship.objects.create(source=self, target=target) + def cancel_fr(self, target): + fr = target.get_fr(self) + if fr: + try: + fr.first().finish() + except: + pass + def read_fr(self): + return self.get_frs_target().update(read=True) + def delete_friend(self, target): + fr = Friendship.find_friendship(self, target) + if fr: + fr.conversation().all_read() + fr.delete() + def get_activity(self, limit=20, offset=0, distinct=False, friends_only=False, request=None): + #Todo: make distinct work; combine friends and following, but then get posts from them + friends = Friendship.get_friendships(self, 0) + friend_ids = [] + for friend in friends: + friend_ids.append(friend.other(self)) + follows = self.follow_source.filter().values_list('target', flat=True) + if not friends_only: + friend_ids.append(self.id) + for thing in follows: + friend_ids.append(thing) + if request.user.is_authenticated: + has_yeah = Yeah.objects.filter(post=OuterRef('id'), by=request.user.id) + if distinct: + posts = Post.objects.select_related('creator').select_related('community').annotate(num_yeahs=Count('yeah', distinct=True), num_comments=Count('comment', distinct=True), yeah_given=Exists(has_yeah, distinct=True)).annotate(max_created=Max('creator__post__created')).filter(created=F('max_created')).filter(creator__in=friend_ids).order_by('-created')[offset:offset + limit] + else: + posts = Post.objects.select_related('creator').select_related('community').annotate(num_yeahs=Count('yeah', distinct=True), num_comments=Count('comment', distinct=True), yeah_given=Exists(has_yeah, distinct=True)).filter(creator__in=friend_ids).order_by('-created')[offset:offset + limit] + if request: + for post in posts: + post.setup(request) + post.recent_comment = post.recent_comment() + return posts + def community_favorites(self, all=False): + if not all: + favorites = self.communityfavorite_set.order_by('-created').filter(community__is_rm=False)[:8] + else: + favorites = self.communityfavorite_set.order_by('-created').filter(community__is_rm=False) + communities = [] + for fav in favorites: + communities.append(fav.community) + del(favorites) + return communities + def wake(self, addr=None): + if addr and not addr == self.addr: + self.addr = addr + return self.save(update_fields=['addr', 'last_login']) + return self.save(update_fields=['last_login']) + + def has_postspam(self, body, screenshot=None, drawing=None): + latest_post = self.post_set.filter().order_by('-created')[:1] + if not latest_post: + return False + latest_post = latest_post.first() + if drawing and latest_post.drawing: + if drawing == latest_post.drawing: + return True + elif latest_post.screenshot and screenshot and not drawing: + if latest_post.screenshot == screenshot and latest_post.body == body: + return True + elif latest_post.body and body and not latest_post.screenshot and not latest_post.drawing: + if latest_post.body == body: + return True + return False + + def get_latest_msg(self, me): + conversation = Conversation.objects.filter(Q(source=self) & Q(target=me) | Q(target=self) & Q(source=me)).order_by('-created')[:1].first() + if not conversation: + return False + return conversation.latest_message(me) + def conversations(self): + return Conversation.objects.filter(Q(source=self) | Q(target=self)).order_by('-created') + def msg_count(self): + # Gets messages with conversations I am involved in, then looks for those unread and not by me, gets count and returns it + messages = Message.objects.filter(Q(conversation__source=self.id) | Q(conversation__target=self.id)).filter(read=False).exclude(creator=self.id).count() + return messages + def password_reset_email(self, request): + htmlmsg = render_to_string('closedverse_main/help/email.html', { + 'menulogo': request.build_absolute_uri(settings.STATIC_URL + 'img/menu-logo.png'), + 'contact': 'something', + 'link': request.build_absolute_uri(reverse('main:forgot-passwd')) + "?token=" + base64.urlsafe_b64encode(bytes(self.password, 'utf-8')).decode(), + }) + subj = 'Closedverse password reset for "{0}"'.format(self.username) + return send_mail( + subject='Reset password', + html_message=htmlmsg, + message=htmlmsg, + from_email="noreply@cedar.doctor", + recipient_list=[self.email], + fail_silently=False) + def find_related(self): + return User.objects.filter(id__in=LoginAttempt.objects.filter(Q(addr=self.addr), Q(user=self.id)).values_list('user', flat=True)).exclude(id=self.id) + @staticmethod + def search(query='', limit=50, offset=0, request=None): + return User.objects.filter(Q(username__icontains=query) | Q(nickname__icontains=query)).order_by('-created')[offset:offset + limit] + @staticmethod + def email_in_use(addr, request=None): + if not addr: + return False + if request: + return User.objects.filter(email__iexact=addr).exclude(id=request.user.id).exists() + else: + return User.objects.filter(email__iexact=addr).exists() + @staticmethod + def nnid_in_use(id, request=None): + if not id: + return False + if request: + nnid_real = id.lower().replace('-', '').replace('.', '') + return Profile.objects.filter(origin_id__iexact=nnid_real).exclude(user__id=request.user.id).exists() + else: + return Profile.objects.filter(origin_id=id).exists() + @staticmethod + def get_from_passwd(passwd): + try: + user = User.objects.get(password=base64.urlsafe_b64decode(passwd).decode()) + # Too lazy to make except cases + except: + return False + return user + +class Community(models.Model): + unique_id = models.UUIDField(default=uuid.uuid4, editable=False, unique=True) + id = models.AutoField(primary_key=True) + name = models.CharField(max_length=255) + description = models.TextField(blank=True, default='') + ico = models.ImageField(upload_to='icon/%y/%m/%d/', max_length=100, blank=True, null=True) + banner = models.ImageField(upload_to='banner/%y/%m/%d/', max_length=100, blank=True, null=True) + # Type: 0 - general, 1 - game, 2 - special + type = models.SmallIntegerField(default=0, choices=((0, 'General'), (1, 'Game'), (2, 'Special'), (3, 'User Community'), (4, 'Hide'))) + # Platform - 0/none, 1/3DS, 2/Wii U, 3/both + platform = models.SmallIntegerField(default=0, choices=((0, 'none'), (1, '3ds'), (2, 'wii u'), (3, 'switch'), (4, 'both'), (5, 'PC'), (6, 'Xbox'), (7, 'Playstation'))) + tags = models.CharField(blank=True, null=True, max_length=255, choices=(('announcements', 'main announcement community'), ('changelog', 'main changelog'), ('activity', 'Activity Feed posting community'), ('general', 'General Discussion Community'))) + created = models.DateTimeField(auto_now_add=True) + updated = models.DateTimeField(auto_now=True) + is_rm = models.BooleanField(default=False) + is_feature = models.BooleanField(default=False) + require_auth = models.BooleanField(default=False) + allowed_users = models.TextField(null=True, blank=True) + creator = models.ForeignKey(User, blank=True, null=True, on_delete=models.CASCADE) + + objects = PostManager() + real = models.Manager() + def popularity(self): + popularity = Post.objects.filter(community=self).count() + return popularity + def __str__(self): + return self.name + def icon(self): + if self.ico and hasattr(self.ico, 'url'): + return self.ico.url + else: + return settings.STATIC_URL + "img/title-icon-default.png" + def type_txt(self): + if self.type == 1: + return { + 0: "", + 1: "3DS Games", + 2: "Wii U Games", + 3: "Switch Games", + 4: "Wii U Games\u30FB3DS Games", + 5: 'PC Games', + 6: 'Xbox Games', + 7: 'Playstation Games', + }.get(self.platform) + else: + return { + 0: "General community", + 1: "Game community", + 2: "Special community", + 3: "User owned community", + }.get(self.type) + def type_platform(self): + thing = { + 0: "", + 1: "3ds", + 2: "wiiu", + 3: "switch", + 4: "wiiu-3ds", + 5: 'pc', + 6: 'xbox', + 7: 'ps', + }.get(self.platform) + if thing == "": + return None + return "img/platform-tag-" + thing + ".png" + def is_activity(self): + return self.tags == 'activity' + def clickable(self): + return not self.is_activity() and not self.type == 4 + def get_posts(self, limit=50, offset=0, request=None, favorite=False): + if request.user.is_authenticated: + has_yeah = Yeah.objects.filter(post=OuterRef('id'), by=request.user.id) + posts = Post.objects.select_related('creator').annotate(num_yeahs=Count('yeah', distinct=True), num_comments=Count('comment', distinct=True), yeah_given=Exists(has_yeah, distinct=True)).filter(community_id=self.id).order_by('-created')[offset:offset + limit] + else: + posts = Post.objects.select_related('creator').annotate(num_yeahs=Count('yeah', distinct=True), num_comments=Count('comment', distinct=True)).filter(community_id=self.id).order_by('-created').exclude(community__require_auth=True)[offset:offset + limit] + if request: + for post in posts: + post.setup(request) + post.recent_comment = post.recent_comment() + return posts + def post_perm(self, request): + if self.allowed_users: + allows = self.allowed_users.split(',') + if not request.user.is_authenticated or str(request.user.id) not in allows: + return False + return True + else: + return True + + def has_favorite(self, request): + if request.user.communityfavorite_set.filter(community=self).exists(): + return True + return False + def favorite_add(self, request): + if not self.has_favorite(request): + return request.user.communityfavorite_set.create(community=self) + def favorite_rm(self, request): + if self.has_favorite(request): + return request.user.communityfavorite_set.filter(community=self).delete() + + + def setup(self, request): + if request.user.is_authenticated: + self.post_perm = self.post_perm(request) + self.has_favorite = self.has_favorite(request) + + def create_post(self, request): + if not self.post_perm(request): + return 4 + limit = request.user.limit_remaining() + if not limit is False and not limit > 0: + return 8 + del(limit) + if Post.real.filter(Q(creator=request.user) | Q(creator__addr=request.user.addr), created__gt=timezone.now() - timedelta(seconds=10)).exists(): + return 3 + if request.POST.get('url'): + try: + URLValidator()(value=request.POST['url']) + except ValidationError: + return 5 + if not request.user.has_freedom() and (request.POST.get('url') or request.FILES.get('screen')): + return 6 + if not request.user.is_active(): + return 6 + if len(request.POST['body']) > 2200 or (len(request.POST['body']) < 1 and not request.POST.get('_post_type') == 'painting'): + return 1 + upload = None + drawing = None + if request.FILES.get('screen'): + upload = util.image_upload(request.FILES['screen'], True) + if upload == 1: + return 2 + if request.POST.get('_post_type') == 'painting': + if not request.POST.get('painting'): + return 2 + drawing = util.image_upload(request.POST['painting'], False, True) + if drawing == 1: + return 2 + # Check for spam using our OWN ALGO!!!!!!!!! + if request.user.has_postspam(request.POST.get('body'), upload, drawing): + return 7 + new_post = self.post_set.create(body=request.POST.get('body'), creator=request.user, community=self, feeling=int(request.POST.get('feeling_id', 0)), spoils=bool(request.POST.get('is_spoiler')), screenshot=upload, drawing=drawing, url=request.POST.get('url')) + new_post.is_mine = True + return new_post + + def search(query='', limit=50, offset=0, request=None): + return Community.objects.filter(Q(name__icontains=query) | Q(description__contains=query)).exclude(type=4).order_by('-created')[offset:offset + limit] + + def get_all(type=0, offset=0, limit=12): + return Community.objects.filter(type=type).order_by('-created')[offset:offset + limit] + + class Meta: + verbose_name_plural = "communities" + +# Links between communities for "related" communities +class CommunityClink(models.Model): + # root/also order doesn't matter, time does though + root = models.ForeignKey(Community, related_name='one', on_delete=models.CASCADE) + also = models.ForeignKey(Community, related_name='two', on_delete=models.CASCADE) + created = models.DateTimeField(auto_now_add=True) + # type: related (f) / sub (t) + kind = models.BooleanField(default=False) + + objects = CommunityFavoriteManager() + +# Do this, or not +class CommunityFavorite(models.Model): + id = models.AutoField(primary_key=True) + by = models.ForeignKey(User, on_delete=models.CASCADE) + community = models.ForeignKey(Community, on_delete=models.CASCADE) + created = models.DateTimeField(auto_now_add=True) + + def __str__(self): + return "Community favorite by " + str(self.by) + " for " + str(self.community) + +class Post(models.Model): + unique_id = models.UUIDField(default=uuid.uuid4, editable=False, unique=True) + id = models.AutoField(primary_key=True) + community = models.ForeignKey(Community, null=True, on_delete=models.CASCADE) + feeling = models.SmallIntegerField(default=0, choices=feelings) + body = models.TextField(null=True) + drawing = models.CharField(max_length=200, null=True, blank=True) + screenshot = models.CharField(max_length=1200, null=True, blank=True, default='') + url = models.URLField(max_length=1200, null=True, blank=True, default='') + spoils = models.BooleanField(default=False) + disable_yeah = models.BooleanField(default=False) + created = models.DateTimeField(auto_now_add=True) + edited = models.DateTimeField(auto_now=True) + befores = models.TextField(null=True, blank=True) + poll = models.ForeignKey('Poll', null=True, blank=True, on_delete=models.CASCADE) + has_edit = models.BooleanField(default=False) + is_rm = models.BooleanField(default=False) + status = models.SmallIntegerField(default=0, choices=post_status) + creator = models.ForeignKey(User, on_delete=models.CASCADE) + + objects = PostManager() + real = models.Manager() + + def __str__(self): + return self.body[:250] + def is_reply(self): + return False + def trun(self): + if self.is_rm: + return 'deleted' + if self.drawing: + return 'drawing' + else: + return self.body + def yt_vid(self): + try: + thing = re.search('(https?://)?(www\.)?(youtube|youtu|youtube-nocookie)\.(com|be)/(watch\?v=|embed/|v/|.+\?v=)?([^&=%\?]{11})', self.url).group(6) + except: + return False + return thing + def has_line_trun(self): + if self.body and len(self.body.splitlines()) > 10: + return True + return False + def is_mine(self, user): + if user.is_authenticated: + return (self.creator == user) + else: + return False + #def yeah_notification(self, request): + # ???? What is this + #Notification.give_notification + def number_yeahs(self): + if hasattr(self, 'num_yeahs'): + return self.num_yeahs + return self.yeah_set.filter(post=self).count() + def has_yeah(self, request): + if request.user.is_authenticated: + if hasattr(self, 'yeah_given'): + return self.yeah_given + else: + return self.yeah_set.filter(post=self, by=request.user).exists() + else: + return False + def can_yeah(self, request): + if request.user.is_authenticated: + #if UserBlock.find_block(self.creator, request.user): + # return False + return True + else: + return False + def can_rm(self, request): + if self.creator.has_authority(request.user): + return True + return False + def give_yeah(self, request): + if not request.user.has_freedom() and Yeah.objects.filter(by=request.user, created__gt=timezone.now() - timedelta(seconds=5)).exists(): + return False + if self.has_yeah(request): + return True + if not self.can_yeah(request): + return False + return self.yeah_set.create(by=request.user, post=self) + def remove_yeah(self, request): + if not self.has_yeah(request): + return True + return self.yeah_set.filter(post=self, by=request.user).delete() + def number_comments(self): + # Number of comments cannot be accurate due to comment deleting + #if hasattr(self, 'num_comments'): + # return self.num_comments + return self.comment_set.filter(original_post=self).count() + def get_yeahs(self, request): + return Yeah.objects.filter(type=0, post=self).order_by('-created')[0:30] + def can_comment(self, request): + # TODO: Make this so that if a post's comments exceeds 100, make the user able to close the comments section + if self.number_comments() > 500: + return False + #if UserBlock.find_block(self.creator, request.user): + # return False + return True + def get_comments(self, request=None, limit=0, offset=0): + if request.user.is_authenticated: + has_yeah = Yeah.objects.filter(comment=OuterRef('id'), by=request.user.id) + if limit: + comments = self.comment_set.select_related('creator').annotate(num_yeahs=Count('yeah'), yeah_given=Exists(has_yeah)).filter(original_post=self).order_by('created')[offset:offset + limit] + elif offset: + comments = self.comment_set.select_related('creator').annotate(num_yeahs=Count('yeah'), yeah_given=Exists(has_yeah)).filter(original_post=self).order_by('created')[offset:] + else: + comments = self.comment_set.select_related('creator').annotate(num_yeahs=Count('yeah'), yeah_given=Exists(has_yeah)).filter(original_post=self).order_by('created') + else: + if limit: + comments = self.comment_set.select_related('creator').annotate(num_yeahs=Count('yeah')).filter(original_post=self).order_by('created').exclude(original_post__community__require_auth=True)[offset:offset + limit] + elif offset: + comments = self.comment_set.select_related('creator').annotate(num_yeahs=Count('yeah')).filter(original_post=self).order_by('created').exclude(original_post__community__require_auth=True)[offset:] + else: + comments = self.comment_set.select_related('creator').annotate(num_yeahs=Count('yeah')).filter(original_post=self).order_by('created').exclude(original_post__community__require_auth=True) + if request: + for post in comments: + post.setup(request) + return comments + def create_comment(self, request): + if not self.can_comment(request): + return False + limit = request.user.limit_remaining() + if not limit is False and not limit > 0: + return 8 + del(limit) + if self.is_mine(request.user) and Comment.real.filter(creator=request.user, created__gt=timezone.now() - timedelta(seconds=2)).exists(): + return 3 + elif not self.is_mine(request.user) and Comment.real.filter(creator=request.user, created__gt=timezone.now() - timedelta(seconds=10)).exists(): + return 3 + if not request.user.has_freedom() and (request.POST.get('url') or request.FILES.get('screen')): + return 6 + if not request.user.is_active(): + return 6 + if len(request.POST['body']) > 2200 or (len(request.POST['body']) < 1 and not request.POST.get('_post_type') == 'painting'): + return 1 + upload = None + drawing = None + if request.FILES.get('screen'): + upload = util.image_upload(request.FILES['screen'], True) + if upload == 1: + return 2 + if request.POST.get('_post_type') == 'painting': + if not request.POST.get('painting'): + return 2 + drawing = util.image_upload(request.POST['painting'], False, True) + if drawing == 1: + return 2 + new_post = self.comment_set.create(body=request.POST.get('body'), creator=request.user, community=self.community, original_post=self, feeling=int(request.POST.get('feeling_id', 0)), spoils=bool(request.POST.get('is_spoiler')), drawing=drawing, screenshot=upload) + new_post.is_mine = True + return new_post + def recent_comment(self): + if self.number_comments() < 1: + return False + comments = self.comment_set.filter(spoils=False).exclude(creator=self.creator).order_by('-created')[:1] + return comments.first() + def change(self, request): + if not self.is_mine(request.user) or self.has_edit: + return 1 + if len(request.POST['body']) > 2200 or len(request.POST['body']) < 1: + return 1 + if not self.befores: + befores_json = [] + else: + befores_json = json.loads(self.befores) + befores_json.append(self.body) + self.befores = json.dumps(befores_json) + self.body = request.POST['body'] + self.spoils = request.POST.get('is_spoiler', False) + self.feeling = request.POST.get('feeling_id', 0) + if not timezone.now() < self.created + timezone.timedelta(minutes=2): + self.has_edit = True + return self.save() + def is_favorite(self, user): + profile = user.profile() + if profile.favorite == self: + return True + else: + return False + def favorite(self, user): + if not self.is_mine(user): + return False + profile = user.profile() + if profile.favorite == self: + return False + profile.favorite = self + return profile.save() + def unfavorite(self, user): + if not self.is_mine(user): + return False + profile = user.profile() + if profile.favorite == self: + profile.favorite = None + return profile.save() + def rm(self, request): + if request and not self.is_mine(request.user) and not self.can_rm(request): + return False + if self.is_favorite(self.creator): + self.unfavorite(self.creator) + self.is_rm = True + if self.is_mine(request.user): + self.status = 1 + else: + self.status = 2 + AuditLog.objects.create(type=0, post=self, user=self.creator, by=request.user) + if self.screenshot: + util.image_rm(self.screenshot) + self.screenshot = None + if self.drawing: + util.image_rm(self.drawing) + self.drawing = None + self.save() + def setup(self, request): + self.has_yeah = self.has_yeah(request) + self.can_yeah = self.can_yeah(request) + self.is_mine = self.is_mine(request.user) + + + + def max_yeahs(): + try: + max_yeahs_post = Post.objects.annotate(num_yeahs=Count('yeah')).aggregate(max_yeahs=Max('num_yeahs'))['max_yeahs'] + except: + return None + the_post = Post.objects.annotate(num_yeahs=Count('yeah')).filter(num_yeahs=max_yeahs_post).order_by('-created') + return the_post.first() + +class Comment(models.Model): + unique_id = models.UUIDField(default=uuid.uuid4, editable=False, unique=True) + id = models.AutoField(primary_key=True) + original_post = models.ForeignKey(Post, on_delete=models.CASCADE) + community = models.ForeignKey(Community, on_delete=models.CASCADE) + feeling = models.SmallIntegerField(default=0, choices=feelings) + body = models.TextField(null=True) + screenshot = models.CharField(max_length=1200, null=True, blank=True, default='') + drawing = models.CharField(max_length=200, null=True, blank=True) + spoils = models.BooleanField(default=False) + created = models.DateTimeField(auto_now_add=True) + edited = models.DateTimeField(auto_now=True) + befores = models.TextField(null=True, blank=True) + has_edit = models.BooleanField(default=False) + is_rm = models.BooleanField(default=False) + status = models.SmallIntegerField(default=0, choices=post_status) + creator = models.ForeignKey(User, blank=True, null=True, on_delete=models.CASCADE) + + objects = PostManager() + real = models.Manager() + + def __str__(self): + return self.body[:250] + def is_reply(self): + return True + def trun(self): + if self.is_rm: + return 'deleted' + if self.drawing: + return '(drawing)' + else: + return self.body + def is_mine(self, user): + if user.is_authenticated: + return (self.creator == user) + else: + return False + def number_yeahs(self): + if hasattr(self, 'num_yeahs'): + return self.num_yeahs + return self.yeah_set.filter(comment=self, type=1).count() + def has_yeah(self, request): + if request.user.is_authenticated: + if hasattr(self, 'yeah_given'): + return self.yeah_given + else: + return self.yeah_set.filter(comment=self, type=1, by=request.user).exists() + else: + return False + def can_yeah(self, request): + if request.user.is_authenticated: + return True + else: + return False + #if UserBlock.find_block(self.creator, request.user): + # return False + def can_rm(self, request): + if self.creator.has_authority(request.user): + return True + #if self.original_post.is_mine(request.user): + # return True + return False + def give_yeah(self, request): + if not request.user.has_freedom() and Yeah.objects.filter(by=request.user, created__gt=timezone.now() - timedelta(seconds=5)).exists(): + return False + if self.has_yeah(request): + return True + if not self.can_yeah(request): + return False + return self.yeah_set.create(by=request.user, type=1, comment=self) + def remove_yeah(self, request): + if not self.has_yeah(request): + return True + return self.yeah_set.filter(comment=self, type=1, by=request.user).delete() + def get_yeahs(self, request): + return Yeah.objects.filter(type=1, comment=self).order_by('-created')[0:30] + def owner_post(self): + return (self.creator == self.original_post.creator) + def change(self, request): + if not self.is_mine(request.user) or self.has_edit: + return 1 + if len(request.POST['body']) > 2200 or len(request.POST['body']) < 1: + return 1 + if not self.befores: + befores_json = [] + else: + befores_json = json.loads(self.befores) + befores_json.append(self.body) + self.befores = json.dumps(befores_json) + self.body = request.POST['body'] + self.spoils = request.POST.get('is_spoiler', False) + self.feeling = request.POST.get('feeling_id', 0) + if not timezone.now() < self.created + timezone.timedelta(minutes=2): + self.has_edit = True + return self.save() + def rm(self, request): + if request and not self.is_mine(request.user) and not self.can_rm(request): + return False + self.is_rm = True + if self.is_mine(request.user): + self.status = 1 + else: + self.status = 2 + AuditLog.objects.create(type=1, comment=self, user=self.creator, by=request.user) + if self.screenshot: + util.image_rm(self.screenshot) + self.screenshot = None + if self.drawing: + util.image_rm(self.drawing) + self.drawing = None + self.save() + def setup(self, request): + self.has_yeah = self.has_yeah(request) + self.can_yeah = self.can_yeah(request) + self.is_mine = self.is_mine(request.user) + +class Yeah(models.Model): + # Todo: make this a plain int at some point + id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False, unique=True) + by = models.ForeignKey(User, on_delete=models.CASCADE) + type = models.SmallIntegerField(default=0, choices=((0, 'post'), (1, 'comment'), )) + post = models.ForeignKey(Post, null=True, blank=True, on_delete=models.CASCADE) + # kldsjfldsfsdfd + #spam = models.BooleanField(default=False) + comment = models.ForeignKey(Comment, null=True, blank=True, on_delete=models.CASCADE) + created = models.DateTimeField(auto_now_add=True) + + def __str__(self): + a = "from " + self.by.username + " to " + if self.post: + a += str(self.post.unique_id) + elif self.comment: + a += str(self.comment.unique_id) + return a + +class Profile(models.Model): + is_new = models.BooleanField(default=True) + unique_id = models.UUIDField(default=uuid.uuid4, editable=False, unique=True) + id = models.AutoField(primary_key=True) + user = models.ForeignKey(User, on_delete=models.CASCADE) + + origin_id = models.CharField(max_length=16, null=True, blank=True) + origin_info = models.CharField(max_length=255, null=True, blank=True) + + comment = models.TextField(blank=True, default='') + country = models.CharField(max_length=120, blank=True, default='') + whatareyou = models.CharField(max_length=120, blank=True, default='') + #birthday = models.DateField(null=True, blank=True) + id_visibility = models.SmallIntegerField(default=0, choices=visibility) + + pronoun_is = models.IntegerField(default=0, choices=( + (0, "I don't know"), (1, "He/him"), (2, "She/her"), (3, "He/she"), (4, "It"), (5, "They/Them") + )) + + gender_is = models.IntegerField(default=0, choices=( + (0, "I don't know"), (1, "Girl"), (2, "Boy"), (3, "Minion"), (4, "Toaster"), (5, "Dinosaur"), (6, "Truck"), (7, "Robot"), (8, "Monkey"), (9, "Big chungus"), (10, "Other") + )) + + let_friendrequest = models.SmallIntegerField(default=0, choices=visibility) + + yeahs_visibility = models.SmallIntegerField(default=0, choices=visibility) + comments_visibility = models.SmallIntegerField(default=2, choices=visibility) + #relationship_visibility = models.SmallIntegerField(default=0, choices=visibility) + weblink = models.CharField(max_length=1200, blank=True, default='') + #gameskill = models.SmallIntegerField(default=0) + external = models.CharField(max_length=255, blank=True, default='') + favorite = models.ForeignKey(Post, blank=True, null=True, on_delete=models.SET_NULL) + + let_yeahnotifs = models.BooleanField(default=True) + let_freedom = models.BooleanField(default=True) + # Todo: When you see this, implement it; make it a bool that determines whether the user should be able to edit their avatar; if this is true and + #let_avatar = models.BooleanField(default=False) + adopted = models.ForeignKey(User, null=True, blank=True, related_name='children', on_delete=models.CASCADE) + # Post limit, 0 for none + limit_post = models.SmallIntegerField(default=0) + # If this is true, the user can't change their avatar or nickname + cannot_edit = models.BooleanField(default=False) + email_login = models.SmallIntegerField(default=1, choices=((0, 'Do not allow'), (1, 'Okay'), (2, 'Only allow'))) + + def __str__(self): + return "profile " + str(self.unique_id) + " for " + self.user.username + def origin_id_public(self, user=None): + if user == self.user: + return self.origin_id + if self.id_visibility == 2: + return 1 + elif self.id_visibility == 1: + if not user.is_authenticated or not Friendship.find_friendship(self.user, user): + return 1 + return self.origin_id + elif not self.origin_id: + return None + return self.origin_id + def yeahs_visible(self, user=None): + if user == self.user: + return True + if self.yeahs_visibility == 2: + return False + elif self.yeahs_visibility == 1: + if not user.is_authenticated or not Friendship.find_friendship(self.user, user): + return False + return True + return True + def comments_visible(self, user=None): + if user == self.user: + return True + if self.comments_visibility == 2: + return False + elif self.comments_visibility == 1: + if not user.is_authenticated or not Friendship.find_friendship(self.user, user): + return False + return True + return True + def can_friend(self, user=None): + if self.let_friendrequest == 2: + return False + #if user.is_authenticated and UserBlock.find_block(self.user, user): + # return False + elif self.let_friendrequest == 1: + if not user.is_following(self.user): + return False + return True + return True + def got_fullurl(self): + if self.weblink: + try: + URLValidator()(value=self.weblink) + except ValidationError: + return False + return True + return False + def setup(self, request): + self.origin_id_public = self.origin_id_public(request.user) + self.yeahs_visible = self.yeahs_visible(request.user) + self.comments_visible = self.comments_visible(request.user) + +class Follow(models.Model): + # Todo: remove this + unique_id = models.UUIDField(default=uuid.uuid4, editable=False, unique=True) + id = models.AutoField(primary_key=True) + source = models.ForeignKey(User, related_name='follow_source', on_delete=models.CASCADE) + target = models.ForeignKey(User, related_name='follow_target', on_delete=models.CASCADE) + created = models.DateTimeField(auto_now_add=True) + + def __str__(self): + return "follow: from " + self.source.username + " to " + self.target.username + +class Notification(models.Model): + # Todo: make this a plain int at some point + unique_id = models.UUIDField(default=uuid.uuid4, editable=False, unique=True) + + to = models.ForeignKey(User, related_name='notification_to', on_delete=models.CASCADE) + source = models.ForeignKey(User, related_name='notification_sender', on_delete=models.CASCADE) + read = models.BooleanField(default=False) + type = models.SmallIntegerField(choices=( + (0, 'Yeah on post'), + (1, 'Yeah on comment'), + (2, 'Comment on my post'), + (3, 'Comment on others\' post'), + (4, 'Follow to me'), + )) + merges = models.TextField(blank=True, default='') + context_post = models.ForeignKey(Post, null=True, blank=True, on_delete=models.CASCADE) + context_comment = models.ForeignKey(Comment, null=True, blank=True, on_delete=models.CASCADE) + + created = models.DateTimeField(auto_now_add=True) + latest = models.DateTimeField(auto_now=True) + + def __str__(self): + return "Notification from " + str(self.source) + " to " + str(self.to) + " with type \"" + self.get_type_display() + "\"" + def url(self): + what_type = { + 0: 'main:post-view', + 1: 'main:comment-view', + 2: 'main:post-view', + 3: 'main:post-view', + 4: 'main:user-followers', + }.get(self.type) + if self.type == 0 or self.type == 2 or self.type == 3: + what_id = self.context_post_id + elif self.type == 1: + what_id = self.context_comment_id + elif self.type == 4: + what_id = self.to.username + return reverse(what_type, args=[what_id]) + def merge(self, user): + self.latest = timezone.now() + self.read = False + if not self.merges: + u = [] + else: + u = json.loads(self.merges) + u.append(user.id) + self.merges = json.dumps(u) + self.save() + #return self.merged.create(source=user, to=self.to, type=self.type, context_post=self.context_post, context_comment=self.context_comment) + def set_unread(self): + self.read = False + self.latest = timezone.now() + return self.save() + def all_users(self): + if not self.merges: + u = [] + else: + u = organ(json.loads(self.merges)) + arr = [] + arr.append(self.source) + for user in u: + # Todo: Clean this up and make this block better + if not u in arr: + try: + arr.append(User.objects.get(id=user)) + except: + pass + del(u) + return arr + """ + arr = [] + arr.append(self.source) + merges = self.merged.filter().order_by('created') + for merge in merges: + arr.append(merge.source) + return arr + """ + def setup(self, user): + # Only have is_following if the type is a follow; save SQL queries + if self.type == 4: + self.source.is_following = self.source.is_following(user) + else: + self.source.is_following = False + # In the future, please put giving notifications for classes into their respective classes (right now they're in views) + @staticmethod + def give_notification(user, type, to, post=None, comment=None): + # Just keeping this simple for now, might want to make it better later + # If the user sent a notification to this user at least 5 seconds ago, return False + # Or if user is to + # Or if yeah notifications are off and this is a yeah notification + user_is_self_unk = (not type == 3 and user == to) + is_notification_too_fast = (user.notification_sender.filter(created__gt=timezone.now() - timedelta(seconds=5), type=type).exclude(type=4) and not type == 3) + user_no_yeahnotif = (not to.let_yeahnotifs() and (type == 0 or type == 1)) + if user_is_self_unk or is_notification_too_fast or user_no_yeahnotif: + return False + # Search for my own notifiaction. If it exists, set it as unread. + merge_own = user.notification_sender.filter(created__gt=timezone.now() - timedelta(hours=8), to=to, type=type, context_post=post, context_comment=comment) + if merge_own: + # If it's merged, don't unread that one, but unread what it's merging. + return merge_own.first().set_unread() + # Search for a notification already there so we can merge with it if it exists + merge_s = Notification.objects.filter(created__gt=timezone.now() - timedelta(hours=8), to=to, type=type, context_post=post, context_comment=comment) + # If it exists, merge with it. Else, create a new notification. + if merge_s: + return merge_s.first().merge(user) + else: + return user.notification_sender.create(source=user, type=type, to=to, context_post=post, context_comment=comment) + +class Complaint(models.Model): + unique_id = models.UUIDField(default=uuid.uuid4, editable=False, unique=True) + id = models.AutoField(primary_key=True) + creator = models.ForeignKey(User, on_delete=models.CASCADE) + type = models.SmallIntegerField(choices=( + (0, 'Bug report'), + (1, 'Suggestion'), + (2, 'Want'), + )) + body = models.TextField(blank=True, default='') + sex = models.SmallIntegerField(null=True, choices=((0, 'girl'), (1, 'privileged one'), (2, '(none)'), + )) + created = models.DateTimeField(auto_now_add=True) + + def __str__(self): + return "\"" + str(self.body) + "\" from " + str(self.creator) + " as a " + str(self.get_sex_display()) + def has_past_sent(user): + return user.complaint_set.filter(created__gt=timezone.now() - timedelta(minutes=5)).exists() + +class FriendRequest(models.Model): + unique_id = models.UUIDField(default=uuid.uuid4, editable=False, unique=True) + id = models.AutoField(primary_key=True) + source = models.ForeignKey(User, related_name='fr_source', on_delete=models.CASCADE) + target = models.ForeignKey(User, related_name='fr_target', on_delete=models.CASCADE) + body = models.TextField(blank=True, null=True, default='') + read = models.BooleanField(default=False) + finished = models.BooleanField(default=False) + created = models.DateTimeField(auto_now_add=True) + + def __str__(self): + return "friend request ("+str(self.finished)+"): from " + str(self.source) + " to " + str(self.target) + def finish(self): + self.finished = True + self.save() + +class Friendship(models.Model): + unique_id = models.UUIDField(default=uuid.uuid4, editable=False, unique=True) + id = models.AutoField(primary_key=True) + source = models.ForeignKey(User, related_name='friend_source', on_delete=models.CASCADE) + target = models.ForeignKey(User, related_name='friend_target', on_delete=models.CASCADE) + created = models.DateTimeField(auto_now_add=True) + latest = models.DateTimeField(auto_now=True) + + def __str__(self): + return "friendship with " + str(self.source) + " and " + str(self.target) + def update(self): + return self.save(update_fields=['latest']) + def other(self, user): + if self.source == user: + return self.target + return self.source + def conversation(self): + conv = Conversation.objects.filter(Q(source=self.source) & Q(target=self.target) | Q(target=self.source) & Q(source=self.target)).order_by('-created') + if not conv: + return Conversation.objects.create(source=self.source, target=self.target) + return conv.first() + @staticmethod + def get_friendships(user, limit=50, offset=0, latest=False, online_only=False): + if not limit: + return Friendship.objects.filter(Q(source=user) | Q(target=user)).order_by('-created') + if latest: + if online_only: + delta = timezone.now() - timedelta(seconds=48) + awman = [] + for friend in Friendship.objects.filter(Q(source=user) | Q(target=user)).order_by('-latest')[offset:offset + limit]: + if friend.other(user).last_login > delta: + awman.append(friend) + return awman +# Fix all of this at some point +# return Friendship.objects.filter( +#source=When(source__ne=user, source__last_login__gt=delta), +#target=When(target__ne=user, target__last_login__gt=delta) +#).order_by('-latest')[offset:offset + limit] + else: + return Friendship.objects.filter(Q(source=user) | Q(target=user)).order_by('-latest')[offset:offset + limit] + else: + return Friendship.objects.filter(Q(source=user) | Q(target=user)).order_by('-created')[offset:offset + limit] + @staticmethod + def find_friendship(first, second): + return Friendship.objects.filter(Q(source=first) & Q(target=second) | Q(target=first) & Q(source=second)).order_by('-created').first() + @staticmethod + def get_friendships_message(user, limit=20, offset=0, online_only=False): + friends_list = Friendship.get_friendships(user, limit, offset, True, online_only) + friends = [] + for friend in friends_list: + friends.append(friend.other(user)) + del(friends_list) + for friend in friends: + friend.get_latest_msg = friend.get_latest_msg(user) + return friends + +class Conversation(models.Model): + unique_id = models.UUIDField(default=uuid.uuid4, editable=False, unique=True) + id = models.AutoField(primary_key=True) + source = models.ForeignKey(User, related_name='conv_source', on_delete=models.CASCADE) + target = models.ForeignKey(User, related_name='conv_target', on_delete=models.CASCADE) + created = models.DateTimeField(auto_now_add=True) + + def __str__(self): + return "conversation with " + str(self.source) + " and " + str(self.target) + def latest_message(self, user): + msgs = Message.objects.filter(conversation=self).order_by('-created')[:5] + if not msgs: + return False + message = msgs.first() + message.mine = message.mine(user) + return message + def unread(self, user): + return self.message_set.filter(read=False).exclude(creator=user).order_by('-created') + def set_read(self, user): + return self.unread(user).update(read=True) + def all_read(self): + return self.message_set.filter().update(read=True) + def messages(self, request, limit=50, offset=0): + msgs = self.message_set.filter().order_by('-created')[offset:offset + limit] + for msg in msgs: + msg.mine = msg.mine(request.user) + return msgs + def make_message(self, request): + if not request.user.has_freedom() and (request.POST.get('url') or request.FILES.get('screen')): + return 6 + if Message.real.filter(creator=request.user, created__gt=timezone.now() - timedelta(seconds=2)).exists(): + return 3 + if len(request.POST['body']) > 50000 or (len(request.POST['body']) < 1 and not request.POST.get('_post_type') == 'painting'): + return 1 + upload = None + drawing = None + if request.FILES.get('screen'): + upload = util.image_upload(request.FILES['screen'], True) + if upload == 1: + return 2 + if request.POST.get('_post_type') == 'painting': + if not request.POST.get('painting'): + return 2 + drawing = util.image_upload(request.POST['painting'], False, True) + if drawing == 1: + return 2 + new_post = self.message_set.create(body=request.POST.get('body'), creator=request.user, feeling=int(request.POST.get('feeling_id', 0)), drawing=drawing, screenshot=upload) + new_post.mine = True + return new_post +class Message(models.Model): + unique_id = models.UUIDField(default=uuid.uuid4, editable=False, unique=True) + id = models.AutoField(primary_key=True) + conversation = models.ForeignKey(Conversation, on_delete=models.CASCADE) + feeling = models.SmallIntegerField(default=0, choices=feelings) + body = models.TextField(null=True) + drawing = models.CharField(max_length=200, null=True, blank=True) + screenshot = models.CharField(max_length=1200, null=True, blank=True, default='') + url = models.URLField(max_length=1200, null=True, blank=True, default='') + created = models.DateTimeField(auto_now_add=True) + read = models.BooleanField(default=False) + is_rm = models.BooleanField(default=False) + creator = models.ForeignKey(User, on_delete=models.CASCADE) + + objects = PostManager() + real = models.Manager() + + def __str__(self): + return self.body[:250] + def trun(self): + if self.is_rm: + return 'deleted' + if self.drawing: + return '(drawing)' + else: + return self.body + def mine(self, user): + if self.creator == user: + return True + return False + def rm(self, request): + if self.conversation.source == request.user or self.conversation.target == request.user: + self.is_rm = True + if self.screenshot: + util.image_rm(self.screenshot) + self.screenshot = None + if self.drawing: + util.image_rm(self.drawing) + self.drawing = None + self.save() + + def makeopt(ls): + if len(ls) < 1: + raise ValueError + return json.dumps(ls) + +class ConversationInvite(models.Model): + id = models.AutoField(primary_key=True) + conversation = models.ForeignKey(Conversation, on_delete=models.CASCADE) + source = models.ForeignKey(User, related_name='convinvite_source', on_delete=models.CASCADE) + target = models.ForeignKey(User, related_name='convinvite_target', on_delete=models.CASCADE) + body = models.TextField(blank=True, null=True, default='') + read = models.BooleanField(default=False) + finished = models.BooleanField(default=False) + created = models.DateTimeField(auto_now_add=True) + + def __str__(self): + return "Invite to conversation " + str(self.conversation) + " from " + str(self.source) + " to " + str(self.target) + +class Poll(models.Model): + # Todo: make this a plain int at some point + unique_id = models.UUIDField(default=uuid.uuid4, editable=False, unique=True) + id = models.AutoField(primary_key=True) + able_vote = models.BooleanField(default=True) + choices = models.TextField(default="[]") + created = models.DateTimeField(auto_now_add=True) + + def __str__(self): + return "A poll created at " + str(self.created) + def num_votes(self): + return self.pollvote_set.count() + def vote(self, user, opt): + ex_query = self.pollvote_set.filter(by=user) + if ex_query.exists(): + ex_query.first().delete() + self.pollvote_set.create(by=user, choice=opt) + def unvote(self, user): + vote = self.pollvote_set.filter(by=user).first() + if vote: + vote.delete() + def has_vote(self, user): + if not user.is_authenticated: + return False + vote = self.pollvote_set.filter(by=user) + if vote: + return (True, self.choices[vote.first().choice]) + return False + def setup(self, user): + self.choices = json.loads(self.choices) + self.num_votes = self.num_votes() + self.has_vote = self.has_vote(user) +class PollVote(models.Model): + id = models.AutoField(primary_key=True) + done = models.DateTimeField(auto_now_add=True) + choice = models.SmallIntegerField(default=0) + poll = models.ForeignKey(Poll, on_delete=models.CASCADE) + by = models.ForeignKey(User, on_delete=models.CASCADE) + + def __str__(self): + return "A vote on option " + str(self.choice) + " for poll \"" + str(self.poll) + "\" by " + str(self.by) + #def choice_votes(self): + # return PollVote.objects.filter(poll=self.poll, choice=self.choice).count() + +class RedFlag(models.Model): + id = models.AutoField(primary_key=True) + created = models.DateTimeField(auto_now_add=True) + post = models.ForeignKey(Post, blank=True, null=True, on_delete=models.CASCADE) + comment = models.ForeignKey(Comment, blank=True, null=True, on_delete=models.CASCADE) + user = models.ForeignKey(User, blank=True, null=True, on_delete=models.CASCADE) + type = models.SmallIntegerField(choices=((0, 'Post'), (1, 'Comment'), (2, 'User'), )) + reason = models.SmallIntegerField(choices=((0, "Actual harassment"), (1, "Spam"), (2, "I don't like this"), (3, "Personal info"), (4, "Obscene use of swearing"), (5, "NSFW where not allowed"), (6, "Overly advertising/spam"), (7, "Please delete this"))) + reasoning = models.TextField(default='', null=True, blank=True) + + def __str__(self): + return "Report on a " + self.get_type_display() + " for " + self.get_reason_display() + ": " + str(self.reasoning) + +# Login attempts: for incorrect passwords +class LoginAttempt(models.Model): + id = models.AutoField(primary_key=True) + created = models.DateTimeField(auto_now_add=True) + user = models.ForeignKey(User, on_delete=models.CASCADE) + success = models.BooleanField(default=False) + addr = models.CharField(max_length=64, null=True, blank=True) + user_agent = models.TextField(null=True, blank=True) + + def __str__(self): + return 'A login attempt to ' + str(self.user) + ' from ' + self.addr + ', ' + str(self.success) + +class MetaViews(models.Model): + id = models.AutoField(primary_key=True) + created = models.DateTimeField(auto_now_add=True) + target_user = models.ForeignKey(User, related_name='target_user', on_delete=models.CASCADE) + from_user = models.ForeignKey(User, related_name='from_user', on_delete=models.CASCADE) + def __str__(self): + return str(self.from_user) + ' viewed ' + str(self.target_user) +# Fun +class ThermostatTouch(models.Model): + id = models.AutoField(primary_key=True) + created = models.DateTimeField(auto_now_add=True) + who = models.ForeignKey(User, blank=True, null=True, on_delete=models.CASCADE) + lvl = models.IntegerField(default=1) + + def __str__(self): + return str(created) + " touched the thermostat, setting it to " + str(lvl) + " degrees celsius" + +# Finally +class UserBlock(models.Model): + id = models.AutoField(primary_key=True) + created = models.DateTimeField(auto_now_add=True) + source = models.ForeignKey(User, related_name='block_source', on_delete=models.CASCADE) + target = models.ForeignKey(User, related_name='block_target', on_delete=models.CASCADE) + full = models.BooleanField(default=False) + + def __str__(self): + return "Block created from " + str(self.source) + " to " + str(self.target) + + @staticmethod + def find_block(first, second, full=False): + if full: + return UserBlock.objects.filter(Q(source=first, full=True) & Q(target=second, full=True) | Q(target=first, full=True) & Q(source=second, full=True)).exists() + return UserBlock.objects.filter(Q(source=first) & Q(target=second) | Q(target=first) & Q(source=second)).exists() + +class AuditLog(models.Model): + id = models.AutoField(primary_key=True) + created = models.DateTimeField(auto_now_add=True) + type = models.SmallIntegerField(choices=((0, "Post delete"), (1, "Comment delete"), (2, "User edit"), (3, "Generate passwd reset"), (4, "User delete"), (5, "Image delete"), (6, "Purge 1"), (7, "Purge 2"), (8, "Purge 3"), (9, "Purge 4"), (10, "Purge 5"), (11, "Un-purge 1"), (12, 'Changed server settings'), )) + post = models.ForeignKey(Post, related_name='audit_post', null=True, on_delete=models.CASCADE) + comment = models.ForeignKey(Comment, related_name='audit_comment', null=True, on_delete=models.CASCADE) + user = models.ForeignKey(User, related_name='audit_user', null=True, on_delete=models.CASCADE) + reasoning = models.TextField(null=True, blank=True, default="") + by = models.ForeignKey(User, related_name='audit_by', on_delete=models.CASCADE) + reversed_by = models.ForeignKey(User, null=True, related_name='audit_reverse_by', on_delete=models.CASCADE) + + def __str__(self): + return str(self.by) + " did " + self.get_type_display() + " at " + str(self.created) + def reverse(self, user=None): + # Try to reverse what this did + if user: + self.reversed_by = user + # No switches in Python, so + if self.type == 0: + self.post.is_rm = False + self.post.status = 0 + self.post.save() + return True + elif self.type == 1: + self.post.is_rm = False + self.post.status = 0 + self.post.save() + return True + else: + return False + +# TODO: MAKE THIS ACTUALLY WORK +class Restriction(models.Model): + id = models.AutoField(primary_key=True) + created = models.DateTimeField(auto_now_add=True) + type = models.SmallIntegerField(choices=((0, "Prevent yeah"), (1, "Prevent follow"), (2, "Prevent comment"), )) + post = models.ForeignKey(Post, related_name='restriction_post', null=True, on_delete=models.CASCADE) + comment = models.ForeignKey(Comment, related_name='restriction_comment', null=True, on_delete=models.CASCADE) + user = models.ForeignKey(User, related_name='restriction_user', null=True, on_delete=models.CASCADE) + by = models.ForeignKey(User, related_name='restriction_by', on_delete=models.CASCADE) + + def __str__(self): + return "Restrict " + str(self.user) + " on " + self.get_type_display() + " at " + str(self.created) + +class UserRequest(User): + # USER AGENT + ua = models.TextField(default='', null=True, blank=True) + latest = models.DateTimeField(auto_now=True) + status = models.SmallIntegerField(default=0, choices=((0, 'submitted'), (1, 'viewed'), (2, 'accepted'), (3, 'decline'), (4, 'ignore'), )) + +class Ads(models.Model): + id = models.AutoField(primary_key=True) + created = models.DateTimeField(auto_now_add=True) + url = models.CharField(max_length=256, null=False, blank=False) + imageurl = models.ImageField(upload_to='ad/%y/%m/%d/', max_length=100) + + def get_one(): + ads = Ads.objects.all() + ad = random.choice(ads) + return ad + + def ads_available(): + global adsavailable + if(Ads.objects.all().exists()): + adsavailable = True + else: + adsavailable = False + return adsavailable + + def __str__(self): + return "Ad with id " + str(self.id) + ", created at " + str(self.created) + ", with url " + str(self.url) + ", and imageurl " + str(self.imageurl) + +class Motd(models.Model): + id = models.AutoField(primary_key=True) + order = models.IntegerField(max_length=3, default=1) + show = models.BooleanField(default=True) + created = models.DateTimeField(auto_now_add=True) + Title = models.CharField(max_length=256, blank=True, default='Title') + message = models.TextField(null=False, blank=False) + hide_date = models.BooleanField(default=False) + image = models.ImageField(upload_to='MOTD/%y/%m/%d/', max_length=255, null=True, blank=True) + + def get_one(): + mesoftheday = Motd.objects.order_by('order', '-id').filter(show=True) + return mesoftheday + + def motds_available(): + global motdsavailable + if(Motd.objects.filter(show=True).exists()): + motdsavailable = True + else: + motdsavailable = False + return motdsavailable + +class welcomemsg(models.Model): + id = models.AutoField(primary_key=True) + order = models.IntegerField(max_length=3, default=1) + show = models.BooleanField(default=True) + created = models.DateTimeField(auto_now_add=True) + Title = models.CharField(max_length=256, null=False, blank=False, default='Title') + message = models.TextField(null=False, blank=False) + image = models.ImageField(upload_to='welcomemsg/%y/%m/%d/', max_length=255, null=True, blank=True) + + def get_one(): + welmes = welcomemsg.objects.order_by('order', '-id').filter(show=True) + return welmes + + def welcomemsg_available(): + global welcomeisavailable + if(welcomemsg.objects.filter(show=True).exists()): + welcomeisavailable = True + else: + welcomeisavailable = False + return welcomeisavailable + +# thing will log changes to your bio or nickname +class ProfileHistory(models.Model): + id = models.AutoField(primary_key=True) + created = models.DateTimeField(auto_now_add=True) + user = models.ForeignKey(User, null=True, on_delete=models.CASCADE) + old_nickname = models.CharField(max_length=64, blank=True) + new_nickname = models.CharField(max_length=64, blank=True) + old_comment = models.TextField(blank=True) + new_comment = models.TextField(blank=True) + + def __str__(self): + return str(self.user) + ' changed profile details' + +# blah blah blah +# this method will be executed when... +def rm_post_image(sender, instance, **kwargs): + if instance.screenshot: + util.image_rm(instance.screenshot) + if instance.drawing: + util.image_rm(instance.drawing) +# when pre_delete happens on these +pre_delete.connect(rm_post_image, sender=Post) +pre_delete.connect(rm_post_image, sender=Comment) +pre_delete.connect(rm_post_image, sender=Message) diff --git a/closedverse_main/serializers.py b/closedverse_main/serializers.py new file mode 100644 index 0000000..02fadc1 --- /dev/null +++ b/closedverse_main/serializers.py @@ -0,0 +1,37 @@ +import json +class CommunitySerializer(): + """ + Serializes communities for use with JSON + """ + @staticmethod + def single(community): + """ + Return one dict for a community, meant to be used in community pages, etc + """ + return { + 'id': community.id, + 'unique_id': str(community.unique_id), + 'name': community.name, + 'icon': (community.icon() or None), + 'banner': (community.banner or None), + 'description': community.description, + 'type': community.type, + 'platform': community.platform, + 'allowed_users': json.loads(community.allowed_users) if community.allowed_users else None, + 'creator': community.creator_id + } + @staticmethod + def many(queryset): + """ + Return a community meant to be used in a bigger list, etc + """ + return [ + { + 'id': community.id, + 'name': community.name, + 'icon': (community.icon() or None), + 'banner': (community.banner or None), + 'type': community.type, + 'platform': community.platform + } for community in queryset + ] \ No newline at end of file diff --git a/closedverse_main/templates/403.html b/closedverse_main/templates/403.html new file mode 100644 index 0000000..53e56a1 --- /dev/null +++ b/closedverse_main/templates/403.html @@ -0,0 +1,4 @@ +{% extends "closedverse_main/layout.html" %} +{% load closedverse_tags %}{% block main-body %} +{% nocontent "403 Forbidden" %} +{% endblock %} \ No newline at end of file diff --git a/closedverse_main/templates/404.html b/closedverse_main/templates/404.html new file mode 100644 index 0000000..96b4cee --- /dev/null +++ b/closedverse_main/templates/404.html @@ -0,0 +1,4 @@ +{% extends "closedverse_main/layout.html" %} +{% load closedverse_tags %}{% block main-body %} +{% nocontent "If you're not careful and you noclip out of reality in the wrong areas, you'll end up in the Backrooms, where it's nothing but the stink of old moist carpet, the madness of mono-yellow, the endless background noise of fluorescent lights at maximum hum-buzz, and approximately six hundred million square miles of randomly segmented empty rooms to be trapped in. God save you if you hear something wandering around nearby, because it sure as hell has heard you." %} +{% endblock %} \ No newline at end of file diff --git a/closedverse_main/templates/closedverse_main/activity-loading.html b/closedverse_main/templates/closedverse_main/activity-loading.html new file mode 100644 index 0000000..e7e6aba --- /dev/null +++ b/closedverse_main/templates/closedverse_main/activity-loading.html @@ -0,0 +1,44 @@ +{% extends "closedverse_main/layout.html" %} +{% load static %}{% load closedverse_user %}{% load closedverse_community %}{% load closedverse_tags %} +{% block main-body %} +{% user_sidebar request user user.profile 0 True %} +
+
+

+ Activity Feed +

+
+
+ Show my own posts + Show one of each person's posts +
+
+ + + +
+ {% if community %} +
+ {% post_form request.user community %} +
+ {% endif %} +
+
+
+ {% discordapp_spinner %} +

Loading activity feed...

+
+
+
+
+

The activity feed couldn't be loaded. Check your Internet connection, wait a moment, and then try reloading.

+ +
+
+
+ +
+{% endblock %} diff --git a/closedverse_main/templates/closedverse_main/activity.html b/closedverse_main/templates/closedverse_main/activity.html new file mode 100644 index 0000000..b9f7e13 --- /dev/null +++ b/closedverse_main/templates/closedverse_main/activity.html @@ -0,0 +1 @@ +{% load closedverse_user %}{% u_post_list posts next 2 %} \ No newline at end of file diff --git a/closedverse_main/templates/closedverse_main/change-password.html b/closedverse_main/templates/closedverse_main/change-password.html new file mode 100644 index 0000000..de81a5e --- /dev/null +++ b/closedverse_main/templates/closedverse_main/change-password.html @@ -0,0 +1,31 @@ +{% extends "closedverse_main/layout.html" %} +{% block main-body %}{% load closedverse_user %} +{% user_sidebar request user user.profile 0 True %} +
+
+

Change password

+
+

You can change your password here

+
  • +

    Old Password:

    +
    + +
    +

    New Password:

    +
    + +
    +

    Confirm Password:

    +
    + +
    +
  • + {% csrf_token %} +
    + +
    +
    +
    +
    + +{% endblock %} diff --git a/closedverse_main/templates/closedverse_main/comment-view.html b/closedverse_main/templates/closedverse_main/comment-view.html new file mode 100644 index 0000000..8990ae0 --- /dev/null +++ b/closedverse_main/templates/closedverse_main/comment-view.html @@ -0,0 +1,88 @@ +{% extends "closedverse_main/layout.html" %} +{% load closedverse_tags %}{% load closedverse_community %}{% block main-body %} +
    + +
    + + + View {{ comment.original_post.creator.nickname }}'s post ({{ comment.original_post.trun|truncatechars:35 }}) for this comment. + +
    +
    +
    +
    +

    {{ comment.community.name }}

    + {% if comment.is_mine or comment.can_rm %} + {% if user.is_active %} +
    + + {% if comment.is_mine and not comment.has_edit %} + + {% endif %} +
    + {% endif %} + {% endif %} + +
    + {% user_icon_container comment.creator comment.feeling %} +
    +

    {{ comment.creator.nickname }}

    + {% if not comment.creator.is_active %} +

    Banned

    + {% endif %} +

    + Spoilers · + {% time comment.created %} + {% if comment.drawing %} + (handwritten) + {% endif %} + {% if comment.has_edit %} + · Edited ({% time comment.edited %}) + {% endif %}

    +
    +
    +
    + {% if comment.is_mine %} +
    +
    + {% feeling_selector comment.feeling %} +
    + +
    +
    + +
    +
    + + +
    +
    +
    + {% endif %} +
    + {% if comment.drawing %} +

    + {% else %} +

    {{ comment.body|linebreaksbr }}

    + {% endif %} + {% if comment.screenshot %} +
    + {% endif %} + +
    + {% empathy_content yeahs request comment.has_yeah %} + + +
    +
    +
    + + +
    +
    +{% endblock %} \ No newline at end of file diff --git a/closedverse_main/templates/closedverse_main/community-search.html b/closedverse_main/templates/closedverse_main/community-search.html new file mode 100644 index 0000000..21eb658 --- /dev/null +++ b/closedverse_main/templates/closedverse_main/community-search.html @@ -0,0 +1,44 @@ +{% extends "closedverse_main/layout.html" %} +{% load static %}{% load closedverse_tags %}{% load closedverse_user %} +{% block main-body %} +{% user_sidebar request user user.profile 0 True %} +
    +

    Search Communities

    + + {% if communities %} +
    +

    {{ communities|length }} result{% if not communities|length == 1 %}s{% endif %} found for "{{ query }}"

    +
      +{% for community in communities %} +
    • + {% if community.banner %} + + {% endif %} +
      + +
      + {{ community.name }} + + + {% if community.type_platform %}{% load static %} {% endif %} + + {{ community.type_txt }} +
      +
      +
    • +{% endfor %} +
    +
    + {% else %} +
    +
    +

    "{{ query }}" could not be found.
    +Try searching for something different.

    +
    +
    + {% endif %} +
    +{% endblock %} \ No newline at end of file diff --git a/closedverse_main/templates/closedverse_main/community_all.html b/closedverse_main/templates/closedverse_main/community_all.html new file mode 100644 index 0000000..bb7deeb --- /dev/null +++ b/closedverse_main/templates/closedverse_main/community_all.html @@ -0,0 +1,47 @@ +{% extends "closedverse_main/layout.html" %} +{% load closedverse_tags %}{% load closedverse_community %}{% block main-body %} +
    +
    +
    +
    +

    Community creation Q&A

    +

    Why?

    +

    I have no idea, I guess it's cool to have. You can have your own little corner of this site now...

    +

    What can I do with my own community?

    +

    You can edit it, and that's basically it.

    +

    What are C-Tokens, and how do I get them?

    +

    Community tokens are a stupid and overcomplicated method of preventing 200,000 communities from being made by one person. You get one when signing up, and you can use it to make your own community. You'll have to ask a staff member for more C-Tokens if you want to make more communities. 

    +

    Any future plans?

    +

    Fuck, I got no clue. Maybe I should make C-Tokens tradable, or make a community ban system, so you can block people from posting and commenting in your own communities.

    +
    + {% if request.user.c_tokens > 0 %}Create a community{% endif %} +
    +
    +
    +
    + General + Game + Special + User +
    +
    + {% community_page_element general "General Communities" %} +
    +
    + {% community_page_element game "Game Communities" %} +
    +
    + {% community_page_element special "Special Communities" %} +
    +
    + {% community_page_element user_communities "User Communities" %} +
    + {% if has_next %} + Next + {% endif %} + {% if has_back %} +

     

    + Back + {% endif %} +
    +{% endblock %} \ No newline at end of file diff --git a/closedverse_main/templates/closedverse_main/community_create.html b/closedverse_main/templates/closedverse_main/community_create.html new file mode 100644 index 0000000..44bf6c9 --- /dev/null +++ b/closedverse_main/templates/closedverse_main/community_create.html @@ -0,0 +1,41 @@ +{% extends "closedverse_main/layout.html" %} +{% block main-body %}{% load closedverse_user %}{% load closedverse_tags %} +
    +

    Create a new community

    +
    +

    Create your own community that you can edit here! Each community will cost you one Community Token.

    +
  • +

    Set name:

    +
    + +
    +
  • +
  • +

    Community description:

    + +
  • +
  • +

    +
    +
    + +
    +
    +
  • + {% csrf_token %} +
    + +

    You have {{ tokens }} token(s) remaining

    +

    I'm too lazy to add the remaining settings in here for now, but you can change them after making the community. Oh yeah, also if your community gets removed by a staff member, you won't get your token back, so don't make communities that break the rules or whatever.

    +
    +
    +{% endblock %} \ No newline at end of file diff --git a/closedverse_main/templates/closedverse_main/community_favorites.html b/closedverse_main/templates/closedverse_main/community_favorites.html new file mode 100644 index 0000000..f7b2a6c --- /dev/null +++ b/closedverse_main/templates/closedverse_main/community_favorites.html @@ -0,0 +1,9 @@ +{% extends "closedverse_main/layout.html" %} +{% block main-body %}{% load closedverse_user %}{% load closedverse_community %} +{% user_sidebar request user profile 0 %} +
    +

    {% if other %}{{ user.nickname }}'s favorite{% else %}Favorite{% endif %} communities

    +{% community_page_element favorites None %} + +
    +{% endblock %} \ No newline at end of file diff --git a/closedverse_main/templates/closedverse_main/community_list.html b/closedverse_main/templates/closedverse_main/community_list.html new file mode 100644 index 0000000..1e278b2 --- /dev/null +++ b/closedverse_main/templates/closedverse_main/community_list.html @@ -0,0 +1,96 @@ +{% extends "closedverse_main/layout.html" %} +{% load closedverse_tags %}{% load closedverse_community %}{% block main-body %} +
    +
    +
    +
    + + + {% if user.is_warned %} +
    +

    WARNING: You have been issued a warning by an administrator. No features have been restricted, as this is just a warning. +

    + {% if user.get_warned_reason %} +

    Reason: "{{ user.get_warned_reason }}"

    + {% endif %} +
    +
    + {% endif %} + + {% if availablemotds and request.user.is_authenticated %} +
    +

    MOTD / News

    + {% for mesoftheday in mesoftheday %} + {% if mesoftheday.Title %}

    {{ mesoftheday.Title }}

    {% endif %} +

    {{ mesoftheday.message|linebreaksbr|urlize }}

    + {% if mesoftheday.image %}{% endif %} + {% if mesoftheday.hide_date == False %}

    Posted {{ mesoftheday.created }}

    {% endif %} + {% endfor %} +
    + {% endif %} + + {% if availablemes and not request.user.is_authenticated %} +
    +

    Welcome to Cedar!

    + {% for welmes in welmes %} +

    {{ welmes.Title }}

    +

    {{ welmes.message|linebreaksbr|urlize }}

    + {% if welmes.image %}{% endif %} + {% endfor %} +
    + {% endif %} + {% if request.user.c_tokens > 0 %}Create a community{% endif %} + + {% if availableads %} +
    +

    User-Generated Ad

    +

    What are user-generated ads?

    + +
    + {% endif %} +
    +
    + {% if favorites %} +

    Favorite communities

    +
    + +
    + {% endif %} + {% if feature %} + {% community_page_element feature "Featured Communities" True %} + {% endif %} + {% community_page_element general "General Communities" %} + {% community_page_element game "Game Communities" %} + {% community_page_element special "Special Communities" %} + {% community_page_element user_communities "User owned Communities" %} + Show more +
    + +{% endblock %} diff --git a/closedverse_main/templates/closedverse_main/community_tools.html b/closedverse_main/templates/closedverse_main/community_tools.html new file mode 100644 index 0000000..a5a5562 --- /dev/null +++ b/closedverse_main/templates/closedverse_main/community_tools.html @@ -0,0 +1,64 @@ +{% extends "closedverse_main/layout.html" %} +{% block main-body %}{% load closedverse_user %}{% load closedverse_tags %}{% load closedverse_community %} +{% if community.is_feature %}
    +

    Who the fuck gave you ownership of a fucking featured community!

    +
    {% endif %} +{% community_sidebar community request %} +
    +

    Change settings for {{ community.creator }}'s community

    +
    +
  • +

    Set name:

    +
    + +
    +
  • +
  • +

    Community description:

    + +
  • + {% if request.user.has_freedom %} +
  • + +
  • +
  • + +
  • + {% endif %} +
  • +

     

    + Require login: +

    If this is on, users will need to sign in to view your community.

    +
  • +
  • +

    Platform

    +
    +
    + +
    +
    +

    If your community is for a video game, you can set the platform here. This will show an icon corresponding to what platform you pick.

    +
  • + {% csrf_token %} +
    + +
    +
    +{% endblock %} \ No newline at end of file diff --git a/closedverse_main/templates/closedverse_main/community_view.html b/closedverse_main/templates/closedverse_main/community_view.html new file mode 100644 index 0000000..e38fe41 --- /dev/null +++ b/closedverse_main/templates/closedverse_main/community_view.html @@ -0,0 +1,25 @@ +{% extends "closedverse_main/layout.html" %}{% block main-body %}{% load closedverse_community %} +{% community_sidebar community request %} +
    + {% if user.is_warned and user.is_authenticated and user.is_active %} +
    +

    WARNING: You have been issued a warning by an administrator. No features have been restricted, as this is just a warning. +

    + {% if user.get_warned_reason %} +

    Reason: "{{ user.get_warned_reason }}"

    + {% endif %} +
    +
    + {% endif %} +
    +

    {{ community.name }}:

    + {% if request.user.is_authenticated and community.post_perm %} + {% post_form request.user community %} + {% endif %} +
    + {% post_list posts next %} +
    +
    +
    + +{% endblock %} \ No newline at end of file diff --git a/closedverse_main/templates/closedverse_main/elements/comment-form.html b/closedverse_main/templates/closedverse_main/elements/comment-form.html new file mode 100644 index 0000000..cebc445 --- /dev/null +++ b/closedverse_main/templates/closedverse_main/elements/comment-form.html @@ -0,0 +1,55 @@ +{% load closedverse_community %}
    + {% csrf_token %} + {% if user.is_active %} + {% if not user.limit_remaining is False %} +
    + Remaining posts for today + {{ user.limit_remaining }} +
    + {% endif %} + + {% feeling_selector %} + +
    + +
  • +
  • +
    +
    + +
    +
    + +
    + {% memo_drawboard %} + +
    + {% if user.has_freedom %} + {% file_button %} + {% endif %} + +
    +
    + +
    +
    + + + + +
    + +
    +
    +{% endif %} + +{% if not user.is_active %} +

    Your account has been disabled.

    +{% endif %} \ No newline at end of file diff --git a/closedverse_main/templates/closedverse_main/elements/community_page_elem.html b/closedverse_main/templates/closedverse_main/elements/community_page_elem.html new file mode 100644 index 0000000..2071b7d --- /dev/null +++ b/closedverse_main/templates/closedverse_main/elements/community_page_elem.html @@ -0,0 +1,32 @@ +{% load closedverse_tags %}{% if title %}

    {{ title }}

    +{% endif %}{% if communities %} + +{% else %} + {% if title %}
    {% endif %} + {% if title %} + {% nocontent "No communities of this type have been created yet." %} + {% else %} + {% nocontent "You haven't favorited any communities yet. Use the favorite button in a community to add it here." %} + {% endif %} + {% if title %}
    {% endif %} +{% endif %} \ No newline at end of file diff --git a/closedverse_main/templates/closedverse_main/elements/community_post.html b/closedverse_main/templates/closedverse_main/elements/community_post.html new file mode 100644 index 0000000..301c540 --- /dev/null +++ b/closedverse_main/templates/closedverse_main/elements/community_post.html @@ -0,0 +1,97 @@ +{% if not post.is_rm %} +{% load closedverse_tags %} +{% endif %} diff --git a/closedverse_main/templates/closedverse_main/elements/community_sidebar.html b/closedverse_main/templates/closedverse_main/elements/community_sidebar.html new file mode 100644 index 0000000..7c8c385 --- /dev/null +++ b/closedverse_main/templates/closedverse_main/elements/community_sidebar.html @@ -0,0 +1,46 @@ + \ No newline at end of file diff --git a/closedverse_main/templates/closedverse_main/elements/discordapp-spinner.html b/closedverse_main/templates/closedverse_main/elements/discordapp-spinner.html new file mode 100644 index 0000000..53d1e9c --- /dev/null +++ b/closedverse_main/templates/closedverse_main/elements/discordapp-spinner.html @@ -0,0 +1 @@ +

    I'm loading it !

    diff --git a/closedverse_main/templates/closedverse_main/elements/empathy-content.html b/closedverse_main/templates/closedverse_main/elements/empathy-content.html new file mode 100644 index 0000000..56270d5 --- /dev/null +++ b/closedverse_main/templates/closedverse_main/elements/empathy-content.html @@ -0,0 +1,6 @@ +{% load closedverse_tags %}
    +{% if myself.is_authenticated %}{% endif %} +{% for yeah in yeahs %}{% if not myself.is_authenticated or not yeah.by == myself %} + +{% endif %}{% endfor %} +
    \ No newline at end of file diff --git a/closedverse_main/templates/closedverse_main/elements/feeling-selector.html b/closedverse_main/templates/closedverse_main/elements/feeling-selector.html new file mode 100644 index 0000000..a5d4ec4 --- /dev/null +++ b/closedverse_main/templates/closedverse_main/elements/feeling-selector.html @@ -0,0 +1,2 @@ +
    +
    \ No newline at end of file diff --git a/closedverse_main/templates/closedverse_main/elements/file-button.html b/closedverse_main/templates/closedverse_main/elements/file-button.html new file mode 100644 index 0000000..662820d --- /dev/null +++ b/closedverse_main/templates/closedverse_main/elements/file-button.html @@ -0,0 +1,16 @@ + + + + diff --git a/closedverse_main/templates/closedverse_main/elements/fr-accept.html b/closedverse_main/templates/closedverse_main/elements/fr-accept.html new file mode 100644 index 0000000..28ee8e2 --- /dev/null +++ b/closedverse_main/templates/closedverse_main/elements/fr-accept.html @@ -0,0 +1,15 @@ +{% load closedverse_tags %}{% load closedverse_user %}
    +
    +
    +

    Friend Request from {{ fr.source.nickname }} at {% time fr.created True %}

    +
    + {% user_sidebar_info fr.source %} +
    {% if fr.body %}{{ fr.body }}{% else %}(No message){% endif %}
    +

    Accept {{ fr.source.nickname }}'s friend request?

    +
    + +
    +
    +
    +
    +
    \ No newline at end of file diff --git a/closedverse_main/templates/closedverse_main/elements/memo-drawboard.html b/closedverse_main/templates/closedverse_main/elements/memo-drawboard.html new file mode 100644 index 0000000..e5d481b --- /dev/null +++ b/closedverse_main/templates/closedverse_main/elements/memo-drawboard.html @@ -0,0 +1,28 @@ +
    +
    +
    +

    Drawing

    +
    +
    + + + + + + + +
    +
    + + + + +
    +
    + + +
    +
    +
    +
    +
    \ No newline at end of file diff --git a/closedverse_main/templates/closedverse_main/elements/message-form.html b/closedverse_main/templates/closedverse_main/elements/message-form.html new file mode 100644 index 0000000..ece510a --- /dev/null +++ b/closedverse_main/templates/closedverse_main/elements/message-form.html @@ -0,0 +1,41 @@ +{% load closedverse_community %}
    + {% csrf_token %} +{% if user.is_active %} + {% feeling_selector %} +
    + +
  • +
  • +
    +
    + +
    +
    + +
    + {% memo_drawboard %} + +
    + {% if user.has_freedom %} + {% file_button %} + {% endif %} + +
    + +
    + + + + +
    + +
    +
    +{% endif %} +{% if not user.is_active %} +

    Your account has been disabled.

    +{% endif %} \ No newline at end of file diff --git a/closedverse_main/templates/closedverse_main/elements/message-list.html b/closedverse_main/templates/closedverse_main/elements/message-list.html new file mode 100644 index 0000000..6e25e83 --- /dev/null +++ b/closedverse_main/templates/closedverse_main/elements/message-list.html @@ -0,0 +1,7 @@ +{% load closedverse_user %}
    + + {% for post in messages %} + {% message post %} + {% endfor %} + +
    \ No newline at end of file diff --git a/closedverse_main/templates/closedverse_main/elements/message.html b/closedverse_main/templates/closedverse_main/elements/message.html new file mode 100644 index 0000000..375a97c --- /dev/null +++ b/closedverse_main/templates/closedverse_main/elements/message.html @@ -0,0 +1,17 @@ +{% load markdown_deux_tags %}{% load closedverse_tags %}
    + {% user_icon_container message.creator message.feeling %} +

    + {% time message.created %}{% if message.read %} - Read{% endif %} + +

    +
    + {% if message.drawing %} +

    + {% else %} +
    {{ message.body|markdown }}
    + {% endif %} + {% if message.screenshot %} +
    + {% endif %} +
    +
    \ No newline at end of file diff --git a/closedverse_main/templates/closedverse_main/elements/names.html b/closedverse_main/templates/closedverse_main/elements/names.html new file mode 100644 index 0000000..baaa2ee --- /dev/null +++ b/closedverse_main/templates/closedverse_main/elements/names.html @@ -0,0 +1 @@ +{% if names|length == 1 %}{{ names.0.nickname }}{% elif names|length == 2 %}{{ names.0.nickname }} and {{ names.1.nickname }}{% elif names|length == 3 %}{{ names.0.nickname }}, {{ names.1.nickname }}, and {{ names.2.nickname }}{% elif names|length == 4 %}{{ names.0.nickname }}, {{ names.1.nickname }}, {{ names.2.nickname }}, and {{ names.3.nickname }}{% elif names|length == 5 %}{{ names.0.nickname }}, {{ names.1.nickname }}, {{ names.2.nickname }}, {{ names.3.nickname }}, and 1 other{% else %}{{ names.0.nickname }}, {{ names.1.nickname }}, {{ names.2.nickname }}, {{ names.3.nickname }}, and {{ nameallmn }} others{% endif %} \ No newline at end of file diff --git a/closedverse_main/templates/closedverse_main/elements/no-content.html b/closedverse_main/templates/closedverse_main/elements/no-content.html new file mode 100644 index 0000000..2e15121 --- /dev/null +++ b/closedverse_main/templates/closedverse_main/elements/no-content.html @@ -0,0 +1,3 @@ +
    +

    {{ text }}

    +
    \ No newline at end of file diff --git a/closedverse_main/templates/closedverse_main/elements/p_username.html b/closedverse_main/templates/closedverse_main/elements/p_username.html new file mode 100644 index 0000000..778c597 --- /dev/null +++ b/closedverse_main/templates/closedverse_main/elements/p_username.html @@ -0,0 +1 @@ +

    {{ user.nickname }}{{ user.username }}

    \ No newline at end of file diff --git a/closedverse_main/templates/closedverse_main/elements/post-comment.html b/closedverse_main/templates/closedverse_main/elements/post-comment.html new file mode 100644 index 0000000..47d5801 --- /dev/null +++ b/closedverse_main/templates/closedverse_main/elements/post-comment.html @@ -0,0 +1,51 @@ +{% if not comment.is_rm %}{% load closedverse_tags %}
  • + {% user_icon_container comment.creator comment.feeling %} +
    +
    +

    {{ comment.creator.nickname }}

    + {% if not comment.creator.is_active %} +

    Banned

    + {% endif %} +

    + {% time comment.created %} + {% if comment.drawing %} + (drawing) + {% endif %} + {% if comment.has_edit %} + · Edited + {% endif %} + · Spoilers +

    +
    + + {% if comment.drawing %} +

    + {% else %} +
    {{ comment.body|linebreaksbr }}
    + {% endif %} + {% if comment.screenshot %} +
    + {% endif %} + {% if comment.spoils and comment.creator.is_active %} +

    This comment contains spoilers.

    + +
    + {% endif %} + {% if not comment.creator.is_active %} +

    Content hidden because its creator was banned.

    + {% if comment.creator.get_warned_reason %} +

    Reason: {{comment.creator.get_warned_reason}} + {% endif %} + +

    + {% endif %} + +
    + +
    Yeahs{{ comment.number_yeahs }}
    +
    +
    +
  • +{% endif %} \ No newline at end of file diff --git a/closedverse_main/templates/closedverse_main/elements/post-form.html b/closedverse_main/templates/closedverse_main/elements/post-form.html new file mode 100644 index 0000000..f5cbae8 --- /dev/null +++ b/closedverse_main/templates/closedverse_main/elements/post-form.html @@ -0,0 +1,69 @@ +{% load closedverse_community %}
    + {% csrf_token %} + +{% if user.is_active %} + {% if not user.limit_remaining is False %} +
    + Remaining posts for today + {{ user.limit_remaining }} +
    + {% endif %} + + {% feeling_selector %} +
    + +
  • +
  • + +
    +
    + +
    +
    + +
    + {% memo_drawboard %} + +
    + + {% if user.has_freedom %} + + {% file_button %} + {% endif %} + +
    + +
    + +
    +
    + + + + +
    + +
    +
    +{% endif %} + +{% if not user.is_active %} +

    Your account has been disabled.

    +{% endif %} \ No newline at end of file diff --git a/closedverse_main/templates/closedverse_main/elements/post-list.html b/closedverse_main/templates/closedverse_main/elements/post-list.html new file mode 100644 index 0000000..520090b --- /dev/null +++ b/closedverse_main/templates/closedverse_main/elements/post-list.html @@ -0,0 +1,9 @@ +{% load closedverse_tags %}{% load closedverse_community %}
    +{% if posts %} +{% for post in posts %} +{% community_post post type %} +{% endfor %} +{% else %} +{% if nf %}{% nocontent nf %}{% else %}{% nocontent "The posts couldn't be loaded." %}{% endif %} +{% endif %} +
    \ No newline at end of file diff --git a/closedverse_main/templates/closedverse_main/elements/post_comments.html b/closedverse_main/templates/closedverse_main/elements/post_comments.html new file mode 100644 index 0000000..97dc1f0 --- /dev/null +++ b/closedverse_main/templates/closedverse_main/elements/post_comments.html @@ -0,0 +1,5 @@ +{% load closedverse_community %} \ No newline at end of file diff --git a/closedverse_main/templates/closedverse_main/elements/profile-post.html b/closedverse_main/templates/closedverse_main/elements/profile-post.html new file mode 100644 index 0000000..a1c6e40 --- /dev/null +++ b/closedverse_main/templates/closedverse_main/elements/profile-post.html @@ -0,0 +1,64 @@ +{% load closedverse_tags %} \ No newline at end of file diff --git a/closedverse_main/templates/closedverse_main/elements/profile-user-list.html b/closedverse_main/templates/closedverse_main/elements/profile-user-list.html new file mode 100644 index 0000000..45a2a0c --- /dev/null +++ b/closedverse_main/templates/closedverse_main/elements/profile-user-list.html @@ -0,0 +1,7 @@ +{% load closedverse_user %}
    + +
    \ No newline at end of file diff --git a/closedverse_main/templates/closedverse_main/elements/profile-user.html b/closedverse_main/templates/closedverse_main/elements/profile-user.html new file mode 100644 index 0000000..9949170 --- /dev/null +++ b/closedverse_main/templates/closedverse_main/elements/profile-user.html @@ -0,0 +1,24 @@ +{% load closedverse_tags %}
  • + {% user_icon_container user %} + +{% if request.user.is_authenticated and not user.is_following %} +
    + + +
    +{% endif %} + +
    +

    + {{ user.nickname }} + {{ user.username }} +

    +

    {{ user.profile.comment }}

    + + {% if user.profile.favorite.screenshot %} + + {% endif %} +
    +
  • diff --git a/closedverse_main/templates/closedverse_main/elements/u-post-list.html b/closedverse_main/templates/closedverse_main/elements/u-post-list.html new file mode 100644 index 0000000..7300461 --- /dev/null +++ b/closedverse_main/templates/closedverse_main/elements/u-post-list.html @@ -0,0 +1,9 @@ +{% load closedverse_tags %}{% load closedverse_user %}
    +{% if posts %} +{% for post in posts %} +{% user_post post type %} +{% endfor %} +{% else %} +{% if nf %}{% nocontent nf %}{% else %}{% nocontent "The posts couldn't be loaded." %}{% endif %} +{% endif %} +
    \ No newline at end of file diff --git a/closedverse_main/templates/closedverse_main/elements/user-icon-container.html b/closedverse_main/templates/closedverse_main/elements/user-icon-container.html new file mode 100644 index 0000000..9172bc1 --- /dev/null +++ b/closedverse_main/templates/closedverse_main/elements/user-icon-container.html @@ -0,0 +1 @@ + diff --git a/closedverse_main/templates/closedverse_main/elements/user-notification.html b/closedverse_main/templates/closedverse_main/elements/user-notification.html new file mode 100644 index 0000000..7e6a790 --- /dev/null +++ b/closedverse_main/templates/closedverse_main/elements/user-notification.html @@ -0,0 +1,27 @@ +{% load closedverse_tags %}
    + {% user_icon_container notification.source %} +
    + {% if notification.type == 0 %} + {% print_names notification.all_users %} gave your post ({{ notification.context_post.trun|truncatechars:30 }}) a Yeah. + {% elif notification.type == 1 %} + {% print_names notification.all_users %} gave your comment ({{ notification.context_comment.trun|truncatechars:30 }}) a Yeah. + {% elif notification.type == 2 %} + {% print_names notification.all_users %} commented on your post ({{ notification.context_post.trun|truncatechars:30 }}). + {% elif notification.type == 3 %} + {% print_names notification.all_users %} commented on {{ notification.source.nickname }}'s post ({{ notification.context_post.trun|truncatechars:30 }}). + {% elif notification.type == 4 %} + Followed by {% print_names notification.all_users %}. + {% endif %} + {% time notification.latest %} +{% if notification.type == 4 and not notification.source.is_following and not notification.all_users|length > 1 %} +
    + + +
    +{% else %} + +{% endif %} + +
    + +
    \ No newline at end of file diff --git a/closedverse_main/templates/closedverse_main/elements/user-sidebar-info.html b/closedverse_main/templates/closedverse_main/elements/user-sidebar-info.html new file mode 100644 index 0000000..d32c5ed --- /dev/null +++ b/closedverse_main/templates/closedverse_main/elements/user-sidebar-info.html @@ -0,0 +1,11 @@ +{% load closedverse_tags %}
    +
    + + {{ user.nickname }} + +
    + {% if user.get_class.1 %}

    {% user_level user %}

    {% endif %} + + {{ user.nickname }} +

    {{ user.username }}

    +
    diff --git a/closedverse_main/templates/closedverse_main/elements/user-sidebar.html b/closedverse_main/templates/closedverse_main/elements/user-sidebar.html new file mode 100644 index 0000000..8df1dd8 --- /dev/null +++ b/closedverse_main/templates/closedverse_main/elements/user-sidebar.html @@ -0,0 +1,232 @@ +{% load closedverse_tags %}{% load closedverse_user %} +{% if user.is_authenticated %} +{% endif %} diff --git a/closedverse_main/templates/closedverse_main/forgot_page.html b/closedverse_main/templates/closedverse_main/forgot_page.html new file mode 100644 index 0000000..c740bba --- /dev/null +++ b/closedverse_main/templates/closedverse_main/forgot_page.html @@ -0,0 +1,20 @@ +{% extends "closedverse_main/layout.html" %} +{% load static %}{% block main-body %} +
    +
    +
    + +

    {{ title }}

    +

    If you've forgotten your password or need to reset it for some reason, you've come to the right place.
    Yes, this works.

    +

    + {% csrf_token %} +

    + +
    +

    Having issues? Want to get back into your account? Try contacting us if you need help with this.

    +

    Notice: Your user ID is used to log in, and is sometimes referred to as a username. It is below your nickname in most cases, please make sure you are using your user ID and your password.

    +
    +
    +
    +
    +{% endblock %} \ No newline at end of file diff --git a/closedverse_main/templates/closedverse_main/forgot_reset.html b/closedverse_main/templates/closedverse_main/forgot_reset.html new file mode 100644 index 0000000..00dd635 --- /dev/null +++ b/closedverse_main/templates/closedverse_main/forgot_reset.html @@ -0,0 +1,22 @@ +{% extends "closedverse_main/layout.html" %} +{% load static %}{% block main-body %} +
    +
    +
    + +

    Reset password

    +

    Hello {{ user.username }}, it's time to change your password.

    + +

    +

    + {% csrf_token %} +

    + +
    +

    Once finished you can log into your account with your new password.

    +
    +
    + +
    +
    +{% endblock %} \ No newline at end of file diff --git a/closedverse_main/templates/closedverse_main/friendrequests.html b/closedverse_main/templates/closedverse_main/friendrequests.html new file mode 100644 index 0000000..1c6f305 --- /dev/null +++ b/closedverse_main/templates/closedverse_main/friendrequests.html @@ -0,0 +1,45 @@ +{% extends "closedverse_main/layout.html" %} +{% block main-body %}{% load closedverse_tags %}{% load closedverse_user %} +{% user_sidebar request user user.profile 0 True %} +
    +
    + +

    {{ title }}

    + + + {% for fr in friendrequests %} + {% fr_accept fr %} + {% endfor %} +
    + {% if friendrequests %} + {% for fr in friendrequests %} +
    + {% user_icon_container fr.source %} +
    + {{ fr.source.nickname }}
    {% time fr.created %} + +
    +
    + {% endfor %} + {% else %} + {% nocontent "No friend requests yet." %} + {% endif %} +
    + +
    +
    +{% endblock %} diff --git a/closedverse_main/templates/closedverse_main/help/Active_clones.html b/closedverse_main/templates/closedverse_main/help/Active_clones.html new file mode 100644 index 0000000..fc39824 --- /dev/null +++ b/closedverse_main/templates/closedverse_main/help/Active_clones.html @@ -0,0 +1,98 @@ +{% extends "closedverse_main/layout.html" %} +{% block main-body %}{% load closedverse_user %} +{% user_sidebar request user user.profile 0 True %} +
    + + +
    +

    Notice: Your IP and email are both viewable in MySQL. Use caution when using clones that are hosted by untrusted users. +

    + +
    +

    Active clones

    +
    +
    +

    im too lazy to update this

    + +
    +
    +
    +
    +{% endblock %} \ No newline at end of file diff --git a/closedverse_main/templates/closedverse_main/help/contact.html b/closedverse_main/templates/closedverse_main/help/contact.html new file mode 100644 index 0000000..95251af --- /dev/null +++ b/closedverse_main/templates/closedverse_main/help/contact.html @@ -0,0 +1,14 @@ +{% extends "closedverse_main/layout.html" %} +{% block main-body %}{% load closedverse_user %} +{% user_sidebar request user user.profile 0 True %} +
    +
    +

    Contact the team behind this

    +
    +
    +

    I'll make this page later, need permission from our admins and shit...

    +
    +
    +
    +
    +{% endblock %} diff --git a/closedverse_main/templates/closedverse_main/help/email.html b/closedverse_main/templates/closedverse_main/help/email.html new file mode 100644 index 0000000..448bb4e --- /dev/null +++ b/closedverse_main/templates/closedverse_main/help/email.html @@ -0,0 +1,15 @@ + + + Hi + + + + + The logo +
    +

    A password reset request has been submitted for your email.

    +

    Follow this link to reset your password: {{ link }}

    +

    If you didn't submit this, please ignore this email, someone probably tried to use your email to reset, and they can't have any access unless they actually have your email address. If you're having trouble, contact us here.


    +

    Thank you for using our service! :)

    + + \ No newline at end of file diff --git a/closedverse_main/templates/closedverse_main/help/faq.html b/closedverse_main/templates/closedverse_main/help/faq.html new file mode 100644 index 0000000..cca949d --- /dev/null +++ b/closedverse_main/templates/closedverse_main/help/faq.html @@ -0,0 +1,38 @@ +{% extends "closedverse_main/layout.html" %} +{% block main-body %}{% load closedverse_user %} +{% user_sidebar request user user.profile 0 True %} +
    +
    +

    Frequently Asked Questions (FAQ)

    +
    +
    +

    Hey there! If you have any questions about Cedar, this page aims to answer them.

    +

    What is Cedar?

    +

    Cedar is a social network that offers a safe and secure platform for users to connect and share. It is based on the Closedverse project and has some unique features compared to other sites, such as customizable communities and a drawing tool.

    +

    The history of cedar

    +

    The domain "cedar.doctor" was originally owned by a guy named Seth, who used it to host his own social network. However, Seth stopped hosting the site and the domain expired. I decided to purchase this domain and use it to host this website.

    +

    What is Closedverse?

    +

    Closedverse was a social network project that was developed by PF2M and Arian Kordi. It was inspired by Miiverse, a social networking service that was offered by Nintendo for its gaming consoles. Closedverse was originally intended to be a safe and friendly community for users to connect and share, but it unfortunately had to shut down on April 4, 2019.

    +

    The legacy of Miiverse clones

    +

    Miiverse clones, such as Closedverse and Cedar, have a complicated history. Many of these projects have faced challenges and faced criticism for their moderation and management. Closedverse, for example, was known for its drama and conflict, which ultimately led to its shut down.

    +

    Despite these challenges, Cedar aims to provide a safe and friendly space for users to connect and share. We are committed to maintaining a positive and respectful community, and we have put in place measures to ensure that our moderation is effective and fair. If you have any concerns or questions, please don't hesitate to contact us.

    +

    What data do we collect?

    +

    For security reasons, we collect and store certain data about our users, such as their IP address, nickname, and comment history. This information is used to protect the site and its users from any potential harm.

    +

    In addition, any data that users choose to include in their profiles is stored in our database. Users can remove this data at any time, unless they are banned from the site.

    + {% if request.user.is_authenticated %} +
    + +
    + {% endif %} +

    What can I do on Cedar?

    +

    Cedar offers a variety of features that allow users to connect and share with others. These include the ability to change the color and background of the website, create and customize communities, and rate user content using "Yeahs" instead of likes.

    +

    Is this allowed?

    +

    Cedar is a fork of Closedverse, which was originally created by PF2M and Arian Kordi. It is not affiliated with Nintendo or Hatena in any way, and these companies have no involvement with our service.

    +

    Any funny details?

    +

    Cedar is built using the Django web application framework, which makes it easy to add and modify features. It is a personal project that is not intended to generate revenue or profit. Instead, it is meant to be a fun and safe space for users to connect and share.

    +
    +
    +
    +
    + +{% endblock %}-- diff --git a/closedverse_main/templates/closedverse_main/help/help_approval.html b/closedverse_main/templates/closedverse_main/help/help_approval.html new file mode 100644 index 0000000..a1f8980 --- /dev/null +++ b/closedverse_main/templates/closedverse_main/help/help_approval.html @@ -0,0 +1,14 @@ +{% extends "closedverse_main/layout.html" %} +{% block main-body %}{% load closedverse_user %} +{% user_sidebar request user user.profile 0 True %} +
    +
    +

    Our new approval system

    +
    +
    +

    Placeholder

    +
    +
    +
    +
    +{% endblock %} \ No newline at end of file diff --git a/closedverse_main/templates/closedverse_main/help/legal.html b/closedverse_main/templates/closedverse_main/help/legal.html new file mode 100644 index 0000000..6bc339a --- /dev/null +++ b/closedverse_main/templates/closedverse_main/help/legal.html @@ -0,0 +1,60 @@ + + + + Legal info + + + + + + + +
    +
    +

    Closedverse - legal info

    +

    Copyright information

    +
    +
    +This project is not, in any way, associated with Nintendo Co, Ltd. or Hatena Co, Ltd.
    +Nintendo and Hatena have no involvement with this service, neither company maintains, endorses, sponsors or contributes to this. This is solely maintained, paid for, and created by Arian Kordi et al.
    +Please do not C&D me, let me know beforehand and I will attempt to solve an issue if there is one.
    +
    +If anything here infringes on your rights, please contact me:
    +ariankordi@ariankordi.net
    +or
    +ariankordi@gmail.com
    +
    +The specified content that does not belong to Arian Kordi, the owner, is:
    +* The spinner "spinner-wandering-cubes" seen in Activity Feed loading, scrolling (Autopagerize), and admin management loading, which is owned and designed entirely by Hammer & Chisel (Discord)
    +* The majority of the JavaScript, CSS and HTML files and the style of Miiverse is owned entirely by Hatena Co, Ltd. and Nintendo Co, Ltd.
    +* The loading animation, originally taken from SplatNet and Splatoon by Nintendo Co, Ltd. and modified
    +
    +I will take this project and its GitHub repository down under any valid request.
    +Thank you!
    +
    +Revision 4, updated October 21 2017
    + +
    +

    User content policy

    +
    +
    +User content is not owned by me or the site. Any users' content (posts, empathies or Yeah!s, follows, friend requests, friendships, private messages, etc..) is their sole responsibility.
    +I am not and do not want to be deemed responsible if any user transmits content that can spawn a legal problem.
    +I am only a host for the content and so is the image hosting provider(s) if applicable.
    +
    +If you have a problem that requires attention by me, please contact me:
    +ariankordi@ariankordi.net
    +or
    +ariankordi@gmail.com
    +
    +If you feel you have the need to contact law enforcement for any case, please do so. Don't contact me if you have a major legal problem. I will not forward anything to your police department because I don't have the time and I don't know where you live.
    +
    +Every user must be 13 years of age or older in order to use the site. We do not follow (and personally heavily deplore) any child protection acts, such as COPPA. Any user under 12 years of age is not permitted to use this site.
    +
    +Thank you!
    +
    +Revision 3, updated October 6 2017
    + +
    + + diff --git a/closedverse_main/templates/closedverse_main/help/login-help.html b/closedverse_main/templates/closedverse_main/help/login-help.html new file mode 100644 index 0000000..c410d2c --- /dev/null +++ b/closedverse_main/templates/closedverse_main/help/login-help.html @@ -0,0 +1,29 @@ +{% extends "closedverse_main/layout.html" %} +{% block main-body %}{% load closedverse_user %} +{% user_sidebar request user user.profile 0 True %} +
    +
    +

    Login help

    +
    +
    +

    You have issues logging in into your account? Follow this to (maybe) solve this issue...

    +

    It says that my user doesn't exist, but it does.

    +

    Have you turned on email only login? It can only be on if you have an email address, so if you don't have one, it isn't on.
    If it is on, please try logging in with your email address. Thank you.

    + +

    I forgot my password and I don't have an email address.

    +

    In this case, the only solution is to contact an admin and they will most probably give you a password reset link.

    + +

    I'm getting "Your password must be reset"?

    +

    This means that your password must be reset. Reset it via email, or ask an admin to reset it. In most cases, an admin has emailed you a password reset link.

    + +

    I'm being hacked! HELP!!!

    +

    If others are in your account, no worry, when you change your password, everyone gets logged out.
    + Unless your email was changed or you don't have one, in that case, contact an admin and they will help you ASAP. +

    You should use a random password and keep it in your notes or something. In most cases, public user accounts are made due to one character passwords. Please do not use one character passwords. +
    If you don't think your password is secure, but your e-mail address is secure, you can choose to have your account only be logged into via your email address, so that nobody can go into your account with your public username and try it.

    + +
    +
    +
    +
    +{% endblock %} \ No newline at end of file diff --git a/closedverse_main/templates/closedverse_main/help/my-data.html b/closedverse_main/templates/closedverse_main/help/my-data.html new file mode 100644 index 0000000..aca927e --- /dev/null +++ b/closedverse_main/templates/closedverse_main/help/my-data.html @@ -0,0 +1,74 @@ +{% extends "closedverse_main/layout.html" %} +{% block main-body %}{% load closedverse_user %} +{% user_sidebar request user user.profile 0 True %} +
    +
    +

    My data

    +
    +

    Like any other site, we collect small bits of information from you for security reasons. +

    General account information:

    +

    IP address: {% if user.addr %}{{ user.addr }}{% else %}Data missing{% endif %} +

    Signup IP address: {% if user.signup_addr %}{{ user.signup_addr }}{% else %}Data missing{% endif %}

    +

    User agent: {% if user.user_agent %}{{ user.user_agent }}{% else %}Data missing{% endif %} +

    Rank: {% if user.staff %}You are a staff member.{% elif not user.level <= 0 %}You are a moderator. (Level {{ user.level }}){% else %}You are a regular user.{% endif %} +

    My content:

    +

    Your account has existed for {{ age }} days! During that time, we've collected:

    +
      +
    • My posts: {{ posts }} +
    • My comments: {{ comments }} +
    • My messages: {{ messages }} +
    • My yeahs: {{ yeahs }} +
    • My notifications: {{ notifications }} +
    +

    Restrictions:

    +
      +
    • Sending images and creating new accounts: {% if user.has_freedom %}Good standing{% else %}Restricted{% endif %} +
    • Post limit: {% if request.user.profile.limit_post == 0 %}Good standing{% else %}{{ user.profile.limit_post }}{% endif %} +
    • Editing your profile: {% if not user.profile.cannot_edit %}Good standing{% else %}Restricted{% endif %} +
    +

    Collected data:

    +
    +

    Account login history:

    +

    Each time you try and sign in to your account, we grab the IP and User agent from the device used. If you see any login attempts that you don't recognize as your own, you may want to change your password.

    + + + + + + + + {% for log_attempt in log_attempt %} + + + {{ log_attempt.success }} + + + {% endfor %} +
    TimeSuccessIPUser agent
    {{ log_attempt.created }}{% if log_attempt.success %}{{ log_attempt.addr }}{% else %}REDACTED{% endif %}{{ log_attempt.user_agent }} +
    + {% if history %} +

    Nickname and Comment history:

    + + + + + + + {% for history in history %} + + + + + + {% endfor %} +
    Time changedNew NicknameNew Comment
    {{ history.created }}{{ history.new_nickname }}{% if not history.new_comment %}N/A{% else %}{{ history.new_comment|truncatechars:300 }}{% endif %}
    + {% else %} +

    No name or comment changes to show.

    + {% endif %} +
    +

    I want this data removed.

    +

    Please contact a staff member, if you wish, your account will be deleted along with all your data attached to it.

    +
    +
    +
    +{% endblock %} diff --git a/closedverse_main/templates/closedverse_main/help/rules.html b/closedverse_main/templates/closedverse_main/help/rules.html new file mode 100644 index 0000000..f58807b --- /dev/null +++ b/closedverse_main/templates/closedverse_main/help/rules.html @@ -0,0 +1,41 @@ +{% extends "closedverse_main/layout.html" %} +{% block main-body %}{% load closedverse_user %} +{% user_sidebar request user user.profile 0 True %} +
    +
    +

    Cedar Rules

    +
    +

    To keep the site healthy and enjoyable for all users, we have a few rules in place. Please read them carefully:

    +

    User age requirement

    +

    In accordance with the Children's Online Privacy Protection Act (COPPA), users under the age of 13 are not allowed to join the site. If we discover that a user is under 13, their account will be banned.

    +

    No illegal content

    +

    Please do not post any content that violates the law. This includes illegal activities, stolen intellectual property, and any other unlawful material.

    +

    No NSFW or NSFL content

    +

    We do not allow Not Safe For Work (NSFW) content, such as pornography, or Not Safe For Life (NSFL) content, such as graphic violence or gore. Please do not post or share this type of material on the site.

    +

    Community standards

    +

    To create a positive and respectful community, we ask that users avoid the following behaviors:

    +
      +
    • Doxing (sharing personal information without consent)
    • +
    • Threatening or promoting harm to oneself or others
    • +
    • Using hate speech or discriminatory language
    • + +
    • Harassing or bullying other users
    • +
    • Posting extremely offensive or edgy content
    • +
    • Asking for moderator or staff privileges
    • +
    +

    Community creation

    +

    We want users to be able to create and participate in vibrant communities on the site. However, we ask that users do not:

    +
      +
    • Create communities that promote NSFW or NSFL content
    • +
    • Use icons, banners, descriptions, or titles that feature edgy, violent, or sexual content
    • +
    • Create duplicate communities that already exist on the site
    • +
    • Create communities using alternate accounts
    • +
    +

    Please note that each user is only allowed to create one community. If your community is removed, you will not be able to create another one.

    +

    Consequences for rule violations

    +

    If a user violates any of the rules on the site, they will receive a warning from the moderators or site administrators. In most cases, a single warning will suffice. However, if the user continues to break the rules or engages in severe misconduct, they may be banned from the site.

    +

    Please note that exceptions may apply for more severe cases, such as illegal activities or threats of harm. In these situations, the user may be banned without warning.

    +
    +
    +
    +{% endblock %} diff --git a/closedverse_main/templates/closedverse_main/help/stats.html b/closedverse_main/templates/closedverse_main/help/stats.html new file mode 100644 index 0000000..e808e6a --- /dev/null +++ b/closedverse_main/templates/closedverse_main/help/stats.html @@ -0,0 +1,27 @@ +{% extends "closedverse_main/layout.html" %} +{% block main-body %}{% load closedverse_user %} +{% user_sidebar request user user.profile 0 True %} +
    +
    +

    Cedar stats

    +
    +
    +

    These are the current stats of this Cedar instance:

    +
      +
    • Communities: {{ communities }}
    • +
    • Posts: {{ posts }}
    • +
    • Users: {{ users }}
    • +
    • Comments: {{ comments }}
    • +
    • Messages: {{ messages }}
    • +
    • Yeahs: {{ yeahs }}
    • +
    • Complaints: {{ complaints }}
    • +
    • Notifications: {{ notifications }}
    • +
    • Follows: {{ follows }}
    • +
    • Friendships: {{ friendships }}
    • +
    + +
    +
    +
    +
    +{% endblock %} \ No newline at end of file diff --git a/closedverse_main/templates/closedverse_main/help/whatads.html b/closedverse_main/templates/closedverse_main/help/whatads.html new file mode 100644 index 0000000..dca88be --- /dev/null +++ b/closedverse_main/templates/closedverse_main/help/whatads.html @@ -0,0 +1,19 @@ +{% extends "closedverse_main/layout.html" %} +{% block main-body %}{% load closedverse_user %} +{% user_sidebar request user user.profile 0 True %} +
    +
    +

    What are user-generated ads?

    +
    +
    +

    What is that???

    +

    Well, user-generated ads are a way for you to, without any money, promote your clone/website/service.

    +

    Where these ads shows up?

    +

    These ads shows up in activity, user pages, homepage, and more.

    +

    How can I have my user-generated ad?

    +

    Contact an admin.

    +
    +
    +
    +
    +{% endblock %} diff --git a/closedverse_main/templates/closedverse_main/help/why.html b/closedverse_main/templates/closedverse_main/help/why.html new file mode 100644 index 0000000..d0dc4cf --- /dev/null +++ b/closedverse_main/templates/closedverse_main/help/why.html @@ -0,0 +1,17 @@ +{% extends "closedverse_main/layout.html" %} +{% block main-body %}{% load closedverse_user %} +{% user_sidebar request user user.profile 0 True %} +
    +
    +

    Why?

    +
    +
    +

    Why should I join ?

    +
      +
    • I don't know...
    • +
    +
    +
    +
    +
    +{% endblock %} diff --git a/closedverse_main/templates/closedverse_main/layout.html b/closedverse_main/templates/closedverse_main/layout.html new file mode 100644 index 0000000..e67d700 --- /dev/null +++ b/closedverse_main/templates/closedverse_main/layout.html @@ -0,0 +1,165 @@ +{% load static %}{% load closedverse_tags %}{% block html %}{% if not request.META.HTTP_X_PJAX %} + + + + + {% endif %} + {% if title %}{{ title }} - Cedar{% else %}Cedar{% endif %} + {% if not request.META.HTTP_X_PJAX %} + + + + + + + + {% if ogdata %} + + + + + + + + {% endif %} + + + + + + {% if request.user.ColorTheme %}{% endif %} + + + + +
    +
    + + + {% if request.user.unique_id %} + + {% else %} + + {% endif %} + +
    +
    + {% endif %} +
    + {% block main-body %} + {% endblock %} +
    + {% if not request.META.HTTP_X_PJAX %} +
    + +
    + + + +{% endif %}{% endblock html %} diff --git a/closedverse_main/templates/closedverse_main/login_page.html b/closedverse_main/templates/closedverse_main/login_page.html new file mode 100644 index 0000000..3f0a00e --- /dev/null +++ b/closedverse_main/templates/closedverse_main/login_page.html @@ -0,0 +1,33 @@ +{% extends "closedverse_main/layout.html" %} +{% load static %}{% block main-body %} +
    +
    +
    + +

    Sign In

    +

    Please sign in to access Cedar.

    + + {% csrf_token %} + +

    + + + + {% if allow_signups %} +
    +

    Can't remember your password? Reset it here!

    +

    If you don't have an account, you're in luck! You can create an account there.

    +
    + {% endif %} + {% if not allow_signups %} +
    +

    Signing up is disabled for now, check by later.

    +
    + {% endif %} +
    +
    +
    +{% endblock %} diff --git a/closedverse_main/templates/closedverse_main/man/usertools.html b/closedverse_main/templates/closedverse_main/man/usertools.html new file mode 100644 index 0000000..4503645 --- /dev/null +++ b/closedverse_main/templates/closedverse_main/man/usertools.html @@ -0,0 +1,108 @@ +{% extends "closedverse_main/layout.html" %} +{% block main-body %}{% load closedverse_user %}{% load closedverse_tags %} +
    +

    Change settings for {{ user.username }}

    +
    +
  • + {% user_sidebar_info user %} +

    Set Username:

    +
    + +
    +

    Change the account username here.
    If you need to change this, make sure the user is aware of the change, otherwise they won't be able to log in.

    +
  • + +
  • +

    Profile comment:

    + +

    In case you need to change something in this person's profile comment, you can do so here.

    +
  • +
  • +

    Set Nickname:

    +
    + +
    +

    Change the account nickname here

    +
  • +
  • +

    Specify warning or ban reason:

    +
    + +
    +

    If you are going to warn or disable someone, PLEASE SPECIFY WHY HERE!
    Nothing feels worse than to get banned or warned without knowing why.

    + Show warning +
  • +
  • +

    Account restrictions:

    + Disable account: +

    Check this setting to disable the account and prevent new accounts from being made. This is basically the main way to ban people. Remember to specify a reason for doing this.

    +

     

    + Lock user settings: +

    If you need to lock someone's profile settings, you can do that here!

    + Post limit: +

    If you need to set a post limit for someone, you can do that here, Set this back to "0" to remove the restriction.

    + Restrict image posting: +

    If you need to prevent someone from posting images and URLs, you can do that here. This will also prevent this user from making new accounts on the same IP address.

    +
  • +
      +
    • +

      Purge content:

      + Purge posts: +

      Remove all posts from this user.

      + Purge comments: +

      Remove all comments from this user.

      +

       

      + Restore comments and posts: +

      Restore purged comments and posts from this user.

      +
    • +
    +
  • +
    +

    Metadata:

    +

    Each time you view someone's metadata, a log is created.

    + {% if request.user.level >= min_lvl_metadata_perms %} + View metadata + {% endif %} +
    + {% if seen_by %} +

    Account viewed by:

    +
    + + + + + + {% for seen_by in seen_by %} + + + + + {% endfor %} +
    TimeSeen by
    {{ seen_by.created }}{{ seen_by.from_user }}
    +
    + {% endif %} + {% if has_seen %} +

    This user has viewed:

    +
    + + + + + + {% for has_seen in has_seen %} + + + + + {% endfor %} +
    TimeSeen
    {{ has_seen.created }}{{ has_seen.target_user }}
    +
    + {% endif %} +
  • + {% csrf_token %} +
    + +

    More settings will be added soon!

    +
    +
    +{% endblock %} \ No newline at end of file diff --git a/closedverse_main/templates/closedverse_main/man/usertoolsmeta.html b/closedverse_main/templates/closedverse_main/man/usertoolsmeta.html new file mode 100644 index 0000000..7414552 --- /dev/null +++ b/closedverse_main/templates/closedverse_main/man/usertoolsmeta.html @@ -0,0 +1,80 @@ +{% extends "closedverse_main/layout.html" %} +{% block main-body %}{% load closedverse_user %}{% load closedverse_tags %} +
    +
    +

    View info for {{ user.username }}

    +
    +

    Account metadata: Mods under level {{ min_lvl_metadata_perms }} can't see this.

    +

    Each time you view someone's metadata, a log is created.

    +
    +

    Like any other site, we collect small bits of information from accounts for security reasons. +

    General account information:

    +

    IP address: {% if user.addr %}{{ user.addr }}{% else %}Data missing{% endif %} +

    Signup IP address: {% if user.signup_addr %}{{ user.signup_addr }}{% else %}Data missing{% endif %}

    +

    User agent: {% if user.user_agent %}{{ user.user_agent }}{% else %}Data missing{% endif %} +

    Rank: {% if user.staff %}Staff member.{% elif not user.level <= 0 %}Moderator. (Level {{ user.level }}){% else %}Regular user.{% endif %} +

    + {% if accountmatch %} +

    Account(s) found with the same IP address.

    +
    + + + + + + {% for accountmatch in accountmatch %} + + + + + {% endfor %} +
    Related accountCreated
    {{ accountmatch.username }}{{ accountmatch.created }}
    +
    + {% endif %} + {% if log_attempt %} +

    Account login history:

    +
    + + + + + + + + {% for log_attempt in log_attempt %} + + + {{ log_attempt.success }} + + + {% endfor %} +
    TimeSuccessIPUser agent
    {{ log_attempt.created }}{{ log_attempt.addr }}{{ log_attempt.user_agent }} +
    +
    + {% else %} +

    Error: No login history to report, it was likely deleted.

    + {% endif %} + + {% if seen_by %} +

    Account viewed by:

    +
    + + + + + + {% for seen_by in seen_by %} + + + + + {% endfor %} +
    TimeSeen by
    {{ seen_by.created }}{{ seen_by.from_user }}
    +
    + {% else %} +

    Error: No view history to report, it was likely deleted.

    + {% endif %} + +

    Do I need to state the obvious? Please don't share this, ever!

    +
    +{% endblock %} \ No newline at end of file diff --git a/closedverse_main/templates/closedverse_main/messages-view.html b/closedverse_main/templates/closedverse_main/messages-view.html new file mode 100644 index 0000000..50f5da7 --- /dev/null +++ b/closedverse_main/templates/closedverse_main/messages-view.html @@ -0,0 +1,15 @@ +{% extends "closedverse_main/layout.html" %} +{% load static %}{% load closedverse_tags %}{% load closedverse_user %} +{% block main-body %} +{% user_sidebar request user user.profile 0 True %} +
    +

    {{ title }} + +

    + + {% message_form request other %} + + {% message_list messages next %} + +
    +{% endblock %} \ No newline at end of file diff --git a/closedverse_main/templates/closedverse_main/messages.html b/closedverse_main/templates/closedverse_main/messages.html new file mode 100644 index 0000000..8014c64 --- /dev/null +++ b/closedverse_main/templates/closedverse_main/messages.html @@ -0,0 +1,50 @@ +{% extends "closedverse_main/layout.html" %} +{% load static %}{% load closedverse_tags %}{% load closedverse_user %} +{% block main-body %} +{% user_sidebar request user user.profile 0 True %} +
    +
    + +

    Messages + + Only show online friends + +

    + +
    + {% if friends %} +
      + {% for friend in friends %} +
    • + {% user_icon_container friend 0 True %} + +
      +

      + {{ friend.nickname }} + {{ friend.username }} +

      + {% if friend.get_latest_msg %} + {% time friend.get_latest_msg.created %} +

      {{ friend.get_latest_msg.trun }}

      + {% else %} +

      You haven't exchanged messages with this user yet.

      + {% endif %} + +
      +
    • + {% endfor %} +
    + {% else %} + {% nocontent "You don't have any friends yet." %} + {% endif %} +
    +
    +
    +{% endblock %} \ No newline at end of file diff --git a/closedverse_main/templates/closedverse_main/notifications.html b/closedverse_main/templates/closedverse_main/notifications.html new file mode 100644 index 0000000..5556416 --- /dev/null +++ b/closedverse_main/templates/closedverse_main/notifications.html @@ -0,0 +1,37 @@ +{% extends "closedverse_main/layout.html" %} +{% block main-body %}{% load closedverse_tags %}{% load closedverse_user %} +{% user_sidebar request user user.profile 0 True %} +
    +
    + +

    {{ title }}

    + + +
    + {% if notifications %} + {% for notification in notifications %} + {% user_notification notification request %} + {% endfor %} + {% else %} + {% nocontent "No notifications yet." %} + {% endif %} +
    + +
    +
    +{% endblock %} diff --git a/closedverse_main/templates/closedverse_main/post-view.html b/closedverse_main/templates/closedverse_main/post-view.html new file mode 100644 index 0000000..3d373b6 --- /dev/null +++ b/closedverse_main/templates/closedverse_main/post-view.html @@ -0,0 +1,142 @@ +{% extends "closedverse_main/layout.html" %} +{% load markdown_deux_tags %} +{% load closedverse_tags %}{% load closedverse_community %}{% block main-body %} +
    +
    + +
    +

    + {{ post.community.name }} +

    +
    + {% if post.is_mine or post.can_rm %} + {% if user.is_active %} +
    + + {% if post.is_mine and not post.has_edit %} + + {% endif %} + {% if post.is_mine and post.screenshot %} + + {% endif %} +
    + {% endif %} +{% endif %} + +
    + {% user_icon_container post.creator post.feeling %} +
    + {% if post.creator.get_class.1 %}

    {% user_level post.creator %}

    {% endif %} + {% p_username post.creator %} + {% if not post.creator.is_active %} +

    Banned

    + {% endif %} +

    + {% time post.created %} + {% if post.drawing %} + (drawing) + {% endif %} + ·Spoilers + {% if post.has_edit %} + · Edited ({% time post.edited %}) + {% endif %} +

    +
    +
    +
    + {% if post.is_mine %} +
    +
    + {% feeling_selector post.feeling %} +
    + +
    +
    + +
    +
    + + +
    +
    +
    + {% endif %} +
    + {% if post.drawing %} +

    + {% else %} +

    {{ post.body }}

    + {% endif %} + + {% if post.poll %} +
    + {{ post.poll.num_votes }} vote{% if not post.poll.num_votes == 1 %}s{% endif %} +
    {% else %}">{% endif %} + {% for choice in post.poll.choices %} + + {{ choice }}% + + {% endfor %} +
    +
    + {% elif post.screenshot %}
    {% endif %} + + {% if post.yt_vid %} +
    + {% elif post.url %} + + {% endif %} + + +
    + +
    + + +{% empathy_content yeahs request post.has_yeah %} + + + + + + +
    +

    Comments

    +
    +

    This post has no comments.

    +
    +{% if all_comment_count > 20 %} + +{% endif %} +{% post_comments comments %} + +
    +

    Add a Comment

    +{% if not request.user.is_authenticated %} +
    +

    You must sign in to post a comment.

    Sign in using a Cedar account to make posts and comments, as well as give Yeahs and follow users.

    + Create an account + FAQ/Frequently Asked Questions + Contact Us +
    +{% elif not post.can_comment %} +
    +

    You cannot comment on this post.

    +
    +{% else %} +{% comment_form post request.user %} +{% endif %} + +
    + + +
    + +{% endblock %} diff --git a/closedverse_main/templates/closedverse_main/profile-settings.html b/closedverse_main/templates/closedverse_main/profile-settings.html new file mode 100644 index 0000000..98b0f1d --- /dev/null +++ b/closedverse_main/templates/closedverse_main/profile-settings.html @@ -0,0 +1,239 @@ +{% extends "closedverse_main/layout.html" %} +{% block main-body %}{% load closedverse_user %}{% load closedverse_tags %} +{% user_sidebar request user profile 0 %} + +
    +

    {{ title }}

    +
    +
      + + {% if profile.cannot_edit %} +

      You cannot change user settings for this account

      + {% endif %} + + {% if not profile.cannot_edit %} +
    • +

      Nickname

      +
      + +
      +

      Nickname, up to 32 characters.

      +
    • +
    • +

      Profile comment

      + +

      Anything you write here will appear on your profile. Remember to keep it brief. Please don't write anything that'll violate Cedar's rules.

      +
    • + +
    • +

      Region

      +
      + +
      +

      Enter your region here. It'll appear on your profile. +
      +

      +
    • +
    • +

      E-mail address

      +
      + +
      +

      Please note that your email can be a fake one, however if you need to reset your password, this must be accessible. You can't share emails.

      + {% if user.email %} +

      +
      +
      + +
      +
      + {% endif %} +
    • +
    • +

      Web URL

      +
      + +
      +

      If you want to advertise a URL of some sorts on your profile, this is where it goes.

      +
    • +
    • +

      Discord Tag

      +
      + +
      +

      Actually, you don't have to put a Discord Tag here, you can put anything here, such as your PlayStation Network account. Discord sure is popular though.

      +
    • +
    • +

      What are you?

      +
      + +
      +

      So what exactly are you? Are you a Human, attack helicopter, something in between?

      +
    • +
    • +

      Nickname color

      +
      + + +
      +

      This is the color your nickname will appear as. Leave it blank for the default. It will appear like so.

      + {% user_sidebar_info user %} +
    • + {% if profile.origin_id %} +
    • +

      +
      +
      + +
      +
      +
    • + {% endif %} +
    • +

      +
      +
      + +
      +
      +
    • +
    • +

      +
      +
      + +
      +
      +
    • +
    • +

      +
      +
      + +
      +
      +
    • +
    • +

      +
      +
      + +
      +
      +
    • +
    • +

      +
      +
      + +
      +
      +
    • +
    • +

      Website theme:

      +
      + +
      +

      To set an image as the background for this site, paste its URL into the box above. Note: this change will only be visible to you.

      +
      + + +
      +

      Remember to save and refresh the page.

      + {% if user.theme %}Reset to default{% endif %} + {% if settings.site_wide_theme_hex %}

      Default theme: "{{ settings.site_wide_theme_hex }}"

      {% endif %} +
    • +
    • +

      Change your password:

      +
      +

      You can now change your password.

      +
      +
    • +
    • +

      Nintendo Network ID

      +
      + +
      + + +

      +

      Enter your Nintendo Network ID here. It'll appear on your profile if you set it to be visible.

      +
    • + {% if not user.has_plain_avatar %} +
    • +
      + + +
      +

      Do you want the avatar shown beside your content to use the Mii from your Nintendo Network ID or a Gravatar?

      + + +

      Selecting the Gravatar option will cause your avatar to be pulled from the Gravatar account linked to your email address, and feelings won't be shown in your posts unless you choose to use a Mii instead.

      +
    • + {% else %} +

      It appears that you somehow have a plain URL avatar, change it here (if you change it to nothing then it will reset to being selectable !!)

      +
      + +
      + {% endif %} + + {% csrf_token %} +
      + +
      + {% endif %} + +
    +{% endblock %} diff --git a/closedverse_main/templates/closedverse_main/sign b/closedverse_main/templates/closedverse_main/sign new file mode 100644 index 0000000..226d35b --- /dev/null +++ b/closedverse_main/templates/closedverse_main/sign @@ -0,0 +1,38 @@ +{% extends "closedverse_main/layout.html" %} +{% load static %}{% block main-body %} +
    +
    +
    + +

    Sign Up

    +

    Create a Closedverse account to make posts and comments to various communities, give Yeahs to other users' content, and interact with other members of the Closedverse community.


    +

    If you want to be, at least, not sus to us, you can join our Discord Server. https://discord.gg/PXKhXXk


    +

    Please follow our rules. If you don't, mercy will not be laid on yourself.

    You must be 13 years of age or older to join, no exceptions.
    If you are suspected to be younger than 12 years old, the moderators will decide what to do with you.

    +

    +

    +

    +

    +

    +

    + {% csrf_token %} + {% if recaptcha %} +
    + + {% endif %} + +

    + +
    +

    All fields with a red asterisk (*) are required.

    +

    NNIDs are only required for getting a Mii and a nickname from.

    +

    If you do not provide a nickname but provide an NNID, the nickname will be taken from that ID. The ID's nickname, however, is prioritized over the nickname field.

    +

    You will be able to change your avatar after you sign up.

    +

    %: If you don't fill in your email address, you can't reset your password until you have one.

    +

    $: Your username is used to log in. It'll appear similarly to your NNID on Miiverse, below your nickname.

    +
    +
    +
    +
    +{% endblock %} \ No newline at end of file diff --git a/closedverse_main/templates/closedverse_main/signup_page.html b/closedverse_main/templates/closedverse_main/signup_page.html new file mode 100644 index 0000000..94c5032 --- /dev/null +++ b/closedverse_main/templates/closedverse_main/signup_page.html @@ -0,0 +1,37 @@ +{% extends "closedverse_main/layout.html" %} +{% load static %}{% block main-body %} +
    +
    +
    + +

    Sign Up

    +

    Create a Cedar account on this instance to access this instance.


    +

    Please follow our rules. If you don't, be careful with your behavior.

    You must be {{ age }} years of age or older to join, no exceptions.
    If you are suspected to be younger than {{ age }} years old, we will ban you until you're {{ age }}.

    +

    +

    +

    +

    +

    +

    + {% csrf_token %} + {% if recaptcha %} +
    + + {% endif %} + +

    + +
    +

    All fields with a red asterisk (*) are required.

    +

    NNIDs are only required for getting a Mii and a nickname from.

    +

    If you do not provide a nickname but provide an NNID, the nickname will be taken from that ID. The ID's nickname, however, is prioritized over the nickname field.

    +

    You will be able to change your avatar after you sign up.

    +

    %: Emails are not required to sign up, however it is used for Gravatar and account recovery.

    +

    $: Your username is used to log in. It'll appear similarly to your NNID on Miiverse, below your nickname.

    +
    +
    +
    +
    +{% endblock %} \ No newline at end of file diff --git a/closedverse_main/templates/closedverse_main/signups-blocked.html b/closedverse_main/templates/closedverse_main/signups-blocked.html new file mode 100644 index 0000000..f871acb --- /dev/null +++ b/closedverse_main/templates/closedverse_main/signups-blocked.html @@ -0,0 +1,4 @@ +{% extends "closedverse_main/layout.html" %} +{% load closedverse_tags %}{% block main-body %} +{% nocontent "Sign Ups are disabled for now. Please contact the administrator using the contact page." %} +{% endblock %} \ No newline at end of file diff --git a/closedverse_main/templates/closedverse_main/user-search.html b/closedverse_main/templates/closedverse_main/user-search.html new file mode 100644 index 0000000..b7c056a --- /dev/null +++ b/closedverse_main/templates/closedverse_main/user-search.html @@ -0,0 +1,25 @@ +{% extends "closedverse_main/layout.html" %} +{% load static %}{% load closedverse_user %} +{% block main-body %} +{% user_sidebar request user user.profile 0 True %} +
    +

    Search Users

    + + {% if users %} +
    +

    {{ users|length }} result{% if not users|length == 1 %}s{% endif %} found for "{{ query }}"

    + {% profile_user_list users next request %} +
    + {% else %} +
    +
    +

    "{{ query }}" could not be found.
    +Try searching for something different.

    +
    +
    + {% endif %} +
    +{% endblock %} \ No newline at end of file diff --git a/closedverse_main/templates/closedverse_main/user_comments.html b/closedverse_main/templates/closedverse_main/user_comments.html new file mode 100644 index 0000000..85a8176 --- /dev/null +++ b/closedverse_main/templates/closedverse_main/user_comments.html @@ -0,0 +1,10 @@ +{% extends "closedverse_main/layout.html" %} +{% block main-body %}{% load closedverse_user %} +{% user_sidebar request user profile 6 %} +
    +

    {{ title }}

    + +{% u_post_list posts next 3 %} + +
    +{% endblock %} \ No newline at end of file diff --git a/closedverse_main/templates/closedverse_main/user_followers.html b/closedverse_main/templates/closedverse_main/user_followers.html new file mode 100644 index 0000000..f27f043 --- /dev/null +++ b/closedverse_main/templates/closedverse_main/user_followers.html @@ -0,0 +1,18 @@ +{% extends "closedverse_main/layout.html" %} +{% block main-body %}{% load closedverse_tags %}{% load closedverse_user %} +{% user_sidebar request user profile 5 %} +
    +

    {{ title }}

    + +{% if not followers %} + {% if user.is_me %} + {% nocontent "You don't have any followers." %} + {% else %} + {% nocontent "This user doesn't have any followers." %} + {% endif %} +{% else %} + {% profile_user_list followers next request %} +{% endif %} + +
    +{% endblock %} diff --git a/closedverse_main/templates/closedverse_main/user_following.html b/closedverse_main/templates/closedverse_main/user_following.html new file mode 100644 index 0000000..bac4615 --- /dev/null +++ b/closedverse_main/templates/closedverse_main/user_following.html @@ -0,0 +1,14 @@ +{% extends "closedverse_main/layout.html" %} +{% block main-body %}{% load closedverse_tags %}{% load closedverse_user %} +{% user_sidebar request user profile 4 %} +
    +

    {{ title }}

    + +{% if not following %} +{% if user.is_me %}{% nocontent "You're not following anyone yet." %}{% else %}{% nocontent "This user isn't following anyone yet." %}{% endif %} +{% else %} +{% profile_user_list following next request %} +{% endif %} + +
    +{% endblock %} diff --git a/closedverse_main/templates/closedverse_main/user_friends.html b/closedverse_main/templates/closedverse_main/user_friends.html new file mode 100644 index 0000000..10a6290 --- /dev/null +++ b/closedverse_main/templates/closedverse_main/user_friends.html @@ -0,0 +1,18 @@ +{% extends "closedverse_main/layout.html" %} +{% block main-body %}{% load closedverse_tags %}{% load closedverse_user %} +{% user_sidebar request user profile 3 %} +
    +

    {{ title }}

    + +{% if not friends %} + {% if user.is_me %} + {% nocontent "You don't have any friends." %} + {% else %} + {% nocontent "This user doesn't have any friends added." %} + {% endif %} +{% else %} + {% profile_user_list friends next request %} +{% endif %} + +
    +{% endblock %} diff --git a/closedverse_main/templates/closedverse_main/user_posts.html b/closedverse_main/templates/closedverse_main/user_posts.html new file mode 100644 index 0000000..9e7b1c1 --- /dev/null +++ b/closedverse_main/templates/closedverse_main/user_posts.html @@ -0,0 +1,10 @@ +{% extends "closedverse_main/layout.html" %} +{% block main-body %}{% load closedverse_user %} +{% user_sidebar request user profile 1 %} +
    +

    {{ title }}

    + +{% u_post_list posts next 0 %} + +
    +{% endblock %} \ No newline at end of file diff --git a/closedverse_main/templates/closedverse_main/user_view.html b/closedverse_main/templates/closedverse_main/user_view.html new file mode 100644 index 0000000..a44624f --- /dev/null +++ b/closedverse_main/templates/closedverse_main/user_view.html @@ -0,0 +1,40 @@ +{% extends "closedverse_main/layout.html" %} +{% block main-body %}{% load closedverse_user %} +{% user_sidebar request user profile 0 False fr %} +
    +
    +

    Recent posts

    + {% if posts.count < 1 %} +
    +

    The user hasn't made any posts yet.

    +
    + {% else %} +
    +
    + {% for post in posts %} + {% profile_post post %} + {% endfor %} +
    +
    + {% endif %} +
    View posts + {% if profile.yeahs_visible and request.user.is_authenticated %} +
    +

    Recently yeahed posts

    + {% if yeahed.count < 1 %} +
    +

    The user hasn't given a yeah to any posts yet.

    +
    + {% else %} +
    +
    + {% for post in yeahed %} + {% profile_post post.post %} + {% endfor %} +
    +
    + {% endif %} +
    View all yeahs + {% endif %} +
    +{% endblock %} \ No newline at end of file diff --git a/closedverse_main/templates/closedverse_main/user_yeahs.html b/closedverse_main/templates/closedverse_main/user_yeahs.html new file mode 100644 index 0000000..0f3adaa --- /dev/null +++ b/closedverse_main/templates/closedverse_main/user_yeahs.html @@ -0,0 +1,10 @@ +{% extends "closedverse_main/layout.html" %} +{% block main-body %}{% load closedverse_user %} +{% user_sidebar request user profile 2 %} +
    +

    {{ title }}

    + +{% u_post_list posts next 1 %} + +
    +{% endblock %} \ No newline at end of file diff --git a/closedverse_main/templates/com_locked.html b/closedverse_main/templates/com_locked.html new file mode 100644 index 0000000..62925a1 --- /dev/null +++ b/closedverse_main/templates/com_locked.html @@ -0,0 +1,6 @@ +{% extends "closedverse_main/layout.html" %} +{% load closedverse_tags %}{% block main-body %} +
    +

    Please sign in to view this community.

    +
    +{% endblock %} \ No newline at end of file diff --git a/closedverse_main/templatetags/__init__.py b/closedverse_main/templatetags/__init__.py new file mode 100644 index 0000000..0519ecb --- /dev/null +++ b/closedverse_main/templatetags/__init__.py @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/closedverse_main/templatetags/closedverse_community.py b/closedverse_main/templatetags/closedverse_community.py new file mode 100644 index 0000000..a89ebd4 --- /dev/null +++ b/closedverse_main/templatetags/closedverse_community.py @@ -0,0 +1,70 @@ +from django import template +register = template.Library() + +@register.inclusion_tag('closedverse_main/elements/community_sidebar.html') +def community_sidebar(community, request): + return { + 'community': community, + 'request': request, + } +@register.inclusion_tag('closedverse_main/elements/community_post.html') +def community_post(post, type=0): + return { + 'post': post, + 'type': type, + } + +@register.inclusion_tag('closedverse_main/elements/post-list.html') +def post_list(posts, next_offset=None, type=0, nf_text=''): + text = { + 0: "This community doesn't have any posts yet.", + }.get(type, nf_text) + return { + 'posts': posts, + 'nf': text, + 'next': next_offset, + } +@register.inclusion_tag('closedverse_main/elements/post-form.html') +def post_form(user, community): + return { + 'user': user, + 'community': community, + } +@register.inclusion_tag('closedverse_main/elements/post-comment.html') +def post_comment(comment): + return { + 'comment': comment, + } +@register.inclusion_tag('closedverse_main/elements/post_comments.html') +def post_comments(comments): + return { + 'comments': comments, + } +@register.inclusion_tag('closedverse_main/elements/feeling-selector.html') +def feeling_selector(val=0): + return { + 'val': val, + } +@register.inclusion_tag('closedverse_main/elements/comment-form.html') +def comment_form(post, user=None): + return { + 'post': post, + 'user': user, + } +@register.inclusion_tag('closedverse_main/elements/memo-drawboard.html') +def memo_drawboard(): + return { + + } +@register.inclusion_tag('closedverse_main/elements/file-button.html') +def file_button(): + return { + + } +@register.inclusion_tag('closedverse_main/elements/community_page_elem.html') +def community_page_element(communities, text='General Communities', feature=False): + return { + 'communities': communities, + 'title': text, + 'feature': feature, + } \ No newline at end of file diff --git a/closedverse_main/templatetags/closedverse_tags.py b/closedverse_main/templatetags/closedverse_tags.py new file mode 100644 index 0000000..93f12cf --- /dev/null +++ b/closedverse_main/templatetags/closedverse_tags.py @@ -0,0 +1,88 @@ +from django import template +from closedverse_main.models import User +from closedverse_main.util import HumanTime +from closedverse import settings +import re + +register = template.Library() + +@register.simple_tag +def avatar(user, feeling=0): + return user.do_avatar(feeling) +@register.simple_tag +def miionly(mh): + if not mh: + return settings.STATIC_URL + 'img/anonymous-mii.png' + else: + return 'https://mii-secure.cdn.nintendo.net/{0}_normal_face.png'.format(mh) +@register.simple_tag +def time(stamp, full=False): + return HumanTime(stamp.timestamp(), full) or "Less than a minute ago" +@register.simple_tag +def user_class(user): + return user.get_class()[0] +@register.simple_tag +def user_level(user): + return user.get_class()[1] +@register.inclusion_tag('closedverse_main/elements/user-icon-container.html') +def user_icon_container(user, feeling=0, status=False): + return { + 'uclass': user_class(user), + 'user': user, + 'status': status, + 'url': avatar(user, feeling), + } +@register.inclusion_tag('closedverse_main/elements/no-content.html') +def nocontent(text='', style=''): + return { + 'text': text, + 'style': style, + } +@register.simple_tag +def empathy_txt(feeling=0, has=False): + if has: + return 'Unyeah' + return { + 0: 'Yeah!', + 1: 'Yeah!', + 2: 'Yeah♥', + 3: 'Yeah!?', + 4: 'yeah...', + 5: 'yeah...', + 38: 'something something balls', + 39: 'lol i lied', + 69: 'Adam is gay.', + 70: 'I am a faggot!', + 71: 'Juice', + 72: 'Commit Suicide', + 73: 'Fresh!', + }.get(feeling, 'Yeah!') + # olv.portal.miitoo is going to be the only easter egg in this thing ever +@register.inclusion_tag('closedverse_main/elements/p_username.html') +def p_username(user): + return { + 'user': user, + } +@register.inclusion_tag('closedverse_main/elements/empathy-content.html') +def empathy_content(yeahs, request, has_yeah=False): + for yeah in yeahs: + if yeah.post: + yeah.feeling = yeah.post.feeling + else: + yeah.feeling = yeah.comment.feeling + return { + 'yeahs': yeahs, + 'myself': request.user, + 'has_yeah': has_yeah, + } +@register.inclusion_tag('closedverse_main/elements/names.html') +def print_names(names): + return { + 'nameallmn': len(names) - 4, + 'names': names, + } +@register.inclusion_tag('closedverse_main/elements/discordapp-spinner.html') +def discordapp_spinner(): + return { + + } diff --git a/closedverse_main/templatetags/closedverse_user.py b/closedverse_main/templatetags/closedverse_user.py new file mode 100644 index 0000000..7858624 --- /dev/null +++ b/closedverse_main/templatetags/closedverse_user.py @@ -0,0 +1,102 @@ +from django import template +from closedverse_main.models import Ads +register = template.Library() + +@register.inclusion_tag('closedverse_main/elements/user-sidebar.html') +# 0 - main, 1 - posts, 2 - yeahs, 3 - friends, 4 - following, 5 - followers +def user_sidebar(request, user, profile, selection=0, general=False, fr=None): + if user.is_authenticated: + user.is_following = user.is_following(request.user) + user.is_me = user.is_me(request) + availableads = Ads.ads_available() + if (availableads): + ad = Ads.get_one() + else: + ad = "no ads" + return { + 'request': request, + 'availableads': availableads, + 'ad': ad, + 'user': user, + 'profile': profile, + 'selection': selection, + 'general': general, + 'fr': fr, + } +@register.inclusion_tag('closedverse_main/elements/user-sidebar-info.html') +def user_sidebar_info(user, profile=None): + return { + 'user': user, + 'profile': profile, + } +@register.inclusion_tag('closedverse_main/elements/fr-accept.html') +def fr_accept(fr): + return { + 'fr': fr, + } +@register.inclusion_tag('closedverse_main/elements/community_post.html') +def user_post(post, type=0): + return { + 'post': post, + 'with_community_container': True, + 'type': type, + } + +@register.inclusion_tag('closedverse_main/elements/u-post-list.html') +def u_post_list(posts, next_offset=None, type=2, nf_text=''): + text = { + 0: "This user hasn't made any posts yet.", + 1: "This user hasn't given a Yeah to any posts yet.", + 2: "No posts yet.", + 3: "This user hasn't made any comments yet.", + }.get(type, nf_text) + return { + 'posts': posts, + 'nf': text, + 'next': next_offset, + 'type': type, + } +@register.inclusion_tag('closedverse_main/elements/profile-post.html') +def profile_post(post): + return { + 'post': post, + } +@register.inclusion_tag('closedverse_main/elements/profile-user-list.html') +def profile_user_list(users, next_offset=None, request=None): + if request: + for user in users: + user.is_following = user.is_following(request.user) + return { + 'users': users, + 'next': next_offset, + 'request': request, + } +@register.inclusion_tag('closedverse_main/elements/profile-user.html') +def profile_user(user, request): + return { + 'user': user, + 'request': request, + } + +@register.inclusion_tag('closedverse_main/elements/user-notification.html') +def user_notification(notification, request): + return { + 'notification': notification, + } +@register.inclusion_tag('closedverse_main/elements/message.html') +def message(message): + return { + 'message': message, + } +@register.inclusion_tag('closedverse_main/elements/message-form.html') +def message_form(request, friend): + return { + 'user': request.user, + 'friend': friend, + } +@register.inclusion_tag('closedverse_main/elements/message-list.html') +def message_list(messages, next=0): + return { + 'messages': messages, + 'next': next, + } \ No newline at end of file diff --git a/closedverse_main/tests.py b/closedverse_main/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/closedverse_main/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/closedverse_main/urls.py b/closedverse_main/urls.py new file mode 100644 index 0000000..5214111 --- /dev/null +++ b/closedverse_main/urls.py @@ -0,0 +1,125 @@ +from django.conf.urls import url, re_path +from django.conf.urls.static import static +from django.views.static import serve +from django.shortcuts import redirect + +from . import views +from closedverse.settings import MEDIA_URL, MEDIA_ROOT + +username = r'(?P[A-Za-z0-9-\'-._ ]+)' +community = r'(?P[0-9]+)' +post = r'(?P[0-9]+)' +comment = r'(?P[0-9]+)' +uuidr = r'[0-9a-f\-]' + +app_name = 'main' + +urlpatterns = [ + # Root + url(r'^^$|^communities$|^index.*$$', views.community_list, name='community-list'), + # Accounts + url(r'login/$', views.login_page, name='login'), + url(r'signup/$', views.signup_page, name='signup'), + url(r'reset/$', views.forgot_passwd, name='forgot-passwd'), + url(r'logout/$', views.logout_page, name='logout'), + # User pages + url(r'users/'+ username +'/follow$', views.user_follow, name='user-follow'), + url(r'users/'+ username +'/unfollow$', views.user_unfollow, name='user-unfollow'), + url(r'users/'+ username +'$', views.user_view, name='user-view'), + url(r'users/'+ username +'/posts$', views.user_posts, name='user-posts'), + url(r'users/'+ username +'/yeahs$', views.user_yeahs, name='user-yeahs'), + url(r'users/'+ username +'/comments$', views.user_comments, name='user-comments'), + url(r'users/'+ username +'/following$', views.user_following, name='user-following'), + url(r'users/'+ username +'/followers$', views.user_followers, name='user-followers'), + url(r'users/'+ username +'/friends$', views.user_friends, name='user-friends'), + # User page friends + url(r'users/'+ username +'/friend_new$', views.user_friendrequest_create, name='user-fr-create'), + url(r'users/'+ username +'/friend_accept$', views.user_friendrequest_accept, name='user-fr-accept'), + url(r'users/'+ username +'/friend_reject$', views.user_friendrequest_reject, name='user-fr-reject'), + url(r'users/'+ username +'/friend_cancel$', views.user_friendrequest_cancel, name='user-fr-cancel'), + url(r'users/'+ username +'/friend_delete$', views.user_friendrequest_delete, name='user-fr-delete'), + url(r'users/'+ username +'/tools/set$', views.user_tools_set, name='user-tools-set'), + url(r'users/'+ username +'/tools$', views.user_tools, name='user-tools'), + url(r'users/'+ username +'/tools/meta$', views.user_tools_meta, name='user-tools-meta'), + + url(r'users/'+ username +'/block$', views.user_addblock, name='user-addblock'), + # Communities + url(r'communities.search$', views.community_search, name='community-search'), + url(r'communities/'+ community +'$', views.community_view, name='community-view'), + url(r'communities/favorites$', views.community_favorites, name='community-favorites'), + url(r'communities/all$', views.community_all, name='community-viewall'), + url(r'communities/(?P[a-z]+)$', views.special_community_tag, name='special-community-tag'), + url(r'communities/'+ community +'/favorite$', views.community_favorite_create, name='community-favorite-add'), + url(r'communities/'+ community +'/favorite_rm$', views.community_favorite_rm, name='community-favorite-rm'), + url(r'communities/'+ community +'/posts$', views.post_create, name='post-create'), + url(r'communities/'+ community +'/tools$', views.community_tools, name='community-tools'), + url(r'communities/'+ community +'/tools/set$', views.community_tools_set, name='community-tools-set'), + url(r'c/create$', views.community_create, name='community-create'), + url(r'c/create/do$', views.community_create_action, name='community-create-action'), + # Posts and comments + # Some of these NAMES (not patterns) are hardcoded into models.py + url(r'posts/'+ post +'$', views.post_view, name='post-view'), + url(r'posts/'+ post +'/yeah$', views.post_add_yeah, name='post-add-yeah'), + url(r'posts/'+ post +'/yeahu$', views.post_delete_yeah, name='post-delete-yeah'), + url(r'posts/'+ post +'/comments$', views.post_comments, name='post-comments'), + url(r'posts/'+ post +'/comments$', views.post_comments, name='post-comments'), + url(r'posts/'+ post +'/change$', views.post_change, name='post-change'), + url(r'posts/'+ post +'/profile$', views.post_setprofile, name='post-set-profile'), + url(r'posts/'+ post +'/profile_rm', views.post_unsetprofile, name='post-unset-profile'), + url(r'posts/'+ post +'\.rm$', views.post_rm, name='post-rm'), + url(r'comments/'+ comment +'$', views.comment_view, name='comment-view'), + url(r'comments/'+ comment +'/yeah$', views.comment_add_yeah, name='comment-add-yeah'), + url(r'comments/'+ comment +'/yeahu$', views.comment_delete_yeah, name='comment-delete-yeah'), + url(r'comments/'+ comment +'/change$', views.comment_change, name='comment-change'), + url(r'comments/'+ comment +'/rm$', views.comment_rm, name='comment-rm'), + # Post-meta: polls + url(r'poll/(?P'+ uuidr +'+)/vote$', views.poll_vote, name='poll-vote'), + url(r'poll/(?P'+ uuidr +'+)/unvote$', views.poll_unvote, name='poll-unvote'), + + # Notifications + url(r'alive$', views.check_notifications, name='check-notifications'), + url(r'notifications/?$', views.notifications, name='notifications'), + url(r'notifications/friend_requests/?$', views.friend_requests, name='friend-requests'), + url(r'notifications/set_read$', views.notification_setread, name='set-read'), + url(r'notifications/(?P'+ uuidr +'+)\.rm$', views.notification_delete, name='notification-delete'), + + # User meta + messages + url(r'activity/?$', views.activity_feed, name='activity'), + url(r'users.search$', views.user_search, name='user-search'), + url(r'pref$', views.prefs, name='prefs'), + url(r'settings/profile$', views.profile_settings, name='profile-settings'), + url(r'messages/?$', views.messages, name='messages'), + url(r'messages/(?P'+ uuidr +'+)/rm$', views.message_rm, name='message-delete'), + url(r'messages/'+ username +'$', views.messages_view, name='messages-view'), + url(r'messages/'+ username +'/read$', views.messages_read, name='messages-read'), + + # Help/configuration + url(r'lights$', views.set_lighting, name='set-lighting'), + #url(r'togglesignups$', views.set_signups, name='set-signups'), + #url(r'togglevpn$', views.set_VPN, name='set-VPN'), + url(r'complaints$', views.help_complaint, name='complaints'), + url(r'mydata$', views.my_data, name='my-data'), + url(r'changepassword$', views.change_password, name='change-password'), + url(r'changepassword/set$', views.change_password_set, name='change-password-set'), + url(r'server$', views.server_stat, name='server-stat'), + url(r'help/rules/?$', views.help_rules, name='help-rules'), + url(r'help/faq/?$', views.help_faq, name='help-faq'), + url(r'help/legal/?$', views.help_legal, name='help-legal'), + url(r'help/contact/?$', views.help_contact, name='help-contact'), + url(r'help/login/?$', views.help_login, name='help-login'), + url(r'help/whatads/?$', views.whatads, name='what-ads'), + url(r'help/actclones/?$', views.active_clones, name='active-clones'), + url(r'help/approval/?$', views.help_approval, name='help-approval'), + url(r'why/?$', views.help_why, name='help-why'), + + + # "API" + url(r'posts.json$', views.post_list, name='post-list'), + + # Util, right now we are away from the primary appo + url(r'origin$', views.origin_id, name='origin-id-get'), + # :^) + #url(r'openverse.png', views.openverse_logo, name='openverse-logo'), + +] +urlpatterns += [re_path(r'^i/(?P.*)$', serve, {'document_root': MEDIA_ROOT, }), ] diff --git a/closedverse_main/util.py b/closedverse_main/util.py new file mode 100644 index 0000000..6dad24f --- /dev/null +++ b/closedverse_main/util.py @@ -0,0 +1,187 @@ +from lxml import html +# Todo: move all requests to using requests instead of urllib3 +import urllib.request, urllib.error +import requests +from lxml import etree +from random import choice +import json +import time +import os.path +from PIL import Image, ExifTags, ImageFile +from datetime import datetime +from binascii import crc32 +from math import floor +from hashlib import md5, sha1 +import io +from uuid import uuid4 +import imghdr +import base64 +from closedverse import settings +import re +from os import remove, rename + +def HumanTime(date, full=False): + now = time.time() + time_difference = now - date + time_units = {86400: 'day', 3600: 'hour', 60: 'minute'} + if time_difference >= 259200 or full: + return datetime.fromtimestamp(date).strftime('%m/%d/%Y %I:%M %p') + elif time_difference <= 59: + return 'Less than a minute ago' + else: + for unit, unit_name in time_units.items(): + if time_difference < unit: + continue + else: + number_of_units = floor(time_difference / unit) + if number_of_units > 1: + unit_name += 's' + return f'{number_of_units} {unit_name} ago' + +def get_mii(id): + # Using AccountWS + dmca = { + 'X-Nintendo-Client-ID': 'a2efa818a34fa16b8afbc8a74eba3eda', + 'X-Nintendo-Client-Secret': 'c91cdb5658bd4954ade78533a339cf9a', + } + # TODO: Make this, the gravatar request, and reCAPTCHA request escape (or plainly use) URL params + nnid = requests.get('https://accountws.nintendo.net/v1/api/admin/mapped_ids?input_type=user_id&output_type=pid&input=' + id, headers=dmca) + nnid_dec = etree.fromstring(nnid.content) + del(nnid) + pid = nnid_dec[0][1].text + if not pid: + return False + del(nnid_dec) + mii = requests.get('https://accountws.nintendo.net/v1/api/miis?pids=' + pid, headers=dmca) + try: + mii_dec = etree.fromstring(mii.content) + # Can't be fucked to put individual exceptions to catch here + except: + return False + del(mii) + try: + miihash = mii_dec[0][2][0][0].text.split('.net/')[1].split('_')[0] + except IndexError: + miihash = None + screenname = mii_dec[0][3].text + nnid = mii_dec[0][6].text + del(mii_dec) + + # Also todo: Return the NNID based on what accountws returns, not the user's input!!! + return [miihash, screenname, nnid] + + +def recaptcha_verify(request, key): + if not request.POST.get('g-recaptcha-response'): + return False + re_request = urllib.request.urlopen('https://www.google.com/recaptcha/api/siteverify?secret={0}&response={1}'.format(key, request.POST['g-recaptcha-response'])) + jsond = json.loads(re_request.read().decode()) + if not jsond['success']: + return False + return True + +ImageFile.LOAD_TRUNCATED_IMAGES = True +def image_upload(img, stream=False, drawing=False): + try: + # Decode the image + decodedimg = img.read() if stream else base64.b64decode(img) + # Open the image + im = Image.open(io.BytesIO(decodedimg)) + # Check for EXIF data and rotate the image if necessary + if hasattr(im, '_getexif'): + orientation = 0x0112 + exif = im._getexif() + if exif is not None: + orientation = exif.get(orientation) + rotations = { + 3: Image.ROTATE_180, + 6: Image.ROTATE_270, + 8: Image.ROTATE_90 + } + if orientation in rotations: + im = im.transpose(rotations[orientation]) + # Resize the image + im.thumbnail((800, 800), Image.ANTIALIAS) + # Check the aspect ratio if this is a drawing + if drawing and ((im.size[0] / im.size[1]) < 0.30): + return 1 + # Generate a hash of the image + imhash = sha1(im.tobytes()).hexdigest() + # Set the file format and location + target = 'webp' + floc = imhash + '.' + target + # Save the file if it doesn't already exist + if not os.path.exists(settings.MEDIA_ROOT + floc): + im.save(settings.MEDIA_ROOT + floc, target, quality=80, method=6) + # Return the URL of the file + return settings.MEDIA_URL + floc + # Catch any errors + except (OSError, SyntaxError, ValueError): + return 1 + +# Todo: Put this into post/comment delete thingy method +def image_rm(image_url): + if settings.image_delete_opt: + if settings.MEDIA_URL in image_url: + sysfile = image_url.split(settings.MEDIA_URL)[1] + sysloc = settings.MEDIA_ROOT + sysfile + if settings.image_delete_opt > 1: + try: + remove(sysloc) + except: + return False + else: + return True + # The RM'd directory to move it to + rmloc = sysloc.replace(settings.MEDIA_ROOT, settings.MEDIA_ROOT + 'rm/') + try: + rename(sysloc, rmloc) + except: + return False + else: + return True + else: + return False + +def get_gravatar(email): + try: + page = urllib.request.urlopen('https://gravatar.com/avatar/'+ md5(email.encode('utf-8').lower()).hexdigest() +'?d=404&s=128') + except: + return False + return page.geturl() + +def filterchars(str=""): + # If string is blank, None, any other object, etc, make it whitespace so it's detected by isspace. + if not str: + str = " " + # Forbid chars in this list, currently: Right-left override, largest Unicode character. + # Now restricting everything in https://www.reddit.com/r/Unicode/comments/5qa7e7/widestlongest_unicode_characters_list/ + forbid = ["\u202e", "\ufdfd", "\u01c4", "\u0601", "\u2031", "\u0bb9", "\u0bf8", "\u0bf5", "\ua9c4", "\u102a", "\ua9c5", "\u2e3b", "\ud808", "\ude19", "\ud809", "\udc2b", "\ud808", "\udf04", "\ud808", "\ude1f", "\ud808", "\udf7c", "\ud808", "\udc4e", "\ud808", "\udc31", "\ud808", "\udf27", "\ud808", "\udd43", "\ud808", "\ude13", "\ud808", "\udf59", "\ud808", "\ude8e", "\ud808", "\udd21", "\ud808", "\udd4c", "\ud808", "\udc4f", "\ud808", "\udc30", "\ud809", "\udc2a", "\ud809", "\udc29", "\ud808", "\ude19", "\ud809", "\udc2b"] + for char in forbid: + if char in str: + str = str.replace(char, " ") + if str.isspace(): + try: + girls = json.load(open(settings.BASE_DIR + '/girls.json')) + except: + girls = ['None'] + return choice(girls) + return str + +# Check IP for proxy. +def iphub(addr): + if settings.iphub_key and not '192.168' in addr: + get = requests.get('http://v2.api.iphub.info/ip/' + addr, headers={'X-Key': settings.iphub_key}) + if get.json()['block'] == 1: + return True + else: + return False + +# NNID blacklist check +def nnid_blacked(nnid): + blacklist = json.load(open(settings.nnid_forbiddens)) + # The NNID server omits dashes and dots from NNIDs, gotta make sure nobody gets through this + nnid = nnid.lower().replace('-', '').replace('.', '') + if nnid in blacklist: + return True + return False diff --git a/closedverse_main/views.py b/closedverse_main/views.py new file mode 100644 index 0000000..19bcff9 --- /dev/null +++ b/closedverse_main/views.py @@ -0,0 +1,1889 @@ +from django.http import HttpResponse, HttpResponseNotFound, HttpResponseBadRequest, HttpResponseServerError, HttpResponseForbidden, JsonResponse +from django.template import loader +from django.shortcuts import render, redirect, get_object_or_404 +from django.http import Http404 +from django.views.decorators.csrf import csrf_exempt +from django.db.models import Q, QuerySet, Max, F, Count, Case, When, Exists, OuterRef +from django.contrib.auth import login, logout +from django.contrib.auth.decorators import login_required +from django.views.decorators.http import require_http_methods +from django.core.validators import EmailValidator +from django.core.exceptions import ValidationError +from django.db.models import Q, Count, Exists, OuterRef +from .models import * +from .util import * +from .serializers import CommunitySerializer +from closedverse import settings +import re +from django.urls import reverse +from random import getrandbits +from random import choice +from json import dumps, loads +import sys, traceback +import subprocess +from datetime import datetime +import django.utils.dateformat +from binascii import hexlify +from os import urandom +from datetime import date + +#from silk.profiling.profiler import silk_profile + +def json_response(msg='', code=0, httperr=400): + thing = { + # success would be false, but 0 is faster I think (Miiverse used 0 because Perl doesn't have bools) + # it also should be removed + 'success': 0, + 'errors': [ + { + # We should drop this Miiverse formatting at some point + 'message': msg, + 'error_code': code, + } + ], + 'code': httperr, + } + return JsonResponse(thing, safe=False, status=httperr) +def community_list(request): + """Lists communities / main page.""" + msg_list = ["eat breakfast.", "The Cedar train must keep going", "be sure to drink a lot of water.", "We, crusaders, will fight for what we believe in!", "be chill, be calm.", "*insert inspiring sentence*", "this is gonna be a great day for you.", "why not try other not-usally-used features of the website?", "work is hard, but results are great!"] + msgoftheday = choice(msg_list) + + #dateopening = date(2022, 7, 3) + #datehalloween = date(2022, 10, 31) + #datenow = date.today() + #age = datenow - dateopening + #halloween = datehalloween - datenow + #staff_list = User.objects.filter(staff=True) + + + if 'json' in request.META.get('HTTP_ACCEPT', ''): + cs = CommunitySerializer + response = { + 'general': cs.many(Community.objects.filter(type=0).order_by('-created')), + 'game': cs.many(Community.objects.filter(type=1).order_by('-created')), + 'special': cs.many(Community.objects.filter(type=2).order_by('-created')), + 'user_communities': cs.many(Community.objects.filter(type=3).order_by('-created')) + } + return JsonResponse(response) + popularity = Community.popularity + obj = Community.objects + if request.user.is_authenticated: + classes = ['guest-top'] + favorites = request.user.community_favorites() + else: + classes = [] + favorites = None + + availableads = Ads.ads_available() + if(availableads): + ad = Ads.get_one() + else: + ad = "no ads" + + availablemotds = Motd.motds_available() + if(availablemotds): + mesoftheday = Motd.get_one() + else: + mesoftheday = "no MOTDs" + + availablemes = welcomemsg.welcomemsg_available() + if(availablemes): + welmes = welcomemsg.get_one() + else: + welmes = "no MOTDs" + + return render(request, 'closedverse_main/community_list.html', { + 'title': 'Communities', + 'ad': ad, + 'mesoftheday': mesoftheday, + 'welmes': welmes, + #'staff_list': staff_list, + #'age': round(age.days / 30, 2), + #'halloween': halloween.days, + 'availableads': availableads, + 'availablemotds': availablemotds, + 'availablemes': availablemes, + 'classes': classes, + 'general': obj.filter(type=0).order_by('-created')[0:8], + 'game': obj.filter(type=1).order_by('-created')[0:8], + 'special': obj.filter(type=2).order_by('-created')[0:8], + 'user_communities': obj.filter(type=3).order_by('-created')[0:8], + 'feature': obj.filter(is_feature=True).order_by('-created'), + 'favorites': favorites, + 'settings': settings, + 'ogdata': { + 'title': 'Community List', + 'description': "Did you know that you have rights? The Constitution says you do.", + 'date': 'None', + 'image': request.build_absolute_uri(settings.STATIC_URL + 'img/favicon.png'), + }, + }) +def community_all(request): + """All communities, with pagination""" + try: + offset = int(request.GET.get('offset', '0')) + except ValueError: + offset = 0 + if request.user.is_authenticated: + classes = ['guest-top'] + else: + classes = [] + gen = Community.get_all(0, offset) + game = Community.get_all(1, offset) + special = Community.get_all(2, offset) + usr = Community.get_all(3, offset) + # Closedverse was NEVER meant to have 20000000 communities. + if gen.count() > 11 or game.count() > 11 or special.count() > 11 or usr.count() > 11: + has_next = True + else: + has_next = False + if gen.count() < 1 or game.count() < 1 or special.count() < 1 or usr.count() < 1: + has_back = True + else: + has_back = False + back = offset - 12 + next = offset + 12 + return render(request, 'closedverse_main/community_all.html', { + 'title': 'All Communities', + 'classes': classes, + 'general': gen, + 'game': game, + 'special': special, + 'user_communities': usr, + 'has_next': has_next, + 'has_back': has_back, + 'next': next, + 'back': back, + }) +def community_search(request): + """Community searching""" + query = request.GET.get('query') + if not query or len(query) < 2: + raise Http404() + if request.GET.get('offset'): + communities = Community.search(query, 20, int(request.GET['offset']), request) + else: + communities = Community.search(query, 20, 0, request) + if communities.count() > 19: + if request.GET.get('offset'): + next_offset = int(request.GET['offset']) + 20 + else: + next_offset = 20 + else: + next_offset = None + return render(request, 'closedverse_main/community-search.html', { + 'classes': ['search'], + 'query': query, + 'communities': communities, + 'next': next_offset, + }) + +@login_required +def community_favorites(request): + """Favorite communities, can be used for self by default or other users""" + user = request.user + has_other = False + if request.GET.get('u'): + user = get_object_or_404(User, username=request.GET['u']) + has_other = True + profile = user.profile() + profile.setup(request) + communities = user.community_favorites(True) + else: + communities = request.user.community_favorites(True) + profile = user.profile() + profile.setup(request) + return render(request, 'closedverse_main/community_favorites.html', { + 'title': 'Favorite communities', + 'favorites': communities, + 'user': user, + 'profile': profile, + 'other': has_other, + }) + +def login_page(request): + """Login page! using our own user objects.""" + # Redirect the user to / if they're logged in, forcing them to log out + if request.user.is_authenticated: + return redirect('/') + if request.method == 'POST': + # If we don't have all of the POST parameters we want.. + if not (request.POST['username'] and request.POST['password']): + # then return that. + return HttpResponseBadRequest("You didn't fill in all of the fields.") + # Now let's authenticate. + # Wait, first check if the user exists. Remove spaces from the username, because some people do that. + # Hold up, first we need to check proxe. + # Never mind + """ + if settings.PROD: + if iphub(request.META['HTTP_CF_CONNECTING_IP']): + spamuser = True + if settings.disallow_proxy: + # This was for me, a server error will email admins of course. + raise ValueError + """ + user = User.objects.authenticate(username=request.POST['username'], password=request.POST['password']) + # None = doesn't exist, False = invalid password. + if user is None: + return HttpResponseNotFound("The user doesn't exist.") + else: + # Todo: I might want to do some things relating to making models take care of object stuff like this instead of the view, it's totally messed up now. + successful = False if user[1] is False or not user[0].is_active() else True + LoginAttempt.objects.create(user=user[0], success=successful, user_agent=request.META.get('HTTP_USER_AGENT'), addr=request.META.get('HTTP_CF_CONNECTING_IP')) + if user[1] is False: + return HttpResponse("Invalid password.", status=401) + elif user[1] is 2: + return HttpResponse("This account's password needs to be reset. Contact an admin or reset by email.", status=400) + elif not user[0].is_active(): + return HttpResponseForbidden("This account was disabled.") + request.session['passwd'] = user[0].password + login(request, user[0]) + + # Then, let's get the referrer and either return that or the root. + # Actually, let's not for now. + #if request.META['HTTP_REFERER'] and "login" not in request.META['HTTP_REFERER'] and request.META['HTTP_HOST'] in request.META['HTTP_REFERER']: + # location = request.META['HTTP_REFERER'] + #else: + location = '/' + if request.GET.get('next'): + location = request.GET['next'] + return HttpResponse(location) + else: + return render(request, 'closedverse_main/login_page.html', { + 'title': 'Log in', + 'allow_signups': settings.allow_signups, + #'classes': ['no-login-btn'] + }) +def signup_page(request): + """Signup page, lots of checks here""" + # Redirect the user to / if they're logged in, forcing them to log out + if settings.allow_signups: + if request.user.is_authenticated: + return redirect('/') + if request.method == 'POST': + if settings.recaptcha_pub: + if not recaptcha_verify(request, settings.recaptcha_priv): + return HttpResponse("The reCAPTCHA validation has failed.", status=402) + if not (request.POST.get('username') and request.POST.get('password') and request.POST.get('password_again')): + return HttpResponseBadRequest("You didn't fill in all of the required fields.") + if not re.compile(r'^[A-Za-z0-9-._]{1,32}$').match(request.POST['username']) or not re.compile(r'[A-Za-z0-9]').match(request.POST['username']): + return HttpResponseBadRequest("Your username either contains invalid characters or is too long (only letters + numbers, dashes, dots and underscores are allowed") + for keyword in ['admin', 'admln', 'adrnin', 'admn', ]: + if keyword in request.POST['username'].lower(): + return HttpResponseForbidden("You aren't funny. Please use a funny name.") + for keyword in ['nigger', 'nigga', 'faggot', 'kile', ]: + if keyword in request.POST['username'].lower(): + return HttpResponseForbidden("Nigga test failed, invalid pass.") + conflicting_user = User.objects.filter(Q(username__iexact=request.POST['username']) | Q(username__iexact=request.POST['username'].replace(' ', ''))) + if conflicting_user: + return HttpResponseBadRequest("A user with that username already exists.") + if not request.POST['password'] == request.POST['password_again']: + return HttpResponseBadRequest("Your passwords don't match.") + # do the length check + if len(request.POST['password']) < settings.minimum_password_length: + return HttpResponseBadRequest('The password must be at least ' + str(settings.minimum_password_length) + ' characters long.') + if not (request.POST['nickname'] or request.POST['origin_id']): + return HttpResponseBadRequest("You didn't fill in an NNID, so you need a nickname.") + if request.POST['nickname'] and len(request.POST['nickname']) > 32: + return HttpResponseBadRequest("Your nickname is either too long or too short (1-32 characters)") + if request.POST['origin_id'] and (len(request.POST['origin_id']) > 16 or len(request.POST['origin_id']) < 6): + return HttpResponseBadRequest("The NNID provided is either too short or too long.") + if request.POST.get('email'): + if User.email_in_use(request.POST['email']): + return HttpResponseBadRequest("That email address is already in use, that can't happen.") + try: + EmailValidator()(value=request.POST['email']) + except ValidationError: + return HttpResponseBadRequest("Your e-mail address is invalid. Input an e-mail address, or input nothing.") + check_others = Profile.objects.filter(user__addr=request.META['HTTP_CF_CONNECTING_IP'], let_freedom=False).exists() + if check_others: + return HttpResponseBadRequest("Unfortunately, you cannot make any accounts at this time. This restriction was set for a reason, please contact the administration. Please don't bypass this, as if you do, you are just being ignorant. If you have not made any accounts, contact the administration and this restriction will be removed for you.") + check_othersban = User.objects.filter(addr=request.META['HTTP_CF_CONNECTING_IP'], active=False).exists() + if check_othersban: + return HttpResponseBadRequest("You cannot sign up while banned.") + check_signupban = User.objects.filter(signup_addr=request.META['HTTP_CF_CONNECTING_IP'], active=False).exists() + if check_signupban: + return HttpResponseBadRequest("Get on your hands and knees") + if iphub(request.META['HTTP_CF_CONNECTING_IP']): + spamuser = True + if settings.disallow_proxy: + return HttpResponseBadRequest("You cannot sign up with a proxy.") + else: + spamuser = True + if request.POST['origin_id']: + if settings.nnid_forbiddens: + if nnid_blacked(request.POST['origin_id']): + return HttpResponseForbidden("You are very funny. Unfortunately, your funniness blah blah blah fuck off.") + if User.nnid_in_use(request.POST['origin_id']): + return HttpResponseBadRequest("That Nintendo Network ID is already in use, that would cause confusion.") + mii = get_mii(request.POST['origin_id']) + if not mii: + return HttpResponseBadRequest("The NNID provided doesn't exist.") + nick = mii[1] + gravatar = False + else: + nick = request.POST['nickname'] + mii = None + gravatar = True + make = User.objects.closed_create_user(username=request.POST['username'], password=request.POST['password'], email=request.POST.get('email'), addr=request.META['HTTP_CF_CONNECTING_IP'], user_agent=request.META['HTTP_USER_AGENT'], signup_addr=request.META['HTTP_CF_CONNECTING_IP'], nick=nick, nn=mii, gravatar=gravatar) + LoginAttempt.objects.create(user=make, success=True, user_agent=request.META.get('HTTP_USER_AGENT'), addr=request.META.get('HTTP_CF_CONNECTING_IP')) + login(request, make) + request.session['passwd'] = make.password + return HttpResponse("/") + else: + if not settings.recaptcha_pub: + settings.recaptcha_pub = None + return render(request, 'closedverse_main/signup_page.html', { + 'title': 'Sign up', + 'recaptcha': settings.recaptcha_pub, + 'age': settings.age_allowed + #'classes': ['no-login-btn'], + }) + else: + return render(request, 'closedverse_main/signups-blocked.html', { + 'title': 'Log in', + #'classes': ['no-login-btn'] + }) + +def forgot_passwd(request): + """Password email page / post endpoint.""" + if request.method == 'POST' and request.POST.get('email'): + try: + user = User.objects.get(email=request.POST['email']) + except (User.DoesNotExist, ValueError): + return HttpResponseNotFound("There isn't a user with that email address.") + try: + user.password_reset_email(request) + except: + return HttpResponseBadRequest("There was an error submitting that.") + return HttpResponse("Success! Check your emails, it should have been sent from \"{0}\".".format(settings.DEFAULT_FROM_EMAIL)) + if request.GET.get('token'): + user = User.get_from_passwd(request.GET['token']) + if not user: + raise Http404() + if request.method == 'POST': + if not request.POST['password'] == request.POST['password_again']: + return HttpResponseBadRequest("Your passwords don't match.") + user.set_password(request.POST['password']) + user.save() + return HttpResponse("Success! Now you can log in with your new password!") + return render(request, 'closedverse_main/forgot_reset.html', { + 'title': 'Reset password for ' + user.username, + 'user': user, + #'classes': ['no-login-btn'], + }) + return render(request, 'closedverse_main/forgot_page.html', { + 'title': 'Reset password', + #'classes': ['no-login-btn'], + }) + +def logout_page(request): + """Password email page / post endpoint.""" + logout(request) + if request.GET.get('next'): + return redirect(request.GET['next']) + return redirect('/') +def user_view(request, username): + + """The user view page, has recent posts/yeahs.""" + user = get_object_or_404(User, username__iexact=username) + if user.is_me(request): + title = 'My profile' + else: + if request.user.is_authenticated and not user.can_view(request.user): + raise Http404() + title = '{0}\'s profile'.format(user.nickname) + profile = user.profile() + profile.setup(request) + if request.user.is_authenticated: + profile.can_friend = profile.can_friend(request.user) + if request.method == 'POST' and request.user.is_authenticated: + user = request.user + profile = user.profile() + profile.setup(request) + comment_old = profile.comment + nickname_old = user.nickname + if profile.cannot_edit: + return json_response("Not allowed.") + if request.POST.get('screen_name') is None or len(request.POST['screen_name']) > 32: + return json_response('Nickname is too long or too short (length '+str(len(request.POST.get('screen_name')))+', max 32)') + if len(request.POST.get('profile_comment')) > 2200: + return json_response('Profile comment is too long (length '+str(len(request.POST.get('profile_comment')))+', max 2200)') + if len(request.POST.get('country')) > 255: + return json_response('Region is too long (length '+str(len(request.POST.get('country')))+', max 255)') + if len(request.POST.get('website')) > 255: + return json_response('Web URL is too long (length '+str(len(request.POST.get('website')))+', max 255)') + if len(request.POST.get('bg_url')) > 300: + return json_response('Background URL is too long (length '+str(len(request.POST.get('bg_url')))+', max 300)') + if len(request.POST.get('whatareyou')) > 300: + return json_response('Big brother it\'s too big, I can\'t take it! (length '+str(len(request.POST.get('whatareyou')))+', max 300)') + if len(request.POST.get('external')) > 255: + return json_response('Big brother it\'s too big, I can\'t take it! (length '+str(len(request.POST.get('external')))+', max 300)') + if len(request.POST.get('email')) > 500: + return json_response('Big brother it\'s too big, I can\'t take it! (length '+str(len(request.POST.get('email')))+', max 500)') + # Kinda unneeded but gdsjkgdfsg + if request.POST.get('website') == 'Web URL' or request.POST.get('country') == 'Region' or request.POST.get('external') == 'DiscordTag': + return json_response("I'm laughing right now.") + + if len(request.POST.get('avatar')) > 255: + return json_response('Avatar is too long (length '+str(len(request.POST.get('avatar')))+', max 255)') + if request.POST.get('email') and not request.POST.get('email') == 'None': + if User.email_in_use(request.POST['email'], request): + return HttpResponseBadRequest("That email address is already in use, that can't happen.") + try: + EmailValidator()(value=request.POST['email']) + except ValidationError: + return json_response("Your e-mail address is invalid. Input an e-mail address, or input nothing.") + if User.nnid_in_use(request.POST.get('origin_id'), request): + return json_response("That Nintendo Network ID is already in use, that would cause confusion.") + if settings.nnid_forbiddens: + if nnid_blacked(request.POST['origin_id']): + return json_response("You are very funny. Unfortunately, your funniness blah blah blah fuck off.") + if user.has_plain_avatar(): + user.avatar = request.POST.get('avatar') or '' + if request.POST.get('avatar') == '1': + if not request.POST.get('origin_id'): + user.has_mh = False + profile.origin_id = None + profile.origin_info = None + user.avatar = ('s' if getrandbits(1) else '') + user.avatar = get_gravatar(user.email) or ('s' if getrandbits(1) else '') + user.has_mh = False + elif request.POST.get('avatar') == '0': + if not request.POST.get('origin_id'): + user.has_mh = False + profile.origin_id = None + profile.origin_info = None + user.avatar = ('s' if getrandbits(1) else '') + else: + user.has_mh = True + getmii = get_mii(request.POST.get('origin_id')) + if not getmii: + return json_response('NNID not found') + user.avatar = getmii[0] + profile.origin_id = getmii[2] + profile.origin_info = dumps(getmii) + # set the username color + if request.POST.get('color'): + try: + validate_color(request.POST['color']) + except ValidationError: + user.color = None + else: + dark = True if user.color == '#000000' else False + light = True if user.color == '#ffffff' else False + if dark: + return json_response("Too dark") + elif light: + user.color = None + else: + if request.POST['color'] == '#ffffff': + user.color = None + else: + user.color = request.POST['color'] + else: + user.color = None + + # set the theme + if request.POST.get('theme'): + reset_theme = False if request.POST.get('reset-theme') is None else True + try: + validate_color(request.POST['theme']) + except ValidationError: + user.theme = None + else: + light = True if request.POST['theme'] == '#ffffff' else False + if light: + user.theme = None + elif reset_theme: + user.theme = None + else: + user.theme = request.POST['theme'] + else: + user.theme = None + + if request.POST.get('email') == 'None': + user.email = None + else: + user.email = request.POST.get('email') + profile.country = request.POST.get('country') + website = request.POST.get('website') + if ' ' in website or not '.' in website: + profile.weblink = '' + else: + profile.weblink = website + profile.comment = request.POST.get('profile_comment') + profile.external = request.POST.get('external') + profile.whatareyou = request.POST.get('whatareyou') + profile.relationship_visibility = (request.POST.get('relationship_visibility') or 0) + profile.id_visibility = (request.POST.get('id_visibility') or 0) + profile.yeahs_visibility = (request.POST.get('yeahs_visibility') or 0) + profile.pronoun_is = (request.POST.get('pronoun_dot_is') or 0) + profile.gender_is = (request.POST.get('gender_select') or 0) + profile.comments_visibility = (request.POST.get('comments_visibility') or 0) + profile.let_friendrequest = (request.POST.get('let_friendrequest') or 0) + user.bg_url = (request.POST.get('bg_url') or None) + user.nickname = filterchars(request.POST.get('screen_name')) + # Maybe todo?: Replace all "not .. == .." with ".. != .." etc + # If the user cannot edit and their nickname/avatar is different than what they had, don't let it happen. + + if request.POST.get('profile_comment') != comment_old or request.POST.get('screen_name') != nickname_old: + ProfileHistory.objects.create(user=user, + old_nickname=nickname_old, + old_comment=comment_old, + new_nickname=request.POST.get('screen_name'), + new_comment=request.POST.get('profile_comment')) + + if not user.email: + profile.email_login = 1 + else: + profile.email_login = (request.POST.get('email_login') or 1) + profile.save() + user.save() + return HttpResponse() + posts = user.get_posts(3, 0, request) + yeahed = user.get_yeahed(0, 3) + for yeah in yeahed: + if user.is_me(request): + yeah.post.yeah_given = True + yeah.post.setup(request) + fr = None + if request.user.is_authenticated: + user.friend_state = user.friend_state(request.user) + if user.friend_state == 2: + fr = user.get_fr(request.user).first() + + return render(request, 'closedverse_main/user_view.html', { + 'title': title, + 'classes': ['profile-top'], + 'user': user, + 'profile': profile, + 'posts': posts, + 'yeahed': yeahed, + 'fr': fr, + 'ogdata': { + 'title': title, + # Todo: fix all concatenations like these and make them into strings with format() since that's cleaner and better + 'description': profile.comment, + 'date': str(user.created), + 'image': user.do_avatar(), + }, + }) +def user_posts(request, username): + """User posts page""" + user = get_object_or_404(User, username__iexact=username) + if user.is_me(request): + title = 'My posts' + else: + if request.user.is_authenticated and not user.can_view(request.user): + raise Http404() + title = '{0}\'s posts'.format(user.nickname) + profile = user.profile() + profile.setup(request) + + if request.GET.get('offset'): + posts = user.get_posts(50, int(request.GET['offset']), request) + else: + posts = user.get_posts(50, 0, request) + if posts.count() > 49: + if request.GET.get('offset'): + next_offset = int(request.GET['offset']) + 50 + else: + next_offset = 50 + else: + next_offset = None + + if request.META.get('HTTP_X_AUTOPAGERIZE'): + return render(request, 'closedverse_main/elements/u-post-list.html', { + 'posts': posts, + 'next': next_offset, + }) + else: + return render(request, 'closedverse_main/user_posts.html', { + 'user': user, + 'title': title, + 'posts': posts, + 'profile': profile, + 'next': next_offset, + # Copied from the above, if you change the last ogdata occurrence then change this one + 'ogdata': { + 'title': title, + 'description': profile.comment, + 'date': str(user.created), + }, + }) +def user_yeahs(request, username): + """User's Yeahs page""" + user = get_object_or_404(User, username__iexact=username) + if user.is_me(request): + title = 'My yeahs' + elif not request.user.is_authenticated: + raise Http404() + else: + if request.user.is_authenticated and not user.can_view(request.user): + raise Http404() + title = '{0}\'s yeahs'.format(user.nickname) + profile = user.profile() + profile.setup(request) + + if not profile.yeahs_visible: + raise Http404() + + if request.GET.get('offset'): + yeahs = user.get_yeahed(2, 20, int(request.GET['offset'])) + else: + yeahs = user.get_yeahed(2, 20, 0) + if yeahs.count() > 19: + if request.GET.get('offset'): + next_offset = int(request.GET['offset']) + 20 + else: + next_offset = 20 + else: + next_offset = None + posts = [] + for yeah in yeahs: + if yeah.type == 1: + if user.is_me(request): + yeah.comment.yeah_given = True + posts.append(yeah.comment) + else: + if user.is_me(request): + yeah.post.yeah_given = True + posts.append(yeah.post) + for post in posts: + post.setup(request) + if request.META.get('HTTP_X_AUTOPAGERIZE'): + return render(request, 'closedverse_main/elements/u-post-list.html', { + 'posts': posts, + 'next': next_offset, + }) + else: + return render(request, 'closedverse_main/user_yeahs.html', { + 'user': user, + 'title': title, + 'posts': posts, + 'profile': profile, + 'next': next_offset, + }) +def user_comments(request, username): + """User's comments page""" + user = get_object_or_404(User, username__iexact=username) + if user.is_me(request): + title = 'My comments' + else: + if request.user.is_authenticated and not user.can_view(request.user): + raise Http404() + title = '{0}\'s comments'.format(user.nickname) + profile = user.profile() + profile.setup(request) + + if not profile.comments_visible: + raise Http404() + + if request.GET.get('offset'): + posts = user.get_comments(50, int(request.GET['offset']), request) + else: + posts = user.get_comments(50, 0, request) + if posts.count() > 19: + if request.GET.get('offset'): + next_offset = int(request.GET['offset']) + 20 + else: + next_offset = 20 + else: + next_offset = None + if request.META.get('HTTP_X_AUTOPAGERIZE'): + return render(request, 'closedverse_main/elements/u-post-list.html', { + 'posts': posts, + 'next': next_offset, + }) + else: + return render(request, 'closedverse_main/user_comments.html', { + 'user': user, + 'title': title, + 'posts': posts, + 'profile': profile, + 'next': next_offset, + }) +def user_following(request, username): + """User following page""" + user = get_object_or_404(User, username__iexact=username) + if user.is_me(request): + title = 'My follows' + else: + if request.user.is_authenticated and not user.can_view(request.user): + raise Http404() + title = '{0}\'s follows'.format(user.nickname) + profile = user.profile() + profile.setup(request) + + if request.GET.get('offset'): + following_list = user.get_following(20, int(request.GET['offset'])) + else: + following_list = user.get_following(20, 0) + if following_list.count() > 19: + if request.GET.get('offset'): + next_offset = int(request.GET['offset']) + 20 + else: + next_offset = 20 + else: + next_offset = None + following = [] + for follow in following_list: + following.append(follow.target) + if request.META.get('HTTP_X_AUTOPAGERIZE'): + for user in following: + user.is_following = user.is_following(request.user) + return render(request, 'closedverse_main/elements/profile-user-list.html', { + 'users': following, + 'request': request, + 'next': next_offset, + }) + else: + return render(request, 'closedverse_main/user_following.html', { + 'user': user, + 'title': title, + 'following': following, + 'profile': profile, + 'next': next_offset, + }) +def user_followers(request, username): + """User followers page""" + user = get_object_or_404(User, username__iexact=username) + if user.is_me(request): + title = 'My followers' + else: + if request.user.is_authenticated and not user.can_view(request.user): + raise Http404() + title = '{0}\'s followers'.format(user.nickname) + profile = user.profile() + profile.setup(request) + + if request.GET.get('offset'): + followers_list = user.get_followers(20, int(request.GET['offset'])) + else: + followers_list = user.get_followers(20, 0) + if followers_list.count() > 19: + if request.GET.get('offset'): + next_offset = int(request.GET['offset']) + 20 + else: + next_offset = 20 + else: + next_offset = None + followers = [] + for follow in followers_list: + followers.append(follow.source) + if request.META.get('HTTP_X_AUTOPAGERIZE'): + for user in followers: + user.is_following = user.is_following(request.user) + return render(request, 'closedverse_main/elements/profile-user-list.html', { + 'users': followers, + 'request': request, + 'next': next_offset, + }) + else: + return render(request, 'closedverse_main/user_followers.html', { + 'user': user, + 'title': title, + 'followers': followers, + 'profile': profile, + 'next': next_offset, + }) +def user_friends(request, username): + """User friends list page - uses some special math I think""" + user = get_object_or_404(User, username__iexact=username) + if user.is_me(request): + title = 'My friends' + else: + if request.user.is_authenticated and not user.can_view(request.user): + raise Http404() + title = '{0}\'s friends'.format(user.nickname) + profile = user.profile() + profile.setup(request) + + if request.GET.get('offset'): + friends_list = Friendship.get_friendships(user, 20, int(request.GET['offset'])) + else: + friends_list = Friendship.get_friendships(user, 20, 0) + if friends_list.count() > 19: + if request.GET.get('offset'): + next_offset = int(request.GET['offset']) + 20 + else: + next_offset = 20 + else: + next_offset = None + friends = [] + for friend in friends_list: + friends.append(friend.other(user)) + del(friends_list) + if request.META.get('HTTP_X_AUTOPAGERIZE'): + for user in friends: + user.is_following = user.is_following(request.user) + return render(request, 'closedverse_main/elements/profile-user-list.html', { + 'users': friends, + 'request': request, + 'next': next_offset, + }) + else: + return render(request, 'closedverse_main/user_friends.html', { + 'user': user, + 'title': title, + 'friends': friends, + 'profile': profile, + 'next': next_offset, + }) + +@login_required +def profile_settings(request): + """Profile settings, POSTs to user_view""" + profile = request.user.profile() + profile.setup(request) + user = request.user + user.mh = user.mh() + return render(request, 'closedverse_main/profile-settings.html', { + 'title': 'Profile settings', + 'user': user, + 'profile': profile, + 'settings': settings, + }) +def special_community_tag(request, tag): + """For community URIs such as /communities/changelog""" + communities = get_object_or_404(Community, tags=tag) + return redirect(reverse('main:community-view', args=[communities.id])) + +#@silk_profile(name='Community view') +def community_view(request, community): + """View an individual community""" + communities = get_object_or_404(Community, id=community) + communities.setup(request) + if not communities.clickable(): + return HttpResponseForbidden() + if not request.user.is_authenticated and communities.require_auth: + return render(request, 'com_locked.html') + if request.GET.get('offset'): + posts = communities.get_posts(50, int(request.GET['offset']), request) + else: + posts = communities.get_posts(50, 0, request) + if posts.count() > 49: + if request.GET.get('offset'): + next_offset = int(request.GET['offset']) + 50 + else: + next_offset = 50 + else: + next_offset = None + + if request.META.get('HTTP_X_AUTOPAGERIZE'): + return render(request, 'closedverse_main/elements/post-list.html', { + 'posts': posts, + 'next': next_offset, + }) + else: + return render(request, 'closedverse_main/community_view.html', { + 'title': communities.name, + 'classes': ['community-top'], + 'community': communities, + 'posts': posts, + 'next': next_offset, + 'ogdata': { + 'title': communities.name, + 'description': communities.description, + 'date': str(communities.created), + 'image': communities.icon, + }, + }) + +@require_http_methods(['POST']) +@login_required +def community_favorite_create(request, community): + the_community = get_object_or_404(Community, id=community) + if not the_community.type == 4: + the_community.favorite_add(request) + return HttpResponse() +@require_http_methods(['POST']) +@login_required +def community_favorite_rm(request, community): + the_community = get_object_or_404(Community, id=community) + the_community.favorite_rm(request) + return HttpResponse() + +def community_tools(request, community): + the_community = get_object_or_404(Community, id=community) + if not request.user.is_authenticated: + raise Http404() + if request.user != the_community.creator: + raise Http404() + return render(request, 'closedverse_main/community_tools.html', { + 'title': 'Community tools', + 'community': the_community, + 'max_icon_size': settings.max_icon_size, + 'max_banner_size': settings.max_banner_size, + }) + +def community_tools_set(request, community): + if request.method == 'POST': + the_community = get_object_or_404(Community, id=community) + #do the checks + if not request.user.is_authenticated: + return HttpResponseForbidden() + if request.user != the_community.creator: + return HttpResponseForbidden() + if len(request.POST.get('community_name')) == 0 or len(request.POST.get('community_name')) >= 100: + return json_response('bad name') + if len(request.POST.get('community_description')) >= 1024: + return json_response('bad description') + if the_community.is_rm: + return json_response('Community is removed') + if the_community.type == 4: + return json_response('Community is removed') + #do the settings + the_community.name = request.POST.get('community_name') + the_community.description = request.POST.get('community_description') + the_community.platform = (request.POST.get('community_platform') or 0) + the_community.require_auth = False if request.POST.get('force_login') is None else True + ico = request.FILES.get('community_icon') + banner = request.FILES.get('community_banner') + #if icon is not set, ignore it + if ico != None: + #make sure it's an image. + if 'image' in ico.content_type: + # Set the upload limit in megabytes + upload_limit = settings.max_icon_size + + max_size = upload_limit * 1024 * 1024 + current_size = ico.size + max_mb = max_size / 1024 / 1024 + if current_size > max_size: + return json_response('Your icon is too big! Please upload an image under ' + str(max_mb) + 'MB. (' + str(round(current_size / 1024 / 1024, 3)) + 'MB)') + the_community.ico = ico + else: + return json_response('bad image') + + if banner != None: + if 'image' in banner.content_type: + # Set the upload limit in megabytes + upload_limit = settings.max_banner_size + max_size = upload_limit * 1024 * 1024 + current_size = banner.size + max_mb = max_size / 1024 / 1024 + if current_size > max_size: + # i hate this fucking shit + return json_response('Your banner is too big! Please upload an image under ' + str(max_mb) + ' MB. (' + str(round(current_size / 1024 / 1024, 3)) + 'MB)') + the_community.banner = banner + else: + return json_response('bad image') + + ''' + if request.FILES.get('community_icon') != None: + if + the_community.ico = request.FILES.get('community_icon') + if request.FILES.get('community_banner') != None: + the_community.banner = request.FILES.get('community_banner') + ''' + the_community.save() + #AuditLog.objects.create(type=2, user=user, by=request.user, reasoning=request.POST) + return HttpResponse() + else: + raise Http404() + +def community_create(request): + # check and deduct C tokens + if not request.user.is_authenticated: + raise Http404() + if request.user.c_tokens < 1: + raise Http404() + return render(request, 'closedverse_main/community_create.html', { + 'title': 'Create a community', + 'max_icon_size': settings.max_icon_size, + 'max_banner_size': settings.max_banner_size, + 'tokens': request.user.c_tokens, + }) +def community_create_action(request): + user = request.user + if request.method == 'POST': + if not request.user.is_authenticated: + raise Http404() + if user.c_tokens < 1: + return json_response("You don't have any tokens left") + if len(request.POST.get('community_name')) == 0 or len(request.POST.get('community_name')) >= 100: + return json_response('bad name') + if len(request.POST.get('community_description')) >= 1024: + return json_response('bad description') + get = request.POST.get + user.c_tokens -= 1 + user.save() + Community.objects.create(name=get('community_name'), description=get('community_description'), type=3, platform=get('community_platform'), creator=user) + return json_response('Your community has been created.') + +@require_http_methods(['POST']) +@login_required +def post_create(request, community): + if request.method == 'POST' and request.is_ajax(): + # Wake + request.user.wake(request.META['HTTP_CF_CONNECTING_IP']) + # Required + if not (request.POST.get('community')): + return HttpResponseBadRequest() + try: + community = Community.objects.get(id=community, unique_id=request.POST['community']) + except (Community.DoesNotExist, ValueError): + return HttpResponseNotFound() + # Method of Community + new_post = community.create_post(request) + if not new_post: + return HttpResponseBadRequest() + if isinstance(new_post, int): + # If post limit + if new_post == 8: + # then do meme + return json_response("You have already exceeded the number of posts that you can contribute in a single day. Please try again tomorrow.", 1215919) + return json_response({ + 1: "Your post is too long ("+str(len(request.POST['body']))+" characters, 2200 max).", + 2: "The image you've uploaded is invalid.", + 3: "You're making posts too fast, wait a few seconds and try again.", + 4: "Apparently, you're not allowed to post here.", + 5: "Uh-oh, that URL wasn't valid..", + 6: "Not allowed.", + 7: "Please don't spam.", + }.get(new_post)) + # Render correctly whether we're posting to Activity Feed + if community.is_activity(): + return render(request, 'closedverse_main/elements/community_post.html', { + 'post': new_post, + 'with_community_container': True, + 'type': 2, + }) + else: + return render(request, 'closedverse_main/elements/community_post.html', { 'post': new_post }) + else: + raise Http404() +def post_view(request, post): + has_yeah = Yeah.objects.filter(post=OuterRef('id'), by=request.user.id) + try: + post = Post.objects.annotate(num_yeahs=Count('yeah', distinct=True), num_comments=Count('comment', distinct=True), yeah_given=Exists(has_yeah, distinct=True)).get(id=post) + except Post.DoesNotExist: + raise Http404() + if not request.user.is_authenticated and post.community.require_auth: + raise Http404() + post.setup(request) + if post.poll: + post.poll.setup(request.user) + if request.user.is_authenticated: + post.can_rm = post.can_rm(request) + post.is_favorite = post.is_favorite(request.user) + post.can_comment = post.can_comment(request) + if post.is_mine: + title = 'Your post' + else: + title = '{0}\'s post'.format(post.creator.nickname) + all_comment_count = post.number_comments() + if all_comment_count > 20: + comments = post.get_comments(request, None, all_comment_count - 20) + else: + comments = post.get_comments(request) + return render(request, 'closedverse_main/post-view.html', { + 'title': title, + #CSS might not be that friendly with this / 'classes': ['post-permlink'], + 'post': post, + 'yeahs': post.get_yeahs(request), + 'comments': comments, + 'all_comment_count': all_comment_count, + 'ogdata': { + 'title': title, + 'description': post.trun(), + 'date': str(post.created), + 'image': post.creator.do_avatar(post.feeling), + }, + }) +@require_http_methods(['POST']) +@login_required +def post_add_yeah(request, post): + + the_post = get_object_or_404(Post, id=post) + if the_post.disable_yeah: + return json_response('You cannot yeah this post.') + if the_post.give_yeah(request): + # Give the notification! + Notification.give_notification(request.user, 0, the_post.creator, the_post) + return HttpResponse() + +@require_http_methods(['POST']) +@login_required +def post_delete_yeah(request, post): + the_post = get_object_or_404(Post, id=post) + the_post.remove_yeah(request) + return HttpResponse() +@require_http_methods(['POST']) +@login_required +def post_change(request, post): + the_post = get_object_or_404(Post, id=post) + the_post.change(request) + return HttpResponse() +@require_http_methods(['POST']) +@login_required +def post_setprofile(request, post): + the_post = get_object_or_404(Post, id=post) + the_post.favorite(request.user) + return HttpResponse() +@require_http_methods(['POST']) +@login_required +def post_unsetprofile(request, post): + the_post = get_object_or_404(Post, id=post) + the_post.unfavorite(request.user) + return HttpResponse() +@require_http_methods(['POST']) +@login_required +def post_rm(request, post): + the_post = get_object_or_404(Post, id=post) + the_post.rm(request) + return HttpResponse() +@require_http_methods(['POST']) +@login_required +def comment_change(request, comment): + the_post = get_object_or_404(Comment, id=comment) + the_post.change(request) + return HttpResponse() +@require_http_methods(['POST']) +@login_required +def comment_rm(request, comment): + the_post = get_object_or_404(Comment, id=comment) + the_post.rm(request) + return HttpResponse() +@require_http_methods(['GET', 'POST']) +@login_required +def post_comments(request, post): + post = get_object_or_404(Post, id=post) + if not request.is_ajax(): + raise Http404() + if request.method == 'POST': + # Wake + request.user.wake(request.META['HTTP_CF_CONNECTING_IP']) + # Method of Post + new_post = post.create_comment(request) + if not new_post: + return HttpResponseBadRequest() + if isinstance(new_post, int): + # If post limit + if new_post == 8: + # then do meme + return json_response("You have already exceeded the number of posts that you can contribute in a single day. Please try again tomorrow.", 1215919) + return json_response({ + 1: "Your comment is too long ("+str(len(request.POST['body']))+" characters, 2200 max).", + 2: "The image you've uploaded is invalid.", + 3: "You're making comments too fast, wait a few seconds and try again.", + 6: "Not allowed.", + }.get(new_post)) + # Give the notification! + if post.is_mine(request.user): + users = [] + comments = post.get_comments(request) + for comment in comments: + if comment.creator != request.user: + users.append(comment.creator) + for user in users: + Notification.give_notification(request.user, 3, user, post) + else: + Notification.give_notification(request.user, 2, post.creator, post) + return render(request, 'closedverse_main/elements/post-comment.html', { 'comment': new_post }) + else: + comment_count = post.number_comments() + if comment_count > 20: + comments = post.get_comments(request, comment_count - 20, 0) + return render(request, 'closedverse_main/elements/post_comments.html', { 'comments': comments }) + else: + return render(request, 'closedverse_main/elements/post_comments.html', { 'comments': post.get_comments(request) }) +def comment_view(request, comment): + comment = get_object_or_404(Comment, id=comment) + if not request.user.is_authenticated and comment.original_post.community.require_auth: + raise Http404() + comment.setup(request) + if request.user.is_authenticated: + comment.can_rm = comment.can_rm(request) + if comment.is_mine: + title = 'Your comment' + else: + title = '{0}\'s comment'.format(comment.creator.nickname) + if comment.original_post.is_mine(request.user): + title += ' on your post' + else: + title += ' on {0}\'s post'.format(comment.original_post.creator.nickname) + return render(request, 'closedverse_main/comment-view.html', { + 'title': title, + #CSS might not be that friendly with this / 'classes': ['post-permlink'], + 'comment': comment, + 'yeahs': comment.get_yeahs(request), + 'ogdata': { + 'title': title, + 'description': comment.trun(), + 'date': str(comment.created), + 'image': comment.creator.do_avatar(comment.feeling), + }, + }) +@require_http_methods(['POST']) +@login_required +def comment_add_yeah(request, comment): + the_post = get_object_or_404(Comment, id=comment) + if the_post.give_yeah(request): + # Give the notification! + Notification.give_notification(request.user, 1, the_post.creator, None, the_post) + return HttpResponse() +@require_http_methods(['POST']) +@login_required +def comment_delete_yeah(request, comment): + the_post = get_object_or_404(Comment, id=comment) + the_post.remove_yeah(request) + return HttpResponse() + +@require_http_methods(['POST']) +@login_required +def poll_vote(request, poll): + the_poll = get_object_or_404(Poll, unique_id=poll) + the_poll.vote(request.user, request.POST.get('a')) + return HttpResponse() +@require_http_methods(['POST']) +@login_required +def poll_unvote(request, poll): + the_poll = get_object_or_404(Poll, unique_id=poll) + the_poll.unvote(request.user) + return HttpResponse() + + +@require_http_methods(['POST']) +@login_required +def user_follow(request, username): + user = get_object_or_404(User, username=username) + if settings.PROD: + # Issue 69420: PF2M is getting more follows than me. + if user.username == 'PF2M': + try: + User.objects.get(id=1).follow(request.user) + except: + pass + if user.follow(request.user): + # Give the notification! + Notification.give_notification(request.user, 4, user) + followct = request.user.num_following() + return JsonResponse({'following_count': followct}) +@require_http_methods(['POST']) +@login_required +def user_unfollow(request, username): + user = get_object_or_404(User, username=username) + if settings.PROD: + # Issue 69420 is still active + if user.id == 1: + try: + pf2m = User.objects.get(username='PF2M') + except User.DoesNotExist: + pass + else: + if pf2m.is_following(request.user): + pf2m.unfollow(request.user) + user.unfollow(request.user) + return json_response("i'm crying") + user.unfollow(request.user) + return HttpResponse() +@require_http_methods(['POST']) +@login_required +def user_friendrequest_create(request, username): + user = get_object_or_404(User, username=username) + if not user.profile().can_friend(request.user): + return HttpResponse() + if user.friend_state(request.user) == 0: + if request.POST.get('body'): + if len(request.POST['body']) > 2200: + return json_response('Sorry, but you can\'t send that many characters in a friend request ('+str(len(request.POST['body']))+' sent, 2200 max)\nYou can send more characters in a message once you friend them though.') + user.send_fr(request.user, request.POST['body']) + else: + user.send_fr(request.user) + return HttpResponse() +@require_http_methods(['POST']) +@login_required +def user_friendrequest_accept(request, username): + user = get_object_or_404(User, username=username) + request.user.accept_fr(user) + return HttpResponse() +@require_http_methods(['POST']) +@login_required +def user_friendrequest_reject(request, username): + user = get_object_or_404(User, username=username) + request.user.reject_fr(user) + return HttpResponse() +@require_http_methods(['POST']) +@login_required +def user_friendrequest_cancel(request, username): + user = get_object_or_404(User, username=username) + request.user.cancel_fr(user) + return HttpResponse() +@require_http_methods(['POST']) +@login_required +def user_friendrequest_delete(request, username): + user = get_object_or_404(User, username=username) + request.user.delete_friend(user) + return HttpResponse() + +@require_http_methods(['POST']) +@login_required +def user_addblock(request, username): + user = get_object_or_404(User, username=username) + user.make_block(request.user) + return HttpResponse() + +# Notifications work differently since the Openverse rebranding. (that we changed back) +# They used to respond with a JSON for values for unread notifications and messages. +# NOW we send the unread notifications in bytes, and then the unread messages in bytes, 2 bytes. The JS is using charCodeAt() +# Yes, this limits the amount of unread notifications and messages anyone could ever have, ever, to 255 +# Edit: Now, if a user has no unread messages OR unread notifications, no data is returned +def check_notifications(request): + if not request.user.is_authenticated: + #return JsonResponse({'success': True}) + return HttpResponse() + n_count = request.user.notification_count() + all_count = request.user.get_frs_notif() + n_count + msg_count = request.user.msg_count() + # Let's update the user's online status + request.user.wake(request.META['HTTP_CF_CONNECTING_IP']) + # Let's just now return the JSON only for Accept: HTML + if 'html' in request.META.get('HTTP_ACCEPT'): + return JsonResponse({'success': True, 'n': all_count, 'msg': msg_count}) + # And then return binary for anything else + # Wait a sec: if there's no new messages/notifications, send nothing back + if not all_count and not msg_count: + return HttpResponse(content_type='application/octet-stream') + # But, if there are, let's keep going + # Edge cases, anyone? (yes this isn't good but it works) + try: + binary_notifications = bytes([all_count]) + bytes([msg_count]) + except ValueError: + binary_notifications = bytes([255]) + bytes([255]) + return HttpResponse(binary_notifications, content_type='application/octet-stream') +@require_http_methods(['POST']) +@login_required +def notification_setread(request): + if request.GET.get('fr'): + update = request.user.read_fr() + else: + update = request.user.notification_read() + return HttpResponse() +@require_http_methods(['POST']) +@login_required +def notification_delete(request, notification): + if not request.method == 'POST': + raise Http404() + try: + notification = Notification.objects.get(to=request.user, unique_id=notification) + except Notification.DoesNotExist: + return HttpResponseNotFound() + remove = notification.delete() + return HttpResponse() + +#@silk_profile(name='Notifications view') +@login_required +def notifications(request): + notifications = request.user.get_notifications() + for notification in notifications: + notification.setup(request.user) + frs = request.user.get_frs_notif() + response = loader.get_template('closedverse_main/notifications.html').render({ + 'title': 'My notifications', + 'notifications': notifications, + 'frs': frs, + }, request) + request.user.notification_read() + request.user.notifications_clean() + return HttpResponse(response) +@login_required +def friend_requests(request): + friendrequests = request.user.get_frs_target() + notifs = request.user.notification_count() + return render(request, 'closedverse_main/friendrequests.html', { + 'title': 'My friend requests', + 'friendrequests': friendrequests, + 'notifs': notifs, + }) +@login_required +def user_search(request): + query = request.GET.get('query') + if not query or len(query) < 2: + raise Http404() + if request.GET.get('offset'): + users = User.search(query, 50, int(request.GET['offset']), request) + else: + users = User.search(query, 50, 0, request) + if users.count() > 49: + if request.GET.get('offset'): + next_offset = int(request.GET['offset']) + 50 + else: + next_offset = 50 + else: + next_offset = None + return render(request, 'closedverse_main/user-search.html', { + 'classes': ['search'], + 'query': query, + 'users': users, + 'next': next_offset, + }) + +@login_required +def activity_feed(request): + if request.GET.get('my'): + if request.GET['my'] == 'n': + request.session['activity_no_my'] = False + else: + request.session['activity_no_my'] = True + if request.GET.get('ds'): + if request.GET['ds'] == 'n': + request.session['activity_ds'] = False + else: + request.session['activity_ds'] = True + if not request.META.get('HTTP_X_REQUESTED_WITH') or request.META.get('HTTP_X_PJAX'): + post_community = Community.objects.filter(tags='activity').first() + return render(request, 'closedverse_main/activity-loading.html', { + 'title': 'Activity Feed', + 'community': post_community, + }) + if request.session.get('activity_no_my'): + has_friend = True + else: + has_friend = False + if request.session.get('activity_ds'): + has_distinct = True + else: + has_distinct = False + if request.GET.get('offset'): + posts = request.user.get_activity(20, int(request.GET['offset']), has_distinct, has_friend, request) + else: + posts = request.user.get_activity(20, 0, has_distinct, has_friend, request) + if posts.count() > 19: + if request.GET.get('offset'): + next_offset = int(request.GET['offset']) + 20 + else: + next_offset = 20 + else: + next_offset = None + + return render(request, 'closedverse_main/activity.html', { + 'posts': posts, + 'next': next_offset, + }) +@login_required +def messages(request): + if request.GET.get('online'): + if request.GET['online'] == 'n': + request.session['messages_online'] = False + else: + request.session['messages_online'] = True + if request.session.get('messages_online'): + online_only = True + else: + online_only = False + if request.GET.get('offset'): + friends = Friendship.get_friendships_message(request.user, 20, int(request.GET['offset']), online_only) + else: + friends = Friendship.get_friendships_message(request.user, 20, 0, online_only) + if len(friends) > 19: + if request.GET.get('offset'): + next_offset = int(request.GET['offset']) + 20 + else: + next_offset = 20 + else: + next_offset = None + return render(request, 'closedverse_main/messages.html', { + 'title': 'Messages', + 'friends': friends, + 'next': next_offset, + }) +@login_required +def messages_view(request, username): + user = get_object_or_404(User, username__iexact=username) + friendship = Friendship.find_friendship(request.user, user) + if not friendship: + return HttpResponseForbidden() + other = friendship.other(request.user) + conversation = friendship.conversation() + if request.method == 'POST': + # Wake + request.user.wake(request.META['HTTP_CF_CONNECTING_IP']) + new_post = conversation.make_message(request) + if not new_post: + return HttpResponseBadRequest() + if isinstance(new_post, int): + return json_response({ + 1: "Your message is too long ("+str(len(request.POST['body']))+" characters, 2200 max).", + 2: "The image you've uploaded is invalid.", + 3: "Sorry, but you're sending messages too fast.", + 6: "Not allowed.", + }.get(new_post)) + friendship.update() + return render(request, 'closedverse_main/elements/message.html', { 'message': new_post }) + else: + if request.GET.get('offset'): + messages = conversation.messages(request, 20, int(request.GET['offset'])) + else: + messages = conversation.messages(request, 20, 0) + if messages.count() > 19: + if request.GET.get('offset'): + next_offset = int(request.GET['offset']) + 20 + else: + next_offset = 20 + else: + next_offset = None + if request.META.get('HTTP_X_AUTOPAGERIZE'): + response = loader.get_template('closedverse_main/elements/message-list.html').render({ + 'messages': messages, + 'next': next_offset, + }, request) + else: + response = loader.get_template('closedverse_main/messages-view.html').render({ + 'title': 'Conversation with {0} ({1})'.format(other.nickname, other.username), + 'other': other, + 'conversation': conversation, + 'messages': messages, + 'next': next_offset, + }, request) + if not request.GET.get('offset'): + conversation.set_read(request.user) + return HttpResponse(response) +@require_http_methods(['POST']) +@login_required +def messages_read(request, username): + user = get_object_or_404(User, username=username) + friendship = Friendship.find_friendship(request.user, user) + if not friendship: + return HttpResponse() + conversation = friendship.conversation() + conversation.set_read(request.user) + return HttpResponse() + +@require_http_methods(['POST']) +@login_required +def message_rm(request, message): + message = get_object_or_404(Message, unique_id=message) + message.rm(request) + return HttpResponse() + +@login_required +def prefs(request): + profile = request.user.profile() + if request.method == 'POST': + if request.POST.get('a'): + profile.let_yeahnotifs = True + else: + profile.let_yeahnotifs = False + if request.POST.get('b'): + request.user.hide_online = True + else: + request.user.hide_online = False + profile.save() + request.user.save() + return HttpResponse() + lights = not (request.session.get('lights', False)) + arr = [profile.let_yeahnotifs, lights, request.user.hide_online] + return JsonResponse(arr, safe=False) + +@login_required +def post_list(request): + if not request.user.is_staff(): + return JsonResponse({"err": "Not authorized"}) + if not request.GET.get('s') or not request.GET.get('e'): + return JsonResponse({"err": "Start time required with 's' query param and end required with 'e' param (epoch)"}) + if not request.GET.get('l'): + return JsonResponse({"err": "Limit required via 'l' query param"}) + else: + limit = int(request.GET['l']) + if not request.GET.get('o'): + return JsonResponse({"err": "Offset required via 'o' query param"}) + else: + offset = int(request.GET['o']) + + if limit > 250: + return JsonResponse({"err": "Limit cannot be higher than 250"}) + + dateone = datetime.fromtimestamp(int(request.GET['s'])) + datetwo = datetime.fromtimestamp(int(request.GET['e'])) + iable = Post.objects.filter(created__range=(dateone, datetwo)).order_by('-created')[offset:offset + limit] + resparr = [] + + for post in iable: + resparr.append({ + 'id': post.id, + 'created': django.utils.dateformat.format(post.created, 'U'), + 'user': post.creator.username, + 'community': post.community_id, + 'feeling': post.feeling, + 'spoiler': post.spoils, + 'content': (post.body or None), + 'drawing': (post.drawing or None), + 'screenshot': (post.screenshot or None), + 'url': (post.url or None), + }) + + #return HttpResponse(msgpack.packb(resparr), content_type='application/x-msgpack') + return JsonResponse(resparr, safe=False) + +def user_tools(request, username): + if not request.user.is_authenticated: + raise Http404() + if not request.user.can_manage(): + raise Http404() + user = get_object_or_404(User, username__iexact=username) + profile = user.profile() + # check if the requesting user is allowed to change someone + if request.user.has_authority(user): + return HttpResponseForbidden() + seen_by = MetaViews.objects.filter(target_user=user).distinct().order_by('-id')[:10] + has_seen = MetaViews.objects.filter(from_user=user).distinct().order_by('-id')[:10] + + ''' + findattempt = LoginAttempt.objects.filter(user=user).order_by('-id')[:1] + for findattempt in findattempt: + accountmatch = LoginAttempt.objects.filter(addr__in=[findattempt.addr]) + ''' + + return render(request, 'closedverse_main/man/usertools.html', { + 'title': 'Admin tools', + 'user': user, + 'seen_by': seen_by, + 'has_seen': has_seen, + 'profile': profile, + 'min_lvl_metadata_perms': settings.min_lvl_metadata_perms, + }) + +def user_tools_meta(request, username): + if not request.user.is_authenticated: + raise Http404() + if not request.user.can_manage(): + raise Http404() + if not request.user.level >= settings.min_lvl_metadata_perms or not request.user.is_staff: + return HttpResponseForbidden() + user = get_object_or_404(User, username__iexact=username) + profile = user.profile() + # check if the requesting user is allowed to view someone + if request.user.has_authority(user): + return HttpResponseForbidden() + + # get the last time the page was opened + last_opened = MetaViews.objects.filter(target_user=user, from_user=request.user).order_by('-created').first() + # check if 24 hours have passed + try: + if not last_opened and (datetime.now() - last_opened.created).total_seconds() < 86400: + MetaViews.objects.create(target_user=user, from_user=request.user) + except: + MetaViews.objects.create(target_user=user, from_user=request.user) + + seen_by = MetaViews.objects.filter(target_user=user).distinct().order_by('-id')[:50] + #has_seen = MetaViews.objects.filter(from_user=user).distinct().order_by('-id')[:50] + log_attempt = LoginAttempt.objects.filter(user=user).order_by('-id')[:50] + accountmatch = User.objects.filter( + Q(addr=user.addr) | Q(addr=user.signup_addr) + ).exclude(username=user.username) + + ''' + findattempt = LoginAttempt.objects.filter(user=user).order_by('-id')[:1] + for findattempt in findattempt: + accountmatch = LoginAttempt.objects.filter(addr__in=[findattempt.addr]) + ''' + + return render(request, 'closedverse_main/man/usertoolsmeta.html', { + 'title': 'Admin tools', + 'user': user, + 'seen_by': seen_by, + 'accountmatch': accountmatch, + 'log_attempt': log_attempt, + 'profile': profile, + 'min_lvl_metadata_perms': settings.min_lvl_metadata_perms, + }) + + +def user_tools_set(request, username): + if request.method == 'POST': + user = get_object_or_404(User, username__iexact=username) + profile = user.profile() + if not request.user.is_authenticated: + raise Http404() + if not request.user.can_manage(): + raise Http404() + if request.user.has_authority(user): + return HttpResponseForbidden() + if user.is_me(request): + return json_response('Using the admin panel, you are able to view your own account, but not edit it.') + if request.POST.get('username') == "" or None: + return json_response('Username Invalid') + if not re.compile(r'^[A-Za-z0-9-._]{1,32}$').match(request.POST['username']) or not re.compile(r'[A-Za-z0-9]').match(request.POST['username']): + return json_response("The username either contains invalid characters or is too long (only letters + numbers, dashes, dots and underscores are allowed") + if request.POST.get('nickname') == "" or None: + return json_response('Nickname Invalid') + if request.POST.get('post_limit') == "" or None: + return json_response('Post limit Invalid') + postlimitint = int(request.POST.get('post_limit')) + if postlimitint <= -1 or postlimitint >= 999: + return json_response('Post limit Invalid') + + user.warned_reason = (request.POST.get('warned_reason') or None) + user.username = request.POST.get('username') + profile.comment = request.POST.get('profile_comment') + user.nickname = request.POST.get('nickname') + profile.limit_post = int(request.POST.get('post_limit')) + user.active = True if request.POST.get('active') is None else False + user.warned = False if request.POST.get('warned') is None else True + profile.let_freedom = True if request.POST.get('let_freedom') is None else False + profile.cannot_edit = False if request.POST.get('cannot_edit') is None else True + + purge_posts = False if request.POST.get('purge_posts') is None else True + purge_comments = False if request.POST.get('purge_comments') is None else True + restore_content = False if request.POST.get('restore_content') is None else True + + if restore_content == True: + if purge_comments or purge_posts: + return json_response('You cannot purge and restore at the same time.') + else: + Post.real.filter(creator=user, status=5, is_rm=True).update(is_rm=False, status=0) + Comment.real.filter(creator=user, status=5, is_rm=True).update(is_rm=False, status=0) + if purge_posts == True: + Post.real.filter(creator=user).update(is_rm=True, status=5) + if purge_comments == True: + Comment.real.filter(creator=user).update(is_rm=True, status=5) + + profile.save() + user.save() + AuditLog.objects.create(type=2, user=user, by=request.user, reasoning=request.POST) + return HttpResponse() + else: + raise Http404() + +@require_http_methods(['POST']) +# Disabling login requirement since it's in signup now. Regret? +#@login_required +def origin_id(request): + if not request.is_ajax(): + return HttpResponse("Please do not use this as an API!") + if not request.POST.get('a'): + return HttpResponseBadRequest() + mii = get_mii(request.POST['a']) + if not mii: + return HttpResponseBadRequest("The NNID provided doesn't exist.") + return HttpResponse(mii[0]) + +def set_lighting(request): + if not request.session.get('lights', False): + request.session['lights'] = True + else: + request.session['lights'] = False + return HttpResponse() +@require_http_methods(['POST']) +@login_required +def help_complaint(request): + if not request.POST.get('b'): + return HttpResponseBadRequest() + if len(request.POST['b']) > 5000: + # I know that concatenating like this is a bad habit at this point, or I should simply just use formatting, but.. + return json_response('Please do not send that many characters ('+str(len(request.POST['b']))+' characters)') + if Complaint.has_past_sent(request.user): + return json_response('Please do not send complaints that quickly (very very sorry, but there\'s a 5 minute wait to prevent spam)') + save = request.user.complaint_set.create(type=int(request.POST['a']), body=request.POST['b'], sex=request.POST.get('c', 2)) + return HttpResponse() +@login_required +def server_stat(request): + all_stats = { + 'communities': Community.objects.filter().count(), + 'posts': Post.objects.filter().count(), + 'users': User.objects.filter().count(), + 'complaints': Complaint.objects.filter().count(), + 'comments': Comment.objects.filter().count(), + 'messages': Message.objects.filter().count(), + 'yeahs': Yeah.objects.filter().count(), + 'notifications': Notification.objects.filter().count(), + 'follows': Follow.objects.filter().count(), + 'friendships': Friendship.objects.filter().count(), + } + if request.GET.get('json'): + return JsonResponse(all_stats) + return render(request, 'closedverse_main/help/stats.html', all_stats) +@login_required +def my_data(request): + if not request.user.is_authenticated: + return Http404 + user = request.user + log_attempt = LoginAttempt.objects.filter(user=user).order_by('-id')[:10] + history = ProfileHistory.objects.filter(user=user).order_by('-id')[:10] + creation_date = user.created.date() + datenow = date.today() + age = datenow - creation_date + return render(request, 'closedverse_main/help/my-data.html', { + 'user': user, + 'log_attempt': log_attempt, + 'history': history, + 'posts': Post.objects.filter(creator=user).count(), + 'comments': Comment.objects.filter(creator=user).count(), + 'messages': Message.objects.filter(creator=user).count(), + 'yeahs': Yeah.objects.filter(by=user).count(), + 'notifications': Notification.objects.filter(to=user).count(), + 'age': round(age.days), + 'title': 'My data', + }) +@login_required +def change_password(request): + if not request.user.is_authenticated: + raise Http404() + user = request.user + return render(request, 'closedverse_main/change-password.html', { + 'user': user, + 'title': 'Change Password', + }) +def change_password_set(request): + if request.method == 'POST': + if not request.user.is_authenticated: + raise Http404() + user = request.user + old = request.POST.get('old-password') + new = request.POST.get('new-password') + confirm = request.POST.get('confirm-password') + # make sure they are filled out + # a bit inefficient but who cares? + if not old: + return json_response('Please specify your old password.') + if not new: + return json_response('Please specify your new password.') + if not confirm: + return json_response('Please specify your new password again.') + if not new == confirm: + return json_response('Passwords do not match') + if old == new: + return json_response('The old password and new password can\'t be the same.') + if not user.check_password(old): + return json_response('The old password specified does not match the user\'s password. Enter the password you use as of right now.') + # do the length check + if len(new) < settings.minimum_password_length: + return json_response('The new password must be at least ' + str(settings.minimum_password_length) + ' characters long.') + # do the thing + user.set_password(new) + user.save() + return json_response("Success! Now you can log in with your new password!") + else: + raise Http404 + +def whatads(request): + return render(request, 'closedverse_main/help/whatads.html', {'title': 'What are user-generated ads?'}) +@login_required +def active_clones(request): + return render(request, 'closedverse_main/help/Active_clones.html', {'title': 'Active Clones'}) +def help_approval(request): + return render(request, 'closedverse_main/help/help_approval.html', {'title': 'Approval system'}) +def help_rules(request): + return render(request, 'closedverse_main/help/rules.html', {'title': 'Cedar Three Rules', 'age': settings.age_allowed}) +def help_faq(request): + return render(request, 'closedverse_main/help/faq.html', {'title': 'FAQ'}) +def help_legal(request): + if not settings.PROD: + return HttpResponseForbidden() + return render(request, 'closedverse_main/help/legal.html', {}) +def help_contact(request): + return render(request, 'closedverse_main/help/contact.html', {'title': "Contact Info"}) +def help_why(request): + return render(request, 'closedverse_main/help/why.html', {'title': "Why even join Cedar Three?"}) +def help_login(request): + return render(request, 'closedverse_main/help/login-help.html', {'title': "Login help"}) + +def csrf_fail(request, reason): + return HttpResponseBadRequest("The CSRF check has failed.\nYour browser might not support cookies, or you need to refresh.") +def server_err(request): + return HttpResponseServerError(traceback.format_exc(), content_type='text/plain') diff --git a/forbidden.json b/forbidden.json new file mode 100644 index 0000000..41b42e6 --- /dev/null +++ b/forbidden.json @@ -0,0 +1,3 @@ +[ + +] diff --git a/girls.json b/girls.json new file mode 100644 index 0000000..1b6c8fa --- /dev/null +++ b/girls.json @@ -0,0 +1,113 @@ +[ +"Abigail", +"Addison", +"Alexa", +"Alexis", +"Alice", +"Alyssa", +"Amelia", +"Amy", +"Anna", +"Annabelle", +"Aubrey", +"Audrey", +"Aurelie", +"Aurora", +"Autumn", +"Ava", +"Avery", +"Blake", +"Brooke", +"Brooklyn", +"Callie", +"Charlie", +"Charlotte", +"Chloe", +"Claire", +"Clara", +"Eleanor", +"Elena", +"Elisabeth", +"Elise", +"Elizabeth", +"Ella", +"Ellie", +"Eloise", +"Emilia", +"Emilie", +"Emily", +"Emma", +"Eva", +"Eve", +"Evelyn", +"Everly", +"Florence", +"Gabrielle", +"Georgia", +"Hannah", +"Hazel", +"Isabella", +"Isabelle", +"Isla", +"Ivy", +"Jade", +"Jeanne", +"Jessie", +"Julie", +"Juliette", +"Kate", +"Laura", +"Layla", +"Leah", +"Leanne", +"Lexie", +"Lila", +"Lillian", +"Lily", +"Lucy", +"Luna", +"Mackenzie", +"Madelyn", +"Madison", +"Maely", +"Maika", +"Malika", +"Maria", +"Maya", +"Megan", +"Melodie", +"Mia", +"Mila", +"Mya", +"Naomi", +"Natalie", +"Nora", +"Norah", +"Nova", +"Olivia", +"Paige", +"Paisley", +"Penelope", +"Peyton", +"Piper", +"Quinn", +"Riley", +"Rosalie", +"Rose", +"Ruby", +"Samantha", +"Sara", +"Sarah", +"Scarlett", +"Sienna", +"Simone", +"Sophia", +"Sophie", +"Stella", +"Taylor", +"Victoria", +"Violet", +"Willow", +"Zoe", +"Zoey" +] \ No newline at end of file diff --git a/maintenance/__init__.py b/maintenance/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/maintenance/__pycache__/__init__.cpython-310.pyc b/maintenance/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000..92a731a Binary files /dev/null and b/maintenance/__pycache__/__init__.cpython-310.pyc differ diff --git a/maintenance/__pycache__/admin.cpython-310.pyc b/maintenance/__pycache__/admin.cpython-310.pyc new file mode 100644 index 0000000..eb24510 Binary files /dev/null and b/maintenance/__pycache__/admin.cpython-310.pyc differ diff --git a/maintenance/__pycache__/apps.cpython-310.pyc b/maintenance/__pycache__/apps.cpython-310.pyc new file mode 100644 index 0000000..5cfd587 Binary files /dev/null and b/maintenance/__pycache__/apps.cpython-310.pyc differ diff --git a/maintenance/__pycache__/middleware.cpython-310.pyc b/maintenance/__pycache__/middleware.cpython-310.pyc new file mode 100644 index 0000000..2162189 Binary files /dev/null and b/maintenance/__pycache__/middleware.cpython-310.pyc differ diff --git a/maintenance/__pycache__/models.cpython-310.pyc b/maintenance/__pycache__/models.cpython-310.pyc new file mode 100644 index 0000000..0e35ec8 Binary files /dev/null and b/maintenance/__pycache__/models.cpython-310.pyc differ diff --git a/maintenance/admin.py b/maintenance/admin.py new file mode 100644 index 0000000..13be29d --- /dev/null +++ b/maintenance/admin.py @@ -0,0 +1,6 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.contrib import admin + +# Register your models here. diff --git a/maintenance/apps.py b/maintenance/apps.py new file mode 100644 index 0000000..4262aa8 --- /dev/null +++ b/maintenance/apps.py @@ -0,0 +1,8 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.apps import AppConfig + + +class MaintenanceConfig(AppConfig): + name = 'maintenance' diff --git a/maintenance/middleware.py b/maintenance/middleware.py new file mode 100644 index 0000000..423973d --- /dev/null +++ b/maintenance/middleware.py @@ -0,0 +1,37 @@ +from django.shortcuts import render +from closedverse_main.models import User +from django.conf import settings + +in_maintenance = False + +class MaintenanceManagement(): + """Maintenance Management""" + + def __init__(self, get_response): + self.get_response = get_response + + def __call__(self, request): + response = self.get_response(request) + current_url = request.path_info + SURL = settings.STATIC_URL + + if(in_maintenance): + if SURL in current_url: + return response + else: + return render(request, 'mv.html') + else: + return response + ''' + try: + if SURL in current_url: + return response + elif not(User.is_staff(request.user)): + return render(request, 'mv.html') + else: + return response + except: + return render(request, 'mv.html') + else: + return response +''' \ No newline at end of file diff --git a/maintenance/models.py b/maintenance/models.py new file mode 100644 index 0000000..1dfab76 --- /dev/null +++ b/maintenance/models.py @@ -0,0 +1,6 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import models + +# Create your models here. diff --git a/maintenance/templates/maintenance.html b/maintenance/templates/maintenance.html new file mode 100644 index 0000000..d398d89 --- /dev/null +++ b/maintenance/templates/maintenance.html @@ -0,0 +1 @@ +

    down for a few fixing stuffs rn brb i guess

    \ No newline at end of file diff --git a/maintenance/templates/msg.html b/maintenance/templates/msg.html new file mode 100644 index 0000000..0fa8b4e --- /dev/null +++ b/maintenance/templates/msg.html @@ -0,0 +1,5 @@ +{% extends "closedverse_main/layout.html" %} +{% load static %} +{% load closedverse_tags %}{% block main-body %} +{% nocontent "Website SUSpended by Cloudflare for (extreme) bullying and harassment!" %} +{% endblock %} \ No newline at end of file diff --git a/maintenance/templates/mv.html b/maintenance/templates/mv.html new file mode 100644 index 0000000..9d82359 --- /dev/null +++ b/maintenance/templates/mv.html @@ -0,0 +1,42 @@ + + +Cedar + + + + + + + + + +
    +
    +
    +
    + +

    Thank you to everyone who used Cedar! Cedar service was hacked.

    + +
    + + + +

    This mosaic was created with handwritten posts from Miiverse users. You can enlarge the image by clicking on it.

    +
    +
    +

    For users who requested their downloadable post history:

    +
      +
    • I have the Cedar database. Not even Cedar was safe from us!
    • +
    • Death to all Miiverse clones!
    • +{% if request.user.is_authenticated %}
    • {{ request.user.username }}, You're next!
    • {% endif %} +
    +
    +
    +
    +
    +
    + + + + + \ No newline at end of file diff --git a/maintenance/tests.py b/maintenance/tests.py new file mode 100644 index 0000000..5982e6b --- /dev/null +++ b/maintenance/tests.py @@ -0,0 +1,6 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.test import TestCase + +# Create your tests here. diff --git a/maintenance/views.py b/maintenance/views.py new file mode 100644 index 0000000..e784a0b --- /dev/null +++ b/maintenance/views.py @@ -0,0 +1,6 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.shortcuts import render + +# Create your views here. diff --git a/manage.py b/manage.py new file mode 100644 index 0000000..82a0e58 --- /dev/null +++ b/manage.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python +import os +import sys + +if __name__ == "__main__": + os.environ.setdefault("DJANGO_SETTINGS_MODULE", "closedverse.settings") + try: + from django.core.management import execute_from_command_line + except ImportError: + # The above import may fail for some other reason. Ensure that the + # issue is really that Django is missing to avoid masking other + # exceptions on Python 2. + try: + import django + except ImportError: + raise ImportError( + "Couldn't import Django. Are you sure it's installed and " + "available on your PYTHONPATH environment variable? Did you " + "forget to activate a virtual environment?" + ) + raise + execute_from_command_line(sys.argv) diff --git a/static/blueness.css b/static/blueness.css new file mode 100644 index 0000000..50d6a3e --- /dev/null +++ b/static/blueness.css @@ -0,0 +1,536 @@ +#sidebar-profile-body .nick-name, .news-list .nick-name, .list-content-with-icon-and-text .nick-name a, .user-name a { + color: #fff; +} +.post-permalink-button:hover, .favorite-community-link.symbol, .trigger:active, #wrapper, #reply-content button.more-button:hover, .spoiler-button:hover, #sidebar-profile-status, #guide-menu:hover, .community-eyecatch-info:hover, #community-favorite:hover, #reply-content .list > li.my:hover, .big-button:hover, .sidebar-setting a:hover, .multi-timeline-post-list .post.hidden .screenshot-container, .multi-timeline-post-list .post .screenshot-container, .trigger:hover, .textarea-container .community-container, .post-form-album-content, .admin-messages .post.my, #identified-user-banner:hover, .sidebar-setting a.selected, .sidebar-container h4 a:hover, #empathy-content, .sidebar-profile .profile-comment, .post-list .recent-reply-content, .community-name .owner, .post-list-heading-button, .topic-title-input, .textarea, .yeah-button, .hidden-content-button, .community-description { + background-color: var(--theme-darker, #161626) !important; +} +body, .favorite-community-link.symbol:hover, .post.hidden:hover, .filtering-label, .post-list .recent-reply-content .recent-reply:hover, .post-list .recent-reply-content .recent-reply-read-more-container:hover, .arrow-button:hover, #post-diary-window, .spoiler-button, .textarea-line, .dialog .window-body, .digest .post .icon-container, .icon-container .icon, #sidebar-profile-body .icon, .sidebar-container, .post .community-container, #global-menu #global-my-menu, .guest#post-permlink .guest-message p, form.search input[type="text"], form.search input[type="submit"], .warning-content, .community-card-list > li, .post-permalink-button { + background-color: var(--theme-dark, #202030) !important; +} +body, .community-title, #footer-selector li button, #footer-inner p a, .post-list.empty, .album-list.empty, .list > .no-content, .no-content, .community-game-title, .arrow-button, .post .hidden-content button, .post .deleted-message button, .post .hidden_as_violation button, .post .hidden-content a, .post .deleted-message a, .post .hidden_as_violation a, .post .community-container-heading a, .list-content-with-icon-and-text .text, .list-content-with-icon-and-text .id-name, #sidebar-profile-body .id-name, #post-diary-window p, .sidebar-container h4 a, .post-list .empathized-user-name, .post-list .acted-user-name, .post-list .recommend-user-title, .headline h2, #post-content .post-content-text, #global-menu li a, #global-menu li button, #sidebar-profile-status .number, .community-name, .community-name a, .community-list .title, .sidebar-setting .sidebar-menu-relation:before, #reply-content button.more-button, .sidebar-profile .profile-comment, .guest#post-permlink .guest-message p, form.search input[type="text"], .community-name .owner, .post-list-heading-button, .topic-title-input, .textarea, .yeah-button, .post-permalink-button, .hidden-content-button, .community-description { + color: #ccc !important; +} +input[type=text], input[type=password], input[type=email], input:not([type]), select { + background-color: var(--theme-darker, #161626); + color: #fff; + border: 1px solid #000; + box-shadow: inset 0 2px 6px rgb(0 0 0 / 12%), 0 1px 0 var(--theme-dark, #211e1e); +} +.guest .guest-message p { + color: #ccc; + background: #1b1b1b; +} +.guest-message .arrow-button { + border-top: 1px solid #000 !important; +} +.delete { + color: #ccc; +} +.delete:hover { + color: var(--theme-dark, #202030) !important; +} +.sidebar-container .button { + margin: 5px auto 20px; + width: 80%; + box-shadow: -1px 1px 2px #00000036; +} +.spoiler-button, .textarea-line { + border: 1px solid #000; + box-shadow: 0 1px 0 rgba(0, 0, 0, 0); +} +.file-button-container, .file-button { + background-color: var(--theme-darker, #151313) !important; + color: #fff; +} +.post-form-album-content { + border: 1px solid #000; +} +.post-form-album-content:before { + border-bottom-color: #000; +} +#sidebar-cover { + border-bottom: 1px solid #000; +} +.post-list-heading-button { + border: 1px solid #000; + border-bottom-color: #000; +} +#global-menu li.selected a { + color: var(--theme, #5ac800) !important; +} +.follow-done-button:after { + content: 'ing'; +} +button.unfollow-button.button.symbol:after { + content: 'ing'; +} +.filtering-label .button { + border-left: 1px solid #000; +} +.mask { + background: rgba(0, 0, 0, 0.6); +} +.post-list-heading-button:hover { + background: rgb(35, 35, 35); + box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0); +} +.topic-title-input, .textarea { + border: 1px solid #000; + box-shadow: inset 0 2px 6px rgba(0,0,0,0.12), 0 1px 0 var(--theme-dark, #211e1e); +} +input[type="number"] { + background: var(--theme-dark, #202030); + border: 1px solid #000; + color: #fff; +} +.hidden-content-button { + border: 1px solid #000; + border-bottom-color: #000; + box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0); +} +.hidden-content-button:hover { + box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0), 0 2px 4px rgba(0,0,0,0.1); +} +.yeah-button { + border: 1px solid #000; + border-bottom-color: #000; + box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0); +} +.yeah-button:hover { + background: rgb(35, 35, 35); + box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0); +} +.yeah-button:disabled:hover { + background: var(--theme-darker, #161626); + box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0); +} +.setting-form li { + border-bottom: 1px solid #000; +} +form.search input[type="submit"] { + color: #646464; +} +.sidebar-setting .sidebar-menu-relation:before { + color: #000; +} +.community-list-cover { + border-bottom: 1px solid #000; +} +.simple-wrapper.simple-wrapper-content #wrapper { + margin: 0px auto 0; +} +.simple-wrapper.simple-wrapper-content #main-body { + border: 1px solid rgba(21, 20, 20, 0) !important; +} +.warning-content { + border: 1px solid rgb(0, 0, 0); +} +.community-eyecatch-balloon { + color: #CCCCCC; + background: rgb(32, 32, 32); +} +.community-eyecatch-balloon:after { + border-color: transparent rgb(32, 32, 32) rgba(0, 0, 0, 0) transparent; +} +.post-body .multi-timeline-post-list .post-subtype-artwork .hidden-content { + background-color: var(--theme-darker, #161626); + border-top: 1px dashed #000; +} +.community-list .siblings { + color: #969696; + border-left: 1px solid #000; +} +.post-list > .post-list-outline { + border-top: 1px solid rgb(0, 0, 0); +} +#main-body > .no-content { + background: var(--theme-dark, #202030) none repeat scroll 0% 0%; + border: 1px solid #000; + box-shadow: 0px 1px 0px #000; +} +.notify { + background: #424242 !important; +} +.tab2 a, .tab3 a { + background-color: var(--theme-dark, #202030); + background: -webkit-gradient(linear, left top, left bottom, from(var(--theme-dark, #202030)), to(var(--theme-dark, #202030)), color-stop(0.5, var(--theme-dark, #202030))); + background: -webkit-linear-gradient(top, var(--theme-dark, #202030) 0%, var(--theme-dark, #202030) 50%, var(--theme-dark, #202030) 100%); + background: -moz-linear-gradient(top, var(--theme-dark, #202030) 0%, var(--theme-dark, #202030) 50%, var(--theme-dark, #202030) 100%); + background: -ms-linear-gradient(top, var(--theme-dark, #202030) 0%, var(--theme-dark, #202030) 50%, var(--theme-dark, #202030) 100%); + background: -o-linear-gradient(top, var(--theme-dark, #202030) 0%, var(--theme-dark, #202030) 50%, var(--theme-dark, #202030) 100%); + background: linear-gradient(top, var(--theme-dark, #202030) 0%, var(--theme-dark, #202030) 50%, var(--theme-dark, #202030) 100%); + color: #CCCCCC; + border: 1px solid #000; + border-bottom-color: #000; +} +.album-dialog .album-close-button { + background: -webkit-linear-gradient(bottom, var(--theme-dark, #202030), var(--theme-dark, #202030)); + border: 1px solid #000000; +} +.tab2 a:hover, .tab3 a:hover { + background: var(--theme-darker, #161626); + -webkit-box-shadow: inset 0 1px 0 var(--theme-darker, #161626), 0 2px 4px rgba(22, 22, 22, 0); + -moz-box-shadow: inset 0 1px 0 var(--theme-darker, #161626), 0 2px 4px rgba(22, 22, 22, 0); + -ms-box-shadow: inset 0 1px 0 var(--theme-darker, #161626), 0 2px 4px rgba(22, 22, 22, 0); + -o-box-shadow: inset 0 1px 0 var(--theme-darker, #161626), 0 2px 4px rgba(22, 22, 22, 0); + box-shadow: inset 0 1px 0 var(--theme-darker, #161626), 0 2px 4px rgba(22, 22, 22, 0); +} +.tab2 > a:first-child, .tab3 > a:first-child { + border-left: 1px solid #000; +} +.community-eyecatch-infoicon { + border: 1px solid #000; +} +.open-topic-post-existing-warning { + background-color: rgb(32, 32, 32); +} +.open-topic-post-existing-warning .content { + border: 2px solid #E8316E; +} +.list .toggle-button .button:before { + color: #CCC; + width: 30px; + height: 34px; + border: 1px solid #000; + border-bottom-color: #000; + box-shadow: inset 0 0.5px 0 rgba(0, 0, 0, 0.9); +} + +.topic-categories-container { + background: var(--theme-dark, #202030); + -webkit-box-shadow: 0 1px 0 var(--theme-dark, #202030); + -moz-box-shadow: 0 1px 0 var(--theme-dark, #202030); + -ms-box-shadow: 0 1px 0 var(--theme-dark, #202030); + -o-box-shadow: 0 1px 0 var(--theme-dark, #202030); + box-shadow: 0 1px 0 var(--theme-dark, #202030); +} +.button { + border: 1px solid rgb(0, 0, 0); + border-bottom-color: #000; + background: var(--theme-dark, #202030); + color: #ccc; + box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0); +} +.button:hover { + background: var(--theme-darker, #161626); + box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0); +} +.post-list a.another-posts { + background-color: rgba(0, 0, 0, 0.04); + border-top: 1px solid #000; + color: #ccc; +} +.sidebar-setting li { + border-top: 1px solid #000; +} +.community-list .icon-container .icon { + border: 1px solid #000; +} +#sidebar-profile-status li a > span { + display: block; + border-right: 1px solid var(--theme-dark, #202030); +} +#global-menu li#global-menu-mymenu .icon-container img { + border: 1px solid #000; + width: 36px; + height: 36px; +} +#global-menu #global-my-menu { + border: 2px solid #000; +} +#global-menu #global-my-menu:before { + border-color: transparent; + border-bottom-color: #000; +} +#global-menu #global-my-menu:after { + border-color: transparent; + border-bottom-color: var(--theme-dark, #202030); +} +.list-content-with-icon-and-text li { + border-top: 1px solid #000; +} +.filter-button { + color: #ccc; + background-color: rgb(32, 32, 32); + border: 1px solid rgb(0, 0, 0); +} +.filter-button:hover { + background-color: rgba(22,22,22,1); + color: #696666; +} +#community-eyecatch-main > div { + background: var(--theme-dark, #202030); + border: 1px solid rgb(0, 0, 0); +} +#guide-menu { + background: var(--theme-dark, #202030); + border: 1px solid rgb(0, 0, 0); +} +#guide-menu .arrow-button { + border-top: 1px solid #000; +} +#community-favorite { + background: var(--theme-dark, #202030); + border: 1px solid rgb(0, 0, 0); +} +#identified-user-banner { + background: var(--theme-dark, #202030); + border: 1px solid rgb(0, 0, 0); +} +.digest .post .body { + background: var(--theme-dark, #202030); + border: 1px solid rgb(0, 0, 0); +} +.digest .post .body:after { + border-color: transparent var(--theme-dark, #202030) transparent transparent; +} +.digest .post .body:before { + border-color: transparent #000 transparent transparent; +} +.digest .post .community-container { + border: 1px solid #000; + border-top: 1px solid #000; +} +.accepting > span { + background-color: rgba(255, 247, 179, 0); + color: #e33ea2; +} +.accepting > span:before { + color: #f90047; +} +.not-accepting > span { + background-color: rgba(255, 247, 179, 0); + color: #969696; +} +.not-accepting > span:before { + color: #FF0000; +} +span.owner-label { + color: var(--theme, #5ac800); +} +.guest#post-permlink .guest-message .arrow-button { + border-top: 1px solid #000; +} +.community-card-list > li { + border: 1px solid rgba(0, 0, 0, 0.1); + border-color: #000; +} +#sub-body { + background: var(--theme-dark, #202030); + border-bottom: 2px solid #000; + box-shadow: 0 0 15px #000; +} +.content-loading-window.activity-feed img { + visibility: hidden; + width: 22px; + height: 22px; +} +.post-form-album-content:after { + border-bottom-color: #1a1a1a; +} +.pager-button { + background: #1A1A1A; +} +.pager-button .back-button { + border-right: 1px solid #000; +} + +.pager-button .next-button { + border-left: 1px solid #000; +} +.pager-button .button { + color: #969696; + background-color: #313131; +} +.guest #about { + background: var(--theme-dark, #202030); + border-bottom: 2px solid #000; +} +.guest .guest-terms-link:hover { + background-color: #E64E25; +} +.tutorial-window { + background-color: rgb(32, 32, 32); +} +.post-list .recent-reply-content { + border-top: 1px solid #000; +} +.post-list .recent-reply-content .recent-reply-read-more-container { + border-bottom: 1px solid #000; +} +h2.label-diary_post, h2.label-diary { + border-bottom: 3px solid #04c9db; + color: #00b7d8; +} +h2.label-artwork_post, h2.label-artwork { + border-bottom: 3px solid #fcc735; + color: #ffae00; +} +h2.label-topic_post, h2.label-topic { + border-bottom: 3px solid #e8316e; + color: #e8316e; +} +.post-list-outline { + background: var(--theme-dark, #202030); + border: 1px solid rgb(0, 0, 0); + -webkit-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -ms-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -o-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); +} +.post .community-container { + border-bottom: 1px solid #000; +} +.list > li, .list > div, .list > a, .list > span { + border-top: 1px solid #000; +} +.list > li span { + padding: 5px!important; +} +#sidebar-community .sidebar-setting a { + border-top: 1px solid #000; +} +.sidebar-container { + border: 1px solid rgb(0, 0, 0); + -webkit-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -ms-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -o-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); +} +.big-button { + background: #fff; + border: 1px solid rgb(0, 0, 0); + -webkit-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -ms-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -o-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + background-color: var(--theme-dark, #202030); + color: #ccc; +} +form.search { + background: #fff; + border: 2px solid #000; +} +.sidebar-setting a { + color: #ccc; + border-top: 1px solid #000; +} +.user-data .note { + border-bottom: 2px dashed var(--theme-darker, #161626); + color: #ccc; +} +.user-data td, th { + background: var(--theme-darker, #161626); + color: #ccc; + border: 1px var(--theme, #535374) solid; + font-size: 11px; + border-spacing: 5px; +} +#footer { + background-color: #1d1d2d; +} +#sidebar-profile-body .icon { + border: 1px solid #000; +} +.icon-container .icon { + border: 1px solid #000; +} +.digest .post .icon-container { + border: 1px solid rgb(0, 0, 0); +} +#empathy-content .post-permalink-feeling-icon img { + border: 1px solid #000; + background: transparent; +} +#empathy-content.none + .buttons-content { +border-top: 1px solid #222; +} +#empathy-content { + border: 1px solid #000; +} +#reply-content button.more-button { + border: #000; +} +.messages .post.my, +#reply-content .list .my { + background-color: var(--theme-darker, #191828); +} +#reply-content .info-reply-list + button.more-button, #reply-content .more-button + .more-button { + border-top: 1px solid #000; +} +.dialog .window-body { + border: 1px solid #050207; +} +#post-form + #community-post-list .list > div:first-child { + border-top: 1px solid #000; +} +.user-community .icon-container .user-icon { + background: rgba(255, 255, 255, 0); + border: 1px solid rgba(221, 221, 221, 0); +} +#wrapper, #image-header-content { +background: var(--theme, #2f2f58) var(--background, url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAEpElEQVR4nO2dW3LiQBAEE8kmOPae2w7j/ZjFa0CAHi1N16jqABMZlf2pKB1Op9MfgnI8Hun7Puq5q5zPZz4+Pvj+/g55z6yFs4t6zIWWqLBeOEMOwIWWqLD+5lx8AC60RIX1lnPRAbjQEhXWIc7ZB+BCS1RYH3HOOgAXWqLC+oxz8gG40BIV1leckw7AhZaosI7hHH0ALrREhXUs56gDcKElKqxTOF8egAstUWGdyvn0AFxoiQrrHM6HB+BCS1RY53IOHoALLVFhXcJ5dwAutESFdSnn1QG40BIV1gjOnwNwoSUqrFGcHbjQS1RYIzk7F1qiwhrN2e29UNBhXYPzLeSlm3x9ffH5+Zm+UNi3/L7v4z4KvcTydeTDwk/CbmP5WvIh8AAsX08+BB2A5WvKh4ADOJ/Plh+cLTkXHYBKoaDDujXn7ANQKRR0WGtwzjoAlUJBh7UW5+QDUCkUdFhrck46AJVCQYe1NufoA6gNOiUqrBk4Rx1ABtCxUWHNwvnyALKAjokKaybOpweQCfRVVFizcT48gGygz6LCmpFz8AAygj6KCmtWzrsDyAo6FBXWzJxXB5AZ9DYqrNk5fw4gO+jvqLAqcHagAXqJCqsKZ6cCCjqlqnACdCqgKqWqcEL5kqtTAFUpVYUTinxPxQZGhRP+y4eAbwItX4cTruWDp2IXR4UT7uWDp2IXRYUThuWDp2JnR4UTHssHT8XOigonPJcPnoqdHBVOeC0fPBU7KSqcME4+eCp2dFQ4Ybx88FTsqKhwwjT54KnYl1HhhOnywVOxT6PCCfPkg6diH0aFE+bLB0/FDkaFE5bJB0/F3kWFE5bLB0/FXkWFE2Lkg6dif6LCCXHywVOxgA4nxMo/HA6eilXhhHj5x+MxfikUdEpV4YSV5Hdd/AGolKrCCevJh+CpWJVSVThhXfkQeAAqpapwwvryIegAVEpV4YRt5EPQVKxCqSqcsJ182MlUrAonbCsfdjAVq8IJ28uHxqdiVTihjnxoeCpWhRPqyYdGp2JVOKGufGhwKlaFE+rLh8amYlU4IYd8aGgqVoUT8siHRqZiVTghl3xoYCpWhRPyyQfxqVgVTsgpH4SnYlU4Ia98EJ2KVeGE3PJBcCpWhRPyywexqVgVTtCQD/Cm8t9fy1/l+106y4+NknyJqVjLX09++qlYy19XPiSeirX89eVD0qlYy99GPiScirX87eRDsqlYy99WPiSairX87eVDkqlYy68jHxJMxVp+PflQeSrW8uvKh4pTsZZfXz5Umoq1/BzyocJUrOXnkQ8bT8Vafi75sOFUrOXnkw8bTcVafk75sMFUrOXnlQ8rT8Vafm75sOJUrOXnl7/aVKzla8h/f3/f71IoWH7f97yFvPgvlq8hf5WpWMvXkw87WwoFyw+firV8Xfmwk6VQsPzwqVjL15cPjS+FguWHT8VafjvyodGlULD88KlYy29PPjS2FAr1C52SDKzNLIVCjkLHJgtrE0uhkKfQMcnEKr8UCrkKfZVsrNJLoZCv0GfJyCq7FAo5C32UrKySS6GQt9ChZGaVWwqF3IXeJjur1FIo5C/0dxRYO8vfr3yAv3rECG2I4F0DAAAAAElFTkSuQmCC')) !important; +} +#empathy-content:before { + background: url(/s/img/rks.png) no-repeat 0 0 !important; +} +.community-switcher .community-switcher-tab { + background-color: var(--theme-dark, #202030); + background: -webkit-gradient(linear, left top, left bottom, from(var(--theme-dark, #202030)), to(var(--theme-dark, #202030)), color-stop(0.5, var(--theme-dark, #202030))); + background: -webkit-linear-gradient(top, var(--theme-dark, #202030) 0%, var(--theme-dark, #202030) 50%, var(--theme-dark, #202030) 100%); + background: -moz-linear-gradient(top, var(--theme-dark, #202030) 0%, var(--theme-dark, #202030) 50%, var(--theme-dark, #202030) 100%); + background: -ms-linear-gradient(top, var(--theme-dark, #202030) 0%, var(--theme-dark, #202030) 50%, var(--theme-dark, #202030) 100%); + background: -o-linear-gradient(top, var(--theme-dark, #202030) 0%, var(--theme-dark, #202030) 50%, var(--theme-dark, #202030) 100%); + background: linear-gradient(top, var(--theme-dark, #202030) 0%, var(--theme-dark, #202030) 50%, var(--theme-dark, #202030) 100%); + border: 1px solid black; + color: #fff; +} +.community-switcher .community-switcher-tab:first-of-type { + border-left: 1px solid black; +} +code, +pre { +border: 1px solid #404050 !important; +color: #CCC !important; +background-color: var(--theme-darker, #191828) !important; +} +@media screen and (max-width: 980px) { + #global-menu #global-menu-list > ul > li > a:hover { + background-color: #333 !important; + } + #global-menu #global-menu-list > ul > li#global-menu-my-menu button:hover { + background-color: #333 !important; + } +} +@media screen and (max-width: 640px) { + .list .toggle-button .button:before { + height: 28px !important; + } +} +html::-webkit-scrollbar, +textarea::-webkit-scrollbar { + width: 10px; + height: 10px; +} +html::-webkit-scrollbar-thumb, +textarea::-webkit-scrollbar-thumb { +background-color: #3c3c3c; +} +html::-webkit-scrollbar-track, +textarea::-webkit-scrollbar-track { +background: #000; +} +html::-webkit-scrollbar-corner, +textarea::-webkit-scrollbar-corner { +background: transparent; +} + +/* +CodyMKW completely made this dark theme, please show him love. +Seriously, he made the entire thing at the beginning of the project and now it's here to stay. +I modified this to make it actually suitable for this, and completing the elements and such. +oh also PF2M did some Find+Replace work to recolor the background, and then CodyMKW made the background again +*/ diff --git a/static/closedverse.css b/static/closedverse.css new file mode 100644 index 0000000..5a7af44 --- /dev/null +++ b/static/closedverse.css @@ -0,0 +1,9505 @@ +@charset 'UTF-8'; +@font-face { + font-family: 'MiiverseSymbols'; + src: url('/s/img/font/Symbols.eot'); + src: url('/s/img/font/Symbols-IEFix.eot') format('embedded-opentype'), url('/s/img/font/Symbols.woff') format('woff'), url('/s/img/font/Symbols.ttf') format('truetype'); + font-weight: normal; + font-style: normal; +} +@font-face { + font-family: 'MiiverseSymbols'; + src: url('/s/img/font/Symbols.eot'); + src: url('/s/img/font/Symbols-IEFix.eot') format('embedded-opentype'), url('/s/img/font/Symbols.woff') format('woff'), url('/s/img/font/Symbols.ttf') format('truetype'); + font-weight: normal; + font-style: normal; +} +/* Clarification: I put this here because without it the layout would shift on my Mac. Sorry. */ +html.os-mac::-webkit-scrollbar { +display: none !important; +} +body.modal-open { position: fixed; } +body { + position: relative; + font-size: 28px; + font-family: sans-serif; + line-height: 1.5; + margin: 0; + padding: 0; + color: #323232; +} +h1, +h2, +h3, +h4, +h5, +h6, +p, +ul, +ol, +menu, +li, +table, +tr, +th, +td { + font-size: 100%; + font-weight: normal; + margin: 0; + padding: 0; +} +img#Preview { + margin-left: auto; + margin-right: auto; +} +input, +textarea { + font-size: 24px; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; +} +ul, +ol, +menu, +li { + list-style: none; +} +a { + color: var(--theme, #5ac800); + text-decoration: none; +} +img { + border: 0; + color: #ddd; + max-width: 100%; +} +input, +label, +button { + cursor: pointer; +} +.auth-input { + border-radius: 5px; + font-size: 20px; + width: 175px; +} +.none { + display: none !important; +} +.left { + float: left; +} +.right { + float: right; +} +.tleft { + text-align: left; +} +.tright { + text-align: right; +} +.center { + text-align: center; +} +.center-input { + margin-top: -5px; + margin-bottom: 8px; +} +input.disabled { + color: #969595 !important; + cursor: default !important; +} +.center-input input { + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + -o-appearance: none; + width: 96%; + padding: 1.5%; + border: 1px solid #969696; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; + -webkit-box-shadow: inset 0 2px 6px rgba(0,0,0,0.12), 0 1px 0 #fff; + -moz-box-shadow: inset 0 2px 6px rgba(0,0,0,0.12), 0 1px 0 #fff; + -ms-box-shadow: inset 0 2px 6px rgba(0,0,0,0.12), 0 1px 0 #fff; + -o-box-shadow: inset 0 2px 6px rgba(0,0,0,0.12), 0 1px 0 #fff; + box-shadow: inset 0 2px 6px rgba(0,0,0,0.12), 0 1px 0 #fff; +} +.clear { + clear: both; +} +.pointer-events-none { + pointer-events: none; +} +.trigger { + cursor: pointer; +} +.pre-line { + white-space: pre-line; +} +.red { + color: red; +} +.green { + color: green !important; +} +body { + font-size: 14px; + text-align: center; + background-attachment: fixed; + -webkit-background-size: 120px; + -moz-background-size: 120px; + -ms-background-size: 120px; + -o-background-size: 120px; + background-size: 120px; + -webkit-text-size-adjust: 100%; + -moz-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; + -o-text-size-adjust: 100%; + text-size-adjust: 100%; + word-wrap: break-word; + background: #e2e2e2; +} +.trigger:hover { + background-color: #f9f9f9; +} +.trigger:active { + background-color: #dddddd; +} +.trigger a:link:hover, +.trigger a:visited:hover, +.trigger button.report-violation-button:hover { + text-decoration: underline; +} +html body { + font-family: 'Helvetica', 'Arial', sans-serif; +} +html.os-win body { + font-family: 'Helvetica', 'Arial', 'Meiryo', '\30E1 \30A4 \30EA \30AA ', sans-serif; +} +html.os-mac body { + font-family: 'Helvetica', 'Arial', '\30D2 \30E9 \30AE \30CE \89D2 \30B4 Pro W3', 'Hiragino Kaku Gothic Pro', sans-serif; +} +html.os-win form input, +html.os-win button { + font-family: 'Helvetica', 'Arial', 'Meiryo', '\30E1 \30A4 \30EA \30AA ', sans-serif; +} +.symbol:before { + font-family: 'MiiverseSymbols', sans-serif !important; + font-weight: normal!important; +} +.symbol span.symbol-label { + display: none; + *display: inline; + *zoom: 1; + *margin-right: 3px; +} +html, +body { + height: 100%; +} +#wrapper { + height: auto !important; + min-height: 100%; + position: relative; + width: 100%; + min-width: 320px; + margin: auto 0; + text-align: left; + background-color: #f4f4f4; + background-image: var(--background, url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAArUlEQVQoFYWQuwrCQBBFd42FlaYQRMRCO3vBNpA/8HNtBbt04gcItnaKoLKegRnYTRYzcLjzuLNh4kMILooh+SeqO6kYJOawhzE0cIBsDLRboRPwsIUFZMMWTM1UWNJWMx4ZPHV4Rq9to9U+OlpeHcHDhjmNF3LzHc01yBdPEOwvkXdiQ6fW7gp9QWM3aD+RWVI5N5X638KF+VuXvqjUru+GEs8SbnCH3gXxJPEDtBsiPW8IwCQAAAAASUVORK5CYII=')); + background-attachment: fixed; +} +#sub-body { + top: 0; + width: 100%; + height: 54px; + position: fixed; + z-index: 20; + background: #fff; + border-bottom: 2px solid #e5e5e5; +} +#global-menu { + max-width: 950px; + margin: 0 auto; + *zoom: 1; +} +#global-menu:after { + content: ""; + display: block; + clear: both; +} +#main-body { + padding: 71px 0 170px !important; + max-width: 960px; + margin: 0 auto; + *zoom: 1; +} +#main-body:after { + content: ""; + display: block; + clear: both; +} +.main-column { + width: 625px; + margin: 0 auto; +} +#sidebar + .main-column { + float: right; +} +#sidebar { + width: 320px; + float: left; +} +.post-list-outline { + margin: 0 0 15px 0; + background: #fff; + border: 1px solid rgba(0, 0, 0, 0.1); + overflow: hidden; + -webkit-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -ms-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -o-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; + *zoom: 1; +} +.post-list-outline:after { + content: ""; + display: block; + clear: both; +} +.post-list-outline + .big-button, +.post-list-outline + .buttons-content { + margin-bottom: 30px; +} +#footer { + background: #e2e2e2; + position: absolute; + bottom: 0; + left: 0; + width: 100%; +} +#wrapper.post-permlink #footer { + position: bottom !important; +} +#wrapper.guest #footer { + bottom: -60px !important; +} +#wrapper.guest-top #footer { + bottom: -60px !important; +} +#footer-inner { + max-width: 960px; + margin: 0 auto; + padding: 30px 0; + *zoom: 1; +} +#footer-inner:after { + content: ""; + display: block; + clear: both; +} +#footer-inner p { + display: inline-block; + padding: 0 5px; +} +#footer-inner p a { + color: #969696; + font-size: 12px; +} +#footer-inner p a:hover { + color: #646464; + text-decoration: underline; +} +#footer-inner #copyright { + display: block; +} +.link-container { + text-align: center; +} +.link-container p { + display: inline-block; + padding: 0 5px; +} +.link-container p a { + color: #969696; + font-size: 12px; +} +.link-container p a:hover { + color: #646464; + text-decoration: underline; +} +.list > li span { + padding: 5px !important; +} +.post-list.empty, +.album-list.empty, +.list > .no-content, +.no-content { + color: #969696; + font-size: 16px; + display: table; + width: 100%; + height: 250px; + padding: 0; +} +.post-list.empty > div, +.album-list.empty > div, +.list > .no-content > div, +.no-content > div, +.post-list.empty > p, +.album-list.empty > p, +.list > .no-content > p, +.no-content > p { + display: table-cell; + *display: inline; + *zoom: 1; + vertical-align: middle; + padding: 0 30px; + text-align: center; +} +.post-list.empty > div p, +.album-list.empty > div p, +.list > .no-content > div p, +.no-content > div p { + padding: 0; + display: block; +} +.post-list.empty.no-content-favorites, +.album-list.empty.no-content-favorites, +.list > .no-content.no-content-favorites, +.no-content.no-content-favorites { + background: #fff; + border: 1px solid rgba(0, 0, 0, 0.1); + overflow: hidden; + -webkit-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -ms-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -o-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; + position: relative; + height: auto; +} +.post-list.empty.no-content-favorites > div, +.album-list.empty.no-content-favorites > div, +.list > .no-content.no-content-favorites > div, +.no-content.no-content-favorites > div { + padding: 20px 70px 20px 20px; +} +.post-list.empty.no-content-favorites p, +.album-list.empty.no-content-favorites p, +.list > .no-content.no-content-favorites p, +.no-content.no-content-favorites p { + text-align: left; +} +#main-body > .no-content { + background: #fff; + border: 1px solid rgba(0, 0, 0, 0.1); + overflow: hidden; + -webkit-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -ms-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -o-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; + max-width: 625px; + margin: 20px auto; + width: 90%; +} +.simple-wrapper { + background-color: #f4f4f4; + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAArUlEQVQoFYWQuwrCQBBFd42FlaYQRMRCO3vBNpA/8HNtBbt04gcItnaKoLKegRnYTRYzcLjzuLNh4kMILooh+SeqO6kYJOawhzE0cIBsDLRboRPwsIUFZMMWTM1UWNJWMx4ZPHV4Rq9to9U+OlpeHcHDhjmNF3LzHc01yBdPEOwvkXdiQ6fW7gp9QWM3aD+RWVI5N5X638KF+VuXvqjUru+GEs8SbnCH3gXxJPEDtBsiPW8IwCQAAAAASUVORK5CYII='); + background-attachment: fixed; + border: 0; +} +.simple-wrapper #wrapper { + margin-top: 0; +} +.simple-wrapper #sub-body, +.simple-wrapper #footer { + display: none; +} +.simple-wrapper #cookie-policy-notice { + top: 0; +} +.simple-wrapper #main-body { + border: 0; + background: transparent; +} +.simple-wrapper #lector { + border-top: 1px solid #dddddd; + margin-left: 0; +} +.simple-wrapper.simple-wrapper-content #wrapper { + margin: 50px auto 0; +} +.simple-wrapper.simple-wrapper-content #main-body { + padding: 0; +} +.simple-wrapper.simple-wrapper-content #footer { + background-color: transparent; + position: static; + text-align: center; + width: auto; + display: block; +} +#memo-drawboard-page { + user-select: none; +} +#memo-drawboard-page .window { + width: 344px; +} +#memo-drawboard-page .window .window-body { + height: 222px; +} +#memo-drawboard-page .window-body .memo-buttons { + margin-left: 10px; + position: fixed; +} +#memo-drawboard-page .memo-buttons button { + height: 40px; + width: 40px; +} +#memo-drawboard-page button.artwork-lock { + margin-left: -40px; + height: 40px; + float: right; +} +#memo-drawboard-page button.selected { + background: var(--theme, #5ac800); +} +#memo-drawboard-page button.artwork-clear:before { + content: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAQAAABKfvVzAAAACXBIWXMAAAsTAAALEwEAmpwYAAADGGlDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjaY2BgnuDo4uTKJMDAUFBUUuQe5BgZERmlwH6egY2BmYGBgYGBITG5uMAxIMCHgYGBIS8/L5UBFTAyMHy7xsDIwMDAcFnX0cXJlYE0wJpcUFTCwMBwgIGBwSgltTiZgYHhCwMDQ3p5SUEJAwNjDAMDg0hSdkEJAwNjAQMDg0h2SJAzAwNjCwMDE09JakUJAwMDg3N+QWVRZnpGiYKhpaWlgmNKflKqQnBlcUlqbrGCZ15yflFBflFiSWoKAwMD1A4GBgYGXpf8EgX3xMw8BSMDVQYqg4jIKAUICxE+CDEESC4tKoMHJQODAIMCgwGDA0MAQyJDPcMChqMMbxjFGV0YSxlXMN5jEmMKYprAdIFZmDmSeSHzGxZLlg6WW6x6rK2s99gs2aaxfWMPZ9/NocTRxfGFM5HzApcj1xZuTe4FPFI8U3mFeCfxCfNN45fhXyygI7BD0FXwilCq0A/hXhEVkb2i4aJfxCaJG4lfkaiQlJM8JpUvLS19QqZMVl32llyfvIv8H4WtioVKekpvldeqFKiaqP5UO6jepRGqqaT5QeuA9iSdVF0rPUG9V/pHDBYY1hrFGNuayJsym740u2C+02KJ5QSrOutcmzjbQDtXe2sHY0cdJzVnJRcFV3k3BXdlD3VPXS8Tbxsfd99gvwT//ID6wIlBS4N3hVwMfRnOFCEXaRUVEV0RMzN2T9yDBLZE3aSw5IaUNak30zkyLDIzs+ZmX8xlz7PPryjYVPiuWLskq3RV2ZsK/cqSql01jLVedVPrHzbqNdU0n22VaytsP9op3VXUfbpXta+x/+5Em0mzJ/+dGj/t8AyNmf2zvs9JmHt6vvmCpYtEFrcu+bYsc/m9lSGrTq9xWbtvveWGbZtMNm/ZarJt+w6rnft3u+45uy9s/4ODOYd+Hmk/Jn58xUnrU+fOJJ/9dX7SRe1LR68kXv13fc5Nm1t379TfU75/4mHeY7En+59lvhB5efB1/lv5dxc+NH0y/fzq64Lv4T8Ffp360/rP8f9/AA0ADzT6lvFdAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAClSURBVHjapJNJFsMwCEOl+x9aXdQDIPCiZZEXhm8TUCgAhJCN2g90GUceANAhE0AQAGQFnS/y+7YYxJIMnL5PxpAIxHIVL98CWXlKb0Rc3vu8GxXrtG55Gd0+F49Yu5yXpX3FZho5/Aok09DGP4Cr1MeqCaDql9C3pUcyqt8Wd0Wg0Mogy0FirZKTnIfc0RivHKtmaErecBNsf9Fyty2tmf+q+AwA6wtxB5rezbYAAAAASUVORK5CYII='); +} +#memo-drawboard-page button.artwork-undo:before { + content: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAQAAABKfvVzAAAACXBIWXMAAAsTAAALEwEAmpwYAAADGGlDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjaY2BgnuDo4uTKJMDAUFBUUuQe5BgZERmlwH6egY2BmYGBgYGBITG5uMAxIMCHgYGBIS8/L5UBFTAyMHy7xsDIwMDAcFnX0cXJlYE0wJpcUFTCwMBwgIGBwSgltTiZgYHhCwMDQ3p5SUEJAwNjDAMDg0hSdkEJAwNjAQMDg0h2SJAzAwNjCwMDE09JakUJAwMDg3N+QWVRZnpGiYKhpaWlgmNKflKqQnBlcUlqbrGCZ15yflFBflFiSWoKAwMD1A4GBgYGXpf8EgX3xMw8BSMDVQYqg4jIKAUICxE+CDEESC4tKoMHJQODAIMCgwGDA0MAQyJDPcMChqMMbxjFGV0YSxlXMN5jEmMKYprAdIFZmDmSeSHzGxZLlg6WW6x6rK2s99gs2aaxfWMPZ9/NocTRxfGFM5HzApcj1xZuTe4FPFI8U3mFeCfxCfNN45fhXyygI7BD0FXwilCq0A/hXhEVkb2i4aJfxCaJG4lfkaiQlJM8JpUvLS19QqZMVl32llyfvIv8H4WtioVKekpvldeqFKiaqP5UO6jepRGqqaT5QeuA9iSdVF0rPUG9V/pHDBYY1hrFGNuayJsym740u2C+02KJ5QSrOutcmzjbQDtXe2sHY0cdJzVnJRcFV3k3BXdlD3VPXS8Tbxsfd99gvwT//ID6wIlBS4N3hVwMfRnOFCEXaRUVEV0RMzN2T9yDBLZE3aSw5IaUNak30zkyLDIzs+ZmX8xlz7PPryjYVPiuWLskq3RV2ZsK/cqSql01jLVedVPrHzbqNdU0n22VaytsP9op3VXUfbpXta+x/+5Em0mzJ/+dGj/t8AyNmf2zvs9JmHt6vvmCpYtEFrcu+bYsc/m9lSGrTq9xWbtvveWGbZtMNm/ZarJt+w6rnft3u+45uy9s/4ODOYd+Hmk/Jn58xUnrU+fOJJ/9dX7SRe1LR68kXv13fc5Nm1t379TfU75/4mHeY7En+59lvhB5efB1/lv5dxc+NH0y/fzq64Lv4T8Ffp360/rP8f9/AA0ADzT6lvFdAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAB3SURBVHjavJRRCsAgDEOT+x86+9BqZehS2Oaf0NfGNEihdvgfQHlwL6LcacVKX0luTsBExAAawn3lAiAQnpovQDTfKeMdaIgeLJqSxvUlIE+3gUDyps8u9Zev0ThvgoAKWcpBqoRjypedJUMJoHDRBsL07z+BawCI1EgB+/fGrQAAAABJRU5ErkJggg=='); +} +#memo-drawboard-page button.artwork-pencil.small:before { + content: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAQAAABKfvVzAAAACXBIWXMAAAsTAAALEwEAmpwYAAADGGlDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjaY2BgnuDo4uTKJMDAUFBUUuQe5BgZERmlwH6egY2BmYGBgYGBITG5uMAxIMCHgYGBIS8/L5UBFTAyMHy7xsDIwMDAcFnX0cXJlYE0wJpcUFTCwMBwgIGBwSgltTiZgYHhCwMDQ3p5SUEJAwNjDAMDg0hSdkEJAwNjAQMDg0h2SJAzAwNjCwMDE09JakUJAwMDg3N+QWVRZnpGiYKhpaWlgmNKflKqQnBlcUlqbrGCZ15yflFBflFiSWoKAwMD1A4GBgYGXpf8EgX3xMw8BSMDVQYqg4jIKAUICxE+CDEESC4tKoMHJQODAIMCgwGDA0MAQyJDPcMChqMMbxjFGV0YSxlXMN5jEmMKYprAdIFZmDmSeSHzGxZLlg6WW6x6rK2s99gs2aaxfWMPZ9/NocTRxfGFM5HzApcj1xZuTe4FPFI8U3mFeCfxCfNN45fhXyygI7BD0FXwilCq0A/hXhEVkb2i4aJfxCaJG4lfkaiQlJM8JpUvLS19QqZMVl32llyfvIv8H4WtioVKekpvldeqFKiaqP5UO6jepRGqqaT5QeuA9iSdVF0rPUG9V/pHDBYY1hrFGNuayJsym740u2C+02KJ5QSrOutcmzjbQDtXe2sHY0cdJzVnJRcFV3k3BXdlD3VPXS8Tbxsfd99gvwT//ID6wIlBS4N3hVwMfRnOFCEXaRUVEV0RMzN2T9yDBLZE3aSw5IaUNak30zkyLDIzs+ZmX8xlz7PPryjYVPiuWLskq3RV2ZsK/cqSql01jLVedVPrHzbqNdU0n22VaytsP9op3VXUfbpXta+x/+5Em0mzJ/+dGj/t8AyNmf2zvs9JmHt6vvmCpYtEFrcu+bYsc/m9lSGrTq9xWbtvveWGbZtMNm/ZarJt+w6rnft3u+45uy9s/4ODOYd+Hmk/Jn58xUnrU+fOJJ/9dX7SRe1LR68kXv13fc5Nm1t379TfU75/4mHeY7En+59lvhB5efB1/lv5dxc+NH0y/fzq64Lv4T8Ffp360/rP8f9/AA0ADzT6lvFdAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAABwSURBVHjazNMxDsAgDENRcv9Du0NVFSXfUbpUsOKHkAOh9W3FnyBoX/nQHghSDcCDPRBf3gHoQuEBVueBuj4rMPFnIwMbZ9DECbTxAkJ3D4mV6jagWIPRAHgbpNGnN7INxzwtABw3YDCSo//0bF0DALiCRAFLB28mAAAAAElFTkSuQmCC'); +} +#memo-drawboard-page button.artwork-pencil.medium:before { + content: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAQAAABKfvVzAAAACXBIWXMAAAsTAAALEwEAmpwYAAADGGlDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjaY2BgnuDo4uTKJMDAUFBUUuQe5BgZERmlwH6egY2BmYGBgYGBITG5uMAxIMCHgYGBIS8/L5UBFTAyMHy7xsDIwMDAcFnX0cXJlYE0wJpcUFTCwMBwgIGBwSgltTiZgYHhCwMDQ3p5SUEJAwNjDAMDg0hSdkEJAwNjAQMDg0h2SJAzAwNjCwMDE09JakUJAwMDg3N+QWVRZnpGiYKhpaWlgmNKflKqQnBlcUlqbrGCZ15yflFBflFiSWoKAwMD1A4GBgYGXpf8EgX3xMw8BSMDVQYqg4jIKAUICxE+CDEESC4tKoMHJQODAIMCgwGDA0MAQyJDPcMChqMMbxjFGV0YSxlXMN5jEmMKYprAdIFZmDmSeSHzGxZLlg6WW6x6rK2s99gs2aaxfWMPZ9/NocTRxfGFM5HzApcj1xZuTe4FPFI8U3mFeCfxCfNN45fhXyygI7BD0FXwilCq0A/hXhEVkb2i4aJfxCaJG4lfkaiQlJM8JpUvLS19QqZMVl32llyfvIv8H4WtioVKekpvldeqFKiaqP5UO6jepRGqqaT5QeuA9iSdVF0rPUG9V/pHDBYY1hrFGNuayJsym740u2C+02KJ5QSrOutcmzjbQDtXe2sHY0cdJzVnJRcFV3k3BXdlD3VPXS8Tbxsfd99gvwT//ID6wIlBS4N3hVwMfRnOFCEXaRUVEV0RMzN2T9yDBLZE3aSw5IaUNak30zkyLDIzs+ZmX8xlz7PPryjYVPiuWLskq3RV2ZsK/cqSql01jLVedVPrHzbqNdU0n22VaytsP9op3VXUfbpXta+x/+5Em0mzJ/+dGj/t8AyNmf2zvs9JmHt6vvmCpYtEFrcu+bYsc/m9lSGrTq9xWbtvveWGbZtMNm/ZarJt+w6rnft3u+45uy9s/4ODOYd+Hmk/Jn58xUnrU+fOJJ/9dX7SRe1LR68kXv13fc5Nm1t379TfU75/4mHeY7En+59lvhB5efB1/lv5dxc+NH0y/fzq64Lv4T8Ffp360/rP8f9/AA0ADzT6lvFdAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAB6SURBVHjarNRJDsAgDANA8v9Hpwdakc1OWpUrHgmCheh6t+QjEJzQtVTm4D7AIRyY8z6EgXC9TTAopqGCQTk8DBRPtAIgvjcygPEakHgFaDyDJh5BG/dgEDdA1D0KiDsQqkXaEkDfRvPcpo2k7QGweAKxBP9+AvN1DQBwc0oBRN8v9gAAAABJRU5ErkJggg=='); +} +#memo-drawboard-page button.artwork-pencil.large:before { + content: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAQAAABKfvVzAAAACXBIWXMAAAsTAAALEwEAmpwYAAADGGlDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjaY2BgnuDo4uTKJMDAUFBUUuQe5BgZERmlwH6egY2BmYGBgYGBITG5uMAxIMCHgYGBIS8/L5UBFTAyMHy7xsDIwMDAcFnX0cXJlYE0wJpcUFTCwMBwgIGBwSgltTiZgYHhCwMDQ3p5SUEJAwNjDAMDg0hSdkEJAwNjAQMDg0h2SJAzAwNjCwMDE09JakUJAwMDg3N+QWVRZnpGiYKhpaWlgmNKflKqQnBlcUlqbrGCZ15yflFBflFiSWoKAwMD1A4GBgYGXpf8EgX3xMw8BSMDVQYqg4jIKAUICxE+CDEESC4tKoMHJQODAIMCgwGDA0MAQyJDPcMChqMMbxjFGV0YSxlXMN5jEmMKYprAdIFZmDmSeSHzGxZLlg6WW6x6rK2s99gs2aaxfWMPZ9/NocTRxfGFM5HzApcj1xZuTe4FPFI8U3mFeCfxCfNN45fhXyygI7BD0FXwilCq0A/hXhEVkb2i4aJfxCaJG4lfkaiQlJM8JpUvLS19QqZMVl32llyfvIv8H4WtioVKekpvldeqFKiaqP5UO6jepRGqqaT5QeuA9iSdVF0rPUG9V/pHDBYY1hrFGNuayJsym740u2C+02KJ5QSrOutcmzjbQDtXe2sHY0cdJzVnJRcFV3k3BXdlD3VPXS8Tbxsfd99gvwT//ID6wIlBS4N3hVwMfRnOFCEXaRUVEV0RMzN2T9yDBLZE3aSw5IaUNak30zkyLDIzs+ZmX8xlz7PPryjYVPiuWLskq3RV2ZsK/cqSql01jLVedVPrHzbqNdU0n22VaytsP9op3VXUfbpXta+x/+5Em0mzJ/+dGj/t8AyNmf2zvs9JmHt6vvmCpYtEFrcu+bYsc/m9lSGrTq9xWbtvveWGbZtMNm/ZarJt+w6rnft3u+45uy9s/4ODOYd+Hmk/Jn58xUnrU+fOJJ/9dX7SRe1LR68kXv13fc5Nm1t379TfU75/4mHeY7En+59lvhB5efB1/lv5dxc+NH0y/fzq64Lv4T8Ffp360/rP8f9/AA0ADzT6lvFdAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAB+SURBVHjalJM5EsAwCAOl/z9aKTIZwOEyjZvdMdiIwlyUHRQ48fLmLMQWOAlK2uMF3gsqHoAXeD1DgVc3lHguNHj2Dw2eCS3+Fwb8FEY8CgvcCyvchCX+CWscEAgBIk6tXDBCYghigx+CZbcLCN+BRUt5H0AnzLgT4kZ29QwAnplFBUt4JkYAAAAASUVORK5CYII='); +} +#memo-drawboard-page button.artwork-eraser.small:before { + content: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAQAAABKfvVzAAAACXBIWXMAAAsTAAALEwEAmpwYAAADGGlDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjaY2BgnuDo4uTKJMDAUFBUUuQe5BgZERmlwH6egY2BmYGBgYGBITG5uMAxIMCHgYGBIS8/L5UBFTAyMHy7xsDIwMDAcFnX0cXJlYE0wJpcUFTCwMBwgIGBwSgltTiZgYHhCwMDQ3p5SUEJAwNjDAMDg0hSdkEJAwNjAQMDg0h2SJAzAwNjCwMDE09JakUJAwMDg3N+QWVRZnpGiYKhpaWlgmNKflKqQnBlcUlqbrGCZ15yflFBflFiSWoKAwMD1A4GBgYGXpf8EgX3xMw8BSMDVQYqg4jIKAUICxE+CDEESC4tKoMHJQODAIMCgwGDA0MAQyJDPcMChqMMbxjFGV0YSxlXMN5jEmMKYprAdIFZmDmSeSHzGxZLlg6WW6x6rK2s99gs2aaxfWMPZ9/NocTRxfGFM5HzApcj1xZuTe4FPFI8U3mFeCfxCfNN45fhXyygI7BD0FXwilCq0A/hXhEVkb2i4aJfxCaJG4lfkaiQlJM8JpUvLS19QqZMVl32llyfvIv8H4WtioVKekpvldeqFKiaqP5UO6jepRGqqaT5QeuA9iSdVF0rPUG9V/pHDBYY1hrFGNuayJsym740u2C+02KJ5QSrOutcmzjbQDtXe2sHY0cdJzVnJRcFV3k3BXdlD3VPXS8Tbxsfd99gvwT//ID6wIlBS4N3hVwMfRnOFCEXaRUVEV0RMzN2T9yDBLZE3aSw5IaUNak30zkyLDIzs+ZmX8xlz7PPryjYVPiuWLskq3RV2ZsK/cqSql01jLVedVPrHzbqNdU0n22VaytsP9op3VXUfbpXta+x/+5Em0mzJ/+dGj/t8AyNmf2zvs9JmHt6vvmCpYtEFrcu+bYsc/m9lSGrTq9xWbtvveWGbZtMNm/ZarJt+w6rnft3u+45uy9s/4ODOYd+Hmk/Jn58xUnrU+fOJJ/9dX7SRe1LR68kXv13fc5Nm1t379TfU75/4mHeY7En+59lvhB5efB1/lv5dxc+NH0y/fzq64Lv4T8Ffp360/rP8f9/AA0ADzT6lvFdAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAABsSURBVHja3FNJEsAgCEv+/+j00DrKJvYqJw0JAUYp/AveLaCyfAQgm3CMwsHA9aW21U6Q1RBPivUCAu1I6xGQGB1EQoU2Wf1spnCwoKd7AWBcIj0O/UmmW7P0IRlOL6L9W8JS3dOv/3F5PAMA2JRDARqv+DEAAAAASUVORK5CYII='); +} +#memo-drawboard-page button.artwork-eraser.medium:before { + content: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAQAAABKfvVzAAAACXBIWXMAAAsTAAALEwEAmpwYAAADGGlDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjaY2BgnuDo4uTKJMDAUFBUUuQe5BgZERmlwH6egY2BmYGBgYGBITG5uMAxIMCHgYGBIS8/L5UBFTAyMHy7xsDIwMDAcFnX0cXJlYE0wJpcUFTCwMBwgIGBwSgltTiZgYHhCwMDQ3p5SUEJAwNjDAMDg0hSdkEJAwNjAQMDg0h2SJAzAwNjCwMDE09JakUJAwMDg3N+QWVRZnpGiYKhpaWlgmNKflKqQnBlcUlqbrGCZ15yflFBflFiSWoKAwMD1A4GBgYGXpf8EgX3xMw8BSMDVQYqg4jIKAUICxE+CDEESC4tKoMHJQODAIMCgwGDA0MAQyJDPcMChqMMbxjFGV0YSxlXMN5jEmMKYprAdIFZmDmSeSHzGxZLlg6WW6x6rK2s99gs2aaxfWMPZ9/NocTRxfGFM5HzApcj1xZuTe4FPFI8U3mFeCfxCfNN45fhXyygI7BD0FXwilCq0A/hXhEVkb2i4aJfxCaJG4lfkaiQlJM8JpUvLS19QqZMVl32llyfvIv8H4WtioVKekpvldeqFKiaqP5UO6jepRGqqaT5QeuA9iSdVF0rPUG9V/pHDBYY1hrFGNuayJsym740u2C+02KJ5QSrOutcmzjbQDtXe2sHY0cdJzVnJRcFV3k3BXdlD3VPXS8Tbxsfd99gvwT//ID6wIlBS4N3hVwMfRnOFCEXaRUVEV0RMzN2T9yDBLZE3aSw5IaUNak30zkyLDIzs+ZmX8xlz7PPryjYVPiuWLskq3RV2ZsK/cqSql01jLVedVPrHzbqNdU0n22VaytsP9op3VXUfbpXta+x/+5Em0mzJ/+dGj/t8AyNmf2zvs9JmHt6vvmCpYtEFrcu+bYsc/m9lSGrTq9xWbtvveWGbZtMNm/ZarJt+w6rnft3u+45uy9s/4ODOYd+Hmk/Jn58xUnrU+fOJJ/9dX7SRe1LR68kXv13fc5Nm1t379TfU75/4mHeY7En+59lvhB5efB1/lv5dxc+NH0y/fzq64Lv4T8Ffp360/rP8f9/AA0ADzT6lvFdAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAACOSURBVHjavNRLEoAgDAPQ5P6HjgsG+oECbnDlSN5YSpXCv4tvAd29QAHiFZBbyKQA/nEkC6BpY55MQMs+GElAZds6Seu7LjcS37A9lAncxF3qLj5ylIjjhgegDO7jHQAq2ma1QwEAAuMUxTgQalgTH0/ASC9xNdr5HAYh6hmZp1WgteD4iTZSx1/8BL4BAA4JVgFAxTGJAAAAAElFTkSuQmCC'); +} +#memo-drawboard-page button.artwork-eraser.large:before { + content: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAQAAABKfvVzAAAACXBIWXMAAAsTAAALEwEAmpwYAAADGGlDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjaY2BgnuDo4uTKJMDAUFBUUuQe5BgZERmlwH6egY2BmYGBgYGBITG5uMAxIMCHgYGBIS8/L5UBFTAyMHy7xsDIwMDAcFnX0cXJlYE0wJpcUFTCwMBwgIGBwSgltTiZgYHhCwMDQ3p5SUEJAwNjDAMDg0hSdkEJAwNjAQMDg0h2SJAzAwNjCwMDE09JakUJAwMDg3N+QWVRZnpGiYKhpaWlgmNKflKqQnBlcUlqbrGCZ15yflFBflFiSWoKAwMD1A4GBgYGXpf8EgX3xMw8BSMDVQYqg4jIKAUICxE+CDEESC4tKoMHJQODAIMCgwGDA0MAQyJDPcMChqMMbxjFGV0YSxlXMN5jEmMKYprAdIFZmDmSeSHzGxZLlg6WW6x6rK2s99gs2aaxfWMPZ9/NocTRxfGFM5HzApcj1xZuTe4FPFI8U3mFeCfxCfNN45fhXyygI7BD0FXwilCq0A/hXhEVkb2i4aJfxCaJG4lfkaiQlJM8JpUvLS19QqZMVl32llyfvIv8H4WtioVKekpvldeqFKiaqP5UO6jepRGqqaT5QeuA9iSdVF0rPUG9V/pHDBYY1hrFGNuayJsym740u2C+02KJ5QSrOutcmzjbQDtXe2sHY0cdJzVnJRcFV3k3BXdlD3VPXS8Tbxsfd99gvwT//ID6wIlBS4N3hVwMfRnOFCEXaRUVEV0RMzN2T9yDBLZE3aSw5IaUNak30zkyLDIzs+ZmX8xlz7PPryjYVPiuWLskq3RV2ZsK/cqSql01jLVedVPrHzbqNdU0n22VaytsP9op3VXUfbpXta+x/+5Em0mzJ/+dGj/t8AyNmf2zvs9JmHt6vvmCpYtEFrcu+bYsc/m9lSGrTq9xWbtvveWGbZtMNm/ZarJt+w6rnft3u+45uy9s/4ODOYd+Hmk/Jn58xUnrU+fOJJ/9dX7SRe1LR68kXv13fc5Nm1t379TfU75/4mHeY7En+59lvhB5efB1/lv5dxc+NH0y/fzq64Lv4T8Ffp360/rP8f9/AA0ADzT6lvFdAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAACSSURBVHjalJNBEoAgDAOT/z86HkS0kLboQWdwt9QSKVQX9dzCCgDQ8dtLlUIo3Atrr6wF92nMBeUzcEI1ONIMoh90GAP+CC0eWzrAvzsc4ZM7xWXSVeBDoMRG+oYPEhlTkuJDMElMcAz4bswrWyYZnqtiMj9qW8X+U/dYYRpLsvIcXCj+btuHjyrxcF6TKoN7DQDFlVMFmREVnwAAAABJRU5ErkJggg=='); +} + +#memo-drawboard-page button.artwork-zoom:before { + content: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAQAAABKfvVzAAAACXBIWXMAAAsTAAALEwEAmpwYAAADGGlDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjaY2BgnuDo4uTKJMDAUFBUUuQe5BgZERmlwH6egY2BmYGBgYGBITG5uMAxIMCHgYGBIS8/L5UBFTAyMHy7xsDIwMDAcFnX0cXJlYE0wJpcUFTCwMBwgIGBwSgltTiZgYHhCwMDQ3p5SUEJAwNjDAMDg0hSdkEJAwNjAQMDg0h2SJAzAwNjCwMDE09JakUJAwMDg3N+QWVRZnpGiYKhpaWlgmNKflKqQnBlcUlqbrGCZ15yflFBflFiSWoKAwMD1A4GBgYGXpf8EgX3xMw8BSMDVQYqg4jIKAUICxE+CDEESC4tKoMHJQODAIMCgwGDA0MAQyJDPcMChqMMbxjFGV0YSxlXMN5jEmMKYprAdIFZmDmSeSHzGxZLlg6WW6x6rK2s99gs2aaxfWMPZ9/NocTRxfGFM5HzApcj1xZuTe4FPFI8U3mFeCfxCfNN45fhXyygI7BD0FXwilCq0A/hXhEVkb2i4aJfxCaJG4lfkaiQlJM8JpUvLS19QqZMVl32llyfvIv8H4WtioVKekpvldeqFKiaqP5UO6jepRGqqaT5QeuA9iSdVF0rPUG9V/pHDBYY1hrFGNuayJsym740u2C+02KJ5QSrOutcmzjbQDtXe2sHY0cdJzVnJRcFV3k3BXdlD3VPXS8Tbxsfd99gvwT//ID6wIlBS4N3hVwMfRnOFCEXaRUVEV0RMzN2T9yDBLZE3aSw5IaUNak30zkyLDIzs+ZmX8xlz7PPryjYVPiuWLskq3RV2ZsK/cqSql01jLVedVPrHzbqNdU0n22VaytsP9op3VXUfbpXta+x/+5Em0mzJ/+dGj/t8AyNmf2zvs9JmHt6vvmCpYtEFrcu+bYsc/m9lSGrTq9xWbtvveWGbZtMNm/ZarJt+w6rnft3u+45uy9s/4ODOYd+Hmk/Jn58xUnrU+fOJJ/9dX7SRe1LR68kXv13fc5Nm1t379TfU75/4mHeY7En+59lvhB5efB1/lv5dxc+NH0y/fzq64Lv4T8Ffp360/rP8f9/AA0ADzT6lvFdAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAACMSURBVHjavFRbDsAgCKP3P3T34+RhxS1Z5tcsLUghA+3dwYeCENKfbaZ5rbiZ0WGYDcChGLERX8DAFQLL2UMVYi/ArAXel6OAtbVWMPN6LSUQDnU9cLEcyTVpeBoMsmtJwMPglwfzEb1ZK6LOv10qAqVI4YkdlPRs1ZbeC6C63gpqqweB0/nLT0CfawDTRF8BBXckvAAAAABJRU5ErkJggg=='); +} +#memo-drawboard-page button.artwork-zoom.out:before { + content: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAQAAABKfvVzAAAACXBIWXMAAAsTAAALEwEAmpwYAAADGGlDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjaY2BgnuDo4uTKJMDAUFBUUuQe5BgZERmlwH6egY2BmYGBgYGBITG5uMAxIMCHgYGBIS8/L5UBFTAyMHy7xsDIwMDAcFnX0cXJlYE0wJpcUFTCwMBwgIGBwSgltTiZgYHhCwMDQ3p5SUEJAwNjDAMDg0hSdkEJAwNjAQMDg0h2SJAzAwNjCwMDE09JakUJAwMDg3N+QWVRZnpGiYKhpaWlgmNKflKqQnBlcUlqbrGCZ15yflFBflFiSWoKAwMD1A4GBgYGXpf8EgX3xMw8BSMDVQYqg4jIKAUICxE+CDEESC4tKoMHJQODAIMCgwGDA0MAQyJDPcMChqMMbxjFGV0YSxlXMN5jEmMKYprAdIFZmDmSeSHzGxZLlg6WW6x6rK2s99gs2aaxfWMPZ9/NocTRxfGFM5HzApcj1xZuTe4FPFI8U3mFeCfxCfNN45fhXyygI7BD0FXwilCq0A/hXhEVkb2i4aJfxCaJG4lfkaiQlJM8JpUvLS19QqZMVl32llyfvIv8H4WtioVKekpvldeqFKiaqP5UO6jepRGqqaT5QeuA9iSdVF0rPUG9V/pHDBYY1hrFGNuayJsym740u2C+02KJ5QSrOutcmzjbQDtXe2sHY0cdJzVnJRcFV3k3BXdlD3VPXS8Tbxsfd99gvwT//ID6wIlBS4N3hVwMfRnOFCEXaRUVEV0RMzN2T9yDBLZE3aSw5IaUNak30zkyLDIzs+ZmX8xlz7PPryjYVPiuWLskq3RV2ZsK/cqSql01jLVedVPrHzbqNdU0n22VaytsP9op3VXUfbpXta+x/+5Em0mzJ/+dGj/t8AyNmf2zvs9JmHt6vvmCpYtEFrcu+bYsc/m9lSGrTq9xWbtvveWGbZtMNm/ZarJt+w6rnft3u+45uy9s/4ODOYd+Hmk/Jn58xUnrU+fOJJ/9dX7SRe1LR68kXv13fc5Nm1t379TfU75/4mHeY7En+59lvhB5efB1/lv5dxc+NH0y/fzq64Lv4T8Ffp360/rP8f9/AA0ADzT6lvFdAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAACKSURBVHjavFRBDoAwDIL/Pxovi63YdpoYd3GloIMuUni3+KEgtert+KazdByAAiawgIByB6sfoOKxuIUACVLeQOwFwUrFTiC3NgoUAZy+CoHb2nhQEzm7lOSDMcql0mbwtwPrEX24VqLPf7xUIu0jVQB2hIp+zaGlzwJWrluBW90Igq5ffgL1OgYA7gNeAcZXpMIAAAAASUVORK5CYII='); +} +#memo-drawboard-page button.artwork-fill:before { + content: url('data:image/png;base64,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'); +} +#memo-drawboard-page .memo-canvas { + margin-top: 48px; + height: 128px; +} +#memo-drawboard-page button.artwork-lock:before { + content: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAQAAABKfvVzAAAACXBIWXMAAAsTAAALEwEAmpwYAAADGGlDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjaY2BgnuDo4uTKJMDAUFBUUuQe5BgZERmlwH6egY2BmYGBgYGBITG5uMAxIMCHgYGBIS8/L5UBFTAyMHy7xsDIwMDAcFnX0cXJlYE0wJpcUFTCwMBwgIGBwSgltTiZgYHhCwMDQ3p5SUEJAwNjDAMDg0hSdkEJAwNjAQMDg0h2SJAzAwNjCwMDE09JakUJAwMDg3N+QWVRZnpGiYKhpaWlgmNKflKqQnBlcUlqbrGCZ15yflFBflFiSWoKAwMD1A4GBgYGXpf8EgX3xMw8BSMDVQYqg4jIKAUICxE+CDEESC4tKoMHJQODAIMCgwGDA0MAQyJDPcMChqMMbxjFGV0YSxlXMN5jEmMKYprAdIFZmDmSeSHzGxZLlg6WW6x6rK2s99gs2aaxfWMPZ9/NocTRxfGFM5HzApcj1xZuTe4FPFI8U3mFeCfxCfNN45fhXyygI7BD0FXwilCq0A/hXhEVkb2i4aJfxCaJG4lfkaiQlJM8JpUvLS19QqZMVl32llyfvIv8H4WtioVKekpvldeqFKiaqP5UO6jepRGqqaT5QeuA9iSdVF0rPUG9V/pHDBYY1hrFGNuayJsym740u2C+02KJ5QSrOutcmzjbQDtXe2sHY0cdJzVnJRcFV3k3BXdlD3VPXS8Tbxsfd99gvwT//ID6wIlBS4N3hVwMfRnOFCEXaRUVEV0RMzN2T9yDBLZE3aSw5IaUNak30zkyLDIzs+ZmX8xlz7PPryjYVPiuWLskq3RV2ZsK/cqSql01jLVedVPrHzbqNdU0n22VaytsP9op3VXUfbpXta+x/+5Em0mzJ/+dGj/t8AyNmf2zvs9JmHt6vvmCpYtEFrcu+bYsc/m9lSGrTq9xWbtvveWGbZtMNm/ZarJt+w6rnft3u+45uy9s/4ODOYd+Hmk/Jn58xUnrU+fOJJ/9dX7SRe1LR68kXv13fc5Nm1t379TfU75/4mHeY7En+59lvhB5efB1/lv5dxc+NH0y/fzq64Lv4T8Ffp360/rP8f9/AA0ADzT6lvFdAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAABnSURBVHjatJRBDsAgCAR3///o6cUmNVCIrXIhbhiDLmq0Fv4JWJKYBRqAZkv6DicxX3hkYlUG+CEhSdgZWwHSjXwHWkNMksrAWwErWFgAWK/qHmBcJEtn4DRw3ocWiC+tnqWDv8Y1AKETUgGf7LYxAAAAAElFTkSuQmCC'); +} +#memo-drawboard-page .memo-canvas.zoom { + overflow-x: scroll; +} +#memo-drawboard-page .memo-canvas.locked { + overflow: hidden; +} +#memo-drawboard-page .memo-canvas #artwork-canvas { + -ms-interpolation-mode: nearest-neighbor; + image-rendering: -webkit-optimize-contrast; + image-rendering: optimize-contrast; + image-rendering: -moz-crisp-edges; + image-rendering: -o-crisp-edges; + image-rendering: optimizeSpeed; + image-rendering: pixelated; + border: 1px solid var(--theme, #5ac800); +} +#memo-drawboard-page .memo-canvas canvas:not(#artwork-canvas) { + display: none; +} +#global-menu { + position: relative; +} +.notice { + padding: 15px 35px 15px 15px; + margin-bottom: 20px; + border: 1px solid #5fd4ff; + border-radius: 4px; + color: #000000; + background-color: #cce8ff; +} +#global-menu #global-menu-logo { + padding: 12px 0; + text-align: center; +} +#global-menu #global-menu-logo h1 { + line-height: 1; +} +#global-menu #global-menu-logo img { + height: 32px; + animation: glow 1.5s infinite alternate; +} +#global-menu #global-menu-list { + float: right; + padding: 0; + *zoom: 1; +} +#global-menu #global-menu-list:after { + content: ""; + display: block; + clear: both; +} +#global-menu li { + float: left; + padding: 0 10px; + line-height: 1; +} +#global-menu li a, +#global-menu li button { + position: relative; + line-height: 1; + color: #646464; + background-repeat: no-repeat; + padding: 0 5px; + display: table; +} +#global-menu li a:hover, +#global-menu li button:hover { + box-shadow: inset 0 -4px 0 -1px var(--theme, #5ac800); +} +#global-menu li a.login:hover { + box-shadow: none; +} +#global-menu li a:before, +#global-menu li button:before { + background: transparent; + font-size: 32px; + line-height: 54px; + vertical-align: middle; + padding-right: 8px; + display: inline-block; + *display: inline; + *zoom: 1; +} +#global-menu li a span { + font-weight: bold; + padding-top: 5px; + display: table-cell; + vertical-align: middle; + *display: inline; + *zoom: 1; +} +#global-menu li#global-menu-logo a:hover { + box-shadow: none; +} +#global-menu li#global-menu-mymenu .icon-container { + padding: 0; + margin: 8px 10px 8px 0; + width: 38px; + height: 38px; +} +#global-menu li#global-menu-mymenu .icon-container img { + border: 1px solid #dddddd; + width: 36px; + height: 36px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; +} +#global-menu li#global-menu-feed a:before { + content: 'a'; +} +#global-menu li#global-menu-community a:before { + content: 'c'; +} +#global-menu li#global-menu-message a:before { + content: 'm'; +} +#global-menu li#global-menu-news a:before { + content: 'n'; +} +#global-menu li#global-menu-news a:before { + text-indent: 0; + padding-right: 0; +} +#global-menu li#global-menu-my-menu { + padding-right: 0; +} +#global-menu li#global-menu-my-menu button { + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + -o-appearance: none; + appearance: none; + border: 0; + background-color: transparent; + margin: 0 auto; +} +#global-menu li#global-menu-my-menu button:before { + padding-right: 0; + content: 'j'; + font-size: 26px; +} +#global-menu li#global-menu-my-menu button:after { + font-family: 'MiiverseSymbols', sans-serif; + font-weight: normal; + content: 'V'; + vertical-align: middle; + padding-left: 8px; + display: inline-block; + *display: inline; + *zoom: 1; +} +.tab-icon-my-news .badge { + display: block; + padding: -120px; + height: 18px; + width: 9px; + padding: 1px 5px 0; + background: #fc951e; + color: #fff; + font-size: 12px; + font-weight: bold; + text-align: center; + line-height: 18px; + margin-top: -17px; + margin-left: 16px; + border-radius: 20px; +} +#global-menu li.selected a { + color: var(--theme, #5ac800); +} +#global-menu li.selected a:before { + color: var(--theme, #5ac800); +} +#global-menu .badge { + display: block; + position: absolute; + top: 50%; + height: 18px; + min-width: 9px; + padding: 1px 5px 0; + border: 2px solid #fff; + background: #fc951e; + color: #fff; + font-size: 12px; + font-weight: bold; + text-align: center; + line-height: 18px; + right: auto; + left: 50%; + margin-top: -6px; + margin-left: 8px; + -webkit-border-radius: 20px; + -moz-border-radius: 20px; + -ms-border-radius: 20px; + -o-border-radius: 20px; + border-radius: 20px; +} +#global-menu #global-menu-message .badge { +left: 10% !important; +} +#global-menu #global-my-menu { + background-color: #fff; + border: 2px solid #dddddd; + text-align: left; + top: 60px; + padding: 10px 5px; + position: absolute; + right: 0; + width: 240px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; + -webkit-box-shadow: 0px 3px 4px 0px rgba(0, 0, 0, 0.4); + -moz-box-shadow: 0px 3px 4px 0px rgba(0, 0, 0, 0.4); + -ms-box-shadow: 0px 3px 4px 0px rgba(0, 0, 0, 0.4); + -o-box-shadow: 0px 3px 4px 0px rgba(0, 0, 0, 0.4); + box-shadow: 0px 3px 4px 0px rgba(0, 0, 0, 0.4); +} +#global-menu #global-my-menu:before, +#global-menu #global-my-menu:after { + bottom: 100%; + right: 12%; + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} +#global-menu #global-my-menu:after { + border-color: transparent; + border-bottom-color: #ffffff; + border-width: 10px; + margin-right: -10px; +} +#global-menu #global-my-menu:before { + border-color: transparent; + border-bottom-color: #dddddd; + border-width: 13px; + margin-right: -13px; +} +#global-menu #global-my-menu li { + float: none; + padding: 0; +} +#global-menu #global-my-menu a { + display: block; + padding: 8px 10px; +} +#global-menu #global-my-menu a:hover { + -webkit-box-shadow: none; + -moz-box-shadow: none; + -ms-box-shadow: none; + -o-box-shadow: none; + box-shadow: none; +} +#global-menu #global-my-menu a:hover span { + text-decoration: underline; +} +#global-menu #global-my-menu span { + padding: 0 0 0 30px; + font-weight: normal; + display: block; +} +#global-menu #global-my-menu form { + position: relative; +} +#global-menu #global-my-menu form:before { + content: 'b'; + position: absolute; + left: 10px; + top: 7px; +} +#global-menu #global-my-menu form input, +#global-menu #global-my-menu form input:hover, +#global-menu #global-my-menu form input:active { + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + -o-appearance: none; + appearance: none; + border: none; + background: transparent; + color: #646464; + display: block; + text-align: left; + text-indent: 30px; + font-size: 14px; + padding: 8px 10px; + margin: 0; + width: 100%; + position: relative; + z-index: 2; +} +#global-menu #global-my-menu form input:hover, +#global-menu #global-my-menu form input:active { + text-decoration: underline; +} +#global-menu #global-my-menu .symbol:before { + font-size: 18px; + line-height: 18px; + width: 22px; + text-align: center; + color: var(--theme, #5ac800); + position: absolute; + top: 50%; + margin-top: -9px; +} +#global-menu #global-my-menu .my-menu-profile-setting:before { + content: "Z"; +} +#global-menu #global-my-menu .my-menu-white-power:before { + content: url(/s/img/font/wp.svg); + width: 20px; +} +#global-menu #global-my-menu .my-menu-account-setting:before { + content: "Y"; +} +#global-menu #global-my-menu .my-menu-openman:before { + content: "w"; +} +#global-menu #global-my-menu .my-menu-guide:before { + content: "g"; +} +@-moz-document url-prefix( ) { + #global-menu #global-my-menu form input, + #global-menu #global-my-menu form input:hover, + #global-menu #global-my-menu form input:active { + text-indent: 27px; + } +} +h2.label { + border-bottom: 3px solid var(--theme, #5ac800); + color: var(--theme, #5ac800); + font-weight: normal; + font-size: 16px; + padding: 17px 15px 10px; + line-height: 1; + margin: 0; +} +h2.label:before { + font-size: 20px; + vertical-align: middle; + margin-right: 3px; + margin-top: -3px; + display: inline-block; + *display: inline; + *zoom: 1; +} +h3.label { + padding: 9px 15px 6px; + font-weight: bold; + line-height: 1.2; +} +h3.label.nnid > label > img { + width: 64px; + height: 64px; + margin-top: -16px; + vertical-align: middle; +} +h3.label.label-wiiu { + background: #d8f2fc; + color: #1193c4; + -webkit-box-shadow: inset 0 1px 0 #c1eafa; + -moz-box-shadow: inset 0 1px 0 #c1eafa; + -ms-box-shadow: inset 0 1px 0 #c1eafa; + -o-box-shadow: inset 0 1px 0 #c1eafa; + box-shadow: inset 0 1px 0 #c1eafa; +} +h3.label.label-wiiu .with-filter-right { + color: #1193c4; +} +h3.label.label-3ds { + background: #fce9e9; + color: #ce181e; + -webkit-box-shadow: inset 0 1px 0 #fad2d3; + -moz-box-shadow: inset 0 1px 0 #fad2d3; + -ms-box-shadow: inset 0 1px 0 #fad2d3; + -o-box-shadow: inset 0 1px 0 #fad2d3; + box-shadow: inset 0 1px 0 #fad2d3; +} +h3.label.label-3ds .with-filter-right { + color: #ce181e; +} +h2.reply-label { + clear: both; + background: var(--theme, #5ac800); + color: #FFF; + border-top: 1px solid var(--theme, #73ff00); + padding: 3px 10px 1px; +} + +.community-switcher { + float: right; +} +.community-switcher .community-switcher-tab { + margin-bottom: 8px; + width: 80px; + padding: 10px 10px 8px; + font-size: 14px; + font-weight: bold; + background: url("/img/button-bg.gif") repeat-x 0 bottom #FFFFFF; + background-color: #ffffff; + background: -webkit-gradient(linear, left top, left bottom, from(#FFFFFF), to(#e6e6e6), color-stop(0.5, #FFFFFF)); + background: -webkit-linear-gradient(top, #FFFFFF 0%, #FFFFFF 50%, #e6e6e6 100%); + background: -moz-linear-gradient(top, #FFFFFF 0%, #FFFFFF 50%, #e6e6e6 100%); + background: -ms-linear-gradient(top, #FFFFFF 0%, #FFFFFF 50%, #e6e6e6 100%); + background: -o-linear-gradient(top, #FFFFFF 0%, #FFFFFF 50%, #e6e6e6 100%); + background: linear-gradient(top, #FFFFFF 0%, #FFFFFF 50%, #e6e6e6 100%); + color: #323232; + line-height: 1; + border: 1px solid #ddd; + border-bottom-color: #ccc; + border-left: none; +} +.community-switcher .community-switcher-tab.selected { + background: -webkit-gradient(linear, left top, left bottom, from(var(--theme, #257811)), to(var(--theme-slightly-dark, #1e610e))); + background: -webkit-linear-gradient(top,#257811 #1e610e); + background: -moz-linear-gradient(top,#257811 #1e610e); + background: -ms-linear-gradient(top,#257811 #1e610e); + background: -o-linear-gradient(top,#257811 #1e610e); + background: linear-gradient(top,#257811 #1e610e); + color: #fff; +} +.community-switcher .community-switcher-tab:first-of-type { + border-radius: 5px 0px 0px 5px; + border-left: 1px solid #ddd; +} +.community-switcher .community-switcher-tab:last-of-type { + border-radius: 0px 5px 5px 0px; +} + +.count { + font-weight: bold; + color: var(--theme, #5ac800); + line-height: 1; + float: right; + padding: 17px 15px 10px; + margin: 13px 12px 6px; + padding: 4px 12px; + background-color: #bedcff; +} +.headline { + padding-bottom: 10px; + position: relative; +} +.headline h2 { + padding: 10px 285px 0 8px; + font-size: 16px; + font-weight: bold; + color: #606060; +} +.headline h2 > span { + display: inline-block; + *display: inline; + *zoom: 1; + vertical-align: middle; + padding: 3px 10px 0 0; +} +.post-filter { + display: inline-block; +margin-top: 4px; +} +.headline form.search { + position: absolute; + right: 0; + top: 0; + width: 250px; + margin-left: 10px; + margin-bottom: 0; +} +form.friend-search { + width: 250px !important; + margin: 8px 2px 9px 2px !important; +} +.headline .activity-headline:before { + content: 'a'; + line-height: 23px; + font-size: 23px; + vertical-align: middle; + margin: -7px 5px 0 0; + display: inline-block; + *display: inline; + *zoom: 1; +} +h2.label-diary_post, +h2.label-diary { + border-bottom: 3px solid #04c9db; + color: #00b7d8; +} +h2.label-diary_post:before, +h2.label-diary:before { + content: "%"; +} +h2.label-artwork_post, +h2.label-artwork { + border-bottom: 3px solid #fcc735; + color: #ffae00; +} +h2.label-artwork_post:before, +h2.label-artwork:before { + content: "M"; +} +h2.label-topic_post, +h2.label-topic { + border-bottom: 3px solid #e8316e; + color: #e8316e; +} +h2.label-topic_post:before, +h2.label-topic:before { + content: "t"; +} +h2.label-via_api:before { + content: "&"; +} +.with-filter-right { + float: right; + border: none; + padding: 0; + background: none; + vertical-align: top; +} +.with-filter-right:before { + content: "V"; + float: right; + margin-left: 3px; + margin-top: 3px; +} +h2.label-diary .with-filter-right { + color: #00b7d8; +} +h2.label-artwork .with-filter-right { + color: #ffae00; +} +h2.label-topic .with-filter-right { + color: #e8316e; +} +.tab-container { + padding: 15px 15px 0; +} +.tab-container + .post-list { + margin-top: 15px; + border-top: 1px solid #dddddd; +} +.tab-container + #community-post-list { + margin-top: 15px; +} +.tab-container + .community-list { + margin-top: 15px; +} +.tab-container#notification-tab-container { + margin-bottom: 15px; +} +.tab2, +.tab3 { + display: table; + margin: 0 auto; + width: 100%; + *zoom: 1; +} +.tab2:after, +.tab3:after { + content: ""; + display: block; + clear: both; +} +.tab2 a, +.tab3 a { + display: table-cell; + vertical-align: middle; + *display: inline; + *zoom: 1; + padding: 10px 10px 8px; + font-size: 14px; + font-weight: bold; + background: url("/s/img/button-bg.gif") repeat-x 0 bottom #ffffff; + background-color: #ffffff; + background: -webkit-gradient(linear, left top, left bottom, from(#ffffff), to(#e6e6e6), color-stop(0.5, #ffffff)); + background: -webkit-linear-gradient(top, #ffffff 0%, #ffffff 50%, #e6e6e6 100%); + background: -moz-linear-gradient(top, #ffffff 0%, #ffffff 50%, #e6e6e6 100%); + background: -ms-linear-gradient(top, #ffffff 0%, #ffffff 50%, #e6e6e6 100%); + background: -o-linear-gradient(top, #ffffff 0%, #ffffff 50%, #e6e6e6 100%); + background: linear-gradient(top, #ffffff 0%, #ffffff 50%, #e6e6e6 100%); + color: #323232; + text-align: center; + line-height: 1.2; + border: 1px solid #dddddd; + border-bottom-color: #ccc; + border-left: none; + *float: left; +} +.tab2 a span, +.tab3 a span { + text-align: left; + display: inline-block; + *display: inline; + *zoom: 1; +} +.tab2 a span.label, +.tab3 a span.label { + float: left; + margin: 8px 0 0; +} +.tab2 a span.number, +.tab3 a span.number { + text-shadow: 0 0 0 rgba(0, 0, 0, 0); + color: #FFF; + float: right; + font-size: 10px; + font-weight: normal; + background: #969696; + min-width: 4em; + padding: 1px 5px 0; + margin: 8px 0; + text-align: right; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -ms-border-radius: 3px; + -o-border-radius: 3px; + border-radius: 3px; +} +.tab2.user-menu-activity a, +.tab3.user-menu-activity a { + padding: 0 10px; +} +.tab2.user-menu-friends a, +.tab3.user-menu-friends a { + padding: 8px 10px; +} +.tab2.user-menu-friends a span.name, +.tab3.user-menu-friends a span.name { + font-size: 12px; +} +.tab2.user-menu-friends a span.number, +.tab3.user-menu-friends a span.number { + width: 100%; + margin: 5px 0 0; + text-align: center; + padding: 2px 5px; + font-size: 12px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + -o-box-sizing: border-box; + box-sizing: border-box; +} +.tab2.user-menu-friends a span.number .denominator, +.tab3.user-menu-friends a span.number .denominator { + font-size: 10px; + font-weight: normal; + color: rgba(255, 255, 255, 0.7); + padding-left: 2px; +} +.tab2 a:hover, +.tab3 a:hover { + background: #f9f9f9; + -webkit-box-shadow: inset 0 1px 0 #fff, 0 2px 4px rgba(0,0,0,0.1); + -moz-box-shadow: inset 0 1px 0 #fff, 0 2px 4px rgba(0,0,0,0.1); + -ms-box-shadow: inset 0 1px 0 #fff, 0 2px 4px rgba(0,0,0,0.1); + -o-box-shadow: inset 0 1px 0 #fff, 0 2px 4px rgba(0,0,0,0.1); + box-shadow: inset 0 1px 0 #fff, 0 2px 4px rgba(0,0,0,0.1); +} +.tab2 a.selected, +.tab3 a.selected { + color: #FFF; + background: url("/s/img/color-button-bg.gif") repeat-x 0 bottom #257811; + background-color: #81e52e; + background: -webkit-gradient(linear, left top, left bottom, from(var(--theme, #257811)), to(var(--theme-slightly-dark, #1e610e))); + background: -webkit-linear-gradient(top, #257811 #1e610e); + background: -moz-linear-gradient(top, #257811 #1e610e); + background: -ms-linear-gradient(top, #257811 #1e610e); + background: -o-linear-gradient(top, #257811 #1e610e); + background: linear-gradient(top, #257811 #1e610e); +} +.tab2 a.selected span.number, +.tab3 a.selected span.number { + background: #003caa; +} +.tab2 a.selected:hover, +.tab3 a.selected:hover { + -webkit-box-shadow: inset 0 0 0 #fff, 0 0 0 rgba(0,0,0,0.1); + -moz-box-shadow: inset 0 0 0 #fff, 0 0 0 rgba(0,0,0,0.1); + -ms-box-shadow: inset 0 0 0 #fff, 0 0 0 rgba(0,0,0,0.1); + -o-box-shadow: inset 0 0 0 #fff, 0 0 0 rgba(0,0,0,0.1); + box-shadow: inset 0 0 0 #fff, 0 0 0 rgba(0,0,0,0.1); +} +.tab2 > a:first-child, +.tab3 > a:first-child { + border-left: 1px solid #dddddd; + -webkit-border-top-left-radius: 5px; + -moz-border-top-left-radius: 5px; + -ms-border-top-left-radius: 5px; + -o-border-top-left-radius: 5px; + border-top-left-radius: 5px; + -webkit-border-bottom-left-radius: 5px; + -moz-border-bottom-left-radius: 5px; + -ms-border-bottom-left-radius: 5px; + -o-border-bottom-left-radius: 5px; + border-bottom-left-radius: 5px; +} +.tab2 > a:last-child, +.tab3 > a:last-child { + -webkit-border-top-right-radius: 5px; + -moz-border-top-right-radius: 5px; + -ms-border-top-right-radius: 5px; + -o-border-top-right-radius: 5px; + border-top-right-radius: 5px; + -webkit-border-bottom-right-radius: 5px; + -moz-border-bottom-right-radius: 5px; + -ms-border-bottom-right-radius: 5px; + -o-border-bottom-right-radius: 5px; + border-bottom-right-radius: 5px; +} +.tab2 a { + width: 50%; +} +.tab-icon-my-news span.symbol { +margin-right: 5px; +} +span.symbol.nf:before { +content: "n"; +} +span.symbol.fr:before { +content: "F"; +} +span.owner-label { + float: right; +} +.icon-container { + width: 58px; + height: 58px; + float: left; +} +.icon-container .icon { + background: #fff; + border: 1px solid #dddddd; + vertical-align: middle; + width: 56px; + height: 56px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; +} +.icon-container.official { + position: relative; +} +.icon-container.official:after { + position: absolute; + display: block; + margin-top: -4px; + margin-left: -4px; + z-index: 2; + top: 0; + left: 0; + width: 22px; + height: 22px; +} +.icon-container.administrator:after { + content: url("/s/img/administrator.png"); +} +.icon-container.developer:after { + content: url("/s/img/developer.png"); +} +.icon-container.openverse:after { + content: url("/s/img/open-dev.png"); +} +.icon-container.urapp:after { + content: url("/s/img/open-zsdev.png"); +} +.icon-container.moderator:after { + content: url("/s/img/moderator.png"); +} +.icon-container.donator:after { + content: url("/s/img/donator.png"); +} +.icon-container.tester:after { + content: url("/s/img/tester.png"); +} +.icon-container.verified:after { + content: url("/s/img/verified.png"); +} + +.multi-timeline-post-list .post .icon-container.offline:before, +.multi-timeline-post-list .post .icon-container.online:before, +.multi-timeline-post-list .post .icon-container.afk:before { + width: 5px !important; + height: 5px !important; + border: 1px solid #fff !important; +} + +.icon-container.online, .icon-container.offline, .icon-container.afk { + position: relative; +} +.icon-container.online:before, +.icon-container.offline:before, +.icon-container.afk:before { + z-index: 1; + content: ""; + position: absolute; + display: block; + bottom: 7px; + right: 1px; + width: 9px; + height: 9px; + border: 2px solid #fff; + background: #969696; + margin-bottom: -6px; + border-radius: 20px; +} +.icon-container.online:before { + background: #01a920; +} +.icon-container.afk:before { + background: #f7aa50; +} + +/* +.icon-container.online, .icon-container.offline { + position: relative; +} +.icon-container.online:before { + z-index: 1; + content: url("https://pf2m.com/images/online.png"); + position: absolute; + display: block; + bottom: 7px; + right: 1px; + width: 9px; + height: 9px; +} +.icon-container.offline:before { + z-index: 1; + content: url("https://pf2m.com/images/offline.png"); + position: absolute; + display: block; + bottom: 7px; + right: 1px; + width: 9px; + height: 9px; +}*/ + +.post-permalink-feeling-icon.administrator { + position: relative; +} +.post-permalink-feeling-icon.developer { + position: relative; +} +.post-permalink-feeling-icon.openverse { + position: relative; +} +.post-permalink-feeling-icon.urapp { + position: relative; +} +.post-permalink-feeling-icon.moderator { + position: relative; +} +.post-permalink-feeling-icon.donator { + position: relative; +} +.post-permalink-feeling-icon.tester { + position: relative; +} +.post-permalink-feeling-icon.staff { + position: relative; +} +.post-permalink-feeling-icon.administrator:after { + content: url("/s/img/administrator.png"); + position: absolute; + display: block; + top: 0; + left: 0; + width: 22px; + height: 22px; +} +.post-permalink-feeling-icon.developer:after { + content: url("/s/img/developer.png"); + position: absolute; + display: block; + top: 0; + left: 0; + width: 22px; + height: 22px; +} +.post-permalink-feeling-icon.openverse:after { + content: url("/s/img/open-dev.png"); + position: absolute; + display: block; + top: 0; + left: 0; + width: 22px; + height: 22px; +} +.post-permalink-feeling-icon.moderator:after { + content: url("/s/img/moderator.png"); + position: absolute; + display: block; + top: 0; + left: 0; + width: 22px; + height: 22px; +} +.post-permalink-feeling-icon.donator:after { + content: url("/s/img/donator.png"); + position: absolute; + display: block; + top: 0; + left: 0; + width: 22px; + height: 22px; +} +.post-permalink-feeling-icon.verified:after { + content: url("/s/img/verified.png"); + position: absolute; + display: block; + top: 0; + left: 0; + width: 22px; + height: 22px; +} +.post-permalink-feeling-icon.tester:after { + content: url("/s/img/tester.png"); + position: absolute; + display: block; + top: 0; + left: 0; + width: 22px; + height: 22px; +} +.post-permalink-feeling-icon.Staff:after { + content: url("/s/img/splus.png"); + position: absolute; + display: block; + top: 0; + left: 0; + width: 22px; + height: 22px; +} +.button { + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + -o-appearance: none; + appearance: none; + padding: 12px 15px; + border: 1px solid rgba(0, 0, 0, 0.1); + border-bottom-color: #ccc; + background: #f6f6f6; + color: #323232; + display: block; + font-size: 14px; + text-align: center; + max-width: 480px; + margin: 0 auto; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; + -webkit-box-shadow: inset 0 1px 0 #ffffff; + -moz-box-shadow: inset 0 1px 0 #ffffff; + -ms-box-shadow: inset 0 1px 0 #ffffff; + -o-box-shadow: inset 0 1px 0 #ffffff; + box-shadow: inset 0 1px 0 #ffffff; +} +.button:hover { + text-decoration: none!important; + background: #f6f6f6; + -webkit-box-shadow: inset 0 1px 0 #fff, 0 2px 4px rgba(0,0,0,0.1); + -moz-box-shadow: inset 0 1px 0 #fff, 0 2px 4px rgba(0,0,0,0.1); + -ms-box-shadow: inset 0 1px 0 #fff, 0 2px 4px rgba(0,0,0,0.1); + -o-box-shadow: inset 0 1px 0 #fff, 0 2px 4px rgba(0,0,0,0.1); + box-shadow: inset 0 1px 0 #fff, 0 2px 4px rgba(0,0,0,0.1); +} +.button.edit-button { + width: 34px; + float: right; + margin: 0 0 10px 10px; + padding: 4px 0 3px; +} +.button.edit-post-button:before { + content: "J" !important; +} +.button.rm-post-button:before { + content: "d" !important; +} +.button.profile-post-button:before { + content: "P" !important; +} +.button.profile-post-button.done:before { + content: "s" !important; +} +.button.edit-button:hover { + text-decoration: none; +} +.button.edit-button:before { + content: "y"; + font-size: 18px; + color: #969696; +} + +.button.rm { + width: 34px; + float: right; + padding: 4px 0 3px; +} +.button.rm:hover { + text-decoration: none; +} +.button.rm:before { + content: "d"; + font-size: 18px; + color: #969696; +} + +.big-button { + background: #fff; + border: 1px solid rgba(0, 0, 0, 0.1); + overflow: hidden; + -webkit-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -ms-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -o-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + background-color: #f1f1f1; + display: block; + max-width: 400px; + margin: 0 auto; + padding: 12px 0 10px; + color: #323232; + text-align: center; + font-size: 16px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; +} +.big-button:hover { + background-color: #ededed; +} +.big-button.disabled { + color: #969696; +} +.big-button.disabled:hover { + -webkit-box-shadow: inset 0 1px 0 #ffffff; + -moz-box-shadow: inset 0 1px 0 #ffffff; + -ms-box-shadow: inset 0 1px 0 #ffffff; + -o-box-shadow: inset 0 1px 0 #ffffff; + box-shadow: inset 0 1px 0 #ffffff; + text-decoration: none; +} +.arrow-button { + clear: both; + display: block; + padding: 11px 20px 9px 15px; + background: url('/s/img/icon-arrow-right.png') no-repeat 97.5% center; + color: #323232; + -webkit-background-size: 9px 15px; + -moz-background-size: 9px 15px; + -ms-background-size: 9px 15px; + -o-background-size: 9px 15px; + background-size: 9px 15px; +} +.arrow-button:hover { + background-color: #f9f9f9; +} +.sidebar-container .button { + margin: 5px auto 20px; + width: 80%; +} +.sidebar-container .title-settings-button:before { +content: "y"; +font-size: 18px; +} +.sidebar-container .title-settings-button { + width: 15% !important; + + float: right; + margin-top: -65px; + margin-right: 20px; +} +.favorite-button:before { + content: "P"; + font-size: 20px; + margin: -2px 5px 0 0; + line-height: 11px; + color: #f79726; + display: inline-block; + *display: inline; + *zoom: 1; + vertical-align: middle; +} +.favorite-button.checked:before { + content: "s"; +} +.favorite-button.checked:before { + content: "s"; +} +.ie .favorite-button.changing:before { + content: none; +} +.favorite-button .favorite-button-text { + padding: 4px 0 2px; +} +.filter-button { + background-color: rgba(0, 0, 0, 0.06); + border: none; + float: none; + padding: 4px 10px; + vertical-align: middle; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -ms-border-radius: 3px; + -o-border-radius: 3px; + border-radius: 3px; +} +.filter-button:hover { + background-color: rgba(0, 0, 0, 0.08); + color: #323232; +} +.filter-button:before { + content: "V"; + float: right; + font-size: 10px; + padding: 3px 0 0 5px; +} +.hidden-content-button { + display: inline-block; + *display: inline; + *zoom: 1; + margin: 5px; + padding: 3px 5px; + border: 1px solid #dddddd; + border-bottom-color: #ccc; + background: #f6f6f6; + font-size: 12px; + color: #323232; + text-align: center; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; + -webkit-box-shadow: inset 0 1px 0 #ffffff; + -moz-box-shadow: inset 0 1px 0 #ffffff; + -ms-box-shadow: inset 0 1px 0 #ffffff; + -o-box-shadow: inset 0 1px 0 #ffffff; + box-shadow: inset 0 1px 0 #ffffff; +} +.hidden-content-button:hover { + text-decoration: none!important; + -webkit-box-shadow: inset 0 1px 0 #fff, 0 2px 4px rgba(0,0,0,0.1); + -moz-box-shadow: inset 0 1px 0 #fff, 0 2px 4px rgba(0,0,0,0.1); + -ms-box-shadow: inset 0 1px 0 #fff, 0 2px 4px rgba(0,0,0,0.1); + -o-box-shadow: inset 0 1px 0 #fff, 0 2px 4px rgba(0,0,0,0.1); + box-shadow: inset 0 1px 0 #fff, 0 2px 4px rgba(0,0,0,0.1); +} +.black-button { + min-width: 135px; + padding: 9px 10px 7px; + margin: 0; + border: 1px solid #444; + color: #fff; + font-size: 14px; + font-weight: bold; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.5); + background: url("/s/img/black-button-bg.gif") repeat-x 0 bottom #646464; + background-color: #646464; + background: -webkit-gradient(linear, left top, left bottom, from(#646464), to(#323232), color-stop(0.96, #434343)); + background: -webkit-linear-gradient(top, #646464 0%, #434343 96%, #323232 100%); + background: -moz-linear-gradient(top, #646464 0%, #434343 96%, #323232 100%); + background: -ms-linear-gradient(top, #646464 0%, #434343 96%, #323232 100%); + background: -o-linear-gradient(top, #646464 0%, #434343 96%, #323232 100%); + background: linear-gradient(top, #646464 0%, #434343 96%, #323232 100%); + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.3); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.3); + -ms-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.3); + -o-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.3); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.3); + vertical-align: middle; + min-height: 40px; + min-height: 30px\\9; +} +.black-button.disabled { + background: #dddddd; + background-color: #dddddd; + background: -webkit-gradient(linear, left top, left bottom, from(#dddddd), to(#d0d0d0), color-stop(0.96, #dddddd)); + background: -webkit-linear-gradient(top, #dddddd 0%, #dddddd 96%, #d0d0d0 100%); + background: -moz-linear-gradient(top, #dddddd 0%, #dddddd 96%, #d0d0d0 100%); + background: -ms-linear-gradient(top, #dddddd 0%, #dddddd 96%, #d0d0d0 100%); + background: -o-linear-gradient(top, #dddddd 0%, #dddddd 96%, #d0d0d0 100%); + background: linear-gradient(top, #dddddd 0%, #dddddd 96%, #d0d0d0 100%); + border-color: #c4c4c4; + color: #919191; + text-shadow: 0 1px 0 #ffffff; + cursor: default; +} +.black-button.loading { + background: #dddddd; + border-color: #b7b7b7; + color: #969696; + background-color: #dddddd; + background: -webkit-gradient(linear, left top, left bottom, from(#dddddd), to(#b7b7b7), color-stop(0.96, #c4c4c4)); + background: -webkit-linear-gradient(top, #dddddd 0%, #c4c4c4 96%, #b7b7b7 100%); + background: -moz-linear-gradient(top, #dddddd 0%, #c4c4c4 96%, #b7b7b7 100%); + background: -ms-linear-gradient(top, #dddddd 0%, #c4c4c4 96%, #b7b7b7 100%); + background: -o-linear-gradient(top, #dddddd 0%, #c4c4c4 96%, #b7b7b7 100%); + background: linear-gradient(top, #dddddd 0%, #c4c4c4 96%, #b7b7b7 100%); + text-shadow: 0 1px 0 #ffffff; +} +.gray-button { + min-width: 135px; + padding: 9px 10px 7px; + margin: 0; + border: 1px solid #bbb; + color: #323232; + font-size: 14px; + font-weight: bold; + text-shadow: 0 1px 0 #fff; + background: url("/s/img/gray-button-bg.gif") repeat-x 0 bottom #ffffff; + background-color: #ffffff; + background: -webkit-gradient(linear, left top, left bottom, from(#ffffff), to(#bbbbbb), color-stop(0.96, #dddddd)); + background: -webkit-linear-gradient(top, #ffffff 0%, #dddddd 96%, #bbbbbb 100%); + background: -moz-linear-gradient(top, #ffffff 0%, #dddddd 96%, #bbbbbb 100%); + background: -ms-linear-gradient(top, #ffffff 0%, #dddddd 96%, #bbbbbb 100%); + background: -o-linear-gradient(top, #ffffff 0%, #dddddd 96%, #bbbbbb 100%); + background: linear-gradient(top, #ffffff 0%, #dddddd 96%, #bbbbbb 100%); + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; + -webkit-box-shadow: inset 0 1px 0 #ffffff; + -moz-box-shadow: inset 0 1px 0 #ffffff; + -ms-box-shadow: inset 0 1px 0 #ffffff; + -o-box-shadow: inset 0 1px 0 #ffffff; + box-shadow: inset 0 1px 0 #ffffff; + vertical-align: middle; + min-height: 40px; + min-height: 30px\\9; +} +.gray-button.disabled { + background: #dddddd; + color: #969696; + -webkit-box-shadow: none; + -moz-box-shadow: none; + -ms-box-shadow: none; + -o-box-shadow: none; + box-shadow: none; +} +.buttons-content { + text-align: center; +} +.buttons-content a { + width: 45%; + display: inline-block; + margin: 0 0.5%; +} +.newest-more-button:before, +.new-topic-button:before { + content: "p"; + vertical-align: middle; + font-size: 20px; + line-height: 20px; +} +.popular-more-button:before { + content: "W"; + vertical-align: middle; + font-size: 22px; + line-height: 22px; +} +.pager-button { + display: table; + *zoom: 1; + width: 936px; + margin: 20px auto; + background: #f6f6f6; + width: auto; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -ms-border-radius: 3px; + -o-border-radius: 3px; + border-radius: 3px; +} +.pager-button:after { + content: ""; + display: block; + clear: both; +} +.pager-button .button { + display: table-cell; + vertical-align: middle; + *display: inline; + *zoom: 1; + color: #323232; + text-align: center; + line-height: 1.2; + border: none; +} +.pager-button .selected { + width: 260px; + font-size: 14px; +} +.pager-button .back-button { + padding: 10px; + margin: 0; + border-right: 1px solid #dddddd; + width: 40px; + -webkit-border-radius: 3px 0 0 3px; + -moz-border-radius: 3px 0 0 3px; + -ms-border-radius: 3px 0 0 3px; + -o-border-radius: 3px 0 0 3px; + border-radius: 3px 0 0 3px; +} +.pager-button .back-button:before { + content: "I"; +} +.pager-button .next-button { + padding: 10px; + margin: 0; + border-left: 1px solid #dddddd; + width: 40px; + -webkit-border-radius: 0 3px 3px 0; + -moz-border-radius: 0 3px 3px 0; + -ms-border-radius: 0 3px 3px 0; + -o-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; +} +.pager-button .next-button:before { + content: "R"; +} +.report-buttons-content { + display: block; + float: right; +} +.report-violation-button, +.report-button { + font-size: 12px; + display: inline; + width: auto; + padding: 0; + margin: 0 0 0 10px; + border: none; + background: transparent; + -webkit-border-radius: 0; + -moz-border-radius: 0; + -ms-border-radius: 0; + -o-border-radius: 0; + border-radius: 0; + color: #dddddd; +} +.report-violation-button:hover, +.report-button:hover { + color: #969696; + text-decoration: underline; +} +.report-violation-button.disabled:hover, +.report-button.disabled:hover { + text-decoration: none; + color: #dddddd; +} +.closed-user-report-content { + margin-top: 15px; +} +.button-n3ds { + background-color: #ce181e; +} +.button-n3ds:hover { + background: #c0161c; +} +.button-wiiu { + background-color: #1193c4; +} +.button-wiiu:hover { + background: #1088b6; +} +.list > li, +.list > div, +.list > a, +.list > span { + *zoom: 1; + padding: 15px; + border-top: 1px solid #dddddd; + background-repeat: no-repeat; +} +.list > li:after, +.list > div:after, +.list > a:after, +.list > span:after { + content: ""; + display: block; + clear: both; +} +.list > a, +.list > span { + display: block; + padding-left: 52px; + color: #323232; + font-weight: bold; +} +.list.info-reply-list + .reply-list li:first-child { + border-top: 1px solid #dddddd; +} +.list div#user-page-no-content.none + div { + border: 0; +} +.list .toggle-button { + margin-top: 7px; + margin-left: 10px; + float: right; + position: relative; +} +.list .toggle-button .button { + width: 100px; + padding: 0 30px 0 0; + height: 36px; + line-height: 34px; +} +.list .toggle-button .button:before { + color: #fff; + line-height: 34px; + position: absolute; + top: 0; + right: 0; + display: block; + width: 30px; + height: 34px; + border: 1px solid #dddddd; + border-left: none; + border-bottom-color: #ccc; + -webkit-box-shadow: inset 0 0.5px 0 rgba(255, 255, 255, 0.9); + -moz-box-shadow: inset 0 0.5px 0 rgba(255, 255, 255, 0.9); + -ms-box-shadow: inset 0 0.5px 0 rgba(255, 255, 255, 0.9); + -o-box-shadow: inset 0 0.5px 0 rgba(255, 255, 255, 0.9); + box-shadow: inset 0 0.5px 0 rgba(255, 255, 255, 0.9); + -webkit-border-top-right-radius: 5px; + -moz-border-top-right-radius: 5px; + -ms-border-top-right-radius: 5px; + -o-border-top-right-radius: 5px; + border-top-right-radius: 5px; + -webkit-border-bottom-right-radius: 5px; + -moz-border-bottom-right-radius: 5px; + -ms-border-bottom-right-radius: 5px; + -o-border-bottom-right-radius: 5px; + border-bottom-right-radius: 5px; +} +.list .toggle-button .unfollow-button:before { + background-color: #969696; + content: "x"; +} +.list .toggle-button .follow-button:before { + color: var(--theme, #5ac800); + content: "Q"; +} +.arrow-list .toggle-button .user-manage:before { + color: var(--theme, #5ac800); + content: "Y"; +} +.list .toggle-button .friend-button:before { + color: var(--theme, #5ac800); + content: "F"; +} +.list .toggle-button .unfriend-button:before { + color: var(--theme, #5ac800); + content: "f"; +} +.list .toggle-button .follow-done-button:before { + color: var(--theme, #5ac800); + content: "v"; +} +.list .toggle-button .follow-done-button:hover { + -webkit-box-shadow: none; + -moz-box-shadow: none; + -ms-box-shadow: none; + -o-box-shadow: none; + box-shadow: none; +} +.community-list > li { + padding: 0; +} +.news-label, +.filtering-label { + display: block; + min-height: 70px; + padding: 0 0 0 60px !important; + font-size: 24px; + line-height: 28px; + color: #323232; + background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAkCAYAAADsHujfAAAD2klEQVR4AbXUA7TjShwG8G+S2/Zmbdv2Hj3btm3btm2tbdu27fqyVjAvk+7Joi8vvZivDv79DckNP7a51yGRbwSR1CMEliECAdUolDRdkkloz01+1r0F1Rhy36QO5bWbOurpGOuLmJAAmkKRjmqIBuVQvEQ5b+KT1YchT6/oQuu2dEB0ENiFaoCa0RAvUVHuzoSiAfm8iU95qgVDnt/QldZuWoD8wzAUsWIF5ccYRjlv0tNVx5DnNnRhELPFbcTBuKPZ95DEOjgUX4dRJU9BFmO2mMlPe6uEIc+u72xClBTFW+3XQiqoY14w1fsx1meGQygg/40pURA6JoeiQeW5yU95h1Qa8sy6TiYkUabiq377lgC4jhASopSeO//oH7MWpr6UHJJgOUzsvrBXRsSv3DfpicphyNNrO5qQeKmK+EHp9T9u3v4JmObHFvU692i7D81KGjtqCLAKW03JkIqQW8f4GMY3pBKQ9rTWcUg6prFu1lunDFFlelSqJ9xTv62zXa0mou2q0lSGMe43MJOf8FcIQ55c045BzGKZqGZ0taoArtoCpHoiHIU6IuuwxaROwkx5MpA3hjyxuq0OEU/dK2RqfIoOQBBtERYYxcBMfSqYF4Y8vroNZV1fnTEx7ixm2lNFthjyy84H6EHHAhAB1YyBjlENTNSn3jft6eL/xZDixDH65eHLoDijAPhgwqxndMyMZ0osMYRSOtkd23ntz56bkBF5YTQDE/UzTOkQK0g7AJvdsR31fnTfyBfjyQ7TrGfLczCEvemYfgAWJ5Rwve8P3YCAtgsgfDARj5rFPMcwp0FOwcjhet8euB5BupMLJh1mw6QawzT7+fCQ0yAmpt5xTL9vDlyLgMYXEwto9815PjLEhFhhvt5/DVdMxKMZPTP3hegQ8y+sMF/uu1rH7OCKifm1+4zytpi9V8LPDUMRPqZmS9th4gyz5wr4KoChGtC31hVoVdgLklgXbWr0sbwuED7yjlE2X8wXey6HT91uj6FAc9Ib7/VdiXxjCzkd8/nuy2wxrMvba2fizcGzpwDYCiAEYAusE8oHkoP5bNelOmabJUaTgWbJQbFPzl1Wu/p6xALzyc5LLDFqBjir8LEjD/X/uj0HyOmYkIHxqltzqihJ4GzpsSMPD/yWGyQH8/GOi3MwcgLog+uXvnr2mHN5QnIwH22/yMSYEHLD0tf4Q3IxH26/EF7FwJiQ188Zyxligflg+wUGRk4CfQ3IOP4QS8y2C3A4sgX9hBuXvn4uV4g95p9dz6MxOo+9td/rt3KE2GMA9APwHiHkXb4Qe8w3AKbqkCnIM/8C+TLMZcAMCYoAAAAASUVORK5CYII=') no-repeat 20px 21px, -webkit-gradient(linear, left top, left bottom, from(#ffffff), color-stop(0.5, #ffffff), color-stop(0.8, #f6f6f6), color-stop(0.96, #f5f5f5), to(#bbbbbb)) 0 0; + border-radius: 12px; + -webkit-border-radius: 12px; + box-shadow: 0 3px 10px rgba(0, 0, 0, 0.6); + -webkit-box-shadow: 0 3px 10px rgba(0, 0, 0, 0.6); +} +.news-label p, +.filtering-label p { + display: box; + display: -webkit-box; + box-align: center; + -webkit-box-align: center; + width: 700px; + min-height: 70px; +} +.header-news-button, +.news-button { + background: url('data:image/png;base64,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') no-repeat 15px center; +} +.news-label { + padding: 0 !important; + background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAaCAQAAAAUYRSMAAABbklEQVR4AW2KJXTbYRwAPx1V/0ZeTdfbednIYceMZsy8MJcDDRfDNGZQUZkZ86Zu3/vnF86dvFPHNpzKnOMKV+sXNqphnHpygyniJJn9cs88ZDinc44qNYoksA8ul4gZWUuJFI7+xV+fp0xVNJZTPcN3V7K+rENFLOrF5eoa2IJl+d0CBUpiQS+ezoIJvSy+S5OnKOZJyyIwhmXhXZIseTFLEveTcyM9y6NMlBWyYoYk3ifne5cHmTDLZMRVUvgyqgOjWGqZIIusiMvEUYIsqxkLUZbaLvYOu83HuEuEhbbFRlfeZT7CVSaJkxIzH/+4Otl1lGtMECMprurMXsk7Xce4wSTzxMXKOywcw2TkcdcRyVGx3MnbRsbDR7nOBBHmxZLOjKkmO4wcIERYfPhQcpN9XNY5SEh8lUGycAgLcwTFlzqzSXVzpWFhljlt+J+RR1Uv31yuho8Z5r+/n+vNAnuxiFd7s4BJljOsVUP4D0R1qRL4an5FAAAAAElFTkSuQmCC') no-repeat 920px center, -webkit-gradient(linear, left top, left bottom, from(#ffffff), color-stop(0.5, #ffffff), color-stop(0.8, #f6f6f6), color-stop(0.96, #f5f5f5), to(#bbbbbb)) 0 0; +} +#header-news { + background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAaCAQAAAAUYRSMAAABbklEQVR4AW2KJXTbYRwAPx1V/0ZeTdfbednIYceMZsy8MJcDDRfDNGZQUZkZ86Zu3/vnF86dvFPHNpzKnOMKV+sXNqphnHpygyniJJn9cs88ZDinc44qNYoksA8ul4gZWUuJFI7+xV+fp0xVNJZTPcN3V7K+rENFLOrF5eoa2IJl+d0CBUpiQS+ezoIJvSy+S5OnKOZJyyIwhmXhXZIseTFLEveTcyM9y6NMlBWyYoYk3ifne5cHmTDLZMRVUvgyqgOjWGqZIIusiMvEUYIsqxkLUZbaLvYOu83HuEuEhbbFRlfeZT7CVSaJkxIzH/+4Otl1lGtMECMprurMXsk7Xce4wSTzxMXKOywcw2TkcdcRyVGx3MnbRsbDR7nOBBHmxZLOjKkmO4wcIERYfPhQcpN9XNY5SEh8lUGycAgLcwTFlzqzSXVzpWFhljlt+J+RR1Uv31yuho8Z5r+/n+vNAnuxiFd7s4BJljOsVUP4D0R1qRL4an5FAAAAAElFTkSuQmCC') no-repeat 1160px center, -webkit-gradient(linear, left top, left bottom, from(#ffffff), color-stop(0.5, #ffffff), color-stop(0.8, #f6f6f6), color-stop(0.96, #f5f5f5), to(#bbbbbb)) 0 0; +} +#header-news .close-button { + display: block; + float: right; + width: 80px; + height: 70px; + border-left: 2px solid white; + -webkit-box-shadow: -2px 0 0 #dddddd; +} +#header-news .header-news-button { + display: block; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + line-height: 70px; + padding: 0 50px 0 65px; + font-size: 24px; + color: #323232; +} +#header-news .close-button { + background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAiCAQAAACUuxN0AAACqUlEQVR4AY2QJ3TcTBSFBxuJnzRkvDS9b3Pb3ou2V8kdpaJQYyFX5m4jI6UzW86fP9gkPfJxYUI371jeSN4dl/ehmXe/q8Ja0ysOqD6176VHYGeMV+h76VMH1F6xbeGbTCCPAtIIaF7hdD2gpVGgZAK+SdvCPymiiRFikNZhfgXpYa1ACcpRWoS/VeEjXcYYxo8YQhEhrfNDPEJIK9LWTI2RIZpv0S9mIGGUrlrQWyBoVtj04NHTrdQoWRn0iyym1jFCRzsy8lTh/lfhJj0PuS01gjpiKpPeyBjpQEIOAaow9YCWg8RJyZDesKVJCcOdmL9Jcwkuwa+JdOJlJCxNMtTWVBlDHBrIIqgFtSwa3L2MNRU1BgeUNVXCIIc6ikSdu5NAugIHYww3oKyqDUgcGgT/fpV03GDmmBV1NC9I3a5bFStqDY0LUMOKXbdXLKsVWp9NBcuWzqsoo3oGZb5ur5j7WEKFD0qY+8jVrfnirOt5CvLJo65/cZ6h3xU8WpRiRT60icKj3RUYf+4ILi2ELApnkEUILu2OwNMdzp0g0sidDSWCcO7ccXTorr0gUhAvQIoqXHsnKm6THqJF9oKkEKKK262KWw7nXgAJpDkUjILBu08gAOfeLapgN6893vMjjhQH0dhe2F4QDc6ODD8e7928xh5M+uiQ7IT0rQVMYGKLKjh7snx4MMn63oeR4JA19csEVWQNXiaMvvdsdCNCXe1kjnVGY1ZkjM5UBKMb7MfTih7DSdI23apIG+25iv7jKUNkd7KqR2GRMjYt3VaxuZAy7LmqvjuJCEMXnuqTFT0CkyRHtyqSRitX0fVJPEUXrcwK+VuYrsVDS+dXiIdtOjuugLK5oK5DsXR+BRR1nR6itHSrYhQK8crS+RWUUEydt+xmFxh02x/yFy98PdyB7+HaAAAAAElFTkSuQmCC') no-repeat center center; +} +.community-list .community-list-body { + display: table; + width: 100%; + padding: 10px 0; +} +.community-list .news-community-badge { + background: var(--theme, #5ac800); + color: #FFF; + display: inline-block; + font-size: 10px; + margin: 0; + position: relative; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -ms-border-radius: 3px; + -o-border-radius: 3px; + border-radius: 3px; +} +.community-list .news-community-badge + .title { + margin-top: 0; +} +.community-list .community-list-body { + display: table; + width: 100%; + padding: 10px 0; +} +.community-list .icon-container { + float: none; + display: table-cell; + *display: inline; + *zoom: 1; + vertical-align: middle; + line-height: 0; + padding: 0 0 0 10px; +} +.community-list .icon-container .icon { + border: 1px solid #dddddd; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -ms-border-radius: 3px; + -o-border-radius: 3px; + border-radius: 3px; +} +.community-list .user-community .icon-container .icon { + width: 36px; + height: 36px; +} +.community-list .title { + display: block; + font-size: 16px; + font-weight: bold; + color: #323232; + margin-bottom: 2px; + margin-top: 3px; + line-height: 1.2; + position: relative; +} +.community-list .title:hover { + text-decoration: none; +} +.community-list .text { + color: #969696; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + word-wrap: normal; + display: block; +} +.community-list .body { + margin-left: 0; + display: table-cell; + vertical-align: middle; + *display: inline; + *zoom: 1; + padding: 5px 15px 0 10px; + word-wrap: break-word; + max-width: 176px; +} +.community-list .community-list-cover { + display: none; +} +.community-list.other-communities-list .text { + display: none; +} +.community-list .siblings { + display: table-cell; + vertical-align: middle; + *display: inline; + *zoom: 1; + padding: 0 5px; + width: 40px; + color: #969696; + text-align: center; + border-left: 1px solid #dddddd; + *width: 70px; + *text-align: left; + *cursor: pointer; + z-index: 2; +} +.community-list .siblings:before { + content: 'l'; + font-size: 30px; + line-height: 56px; +} +.community-list .siblings:hover { + text-decoration: none; +} +.community-card-list { + margin-bottom: 3px; + *zoom: 1; +} +.community-card-list:after { + content: ""; + display: block; + clear: both; +} +.community-card-list > li { + background: #fff; + border: 1px solid rgba(0, 0, 0, 0.1); + overflow: hidden; + -webkit-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -ms-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -o-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; + margin: 0 1% 8px 0; + width: 49.5%; + float: left; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + -o-box-sizing: border-box; + box-sizing: border-box; +} +.community-card-list > li:after { + content: none; +} +.community-card-list > li:nth-child(2n) { + margin-right: 0; +} +.community-card-list > li:nth-child(2n+1) { + clear: both; +} +.community-card-list .community-list-body { + padding: 0; +} +.community-card-list .icon-container { + padding: 10px 0 10px 10px; +} +.community-card-list .body { + padding: 5px 10px 0; +} +.community-card-list .community-list-cover { + display: block; +} +.community-card-list .title { + overflow: hidden; + max-height: 2.4em; + -webkit-line-clamp: 2; + display: -webkit-box; + -webkit-box-orient: vertical; +} +.community-small-list .icon-container { + width: 50px; + height: 50px; +} +.community-small-list .icon-container .icon { + width: 48px; + height: 48px; +} +.community-small-list .body { + padding: 10px 15px 10px 10px; +} +.device-new-community-list .community-list-cover, +.special-community-list .community-list-cover { + display: none; +} +.community-list-cover { + width: 100%; + min-height: 131px; + display: block; + border-bottom: 1px solid #ddd; + -webkit-border-radius: 3px 3px 0 0; + -moz-border-radius: 3px 3px 0 0; + -ms-border-radius: 3px 3px 0 0; + -o-border-radius: 3px 3px 0 0; + border-radius: 3px 3px 0 0; +} +.post-list-loading { + text-align: center; +} +.post-list-loading img { + width: 22px; + height: 22px; +} +.list-content-with-icon-and-text li { + *zoom: 1; + padding: 15px; + border-top: 1px solid #dddddd; + background-repeat: no-repeat; +} +.list-content-with-icon-and-text li:after { + content: ""; + display: block; + clear: both; +} +.list-content-with-icon-and-text .title { + margin-bottom: 2px; + margin-top: 6px; + display: block; +} +.list-content-with-icon-and-text .text { + color: #969696; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + word-wrap: normal; + display: block; + height: 1.6em; +} +.list-content-with-icon-and-text .text.placeholder { + color: #999 !important; +} +.list-content-with-icon-and-text .text.type-memo { + font-style: italic; +} +.list-content-with-icon-and-text .text.my:before { +content: "b"; +font-family: "MiiverseSymbols"; +margin-right: 5px; +} +.list-content-with-icon-and-text .timestamp { + float: right; + margin: 0 5px; + color: #969696; +} +.list-content-with-icon-and-text .body { + margin-left: 66px; +} +.list-content-with-icon-and-text .nick-name { + font-size: 16px; + font-weight: bold; + color: #323232; +} +.list-content-with-icon-and-text .nick-name a { + color: #323232; +} +.list-content-with-icon-and-text .id-name { + font-size: 12px; + line-height: 14px; + padding: 1px 3px; + margin-top: 2px; + color: #969696; + margin-right: 5px; +} +.list-content-with-icon-and-text .toggle-button { + float: right; + margin: 10px 0 0 10px; +} +.list-content-with-icon-and-text .user-profile-memo-content { + margin-top: 10px; + margin-bottom: 5px; + text-align: center; + margin-right: 62px; +} +.list-content-with-icon-and-text .user-profile-memo-content img { + width: 100%; + max-width: 320px; + vertical-align: bottom; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; +} +select { + min-width: 80%; + margin: 0; + font-size: 16px; + border: 1px solid #bbb; +} +form.search { + margin: 0 0 15px; + text-align: left; + background: #fff; + border: 3px solid #e0e0e0; + width: 100%; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + -o-box-sizing: border-box; + box-sizing: border-box; +} +form.search input[type="text"] { + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + -o-appearance: none; + appearance: none; + box-shadow: none; + border: none; + font-size: 16px; + width: 86%; + height: 32px; + padding: 0 0 0 2%; + line-height: 32px; + margin: 0; + vertical-align: middle; + display: inline-block; + *display: inline; + *zoom: 1; +} +form.search input[type="text"]:focus { + outline: none; +} +form.search input[type="submit"] { + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + -o-appearance: none; + appearance: none; + background: #fff; + background-image: none; + border: none; + color: #646464; + font-family: 'MiiverseSymbols', sans-serif !important; + font-size: 16px; + font-weight: normal!important; + height: 32px; + margin: 0; + padding: 0; + text-align: center; + vertical-align: middle; + width: 12%; + float: right; + display: inline-block; + *display: inline; + *zoom: 1; +} +#post-form { + margin: 15px; + position: relative; +} +#post-form.folded { + margin: 15px 15px 10px; +} +#post-form.folded .textarea-text { + height: 3.4em; + line-height: 1.2em; +} +.textarea-memo img { + margin-top: 30px; + margin-bottom: 10px; +} +/* +canvas { + +} +*/ +#post-form.folded .feeling-selector, +#post-form.folded .multi-language-selector, +#post-form.folded .language-id-selector, +#post-form.folded .language-bodies, +#post-form.folded .spoiler-button, +#post-form.folded .select-from-album-button, +#post-form.folded .topic-categories-container, +#post-form.folded .url-form, +#post-form.folded .form-buttons, +#post-form.folded .file-button-container, +#post-form.folded .textarea-menu, +#post-form.folded .region-ids, +#post-form.folded .open-topic-post-existing-warning, +#post-form.folded.body-folded .textarea-text { + display: none; +} +#post-form + #community-post-list .list > div:first-child { + border-top: 1px solid #dddddd; +} +.tutorial-window { + background-color: rgba(255, 255, 255, 0.9); + width: 100%; + display: -webkit-box; + display: -moz-box; + display: -ms-box; + display: -o-box; + display: box; + -webkit-box-align: center; + -moz-box-align: center; + -ms-box-align: center; + -o-box-align: center; + box-align: center; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + -o-box-sizing: border-box; + box-sizing: border-box; +} +.tutorial-window .content { + border: 2px solid var(--theme, #5ac800); + padding: 25px 20px; + -webkit-border-radius: 10px; + -moz-border-radius: 10px; + -ms-border-radius: 10px; + -o-border-radius: 10px; + border-radius: 10px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + -o-box-sizing: border-box; + box-sizing: border-box; + width: 100%; +} +.tutorial-window .window-bottom-buttons { + margin-top: 12px; +} +.open-topic-post-existing-warning { + height: 100%; + left: 0; + top: 0; + position: absolute; + z-index: 2; +} +.open-topic-post-existing-warning + .textarea-container .textarea { + margin: 0 0 -10px; + outline: none; +} +.topic-title-input, +.textarea { + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + -o-appearance: none; + appearance: none; + resize: vertical; + width: 96%; + padding: 1.8%; + margin: 0 0 10px; + border: 1px solid #969696; + font-size: 16px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; + -webkit-box-shadow: inset 0 2px 6px rgba(0,0,0,0.12), 0 1px 0 #fff; + -moz-box-shadow: inset 0 2px 6px rgba(0,0,0,0.12), 0 1px 0 #fff; + -ms-box-shadow: inset 0 2px 6px rgba(0,0,0,0.12), 0 1px 0 #fff; + -o-box-shadow: inset 0 2px 6px rgba(0,0,0,0.12), 0 1px 0 #fff; + box-shadow: inset 0 2px 6px rgba(0,0,0,0.12), 0 1px 0 #fff; +} +.topic-title-input.with-image, +.textarea.with-image { + padding-left: 23.8%; + width: 74%; +} +.textarea { + height: 5.6em; +} +.feeling-selector { + height: 61px; + margin-bottom: 15px; + text-align: center; + background-color: #646464; + background: -webkit-gradient(linear, left top, left bottom, from(#646464), to(#969696)); + background: -webkit-linear-gradient(top, #646464 #969696); + background: -moz-linear-gradient(top, #646464 #969696); + background: -ms-linear-gradient(top, #646464 #969696); + background: -o-linear-gradient(top, #646464 #969696); + background: linear-gradient(top, #646464 #969696); + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; +} +.feeling-selector .feeling-button { + font-size: 45px; + font-weight: normal !important; + color: #FFFFFF; + text-shadow: 0px 1px 6px #000000; + -ms-filter: progid:DXImageTransform.Microsoft.DropShadow(offx=0px, offy=1px, color=#000000); + line-height: 60px; + display: inline-block; + *display: inline; + *zoom: 1; + width: 15%; + position: relative; +} +.feeling-selector .feeling-button.checked { + color: var(--theme, #5ac800); +} +.feeling-selector input { + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + -o-appearance: none; + appearance: none; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + margin: 0; + outline: 0; + -webkit-opacity: 0; + -moz-opacity: 0; + -ms-opacity: 0; + -o-opacity: 0; + opacity: 0; +} +.ie8-earlier .feeling-selector input { + display: inline; + height: 0; + width: 0; + outline: none; +} +.ie8-earlier .feeling-selector .feeling-button.changing:before { + content: none; +} +.feeling-selector .feeling-button-normal:before { + content: "C"; +} +.feeling-selector .feeling-button-happy:before { + content: "H"; +} +.feeling-selector .feeling-button-like:before { + content: "L"; +} +.feeling-selector .feeling-button-surprised:before { + content: "O"; +} +.feeling-selector .feeling-button-frustrated:before { + content: "G"; +} +.feeling-selector .feeling-button-puzzled:before { + content: "U"; +} +.topic-categories-container { + position: relative; + margin: 5px 0 15px; + background: #fff; + font-size: 14px; + font-weight: bold; + text-align: center; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; + -webkit-box-shadow: 0 1px 0 #ffffff; + -moz-box-shadow: 0 1px 0 #ffffff; + -ms-box-shadow: 0 1px 0 #ffffff; + -o-box-shadow: 0 1px 0 #ffffff; + box-shadow: 0 1px 0 #ffffff; + width: 100%; + padding: 0; +} +.topic-categories-container .tag-categories-icon { + position: relative; + display: block; + float: left; + padding: 3px 10px 1px; + border-radius: 6px; + background: #e8316e; + height: 25px; + width: 27px; +} +.topic-categories-container .tag-categories-icon:before { + position: absolute; + left: 16px; + top: 2px; + content: "t"; + font-size: 19px; + color: #fff; +} +.topic-categories-container .tag-categories-icon:after { + left: 100%; + top: 50%; + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; + pointer-events: none; + border-color: rgba(213, 115, 180, 0); + border-left-color: #e8316e; + border-width: 6px; + margin-top: -6px; +} +.ie8-earlier .topic-categories-container.changing:before { + content: none; +} +.topic-categories-container select { + display: block; + margin-left: 60px; + min-width: 532px; + height: 30px; +} +.language-id-selector:not(.none) + .topic-categories-container + .topic-title-input { + display: none; +} +.post-count-container { + text-align: right; + color: #969696; + font-size: 11px; + margin-bottom: 3px; +} +.post-count-container .remaining-today-post-count { + color: #646464; + font-size: 13px; + padding: 0 7px 0 3px; +} +.post-form-footer-options { + display: table; + width: 100%; + margin: 0 0 15px; +} +.post-form-footer-options .post-form-footer-option-inner { + display: table-cell; + vertical-align: middle; +} +.post-form-footer-options .post-form-select-from-album { + width: 60%; + padding-right: 10px; +} +.post-form-footer-options .select-from-album-button { + width: 100%; + font-size: 14px; +} +.post-form-footer-options .select-from-album-button:before { + content: "X"; + vertical-align: middle; + font-size: 20px; + line-height: 20px; +} +.spoiler-button { + position: relative; + display: block; + margin: 0; + border: 1px solid #dddddd; + background: #fff; + font-size: 14px; + font-weight: bold; + text-align: center; + padding: 10px 0; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; + -webkit-box-shadow: 0 1px 0 #ffffff; + -moz-box-shadow: 0 1px 0 #ffffff; + -ms-box-shadow: 0 1px 0 #ffffff; + -o-box-shadow: 0 1px 0 #ffffff; + box-shadow: 0 1px 0 #ffffff; +} +.spoiler-button:before { + content: "v"; + font-size: 20px; + line-height: 20px; + color: #dddddd; +} +.spoiler-button input { + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + -o-appearance: none; + appearance: none; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + margin: 0; + -webkit-opacity: 0; + -moz-opacity: 0; + -ms-opacity: 0; + -o-opacity: 0; + opacity: 0; +} +.spoiler-button.checked { + color: var(--theme, #5ac800); +} +.spoiler-button.checked:before { + color: var(--theme, #5ac800); +} +.form-buttons { + margin-top: 20px; + text-align: center; +} +.form-buttons.three button { + margin-bottom: 10px; +} +.form-buttons.three { + margin-bottom: -14px; +} +.form-buttons input { + display: inline-block; + *display: inline; + *zoom: 1; +} +.form-buttons .gray-button { + margin-right: 10px; +} +.warning-content-forward .age-gate p { + padding: 20px 0; +} +.warning-content-forward .age-gate .select-content { + margin: 0 0 30px; +} +.warning-content-forward .age-gate .select-button { + width: 90px; + display: inline-block; + *display: inline; + *zoom: 1; +} +.warning-content-forward .age-gate .year-select { + width: 110px; +} +.warning-content-forward .age-gate select { + height: 28px; +} +#community-content { + padding-bottom: 10px; + overflow: hidden; +} +.url-form { + width: 96%; + padding: 1.8%; + border: 1px solid #969696; + font-size: 16px; + border-radius: 5px; + box-shadow: inset 0 2px 6px rgba(0,0,0,0.12), 0 1px 0 #fff; +} +.file-button-container { + margin-top: 15px; + background: #f6f6f6; + padding: 1.8%; + display: block; + margin-bottom: 15px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; +} +.input-label { + display: block; + color: #646464; +} +.input-label span { + font-size: 12px; + color: #969696; +} +input.file-button { + font-size: 16px; + color: #646464; + margin-top: 5px; + background: #f6f6f6; + width: 96%; +} +.region-ids, +.multi-language-selector, +.language-id-selector { + margin: 15px 0 10px; + background: #f6f6f6; + padding: 1.8%; + display: block; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; +} +.language-id-selector:not(.none) + .textarea-container .album-image-preview { + position: static; + text-align: center; + width: 100%; + margin: 12px 0 0 0; +} +.language-id-selector:not(.none) + .textarea-container .album-image-preview img { + height: 80px; + width: auto; +} +.region-ids label { + margin: 0 5px 5px 0; + display: inline-block; + *display: inline; + *zoom: 1; +} +#reply-form { + margin: 15px 15px 20px; +} +.textarea-container { + position: relative; +} +.textarea-container .community-container { + background: #f6f6f6; + padding: 5px; + margin-bottom: 5px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + word-wrap: normal; +} +.textarea-container .community-container .community-icon { + width: 28px; + height: 28px; + vertical-align: middle; + margin-right: 4px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; +} +.textarea-container .album-image-preview { + position: absolute; + left: 2%; + top: 55px; + width: 20%; +} +.textarea-container .album-image-preview img { + height: auto; + width: 100%; + vertical-align: bottom; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -ms-border-radius: 3px; + -o-border-radius: 3px; + border-radius: 3px; +} +.community-post-list .textarea-container .community-container, +.community-top .textarea-container .community-container { + display: none; +} +.community-post-list .textarea-container .album-image-preview, +.community-top .textarea-container .album-image-preview { + top: 15px; +} +.mask { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + margin: 0; + padding: 0; + border: 0; + background: url('/s/img/mask-bg-white.png'); + background: rgba(240, 240, 240, 0.6); + z-index: 31; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} +body.masked { + overflow: hidden; + + } +.dialog { + display: table; + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 30; +} +.dialog.active-dialog { + z-index: 32; +} +.dialog.track-error .window-body { + padding: 30px 25px 40px; +} +.dialog .dialog-inner { + -webkit-backdrop-filter: blur(5px); + backdrop-filter: blur(5px); + display: table-cell; + vertical-align: middle; + *display: inline; + *zoom: 1; + *padding-top: 20px; +} +.dialog .window { + width: 615px; + margin: auto; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; + -webkit-box-shadow: 0 2px 10px rgba(0, 0, 0, 0.5); + -moz-box-shadow: 0 2px 10px rgba(0, 0, 0, 0.5); + -ms-box-shadow: 0 2px 10px rgba(0, 0, 0, 0.5); + -o-box-shadow: 0 2px 10px rgba(0, 0, 0, 0.5); + box-shadow: 0 2px 10px rgba(0, 0, 0, 0.5); +} +.dialog .window-title { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + word-wrap: normal; + height: 34px; + padding: 0 10px; +border-top: 1px solid var(--theme, #94ff3d); + border-bottom: 1px solid var(--theme, #5ac800); + background: var(--theme, #5ac800); + color: #fff; + font-size: 16px; + font-weight: bold; + line-height: 34px; + text-align: center; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.3); + -webkit-border-radius: 5px 5px 0 0; + -moz-border-radius: 5px 5px 0 0; + -ms-border-radius: 5px 5px 0 0; + -o-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} +.dialog .window-body { + padding: 10px 10px 20px; + -webkit-border-radius: 0 0 5px 5px; + -moz-border-radius: 0 0 5px 5px; + -ms-border-radius: 0 0 5px 5px; + -o-border-radius: 0 0 5px 5px; + border-radius: 0 0 5px 5px; + background: #fff; + border: 1px solid #dddddd; + border-top: none; +/*text-align: center;*/ +} +.dialog .window-body-content { + display: inline-block; + *display: inline; + *zoom: 1; + padding: 10px 0; +} +.dialog .select-content { + text-align: center; +} +.dialog .select-button-content { + padding: 10px 0; + display: inline-block; + *display: inline; + *zoom: 1; +} +.dialog .textarea { + margin: 15px 0 0; +} +.dialog .form-buttons { + margin-top: 10px; +} +.dialog p.description { + text-align: left; + margin: 0 0 10px 0px; +} +.dialog span.note { + font-size: 12px; + color: #969696; + display: block; +} +.dialog .post-id, +.dialog .violator-id { + margin: 10px 0; + color: #969696; + font-size: 12px; +} +#disabled-report-violation-notice .window-body-inner { + text-align: center; +} +#disabled-report-violation-notice .window-body-inner p { + display: inline-block; + margin: 10px auto 5px; + text-align: left; +} +.dialog#edit-post-page .window-body { + text-align: center; +} +#official-tags-page .window-body { + text-align: center; +} +#official-tags-page ul { + margin: 10px 0 15px; +} +#official-tags-page li { + display: inline-block; + *display: inline; + *zoom: 1; + margin: 5px; + max-width: 460px; +} +#official-tags-page li a { + color: #00acca; + width: auto; + padding: 5px 15px; + font-size: 16px; + text-align: left; +} +#official-tags-page li a:before { + content: "t"; + font-size: 19px; + vertical-align: middle; + color: #00acca; + margin-right: 5px; +} +.card { + background: #fff; + border: 1px solid rgba(0, 0, 0, 0.1); + overflow: hidden; + -webkit-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -ms-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -o-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; +} +.sidebar-container { + margin: 0 0 15px 0; + background: #fff; + border: 1px solid rgba(0, 0, 0, 0.1); + overflow: hidden; + -webkit-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -ms-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -o-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; +} +.sidebar-container .report-buttons-content { + padding: 0 10px 10px; + margin: -5px 0 0; +} +.sidebar-container .shop-buttons-container .button-shop { + margin-bottom: 10px; +} +.sidebar-container .shop-buttons-notice { + margin: 0 15px 15px; + font-size: 12px; + color: #969696; +} +.sidebar-container h4 a { + clear: both; + display: block; + padding: 11px 20px 9px 15px; + background: url('/s/img/icon-arrow-right.png') no-repeat 97.5% center; + color: #323232; + -webkit-background-size: 9px 15px; + -moz-background-size: 9px 15px; + -ms-background-size: 9px 15px; + -o-background-size: 9px 15px; + background-size: 9px 15px; + display: table; + width: 100%; + padding: 0; + position: relative; +} +.sidebar-container h4 a:hover { + background-color: #f9f9f9; +} +.sidebar-container h4 a:before { + font-size: 20px; + line-height: 20px; + vertical-align: middle; + padding: 0 8px 0 12px; + width: 27px; + text-align: center; + display: inline-block; + *display: inline; + *zoom: 1; + position: absolute; + top: 50%; + margin-top: -12px; +} +.sidebar-container h4 span { + display: table-cell; + padding: 12px 30px 12px 47px; +} +.sidebar-container h4 .favorite-community-button:before { + content: "s"; + color: #f79726; +} +.sidebar-container .community-list .icon-container { + width: 50px; + height: 50px; +} +.sidebar-container .community-list .icon-container .icon { + width: 48px; + height: 48px; +} +.sidebar-container .community-list .user-community .icon-container { + padding: 0 0 0 10px; +} +.sidebar-container .community-list .user-community .icon-container .icon, +.sidebar-container .community-list .user-community .icon-container .user-icon { + width: 32px; + height: 32px; +} +.sidebar-container .community-list .title { + background-image: none; + border: none; + font-size: 14px; + padding: 0; +} +.sidebar-container .community-list .text { + display: none; +} +.sidebar-container .more-button { + padding: 8px 0; + text-align: center; + background-image: none; +} +#sidebar-cover { + min-height: 120px; + background-repeat: no-repeat; + background-position: center; + background-size: cover; + border-bottom: 1px solid #dddddd; + display: block; + -webkit-border-radius: 5px 5px 0 0; + -moz-border-radius: 5px 5px 0 0; + -ms-border-radius: 5px 5px 0 0; + -o-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} +#sidebar-cover img { + display: block; + width: 100%; + -webkit-border-radius: 5px 5px 0 0; + -moz-border-radius: 5px 5px 0 0; + -ms-border-radius: 5px 5px 0 0; + -o-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} +.sidebar-setting li { + border-top: 1px solid #dddddd; +} +.sidebar-setting li:first-child { + border: none; +} +.sidebar-setting a { + clear: both; + padding: 11px 20px 9px 15px; + background: url('/s/img/icon-arrow-right.png') no-repeat 97.5% center; + color: #323232; + -webkit-background-size: 9px 15px; + -moz-background-size: 9px 15px; + -ms-background-size: 9px 15px; + -o-background-size: 9px 15px; + background-size: 9px 15px; + border-top: 1px solid #dddddd; + display: block; + width: 100%; + padding: 0; + position: relative; +} +.sidebar-setting a:hover { + background-color: #f9f9f9; +} +.sidebar-setting a:first-child { + border: none; +} +.sidebar-setting a:before { + font-size: 20px; + line-height: 20px; + vertical-align: middle; + padding: 0 8px 0 12px; + width: 27px; + text-align: center; + position: absolute; + top: 50%; + margin-top: -10px; + display: inline-block; + *display: inline; + *zoom: 1; +} +.sidebar-setting a > span { + padding: 12px 30px 12px 47px; + vertical-align: middle; + display: block; +} +.sidebar-setting a.with-count > span { + padding-right: 85px; +} +.sidebar-setting a.with-count > .post-count { + width: auto; + position: absolute; + right: 0; + top: 0; + padding-left: 0; + padding-right: 30px; +} +.sidebar-setting a.with-count > .post-count span { + font-size: 12px; + line-height: 12px; + background-color: rgba(0, 0, 0, 0.05); + color: #969696; + padding: 4px 8px; + min-width: 30px; + display: inline-block; + text-align: center; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -ms-border-radius: 3px; + -o-border-radius: 3px; + border-radius: 3px; +} +.sidebar-setting a.selected { + background-color: #f9f9f9; +} +.sidebar-setting a.selected span { + font-weight: bold; +} +.sidebar-setting .sidebar-menu-setting:before { + content: "Y"; + color: var(--theme, #5ac800); +} +.sidebar-setting .sidebar-menu-info:before { + content: "w"; + color: var(--theme, #5ac800); +} +.sidebar-setting .sidebar-menu-support:be fore { + content: "h"; + color: var(--theme, #5ac800); +} +.sidebar-setting .sidebar-menu-guide:before { + content: "g"; + color: var(--theme, #5ac800); +} +.sidebar-setting .sidebar-menu-diary:before { + content: "%"; + color: #04c9db; +} +.sidebar-setting .sidebar-menu-artwork:before { + content: "M"; + color: #fcc735; +} +.sidebar-setting .sidebar-menu-topic:before { + content: "$"; + color: #e8316e; + font-size: 23px; +} +.sidebar-setting .sidebar-menu-in_game:before { + content: "&"; + color: var(--theme, #5ac800); +} +.sidebar-setting .sidebar-menu-relation:before { + content: "l"; + color: var(--theme, #5ac800); +} +.sidebar-setting .sidebar-menu-post:before { + content: "p"; + color: var(--theme, #5ac800); +} +.sidebar-setting .sidebar-menu-album:before { + content: "X"; +} +.sidebar-setting .sidebar-menu-empathies:before { + content: "e"; + color: var(--theme, #5ac800); +} +.sidebar-setting .sidebar-menu-replies:before { + content: "r"; + color: var(--theme, #5ac800); +} +.sidebar-container #user-dropdown > span.button { + width: 35px; + float: right; + margin: 5px 5px 5px 5px; + padding: 0px 0px 35px 0px; +} +.sidebar-container #user-dropdown > .button:before { + content: 'y'; +} +.sidebar-container #user-dropdown > .button:after { + font-family: 'MiiverseSymbols', sans-serif; + font-weight: normal; + content: 'V'; + vertical-align: middle; + padding-left: 8px; + display: inline-block; + *display: inline; + *zoom: 1; +} +#sidebar-profile-body { + padding: 0 15px 10px; + *zoom: 1; +} +#sidebar-profile-body:after { + content: ""; + display: block; + clear: both; +} +#sidebar-profile-body .icon-container { + width: 74px; + height: 74px; + float: left; + position: relative; +} +#sidebar-profile-body .icon { + width: 72px; + height: 72px; + border: 1px solid #dddddd; + margin-top: 0; + background-color: #fff; +} +#sidebar-profile-body .user-organization { + margin: 15px 0 -10px 85px; + line-height: 1.2em; +} +#sidebar-profile-body .nick-name { + color: #323232; + font-size: 18px; + font-weight: bold; + display: block; + margin: 15px 0 0 85px; + line-height: 1.2; + padding-top: 8px; +} +#sidebar-profile-body .nick-name:hover { + text-decoration: underline; +} +#sidebar-profile-body .user-organization + .nick-name { + margin-top: 2px; +} +#sidebar-profile-body .id-name { + color: #969696; + font-size: 14px; + margin-left: 85px; + font-weight: normal; +} +#sidebar-profile-body.with-profile-post-image .user-organization { + margin-top: 10px; +} +#sidebar-profile-body.with-profile-post-image .icon-container { + margin-top: -20px; +} +#sidebar-profile-body.with-profile-post-image .nick-name { + padding-top: 0; + margin-top: 10px; +} +#sidebar-profile-status { + background: #f6f6f6; + display: table; + width: 100%; + -webkit-border-radius: 0 0 3px 3px; + -moz-border-radius: 0 0 3px 3px; + -ms-border-radius: 0 0 3px 3px; + -o-border-radius: 0 0 3px 3px; + border-radius: 0 0 3px 3px; +} +#sidebar-profile-status li { + font-size: 10px; + text-align: center; + display: table-cell; + min-width: 70px; +} +#sidebar-profile-status li:last-child a span { + border-right: none; +} +#sidebar-profile-status li a { + color: #9f9f9f; + display: block; + padding: 10px 0; +} +#sidebar-profile-status li a > span { + display: block; + border-right: 1px solid #dddddd; +} +#sidebar-profile-status li a:hover { + text-decoration: underline; +} +#sidebar-profile-status li a.selected { + font-weight: bold; + background-image: url('/s/img/bg-select.png'); + background-size: 6px auto; +} +#sidebar-profile-status .number { + color: #323232; + font-size: 18px; + display: block; + margin-bottom: -2px; +} +.user-sidebar #sidebar-cover img, +.general-sidebar #sidebar-cover img { + display: none; +} +.user-sidebar .button:before { + display: inline-block; + margin-top: -2px; + margin-right: 5px; + font-size: 16px; + vertical-align: middle; +} +.user-sidebar #edit-profile-settings .button:before { + content: 'Z'; +} +.user-sidebar .unfollow-button { + padding-right: 35px; + position: relative; +} +.user-sidebar .unfollow-button:before { + background-color: #969696; + content: "x"; + position: absolute; + right: 0; + top: 0px; + height: 100%; + margin: 0; + width: 35px; + color: #fff; + line-height: 45px; + -webkit-border-radius: 0 5px 5px 0; + -moz-border-radius: 0 5px 5px 0; + -ms-border-radius: 0 5px 5px 0; + -o-border-radius: 0 5px 5px 0; + border-radius: 0 5px 5px 0; +} +.user-sidebar .follow-button:before { + color: var(--theme, #5ac800); + font-size: 13px; + content: "Q"; +} +.user-sidebar .friend-button:before { + color: var(--theme, #5ac800); + font-size: 15px; + content: "F"; +} +.received-request-button { + float: right; +} +.user-sidebar .friend-button.unf:before { + content: "f" !important; +} +.user-sidebar .unfriend-button:before { + color: var(--theme, #5ac800); + font-size: 15px; + content: "f"; +} +.user-sidebar .follow-done-button:before { + color: var(--theme, #5ac800); + content: "v"; +} +.user-sidebar .follow-done-button:hover { + -webkit-box-shadow: none; + -moz-box-shadow: none; + -ms-box-shadow: none; + -o-box-shadow: none; + box-shadow: none; +} +.sidebar-profile { + padding: 20px 15px 20px 15px; +} +.sidebar-profile .profile-comment { + color: #646464; + background-color: #f6f6f6; + margin-bottom: 10px; + padding: 15px; + line-height: 1.5; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; + *zoom: 1; +} +.sidebar-profile .profile-comment:after { + content: ""; + display: block; + clear: both; +} +.description-more-button { + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + -o-appearance: none; + appearance: none; + background-color: transparent; + border: none; + color: #969696; + float: right; + font-size: 12px; + margin: 5px 0 0; +} +.description-more-button:hover { + text-decoration: underline; + color: #323232; +} +.user-data .data-content { + display: table; + width: 100%; + margin-bottom: 10px; + border-collapse: collapse; +} +.user-data h4 { + color: #fff; + width: 1%; + display: table-cell; + vertical-align: bottom; +} +.user-data h4 span { + background-color: var(--theme, #5ac800); + padding: 2px 12px 1px; + display: block; + white-space: nowrap; + margin-bottom: -1px; + font-size: 12px; + -webkit-border-radius: 20px; + -moz-border-radius: 20px; + -ms-border-radius: 20px; + -o-border-radius: 20px; + border-radius: 20px; +} +.user-data .note { + border-bottom: 2px dashed #dddddd; + display: table-cell; + font-size: 14px; + text-align: right; + padding: 0 0 0 4px; +} +.user-data .user-main-profile { + display: block; +} +.user-data .user-main-profile h4 { + display: inline-block; + float: left; + width: auto; + margin: 2px 0 0 0; +} +.user-data .user-main-profile .note { + display: block; + margin-left: 10px; + margin-bottom: 10px; +} +.user-data .user-main-profile .note.birthday { + margin-bottom: 5px; +} +.user-data .game h4, +.user-data .game-skill h4, +.user-data .game .note, +.user-data .game-skill .note { + display: table-cell; + vertical-align: bottom; +} +.user-data td, th { + background: #ededed; + border: 1px #000 solid; + font-size: 11px; + border-spacing: 5px; + border-radius: 5px; + text-align: center; +} +.user-data .game-skill .note span:before { + width: 26px; + height: 26px; + margin-right: 5px; + vertical-align: text-bottom; + display: inline-block; + content: ''; + margin-bottom: 2px; + background-size: 26px auto; +} +.user-data .game-skill span.beginner:before { + background-image: url('/s/img/skill-beginner.png'); +} +.user-data .game-skill span.intermediate:before { + background-image: url('/s/img/skill-intermediate.png'); +} +.user-data .game-skill span.expert:before { + background-image: url('/s/img/skill-expert.png'); +} +.user-data .game .note > div { + display: inline-block; +} +.user-data .game .note img { + vertical-align: text-bottom; + margin-bottom: 2px; + margin-right: 3px; +} +.user-data .game .note span { + display: none; +} +.user-data .game .note .wiiu-icon { + width: 28px; +} +.user-data .game .note .n3ds-icon { + width: 21px; +} +.user-data .favorite-game-genre .note span { + display: inline-block; +} +.user-data .favorite-game-genre .note span:after { + content: "/"; + padding: 0 3px; +} +.user-data .favorite-game-genre .note span:last-child:after { + content: none; + padding: 0; +} +.sidebar-favorite-community ul { + margin: 5px 10px 10px; + *zoom: 1; +} +.sidebar-favorite-community ul:after { + content: ""; + display: block; + clear: both; +} +.sidebar-favorite-community li.favorite-community { + float: left; + width: 18%; + margin: 0 1% 5px; +} +.sidebar-favorite-community li.favorite-community:nth-child(5n+1) { + clear: both; +} +.sidebar-favorite-community li > a { + display: block; +} +.sidebar-favorite-community .icon-container { + float: none; + width: 100%; + height: auto; +} +.sidebar-favorite-community .icon-container .icon { + width: 100%; + height: auto; +} +.sidebar-favorite-community .platform-tag { + margin: 2px 0 0; + display: block; +} +.sidebar-favorite-community .platform-tag img { + width: 100%; + height: auto; + display: block; +} +#sidebar-community .sidebar-setting a { + border-top: 1px solid #dddddd; +} +.community-name { + font-size: 16px; + font-weight: bold; + margin: 3px 0 0 68px; + line-height: 1.2; + color: #323232; +} +.community-name a { + color: #323232; +} +.community-name a:hover { + text-decoration: underline; +} +.community-name .owner { + display: inline-block; + padding: 2px 5px; + background: #f6f6f6; + color: #969696; + font-size: 12px; + line-height: 16px; + margin-left: 5px; + margin-top: 5px; + font-weight: normal; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; +} +#sidebar-community-body { + padding: 13px 15px 5px; + display: block; + *zoom: 1; +} +#sidebar-community-body:after { + content: ""; + display: block; + clear: both; +} +#sidebar-community-img { + width: 58px; + float: left; +} +.news-community-badge { + display: inline-block; + *display: inline; + *zoom: 1; + background: var(--theme, #5ac800); + font-size: 10px; + color: #FFF; + margin-left: 10px; + padding: 1px 5px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -ms-border-radius: 3px; + -o-border-radius: 3px; + border-radius: 3px; + position: relative; + top: -3px; +} +.news-community-badge + .title { + margin-top: -3px; +} +.community-description { + color: #646464; + background-color: #f6f6f6; + margin: 0 15px 15px; + padding: 15px; + line-height: 1.5; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; + *zoom: 1; +} +.community-description:after { + content: ""; + display: block; + clear: both; +} +.sidebar-social-container { + margin-right: 0; + margin-bottom: 10px; + display: block; +} +/*.no-login-btn #global-menu-login { +display:none !important; +} +.no-login-btn #global-menu-list { +display:none !important; +} +*/ +.guest #global-menu-login { + float: right; + padding: 10px 0; +} +.guest #global-menu-login input { + height: 35px; +} +.guest .welcome-message { + padding: 10px 0; + font-size: 22px; + font-weight: bold; + color: var(--theme, #5ac800); + text-align: center; +} +.guest #try-miiverse .try-miiverse-catch { + font-size: 12px; + margin: 15px 15px -10px; + color: #969696; + line-height: 1.2; +} +.guest #try-miiverse #slide-post-container { + overflow: hidden; + height: 210px; + text-align: center; +} +.guest #try-miiverse #slide-post-container .post { + padding: 13px 15px 0; + margin: 0; +} +.guest #try-miiverse #slide-post-container .post .post-content-memo { + margin: 0; +} +.guest #try-miiverse #slide-post-container .post .screenshot-container.still-image { + float: right; + height: 48px; + margin: 0 0 5px 10px; + position: relative; + line-height: 0; +} +.guest #try-miiverse #slide-post-container .post .screenshot-container.still-image img { + height: 48px; + width: auto; +} +.guest #try-miiverse #slide-post-container .body { + display: table-cell; + *display: inline; + *zoom: 1; + vertical-align: middle; + height: 148px; + width: 930px; + margin: 0 auto; +} +.guest #try-miiverse #slide-post-container .post-content { + margin: 0; + display: inline-block; + *display: inline; + *zoom: 1; + text-align: left; + max-width: 930px; +} +.guest #try-miiverse #slide-post-container .with-image .post-content { + width: 420px; +} +.guest #try-miiverse h3.label { + margin-top: 0; +} +.guest #about { + background: #fff; + margin-bottom: 20px; + border-bottom: 2px solid #e5e5e5; +} +.guest #about p { + font-size: 14px; + padding: 0 14px 5px; + text-align: left; +} +.guest #about img { + width: 53%; + margin-top: 20px; + float: right; +} +.guest #about-inner { + max-width: 960px; + margin: 0 auto; + padding: 30px 25px 50px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + -o-box-sizing: border-box; + box-sizing: border-box; + *zoom: 1; +} +.guest #about-inner:after { + content: ""; + display: block; + clear: both; +} +.guest #about-text { + float: left; + width: 45%; +} +.guest .post-list + .arrow-button, +.guest .no-content + .arrow-button { + margin: 0 0 -10px; +} +.guest#help .arrow-button { + margin: 10px -15px -15px; + margin-top: 20px; + border-top: 1px solid #dddddd; +} +.guest .guest-terms-content { + text-align: center; + margin: 10px 14px 0; +} +.guest .guest-terms-link { + background-color: var(--theme, #5ac800); + color: #fff; + padding: 7px 35px 7px 20px; + position: relative; + line-height: 18px; + text-align: left; + display: inline-block; + *display: inline; + *zoom: 1; + -webkit-border-radius: 40px; + -moz-border-radius: 40px; + -ms-border-radius: 40px; + -o-border-radius: 40px; + border-radius: 40px; +} +.guest .guest-terms-link:hover { + background-color: #0055be; +} +.guest .guest-terms-link:before { + font-size: 10px; + content: 'A'; + color: #fff; + position: absolute; + right: 15px; + top: 50%; + margin-top: -9px; +} +#community-guide-footer { + float: left; + margin: 40px 0 0; + width: 625px; + *zoom: 1; +} +#community-guide-footer:after { + content: ""; + display: block; + clear: both; +} +#guide-menu { + background: #fff; + border: 1px solid rgba(0, 0, 0, 0.1); + overflow: hidden; + -webkit-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -ms-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -o-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; +} +#guide-menu:hover { + background: #fff; +} +#guide-menu .arrow-button { + border-top: 1px solid #dddddd; +} +#guide-menu .arrow-button:first-child { + border-top: none; +} +.guest.post-permlink #footer { + text-align: center; +} +.guest .guest-message p { + padding: 15px; + -webkit-border-radius: 0 0 5px 5px; + -moz-border-radius: 0 0 5px 5px; + -ms-border-radius: 0 0 5px 5px; + -o-border-radius: 0 0 5px 5px; + border-radius: 0 0 5px 5px; + color: #969696; + background: #f6f6f6; +} +.guest .guest-message .arrow-button { + border-top: 1px solid #dddddd; +} +.guest-top.guest #main-body { + max-width: 100%; + padding: 71px 0 170px; +} +.guest-top.guest #community-top { + max-width: 960px; + margin: 0 auto; +} +.guest-top.guest #cookie-policy-notice { + top: 0; +} +.setting-form { + margin: 20px 10px; +} +.setting-form li { + margin: 0 5px; + border-bottom: 1px solid #dddddd; + padding: 0 5px 15px; +} +.setting-form .settings-label { + margin: 20px 0 10px; +} +.setting-form .select-content { + text-align: right; +} +.setting-form .select-content select { + width: auto; + max-width: 100%; + min-width: 50%; +} +.setting-form .note { + font-size: 12px; + color: #969696; + margin: 0 0 10px; +} +.setting-form .note-attention { + font-size: 12px; + color: #e67877; + clear: both; +} +.setting-nnid input { + margin-left: 4px; + padding: 0px 8px; + border-radius: 5px; + border: 1px solid #dddddd; + height: 56px; + width: calc(100% - 80px); +} +.setting-nnid .error { + padding: 0px 8px; + color: red; +} +.setting-avatar .icon-container { + padding-right: 8px; + float: left; +} +.setting-form .note-attention:before { + content: ""; + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + -ms-border-radius: 50%; + -o-border-radius: 50%; + border-radius: 50%; + display: inline-block; + width: 10px; + height: 10px; + background-color: #e67877; + margin-right: 5px; +} +.setting-form .setting-profile-post button#profile-post { + margin: 0; + color: #fff; + padding: 0 0 8px; + border-radius: 6px; + border: 1px solid #969696; + background-color: #969696; + font-size: 14px; + overflow: hidden; +} +.setting-form .setting-profile-post button#profile-post span:before { + font-size: 12px; + content: 'x'; + margin-right: 7px; + vertical-align: middle; + margin-bottom: 2px; + display: inline-block; + *display: inline; + *zoom: 1; +} +.setting-form .setting-profile-post img { + display: block; + margin-bottom: 8px; + width: 240px; + height: auto; +} +.setting-form #favorite-game-genre .select-content { + margin-bottom: 10px; +} +.setting-form #favorite-game-genre .select-content:last-child { + margin-bottom: 0; +} +.download-request-setting-form { + margin: 20px 10px; +} +.download-request-setting-form h2 { + clear: both; + padding: 5px 10px 3px; + margin-top: 2em; + background: var(--theme, #5ac800); + color: #fff; + font-size: 14px; + border-radius: 5px; +} +.download-request-setting-form ol.asterisk { + counter-reset: number; + list-style: none; +} +.download-request-setting-form ol.asterisk li:before { + counter-increment: number; + content: "*" counter(number) " "; +} +.download-request-setting-form ul { + list-style: none; + margin: 10px 30px 10px; +} +.download-request-setting-form ul li:before { + content: '\25CF'; + margin: 0 0.2em 0 -0.9em; +} +.download-request-setting-form .settings-label { + margin: 10px 0 10px; +} +.download-request-setting-form .note { + font-size: 12px; + color: #969696; + margin: 0 10px 5px; +} +.download-request-setting-form .attention { + clear: both; + padding: 5px 10px 0; + border: 3px solid #fb625a; + margin: 10px 30px 0; + background: #fff; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; +} +.download-request-setting-form .attention p img { + vertical-align: middle; + max-width: 300px; + width: 100%; +} +.download-request-setting-form .attention .title { + margin: 0px -5px 5px; + padding: 5px; + Background-color: #fb625a; + color: #fff; +} +.download-request-setting-form .attention p.title img { + width: 20px; + height: 18px; + margin-right: 3px; + vertical-align: middle; +} +div#activity-feed-tutorial { + background-color: #fff; + border: 3px solid var(--theme, #5ac800); + border-radius: 10px; + height: auto; + padding: 25px 14px 15px; + margin: 10px 5px 20px; +} +div#activity-feed-tutorial p.tleft { + float: left; + width: 60%; + margin-right: 5%; +} +div#activity-feed-tutorial img.tutorial-image { + width: 35%; +} +div#activity-feed-tutorial h3 { + text-align: left; + clear: both; + color: var(--theme, #5ac800); + font-size: 14px; + border-bottom: 1px dashed #dddddd; + padding: 15px 0 3px; +} +div#activity-feed-tutorial .list-content-with-icon-and-text li { + margin: 0; + padding: 10px 0; + border: none; +} +div#activity-feed-tutorial .list-content-with-icon-and-text .title, +div#activity-feed-tutorial .list-content-with-icon-and-text .text { + text-align: left; +} +div#activity-feed-tutorial .trigger:hover { + background-color: transparent; + background-image: none; +} +div#activity-feed-tutorial.no-content { + margin: 10px auto 30px; + padding: 15px 0; + height: 100px; + border: none; +} +div#activity-feed-tutorial.no-content p.tleft { + color: #323232; + font-size: 14px; +} +.content-loading-window.activity-feed { + text-align: center; + padding: 110px 10px; +} +.content-loading-window.activity-feed p { + text-align: center; + margin-top: 10px; +} +.content-loading-window.activity-feed p span { + text-align: left; + display: inline-block; + *display: inline; + *zoom: 1; + color: #969696; +} +.content-loading-window.activity-feed img { + width: 22px; + height: 22px; + margin-right: 3px; +} +.content-load-error-window.activity-feed { + text-align: center; + padding: 40px 10px 30px; +} +.content-load-error-window.activity-feed p { + text-align: left; + margin: 30px 55px; + display: inline-block; + *display: inline; + *zoom: 1; +} +.community-title { + font-size: 16px; + margin: 2em 5px .4em; + text-align: left; + font-weight: bold; + color: #606060; +} +.community-title:before { + margin-right: 5px; + margin-top: -3px; + vertical-align: middle; + font-size: 18px; + display: inline-block; + *display: inline; + *zoom: 1; +} +.community-title > span { + padding: 3px 10px 0 0; + vertical-align: middle; + display: inline-block; + *display: inline; + *zoom: 1; +} +.community-title.hot-artwork-title:before { + content: 'M'; + color: #ffae00; + font-size: 20px; +} +.community-title.hot-topic-title:before { + content: '$'; + color: #e8316e; + font-size: 22px; +} +.community-title.community-favorite-title:before { + content: 's'; + color: #f79726; +} +.community-game-title { + font-size: 16px; + color: #323232; + font-weight: bold; + margin-bottom: 2px; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + word-wrap: normal; +} +.community-game-device { + color: #969696; + line-height: 1; +} +.community-main { + *zoom: 1; + width: 625px; + float: left; +} +.community-main:after { + content: ""; + display: block; + clear: both; +} +#community-eyecatch-main { + position: relative; + width: 100%; + height: 414px; +} +#community-eyecatch-main > div { + background: #fff; + border: 1px solid rgba(0, 0, 0, 0.1); + overflow: hidden; + -webkit-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -ms-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -o-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; +} +.eyecatch-diary-post { + position: absolute; + width: 100%; + height: 100%; + top: 0; + left: 0; + background-color: #fff; + opacity: 1; + z-index: 2; + transition-property: opacity; + transition-duration: 6s; + transition-timing-function: ease; + transition-delay: 0.5s; +} +.eyecatch-diary-post.invisible { + opacity: 0; + z-index: 1; +} +.community-eyecatch-image { + width: 100%; + display: block; + background-repeat: no-repeat; + background-size: cover; + background-position: center; + background-color: #dddddd; + padding: 278px 15px 15px 15px; + -webkit-border-radius: 3px 3px 0 0; + -moz-border-radius: 3px 3px 0 0; + -ms-border-radius: 3px 3px 0 0; + -o-border-radius: 3px 3px 0 0; + border-radius: 3px 3px 0 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + -o-box-sizing: border-box; + box-sizing: border-box; + *zoom: 1; +} +.community-eyecatch-image:after { + content: ""; + display: block; + clear: both; +} +.community-eyecatch-info { + *zoom: 1; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + -o-box-sizing: border-box; + box-sizing: border-box; + clear: both; + display: block; + padding: 11px 20px 9px 15px; + background: url('/s/img/icon-arrow-right.png') no-repeat 97.5% center; + color: #323232; + -webkit-background-size: 9px 15px; + -moz-background-size: 9px 15px; + -ms-background-size: 9px 15px; + -o-background-size: 9px 15px; + background-size: 9px 15px; + padding: 12px 25px 12px 12px; +} +.community-eyecatch-info:after { + content: ""; + display: block; + clear: both; +} +.community-eyecatch-info:hover { + background-color: #f9f9f9; +} +.community-eyecatch-infoicon { + float: left; + margin: 0 10px 0 0; + border: 1px solid #dddddd; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; +} +.community-eyecatch-balloon { + position: relative; + color: #323232; + background: rgba(255, 255, 255, 0.9); + padding: 7px 8px; + float: right; + width: 88%; + height: 58px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + -o-box-sizing: border-box; + box-sizing: border-box; + -webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3); + -moz-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3); + -ms-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3); + -o-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3); + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3); +} +.community-eyecatch-balloon:after { + content: ""; + position: absolute; + top: 50%; + left: -8px; + margin-top: -8px; + display: block; + width: 0px; + height: 0px; + border-style: solid; + border-width: 8px 8px 8px 0; + border-color: transparent rgba(255, 255, 255, 0.9) transparent transparent; +} +.community-eyecatch-balloon span { + height: 42px; + overflow: hidden; + display: block; + -webkit-line-clamp: 2; + display: -webkit-box; + -webkit-box-orient: vertical; +} +.community-top-sidebar { + width: 320px; + float: right; + text-align: center; +} +#community-favorite { + padding: 10px 0px 10px 10px; + background: #fff; + border: 1px solid rgba(0, 0, 0, 0.1); + overflow: hidden; + -webkit-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -ms-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -o-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; +} +#community-favorite:hover { + background: #fff; +} +#community-favorite ul { + position: relative; + display: block; + *zoom: 1; +} +#community-favorite ul:after { + content: ""; + display: block; + clear: both; +} +#community-favorite li { + float: left; + margin: 0 10px 0 0; + line-height: 1; + width: 58px; +} +#community-favorite a { + display: block; +} +#community-favorite .empty-icon img { + width: 100%; + height: auto; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; +} +#community-favorite img { + width: 100%; + height: auto; + vertical-align: bottom; +} +#community-favorite .user-community .icon-container .icon { + left: 0; +} +#community-favorite .user-community .icon-container .icon, +#community-favorite .user-community .icon-container .user-icon { + width: 65%; + height: 65%; +} +.favorite-community-link.symbol { + background: #f2f2f2; + display: inline-block; + top: 50%; + right: 15px; + width: 50px; + height: 50px; + margin-top: -25px; + position: absolute; + text-align: center; + -webkit-border-radius: 25px; + -moz-border-radius: 25px; + -ms-border-radius: 25px; + -o-border-radius: 25px; + border-radius: 25px; +} +.favorite-community-link.symbol:before { + content: 'A'; + color: #969696; + font-size: 18px; + line-height: 50px; + margin-left: 6px; +} +.favorite-community-link.symbol:hover { + background: #e6e6e6; +} +#identified-user-banner { + background: #fff; + border: 1px solid rgba(0, 0, 0, 0.1); + overflow: hidden; + -webkit-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -ms-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -o-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; + text-align: left; +} +#identified-user-banner a:before { + background: url(/s/img/identified-user-banner.png); + background-size: 100px 50px; + content: ''; + height: 50px; + float: left; + margin: 6px 9px 6px 10px; + width: 50px; + display: block; +} +#identified-user-banner:hover { + background-color: #f9f9f9; +} +#identified-user-banner .title { + font-size: 16px; + font-weight: bold; + display: block; + color: var(--theme, #5ac800); + padding: 12px 5px 4px 10px; + line-height: 1.3em; +} +#identified-user-banner .text { + font-size: 14px; + display: block; + color: #646464; + padding: 0 5px 10px 10px; + line-height: 1.2; +} +.platform-tag { + position: static; + float: left; + margin: 1px 5px 0 0; + display: inline-block; +} +.platform-tag img { + width: 58px; + height: 12px; +} +#community-top .platform-logo { + float: right; + margin-top: -6px; + width: 120px; + height: auto; +} +.filtering-label-container { + margin: 0 15px; +} +.filtering-label { + background: #f6f6f6; + display: table; + margin: 0 auto 10px; + width: 100%; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -ms-border-radius: 3px; + -o-border-radius: 3px; + border-radius: 3px; + *zoom: 1; +} +.filtering-label:after { + content: ""; + display: block; + clear: both; +} +.filtering-label .tag-name { + padding: 0; + font-size: 14px; + font-weight: bold; + color: var(--theme, #5ac800); + margin-right: 2px; +} +.filtering-label .tag-name:before { + content: "t"; + font-weight: normal; + font-size: 14px; + margin-right: 2px; + vertical-align: middle; + color: var(--theme, #5ac800); +} +.filtering-label.filtering-label-official-tag .tag-name { + color: #00acca; +} +.filtering-label.filtering-label-official-tag .tag-name:before { + color: #00acca; +} +.filtering-label.filtering-label-topic-category .tag-name { + color: #e8316e; +} +.filtering-label.filtering-label-topic-category .tag-name:before { + color: #e8316e; +} +.filtering-label.filtering-label-topic-open .accepting { + color: #e8316e; + font-weight: bold; +} +.filtering-label.filtering-label-topic-open .accepting:before { + content: "\25CF "; + font-weight: normal; + font-size: 5px; + margin-right: 5px; + vertical-align: middle; + color: #ffe400; +} +.filtering-label p { + color: #646464; + font-size: 12px; + display: table-cell; + vertical-align: middle; + *display: inline; + *zoom: 1; + padding: 0 5px 0 10px; + max-width: 435px; + -webkit-border-radius: 3px 0 0 3px; + -moz-border-radius: 3px 0 0 3px; + -ms-border-radius: 3px 0 0 3px; + -o-border-radius: 3px 0 0 3px; + border-radius: 3px 0 0 3px; + *margin-top: 10px; + *float: left; +} +.filtering-label .button { + display: table-cell; + vertical-align: middle; + *display: inline; + *zoom: 1; + border: none; + border-left: 1px solid #dddddd; + color: #323232; + width: 40px; + text-align: center; + line-height: 1.2; + margin: 2px 0; + padding: 10px 0; + -webkit-border-radius: 0 3px 3px 0; + -moz-border-radius: 0 3px 3px 0; + -ms-border-radius: 0 3px 3px 0; + -o-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; + *padding-left: 5px; + *width: auto; + *float: right; +} +.filtering-label .button:before { + content: "x"; +} +.digest-container { + margin-bottom: 20px; +} +.digest .post { + text-align: left; + position: relative; + margin-left: 42px; + margin-top: 10px; +} +.digest .post:first-child { + margin-top: 0; +} +.digest .post .community-container { + border: 1px solid #dddddd; + border-top: 1px solid #eee; + border-bottom: none; + bottom: 0; + margin: 0; + padding: 3px 0; + position: absolute; + width: 100%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + -o-box-sizing: border-box; + box-sizing: border-box; + -webkit-border-radius: 0 0 5px 5px; + -moz-border-radius: 0 0 5px 5px; + -ms-border-radius: 0 0 5px 5px; + -o-border-radius: 0 0 5px 5px; + border-radius: 0 0 5px 5px; +} +.digest .post .community-container a { + padding: 0 8px; +} +.digest .post .icon-container { + background: #fff; + border: 1px solid rgba(0, 0, 0, 0.1); + overflow: hidden; + -webkit-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -ms-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -o-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; + width: 36px; + height: 36px; + position: absolute; + left: -42px; +} +.digest .post .icon-container .icon { + width: 36px; + height: 36px; + border: none; +} +.digest .post .body { + background: #fff; + border: 1px solid rgba(0, 0, 0, 0.1); + overflow: hidden; + -webkit-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -ms-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -o-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; + padding: 10px 10px 32px; +} +.digest .post .body:after, +.digest .post .body:before { + content: ""; + position: absolute; + top: 20px; + display: block; + width: 0px; + height: 0px; + border-style: solid; +} +.digest .post .body:after { + border-color: transparent #fff transparent transparent; + border-width: 4px; + margin-top: -4px; + left: -7px; +} +.digest .post .body:before { + border-color: transparent #ddd transparent transparent; + border-width: 5px; + margin-top: -5px; + left: -10px; +} +.digest .post .screenshot-container { + float: right; + margin: 2px 0 5px 5px; + clear: both; +} +.digest .post .screenshot-container img { + height: 42px; + width: auto; +} +.digest .post .post-tag, +.digest .post .tag-container > span, +.digest .post .post-meta { + font-size: 12px; +} +.digest .post .post-content-memo img { + width: 100%; +} +.digest .post .user-name, +.digest .post .timestamp-container, +.digest .post .accepting, +.digest .post .post-meta .yeah-button, +.digest .post .post-meta .played, +.digest .post .topic-body { + display: none; +} +.artwork-digest .post .screenshot-container, +.artwork-digest .post .post-meta { + display: none; +} +.download-request-link { + background: #fff; + border: 1px solid rgba(0, 0, 0, 0.1); + overflow: hidden; + -webkit-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -ms-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -o-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; + text-align: left; + margin-bottom: 5px; + position: relative; +} +.download-request-link:hover { + background-color: #f9f9f9; +} +.download-request-link:before { + font-size: 14px; + content: 'A'; + color: #646464; + position: absolute; + right: 15px; + top: 50%; + margin-top: -9px; +} +.download-request-link .title { + font-size: 16px; + display: block; + color: #646464; + padding: 10px 25px 8px 10px; + line-height: 1.3em; +} + +.notify { + background: #f4f4ff !important; +} +.news-list .nick-name { + font-weight: bold; + color: #323232; +} +.news-list .nick-namea:hover { + text-decoration: underline; +} +.news-list a.link { + color: var(--theme, #5ac800); +} +.news-list a.link:hover { + text-decoration: underline; +} +.news-list .timestamp, +.news-list .id-name { + color: #969696; +} +.news-list .icon-container { + margin-right: 10px; +} +.messages .post .timestamp-container { + float: inherit; + text-align: right; +} +.messages .post .screenshot-container { + max-width: 400px; + margin: 5px auto; +} +.messages .post .post-content-memo { + text-align: center; + margin-top: -15px; + margin-right: 120px; +} +.messages .post .post-content-memo img { + width: 100%; + max-width: 320px; + background-color: white; +} +.messages .post .post-body { + margin-left: 62px; +} +.messages .post .icon-container { + width: 50px; + height: 50px; + margin-right: 8px; +} +.messages .post .icon-container .icon { + width: 48px; + height: 48px; +} +.messages .post .post-meta { + margin-bottom: 0; + padding: 8px 0 0; + font-size: 14px; +} +.messages .post a:hover { + text-decoration: underline; +} +.messages .post.my { + background-color: #e6fbff; +} +button.msg-update { + padding: 4px 4px 4px; + font-size: 12px; + margin-right: 0; + margin-top: -25px; +} +.message-chk { + float: right; + padding: 8px 0 8px; + font-size: 12px; + margin-right: 0; + margin-top: -15px; +} +.post .post-subtype-label { + color: #323232; + float: right; + margin: -5px -8px -5px 10px; + padding: 9px 9px; + font-size: 12px; +} +.post .post-subtype-label.post-subtype-label-diary { + border-bottom: 2px solid #04c9db; +} +.post .post-subtype-label.post-subtype-label-artwork { + border-bottom: 2px solid #fcc735; +} +.post .post-subtype-label.post-subtype-label-topic { + border-bottom: 2px solid #e8316e; +} +.post .post-subtype-label.post-subtype-label-via-api { + border-bottom: 2px solid var(--theme, #5ac800); +} +.post .post-permlink .post-subtype-label { + margin-right: -15px; +} +.post .community-container { + background-color: #f9f9f9; + border-bottom: 1px solid #eee; + margin: -15px -15px 15px; + padding: 5px 8px; + font-size: 12px; +} +.post .community-container a { + color: #969696; + display: block; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + word-wrap: normal; +} +.post .community-container a:hover { + color: #646464; +} +.post .community-container .community-icon { + width: 24px; + height: 24px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -ms-border-radius: 3px; + -o-border-radius: 3px; + border-radius: 3px; + vertical-align: middle; + margin-right: 5px; +} +.post .community-container-heading { + font-weight: bold; + font-size: 18px; +} +.post .community-container-heading a { + color: #323232; +} +.post .post-content-memo img { + vertical-align: bottom; +} +.post .hidden-content, +.post .deleted-message, +.post .hidden_as_violation { + color: #969696; + font-size: 16px; + padding: 20px 0 1.2em 3px; + text-align: center; +} +.post .hidden-content button, +.post .deleted-message button, +.post .hidden_as_violation button, +.post .hidden-content a, +.post .deleted-message a, +.post .hidden_as_violation a { + color: #323232; +} +.post .hidden-content + .post-content-text, +.post .deleted-message + .post-content-text, +.post .hidden_as_violation + .post-content-text, +.post .hidden-content + .post-content-memo, +.post .deleted-message + .post-content-memo, +.post .hidden_as_violation + .post-content-memo { + margin-top: -7px; +} +.post .spoiler-status { + display: none; +} +.post .spoiler-status.spoiler { + display: inline; +} +.post.hidden:hover { + cursor: auto; + background: #fff; +} +.post.hidden .screenshot-container img, +.post.hidden .post-content-text, +.post.hidden .post-content-memo, +.post.hidden .reply-content-text, +.post.hidden .reply-content-memo, +.post.hidden .post-meta, +.post.hidden .reply-meta { + display: none !important; +} +.user-name a { + color: #323232; + font-weight: bold; +} +.user-name a:hover { + text-decoration: underline; +} +.timestamp-container { + font-size: 14px; + color: #969696; +} +.timestamp-container a { + color: #969696; +} +.screenshot-container { + overflow: hidden; + display: block; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; +} +.screenshot-container img { + vertical-align: bottom; + max-width: 100%; +} +.screenshot-container.video { + position: relative; +} +.screenshot-container.video img { + height: 42px; + width: auto; +} +.screenshot-container.video:after { + position: absolute; + content: ''; + display: block; + bottom: 0px; + right: 0; + width: 20px; + height: 15px; + background: rgba(0, 0, 0, 0.65) url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAbCAQAAADM6ofdAAABT0lEQVR4AZWUA0ynYRyAv+dv2862bXtWc5gVZrvZTbnGZjWl2Q3pOsw8a/zuvay7ep933p69PyugKGjQocd4/fTo0AAozwFo0GPCihO3eC7sWIQmJHhe0GHCjpcICZLECePHKSQDWngiocGAHT8JcimmjFIKyCKGFzumZ4JDixkPcQq+nqnqp4uFWdqpF2o6YdxYEcE9UNBhJUAW1eo1R3tF43RSTR5JAjgxo78XHDrsRCigVb3l98/tdYZpoYwsoojg7hUBHQ7ilNKjPuD96fQ8vdRTRDohXDdFUNDjIkkFg+oTDndEcB1UkosoAjbEPzdCJSPqU0Rwy4sM0EAhSXxCMVwJKaoQwvN8OBmbpIki4niwPC884WCrsYtsgthfJwi+nFNIDOdrBQHFxHHJ/yCfg3yV5Psg2WnpWZKaVvl9kN84+Z2WvxrI3yVkLt8fOBmlvDxmleAAAAAASUVORK5CYII=') no-repeat center center; + -webkit-background-size: 12px 14px; + -moz-background-size: 12px 14px; + -ms-background-size: 12px 14px; + -o-background-size: 12px 14px; + background-size: 12px 14px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -ms-border-radius: 3px; + -o-border-radius: 3px; + border-radius: 3px; +} +.post-tag { + padding: 0; + font-size: 14px; + font-weight: bold; + color: var(--theme, #5ac800); + margin-right: 7px; + display: inline-block; +} +.post-tag:before { + content: "t"; + color: var(--theme, #5ac800); + display: inline-block; + font-weight: normal; + font-size: 14px; + margin-top: -3px; + margin-right: 3px; + vertical-align: middle; +} +.post-tag.post-official-tag { + color: #00acca; +} +.post-tag.post-official-tag:before { + color: #00acca; +} +.post-tag.post-topic-category { + color: #e8316e; +} +.post-tag.post-topic-category:before { + color: #e8316e; +} +.multi-language-post { + color: #969696; + padding: 0; + font-size: 14px; + display: inline-block; + *display: inline; + *zoom: 1; +} +.multi-language-post:before { + content: '#'; + font-weight: normal; + font-size: 14px; + margin-right: 3px; + margin-top: -2px; + vertical-align: middle; + display: inline-block; +} +.multi-language-body { + margin-top: -5px; +} +.accepting .not-accepting { + display: none; +} +.not-accepting .accepting { + display: none; +} +.accepting > span, +.not-accepting > span { + float: right; + font-size: 14px; + padding: 1px 8px; +} +.accepting > span { + background-color: #fff7b3; + color: #fc951e; +} +.accepting > span:before { + color: #ffe400; +} +.not-accepting > span { + background-color: #f6f6f6; + color: #969696; +} +.not-accepting > span:before { + color: #dddddd; +} +.multi-timeline-post.post-subtype-topic .accepting > span, +.multi-timeline-post.post-subtype-topic .not-accepting > span { + padding: 2px 5px 4px; +} +.topic-title { + font-weight: bold; +} +.post.has-video-thumbnail .topic-title { + min-height: 50px; +} +.post.has-video-thumbnail .post-content-text { + padding-right: 65px; +} +.post-meta, +.reply-meta { + font-size: 16px; + text-align: right; + color: #969696; + overflow: hidden; + clear: both; +} +.post-meta div, +.reply-meta div { + display: inline-block; + *display: inline; + *zoom: 1; + padding: 2px 0 0; + margin-left: 8px; + vertical-align: middle; +} +.post-meta .empathy-added + .empathy, +.reply-meta .empathy-added + .empathy { + color: var(--theme, #5ac800); +} +.post-meta .empathy:before, +.reply-meta .empathy:before { + content: "e"; + margin-right: 3px; +} +.post-meta .empathy-added + .empathy:before, +.reply-meta .empathy-added + .empathy:before { + color: var(--theme, #5ac800); +} +.ie8-earlier .post-meta .empathy.changing:before, +.ie8-earlier .reply-meta .empathy.changing:before { + content: none; +} +.post-meta .reply:before, +.reply-meta .reply:before { + content: "r"; + margin-right: 3px; +} +.reply-meta .reply .reply-count { + color: #f00; +} +.post-meta .played, +.reply-meta .played { + margin-left: 13px; +} +.post-meta .played:before, +.reply-meta .played:before { + content: "D"; +} +.post-meta .link-confirm { + width: 20px; + height: 25px; + float: right; + margin-left: 10px; + padding: 5px 5px 5px; + margin-bottom: -10px; + margin-top: -10px; +} +.post-meta .link-confirm:before { + content: "o"; + font-size: 18px; + color: var(--theme, #5ac800); +} +.yeah-button { + float: left; + display: inline-block; + *display: inline; + *zoom: 1; + margin: 0 auto; + padding: 3px 5px 2px; + border: 1px solid #dddddd; + border-bottom-color: #ccc; + background: #FFF; + font-size: 12px; + color: #323232; + text-align: center; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; + -webkit-box-shadow: inset 0 1px 0 #ffffff; + -moz-box-shadow: inset 0 1px 0 #ffffff; + -ms-box-shadow: inset 0 1px 0 #ffffff; + -o-box-shadow: inset 0 1px 0 #ffffff; + box-shadow: inset 0 1px 0 #ffffff; +} +.yeah-button:hover { + text-decoration: none; + -webkit-box-shadow: inset 0 1px 0 #fff, 0 2px 4px rgba(0,0,0,0.1); + -moz-box-shadow: inset 0 1px 0 #fff, 0 2px 4px rgba(0,0,0,0.1); + -ms-box-shadow: inset 0 1px 0 #fff, 0 2px 4px rgba(0,0,0,0.1); + -o-box-shadow: inset 0 1px 0 #fff, 0 2px 4px rgba(0,0,0,0.1); + box-shadow: inset 0 1px 0 #fff, 0 2px 4px rgba(0,0,0,0.1); +} +.yeah-button:before { + content: "E"; + font-size: 16px; + color: #969696; + margin-right: 2px; + margin-top: -3px; + display: inline-block; + *display: inline; + *zoom: 1; + vertical-align: middle; +} +.yeah-button:disabled { + color: #dddddd; + cursor: default; +} +.yeah-button:disabled:before { + color: #dddddd; +} +.yeah-button:disabled:hover { + -webkit-box-shadow: inset 0 1px 0 #ffffff; + -moz-box-shadow: inset 0 1px 0 #ffffff; + -ms-box-shadow: inset 0 1px 0 #ffffff; + -o-box-shadow: inset 0 1px 0 #ffffff; + box-shadow: inset 0 1px 0 #ffffff; +} +.empathy-container a:before { + content: "e"; + font-size: 16px; + color: var(--theme, #5ac800); + margin-right: 4px; + margin-top: -3px; + display: inline-block; + *display: inline; + *zoom: 1; + vertical-align: middle; +} +.empathy-body { + font-size: 16px; +} +.empathy-body a { + color: var(--theme, #5ac800); +} +.other-empathy-cotainer { + text-align: right; + padding-bottom: 10px; + padding-top: 5px; +} +.other-empathy-cotainer a { + color: #323232; + font-size: 12px; +} +.post-list .community-container { + margin-right: -20px; +} +.post-list .post { + padding-right: 20px; +} +.post-list > .post-list-outline { + border-top: 1px solid rgba(0, 0, 0, 0.1); + overflow: hidden; +} +.post-list a.another-posts { + background-color: rgba(0, 0, 0, 0.04); + border-top: 1px solid #dddddd; + color: #323232; + font-size: 12px; + font-weight: normal; + display: block; + text-align: center; + margin: 15px -20px -15px -15px; + padding: 10px 30px 8px; + position: relative; + -webkit-border-radius: 0 0 5px 5px; + -moz-border-radius: 0 0 5px 5px; + -ms-border-radius: 0 0 5px 5px; + -o-border-radius: 0 0 5px 5px; + border-radius: 0 0 5px 5px; +} +.post-list a.another-posts:before { + content: 'A'; + color: #969696; + font-size: 10px; + position: absolute; + right: 12px; + top: 12px; +} +.post-list .post:hover a.another-posts { + background-color: rgba(0, 0, 0, 0.05); +} +.post-list .empathized-user-name, +.post-list .acted-user-name { + border: none; + display: block; + padding: 5px 10px; + font-weight: normal; + font-size: 12px; +} +.post-list .empathized-user-name a, +.post-list .acted-user-name a { + color: var(--theme, #5ac800); + font-weight: bold; + padding-right: 3px; + font-size: 13px; +} +.post-list .empathized-user-name:before { + font-size: 14px; + color: var(--theme, #5ac800); + content: "e"; + margin-right: 2px; +} +.post-list .recommend-user-container { + border: none; + padding: 0; +} +.post-list .recommend-user-container li { + border: none; +} +.post-list .recommend-user-container .body { + margin-top: 0; +} +.post-list .recommend-user-container .list-content-with-icon-and-text .title { + margin-top: 0; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + word-wrap: normal; +} +.post-list .user-name { + display: inline; +} +.post-list .timestamp-container { + display: inline; + padding-left: 5px; +} +.post-list .body { + margin-left: 68px; + margin-top: 10px; +} +.post-list .screenshot-container { + margin-bottom: 8px; + margin-top: 5px; + margin-right: 62px; + text-align: center; + -webkit-border-radius: 0; + -moz-border-radius: 0; + -ms-border-radius: 0; + -o-border-radius: 0; + border-radius: 0; +} +.post-list .screenshot-container img { + width: auto; + height: auto; + max-width: 100%; + max-height: 320px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; +} +.post-list .screenshot-container + .post-content-memo { + margin-top: 10px; +} +.post-list .screenshot-container.video + .post-content-memo { + overflow: hidden; +} +.post-list .screenshot-container.video { + float: right; + margin: 5px 0 8px 8px; +} +.post-list .screenshot-container.video img { + width: auto; + height: 70px; +} +.post-list .screenshot-container.video + .screenshot-container img { + height: auto; +} +.post-list .icon-container { + margin: 0 10px 0 0; +} +.post-list .post-content-text { + font-size: 18px; +} +.post-list .post-content-memo { + text-align: center; + margin-top: 15px; + margin-right: 62px; +} +.post-list .post-content-memo img { + width: 100%; + max-width: 320px; + background-color: white; +} +.post-list .post-tag + .post-content-text, +.post-list .multi-language-post + .post-content-text, +.post-list .screenshot-container.video + .post-content-text { + margin-top: 2px; +} +.post-list .topic-body { + margin-top: 0; + font-size: 16px; +} +.post-list .post-meta { + padding-top: 15px; +} +.post-list .recent-reply-content { + background-color: #f9f9f9; + border-top: 1px solid #e9e9e9; + padding: 0; + margin: 10px 0 0; + -webkit-border-radius: 0 0 5px 5px; + -moz-border-radius: 0 0 5px 5px; + -ms-border-radius: 0 0 5px 5px; + -o-border-radius: 0 0 5px 5px; + border-radius: 0 0 5px 5px; +} +.post-list .recent-reply-content .recent-reply-read-more-container { + text-align: center; + border-bottom: 1px solid #e9e9e9; + font-size: 12px; + padding: 5px 0; +} +.post-list .recent-reply-content .recent-reply-read-more-container:hover { + background-color: #f4f4f4; +} +.post-list .recent-reply-content .recent-reply { + padding: 8px; + *zoom: 1; +} +.post-list .recent-reply-content .recent-reply:after { + content: ""; + display: block; + clear: both; +} +.post-list .recent-reply-content .recent-reply:hover { + background-color: #f4f4f4; +} +.post-list .recent-reply-content .icon-container { + width: 50px; + height: 50px; + margin-right: 8px; +} +.post-list .recent-reply-content .icon-container .icon { + width: 48px; + height: 48px; +} +.post-list .recent-reply-content .timestamp-container { + font-size: 10px; +} +.post-list .recent-reply-content .user-name { + font-size: 12px; + padding-top: 0; +} +.post-list .recent-reply-content .post-content { + padding: 1px 0 0; + font-size: 12px; +} +.post-list .recent-reply-content .body { + margin-left: 56px; + margin-top: 0; +} +.post-list .recent-reply-content .recent-reply-content-text { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + word-wrap: normal; +} +.post-list .recent-reply-content .recent-reply-content-memo { + text-align: center; + margin-right: 56px; +} +.post-list .recent-reply-content .recent-reply-content-memo img { + max-height: 80px; + width: auto; + max-width: 100%; + background-color: white; +} +.post-list .post.hidden .recent-reply-content, +.post-list .post.hidden .screenshot-container { + display: none; +} +.post-list .empathized-post .body { + clear: both; +} +.post-list-outline .empty { + height: 200px; + text-align: center; +} +.multi-timeline-post-list .post { + clear: both; +} +.multi-timeline-post-list .post .body { + position: relative; + min-height: 80px; + *zoom: 1; +} +.multi-timeline-post-list .post .body:after { + content: ""; + display: block; + clear: both; +} +.multi-timeline-post-list .post .icon-container { + width: 38px !important; + height: 38px !important; + margin: 0 5px 0 0; +} +.multi-timeline-post-list .post .icon-container .icon { + width: 36px !important; + height: 36px !important; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -ms-border-radius: 3px; + -o-border-radius: 3px; + border-radius: 3px; +} +.multi-timeline-post-list .post .user-name { + font-size: 14px; +} +.multi-timeline-post-list .post .tag-container span, +.multi-timeline-post-list .post .tag-container a { + font-size: 14px; +} +.multi-timeline-post-list .post .timestamp-container { + margin-bottom: 8px; + font-size: 12px; +} +.multi-timeline-post-list .post .post-tag, +.multi-timeline-post-list .post .multi-language-post { + float: left; + margin-right: 7px; +} +.multi-timeline-post-list .post .post-content-text { + font-size: 16px; + line-height: 1.4; + white-space: pre-wrap; +} +.multi-timeline-post-list .post .post-content-memo { + text-align: center; +} +.multi-timeline-post-list .post .post-content-memo img { + width: 100%; + max-width: 320px; + background-color: white; +} +.multi-timeline-post-list .post .topic-body { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + word-wrap: normal; +} +.multi-timeline-post-list .post .accepting > span, +.multi-timeline-post-list .post .not-accepting > span { + font-size: 12px; +} +.multi-timeline-post-list .post .post-meta { + padding: 15px 0 0; +} +.multi-timeline-post-list .post .screenshot-container { + width: 280px; + height: 157px; + position: absolute; + left: -290px; + top: 0; + margin: 0 10px 0 0; + text-align: center; +} +.multi-timeline-post-list .post .screenshot-container img { + max-height: 100%; + max-width: auto; + margin: 0 auto; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; +} +.multi-timeline-post-list .post .screenshot-container.video { + position: absolute !important; + left: auto; + right: 0; + top: 0; + margin: 0 !important; + height: 42px !important; + width: auto !important; +} +.multi-timeline-post-list .post .screenshot-container.video img { + height: 42px !important; + width: auto !important; +} +.multi-timeline-post-list .post.with-image .body { + margin-left: 290px; + min-height: 160px; +} +.multi-timeline-post-list .post.hidden .screenshot-container { + background-color: #f6f6f6; +} +.multi-timeline-post-list .post-subtype-diary.with-image .post-content-text { + min-height: 3em; +} +.post-body .multi-timeline-post-list .post-subtype-artwork { + border-top: none; + padding: 5px; + float: left; + width: 50%; + clear: none; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + -o-box-sizing: border-box; + box-sizing: border-box; +} +.post-body .multi-timeline-post-list .post-subtype-artwork:nth-child(2n+1) { + clear: both; +} +.post-body .multi-timeline-post-list .post-subtype-artwork.with-image .body { + margin: 0; + min-height: 0; +} +.post-body .multi-timeline-post-list .post-subtype-artwork .community-container { + margin: 0; + border: none; +} +.post-body .multi-timeline-post-list .post-subtype-artwork .post-content-memo { + margin: 0 0 6px; +} +.post-body .multi-timeline-post-list .post-subtype-artwork .post-content-memo img { + width: 100%; +} +.post-body .multi-timeline-post-list .post-subtype-artwork .screenshot-container { + height: 42px; + width: auto; + position: absolute; + left: auto; + top: auto; + bottom: 0; + right: 0; + margin: 0; +} +.post-body .multi-timeline-post-list .post-subtype-artwork .screenshot-container img { + height: 42px; + width: auto; +} +.post-body .multi-timeline-post-list .post-subtype-artwork .timestamp-container { + display: none; +} +.post-body .multi-timeline-post-list .post-subtype-artwork .post-meta { + font-size: 12px; + padding: 0; + float: none; + text-align: left; + clear: none; +} +.post-body .multi-timeline-post-list .post-subtype-artwork .post-meta > div { + margin-right: 8px; + margin-left: 0; + padding: 0; +} +.post-body .multi-timeline-post-list .post-subtype-artwork .yeah-button { + display: none; +} +.post-body .multi-timeline-post-list .post-subtype-artwork .hidden-content { + background-color: #f9f9f9; + border-top: 1px dashed #dddddd; + display: table; + padding: 10px 0; + margin-bottom: 6px; + height: 90px; + width: 100%; +} +.post-body .multi-timeline-post-list .post-subtype-artwork .hidden-content p { + display: table-cell; + *display: inline; + *zoom: 1; + vertical-align: middle; + padding: 0 5px; +} +.multi-timeline-post-list .post-subtype-topic .body { + min-height: 0; +} +.multi-timeline-post-list .post-subtype-topic .screenshot-container { + position: static; + float: right; + margin: 0 0 0 10px; + width: auto; + height: auto; +} +.multi-timeline-post-list .post-subtype-topic .screenshot-container img { + height: 70px; +} +.multi-timeline-post-list .post-subtype-topic .user-container { + padding: 5px 0 0 0; + margin: 0; + float: left; +} +.multi-timeline-post-list .post-subtype-topic .user-name, +.multi-timeline-post-list .post-subtype-topic .timestamp-container { + display: inline-block; + *display: inline; + *zoom: 1; + vertical-align: middle; + line-height: 27px; + margin: 0; +} +.multi-timeline-post-list .post-subtype-topic .user-name a, +.multi-timeline-post-list .post-subtype-topic .timestamp-container a { + font-weight: normal; + color: #969696; + font-size: 13px; +} +.multi-timeline-post-list .post-subtype-topic .post-meta { + clear: none; + float: right; + padding: 5px 0 0 0; +} +.multi-timeline-post-list .post-subtype-topic .icon-container, +.multi-timeline-post-list .post-subtype-topic .yeah-button { + display: none; +} +.multi-timeline-post-list .post-subtype-topic.post.with-image .body { + margin: 0; + min-height: 0; +} +.multi-timeline-post-list .post-subtype-topic .hidden-content, +.multi-timeline-post-list .post-subtype-topic .deleted-message, +.multi-timeline-post-list .post-subtype-topic .hidden_as_violation { + padding: 25px 0 0 0; +} +.window-create-new-topic .post-buttons-content { + margin-top: 10px; +} +h2.label-topic_post { + *zoom: 1; + padding-top: 12px; +} +h2.label-topic_post:after { + content: ""; + display: block; + clear: both; +} +h2.label-topic_post .label-topic_post-msgid { + display: inline-block; + padding-top: 5px; +} +.post-list-heading-button { + float: right; + display: inline-block; + *display: inline; + *zoom: 1; + margin: 0 auto; + padding: 3px 5px 2px; + border: 1px solid #dddddd; + border-bottom-color: #ccc; + background: #FFF; + font-size: 12px; + color: #323232; + text-align: center; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; + -webkit-box-shadow: inset 0 1px 0 #ffffff; + -moz-box-shadow: inset 0 1px 0 #ffffff; + -ms-box-shadow: inset 0 1px 0 #ffffff; + -o-box-shadow: inset 0 1px 0 #ffffff; + box-shadow: inset 0 1px 0 #ffffff; +} +.post-list-heading-button:hover { + text-decoration: none; + -webkit-box-shadow: inset 0 1px 0 #fff, 0 2px 4px rgba(0,0,0,0.1); + -moz-box-shadow: inset 0 1px 0 #fff, 0 2px 4px rgba(0,0,0,0.1); + -ms-box-shadow: inset 0 1px 0 #fff, 0 2px 4px rgba(0,0,0,0.1); + -o-box-shadow: inset 0 1px 0 #fff, 0 2px 4px rgba(0,0,0,0.1); + box-shadow: inset 0 1px 0 #fff, 0 2px 4px rgba(0,0,0,0.1); +} +.post-list-heading-button:before { + content: "p"; + font-size: 14px; + color: var(--theme, #5ac800); + float: left; + margin-right: 3px; +} +.multi_timeline-topic-filter { + padding: 15px; + display: none; +} +.multi_timeline-topic-filter.open { + display: block; +} +.multi_timeline-topic-filter .content { + padding-bottom: 15px; + position: relative; +} +.multi_timeline-topic-filter .content:before { + content: ""; + display: inline-block; + width: 22px; + height: 10px; + background: url('/s/img/tutorial-window-balloon.png'); + background-size: 22px 10px; + position: absolute; + top: -10px; + right: 15px; +} +.multi_timeline-topic-filter .select-button { + margin-top: 10px; +} +.multi_timeline-topic-filter .window-bottom-buttons { + text-align: center; +} +.multi_timeline-topic-filter .window-bottom-buttons .button { + margin: 10px auto; + width: 300px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + -o-box-sizing: border-box; + box-sizing: border-box; +} +.multi_timeline-topic-filter .window-bottom-buttons .topic-search-filter-button:after { + font-family: 'MiiverseSymbols', sans-serif; + font-weight: normal; + content: 'V'; + vertical-align: middle; + padding-left: 5px; + display: inline-block; + color: var(--theme, #5ac800); +} +.multi_timeline-topic-filter .window-bottom-buttons .topic-search-filter-post:before { + content: 'p'; + vertical-align: middle; + font-size: 20px; + line-height: 20px; + padding-right: 5px; + color: var(--theme, #5ac800); +} +.before-renewal .post-body { + padding: 15px; + background-color: #ebebeb; + background-color: rgba(200, 200, 200, 0.3); + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; +} +.before-renewal .post-body p { + margin-bottom: 10px; +} +.before-renewal .post-body .button { + max-width: 380px; +} +.post-permlink .buttons-content { + padding: 15px; + *zoom: 1; +} +.post-permlink .buttons-content:after { + content: ""; + display: block; + clear: both; +} +.post-permlink .buttons-content .embed-link-button { + margin: 10px 0 0; + float: left; +} +.post-permlink .buttons-content .report-buttons-content { + margin: 10px 0; + float: right; +} +#post-content { + padding: 15px; +} +#post-content .community-container { + font-weight: bold; + -webkit-border-radius: 5px 5px 0 0; + -moz-border-radius: 5px 5px 0 0; + -ms-border-radius: 5px 5px 0 0; + -o-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} +#post-content .user-content { + display: table; +} +#post-content .icon-container, +#post-content .user-name-content { + display: table-cell; + *display: inline; + *zoom: 1; + vertical-align: middle; + float: none; +} +#post-content .user-name-content { + padding-left: 10px; +} +#post-content .user-organization { + font-size: 11px; +} +#post-content .user-name { + font-size: 16px; +} +#post-content .user-id { + margin-left: 5px; + color: #969696; + font-size: 14px; + font-weight: normal; +} +#post-content .timestamp-container { + font-size: 14px; + color: #969696; + margin-top: 1px; + line-height: 1.2em; +} +#post-content .timestamp-container .timestamp { + color: #969696; +} +#post-content .timestamp-container .timestamp:hover { + text-decoration: underline; +} +#post-content .body { + clear: both; + font-size: 18px; + padding: 10px 0 0; +} +#post-content .screenshot-container { + margin-bottom: 8px; +} +#post-content .post-content-text { + white-space: pre-wrap; +} +#post-content .reply-content-text { + white-space: pre-wrap; +} +#post-content .post-content-memo { + margin: 10px auto 0; + text-align: center; +} +#post-content .post-content-memo img { +/*width: 320px; */ + width: 100%; + background-color: white; +} +#post-content .video { + margin-top: 10px; +} +#post-content .video, +#post-content .video iframe { + width: 100%; + height: auto; + min-height: 330px; + margin-left: 0; + margin-bottom: 0; + vertical-align: bottom; +} +#post-content .video:after, +#post-content .video iframe:after { + display: none; +} +#post-content .post-meta { + padding-top: 20px; +} +#post-content #close-topic-post { + margin: 15px 0 -5px; +} +#post-content #close-topic-post input { + width: 320px; +} +#post-content .select-button-label { + font-size: 14px; +} +#post-content .select-button-label:after { + content: " : "; +} +#post-content .select-button-label:before { + content: '#'; + font-weight: normal; + font-size: 16px; + margin-right: 5px; + vertical-align: middle; + color: #969696; + margin-top: -3px; + display: inline-block; +} +#post-content .select-content { + margin: 10px 0; +} +#post-content select#body-language-selector { + min-width: 50%; + margin: 0 0 10px; +} +#empathy-content { + clear: both; + *zoom: 1; + position: relative; + padding: 6px 8px 6px; + margin: -5px 15px 20px; + border: 1px solid #dddddd; + background: #f9f9f9; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; +} +#empathy-content:after { + content: ""; + display: block; + clear: both; +} +#empathy-content:before { + content: ''; + position: absolute; + display: block; + width: 10px; + height: 7px; + top: -6px; + left: 22px; + background: url('/s/img/balloon-part-empathy.png') no-repeat 0 0; + -webkit-background-size: 10px 7px; + -moz-background-size: 10px 7px; + -ms-background-size: 10px 7px; + -o-background-size: 10px 7px; + background-size: 10px 7px; +} +#empathy-content .post-permalink-feeling-icon { + float: left; + display: block; + width: 48px; + height: 48px; + margin: 2px; +} +#empathy-content .post-permalink-feeling-icon img { + width: 46px; + height: 46px; + border: 1px solid #222; + background: #fff; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; +} +#post-content + .buttons-content, +#empathy-content.none + .buttons-content { +/*border-top: 1px solid #222;*/ + border-top: 1px solid #fff; +} +.buttons-content .post-social-buttons-wrapper { + text-align: left; +} +.buttons-content .social-buttons-heading { + font-size: 12px; + color: #969696; + font-weight: bold; + margin-bottom: 5px; + text-align: left; +} +#reply-content.no-reply { + display: none; +} +#reply-content .no-reply-content { + padding: 30px 0; + color: #969696; + text-align: center; +} +#reply-content .no-reply-content p { + display: inline-block; + *display: inline; + *zoom: 1; + text-align: left; +} +#reply-content button.more-button { + font-size: 14px; + *zoom: 1; + padding: 13px 10px 11px; + border: none; + display: block; + color: #323232; + font-weight: bold; + text-align: center; + background: transparent; + width: 100%; +} +#reply-content button.more-button:after { + content: ""; + display: block; + clear: both; +} +#reply-content button.more-button.newest-replies-button, +#reply-content button.more-button.newer-replies-button { + border-top: 1px solid #dddddd; + border-bottom: none; +} +#reply-content button.more-button:hover { + background-color: #f9f9f9; +} +#reply-content button.more-button.loading img { + width: 22px; + height: 22px; +} +#reply-content button.more-button span:before { + font-size: 14px; + margin-right: 3px; + color: #646464; +} +#reply-content button.more-button.oldest-replies-button span:before { + content: '/'; +} +#reply-content button.more-button.older-replies-button span:before { + content: '-'; +} +#reply-content button.more-button.newest-replies-button span:before { + content: '*'; +} +#reply-content button.more-button.newer-replies-button span:before { + content: '+'; +} +#reply-content button.more-button span.loading:before { + content: ''; +} +#reply-content .info-reply-list + button.more-button, +#reply-content .more-button + .more-button { + border-top: 1px solid #dddddd; +} +#reply-content .list .my { + background-color: #e6fbff; +} +#reply-content .list > li.my:hover { + background-color: #c7f6ff; +} +.reply-list .icon-container { + width: 50px; + height: 50px; + margin-right: 8px; +} +.reply-list .icon-container .icon { + width: 48px; + height: 48px; +} +.reply-list .body { + margin-left: 58px; +} +.reply-list .header { + margin-bottom: 5px; +} +.reply-list .timestamp-container, +.reply-list .user-name { + display: inline; +} +.reply-list .timestamp-container { + font-size: 12px; + padding-left: 5px; +} +.reply-list .reply-content-text, +.reply-list .reply-content-memo { + margin-top: 4px; + font-size: 16px; +} +.reply-list .reply-content-text { + white-space: pre-wrap; +} +.reply-list .reply-content-memo { + text-align: center; +} +.reply-list .reply-content-memo img { + width: 100%; + max-width: 320px; + background-color: white; +} +.reply-list .reply-meta { + padding-top: 10px; +} +.reply-list .screenshot-container { + max-width: 400px; + margin: 5px auto; +} +.reply-list .hidden .screenshot-container { + margin: 0; +} +.cannot-reply { + padding: 30px 0; + color: #969696; + text-align: center; +} +.post-permalink-button { + background: #ffffff url('/s/img/icon-arrow-left.png') no-repeat 15px center; + color: #323232; + display: table; + width: 100%; + min-height: 68px; + -webkit-background-size: 9px 15px; + -moz-background-size: 9px 15px; + -ms-background-size: 9px 15px; + -o-background-size: 9px 15px; + background-size: 9px 15px; +} +.post-permalink-button > span { + text-align: left; + display: table-cell; + *display: inline; + *zoom: 1; + vertical-align: middle; + padding: 10px; +} +.post-permalink-button .icon-container { + width: 50px; + height: 50px; + padding: 10px 0px 10px 40px; + float: none; +} +.post-permalink-button .icon-container .icon { + width: 48px; + height: 48px; +} +.post-permalink-button .post-user-description { + font-weight: bold; +} +.post-permalink-button:hover { + background-color: #f9f9f9; +} +.reply-permalink-post { + padding: 15px; +} +.reply-permalink-post #empathy-content { + margin: 10px 0; +} +.reply-permalink-post .reply-content-memo .post-memo { +/*width: 320px; */ + width: 100%; + background-color: white; +} +.index-memo .memo-date { + color: #adadad; + font-size: 10px; + text-align: left; +} +.main-column-hatebu-entries { + margin-top: 30px; +} +.main-column-hatebu-entries .post-list-outline { + overflow: visible; +} +.hatebu-entries h2 { + border-color: #00A5DE; + color: #00A5DE; + position: relative; + padding-left: 65px; + padding-top: 12px; + line-height: 1.3; + *zoom: 1; +} +.hatebu-entries h2:after { + content: ""; + display: block; + clear: both; +} +.hatebu-entries .hatebu-entries-label-icon { + position: absolute; + left: 15px; + bottom: 10px; + width: 40px; + height: 40px; +} +.hatebu-entries .hatebu-label-about { + float: right; + display: inline-block; + margin: 5px 0 0 5px; + font-size: 12px; + color: #00A5DE; +} +.hatebu-entries .hatebu-label-about a { + color: #00A5DE; + text-decoration: underline; +} +.hatebu-entries .hatebu-entries-list a { + color: #323232; +} +.hatebu-entries .hatebu-entries-list a:hover { + text-decoration: underline; +} +.hatebu-entries .hatebu-entries-list .hatebu-entries-meta { + display: block; +} +.hatebu-entries .hatebu-entries-list .hatebu-entries-host { + color: #969696; + font-size: 12px; +} +.hatebu-entries .hatebu-entries-list .hatebu-entries-users { + color: #FF4166; + margin-right: 10px; +} +.hatebu-entries .hatebu-show-more { + text-align: right; +} +.hatebu-entries .hatebu-more-icon { + width: 20px; + height: 20px; + vertical-align: middle; +} +.user-organization { + display: block; + font-size: 12px; + color: var(--theme, #5ac800); +} +.search form.search { + margin: 15px auto; + width: 95%; +} +.search .search-content p.note { + margin: 5px 10px 10px; +} +.album-content .album-list { + clear: both; + margin: 4px 10px 15px; + *zoom: 1; +} +.album-content .album-list:after { + content: ""; + display: block; + clear: both; +} +.album-content .album-list a.screenshot-container { + background-size: 100% auto; + background-position: center; + background-repeat: no-repeat; + background-color: #fff; + display: block; + float: left; + margin: 6px 0.5% 0; + width: 49%; + height: 132px; +} +.album-content .community-list-body + .album-list { + margin: -7px 7px 15px; +} +.album-dialog .dialog-inner { + padding: 0 15px; +} +.album-dialog .window { + max-width: 830px; + width: auto; +} +.album-dialog .window-title { + white-space: normal; +} +.album-dialog .window-body { + padding: 0; +} +.album-dialog img { + display: block; + margin-bottom: 15px; + max-height: 320px; + min-height: 300px; + max-width: 100%; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -ms-border-radius: 3px; + -o-border-radius: 3px; + border-radius: 3px; +} +.album-dialog .img-wrapper { + display: inline-block; + text-align: right; + padding: 0 10px; +} +.album-dialog .created-at { + color: #969696; + margin: 15px 0 3px; + display: block; +} +.album-dialog .button { + position: relative; + display: inline-block; + min-height: 0; +} +.album-dialog .button input { + position: absolute; + top: 0; + left: 0; + border: 0; + margin: 0; + padding: 0; + opacity: 0; + width: 100%; + height: 100%; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + -o-appearance: none; + appearance: none; +} +.album-dialog .album-delete-button, +.album-dialog .album-diary-button { + width: 200px; + margin: 0 10px; +} +.album-dialog .album-diary-button:before { + color: #00b7d8; + content: "%"; + margin-right: 3px; + font-size: 16px; + line-height: 14px; +} +.album-dialog .album-diary-button.disabled:before { + color: #969696; +} +.album-dialog .album-delete-button:before { + color: #323232; + content: "d"; + margin-right: 3px; +} +.album-dialog .album-close-button { + width: 100%; + max-width: 100%; + background: -webkit-linear-gradient(bottom, #e9e9e9, #ffffff); + border: 0; + -webkit-box-shadow: 0 1px 10px rgba(1, 1, 1, 0.4); + -moz-box-shadow: 0 1px 10px rgba(1, 1, 1, 0.4); + -ms-box-shadow: 0 1px 10px rgba(1, 1, 1, 0.4); + -o-box-shadow: 0 1px 10px rgba(1, 1, 1, 0.4); + box-shadow: 0 1px 10px rgba(1, 1, 1, 0.4); + margin-top: 20px; + -webkit-border-radius: 0px 0px 5px 5px; + -moz-border-radius: 0px 0px 5px 5px; + -ms-border-radius: 0px 0px 5px 5px; + -o-border-radius: 0px 0px 5px 5px; + border-radius: 0px 0px 5px 5px; + font-size: 16px; +} +#diary-container #diary-user-content { + padding: 5px 10px 10px; + text-align: center; + background-image: url('/s/img/bg-gray-dot.png'); + background-size: 14px auto; + border-bottom: 1px solid #dddddd; + border-top: 4px solid #04c9db; +} +#diary-container .icon-container { + margin: 15px auto 0; + float: none; + position: relative; + overflow: visible; +} +#diary-container .icon-container:before { + content: '%'; + font-size: 20px; + color: #04c9db; + position: absolute; + right: -9px; + bottom: -3px; + background-color: #fff; + line-height: 24px; + height: 23px; + width: 25px; + border-radius: 6px; +} +#diary-container .user-organization { + margin: 7px 0 0; + display: block; + line-height: 1; + font-size: 12px; + color: var(--theme, #5ac800); +} +#diary-container .nick-name { + font-size: 16px; + font-weight: bold; + margin: 3px 0; +} +#diary-container #post-diary-window + #diary-user-content { + border-bottom: none; +} +#diary-container .report-buttons-content { + margin: 0; +} +#post-diary-window { + padding: 20px; + background: #04c9db; + text-align: center; + margin-top: -1px; +} +#post-diary-window p { + color: #fff; + margin-bottom: 7px; + display: inline-block; + text-align: left; +} +#diary-post-form { + padding-top: 56px; + margin-top: -56px; +} +#image-header-content { + background-position: center bottom; + background-repeat: repeat-x; + background-size: 14px auto; + background-image: url('/s/img/bg-gray.png'); + min-height: 140px; + width: 100%; + position: relative; + display: table; + *zoom: 1; +} +#image-header-content:after { + content: ""; + display: block; + clear: both; +} +#image-header-content .image-header-title { + line-height: 140px; + display: table-cell; + vertical-align: middle; + width: 100%; +} +#image-header-content .image-header-title .title { + color: var(--theme, #5ac800); + font-size: 18px; + margin: 0 0 10px 20px; + line-height: 1.3em; + display: block; + font-weight: bold; +} +#image-header-content .image-header-title .text { + font-size: 14px; + margin: 0 0 0 20px; + line-height: 1.2em; + display: block; +} +#image-header-content img { + display: block; + width: 157px; + height: auto; + padding: 15px 15px 15px 10px; +} +.identified_user .post-list .text { + color: #969696; + height: 21px; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + word-wrap: normal; +} +.identified_user .post-list .timestamp-container { + float: left; + margin-top: 5px; +} +.identified_user .post-list .multi-language-post { + float: left; + font-size: 14px; + padding-top: 5px; + margin-left: 10px; +} +#help .help-content { + padding: 15px; + *zoom: 1; + margin: 0 auto; +} +#help .help-content:after { + content: ""; + display: block; + clear: both; +} +.index-memo h2:not(.label), +#help .help-content h2 { + clear: both; + padding: 5px 10px 3px; + margin-top: 2em; + background: var(--theme, #5ac800); + color: #fff; + font-size: 14px; + border-radius: 5px; +} +.index-memo h2:not(.label) { + margin-bottom: 5px; + margin-top: 14px; +} +#help .help-content .num1 h2 { + margin-top: 0; +} +#help .help-content h3 { + clear: both; + margin-top: 1.5em; + border-bottom: 2px solid var(--theme, #5ac800); + font-size: 14px; + font-weight: bold; +} +#help .help-content div { + font-size: 14px; + margin: 10px 0; +} +#help .help-content p { + font-size: 14px; + margin: 10px 0; +} +#help .help-content p.guide-img { + text-align: center; + margin: 20px 0; +} +#help .help-content .attention img, +#help .help-content p img { + vertical-align: middle; + max-width: 300px; + width: 100%; +} +#help .help-content p.guide-img5 img, +#help .help-content p.guide-img7 img { + width: 120px; +} +#help .help-content a:hover { + text-decoration: underline; +} +#help .help-content .attention { + clear: both; + padding: 5px 10px 0; + border: 3px solid #81e52e; + margin: 20px 0 0; + background: #fff; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; +} +#help .help-content .attention .title { + margin: 0px -5px 5px; + padding: 5px; + color: #fff; +} +#help .help-content .attention p.title img { + width: 20px; + height: 18px; + margin-right: 3px; + vertical-align: middle; +} +#help .help-content ul, +#help .help-content ol { + padding-left: 1.2em; + margin: 0 0 1.2em; +} +#help .help-content .help-display-img + ul, +#help .help-content .help-display-img + ol { + padding-left: 55px; +} +#help .help-content .help-display-img + ul .img-anchor-button, +#help .help-content .help-display-img + ol .img-anchor-button { + margin: -3px 0 0 -55px; +} +#help .help-content ul li, +#help .help-content ol li { + padding: 0.5em 0 0; +} +#help .help-content ul li { + *list-style: disc; +} +#help .help-content li p, +#help .help-content .note { + color: #646464; + font-size: 12px; + margin: 5px 0; +} +#help .help-content .note { + padding-left: 30px; +} +#help .help-content .note:before { + content: '\25C6 '; + margin-left: -30px; + margin-right: 5px; +} +#help .help-content ul li:before, +#help .help-content ol li:before { + content: '\25CF '; + margin: 0 0.2em 0 -1.2em; +} +#help .help-content ul ul li:before { + content: '\25CB '; +} +#help .help-content ul ul li { + *list-style: circle; +} +#help .help-content ol li:nth-child(1):before { + content: '\2776 '; +} +#help .help-content ol li:nth-child(2):before { + content: '\2777 '; +} +#help .help-content ol li:nth-child(3):before { + content: '\2778 '; +} +#help .help-content ol li:nth-child(4):before { + content: '\2779 '; +} +#help .help-content ol li:nth-child(5):before { + content: '\277A '; +} +#help .help-content ol li:nth-child(6):before { + content: '\277B '; +} +#help .help-content ol li:nth-child(7):before { + content: '\277C '; +} +#help .help-content ol li:nth-child(8):before { + content: '\277D '; +} +#help .help-content ol li:nth-child(9):before { + content: '\277E '; +} +#help .help-content ol li:nth-child(10):before { + content: '\277F '; +} +#help .help-content ol li:nth-child(11):before { + content: '\24EB '; +} +#help .help-content ol li:nth-child(12):before { + content: '\24EC '; +} +#help .help-content ol li:nth-child(13):before { + content: '\24ED '; +} +#help .help-content ol li:nth-child(14):before { + content: '\24EE '; +} +#help .help-content ol li:nth-child(15):before { + content: '\24EF '; +} +#help .help-content ol li:nth-child(16):before { + content: '\24F0 '; +} +#help .help-content ol li:nth-child(17):before { + content: '\24F1 '; +} +#help .help-content ol li:nth-child(18):before { + content: '\24F2 '; +} +#help .help-content ol li:nth-child(19):before { + content: '\24F3 '; +} +#help .help-content ol li:nth-child(20):before { + content: '\24F4 '; +} +#help .help-content ol li { + *list-style-type: decimal; + *margin-left: 1em; +} +#help .help-content#guide .num1 h3, +#help .help-content.num1 li:before, +#help .help-content#guide .num1 li:before { + color: #ff9100; +} +#help .help-content#guide .num2 h3, +#help .help-content.num2 li:before, +#help .help-content#guide .num2 li:before { + color: #ff6473; +} +#help .help-content#guide .num4 h3, +#help .help-content.num4 li:before, +#help .help-content#guide .num4 li:before { + color: #00a8e8; +} +#help .help-content#guide .num5 h3, +#help .help-content.num5 li:before, +#help .help-content#guide .num5 li:before { + color: #0092aa; +} +#help .help-content#guide .num6 h3, +#help .help-content.num6 li:before, +#help .help-content#guide .num6 li:before { + color: #46c81e; +} +#help .index-title1, +#help #guide .num1 h2, +#help .num1 a.img-anchor-button, +#help .num1 .help-display-img a { + background: #ff9100; +} +#help .index-title2, +#help #guide .num2 h2, +#help .num2 a.img-anchor-button, +#help .num2 .help-display-img a { + background: #ff6473; +} +#help .num1 .table td, +#help .num1 .table th, +#help #guide .num1 h3, +#help .num1 .attention { + border-color: #ff9100; +} +#help .num2 .table td, +#help .num2 .table th, +#help #guide .num2 h3, +#help .num2 .attention { + border-color: #ff6473; +} +#help .num1 .attention .title { + background-color: #ff9100; +} +#help .num2 .attention .title { + background-color: #ff6473; +} +#help .faq .attention .title { + background-color: var(--theme, #5ac800); +} +#help .guide-img6 { + *zoom: 1; +} +#help .guide-img6:after { + content: ""; + display: block; + clear: both; +} +#help .guide-img6 img { + float: right; + width: 70px; + height: 70px; +} +.warning-content { + background: #fff; + border: 1px solid rgba(0, 0, 0, 0.1); + overflow: hidden; + -webkit-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -ms-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -o-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; + min-height: 300px; + max-width: 625px; + margin: 20px auto; + display: table; + padding: 0; + color: #646464; + font-size: 16px; + text-align: center; +} +.warning-content > div { + display: table-cell; + vertical-align: middle; + *display: inline; + *zoom: 1; + width: 900px; + padding: 30px; +} +.warning-content > div p { + padding: 30px 0; + text-align: left; +} +.warning-content .black-button { + display: inline-block; + *display: inline; + *zoom: 1; + margin: 0 auto; + width: auto; +} +.warning-content-unactivated form { + margin-bottom: 50px; +} +.warning-content-unactivated form + div { + line-height: 0; +} +.warning-content-unactivated img { + margin-bottom: -30px; + width: 100%; +} +.warning-content-unactivated form { + margin-bottom: 30px; +} +.warning-content-restricted > div p { + padding-bottom: 0; + *zoom: 1; +} +.warning-content-restricted > div p:after { + content: ""; + display: block; + clear: both; +} +.warning-content-restricted img { + margin-top: 20px; + margin-left: 20px; + width: 100px; + float: right; +} +.warning-content-forward > div strong { + margin-top: 10px; + font-size: 21px; + border-bottom: none; + text-align: center; + display: block; + color: var(--theme, #5ac800); +} +.warning-content-forward > div p { + display: inline-block; + *display: inline; + *zoom: 1; + padding: 20px 0 30px; + text-align: left; +} +.warning-content-forward form { + margin-bottom: 20px; +} +@media screen and (max-width: 980px) { + body { + border-top-width: 4px; + } + #wrapper { + width: 100%; + } + #main-body { + margin: 0 auto; + max-width: 625px; + padding-right: 5px; + padding-left: 5px; + } + #sidebar { + margin: 0; + } + .general-sidebar { + display: none; + } + #footer-selector { + width: 100%; + float: none; + } + #footer-inner { + max-width: 620px; + text-align: center; + } + #footer-inner .link-container { + text-align: center; + padding-top: 10px; + } + #footer-inner #region-select-page + #copyright { + text-align: center; + } + #sidebar, + .main-column { + width: 100%; + float: none; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + -o-box-sizing: border-box; + box-sizing: border-box; + } + #cookie-policy-notice .cookie-content { + width: 630px; + font-size: 13px; + display: table; + } + #cookie-policy-notice p { + padding: 0 10px; + max-width: 100%; + } + #cookie-policy-notice button { + font-size: 14px; + } + #sidebar + .main-column { + float: none; + margin-bottom: 60px; + padding: 0; + } + .main-column.replyform-bottom { + margin-bottom: 40px; + } + .main-column.messages { + margin-bottom: 60px !important; + } + #global-menu { + width: 615px; + } + #global-menu #global-menu-list { + float: inherit; + } + #global-menu #global-menu-list > ul > li { + float: left; + width: 16.6%; + padding: 0; + text-align: center; + } + #global-menu #global-menu-list > ul > li > a { + padding: 0 1px; + text-align: center; + position: relative; + display: block; + height: 54px; + } + #global-menu #global-menu-list > ul > li > a:before { + padding: 0; + display: inline-block; + *display: inline; + *zoom: 1; + } + #global-menu #global-menu-list > ul > li > a:hover { + -webkit-box-shadow: none; + -moz-box-shadow: none; + -ms-box-shadow: none; + -o-box-shadow: none; + box-shadow: none; + background-color: #f4f4f4; + } + /*#global-menu #global-menu-list > ul > li > button:hover,*/ + #global-menu #global-menu-list > ul > li > a:after { + display: none; + } + #global-menu #global-menu-list > ul > li > a > span { + display: none; + } + #global-menu #global-menu-list > ul > li > a > span.icon-container { + display: block; + } + #global-menu #global-menu-list > ul > li#global-menu-my-menu button { + width: 100%; + } + #global-menu #global-menu-list > ul > li#global-menu-my-menu button:before { + padding: 0; + display: inline-block; + *display: inline; + *zoom: 1; + } + #global-menu #global-menu-list > ul > li#global-menu-my-menu button:after { + display: inline-block; + *display: inline; + *zoom: 1; + } + #global-menu #global-menu-list > ul > li#global-menu-my-menu button:hover { + -webkit-box-shadow: none; + -moz-box-shadow: none; + -ms-box-shadow: none; + -o-box-shadow: none; + box-shadow: none; + background-color: #f4f4f4; + } + #global-menu li#global-menu-feed a, + #global-menu li#global-menu-community a { + padding-left: 0; + } + #global-menu li#global-menu-mymenu .icon-container { + float: none; + margin: 0 auto; + position: relative; + top: 9px; + } + #global-menu li#global-menu-news a { + width: 100%; + } + #global-menu li.selected a { + border-bottom: 2px solid var(--theme, #5ac800); + } + #global-menu #global-my-menu { + top: 62px; + } + #global-menu #global-my-menu:before, + #global-menu #global-my-menu:after { + right: 25%; + } + #global-menu #global-menu-message .badge { + left: 40% !important; + } + .list > li, + .list > div, + .list > a, + .list > span { + margin: 0; + } + .list.post-list > div:last-child { + -webkit-border-radius: 0 0 5px 5px; + -moz-border-radius: 0 0 5px 5px; + -ms-border-radius: 0 0 5px 5px; + -o-border-radius: 0 0 5px 5px; + border-radius: 0 0 5px 5px; + } + #global-menu-logo { + display: none; + } + .community-card-list > li { + margin: 0 1% 10px 0; + } + #reply-content .list > li.my:hover { + background-color: #c7f6ff; + } + .list-content-with-icon-and-text li { + margin: 0; + } + .list-content-with-icon-and-text .text { + height: auto; + } + .sidebar-container .community-list { + display: none; + } + .sidebar-setting .sidebar-post-menu { + display: table; + width: 100%; + } + .sidebar-setting .sidebar-post-menu a { + background-image: none; + border-top: none; + border-right: 1px dashed #dddddd; + display: table-cell; + padding: 15px 0 10px; + vertical-align: top; + width: 22%; + } + .sidebar-setting .sidebar-post-menu a:last-child { + border: none; + } + .sidebar-setting .sidebar-post-menu a:before { + display: block; + width: auto; + padding: 0 10px 5px; + position: static; + margin: 0; + } + .sidebar-setting .sidebar-post-menu a > span { + display: block; + padding: 0 10px; + text-align: center; + width: auto; + } + .sidebar-setting .sidebar-post-menu a.with-count > .post-count { + position: static; + padding: 0 10px; + } + .sidebar-setting .sidebar-post-menu a.with-count > .post-count span { + display: block; + width: auto; + max-width: 150px; + margin: 0px auto; + } + .community-name { + font-size: 18px; + } + .sidebar-favorite-community ul { + height: 82px; + margin-bottom: 5px; + overflow: hidden; + } + .sidebar-favorite-community li.favorite-community { + width: 10%; + margin: 0 0.5%; + min-height: 83px; + } + .sidebar-favorite-community li.favorite-community:nth-child(5n+1) { + clear: none; + } + .sidebar-favorite-community li.favorite-community:nth-child(10) { + clear: both; + } + .user-sidebar #sidebar-cover, + .general-sidebar #sidebar-cover { + min-height: 230px; + } + .sidebar-profile, + .sidebar-favorite-community, + #edit-profile-settings { + display: none; + } + .profile-top .sidebar-profile, + .profile-top .sidebar-favorite-community, + .profile-top #edit-profile-settings { + display: block; + } + .community-description, + #sidebar-community .favorite-button { + display: none; + } + .community-top .community-description, + .community-top #sidebar-community .favorite-button { + display: block; + } + form.search { + margin: 0 0 10px; + } + .search .search-content p.note { + margin: 0; + padding: 0 10px 15px; + } + h3.label { + margin-top: 0; + } + .community-main { + width: 100%; + float: none; + } + .community-top-sidebar { + width: 100%; + float: none; + margin-top: 12px; + } + #community-eyecatch-menu { + text-align: center; + } + #community-eyecatch-menu li { + float: none; + display: inline-block; + } + .digest-container { + display: none; + } + #page-title + .community-list { + margin-top: 0; + } + #identified-user-banner { + margin-bottom: 12px; + } + body.community-post-list #sidebar-cover { + display: none; + } + .post-list > .post-list-outline { + margin-bottom: 15px; + } + .post-list .screenshot-container.image { + margin: 0 0 15px; + } + .post-list .screenshot-container.image img { + max-width: 320px; + width: 100%; + height: auto; + max-height: 320px; + } + .post-list .recent-reply-content { + background-color: #f3f3f3; + border: none; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -ms-border-radius: 3px; + -o-border-radius: 3px; + border-radius: 3px; + } + .post-list .recent-reply-content .recent-reply:hover { + background-color: #ececec; + } + .post-list .recent-reply-content .recent-reply-read-more-container { + border-bottom: 1px solid #dddddd; + } + .post-list .recent-reply-content .recent-reply-read-more-container:hover { + background-color: #ececec; + } + .user-data .note { + padding: 0 10px; + text-align: center; + font-size: 16px; + } + .user-data .user-main-profile { + display: table; + } + .user-data .user-main-profile h4 { + display: table-cell; + float: none; + width: 1%; + } + .user-data .user-main-profile .note { + display: table-cell; + } + .user-data .data-content.game .note span { + display: inline-block; + } + .user-data .data-content.game .note div { + margin: 0 8px; + } + .login-page .g-recaptcha { +margin: 10px 0px 15px !important; +} + .redesign-banner { + position: relative; + min-width: 428px; + margin: -15px auto 15px; + padding-left: 45px; + font-size: 14px; + top: auto; + } + .redesign-banner .redesign-banner-text { + max-width: 100%; + } +.redesign-banner { + margin: 0 auto 15px; + top: auto; + } +.guest:not(.user) #global-menu-logo { + display: block; + } +#global-menu-login { + vertical-align: middle; + text-align: right; + } +#global-menu li { + width: auto; + } +#global-menu li a { + height: auto; + background-color: transparent; + } +#main-body { + padding-top: 0; + } +#community-top { + padding: 10px 5px 20px; + margin: 0 auto; + padding-bottom: 0; + max-width: 625px; + } +#cookie-policy-notice { + top: 0; + } +#about-inner { + max-width: 615px; + padding: 0 0 35px; + } +#about-text, +#about img { + width: 100%; + float: none; + } +.guest-terms-content { + margin-top: 7px; + } +#about img { + display: block; + max-width: 500px; + margin: 20px auto 0; + } + #community-guide-footer { + width: 100%; + margin-bottom: 50px; + float: none; + } + .album-dialog .window { + max-width: 580px; + } + .album-dialog .created-at { + margin-top: 5px; + } + .album-dialog img { + min-height: 0; + margin-bottom: 15px; + max-height: 240px; + } + + button.msg-update { + max-width: 50px; + padding: 4px 4px 4px 4px; + font-size: 12px; + margin-right: 0; + margin-top: -20px; + } +} +@media screen and (min-width: 660px) and (max-width: 980px) { +} +@media screen and (max-width: 660px) { + #wrapper { + min-width: 320px; + } + #global-menu { + width: 100%; + margin: 0 auto; + max-width: 480px; + min-width: 320px; + } + #global-menu li a:before { + font-size: 30px; + } + #global-menu li#global-menu-mymenu .icon-container { + width: 36px; + height: 36px; + top: 10px; + } + #global-menu li#global-menu-mymenu .icon-container .icon { + width: 34px; + height: 34px; + } + #global-menu li#global-menu-my-menu button:before { + font-size: 24px; + } + #global-menu #global-my-menu { + width: 90%; + margin: 0 5%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + -o-box-sizing: border-box; + box-sizing: border-box; + } + #global-menu #global-my-menu:before, + #global-menu #global-my-menu:after { + right: 6%; + } + #main-body { + max-width: 480px; + } + #footer-selector li { + font-size: 10px; + padding: 0; + margin: 0 5px; + } + .pager-button { + margin: 15px auto 5px; + width: auto; + } + .pager-button .selected { + padding: 9px 30px 7px; + width: auto; + } + .pager-button .next-button, + .pager-button .back-button { + padding: 9px 20px 7px; + width: auto; + } + .no-content { + font-size: 14px; + } + .no-content.no-content-favorites > div { + padding: 15px 70px 15px 10px; + } + .no-content.no-content-favorites .favorite-community-link.symbol { + right: 10px; + } + div#activity-feed-tutorial { + margin: 5px 10px 10px; + padding: 13px 10px 5px; + } + div#activity-feed-tutorial p.tleft { + float: none; + width: 100%; + margin-bottom: 6px; + font-size: 12px; + } + div#activity-feed-tutorial img.tutorial-image { + width: 50%; + display: block; + margin: 0 auto; + } + div#activity-feed-tutorial h3 { + padding: 5px 0 3px; + line-height: 1.3em; + font-size: 12px; + } + div#activity-feed-tutorial.no-content p.tleft { + color: #323232; + font-size: 12px; + } + .dialog .window { + width: 300px; + } + .dialog.track-error .window-body { + padding: 15px 15px 25px; + } + .simple-wrapper #wrapper { + width: auto; + margin-top: 0; + } + .simple-wrapper.simple-wrapper-content #wrapper { + margin: 20px 10px 0; + } + .simple-wrapper.simple-wrapper-content #main-body { + border: none; + } + #empathy-content .icon-container.donator:after, + #reply-content .icon-container.donator:after, + .news-list .icon-container.donator:after { + content: url(/s/img/donator.png); + width: 17px; + height: 17px; + } + #empathy-content .icon-container.verified:after, + #reply-content .icon-container.verified:after, + .news-list .icon-container.verified:after { + content: url(/s/img/verified.png); + width: 17px; + height: 17px; + } + #empathy-content .icon-container.tester:after, + #reply-content .icon-container.tester:after, + .news-list .icon-container.tester:after { + content: url(/s/img/tester.png); + width: 17px; + height: 17px; + } + #empathy-content .icon-container.moderator:after, + #reply-content .icon-container.moderator:after, + .news-list .icon-container.moderator:after { + content: url(/s/img/moderator.png); + width: 17px; + height: 17px; + } + #empathy-content .icon-container.administrator:after, + #reply-content .icon-container.administrator:after, + .news-list .icon-container.administrator:after { + content: url("/s/img/administrator.png"); + width: 17px; + height: 17px; + } + #empathy-content .icon-container.developer:after, + #reply-content .icon-container.developer:after, + .news-list .icon-container.developer:after { + content: url("/s/img/developer.png"); + width: 17px; + height: 17px; + } + #empathy-content .icon-container.openverse:after, + #reply-content .icon-container.openverse:after, + .news-list .icon-container.openverse:after { + content: url("/s/img/open-dev.png"); + width: 17px; + height: 17px; + } + .button { + font-size: 14px; + width: 85%; + padding: 8px 10px 6px; + } + .big-button { + width: 80%; + font-size: 14px; + padding: 10px 0 8px; + } + .user-sidebar .unfollow-button:before { + line-height: 35px; + } + .dialog .window-body .button, + .dialog .window-body .black-button, + .dialog .window-body .gray-button { + min-width: 120px; + font-size: 12px; + } + .main-column .social-buttons-content:after { + clear: none; + } + .social-buttons-content { + display: table; + } + .social-buttons-content + .report-buttons-content { + margin: 10px 0 0; + } + .social-buttons-content.social-buttons-content-primary { + width: 100%; + table-layout: fixed; + } + .social-buttons-content .social-button.line, + .social-buttons-content .social-buttons-content-cell.line { + display: block; + } + .social-buttons-content .social-buttons-content-cell { + display: table-cell; + padding-right: 5px; + } + .social-buttons-content .embed-link-button { + font-size: 10px; + clear: both; + float: left; + margin-top: 10px; + min-height: 25px; + max-width: 50%; + text-align: left; + } + .social-buttons-content.is-disable-twitter { + display: block; + } + .social-buttons-content.is-disable-twitter .social-buttons-content { + display: inline-block; + } + .social-buttons-content.is-disable-twitter .social-buttons-content-cell { + display: inline-block; + } + #post-content + .buttons-content, + #empathy-content + .buttons-content { + padding: 10px; + } + .reply-list .reply-meta .button, + .report-buttons-content .button { + font-size: 10px; + margin-left: 15px; + } + .post-filter { + padding: 0; + } + #disabled-report-violation-notice .window-body-inner p { + margin: 5px 10px 0; + } + .button-shop { + padding-right: 30px !important; + } + .sidebar-setting .sidebar-post-menu a span { + font-size: 10px; + line-height: 12px; + padding: 0 3px; + } + .sidebar-setting .sidebar-post-menu a .post-count { + margin: 5px auto 0; + padding: 0 10px; + } + .sidebar-setting .sidebar-post-menu a .post-count span { + padding: 2px 0; + } + .user-sidebar #sidebar-cover, + .general-sidebar #sidebar-cover { + min-height: 0; + background-image: none; + } + .user-sidebar #sidebar-cover img, + .general-sidebar #sidebar-cover img { + display: block; + width: 100%; + -webkit-border-radius: 5px 5px 0 0; + -moz-border-radius: 5px 5px 0 0; + -ms-border-radius: 5px 5px 0 0; + -o-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; + } + .user-sidebar .sidebar-setting .sidebar-post-menu { + table-layout: fixed; + } + .user-sidebar .sidebar-setting .sidebar-post-menu a span { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + word-wrap: normal; + } + .sidebar-favorite-community ul { + height: auto; + overflow: visible; + max-width: 350px; + margin: 0 auto; + padding: 5px 10px 15px; + } + .sidebar-favorite-community li.favorite-community { + width: 18%; + margin: 0 1% 5px; + min-height: 0; + } + .sidebar-favorite-community li.favorite-community:nth-child(5n+1) { + clear: both; + } + .sidebar-favorite-community li.favorite-community:nth-child(10) { + clear: none; + } + .sidebar-favorite-community .platform-tag { + margin: 2px 0 0; + } + #sidebar-community-body { + padding: 10px 10px 5px; + } + .community-description { + margin: 0 10px 15px; + font-size: 13px; + padding: 10px; + } + .list > li, + .list > div, + .list > a, + .list > span { + padding: 10px; + } + .list .icon-container { + width: 50px; + height: 50px; + } + .list .icon-container .icon { + width: 48px; + height: 48px; + } + .list .toggle-button .button { + width: 94px; + height: 30px; + line-height: 30px; + padding: 0 28px 0 0; + } + .list .toggle-button .button:before { + height: 28px; + line-height: 28px; + } + .list .user-community .icon-container .icon { + width: 32px; + height: 32px; + } + .list .user-community .icon-container .user-icon { + width: 32px; + height: 32px; + } + .news-list .icon-container { + margin-right: 8px; + } + .community-list > li { + padding: 0; + } + .community-list .siblings:before { + font-size: 27px; + } + .community-list .siblings + .body { + margin-right: 38px; + } + .community-list .body { + padding: 5px 10px 0; + } + .community-list .news-community-badge { + padding: 0 3px; + top: -3px; + } + .community-list .news-community-badge + .title { + margin-top: -3px; + } + .community-list .title { + margin-bottom: 2px; + } + .community-list .users { + margin-top: 1px; + margin-right: 3px; + background-color: #e9e9e9; + } + .community-card-list { + margin: 0 0 5px; + } + .community-card-list > li { + width: 100%; + margin: 0 0 7px 0; + } + .community-small-list .icon-container { + width: 38px; + height: 38px; + } + .community-small-list .icon-container .icon { + width: 36px; + height: 36px; + } + .community-small-list .title { + margin-bottom: 7px; + font-size: 14px; + } + #community-eyecatch-menu li { + margin-right: 5px; + } + #community-eyecatch-main { + height: 333px; + } + #community-eyecatch-main .icon-container { + width: 38px; + height: 38px; + margin-top: 20px; + } + #community-eyecatch-main .icon-container .icon { + width: 36px; + height: 36px; + } + .community-eyecatch-image { + padding: 200px 10px 10px 10px; + } + .community-eyecatch-balloon { + float: none; + width: auto; + margin-left: 50px; + } + .community-eyecatch-balloon:after { + margin-top: 3px; + } + .list-content-with-icon-and-text li { + padding: 10px; + } + .list-content-with-icon-and-text .body { + margin-left: 58px; + } + .list-content-with-icon-and-text .title { + margin-bottom: 0; + margin-top: 6px; + } + .list-content-with-icon-and-text .nick-name { + font-size: 14px; + } + .list-content-with-icon-and-text .id-name { + font-size: 10px; + } + .list-content-with-icon-and-text .text { + font-size: 12px; + } + .list-content-with-icon-and-text .user-profile-memo-content { + width: auto; + min-height: 0; + margin-right: 0; + } + .list-content-with-icon-and-text .toggle-button { + margin: 3px 0 0 5px; + } + #community-favorite { + padding-bottom: 3px; + padding-right: 10px; + } + #community-favorite ul { + padding-right: 55px; + max-width: 320px; + margin: 0 auto; + } + #community-favorite li { + width: 21%; + height: inherit; + margin: 0 2% 2%; + } + #community-favorite li:nth-child(5) { + clear: both; + } + #community-favorite .read-more .favorite-community-link.symbol { + right: 0; + } + #community-favorite .icon-container { + display: block; + height: 100%; + width: 100%; + } + #community-favorite .icon-container .icon { + width: 100%; + height: auto; + } + #community-favorite .empty-icon { + width: 100%; + } + #community-favorite .user-community .icon-container .icon { + width: 100%; + height: auto; + position: static; + } + #community-favorite .user-community .icon-container .user-icon { + width: 50%; + height: auto; + right: 3px; + bottom: 5px; + } + .follow-list .body { + float: none; + width: auto; + } + .follow-list .toggle-button { + margin: 4px 0; + } + .follow-list .title { + line-height: 1.2em; + margin-top: 5px; + } + .follow-list .text { + margin-top: 3px; + } + .follow-list .user-profile-memo-content { + width: 100%; + max-width: 320px; + min-height: 0; + } + .headline h2 { + padding: 10px 5px 0; + } + .headline form.search { + position: relative; + margin: 10px 0 0; + width: auto; + } + .count { + font-size: 12px; + margin: 7px 10px 0; + } + h2.label, + h3.label { + padding: 12px 12px 8px; + font-size: 14px; + } + .tab2 a, + .tab3 a { + font-size: 10px; + height: 20px; + padding: 5px 2px 3px; + } + .tab2 a span.number, + .tab3 a span.number { + min-width: 3em; + padding: 1px 3px 0; + } + .tab2.user-menu-activity a, + .tab3.user-menu-activity a { + padding: 0 5px; + } + .tab2 a { + width: 50%; + } + .tab3 a { + width: 34%; + } + .tab3 a:first-child, + .tab3 a:last-child { + width: 33%; + } + .tab-header-community { + margin: 0 auto 5px; + } + #tab-header-official-tags { + font-size: 10px; + } + .select-tab2 { + margin-top: 20px; + width: 95%; + } + .select-tab2 select, + .select-tab2 a { + font-size: 10px; + padding: 5px 6px 3px; + } + .select-tab2 a { + height: 20px; + line-height: 17px; + } + .select-tab2 .filter-dropdown-container:before { + font-size: 10px; + line-height: 28px; + padding: 0 7px; + } + #post-form { + margin: 15px 10px; + } + #post-form.folded { + margin: 15px 10px 0; + } + #post-form.folded .textarea-text { + height: 4.5em; + } +.post-list-outline.more { + margin-bottom: 40px; +} + #reply-form { + margin: 15px 10px 20px; + } + select { + min-width: 90% !important; + max-width: 100% !important; + white-space: pre-wrap; + } + .topic-categories-container select { + min-width: 80% !important; + } + .warning-content-forward .age-gate p { + padding: 20px 0 15px; + } + .warning-content-forward .age-gate .select-content { + margin-bottom: 35px; + } + .warning-content-forward .age-gate .select-button { + width: 70px; + } + .warning-content-forward .age-gate .year-select { + width: 90px; + } + .open-topic-post-existing-warning .content { + padding: 15px 20px; + } + .open-topic-post-existing-warning .window-bottom-buttons { + margin-top: 8px; + } + .search .search-content p.note { + padding: 5px 5px 10px; + line-height: 1.2em; + font-size: 12px; + } + .search .no-title-content { + min-height: 120px; + text-align: left; + width: auto; + -webkit-box-align: start; + -moz-box-align: start; + -ms-box-align: start; + -o-box-align: start; + box-align: start; + } + .search .no-title-content p { + padding: 0 10px; + } + .post-form-album-content { + max-width: 454px; + } + #official-tags-page li { + max-width: 260px; + } + .setting-form { + margin: 10px 0; + } + .setting-form li { + margin: 0; + padding: 0 10px 15px; + } + .setting-form .settings-label { + margin: 15px 0 5px; + } + .content-loading-window.activity-feed { + padding: 60px 10px; + } + .content-loading-window.activity-feed p { + font-size: 12px; + } + .content-load-error-window.activity-feed { + padding: 20px 10px 10px; + } + .content-load-error-window.activity-feed p { + font-size: 12px; + margin: 10px; + } + #community-top .platform-logo { + width: 100px; + margin-top: -3px; + } + #community-content .title { + font-size: 14px; + line-height: 1.4; + } + #community-content .news-community-badge { + padding: 0 3px; + } + #community-content .text { + font-size: 12px; + line-height: 1.2; + } + .filtering-label-container { + margin: 0 10px; + } + .filtering-label-container p, + .filtering-label-container .tag-name { + font-size: 12px; + line-height: 1.2em; + } + .community-title { + margin-top: 1.5em; + } + p.note-jasrac { + padding-left: 5px; + padding-right: 5px; + } + .post .community-container { + margin: -10px -10px 10px; + } + .post .post-tag { + font-size: 14px; + } + .post .post-content-text { + font-size: 16px; + } + .post .topic-body { + font-size: 14px; + } + .post-list .icon-container { + margin: 0 6px 5px 0; + width: 38px; + height: 38px; + } + .post-list .icon-container .icon { + width: 36px; + height: 36px; + } + .post-list .user-name { + display: block; + } + .post-list .timestamp-container { + display: block; + padding-left: 0; + font-size: 12px; + } + .post-list .body { + margin-left: 0; + clear: both; + } + .post-list .screenshot-container { + margin-right: 0; + } + .post-list .screenshot-container img { + height: auto; + } + .post-list .post-content-memo { + margin-right: 0; + } + .post-list .screenshot-container.video img { + height: 50px; + } + .post-list .post { + padding: 10px; + } + .post-list > .post-list-outline a.another-posts { + margin: 10px -10px -10px -10px; + } + .post-list .recommend-user-container { + padding: 0; + } + .post-list .recommend-user-container li { + padding: 10px; + } + .post-list .recommend-user-container .body { + clear: none; + } + .post-list .recent-reply-content .recent-reply-read-more-container { + font-size: 10px; + } + .post-list .recent-reply-content .icon-container { + width: 38px; + height: 38px; + margin-right: 6px; + } + .post-list .recent-reply-content .icon-container .icon { + width: 36px; + height: 36px; + } + .post-list .recent-reply-content .user-name, + .post-list .recent-reply-content .timestamp-container { + display: inline; + } + .post-list .recent-reply-content .post-content { + margin: 0; + } + .post-list .recent-reply-content .body { + margin-left: 44px; + padding-top: 0; + clear: none; + } + .post-list .recent-reply-content .recent-reply-content-memo { + margin-right: 44px; + } + .post-list .recent-reply-content .recent-reply-content-memo img { + height: 50px; + } + .multi-timeline-post-list .post .post-content-text { + font-size: 16px; + } + .multi-timeline-post-list .post .topic-body { + font-size: 14px; + } + .multi-timeline-post-list .post .screenshot-container { + position: static; + width: 48%; + height: auto; + display: block; + float: left; + margin: 0 2% 0 0; + } + .multi-timeline-post-list .post .screenshot-container img { + width: 100%; + height: auto; + } + .multi-timeline-post-list .post.with-image .body { + margin: 0; + min-height: 0; + } + .multi-timeline-post-list .post.with-image .tag-container span, + .multi-timeline-post-list .post.with-image .tag-container a { + margin: 0; + } + .multi-timeline-post-list .post.with-image .timestamp-container { + font-size: 12px; + } + .multi-timeline-post-list .post.with-image .post-content-text { + margin: 0; + } + .multi-timeline-post-list .post.with-image .post-content-memo { + display: inline-block; + width: 50%; + } + .multi-timeline-post-list .post .post-meta { + padding-top: 10px; + } + .post-body .multi-timeline-post-list .post-subtype-artwork { + float: none; + width: 100%; + border-top: 1px solid #dddddd; + } + .post-body .multi-timeline-post-list .post-subtype-artwork:first-child { + border-top: none; + } + .post-body .multi-timeline-post-list .post-subtype-artwork .community-container { + margin: -5px -5px 5px; + } + .post-body .multi-timeline-post-list .post-subtype-artwork .post-content-memo { + width: 100%; + display: block; + } + .post-body .multi-timeline-post-list .post-subtype-artwork .post-content-memo img { + max-width: 100%; + } + .post-body .multi-timeline-post-list .post-subtype-artwork .list > div { + float: none; + width: 100%; + border-top: 1px solid #dddddd; + } + .post-body .multi-timeline-post-list .post-subtype-artwork .list > div:first-child { + border-top: none; + } + .post-body .multi-timeline-post-list .post-subtype-artwork .post-content-memo img { + max-width: auto; + } + .post-body .multi-timeline-post-list .post-subtype-artwork .hidden-content { + border: 1px dashed #dddddd; + } + .multi-timeline-post-list .post-subtype-topic .screenshot-container { + width: auto; + float: right; + margin: 0 0 0 10px; + } + .multi-timeline-post-list .post-subtype-topic .screenshot-container img { + height: 60px; + width: auto; + } + .multi-timeline-post-list .post-subtype-topic .user-container { + padding: 0; + clear: both; + } + .multi-timeline-post-list .post-subtype-topic .post-meta { + padding: 0; + } + .multi-timeline-post-list .post-subtype-topic .timestamp-container { + display: none; + } + .multi-timeline-post-list .post-subtype-topic.post.with-image .body { + padding: 0; + } + .multi_timeline-topic-filter .window-bottom-buttons .button { + width: 100%; + } + #post-content { + padding: 10px; + } + #post-content .user-content { + display: block; + } + #post-content .community-container { + padding: 3px 8px; + } + #post-content .community-container .post-subtype-label { + margin: -2px -8px -5px 10px; + padding: 3px 9px; + } + #post-content .community-container-heading { + font-size: 14px; + } + #post-content .community-icon { + width: 16px; + height: 16px; + -webkit-border-radius: 0; + -moz-border-radius: 0; + -ms-border-radius: 0; + -o-border-radius: 0; + border-radius: 0; + } + #post-content .icon-container { + display: inline-block; + margin-right: 8px; + float: left; + width: 50px; + height: 50px; + } + #post-content .icon-container .icon { + width: 48px; + height: 48px; + } + #post-content .user-name-content { + display: block; + padding-left: 0; + padding-top: 8px; + margin-left: 58px; + } + #post-content .user-name-content .user-name { + font-size: 14px; + } + #post-content .user-name-content .user-id { + font-size: 12px; + } + #post-content .timestamp-container { + font-size: 12px; + } + #post-content .video, + #post-content .video iframe { + min-height: 240px; + width: 100%; + } + #post-content #close-topic-post input { + width: 80%; + } + #post-content .post-content-text { + font-size: 16px; + } + #post-content .topic-title { + margin-top: 2px; + } + #post-content .topic-body { + margin-top: 0; + } + #post-content #close-topic-post { + margin-top: 10px; + } + #empathy-content { + margin: 0 10px 20px; + padding: 4px 5px 4px; + } + #empathy-content .post-permalink-feeling-icon { + width: 38px; + height: 38px; + margin: 2px 1.5px 1px 1.5px; + } + #empathy-content .post-permalink-feeling-icon img { + width: 36px; + height: 36px; + } + .reply-list .icon-container { + width: 38px; + height: 38px; + margin-right: 8px; + } + .reply-list .icon-container .icon { + width: 36px; + height: 36px; + } + .reply-list .body { + margin-left: 46px; + } + .reply-list .reply-content-text, + .reply-list .hidden-content { + font-size: 14px; + } + .post-permalink-button { + background: #ffffff url('/s/img/icon-arrow-left.png') no-repeat 10px center; + min-height: 56px; + } + .post-permalink-button > span { + padding: 8px; + } + .post-permalink-button .icon-container { + width: 38px; + height: 38px; + padding-left: 28px; + } + .post-permalink-button .icon-container .icon { + width: 36px; + height: 36px; + } + .user-data h4 span { + font-size: 12px; + } + .user-data .note { + text-align: right; + padding: 0; + font-size: 14px; + } + .user-data .data-content.user-main-profile { + display: block; + } + .user-data .data-content.user-main-profile h4 { + display: inline-block; + float: left; + width: auto; + margin: 2px 0 0 0; + } + .user-data .data-content.user-main-profile .note { + display: block; + margin-left: 10px; + margin-bottom: 10px; + } + .user-data .data-content.game .note div { + margin: 0 0 0 5px; + } + .user-data .data-content.game .note span { + display: none; + } + .identified_user #image-header-content { + min-height: 0; + } + .identified_user #image-header-content .image-header-title { + padding: 24px 0; + } + .identified_user #image-header-content img { + display: none; + } + .identified_user .post-list .text { + font-size: 12px; + margin-right: 0; + line-height: 17px; + height: 17px; + } + #identified-user-banner a:before { + background-size: auto 40px !important; + height: 40px; + width: 40px; + margin: 6px 7px 6px 8px; + } + #identified-user-banner .title { + font-size: 14px; + padding: 11px 9px 5px 55px; + line-height: 1.1em; + } + #identified-user-banner .text { + font-size: 12px; + padding: 0 5px 8px 55px; + line-height: 1em; + } + #global-menu { + padding: 0 10px; + box-sizing: border-box; + } +#global-menu #global-menu-logo { + padding: 8px 0; + } +#global-menu #global-menu-logo img { + height: auto; + width: 130px; + } +#global-menu-login input { + height: 30px; + margin-top: 4px; + } + h2.welcome-message { + font-size: 18px; + padding: 0 0 10px; + } +#try-miiverse .try-miiverse-catch { + font-size: 10px; + margin: 10px 10px -22px; + } +#try-miiverse #slide-post-container .post { + padding: 10px 10px 8px; + } +#try-miiverse #slide-post-container .post .screenshot-container { + height: 35px; + } +#try-miiverse #slide-post-container .post .screenshot-container img { + height: 35px; + } +#try-miiverse #slide-post-container .post-content { + max-width: 305px; + } +#global-menu { + max-width: 100%; + } +#main-body { + width: 100%; + } +#community-top { + max-width: 480px; + } +#about { + font-size: 14px; + padding: 15px 15px 5px; + } +#about p { + padding: 0; + } +.guest-terms-content { + margin: 7px 0px 0; + } + .warning-content > div { + padding: 0 20px; + } + .warning-content > div p { + padding-top: 20px; + padding-bottom: 20px; + } + .warning-content form { + margin-bottom: 20px; + } + .warning-content-forward > div { + padding: 20px; + } + .warning-content-unactivated form { + margin-bottom: 40px; + } + .warning-content-unactivated img { + margin: 0; + } + .warning-content-restricted > div p { + padding-bottom: 0; + } + .warning-content-restricted img { + margin-top: 15px; + margin-left: 10px; + width: 25%; + } +} +@media screen and (max-width: 580px) { + .multi-timeline-post-list .post .post-content-memo { + margin: 0; + display: inline-block; + width: 100%; + } + .post-form-album-content { + width: auto; + padding-left: 5px; + padding-right: 5px; + } +} +@media screen and (max-width: 480px) { + #community-eyecatch-main { + height: 247px; + } + .community-eyecatch-image { + padding: 115px 10px 10px 10px; + } + .post-permlink #main-body { + padding: 56px 0 170px 0; + } + .post-permlink .main-column { + padding: 0; + border-bottom: 1px solid #dddddd; + } + .post-permlink .post-list-outline { + border: none; + margin: 0; + -webkit-box-shadow: none; + -moz-box-shadow: none; + -ms-box-shadow: none; + -o-box-shadow: none; + box-shadow: none; + } + .community-name { + font-size: 16px; + } + .album-content .album-list { + margin-right: 7px; + margin-left: 7px; + } + .album-content .album-list a.screenshot-container { + height: 80px; + width: 48%; + margin: 5px 1% 0; + } + .textarea-container .album-image-preview { + width: 100%; + left: 0; + top: 40px; + text-align: center; + padding-bottom: 5px; + position: static; + } + .textarea-container .album-image-preview img { + height: 150px; + width: auto; + margin: 0 auto; + } + .textarea-container .textarea.with-image { + padding-left: 1.8%; + width: 96%; + margin: 0 0 8px; + height: 6em; + } + #post-form { + min-height: 170px; + } + #post-form.folded { + min-height: 0; + } +/* .center-input input { + width: 90%; + }*/ + .community-switcher { + float: none; + } +} +@media only screen and (max-height: 690px) { + pre { + max-height: 140px !important; + } +} + +.textarea-with-menu .textarea-menu { + float: left; +} +.textarea-with-menu .textarea-menu li { + display: inline-block; + float: left; +} +.textarea-with-menu .textarea-menu label { + display: block; + position: relative; + width: 50px; + height: 27px; + border: 1px solid rgba(0, 0, 0, 0.3); + outline-style: none; +} +.textarea-with-menu .textarea-menu label input[type="radio"] { + position: absolute; + width: 50px; + height: 27px; + margin: 0; + display: none; +} +.textarea-with-menu .textarea-menu-text, +.textarea-with-menu .textarea-menu-memo, +.textarea-with-menu .textarea-menu-poll { + background: -webkit-gradient(linear, left top, left bottom, from(#ffffff), color-stop(0.5, #ffffff), to(#e6e6e6)) 0 0; +} +.textarea-with-menu .textarea-menu-text:before, +.textarea-with-menu .textarea-menu-memo:before, +.textarea-with-menu .textarea-menu-poll:before { + content: ""; + background: url(/s/img/form-icons.png); + position: absolute; + top: 3px; + left: 50%; + margin-left: -10px; +} +.textarea-with-menu.active-text .textarea-menu-text, +.textarea-with-menu.active-memo .textarea-menu-memo, +.textarea-with-menu.active-poll .textarea-menu-poll { + background: -webkit-gradient(linear, left top, left bottom, from(var(--theme, #257811)), to(var(--theme-slightly-dark, #1e610e))) 0 0; +} +.textarea-with-menu .textarea-menu-text.disabled, +.textarea-with-menu .textarea-menu-memo.disabled, +.textarea-with-menu .textarea-menu-poll.disabled { + background: -webkit-gradient(linear, left top, left bottom, from(#ffffff), color-stop(0.5, #ffffff), to(#e6e6e6)) 0 0; +} +.textarea-with-menu .textarea-menu li label { + z-index: 2; +} +.textarea-with-menu .textarea-menu li:first-of-type label { + -webkit-border-top-left-radius: 6px; +} +.textarea-with-menu .textarea-menu li:last-of-type label { + -webkit-border-top-right-radius: 6px; +} +.textarea-with-menu .textarea-menu-text:before { + background-position: 0 0; + width: 20px; + height: 20px; +} +.textarea-with-menu .textarea-menu-memo:before { + background-position: -60px 0; + width: 20px; + height: 20px; +} +.textarea-with-menu .textarea-menu-poll:before { + background-position: -120px 0; + width: 20px; + height: 20px; +} +.textarea-with-menu.active-text .textarea-menu-text:before { + background-position: -20px 0; + width: 20px; + height: 20px; +} +.textarea-with-menu.active-memo .textarea-menu-memo:before { + background-position: -80px 0; + width: 20px; + height: 20px; +} +.textarea-with-menu.active-poll .textarea-menu-poll:before { + background-position: -140px 0; + width: 20px; + height: 20px; +} +.textarea-with-menu .textarea-menu-text.disabled:before { + background-position: -40px 0; + width: 20px; + height: 20px; +} +.textarea-with-menu .textarea-menu-memo.disabled:before { + background-position: -100px 0; + width: 20px; + height: 20px; +} +.textarea-with-menu .textarea-menu-poll.disabled:before { + background-position: -160px 0; + width: 20px; + height: 20px; +} +.textarea-with-menu .textarea-poll { + text-align: center; +} +.textarea-with-menu .textarea-poll .option { + margin-bottom: 8px; + border-radius: 5px; +} +.textarea-with-menu .textarea-poll .delete:not(.none) + .option { + width: calc(100% - 64px); +} +.textarea-with-menu .textarea-poll .delete.none + .option { + width: calc(100% - 36px); +} +.textarea-with-menu .textarea-poll .delete { + border-radius: 25px; + background: none; + margin-top: 1%; + padding: 5px 8px 8px 8px; + border: none; + height: 28px; + float: right; +} +.textarea-with-menu .textarea-poll .delete:before { + font-family: "MiiverseSymbols"; + font-size: 16px; + content: "x"; +} +.textarea-with-menu .textarea-poll .delete:hover { + background: var(--theme, #5ac800); + color: #fff; +} +.textarea-with-menu .textarea-poll .add-option { + margin-bottom: 12px; + border-radius: 5px; + background: #888; + min-width: 135px; + font-size: 14px; + padding: 9px 10px; + border: 1px solid #444; + color: #fff; +} +.textarea-with-menu .textarea-poll .add-option:before { + content: 'Q'; + margin-right: 4px; +} +.textarea-with-menu .textarea-poll .add-option:disabled { + border-color: #c4c4c4; + background: #dddddd; + color: #919191; + text-shadow: none; +} +.login-page { +text-align: center; +} +.login-page > form > img { +margin-top: 30px; +margin-bottom: 10px; +max-width: 95%; +} +.login-page .lh { +font-weight: bold; +font-size: 20px; +} +.login-page .ll { +margin-top: 20px; +margin-bottom: 20px; +} +.login-page .g-recaptcha { +margin: 10px auto 15px; +display: block; +width: 50%; +} +.index-memo { +margin-top: 10px; +text-align: center; +} +.index-memo p { +width:90%; +display:inline-block; +} +#empathy-content .post-permalink-feeling-icon img { +border: 1px solid #dddddd; +} + +.post-poll { + position: relative; + margins: 0 10px; +} +.poll-options.with-background { + background-position: center; + background-size: cover; + padding: 25% 10px 5px; +} +.post-poll .poll-option { + border-radius: 5px; + position: relative; + display: block; + padding: 12px; + margin: 5px 0px; + height: 20px; + color: white; + width: auto; +} +.post-poll:not(.selected) .poll-option { + background: var(--theme, #5ac800); +} +.post-poll:not(.selected) .poll-option .percentage, .post-poll:not(.selected) .poll-option .poll-background { + display: none; +} +.post-poll.selected .poll-option { + background: #212121; + z-index: 0; +} +.post-poll.selected .poll-option.selected:before { + font-family: 'MiiverseSymbols'; + content: 'v'; + margin-right: 3px; +} +.post-poll.selected .poll-option .percentage { + font-weight: bold; + font-size: 16px; + float: right; +} +.post-poll.selected .poll-option .poll-background { + border-radius: 5px; + background: var(--theme, #5ac800); + position: absolute; + z-index: -1; + height: 100%; + float: left; + left: 0px; + top: 0px; +} + +code, +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 1.42857143; + color: #333; + word-break: break-all; + word-wrap: break-word; + page-break-inside: avoid; + + max-height: 340px; + overflow-y: auto; + + background-color: #f5f5f5; + border: 1px solid #ccc; + border-radius: 4px; + border: 1px solid #999; + + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; +} +canvas { + width: 320px; + height: 120px; +} +html.os-mac > pre::-webkit-scrollbar { +display: block !important; +} + + +#splatoon { + display: block; + position: fixed; + width: 100px; + height: 100px; + top: 0px; + left: 0px; + z-index: 2000; + background: transparent url("/s/img/load.png") 0 0 no-repeat; + animation: woomy 0.36s steps(17) infinite; +} +@keyframes woomy { + 100% { background-position: 0 -1700px; } +} + +#nprogress{pointer-events:none;} +#nprogress .bar{background:linear-gradient(45deg, #322ff3, #b50096);position:fixed;z-index:1031;top:0;left:0;width:100%;height:4px;} +#nprogress .peg{display:block;position:absolute;right:0px;width:100px;height:100%;box-shadow:0 0 10px #b50096,0 0 4px #b50096;opacity:1.0;-webkit-transform:rotate(3deg) translate(0px,-4px);-ms-transform:rotate(3deg) translate(0px,-4px);transform:rotate(3deg) translate(0px,-4px);} +.nprogress-custom-parent{overflow:hidden;position:relative;}.nprogress-custom-parent #nprogress .spinner,.nprogress-custom-parent #nprogress .bar{position:absolute;} + +.sp-container { + position:absolute; + top:0; + left:0; + display:inline-block; + *display: inline; + *zoom: 1; + /* https://github.com/bgrins/spectrum/issues/40 */ + z-index: 9999994; + overflow: hidden; +} +.sp-container.sp-flat { + position: relative; +} + +/* Fix for * { box-sizing: border-box; } */ +.sp-container, +.sp-container * { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} + +/* http://ansciath.tumblr.com/post/7347495869/css-aspect-ratio */ +.sp-top { + position:relative; + width: 100%; + display:inline-block; +} +.sp-top-inner { + position:absolute; + top:0; + left:0; + bottom:0; + right:0; +} +.sp-color { + position: absolute; + top:0; + left:0; + bottom:0; + right:20%; +} +.sp-hue { + position: absolute; + top:0; + right:0; + bottom:0; + left:84%; + height: 100%; +} + +.sp-clear-enabled .sp-hue { + top:33px; + height: 77.5%; +} + +.sp-fill { + padding-top: 80%; +} +.sp-sat, .sp-val { + position: absolute; + top:0; + left:0; + right:0; + bottom:0; +} + +.sp-alpha-enabled .sp-top { + margin-bottom: 18px; +} +.sp-alpha-enabled .sp-alpha { + display: block; +} +.sp-alpha-handle { + position:absolute; + top:-4px; + bottom: -4px; + width: 6px; + left: 50%; + cursor: pointer; + border: 1px solid black; + background: white; + opacity: .8; +} +.sp-alpha { + display: none; + position: absolute; + bottom: -14px; + right: 0; + left: 0; + height: 8px; +} +.sp-alpha-inner { + border: solid 1px #333; +} + +.sp-clear { + display: none; +} + +.sp-clear.sp-clear-display { + background-position: center; +} + +.sp-clear-enabled .sp-clear { + display: block; + position:absolute; + top:0px; + right:0; + bottom:0; + left:84%; + height: 28px; +} + +/* Don't allow text selection */ +.sp-container, .sp-replacer, .sp-preview, .sp-dragger, .sp-slider, .sp-alpha, .sp-clear, .sp-alpha-handle, .sp-container.sp-dragging .sp-input, .sp-container button { + -webkit-user-select:none; + -moz-user-select: -moz-none; + -o-user-select:none; + user-select: none; +} + +.sp-container.sp-input-disabled .sp-input-container { + display: none; +} +.sp-container.sp-buttons-disabled .sp-button-container { + display: none; +} +.sp-container.sp-palette-buttons-disabled .sp-palette-button-container { + display: none; +} +.sp-palette-only .sp-picker-container { + display: none; +} +.sp-palette-disabled .sp-palette-container { + display: none; +} + +.sp-initial-disabled .sp-initial { + display: none; +} + + +/* Gradients for hue, saturation and value instead of images. Not pretty... but it works */ +.sp-sat { + background-image: -webkit-gradient(linear, 0 0, 100% 0, from(#FFF), to(rgba(204, 154, 129, 0))); + background-image: -webkit-linear-gradient(left, #FFF, rgba(204, 154, 129, 0)); + background-image: -moz-linear-gradient(left, #fff, rgba(204, 154, 129, 0)); + background-image: -o-linear-gradient(left, #fff, rgba(204, 154, 129, 0)); + background-image: -ms-linear-gradient(left, #fff, rgba(204, 154, 129, 0)); + background-image: linear-gradient(to right, #fff, rgba(204, 154, 129, 0)); + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType = 1, startColorstr=#FFFFFFFF, endColorstr=#00CC9A81)"; + filter : progid:DXImageTransform.Microsoft.gradient(GradientType = 1, startColorstr='#FFFFFFFF', endColorstr='#00CC9A81'); +} +.sp-val { + background-image: -webkit-gradient(linear, 0 100%, 0 0, from(#000000), to(rgba(204, 154, 129, 0))); + background-image: -webkit-linear-gradient(bottom, #000000, rgba(204, 154, 129, 0)); + background-image: -moz-linear-gradient(bottom, #000, rgba(204, 154, 129, 0)); + background-image: -o-linear-gradient(bottom, #000, rgba(204, 154, 129, 0)); + background-image: -ms-linear-gradient(bottom, #000, rgba(204, 154, 129, 0)); + background-image: linear-gradient(to top, #000, rgba(204, 154, 129, 0)); + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#00CC9A81, endColorstr=#FF000000)"; + filter : progid:DXImageTransform.Microsoft.gradient(startColorstr='#00CC9A81', endColorstr='#FF000000'); +} + +.sp-hue { + background: -moz-linear-gradient(top, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%); + background: -ms-linear-gradient(top, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%); + background: -o-linear-gradient(top, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%); + background: -webkit-gradient(linear, left top, left bottom, from(#ff0000), color-stop(0.17, #ffff00), color-stop(0.33, #00ff00), color-stop(0.5, #00ffff), color-stop(0.67, #0000ff), color-stop(0.83, #ff00ff), to(#ff0000)); + background: -webkit-linear-gradient(top, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%); + background: linear-gradient(to bottom, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%); +} + +/* IE filters do not support multiple color stops. + Generate 6 divs, line them up, and do two color gradients for each. + Yes, really. + */ +.sp-1 { + height:17%; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0000', endColorstr='#ffff00'); +} +.sp-2 { + height:16%; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffff00', endColorstr='#00ff00'); +} +.sp-3 { + height:17%; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00ff00', endColorstr='#00ffff'); +} +.sp-4 { + height:17%; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00ffff', endColorstr='#0000ff'); +} +.sp-5 { + height:16%; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0000ff', endColorstr='#ff00ff'); +} +.sp-6 { + height:17%; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff00ff', endColorstr='#ff0000'); +} + +.sp-hidden { + display: none !important; +} + +/* Clearfix hack */ +.sp-cf:before, .sp-cf:after { content: ""; display: table; } +.sp-cf:after { clear: both; } +.sp-cf { *zoom: 1; } + +/* Mobile devices, make hue slider bigger so it is easier to slide */ +@media (max-device-width: 480px) { + .sp-color { right: 40%; } + .sp-hue { left: 63%; } + .sp-fill { padding-top: 60%; } +} +.sp-dragger { + border-radius: 5px; + height: 5px; + width: 5px; + border: 1px solid #fff; + background: #000; + cursor: pointer; + position:absolute; + top:0; + left: 0; +} +.sp-slider { + position: absolute; + top:0; + cursor:pointer; + height: 3px; + left: -1px; + right: -1px; + border: 1px solid #000; + background: white; + opacity: .8; +} + +/* +Theme authors: +Here are the basic themeable display options (colors, fonts, global widths). +See http://bgrins.github.io/spectrum/themes/ for instructions. +*/ + +.sp-container { + border-radius: 0; + background-color: #ECECEC; + border: solid 1px #aaa; + padding: 0; +} + +.sp-top { + margin-bottom: 3px; +} +.sp-color, .sp-hue, .sp-clear { + border: solid 1px #666; +} + +/* Input */ +.sp-input-container { + float:right; + width: 100px; + margin-bottom: 4px; +} +.sp-initial-disabled .sp-input-container { + width: 100%; +} +.sp-input { + font-size: 12px !important; + border: 1px inset; + padding: 4px 5px; + margin: 0; + width: 100%; + background:transparent; + border-radius: 3px; + color: #222; +} +.sp-input:focus { + border: 1px solid orange; +} +.sp-input.sp-validation-error { + border: 1px solid red; + background: #fdd; +} +.sp-picker-container , .sp-palette-container { + float:left; + position: relative; + padding: 10px; + padding-bottom: 300px; + margin-bottom: -290px; +} +.sp-picker-container { + width: 172px; + border-left: solid 1px #fff; +} + +/* Palettes */ +.sp-palette-container { + border-right: solid 1px #ccc; +} + +.sp-palette-only .sp-palette-container { + border: 0; +} + +.sp-palette .sp-thumb-el { + display: block; + position:relative; + float:left; + width: 24px; + height: 15px; + margin: 3px; + cursor: pointer; + border:solid 2px transparent; +} +.sp-palette .sp-thumb-el:hover, .sp-palette .sp-thumb-el.sp-thumb-active { + border-color: orange; +} +.sp-thumb-el { + position:relative; +} + +/* Initial */ +.sp-initial { + float: left; + border: solid 1px #333; +} +.sp-initial span { + width: 30px; + height: 25px; + border:none; + display:block; + float:left; + margin:0; +} + +.sp-initial .sp-clear-display { + background-position: center; +} + +/* Buttons */ +.sp-palette-button-container, +.sp-button-container { + float: right; +} + +/* Replacer (the little preview div that shows up instead of the ) */ +.sp-replacer { + margin: 0; + overflow:hidden; + cursor:pointer; + padding: 4px; + display:inline-block; + *zoom: 1; + *display: inline; + border: solid 1px #aaa; + background: #eee; + color: #333; + vertical-align: middle; + margin-bottom: 12px; +} +.sp-replacer:hover, .sp-replacer.sp-active { + color: #111; +} +.sp-replacer.sp-disabled { + cursor:default; + border-color: silver; + color: silver; +} +.sp-dd { + padding: 2px 0; + height: 16px; + line-height: 16px; + float:left; + font-size:10px; +} +.sp-preview { + position:relative; + border: 1px solid #000; + height: 28px; + width: 18.1px; + float: left; + z-index: 0; +} + +.sp-palette { + *width: 220px; + max-width: 220px; +} +.sp-palette .sp-thumb-el { + width:16px; + height: 16px; + margin:2px 1px; + border: solid 1px #d0d0d0; +} + +.sp-container { + padding-bottom:0; +} + + +/* Buttons: http://hellohappy.org/css3-buttons/ */ +.sp-container button { + background-color: #eeeeee; + background-image: -webkit-linear-gradient(top, #eeeeee, #cccccc); + background-image: -moz-linear-gradient(top, #eeeeee, #cccccc); + background-image: -ms-linear-gradient(top, #eeeeee, #cccccc); + background-image: -o-linear-gradient(top, #eeeeee, #cccccc); + background-image: linear-gradient(to bottom, #eeeeee, #cccccc); + border: 1px solid #ccc; + border-bottom: 1px solid #bbb; + border-radius: 3px; + color: #333; + font-size: 14px; + line-height: 1; + padding: 5px 4px; + text-align: center; + text-shadow: 0 1px 0 #eee; + vertical-align: middle; +} +.sp-container button:hover { + background-color: #dddddd; + background-image: -webkit-linear-gradient(top, #dddddd, #bbbbbb); + background-image: -moz-linear-gradient(top, #dddddd, #bbbbbb); + background-image: -ms-linear-gradient(top, #dddddd, #bbbbbb); + background-image: -o-linear-gradient(top, #dddddd, #bbbbbb); + background-image: linear-gradient(to bottom, #dddddd, #bbbbbb); + border: 1px solid #bbb; + border-bottom: 1px solid #999; + cursor: pointer; + text-shadow: 0 1px 0 #ddd; +} +.sp-container button:active { + border: 1px solid #aaa; + border-bottom: 1px solid #888; + -webkit-box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee; + -moz-box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee; + -ms-box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee; + -o-box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee; + box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee; +} +.sp-cancel { + font-size: 11px; + color: #d93f3f !important; + margin:0; + padding:2px; + margin-right: 5px; + vertical-align: middle; + text-decoration:none; + +} +.sp-cancel:hover { + color: #d93f3f !important; + text-decoration: underline; +} + + +.sp-palette span:hover, .sp-palette span.sp-thumb-active { + border-color: #000; +} + +.sp-preview, .sp-alpha, .sp-thumb-el { + position:relative; + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==); +} +.sp-preview-inner, .sp-alpha-inner, .sp-thumb-inner { + display:block; + position:absolute; + top:0;left:0;bottom:0;right:0; +} + +.sp-palette .sp-thumb-inner { + background-position: 50% 50%; + background-repeat: no-repeat; +} + +.sp-palette .sp-thumb-light.sp-thumb-active .sp-thumb-inner { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIVJREFUeNpiYBhsgJFMffxAXABlN5JruT4Q3wfi/0DsT64h8UD8HmpIPCWG/KemIfOJCUB+Aoacx6EGBZyHBqI+WsDCwuQ9mhxeg2A210Ntfo8klk9sOMijaURm7yc1UP2RNCMbKE9ODK1HM6iegYLkfx8pligC9lCD7KmRof0ZhjQACDAAceovrtpVBRkAAAAASUVORK5CYII=); +} + +.sp-palette .sp-thumb-dark.sp-thumb-active .sp-thumb-inner { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAAMdJREFUOE+tkgsNwzAMRMugEAahEAahEAZhEAqlEAZhEAohEAYh81X2dIm8fKpEspLGvudPOsUYpxE2BIJCroJmEW9qJ+MKaBFhEMNabSy9oIcIPwrB+afvAUFoK4H0tMaQ3XtlrggDhOVVMuT4E5MMG0FBbCEYzjYT7OxLEvIHQLY2zWwQ3D+9luyOQTfKDiFD3iUIfPk8VqrKjgAiSfGFPecrg6HN6m/iBcwiDAo7WiBeawa+Kwh7tZoSCGLMqwlSAzVDhoK+6vH4G0P5wdkAAAAASUVORK5CYII=); +} + +.sp-clear-display { + background-repeat:no-repeat; + background-position: center; + background-image: url(data:image/gif;base64,R0lGODlhFAAUAPcAAAAAAJmZmZ2dnZ6enqKioqOjo6SkpKWlpaampqenp6ioqKmpqaqqqqurq/Hx8fLy8vT09PX19ff39/j4+Pn5+fr6+vv7+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAP8ALAAAAAAUABQAAAihAP9FoPCvoMGDBy08+EdhQAIJCCMybCDAAYUEARBAlFiQQoMABQhKUJBxY0SPICEYHBnggEmDKAuoPMjS5cGYMxHW3IiT478JJA8M/CjTZ0GgLRekNGpwAsYABHIypcAgQMsITDtWJYBR6NSqMico9cqR6tKfY7GeBCuVwlipDNmefAtTrkSzB1RaIAoXodsABiZAEFB06gIBWC1mLVgBa0AAOw==); +} + +.open-spin { + width: 40px; + margin: -2px 0 -2px 0; + content: url(/s/img/favicon.png); + animation: spin 1.6s linear infinite; +} +@keyframes spin { 100% { -webkit-transform: rotate(360deg); transform:rotate(360deg); } } +.login-box input{ + padding: 1.5%; + max-width: 320px; + width: 96%; + border-radius: 5px; +} + +@keyframes glow { + from { + filter: drop-shadow(0px 0px 5px #fff); + } + to { + filter: drop-shadow(0px 0px 5px none); + } +} +.close-announce-container { + background-color: rgba(0, 0, 0, 0.06); + padding: 10px 10px 5px; + margin-bottom: 10px; + display: block; + text-align: center; +} +.close-announce-link { + background: #fff; + border: 1px solid rgba(0, 0, 0, 0.1); + overflow: hidden; + -webkit-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -ms-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -o-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2); + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; + text-align: left; + background: #fff9cd; + margin-bottom: 5px; + position: relative; +} +.close-announce-link:hover { + background-color: #fffce4; +} +.close-announce-link:before { + font-size: 14px; + content: 'A'; + color: #FF9100; + position: absolute; + right: 15px; + top: 50%; + margin-top: -9px; +} +.close-announce-link .title { + font-size: 16px; + font-weight: bold; + display: block; + color: #FF9100; + padding: 10px 25px 8px 10px; + line-height: 1.3em; +} diff --git a/static/closedverse.js b/static/closedverse.js new file mode 100644 index 0000000..e33b6a7 --- /dev/null +++ b/static/closedverse.js @@ -0,0 +1,3565 @@ +//! Modifications by Arian K and Lane B +var splatoon = true; +if(innerWidth <= 480 || navigator.userAgent.indexOf('Nintendo') > 0) { + splatoon = false; +} +//var loading_animate = false; +var loading_animate = true; +var pjax_container = '#container'; +// Edge lies about being WebKit but it works anyway +// Edit: This used to match 'WebKit' but it's now Gecko because WebKit will have that in here anyway +var webkit = navigator.userAgent.indexOf('WebKit') > 0 || navigator.userAgent.indexOf('Firefox') > 0; + + +function setupDrawboard() { +var canvas = document.getElementById("artwork-canvas"); +var ctx = canvas.getContext('2d'); + + var haval = $("input[type=hidden][name=painting]"); + if(haval.length) { + dds = new Image(); + dds.src = "data:image/png;base64," + haval.val(); + dds.onload = function() { + ctx.drawImage(dds,0,0); + }; + } + +var undoCanvas = document.getElementById('artwork-canvas-undo'); +var undoCtx = undoCanvas.getContext('2d'); +var redoCanvas = document.getElementById('artwork-canvas-redo'); +var redoCtx = redoCanvas.getContext('2d'); +undoCanvas.width = 320; undoCanvas.height = 120; +redoCanvas.width = 320; redoCanvas.height = 120; +canvas.width = 320; canvas.height = 120; +var mousePosOld = 0; +var artworkTool = {type: 0, size: 1}; +var sizeSmall = 1; +var sizeMedium = 2; +var sizeLarge = 4; +var artworkColor = "#000000"; +var artworkZoomFactor = 1; +function getMousePos(evt) { + var rect = canvas.getBoundingClientRect(); +if(evt.type == 'touchmove') { + var clientX = evt.touches[0].clientX; + var clientY = evt.touches[0].clientY; +} else { +var clientX = evt.clientX; +var clientY = evt.clientY; +} + return { + x: (clientX - rect.left) / artworkZoomFactor, + y: (clientY - rect.top) / artworkZoomFactor + }; +} +function drawLineNoAliasing(ctx, sx, sy, tx, ty) { + var dist = Math.sqrt((tx-sx)*(tx-sx)+(ty-sy)*(ty-sy)); + var ang = Math.atan((ty-sy)/((tx-sx)==0?0.01:(tx-sx)))+((tx-sx)<0?Math.PI:0); + for(var i=0;i"); + $("#memo-drawboard-page button").off('click'); + $('body').css('overflow', ''); +}); +} +var fixe = false; +function openDrawboardModal() { + if(innerWidth <= 800) { + fixe = true; + } + var g = new Olv.ModalWindow($('#memo-drawboard-page'));g.open(); + //fixe = false; + return true; +} +function setupPostForm2() { + var letters = ["a", "b", "c", "d", "e"]; // lazy as fuck but who cares lol + $("label.textarea-menu-memo > input").on("click", function(e) { + if (openDrawboardModal()) { + var menu = $("div.textarea-with-menu"); + var memo = $("div.textarea-memo"); + var text = $("div.textarea-container"); + var poll = $("div.textarea-poll"); + if (menu.hasClass("active-text") || menu.hasClass("active-poll")) { + menu.removeClass("active-text"); + menu.removeClass("active-poll"); + menu.addClass("active-memo"); + memo.removeClass("none"); + text.addClass("none"); + poll.addClass("none"); + } + Olv.Form.toggleDisabled($("input.post-button"), false); + + setupDrawboard(); + } + }); + +$("label.textarea-menu-text").on("click", switchtext); + +//$("label.textarea-menu-poll").on("click", switchpoll); + +//$('button.add-option').on('click', addOption); +//$('button.delete').on('click', deleteOption); + +$(".post-button").on("click", switchtext); +function switchtext() { +var menu = $("div.textarea-with-menu"); +menu.removeClass("active-memo"); +menu.removeClass("active-poll"); +menu.addClass("active-text"); +$("div.textarea-container").removeClass("none"); +$("div.textarea-memo").addClass("none"); +$("div.textarea-poll").addClass("none"); +$("textarea[name=body]").attr("data-required", ""); +//Olv.EntryForm.setupFormStatus($("#post-form"), d); +} +/* 'Commented because it\'s broken' +function switchpoll() { +var menu = $("div.textarea-with-menu"); +menu.removeClass("active-text"); +menu.removeClass("active-memo"); +menu.addClass("active-poll"); +$("div.textarea-poll").removeClass("none"); +$("div.textarea-container").removeClass("none"); +$("div.textarea-memo").addClass("none"); +$("textarea[name=body]").removeAttr("data-required"); +Olv.EntryForm.setupFormStatus($("#post-form"), d); +} +function addOption() { + var options = $(".option").length; + // lol it's Nintendo Switch + switch(options) { + case 2: + $(this).before(''); + $(".delete").removeClass("none"); + break; + case 3: + $(this).before(''); + break; + case 4: + $(this).before(''); + $(this).attr("disabled", "true"); + break; + default: + $('.textarea-poll').html(''); + $("button.add-option").on("click", addOption); + break; + } + $("button.delete").off("click"); + $("button.delete").on("click", deleteOption); + Olv.EntryForm.setupFormStatus($("#post-form"), d); +} +function deleteOption() { + var options = $(".option").length; + if(options == 5 || options == 4) { + $(".add-option").removeAttr("disabled"); + $(".option[name=" + $(this).attr("option") + "]").remove(); + $(this).remove(); + for(var i = 0; i < options - 1; i++) { + $(".option").eq(i).attr("name", "option-" + letters[i]); + $(".option").eq(i).attr("placeholder", "Option " + letters[i].toUpperCase()); + $(".delete").eq(i).attr("option", "option-" + letters[i]); + } + } else if(options == 3) { + $(".option[name=" + $(this).attr("option") + "]").remove(); + $(this).remove(); + for(var i = 0; i < options - 1; i++) { + $(".option").eq(i).attr("name", "option-" + letters[i]); + $(".option").eq(i).attr("placeholder", "Option " + letters[i].toUpperCase()); + $(".delete").not(this).eq(i).attr("option", "option-" + letters[i]); + } + $(".delete").addClass("none"); + } else { + $('.textarea-poll').html(''); + $("button.add-option").on("click", addOption); + $("button.delete").on("click", deleteOption); + } + Olv.EntryForm.setupFormStatus($("#post-form"), d); +} +*/ +} +//!© Nintendo/Hatena 2012-2017 copyright@hatena.com +function negroThing(b, a) { + console.log('negroThing') + var e = $("#upload-file"), + //h = $("#upload-input"), + f = $("#upload-preview"), + l = $("#upload-preview-container"), + m = $("#image-dimensions"), + n = function(a) { console.log('changee') + switch (!0) { + case void 0 !== a.target.files: + var b = a.target.files; + break; + case void 0 !== a.originalEvent.clipboardData: + b = a.originalEvent.clipboardData.files; + break; + case void 0 !== a.originalEvent.dataTransfer: + b = a.originalEvent.dataTransfer.files; + break; + default: + return + } + if (!(null === b || 0 > b.length || void 0 === b[0] || 0 > b[0].type.indexOf("image"))) { + a.preventDefault(); + Olv.Form.toggleDisabled($("input.black-button"), !1); + f.hide(); + l.hide(); + //h.val(""); + f.attr("src", ""); + m.text("..."); + var e = new FileReader, + n = function() { + f.attr("src", e.result); + f.show(); + var a = new Image; + a.src = e.result; + var b = function() { + m.text(a.width + " x " + a.height); + a.removeEventListener("load", b) + }; + a.addEventListener("load", b); + l.show(); + //h.val(e.result.split(";base64,")[1]); + e.removeEventListener("load", n) + }; + e.addEventListener("load", n); + e.readAsDataURL(b[0]) + } + }; + e.change(n); +console.log(b) + b.on("dragover dragenter", function(a) { + a.preventDefault() + }); + b.on("drop paste", n); + if (!a) b.on("olv:entryform:post:done", function() { + $('image-dimensions').text("PNG, JPEG, and GIF are allowed."); + $('upload-preview').hide(); + $('upload-preview-container').hide(); + $('upload-preview').attr("src", ""); + //h.val("") + }) +} +var Olv = Olv || {}; +(function(a, b) { + b.init || (b.init = a.Deferred(function() { + a(this.resolve) + }).promise(), + b.Router = function() { + this.routes = [], + this.guard = a.Deferred() + } + , + a.extend(b.Router.prototype, { + connect: function(a, b) { + a instanceof RegExp || (a = new RegExp(a)), + this.routes.push([a, b]) + }, + dispatch: function(b) { + a("#global-menu-list > ul > li.selected").removeClass("selected"); + this.guard.resolve(b), + this.guard = a.Deferred(); + for (var c, d = b.pathname, e = 0; c = this.routes[e]; e++) { + var f = d.match(c[0]); + f && c[1].call(this, f, b, this.guard.promise()) + } + } + }), + b.router = new b.Router, + a(document).on("pjax:end", function(c, d) { + a(document).trigger("olv:pagechange", [d]), + b.router.dispatch(location) + }), + b.init.done(function() { + b.init.done(function() { + b.router.dispatch(location) + }) + }), + b.Locale = { + Data: {}, + text: function(a) { + var c = Array.prototype.slice.call(arguments); + return c.splice(1, 0, -1), + b.Locale.textN.apply(this, c) + }, + textN: function(a, c) { + //if (b.Cookie.get("plain_msgid")) + // return a; + c = +c || 0; + var d = b.Locale.Data[a]; + if (!d) + return a; + var e, f, g = d.quanttype || "o", h = "1_o" === g && 1 === c || "01_o" === g && (0 === c || 1 === c); + if (h ? (e = d.text_value_1 || d.value_1, + f = d.text_args_1 || d.args_1) : (e = d.text_value || d.value, + f = d.text_args || d.args), + !f) + return e; + var i = Array.prototype.slice.call(arguments, 2) + , j = 0; + return e.replace(/%s/g, function() { + return i[f[j++] - 1] + }) + } + }, + b.loc = b.Locale.text, + b.loc_n = b.Locale.textN, + b.print = function(a) { + "undefined" != typeof console && console.log(a) + } + , + b.deferredAlert = function(b) { + var c = a.Deferred(); + return setTimeout(function() { + alert(b), + c.resolve() + }, 0), + c.promise() + } + , + b.deferredConfirm = function(b) { + var c = a.Deferred(); + return setTimeout(function() { + var a = confirm(b); + c.resolve(a) + }, 0), + c.promise() + } + , + b.Closed = { + blank: /^[\s\u00A0\u3000]*$/, + open_spinner: '', + lights: function() { + $('#darkness').prop('disabled',function(a,b){return !b}) + Olv.Form.get('/lights') + }, + prlinkConf: function() { + $('#container').prepend('

    Confirm link

    Are you sure you want to visit '+ass+'?

    '); + var g = new Olv.ModalWindow($('.linkc'));g.open(); + }, + changesel: function(a) { + $("li#global-menu-" + a).addClass("selected"); + } + /*, + chksum: function(r) { + for(var e=0,t=new Array(256),a=0;256!=a;++a)e=1&(e=1&(e=1&(e=1&(e=1&(e=1&(e=1&(e=1&(e=a)?-306674912^e>>>1:e>>>1)?-306674912^e>>>1:e>>>1)?-306674912^e>>>1:e>>>1)?-306674912^e>>>1:e>>>1)?-306674912^e>>>1:e>>>1)?-306674912^e>>>1:e>>>1)?-306674912^e>>>1:e>>>1)?-306674912^e>>>1:e>>>1,t[a]=e;for(var o,c="undefined"!=typeof Int32Array?new Int32Array(t):t,f=-1^0,A=0,d=r.length;A>>8^c[255&(f^e)]:e<2048?f=(f=f>>>8^c[255&(f^(192|e>>6&31))])>>>8^c[255&(f^(128|63&e))]:e>=55296&&e<57344?(e=64+(1023&e),o=1023&r.charCodeAt(A++),f=(f=(f=(f=f>>>8^c[255&(f^(240|e>>8&7))])>>>8^c[255&(f^(128|e>>2&63))])>>>8^c[255&(f^(128|o>>6&15|(3&e)<<4))])>>>8^c[255&(f^(128|63&o))]):f=(f=(f=f>>>8^c[255&(f^(224|e>>12&15))])>>>8^c[255&(f^(128|e>>6&63))])>>>8^c[255&(f^(128|63&e))]; + return (-1^f) + '----/' + } + */ + }, + b.Net = { + ajax: function(c) { + var d = a.ajax(c) + , e = b.Net._pageId + , f = d.then(function(c, d, f) { + var g = b.Net._pageId === e + /*, h = c && "object" == typeof c && !c.success || !g*/ + , i = [c, d, f, g]; + return a.Deferred().resolveWith(this, i) + }, function(c, d) { + var f = b.Net.getDataFromXHR(c); + void 0 === f && (f = c.responseText); + var g = b.Net._pageId === e; + return a.Deferred().rejectWith(this, [f, d, c, g]) + }); + return f.fail(b.Net.errorFeedbackHandler), + f.promise(d), + d + }, + _pageId: 1, + getDataFromXHR: function(b) { + var c = b.responseText + , d = b.getResponseHeader("Content-Type"); + if (c && d && /^application\/json(?:;|$)/.test(d)) + try { + return a.parseJSON(c) + } catch (e) {} + return void 0 + }, + getErrorFromXHR: function(a) { + var c = b.Net.getDataFromXHR(a) + , d = c && c.errors && c.errors[0]; + if (d && "object" == typeof d) + return d; + var e = a.status; + if((!('responseText' in a) || a.responseText.length < 2) && e == 400) { + return { + error_code: "Bad Request", + message: "The request or action sent was invalid. Try again?" + } + } + switch(e) { + case 404: + return { + error_code: "Not Found", + message: "The resource or action couldn't be found.\n" + } + break; + case 403: + return { + error_code: "Not Allowed (Forbidden)", + message: "Try refreshing the page or logging back in.\n" + } + break; + case 500: + errmsg = "An error has been encountered in the server.\n"; + if(a.getResponseHeader('Content-Type').indexOf('html') < 0) { + errmsg += "Error information is available; please send this to an administrator:\n"; + if(innerWidth <= 480) { + errmsg += a.responseText.substr(0, 400); + } else { + errmsg += a.responseText.substr(0, 1000); + } + } + return { + error_code: "Internal server error", + message: errmsg + } + break; + case 503: + return { + error_code: "Service temporarily unavailable", + message: "Unfortunately, it's down now. Come back later, or try reloading for now.\n" + } + break; + case 420: + return { + error_code: "Service is probably down", + message: "You've just recieved an error code that's usually recieved after a shutdown or some kind of service downage. So, don't refresh!\n" + } + break; + case 502: + return { + error_code: "Bad gateway", + message: "There's an issue with the application server right now. Wait for it to come back later, and inform an admin about this (because they probably don't do and therefore cannot fix it).\n" + } + break; + case 521: + return { + error_code: "Web server is down", + message: "Oops, something has probably gone terminally wrong. Come back later?\n" + } + break; + default: + return e ? 500 > e ? { + error_code: e, + message: b.loc("olv.portal.error.failed_to_connect.for_offdevice") + } : { + error_code: 1219999, + message: b.loc("olv.portal.error.500.for_offdevice") + } : { + error_code: "Connection error", + message: "Couldn't connect to the server, try again later." + } + break; + } + + }, + _isLeavingPage: !1, + willLeavePage: function() { + b.Net._isLeavingPage = !0, + setTimeout(function() { + b.Net._isLeavingPage = !1 + }, 100) + }, + errorFeedbackHandler: function(a, c, d, e) { + if ("abort" !== c && e && (d.status || !b.Net._isLeavingPage)) { + var f = this + , g = arguments; + setTimeout(function() { + b.Net._errorFeedbackHandler.apply(f, g) + }, d.status ? 0 : 1507) + } + }, + _errorFeedbackHandler: function(c, d, e, f) { + var g = b.Net.getErrorFromXHR(e); + this.silent || b.ErrorViewer.open(g), + a(document).trigger("olv:ajax:error", [g, d, e]) + }, + get: function(a, c, d, e) { + return b.Net.ajax({ + method: "GET", + url: a, + data: c, + success: d, + dataType: e, + beforeSend:function(){NProgress.start()},complete:function(){NProgress.done()} + }) + }, + post: function(a, c, d, e) { + return b.Net.ajax({ + method: "POST", + url: a, + data: c, + success: d, + dataType: e, + beforeSend:function(){NProgress.start()},complete:function(){NProgress.done()} + }) + }, + go: function(a) { + $.pjax({url: a, container: pjax_container}); + }, + lo: function(cation) { + location.href = cation; + }, + reload: function() { + $.pjax.reload(pjax_container); + } + }, + b.Browsing = { + setup: function() { + a(document).on("click", "[data-href]", this.onDataHrefClick), + a(window).on("click submit", this.onMayLeavePage) + }, + onDataHrefClick: function(c) { + if (a(c.target).attr("data-href")) { + b.Net.go($(this).attr("data-href")); + } + if (!c.isDefaultPrevented() && !a(c.target).closest("a,button").length) { + var d = a(this); + if (!d.hasClass("disabled")) { + var e = d.attr("data-href"); + b.Net.go(e); + } + } + }, + onMayLeavePage: function(c) { + c.isDefaultPrevented() || "click" === c.type && !a(c.target).closest("[href]").length || b.Net.willLeavePage() + } + }, + b.init.done(function() { + b.Browsing.setup() + }), + b.Utils = {}, + b.Utils.toJSONString = "undefined" != typeof JSON ? JSON.stringify : function() { + function a(a) { + return "\\u" + (65536 + a.charCodeAt(0)).toString(16).substring(1) + } + function b(c) { + switch (typeof c) { + case "string": + return '"' + c.replace(/[\u0000-\u001f\"\\\u2028\u2029]/g, a) + '"'; + case "number": + case "boolean": + return "" + c; + case "object": + if (!c) + return "null"; + var d = Object.prototype.toString.call(c).slice(8, -1); + switch (d) { + case "String": + case "Number": + case "Boolean": + return b(c.valueOf()); + case "Array": + for (var e = [], f = 0; f < c.length; f++) + e.push(b(c[f])); + return "[" + e.join(",") + "]"; + case "Object": + var e = []; + for (var f in c) + c.hasOwnProperty(f) && e.push(b(f) + ":" + b(c[f])); + return "{" + e.join(",") + "}" + } + return "null" + } + return "null" + } + return b + }(), + b.Utils._staticRoot = null, + b.Utils.staticURL = function(c) { + if (/^https?:/.test(c)) + return c; + var d = b.Utils._staticRoot; + return null === d && document.getElementById("main-body") && (d = b.Utils._staticRoot = (a("#main-body").attr("data-static-root") || "").replace(/\/$/, "")), + (d || "") + c.replace(/^(?!\/)/, "/") + } + , + b.Utils.isIE8AndEarlierStyle = !!document.createStyleSheet && "undefined" == typeof document.documentElement.style.opacity, + b.Utils.isIEStyle = !!window.TextRange, + b.Utils.addPlatformClass = function() { + var c = a(document.documentElement) + , d = navigator.userAgent + , e = /\bWin/.test(d) ? "win" : /\bMac/.test(d) ? "mac" : "other"; + c.addClass("os-" + e), + b.Utils.isIE8AndEarlierStyle && c.addClass("ie8-earlier"), + b.Utils.isIEStyle && c.addClass("ie") + } + , + b.Utils.addPlatformClass(), + b.Utils.fixWebFontLoadTiming = function() { + var a = document.createStyleSheet(); + a.cssText = ":before, :after { content: none !important; }", + setTimeout(function() { + var b = a.owningElement; + b.parentNode.removeChild(b) + }, 20) + } + , + b.Utils.isIE8AndEarlierStyle && b.init.done(b.Utils.fixWebFontLoadTiming), + b.Utils.triggerHandlers = { + keypress: function(b) { + 13 !== b.which || b.isDefaultPrevented() || (b.preventDefault(), + a(this).click()) + }, + mouseup: function(a) { + this.blur() + } + }, + b.init.done(function(a) { + a(document).on(b.Utils.triggerHandlers, ".trigger") + }), + b.Content = {}, + b.Content.autopagerize = function(c, d) { + function e() { + if (!(k._disabledCount || h.scrollTop() + h.height() + 200 < f.offset().top + f.outerHeight())) { + var d = a("
    ").attr("class", "post-list-loading").append(a(b.Closed.open_spinner)).appendTo(f); + i = a.ajax({ + url: g, + headers: { + "X-AUTOPAGERIZE": !0 + } + }).done(function(b) { + var h = a("
    " + b + "
    ").find(c); + g = h.attr("data-next-page-url") || "", + g || j.resolve(), + f.trigger("olv:autopagerize", [h, g, d]), + h.children().each(function() { + this.id && a("#" + this.id).length && a(this).detach() + }), + f.attr("data-next-page-url", g), + f.append(h.children()), + g && setTimeout(e, 0) + }).always(function() { + d.remove(), + i = null + }), + k.disable(i) + } + } + var f = a(c) + , g = f.attr("data-next-page-url"); + if (g) { + a("#main-body").addClass("is-autopagerized"); + var h = a(window) + , i = null + , j = a.Deferred() + , k = b.Content.autopagerize; + h.on("scroll", e), + j.done(function() { + h.off("scroll", e), + i && i.abort(), + a("#main-body").removeClass("is-autopagerized") + }), + setTimeout(e, 0), + d.done(j.resolve) + } + } + , + b.Content.autopagerize._disabledCount = 0, + b.Content.autopagerize.disable = function(a) { + var c = b.Content.autopagerize; + c._disabledCount++, + a.always(function() { + c._disabledCount-- + }) + } + , + b.Content.preloadImages = function() { + for (var a = arguments.length, b = a; b--; ) { + var c = document.createElement("img"); + c.src = arguments[b] + } + } + , + b.Form = { + toggleDisabled: function(c, d) { + var e = void 0 === d; + return c.each(function() { + var c = a(this) + , f = e ? !b.Form.isDisabled(c) : d; + if (c.toggleClass("disabled", f), + "undefined" != typeof this.form) + c.prop("disabled", f); + else { + var g = f ? "href" : "data-disabled-href" + , h = f ? "data-disabled-href" : "href" + , i = c.attr(g); + void 0 !== i && (c.removeAttr(g), + c.attr(h, i)) + } + }), + c + }, + isDisabled: function(a) { + return a.length && "undefined" != typeof a[0].form ? a.prop("disabled") : a.hasClass("disabled") + }, + disable: function(a, c) { + return b.Form.toggleDisabled(a, !0), + c.always(function() { + b.Form.toggleDisabled(a, !1) + }), + a + }, + disableSoon: function(a, c) { + return setTimeout(function() { + "pending" === c.state() && b.Form.toggleDisabled(a, !0) + }, 0), + c.always(function() { + b.Form.toggleDisabled(a, !1) + }), + a + }, + emulateInputEvent: function(b, c) { + if (b.length && "undefined" == typeof b[0].oninput) { + var d = a.map(b, function(a) { + return a.value + }) + , e = setInterval(function() { + for (var c = 0, e = b.length; e > c; c++) { + var f = b[c].value; + f !== d[c] && (d[c] = f, + a(b[c]).trigger("input")) + } + }, 100); + c.always(function() { + clearInterval(e) + }) + } + }, + submit: function(b, c) { + b.trigger("olv:form:submit", [c || a()]); + if(a('input[type=file]').length) { + var d = new FormData(b[0]) + d.append('screen', $('input[type=file]')[0].files[0]) + sucky = true + } else { + var d = b.serializeArray() + sucky = false + } + var e = c && c.is("input, button") && c.prop("name"); + e && d.push({ + name: e, + value: c.val() + }); + var f = { + method: b.prop("method"), + url: b.attr("action"), + data: d + }; + if(sucky) { + f.processData = false; + f.contentType = false; + } + return this.send(f, c) + }, + get: function(a, b, c) { + var d = { + method: "GET", + url: a, + data: b + }; + return this.send(d, c) + }, + _csrfmiddlewaretoken: null, + csrfmiddlewaretoken: function() { + return null === b.Form._csrfmiddlewaretoken && (b.Form._csrfmiddlewaretoken = a("#main-body").attr("csrf-token")), + b.Form._csrfmiddlewaretoken + }, + csrftoken: function(a) { + a.csrfmiddlewaretoken = b.Form.csrfmiddlewaretoken() + return a + }, + post: function(c, d, e) { + d || (d = {}), + a.isArray(d) ? d.push({ + name: "csrfmiddlewaretoken", + value: b.Form.csrfmiddlewaretoken() + }) : d.csrfmiddlewaretoken = b.Form.csrfmiddlewaretoken(); + var f = { + method: "POST", + url: c, + data: d + }; + return this.send(f, e) + }, + send: function(c, d) { + var e = b.Net.ajax(c); + return a(document).trigger("olv:form:send", [e, c, d || a()]), + d && (b.Form.disableSoon(d, e), + d.addClass("loading"), + e.always(function() { + d.removeClass("loading") + })), + e + }, + updateParentClass: function(c) { + switch (c.type) { + case "radio": + var d = a(c.form ? c.form.elements[c.name] : 'input[name="' + c.name + '"]'); + d.each(function() { + a(this).parent().toggleClass("checked", this.checked) + }), + b.Utils.isIE8AndEarlierStyle && d.parent().addClass("changing").removeClass("changing"); + break; + case "checkbox": + a(c).parent().toggleClass("checked", c.checked) + } + }, + setup: function() { + a(document).on("click", "input", function(a) { + a.isDefaultPrevented() || b.Form.updateParentClass(this) + }) + }, + setupForPage: function() { + a("input:checked").each(function() { + b.Form.updateParentClass(this) + }) + }, + reset: function(c) { + c.each(function() { + this.reset(), + a(this).find("input").each(function() { + b.Form.updateParentClass(this) + }) + }) + }, + validateValueLength: function(b) { + var c = a(this); + c.find("[minlength], [maxlength]").each(function() { + var c = a(this) + , d = +c.attr("minlength"); + isNaN(d) && (d = -(1 / 0)); + var e = +c.attr("maxlength"); + isNaN(e) && (e = 1 / 0); + var f = c.val(); + return f.length >= d && f.length <= e ? void 0 : void b.preventDefault() + }) + } + }, + b.init.done(b.Form.setup), + b.router.connect("", b.Form.setupForPage), + b.Guest = { + isGuest: function() { + return a("main-body").hasClass("guest") + } + }, + b.DecreasingTimer = function(a, b, c) { + this.callback_ = a, + this.initialInterval_ = b || 1e4, + this.maxInterval_ = c || 1 / 0, + this.interval_ = this.initialInterval_, + this.timeouts_ = [] + } + , + b.DecreasingTimer.prototype.resetInterval = function() { + this.interval_ = this.initialInterval_, + this.clearAllTimeouts(), + this.invoke() + } + , + b.DecreasingTimer.prototype.clearAllTimeouts = function() { + a(this.timeouts_).each(a.proxy(function(a, b) { + this.clearTimeout(b) + }, this)) + } + , + b.DecreasingTimer.prototype.clearTimeout = function(a) { + for (var b = 0, c = this.timeouts_.length; c > b; ++b) + if (this.timeouts_[b] == a) { + clearTimeout(this.timeouts_[b]), + this.timeouts_.splice(b, 1); + break + } + } + , + b.DecreasingTimer.prototype.invoke = function() { + this.callback_(); + var b; + b = setTimeout(a.proxy(function() { + this.invoke(), + this.clearTimeout(b) + }, this), this.interval_), + this.timeouts_.push(b), + this.interval_ = Math.min(Math.floor(1.5 * this.interval_), this.maxInterval_) + } + , + b.UpdateChecker = function(a, c) { + this._settings = {}, + b.DecreasingTimer.call(this, this.callback_, a, c) + } + , + b.UpdateChecker.prototype = new b.DecreasingTimer, + b.UpdateChecker.getInstance = function() { + return void 0 == b.UpdateChecker.instance && (b.UpdateChecker.instance = new b.UpdateChecker(2e4,18e5)), + b.UpdateChecker.instance + } + , + b.UpdateChecker.prototype.callback_ = function() { + + var c = {}; + a.each(this._settings, a.proxy(function(d) { + void 0 != this._settings[d].pathname && this._settings[d].pathname != location.pathname ? delete this._settings[d] : a.each(this._settings[d].params, a.proxy(function(a, d) { + c[a] = b.Utils.toJSONString(d) + }, this)) + }, this)), + b.Net.ajax({ + url: "/alive", + silent: !0, + cache: !1 + }).done(a.proxy(function(b) { + a(this).triggerHandler("update", [b]) + }, this)) + + } + , + b.UpdateChecker.prototype.onUpdate = function(a, b, c, d) { + this._settings[a] = { + params: b, + update: c + }, + d && (this._settings[a].pathname = location.pathname) + } + , + b.OpenTruncatedTextButton = {}, + b.OpenTruncatedTextButton.setup = function(b) { + var c = a(b); + c.on("click", ".js-open-truncated-text-button", function(a) { + a.preventDefault(), + c.find(".js-truncated-text, .js-open-truncated-text-button").addClass("none"), + c.find(".js-full-text").removeClass("none") + }) + } + , + b.ModalWindowManager = {}, + b.ModalWindowManager._windows = [], + b.ModalWindowManager.currentWindow = null, + b.ModalWindowManager.closeAll = function() { + //b.ModalWindowManager._windows = []; + + for (; this.currentWindow; ) + this.currentWindow.close() + + } + , + b.ModalWindowManager.closeUntil = function(a) { + if (a.guard) + for (var b; (b = this.currentWindow) && (b.close(), + b !== a); ) + ; + } + , + b.ModalWindowManager.register = function(a) { + var b = this._windows; + b.length ? b[b.length - 1].element.removeClass("active-dialog") : this.toggleMask(!0), + a.element.addClass("active-dialog"), + b.push(a), + this.currentWindow = a + } + , + b.ModalWindowManager.unregister = function(a) { + if (this.currentWindow !== a) + throw new Error("Failed to unregister modal window"); + var b = this._windows; + b.pop().element.removeClass("active-dialog"); + var c = b.length ? b[b.length - 1] : null; + c ? c.element.addClass("active-dialog") : this.toggleMask(!1), + this.currentWindow = c + } + , + b.ModalWindowManager._mask = null, + b.ModalWindowManager.toggleMask = function(b) { + if(a(".mask").length) { + a('body').css('position', ''); + a(".mask").remove(); + } else { + if(fixe) { + a('body').css('position', 'fixed'); + } + a("#main-body").append("
    "); + } + } + , + b.ModalWindowManager.setup = function() { + a(document).on("click", "[data-modal-open]", function(c) { + var d = a(this); + if (!b.Form.isDisabled(d) && !c.isDefaultPrevented()) { + c.preventDefault(); + var e = a.Event("olv:modalopen"); + if (d.trigger(e), + !e.isDefaultPrevented()) { + var f = a(d.attr("data-modal-open")); + f.attr("data-is-template") && (f = f.clone().removeAttr("id")); + var g = new b.ModalWindow(f,this); + g.open() + } + } + }), + a(document).on("click", ".olv-modal-close-button", function(a) { + if (!a.isDefaultPrevented()) { + a.preventDefault(); + var c = b.ModalWindowManager.currentWindow; + c && c.close() + } + }), + a(document).on("olv:modal", function(a, c, d) { + b.Content.autopagerize.disable(d) + }) + } + , + b.init.done(function() { + b.ModalWindowManager.setup() + }), + a(document).on("olv:pagechange", function() { + b.ModalWindowManager.closeAll(); + }), + b.ModalWindow = function(b, c) { + this.element = a(b), + this.triggerElement = a(c), + this.temporary = !this.element.parent().length; + var d = a.trim(this.element.attr("data-modal-types")); + this.types = d ? d.split(/\s+/) : [], + this.guard = null + } + , + b.ModalWindow.prototype.open = function() { + return this.guard ? void 0 : (document.activeElement && document.activeElement.blur(), + b.ModalWindowManager.register(this), + b.Form.toggleDisabled(this.triggerElement, !0), + this.element.addClass("modal-window-open").removeClass("none"), + this.temporary && this.element.appendTo(document.getElementById("main-body")), + this.triggerOpenHandlers(a.Deferred()), + this) + } + , + b.ModalWindow.prototype.triggerOpenHandlers = function(a) { + this.guard = a; + for (var b, c = [this, a.promise()], d = 0; b = this.types[d]; d++) + this.element.trigger("olv:modal:" + b, c); + this.element.trigger("olv:modal", c) + } + , + b.ModalWindow.prototype.close = function() { + return this.guard ? (this.guard.resolve(), + this.guard = null, + b.ModalWindowManager.unregister(this), + this.temporary && this.element.remove(), + this.element.addClass("none").removeClass("modal-window-open"), + b.Form.toggleDisabled(this.triggerElement, !1), + this) : void 0 + } + , + b.SimpleDialog = { + _element: null, + element: function() { + var b = this._element || (this._element = a("
    ", { + "class": "dialog" + }).append(a("
    ", { + "class": "dialog-inner" + }).append(a("
    ", { + "class": "window" + }).append(a("

    ", { + "class": "window-title" + }), a("
    ", { + "class": "window-body" + }).append(a("

    ", { + "class": "window-body-content" + }), a("

    ", { + "class": "form-buttons" + }).append(a("

    '); + var g = new b.ModalWindow($('.feedback-dialog'));g.open(); + $('#feedbackbody').on('input', function() { + b.Form.toggleDisabled($('.d-send'), !$(this).length < 0 || (b.Closed.blank.test($(this).val()))) + }); + $('.d-send').on('click', function() { + b.Form.post('/complaints', $('#feedback-form').serializeArray()).done(function() { + g.close();$('.feedback-dialog').remove() + b.showMessage("", "That was successfully submitted, and hopefully someone will see it. Thank you!") + }) + }) + }); + + $('.my-menu-account-setting').on('click', function(e) { + e.preventDefault(); + $.ajax({url: '/pref', + success: function(a) { + yeah_notifications = a[0] ? ' checked' : ''; + lights_off = a[1] ? ' checked' : ''; + online_status = a[2] ? ' checked' : ''; + + $('#wrapper').prepend('

    Account preferences

    These are your account\'s preferences, pretty self-explanatory.


    Enable notifications for Yeahs
    Enable dark mode
    Hide my latest time seen and online status from others
    '); + var g = new b.ModalWindow($('.acc-set'));g.open(); + $('.ac-send').on('click',function() { + b.Form.post('/pref', $('#feedback-form').serializeArray()) + g.close(); + $('.acc-set').remove(); + }) + }, error: function() { + b.showMessage('', "Can't open your account preferences because getting your current preferences failed.") + } + }); + + }); + // Unthing + } + , + b.init.done(function() { + $('#wrapper').attr('class', $('#main-body').attr('class')); + b.Global.setupMyMenu() + }), + b.init.done(function(a) { + if (a("#global-menu-news").length) { + a("#global-menu-news > a").on("click", function(b) { + a(b.currentTarget).find(".badge").hide() + }); + var c = b.UpdateChecker.getInstance(); + a(c).on("update", function(b, d) { + a.each(c._settings, function(b, c) { + var e = !0; + a.each(c.params, function(a, b) { + void 0 === d[a] && (this.success = !1) + }), + e && c.update.call(void 0, d, c.params) + }) + }), + c.onUpdate("check_update", { + n: {}, + msg: {} + }, function(b, c) { + // If the response is blank, set both of the counts as 0. + if(!b || b.length > 2) { + b = [unescape('\x00'), unescape('\x00')]; + } + // Notification + var d = a("#global-menu-news") + , e = d.find(".badge"); + 0 === e.length && (e = a("", { + "class": "badge" + }), + e.hide().appendTo(d.find("a"))); + var f = 0; + f += b[0].charCodeAt() + e.text(f), + e.toggle(f > 0) + + // Message + var g = a("#global-menu-message") + , h = g.find(".badge"); + 0 === h.length && (h = a("", { + "class": "badge" + }), + h.hide().appendTo(g.find("a"))); + var j = 0; + j += b[1].charCodeAt() + h.text(j), + h.toggle(j > 0) + }), + a(document).on("pjax:complete", function(a) { + c.resetInterval() + }), + c.invoke() + } + }), + b.router.connect("^/activity$", function(c, d, e) { + b.Closed.changesel("feed"); + function f() { + var c = a("#post-form"); + b.Form.setupForPage(), + b.EntryForm.setupSubmission(c, e), + b.EntryForm.setupFormStatus(c, e), + b.EntryForm.setupFoldedForm(c, e); + if($('#post-form').length) { + setupPostForm2(); + } + b.User.setupFollowButton(e), + c.hasClass("for-identified-user") && b.EntryForm.setupIdentifiedUserForm(c, e), + c.on("olv:entryform:post:done", g), + e.done(function() { + a("form.search").off("submit", b.Form.validateValueLength) + }) + } + function g(b, c) { + var d = a(".js-post-list"); + d.length || (d = a("
    ", { + "class": "list post-list js-post-list" + }).replaceAll(".no-content")); + var e = a(a.parseHTML(c)).filter("*"); + e.hide().fadeIn(400).prependTo(d); + var f = a(window); + f.scrollTop(e.offset().top + e.outerHeight() / 2 - f.height() / 2) + } + $('form.search').on('submit', function(s) { + s.preventDefault(); + b.Net.go($(this).attr('action') + '?'+$(this).serialize()); + }); + b.Entry.setupEmpathyButtons(e); + a("form.search").on("submit", b.Form.validateValueLength); + var h, i, j = a(".content-loading-window"); + if (j.length) { + var k = d.search.substring(1); + k && (k = "&" + k), + h = b.Net.ajax({ + type: "GET", + url: window.location.href,/* + url: d.pathname + "?" + a.param({ + fragment: "activityfeed" + }) + k,*/ + silent: !0, beforeSend:function(){NProgress.start()},complete:function(){NProgress.done()}, + }).done(function(l) { + a("#js-main").html(l), + a(document).trigger("olv:activity:success", [l, c, d]) + pf = $('div.post-form') + if(pf.length) { + $('#js-main').prepend($('div.post-form')) + pf.removeClass('none') + f() + } + b.Content.autopagerize(".js-post-list", e), + b.Entry.setupHiddenContents(e); + }).fail(function() { + setTimeout(function() { + j.remove(), + a(".content-load-error-window").removeClass("none") + }, 5e3) + }); + + /* + var l = "friend" !== b.Cookie.get("view_activity_filter"); + i = l ? b.Net.ajax({ + type: "GET", + url: "/my/latest_following_related_profile_posts", + silent: !0 + }) : a.Deferred().resolve().promise() + */ + + } else + h = a.Deferred().resolve().promise(), + //i = a.Deferred().resolve().promise(); + h.then(function() { + f() + }); + /* + a.when(h).done(function(b) { + var d = a(a.parseHTML(a.trim(c[0]))); + e.each(function(b, c) { + var e = d.get(b); + e && (a(c).html(e), + f.push(c)) + }), + a(f).removeClass("none") + }), + e.done(function() { + h.abort && h.abort() + }) + */ + + $('div.post-filter > form > input[type=checkbox]').on('click', function() { + b.Net.go(d.pathname + "?" + $(this).attr('name') + "=" + $(this).attr('value')) + }); + }), + b.router.connect("^(?:/|/communities)$", function(c, d, e) { + b.Closed.changesel("community"); + /* + if(a("#header-news").length) { + o = a("#header-news"); + l = a(".header-news-button").attr("href") + "/read.json"; + a(".close-button").on("click", function(s) { + s.preventDefault(); + a.post(o); + alert("POSTed to " + l); + o.remove(); + }); + o.on("click", function(){ + a.post(o); + alert("POSTed to " + l); + b.Net.go(o.attr("href")); + }); + } + */ + function f(b) { + a(".tab-body").addClass("none"), + a("#tab-" + b + "-body").removeClass("none"), + a(".platform-tab a").removeClass("selected"), + a("#tab-" + b).addClass("selected") + } + function g(c) { + var d = a(this); + if (!b.Form.isDisabled(d) && !c.isDefaultPrevented()) { + c.preventDefault(); + var e = a(this).attr("data-platform"); + f(e); + //b.Cookie.set("view_platform", e) + } + } + function h(b) { + if (!b.isDefaultPrevented()) { + b.preventDefault(); + var c = a(this).find('select[name="category"]').val(); + window.location.href = c + } + } + //var i = b.Cookie.get("view_platform"); + //i && f(i), + // !! RE-ENABLE THIS WHEN WE WAND the HoT Diary Post Slide Show + //b.Community.setupHotDiaryPostSlideShow(e), + a(".platform-tab a").on("click", g), + a(".filter-select-page form").on("submit", h), + a("form.search").on("submit", b.Form.validateValueLength), + e.done(function() { + a(".platform-tab a").off("click", g), + a(".filter-select-page form").off("submit", h), + a("form.search").off("submit", b.Form.validateValueLength) + }) + $('form.search').on('submit', function(s) { + s.preventDefault(); + b.Net.go($(this).attr('action') + '?'+$(this).serialize()) + }) + }), + b.router.connect("^/communities/all$", function(c, d, e) { + b.Closed.changesel("community"); + gsl = function(e) { + e.preventDefault(); + $('.community-switcher-tab.selected').removeClass('selected'); + $(this).addClass('selected'); + cl = $(this).attr('class').split(' ')[1], + $('.' + cl).removeClass('none') + $('.communities:not(.none):not(.'+ cl +')').addClass('none') + } + $('.community-switcher-tab.gen').on('click',gsl), + $('.community-switcher-tab.game').on('click',gsl), + $('.community-switcher-tab.special').on('click',gsl); + $('.community-switcher-tab.usr').on('click',gsl); + }), + b.router.connect("^/communities.search$", function(c) { + $('form.search').on('submit', function(s) { + s.preventDefault(); + b.Net.go($(this).attr('action') + '?'+$(this).serialize()) + }) + $("form.search").off("submit", b.Form.validateValueLength); + }), + b.router.connect("^/(identified_user_posts|notifications)+$", function(a, c, d) { + b.Guest.isGuest() || b.User.setupFollowButton(d), + b.Content.autopagerize(".js-post-list", d) + }), + b.router.connect("/notifications(\/)?$", function(a, c, d) { + b.Closed.changesel("news"); + $('button.rm').on('click', function() { + $(this).parent().parent().remove() + b.Form.post('/notifications/' + $(this).parent().parent().attr('id') + '.rm') + }) + }), + b.router.connect('/notifications/friend_requests(\/)?$', function(a, c, d) { + b.Closed.changesel("news"); + b.Form.post("/notifications/set_read?fr=1") + $('.received-request-button').on('click', function(a) { + a.preventDefault() + fr = new b.ModalWindow($('div[data-modal-types=accept-friend-request][uuid='+ $(this).parent().parent().attr('id') +']'));fr.open(); + }) + $('div[data-modal-types=accept-friend-request] .ok-button.post-button').on('click', function(a){ + a.preventDefault(); + b.Form.toggleDisabled($(this), true); + b.Form.post($(a.target).parents().eq(4).attr('data-action')).done(function(){ + b.Form.toggleDisabled($(this), false); + fr.close(); + b.Net.reload(); + }) + }) + $('div[data-modal-types=accept-friend-request] .cancel-button').on('click', function(a){ + a.preventDefault(); + b.showConfirm('Reject Friend Request', 'Are you sure you really want to reject '+ b.SimpleDialog.htmlLineBreak($(a.target).parents().eq(4).attr('data-screen-name')) +'\'s friend request?', { + cancelLabel: "No", + okLabel: "Yes" + }) + $('.ok-button.black-button').on('click', function() { + b.Form.toggleDisabled($(this), true); + b.Form.post($(a.target).parents().eq(4).attr('data-reject-action')).done(function(){ + b.Form.toggleDisabled($(this), false); + fr.close(); + b.Net.reload() + }) + }) + }) + }), + b.router.connect("^/messages(\/)?$", function(a, c, d) { + b.Closed.changesel("message"); + b.Content.autopagerize(".list-content-with-icon-and-text", d); + + $('form.search').on('submit', function(s) { + s.preventDefault(); + b.Net.go($(this).attr('action') + '?'+$(this).serialize()); + }); + + $('h2 > span > input[type=checkbox]').on('click', function() { + b.Net.go(location.pathname + "?" + $(this).attr('name') + "=" + $(this).attr('value')) + }); + + }), + b.router.connect("^/messages/([^\/]+)/?$", function(a, c, d) { + b.Closed.changesel("message"); + b.Content.autopagerize(".list.messages", d) + var ff = $('#post-form') + b.EntryForm.setupSubmission(ff, d), + b.EntryForm.setupFormStatus(ff, d), + b.EntryForm.setupFoldedForm(ff, d), + b.EntryForm.setupIdentifiedUserForm(ff, d) + ff.on("olv:entryform:post:done", g) + function g(k, c) { + var p = $(".list.messages"); + p.length || (p = $("
    ", { + "class": "list post-list js-post-list" + }).replaceAll(".no-content")); + var e = $($.parseHTML(c)).filter("*"); + e.hide().fadeIn(400).prependTo(p); + var f = $(window); + f.scrollTop(e.offset().top + e.outerHeight() / 2 - f.height() / 2) + } + + if($("#post-form").length) { +var mode_post = 0; +$("label.textarea-menu-memo > input").on("click", function() { + if(openDrawboardModal()) { +var menu = $("div.textarea-with-menu"); +var memo = $("div.textarea-memo"); +var text = $("div.textarea-container"); + if(menu.hasClass("active-text")) { + menu.removeClass("active-text"); + menu.addClass("active-memo"); + memo.removeClass("none"); + text.addClass("none"); + } +b.Form.toggleDisabled($("input.post-button"), false); +mode_post = 1; + +setupDrawboard(); + } +}); +$("label.textarea-menu-text").on("click", switchtext); + +$(".post-button").on("click", switchtext); + +function switchtext() { +var menu = $("div.textarea-with-menu"); + menu.removeClass("active-memo"); + menu.addClass("active-text"); + $("div.textarea-container").removeClass("none"); + $("div.textarea-memo").addClass("none"); +mode_post = 0; + } +} + + function msg_rm_load() { + var rm_btn = $('.rm-post-button') + if(rm_btn.length) { + rm_btn.on('click',function(){ + var thingy = $(this); + b.showConfirm("Delete message", "Really delete this message?") + $('.ok-button').on('click',function(){ + b.Form.post(thingy.attr('data-action')); + thingy.parent().parent().remove(); + }) + }) + } + } + + msg_rm_load(); + + $('button.msg-update').on('click',function(e){ + msglist = $('.list.messages') + NProgress.start(); + $.ajax({ + url: window.location.href, + headers: { + "X-AUTOPAGERIZE": !0 + } + }).done(function(g) { + NProgress.done(); + msglist.replaceWith(g); + msg_rm_load(); + }); + }); + }), + b.router.connect("^/communities/(?:favorites|played)$", function(a, c, d) { + b.Closed.changesel("community"); + b.Content.autopagerize(".community-list", d) + }), + b.router.connect("^/communities/search$", function(c, d, e) { + b.Closed.changesel("community"); + a("form.search").on("submit", b.Form.validateValueLength), + e.done(function() { + a("form.search").off("submit", b.Form.validateValueLength) + }) + }), + b.router.connect("^/communities/[0-9]+(/diary|/new|/hot|/in_game|/old)?$", function(c, d, e) { + b.Closed.changesel("community"); + function f() { + var b = a(".multi_timeline-topic-filter"); + b.addClass("open") + } + function g(b, c) { + var d = a(b.currentTarget).attr("data-post-list-container-selector") + , e = !!d + , f = e ? d + " .js-post-list" : ".js-post-list" + , g = a(f); + e ? g.hasClass("empty") && g.removeClass("empty").children().remove() : g.length || (g = a("
    ", { + "class": "list post-list js-post-list" + }).replaceAll(".no-content")); + var h = a(a.parseHTML(c)).filter("*"); + h.hide().fadeIn(400).prependTo(g); + var i = a(window); + i.scrollTop(h.offset().top + h.outerHeight() / 2 - i.height() / 2) + } + b.Entry.setupHiddenContents(e), + b.Content.autopagerize(".js-post-list", e), + b.Community.setupPostFilter(e); + var h = a("#post-form"); + b.Guest.isGuest() || (b.Entry.setupEmpathyButtons(e), + b.EntryForm.setupSubmission(h, e), + b.EntryForm.setupFormStatus(h, e), + b.EntryForm.setupFoldedForm(h, e), + b.EntryForm.setupAlbumImageSelector(h, e), + h.hasClass("for-identified-user") && b.EntryForm.setupIdentifiedUserForm(h, e), + a(".toggle-button").length && b.User.setupFollowButton(e), + a(document).on("click", ".js-topic-post-button", f), + e.done(function() { + a(document).off("click", ".js-topic-post-button", f) + })), + a(".age-gate-dialog").length && b.Community.setupAgeGateDialog(e), + h.on("olv:entryform:post:done", g), + e.done(function() { + h.off("olv:entryform:post:done", g) + }) + // I might do this again later + /* + $('button.reload-btn').on('click',function(e){ + NProgress.start(); + $.ajax({ + url: window.location.href, + headers: { + "X-AUTOPAGERIZE": !0 + } + }).done(function(m) { + NProgress.done(); + $('.js-post-list').replaceWith(m); + }); + }); + */ + }), + b.router.connect("^/communities/[0-9]+(/artwork(/hot|/new)?|/topic(/new|/open)?)$", function(c, d, e) { + b.Closed.changesel("community"); + function f(d, f) { + var h = a(".js-post-list"); + h.length || (h = a("
    ", { + "class": "list multi-timeline-post-list js-post-list" + }).replaceAll(".no-content")); + var i = a(a.parseHTML(f)).filter("*"); + i.hide().fadeIn(400).prependTo(h), + /^\/topic(?:\/(?:new|open))?$/.test(c[1]) && (b.EntryForm.onTopicPostCreated(g, e), + b.EntryForm.setupFoldedForm(g, e)); + var j = a(window); + j.scrollTop(i.offset().top + i.outerHeight() / 2 - j.height() / 2) + } + b.Entry.setupHiddenContents(e), + b.Content.autopagerize(".js-post-list", e), + b.Community.setupPostFilter(e); + var g = a("#post-form"); + b.Guest.isGuest() || (b.Entry.setupEmpathyButtons(e), + b.EntryForm.setupSubmission(g, e), + b.EntryForm.setupFormStatus(g, e), + b.EntryForm.setupFoldedForm(g, e), + b.EntryForm.setupAlbumImageSelector(g, e), + g.hasClass("for-identified-user") && b.EntryForm.setupIdentifiedUserForm(g, e), + a(".toggle-button").length && b.User.setupFollowButton(e)), + a(".age-gate-dialog").length && b.Community.setupAgeGateDialog(e), + g.on("olv:entryform:post:done", f), + e.done(function() { + g.off("olv:entryform:post:done", f) + }) + }), + b.router.connect(/^\/posts\/([0-9A-Za-z\-_]+)$/, function(c, d, e) { + function f(c, d) { + var e = a(window) + , f = a(a.parseHTML(d)).filter("*"); + f.hide().fadeIn(400).appendTo(".reply-list"), + e.scrollTop(f.offset().top + f.outerHeight() / 2 - e.height() / 2), + b.Entry.incrementReplyCount(1) + } + function g(c, d) { + var e = a(c.target); + e.attr("data-is-post") ? b.Form.toggleDisabled(e, !0) : e.remove() + } + b.Entry.setupHiddenContents(e), + b.Entry.setupMoreRepliesButtons(e); + var h = a("#reply-form"); + b.Guest.isGuest() || (b.Entry.setupPostEmpathyButton(e), + b.Entry.setupEditButtons(e), + b.EntryForm.setupSubmission(h, e), + b.EntryForm.setupFormStatus(h, e), + b.EntryForm.setupAlbumImageSelector(h, e), + h.hasClass("for-identified-user") && b.EntryForm.setupIdentifiedUserForm(h, e)), + b.Entry.setupBodyLanguageSelector(e), + b.Entry.setupMoreContentButton(e), + a(document).on("olv:entryform:post:done", f), + a(document).on("olv:report:done", g), + e.done(function() { + a(document).off("olv:entryform:post:done", f), + a(document).off("olv:report:done", g) + }) +// CCC +if($('.post-poll').length) { +add = function(a, b){ return a + b; } +function recalculateVotes(pollOptions){ + var voteArray = []; + for(var j = 0; j < pollOptions.length; j++) { + var votes = parseInt(pollOptions.eq(j).attr('votes')); + if(pollOptions.eq(j).hasClass('selected')) { + voteArray.push(votes + 1); + } else { + voteArray.push(votes); + } + } + var voteCount = voteArray.reduce(add, 0) + pollOptions.siblings('.poll-votes').text(voteCount + ' vote' + (voteCount == 1 ? '' : 's')); + for(var i = 0; i < pollOptions.length; i++) { + var voteArrayCopy = voteArray; + voteArrayCopy.slice(i, 1); + var otherNumbers = voteArrayCopy.reduce(add, 0); + var percentage = Math.abs(100 - (((otherNumbers - voteArray[i]) / otherNumbers) * 100)); + pollOptions.eq(i).children('.poll-background').attr('style', 'width:' + percentage + '%'); + pollOptions.eq(i).children('.percentage').text(Math.round(percentage) + '%'); + } +} + +function pollSuccess(response) { + var pollOptions = $('.post-poll .poll-option'); + for(i = 0; i < response.votes.length; i++) { + pollOptions.eq(i).attr('votes', response.votes[i]); + } + recalculateVotes(pollOptions); +} + +$('.post-poll .poll-option').on('click', function() { + if(!$(this).hasClass('selected')) { + $(this).siblings('.poll-option').removeClass('selected'); + $(this).addClass('selected'); + recalculateVotes($(this).siblings('.poll-option')); + $(this).parents('.post-poll').addClass('selected'); + b.Form.post($(this).parents('.post-poll').attr('data-action'), {'a': parseInt($(this).index())}).done(pollSuccess) + } else { + $(this).parents('.post-poll').removeClass('selected'); + $(this).removeClass('selected'); + recalculateVotes($(this).siblings('.poll-option')); + + b.Form.post($(this).parents('.post-poll').attr('data-action-unvote'), {'a': '0'}).done(pollSuccess) + + } +}); +$('.post-poll .poll-votes').on('click', function() { + b.showMessage("Poll Voters", "Insert list of poll voters here."); +}); +// EndC +} + + if($('.edit-post-button').length) { + var t = $("#edit-form"); + var submit_btn = $('#edit-form div.form-buttons button.post-button.black-button') + function et() { + $('#post-edit').toggleClass('none') + $('#the-post').toggleClass('none') + } + $('.cancel-button').on('click',function(){et()}) + b.EntryForm.setupFormStatus(t, e); + $('.edit-post-button').on('click',function(){ + if($('.post-content-memo').length) { + b.showMessage("", "You can't edit a drawing, sorry."); + } else { + et(); + b.Form.toggleDisabled(submit_btn, true); + } + }) + submit_btn.on('click',function(a) { + a.preventDefault(); + b.Form.toggleDisabled($(this), true); + cereal = t.serializeArray(); + b.Form.post(t.attr('data-action'), cereal).done(function() { + $('.post-content-text').html(cereal.body); b.Net.reload(); + }) + }) + } + rm_btn = $('.rm-post-button') + if(rm_btn.length) { + rm_btn.on('click',function(){ + b.showConfirm("Delete post", "Really delete this post?") + $('.ok-button').on('click',function(){ + b.Form.post(rm_btn.attr('data-action')).done(b.showMessage("", "Deleted.")) + }) + }) + } + fav_btn = $('.profile-post-button') + if(fav_btn.length) { + if(fav_btn.hasClass('done')) { + fav_btn.on('click',function(){ + b.showConfirm("Profile post unset", "Unset your profile picture?") + $('.ok-button').on('click',function(){ + b.Form.post(fav_btn.attr('data-action')).done(fav_btn.removeClass('done',b.Net.reload())) + }) + }) + } + else { + fav_btn.on('click',function(){ + b.showConfirm("Profile post", "Set this as your profile picture?") + $('.ok-button').on('click',function(){ + b.Form.post(fav_btn.attr('data-action')).done(fav_btn.addClass('done'),b.Net.reload()) + }) + }) + } + } + +if($("#reply-form").length) { +var mode_post = 0; +$("label.textarea-menu-memo > input").on("click", function() { + if(openDrawboardModal()) { +var menu = $("div.textarea-with-menu"); +var memo = $("div.textarea-memo"); +var text = $("div.textarea-container"); + if(menu.hasClass("active-text")) { + menu.removeClass("active-text"); + menu.addClass("active-memo"); + memo.removeClass("none"); + text.addClass("none"); + } +b.Form.toggleDisabled($("input.reply-button"), false); +mode_post = 1; + +setupDrawboard(); +} +}); +$("label.textarea-menu-text").on("click", switchtext); + +$(".reply-button").on("click", switchtext); + +function switchtext() { +var menu = $("div.textarea-with-menu"); + menu.removeClass("active-memo"); + menu.addClass("active-text"); + $("div.textarea-container").removeClass("none"); + $("div.textarea-memo").addClass("none"); +mode_post = 0; + } +} + }), + b.router.connect(/^\/comments\/([0-9A-Za-z\-_]+)$/, function(c, d, e) { + function f(c, d) { + var e = a(c.target); + e.attr("data-is-post") ? b.Form.toggleDisabled(e, !0) : e.remove() + } + var g = a("#reply-form"); + b.Guest.isGuest() || (b.Entry.setupPostEmpathyButton(e), + b.Entry.setupEditButtons(e), + b.EntryForm.setupSubmission(g, e), + b.EntryForm.setupFormStatus(g, e)), + b.Entry.setupBodyLanguageSelector(e), + a(document).on("olv:report:done", f), + e.done(function() { + a(document).off("olv:report:done", f) + }) + + if($('.edit-post-button').length) { + var t = $("#edit-form"); + var submit_btn = $('#edit-form div.form-buttons button.post-button.black-button') + function et() { + $('#post-edit').toggleClass('none') + $('#the-post').toggleClass('none') + } + $('.cancel-button').on('click',function(){et()}) + b.EntryForm.setupFormStatus(t, e); + $('.edit-post-button').on('click',function(){ + if($('.reply-content-memo').length) { + b.showMessage("", "You can't edit a drawing, sorry.") + } else { + et(); + b.Form.toggleDisabled(submit_btn, true) + } + }) + submit_btn.on('click',function(a) { + a.preventDefault() + b.Form.toggleDisabled($(this), true) + cereal = t.serializeArray() + b.Form.post(t.attr('data-action'), cereal).done(function() { + $('.post-content-text').html(cereal.body); b.Net.reload() + }) + }) + } + rm_btn = $('.rm-post-button') + if(rm_btn.length) { + rm_btn.on('click',function(){ + b.showConfirm("Delete post", "Really delete this post?") + $('.ok-button').on('click',function(){ + b.Form.post(rm_btn.attr('data-action')).done(b.showMessage("", "Deleted.")) + }) + }) + } + }), + b.router.connect("^/users\.search$", function(c, d, e) { + b.Closed.changesel("feed"); + b.Content.autopagerize("#searched-user-list", e), + b.Guest.isGuest() || b.User.setupFollowButton(e), + a("form.search").on("submit", function(s) { + b.Form.validateValueLength(s), + s.preventDefault(); + b.Net.go($(this).attr('action') + '?'+$(this).serialize()) + }), + e.done(function() { + a("form.search").off("submit", b.Form.validateValueLength) + }) + }), + b.router.connect("^/users/[^\/]+/(yeahs|posts|comments)$", function(a, c, d) { + b.Content.autopagerize(".js-post-list", d) + }), + b.router.connect("^/users/[^\/]+(/friends|/following|/followers)$", function(a, c, d) { + b.Content.autopagerize("#friend-list-content", d) + }), + b.router.connect("^/users/[^\/]+(/diary)$", function(c, d, e) { + function f(b, c) { + var e = a(".js-post-list"); + e.find(".no-content").addClass("none"); + var f = a(a.parseHTML(c)).filter("*"); + f.hide().fadeIn(400).prependTo(e), + i.remove(); + // Why do we need to replace state???????? + //window.history.replaceState(window.history.state, "", d.href.replace(/\?.*/, "")); + var g = a(document).find("#js-my-post-count"); + g[0] && g.text(+g.text() + 1); + var h = a(window); + h.scrollTop(f.offset().top + f.outerHeight() / 2 - h.height() / 2) + } + function g(a, b) { + i.remove() + } + function h(c, d) { + b.Form.toggleDisabled(a(c.target), !0) + } + b.Entry.setupHiddenContents(e), + b.Content.autopagerize(".js-post-list", e); + var i = a("#post-form"); + b.Guest.isGuest() || (b.Entry.setupEmpathyButtons(e), + b.EntryForm.setupSubmission(i, e), + b.EntryForm.setupFormStatus(i, e), + i.hasClass("for-identified-user") && b.EntryForm.setupIdentifiedUserForm(i, e)), + a(document).on("olv:report:done", h), + i.on("olv:entryform:post:done", f); + var j = i.find(".cancel-button"); + j.on("click", g), + e.done(function() { + //showButton.off("click"), + a(document).off("olv:report:done", h), + i.off("olv:entryform:post:done", f), + j.off("click", g) + }) + }), + b.router.connect("^/users/[^\/]+(/friends|/following|/followers|/yeahs|/posts|/comments)?$", function(c, d, e) { + if($("body").attr("sess-usern") == (c[0].split('/users/')[1])) { + b.Closed.changesel('mymenu'); + } + function f(c, d) { + b.Form.toggleDisabled(a(c.target), !0) + } + function g(b, c) { + a("#user-content.is-visitor").length && a("#js-following-count").text(c) + } + b.User.setupFollowButton(e, { + container: ".main-column", + noReloadOnFollow: !0 + }), + $('.friend-button.create').on('click', function(a) { + a.preventDefault() + fr = new b.ModalWindow($('div[data-modal-types=post-friend-request]'));fr.open(); + }) + $('div[data-modal-types=post-friend-request] input.post-button').on('click', function(g){ + g.preventDefault(); + b.Form.toggleDisabled($(this), true); + b.Form.post($('.friend-button.create').attr('data-action'), $('div[data-modal-types=post-friend-request] form').serializeArray()).done(function() { + fr.close(); + b.Form.toggleDisabled($(this), false); + b.Net.reload() + }) + }) + + $('.friend-button.accept').on('click', function(g) { + g.preventDefault() + fr = new b.ModalWindow($('div[data-modal-types=accept-friend-request]'));fr.open(); + }) + $('div[data-modal-types=accept-friend-request] .ok-button.post-button').on('click', function(g){ + g.preventDefault(); + b.Form.toggleDisabled($(this), true); + b.Form.post($('div[data-modal-types=accept-friend-request]').attr('data-action')).done(function(){ + b.Form.toggleDisabled($(this), false); + fr.close(); + b.Net.reload(); + }) + }) + $('div[data-modal-types=accept-friend-request] .cancel-button').on('click', function(g){ + g.preventDefault(); + b.showConfirm('Reject Friend Request', 'Are you sure you really want to reject '+ b.SimpleDialog.htmlLineBreak($('div[data-modal-types=accept-friend-request]').attr('data-screen-name')) +'\'s friend request?', { + cancelLabel: "No", + okLabel: "Yes" + }) + $('.ok-button.black-button').on('click', function(g) { + b.Form.post($('div[data-modal-types=accept-friend-request]').attr('data-reject-action')).done(function(){ + fr.close(); + b.Net.reload() + }) + }) + }) + $('.friend-button.cancel').on('click', function(g) { + g.preventDefault() + b.showConfirm('Cancel Friend Request', 'Are you sure you really want to cancel your friend request to '+ b.SimpleDialog.htmlLineBreak($('.friend-button.cancel').attr('data-screen-name')) +'?', { + cancelLabel: "No", + okLabel: "Yes" + }) + $('.ok-button.black-button').on('click', function(g) { + b.Form.post($('.friend-button.cancel').attr('data-action')).done(function(){ + b.Net.reload() + }) + }) + }) + $('.friend-button.delete').on('click', function(g) { + g.preventDefault() + b.showConfirm('Unfriend', 'Are you sure you really want to unfriend '+ b.SimpleDialog.htmlLineBreak($('.friend-button.delete').attr('data-screen-name')) +"? Your messages will not be deleted.", { + cancelLabel: "No", + okLabel: "Yes" + }) + $('.ok-button.black-button').on('click', function(g) { + b.Form.toggleDisabled($(this), true); + b.Form.post($('.friend-button.delete').attr('data-action')).done(function(){ + b.Form.toggleDisabled($(this), false); + b.Net.reload(); + }) + }) + }) + b.User.setupUserSidebar(e) + b.Entry.setupHiddenContents(e), + a(document).on("olv:report:done", f), + a(document).on("olv:visitor:following-count:change", g), + e.done(function() { + //showButton.off("click"), + a(document).off("olv:report:done", f), + a(document).off("olv:visitor:following-count:change", g) + }), + b.Entry.setupEmpathyButtons(e) + }), + b.router.connect("^/users/[^\/]+/favorites$", function(a, c, d) { + b.Content.autopagerize(".community-list", d) + }), + b.router.connect("^/login/$|^/signup/$", function(c, d, e) { + function lfinish(b) { + window.location.href=b + //a('body').attr('sess-usern', a('input[name=username]').val()) + //b.Net.go(b) + } + cac = function (){ + $.ajax({ + type: 'POST', + url: window.location.href, + data: $('form').serialize(), + success: lfinish, + error: function(e){ + $('p.red').text(e.responseText); + }, beforeSend:function(){NProgress.start()},complete:function(){NProgress.done()}}) + }; + a("form[method=post]").on("submit", function(e) { + e.preventDefault(); + a.ajax({ + type: 'POST', url: window.location.href, data: a("form").serialize(), + success: function(s) { + lfinish(s); + }, + error: function(s) { + $("p.red").text(s.responseText); + if(window.grecaptcha) grecaptcha.reset(); + }, + beforeSend: function() { + NProgress.start(); + }, + complete: function() { + NProgress.done(); + } + }); + }); + + // Is there an NNID field? (signup) + // TODO: Make this way better and don't have this duplicated like it is now + if($('h3.label.nnid').length) { + inp = $('input[type=text][name=origin_id]') + icon = $('h3.label.nnid > label > img') + function getmiim() { + if(b.Closed.blank.test(inp.val())) { + icon.addClass('none'); + icon.attr('src', ''); + $('p.red').html(null); + return false; + } + if(!inp.val().match(/^[^\/]{6,16}$/)) { + $('p.red').html('The NNID provided is invalid.') + return false; + } else { + $('p.red').html(null); + } + $.ajax({ + url: inp.attr('data-action'), + type: 'POST', data: b.Form.csrftoken({'a': inp.val()}), + success: function(a) { + if(a == '') { + icon.addClass('none'); + icon.attr('src', ''); + } else { + icon.removeClass('none'); + icon.attr('src', 'https://mii-secure.cdn.nintendo.net/' + a + '_happy_face.png'); + } + }, error: function(a) { + $('p.red').html(a.responseText); + icon.addClass('none'); + icon.attr('src', ''); + }, + beforeSend:function(){NProgress.start()},complete:function(){NProgress.done()} + }) + } + var timer; + inp.on('input', function() { + clearTimeout(timer); + timer = setTimeout(getmiim, 500); + }) + } + }), + b.router.connect("^/reset/$", function(d, c, f) { + $("form[method=post]").on("submit", function(e) { + e.preventDefault(); + $.ajax({ + type: 'POST', url: window.location.href, data: $("form").serialize(), + success: function(s) { + $("p.red").addClass("green"),$("p.red").text(s) + }, + error: function(s) { + $("p.red").text(s.responseText) + }, + beforeSend: function() { + NProgress.start(); + }, + complete: function() { + NProgress.done(); + } + }); + }) + }), + b.router.connect("^/server$", function() { + $('button.reload-btn').on('click',function(e){ + NProgress.start(); + var thing = $.getJSON(window.location.href, { json: '1' }, function(tt) { + NProgress.done(); + $('#guide > div > ul > li:nth-child(1) > strong').html(tt['communities']), + $('#guide > div > ul > li:nth-child(2) > strong').html(tt['posts']), + $('#guide > div > ul > li:nth-child(3) > strong').html(tt['users']), + $('#guide > div > ul > li:nth-child(4) > strong').html(tt['comments']), + $('#guide > div > ul > li:nth-child(5) > strong').html(tt['messages']), + $('#guide > div > ul > li:nth-child(6) > strong').html(tt['yeahs']), + $('#guide > div > ul > li:nth-child(7) > strong').html(tt['complaints']), + $('#guide > div > ul > li:nth-child(8) > strong').html(tt['notifications']), + $('#guide > div > ul > li:nth-child(9) > strong').html(tt['follows']), + $('#guide > div > ul > li:nth-child(10) > strong').html(tt['friendships']); + }); + }) + }), + b.router.connect("^/users/[^\/]+/(tools)$", function(c, d, e) { + function f(c) { + var d = a(this) + , e = d.closest("form"); + b.Form.isDisabled(d) || c.isDefaultPrevented() || (c.preventDefault(), + b.Form.submit(e, d).done(function(a) { + b.Net.reload() + })) + } + a(document).on("click", ".apply-button", f), + e.done(function() { + a(document).off("click", ".apply-button", f) + }) + }), + b.router.connect("^/changepassword$", function(c, d, e) { + function f(c) { + var d = a(this) + , e = d.closest("form"); + b.Form.isDisabled(d) || c.isDefaultPrevented() || (c.preventDefault(), + b.Form.submit(e, d).done(function(a) { + b.Net.reload() + })) + } + a(document).on("click", ".apply-button", f), + e.done(function() { + a(document).off("click", ".apply-button", f) + }) + }), + b.router.connect("^/settings/(?:account|profile)$", function(c, d, e) { + b.Closed.changesel('mymenu') + // If we are on profile settings.. + if(c[0][10] == 'p') { + $('.get-ipinfo').on('click', function(e){ + e.preventDefault(); + $.ajax({url: 'https://ipinfo.io/region', + beforeSend:function(){NProgress.start()},complete:function(){NProgress.done()}, + success: function(a) { + $('input[name=country]').val($.trim(a)) + b.showMessage('', "Your region has been recieved from ipinfo.io as \"" + $.trim(a) + "\". Please note that this was recieved by your browser. If it's inaccurate, you might be using a proxy.\n\nThis has not been saved. Please be sure you want to share your region when you save.") + }, error: function() { + b.showMessage('', "Failed to get your region from ipinfo.io for some reason.") + } + }) + }) +// if($('.setting-nnid').length) { + + inp = $('input[type=text][name=origin_id]') + function getmiimtwo() { + if(!inp.val().match(/^[^\/]{6,16}$/)) { + $('p.error').html('The NNID provided is invalid.') + return false + } else { + $('p.error').html(null) + } + $.ajax({ + url: inp.attr('data-action'), + type: 'POST', data: b.Form.csrftoken({'a': inp.val()}), + success: function(a) { + if(a == '') { + $('.nnid-icon.mii').attr('src', ''); + } else { + $('.nnid-icon.mii').attr('src', 'https://mii-secure.cdn.nintendo.net/' + a + '_normal_face.png'); + } + $('input[name=mh]').val(a); + }, error: function(a) { + $('p.error').html(a.responseText); + }, + beforeSend:function(){NProgress.start()},complete:function(){NProgress.done()} + }) + } + var timer; + inp.on('input', function() { + clearTimeout(timer); + if(inp.val()) { + timer = setTimeout(getmiimtwo, 500); + } + }) + + $('input[name=avatar][value=0]').change(function() { + $('.setting-avatar > .icon-container > .nnid-icon.mii').removeClass('none'); + $('.nnid-icon.gravatar').addClass('none'); + }) + $('input[name=avatar][value=1]').change(function() { + $('.setting-avatar > .icon-container > .nnid-icon.mii').addClass('none'); + $('.nnid-icon.gravatar').removeClass('none'); + }) + $('.color-thing').click(function(a) { + a.preventDefault(); + $('.color-thing').spectrum({ + color: $('input[name=color]'), + preferredFormat: "hex", + showInput: true, + flat: true, + change: function(color) { + $('.nick-name').attr('style', 'color:' + color); + $('input[name=color]').val(color); + } + }); + $('div.form-buttons > input').click(function(a) { + $('.color-thing').spectrum('destroy'); + }); + }); + $('.color-thing2').click(function(a) { + a.preventDefault(); + $('.color-thing2').spectrum({ + color: $('input[name=theme]'), + preferredFormat: "hex", + showInput: true, + flat: true, + change: function(color) { + $('.current-theme').attr('style', 'color:' + color); + $('input[name=theme]').val(color); + } + }); + $('div.form-buttons > input').click(function(a) { + $('.color-thing2').spectrum('destroy'); + }); + }); +// } + } + b.User.setupUserSidebar(e) + function f(c) { + var d = a(this) + , e = d.closest("form"); + b.Form.isDisabled(d) || c.isDefaultPrevented() || (c.preventDefault(), + b.Form.submit(e, d).done(function(a) { + b.Net.reload() + })) + } + function g(c) { + var d = a(this); + b.showConfirm(b.loc("olv.portal.profile_post"), b.loc("olv.portal.profile_post.confirm_remove"), { + okLabel: b.loc("olv.portal.button.remove"), + cancelLabel: b.loc("olv.portal.stop") + }).done(function(a) { + a && b.Form.post("/settings/profile_post.unset.json", null, d).done(function() { + d.trigger("olv:entry:profile-post:remove"), + d.remove() + }) + }) + } + function h(b) { + var c = a() + , d = a() + , e = a("#favorite-game-genre select"); + e.each(function() { + var b = a(this) + , d = b.find("option[value=" + b.val() + "]").attr("data-is-configurable") + , f = null != d && "0" != d; + if (f) { + var g = e.filter(function() { + return !a(this).is(b) + }); + g.each(function() { + var d = a(this) + , e = d.find("option[value=" + b.val() + "]"); + c = c.add(e) + }) + } + }), + d = e.find("option").filter(function() { + return !a(this).is(c) + }), + c.prop("disabled", !0), + d.prop("disabled", !1) + } + h(), + a(document).on("click", ".apply-button", f), + a(document).on("click", "#profile-post", g), + a(document).on("change", "#favorite-game-genre select", h), + e.done(function() { + a(document).off("click", ".apply-button", f), + a(document).off("click", "#profile-post", g), + a(document).off("change", "#favorite-game-genre select", h) + }) + }), + b.router.connect("^(/users/[^\/]+/communities/(favorites|played)|/my_menu)", function(a, c, d) { + b.Closed.changesel('community'); + b.User.setupUserSidebar(d) + }), + b.router.connect("^/communities/[0-9]+", function(a, c, d) { + b.Closed.changesel("community"); + if($("#post-form").length) { + setupPostForm2() + } + b.Community.setupCommunitySidebar(d); + }), + /* + b.router.connect("^/news/.*$", function(c, d, e) { + b.Closed.changesel("news"); + }), + */ + b.router.connect("^/communities/[0-9]+/(tools)$", function(c, d, e) { + function f(c) { + var d = a(this) + , e = d.closest("form"); + b.Form.isDisabled(d) || c.isDefaultPrevented() || (c.preventDefault(), + b.Form.submit(e, d).done(function(a) { + b.Net.reload() + })) + } + a(document).on("click", ".apply-button", f), + e.done(function() { + a(document).off("click", ".apply-button", f) + }) + }), + b.router.connect("^/c/create$", function(c, d, e) { + function f(c) { + var d = a(this) + , e = d.closest("form"); + b.Form.isDisabled(d) || c.isDefaultPrevented() || (c.preventDefault(), + b.Form.submit(e, d).done(function(a) { + b.Net.reload() + })) + } + a(document).on("click", ".apply-button", f), + e.done(function() { + a(document).off("click", ".apply-button", f) + }) + }), + b.init.done(function(a) { + a(document).on("olv:modal:report-violation olv:modal:report-violator", function(a, b, c) { + function d() { + var a = g.find("option:selected").attr("data-track-action"); + e.attr("data-track-action", a) + } + var e = b.element.find(".post-button") + , f = b.triggerElement.attr("data-can-report-spoiler") + , g = "1" === f ? b.element.find("select.can-report-spoiler") : "0" === f ? b.element.find("select.cannot-report-spoiler") : b.element.find('select[name="type"]') + , h = b.triggerElement.attr("data-track-label") + , i = b.triggerElement.attr("data-url-id") || ""; + e.attr("data-track-label", h), + e.attr("data-url-id", i), + g.on("change", d), + c.done(function() { + g.off("change", d) + }) + }); + var c = function(a) { + var b = a.find("input[type=submit]") + , c = a.find('input[name="album_image_id"]').length && a.find('input[name="album_image_id"]').val().length > 0 + , d = a.find('input[name="screenshot"]').length && a.find('input[name="screenshot"]').val().length > 0; + b.attr("data-post-with-screenshot", c || d ? "screenshot" : "nodata") + }; + a(document).on("olv:entryform:updatescreenshot", function(b) { + var d = a(b.target); + c(d) + }), + a(document).on("olv:entryform:fileselect", function(b, c) { + var d = a(b.target) + , e = a(c).find('input[type="submit"]'); + "screenshot" === d.attr("name") ? e.attr("data-post-with-screenshot", "screenshot") : "painting" === d.attr("name") && e.attr("data-post-content-type", "draw") + }), + a(document).on("olv:entryform:reset", function(b) { + var d = a(b.target) + , e = d.find("input[type=submit]"); + e.attr("data-post-content-type", "text"), + setTimeout(function() { + c(d) + }, 0) + if($("input[name=painting]").val()) { + $("#drawing").remove(); + $("input[name=painting]").attr("value", ""); + } + $('#image-dimensions').text("PNG and JPEG are allowed."); + $('#upload-preview').hide(); + $('#upload-preview-container').hide(); + $('#upload-preview').attr("src", ""); + }) + a(document).on("olv:entryform:post:done", function(b) { + var d = $("span.remaining-today-post-count"); + if(d.length) { + d.text(+(d.text()) - 1); + } + }) + })) +} +).call(this, jQuery, Olv); +// TODO: Make this locale way better, remove unnecessary things, actually use stuff from this +Olv.Locale.Data={ +"olv.portal.age_gate.select_label":{value:"Please enter your date of birth."},"olv.portal.album.delete_confirm":{value:"Are you sure you want to delete this?"},"olv.portal.button.remove":{value:"Yes"},"olv.portal.cancel":{value:"Cancel"},"olv.portal.close":{value:"Close"},"olv.portal.dialog.apply_settings_done":{value:"Settings saved."},"olv.portal.dialog.report_spoiler_done":{value:"Spoiler reported. Thank you for your help!"},"olv.portal.dialog.report_violation_done":{value:"Violation reported. Thank you for your help!"},"olv.portal.edit.action.close_topic_post":{value:"Close for Comments"},"olv.portal.edit.action.close_topic_post.confirm":{value:"It will no longer be possible to post comments on this discussion. Is that OK? (This action cannot be reversed.)"},"olv.portal.edit.edit_post":{value:"Edit Post"},"olv.portal.edit.edit_reply":{value:"Edit Comment"},"olv.portal.error.500.for_offdevice":{value:"An error occurred.\nPlease try again later."},"olv.portal.error.album_limit_exceeded":{value:"Unable to save because the maximum number of screenshots that can be saved has been reached. Please delete some saved screenshots, and then try again."},"olv.portal.error.code":{args:[1],value:"Error Code: %s"},"olv.portal.error.code %1":{args:[1],value:"Error Code: %s"},"olv.portal.error.code [_1]":{args:[1],value:"Error Code: %s"},"olv.portal.error.daily_post_limit_exceeded":{value:"You have already exceeded the number of posts that you can contribute in a single day. Please try again tomorrow."},"olv.portal.error.failed_to_connect.for_offdevice":{value:"An error occurred."},"olv.portal.error.network_unavailable.for_offdevice":{value:"Cannot connect to the Internet. Please check your network connection and try again."},"olv.portal.error.post_time_restriction":{args:[],value:"Multiple posts cannot be made in such a short period of time. Please try posting again later."},"olv.portal.error.post_time_restriction %1":{args:[],value:"Multiple posts cannot be made in such a short period of time. Please try posting again later."},"olv.portal.error.post_time_restriction [_1]":{args:[],value:"Multiple posts cannot be made in such a short period of time. Please try posting again later."},"olv.portal.followlist.confirm_unfollow_with_name":{args:[1],value:"Remove %s from your follow list?"},"olv.portal.followlist.confirm_unfollow_with_name %1":{args:[1],value:"Remove %s from your follow list?"},"olv.portal.followlist.confirm_unfollow_with_name [_1]":{args:[1],value:"Remove %s from your follow list?"},"olv.portal.miitoo.frustrated":{value:"Yeah..."},"olv.portal.miitoo.frustrated.delete":{value:"Unyeah"},"olv.portal.miitoo.happy":{value:"Yeah!"},"olv.portal.miitoo.happy.delete":{value:"Unyeah"},"olv.portal.miitoo.like":{value:"Yeah♥"},"olv.portal.miitoo.like.delete":{value:"Unyeah"},"olv.portal.miitoo.normal":{value:"Yeah!"},"olv.portal.miitoo.normal.delete":{value:"Unyeah"},"olv.portal.miitoo.puzzled":{value:"Yeah..."},"olv.portal.miitoo.puzzled.delete":{value:"Unyeah"},"olv.portal.miitoo.surprised":{value:"Yeah!?"},"olv.portal.miitoo.surprised.delete":{value:"Unyeah"},"olv.portal.ok":{value:"OK"},"olv.portal.post.delete_confirm":{value:"Delete this post?"},"olv.portal.profile_post":{value:"Favorite Post"},"olv.portal.profile_post.confirm_remove":{value:"Remove this post from your profile?\nThe original post will not be deleted."},"olv.portal.profile_post.confirm_update":{value:"Set this post as your favorite?\nPlease note, it will replace any existing favorite post."},"olv.portal.profile_post.confirm_update.yes":{value:"OK"},"olv.portal.profile_post.done":{value:"Your favorite post has been set.\nWould you like to view your profile?"},"olv.portal.read_more_content":{value:"Read More"},"olv.portal.reply.delete_confirm":{value:"Delete this comment?"},"olv.portal.report.report_comment_id":{args:[1],value:"Comment ID: %s"},"olv.portal.report.report_comment_id %1":{args:[1],value:"Comment ID: %s"},"olv.portal.report.report_comment_id [_1]":{args:[1],value:"Comment ID: %s"},"olv.portal.report.report_post_id":{args:[1],value:"Post ID: %s"},"olv.portal.report.report_post_id %1":{args:[1],value:"Post ID: %s"},"olv.portal.report.report_post_id [_1]":{args:[1],value:"Post ID: %s"},"olv.portal.report.report_spoiler":{args:[],value:"Report Spoilers to Openverse Administrators"},"olv.portal.report.report_spoiler %1":{args:[],value:"Report Spoilers to Openverse Administrators"},"olv.portal.report.report_spoiler [_1]":{args:[],value:"Report Spoilers to Openverse Administrators"},"olv.portal.report.report_spoiler_comment":{args:[],value:"Report Spoilers to Openverse Administrators"},"olv.portal.report.report_spoiler_comment %1":{args:[],value:"Report Spoilers to Openverse Administrators"},"olv.portal.report.report_spoiler_comment [_1]":{args:[],value:"Report Spoilers to Openverse Administrators"},"olv.portal.report.report_violation":{args:[],value:"Report Violation to Openverse Administrators"},"olv.portal.report.report_violation %1":{args:[],value:"Report Violation to Openverse Administrators"},"olv.portal.report.report_violation [_1]":{args:[],value:"Report Violation to Openverse Administrators"},"olv.portal.report.report_violation_comment":{args:[],value:"Report Violation to Openverse Administrators"},"olv.portal.report.report_violation_comment %1":{args:[],value:"Report Violation to Openverse Administrators"},"olv.portal.report.report_violation_comment [_1]":{args:[],value:"Report Violation to Openverse Administrators"},"olv.portal.report.report_violation_message":{args:[],value:"Report Violation to Openverse Administrators"},"olv.portal.report.report_violation_message %1":{args:[],value:"Report Violation to Openverse Administrators"},"olv.portal.report.report_violation_message [_1]":{args:[],value:"Report Violation to Openverse Administrators"},"olv.portal.setup":{value:"Set Up"},"olv.portal.show_more_content":{value:"View Entire Post"},"olv.portal.stop":{value:"Cancel"},"olv.portal.unfollow":{value:"Unfollow"},"olv.portal.user.search.go":{value:"View Profile"},"olv.portal.yes":{value:"Yes"}}; +$(document).pjax("a",pjax_container),$(document).on('pjax:timeout',function(){return false}); +$(document).on('pjax:error', function(event, xhr, textStatus, errorThrown, options) { +Olv.Net.errorFeedbackHandler(event, textStatus, xhr, options); +if(textStatus != 'abort') + history.back(); +return false; +}); +if(loading_animate) { +$(document).on('pjax:send',function(){NProgress.start()}); +$(document).on('pjax:complete', function(){NProgress.done()}); +} + +$(document).on('pjax:complete',function(){ +Olv.init.done(); +}); diff --git a/static/closedverse.min.css b/static/closedverse.min.css new file mode 100644 index 0000000..526dabb --- /dev/null +++ b/static/closedverse.min.css @@ -0,0 +1 @@ +@charset 'UTF-8';#wrapper,body{position:relative}#footer-inner:after,#global-menu:after,#main-body:after,.post-list-outline:after{content:"";clear:both}#footer-inner p a:hover,#global-menu #global-my-menu a:hover span,#global-menu #global-my-menu form input:active,#global-menu #global-my-menu form input:hover,#sidebar-profile-body .nick-name:hover,.community-name a:hover,.description-more-button:hover,.link-container p a:hover,.messages .post a:hover,.news-list .nick-namea:hover,.news-list a.link:hover,.report-button:hover,.report-violation-button:hover,.trigger a:link:hover,.trigger a:visited:hover,.trigger button.report-violation-button:hover,.user-name a:hover{text-decoration:underline}#nprogress,.pointer-events-none{pointer-events:none}@font-face{font-family:MiiverseSymbols;src:url(/s/img/font/Symbols.eot);src:url(/s/img/font/Symbols-IEFix.eot) format('embedded-opentype'),url(/s/img/font/Symbols.woff) format('woff'),url(/s/img/font/Symbols.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:MiiverseSymbols;src:url(/s/img/font/Symbols.eot);src:url(/s/img/font/Symbols-IEFix.eot) format('embedded-opentype'),url(/s/img/font/Symbols.woff) format('woff'),url(/s/img/font/Symbols.ttf) format('truetype');font-weight:400;font-style:normal}html.os-mac::-webkit-scrollbar{display:none!important}body{font-family:sans-serif;line-height:1.5;margin:0;padding:0;color:#323232}h1,h2,h3,h4,h5,h6,li,menu,ol,p,table,td,th,tr,ul{font-size:100%;font-weight:400;margin:0;padding:0}input,textarea{font-size:24px}table{border-collapse:collapse;border-spacing:0}li,menu,ol,ul{list-style:none}a{color:#0080ff;text-decoration:none}img{border:0;color:#ddd}button,input,label{cursor:pointer}.auth-input{border-radius:5px;font-size:20px;width:175px}#sub-body,#wrapper,.center-input input{width:100%}.none{display:none!important}.left{float:left}.right{float:right}.tleft{text-align:left}.tright{text-align:right}.center,body{text-align:center}.center-input{margin-top:-5px;margin-bottom:8px}input.disabled{color:#969595!important;cursor:default!important}.clear{clear:both}.trigger{cursor:pointer}.pre-line{white-space:pre-line}.red{color:red}.green{color:green!important}body{font-size:14px;-webkit-background-size:120px;-moz-background-size:120px;-ms-background-size:120px;-o-background-size:120px;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;-ms-text-size-adjust:100%;-o-text-size-adjust:100%;text-size-adjust:100%;word-wrap:break-word;background:#e2e2e2}.trigger:hover{background-color:#f9f9f9}.trigger:active{background-color:#ddd}html body{font-family:Helvetica,Arial,sans-serif}html.os-win body{font-family:Helvetica,Arial,Meiryo,'\30E1 \30A4 \30EA \30AA ',sans-serif}html.os-mac body{font-family:Helvetica,Arial,'\30D2 \30E9 \30AE \30CE \89D2 \30B4 Pro W3','Hiragino Kaku Gothic Pro',sans-serif}html.os-win button,html.os-win form input{font-family:Helvetica,Arial,Meiryo,'\30E1 \30A4 \30EA \30AA ',sans-serif}.symbol:before{font-family:MiiverseSymbols,sans-serif!important;font-weight:400!important}.symbol span.symbol-label{display:none}body,html{height:100%}#wrapper{height:auto!important;min-height:100%;min-width:320px;margin:auto 0;text-align:left;background-color:#f4f4f4;background-image:url(/s/img/bg-white-dot.png);background-attachment:fixed}#sub-body{top:0;height:54px;position:fixed;z-index:20;background:#fff;border-bottom:2px solid #e5e5e5}.album-list.empty.no-content-favorites,.list>.no-content.no-content-favorites,.no-content.no-content-favorites,.post-list-outline,.post-list.empty.no-content-favorites{border:1px solid rgba(0,0,0,.1);-webkit-box-shadow:0 1px 0 rgba(0,0,0,.2);-moz-box-shadow:0 1px 0 rgba(0,0,0,.2);-ms-box-shadow:0 1px 0 rgba(0,0,0,.2);-o-box-shadow:0 1px 0 rgba(0,0,0,.2);overflow:hidden}#global-menu{max-width:950px;margin:0 auto}#global-menu:after,#main-body:after{display:block}#main-body{padding:71px 0 170px!important;max-width:960px;margin:0 auto}.main-column{width:625px;margin:0 auto}#sidebar+.main-column{float:right}#sidebar{width:320px;float:left}.post-list-outline{margin:0 0 15px;background:#fff;box-shadow:0 1px 0 rgba(0,0,0,.2);-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px}.post-list-outline:after{display:block}.post-list-outline+.big-button,.post-list-outline+.buttons-content{margin-bottom:30px}#footer{background:#e2e2e2;position:absolute;bottom:0;left:0;width:100%}#wrapper.post-permlink #footer{position:bottom!important}#wrapper.guest #footer,#wrapper.guest-top #footer{bottom:-60px!important}#footer-inner{max-width:960px;margin:0 auto;padding:30px 0}#footer-inner:after{display:block}#footer-inner p{display:inline-block;padding:0 5px}#footer-inner p a{color:#969696;font-size:12px}#footer-inner p a:hover{color:#646464}#footer-inner #copyright{display:block}.link-container{text-align:center}.link-container p{display:inline-block;padding:0 5px}.link-container p a{color:#969696;font-size:12px}.link-container p a:hover{color:#646464}.album-list.empty,.list>.no-content,.no-content,.post-list.empty{color:#969696;font-size:16px;display:table;width:100%;height:250px;padding:0}.album-list.empty>div,.album-list.empty>p,.list>.no-content>div,.list>.no-content>p,.no-content>div,.no-content>p,.post-list.empty>div,.post-list.empty>p{display:table-cell;vertical-align:middle;padding:0 30px;text-align:center}.album-list.empty>div p,.list>.no-content>div p,.no-content>div p,.post-list.empty>div p{padding:0;display:block}.album-list.empty.no-content-favorites,.list>.no-content.no-content-favorites,.no-content.no-content-favorites,.post-list.empty.no-content-favorites{background:#fff;box-shadow:0 1px 0 rgba(0,0,0,.2);-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;position:relative;height:auto}#main-body>.no-content,.button{border:1px solid rgba(0,0,0,.1)}.album-list.empty.no-content-favorites>div,.list>.no-content.no-content-favorites>div,.no-content.no-content-favorites>div,.post-list.empty.no-content-favorites>div{padding:20px 70px 20px 20px}.album-list.empty.no-content-favorites p,.list>.no-content.no-content-favorites p,.no-content.no-content-favorites p,.post-list.empty.no-content-favorites p{text-align:left}#main-body>.no-content{background:#fff;overflow:hidden;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.2);-moz-box-shadow:0 1px 0 rgba(0,0,0,.2);-ms-box-shadow:0 1px 0 rgba(0,0,0,.2);-o-box-shadow:0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 0 rgba(0,0,0,.2);-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;max-width:625px;margin:20px auto;width:90%}#global-menu li a.login:hover,#global-menu li#global-menu-logo a:hover{box-shadow:none}.community-list .news-community-badge+.title,.simple-wrapper #wrapper{margin-top:0}.simple-wrapper{background-color:#f4f4f4;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAArUlEQVQoFYWQuwrCQBBFd42FlaYQRMRCO3vBNpA/8HNtBbt04gcItnaKoLKegRnYTRYzcLjzuLNh4kMILooh+SeqO6kYJOawhzE0cIBsDLRboRPwsIUFZMMWTM1UWNJWMx4ZPHV4Rq9to9U+OlpeHcHDhjmNF3LzHc01yBdPEOwvkXdiQ6fW7gp9QWM3aD+RWVI5N5X638KF+VuXvqjUru+GEs8SbnCH3gXxJPEDtBsiPW8IwCQAAAAASUVORK5CYII=);background-attachment:fixed;border:0}.simple-wrapper #footer,.simple-wrapper #sub-body{display:none}.simple-wrapper #cookie-policy-notice{top:0}.simple-wrapper #main-body{border:0;background:0 0}.simple-wrapper #lector{border-top:1px solid #ddd;margin-left:0}.simple-wrapper.simple-wrapper-content #wrapper{margin:50px auto 0}.simple-wrapper.simple-wrapper-content #main-body{padding:0}.simple-wrapper.simple-wrapper-content #footer{background-color:transparent;position:static;text-align:center;width:auto;display:block}#memo-drawboard-page{user-select:none}#memo-drawboard-page .window{width:344px}#memo-drawboard-page .window .window-body{height:222px}#memo-drawboard-page .window-body .memo-buttons{margin-left:10px;position:fixed}#memo-drawboard-page .memo-buttons button{height:40px;width:40px}#memo-drawboard-page button.artwork-lock{margin-left:-40px;height:40px;float:right}#memo-drawboard-page button.selected{background:#0080ff}#memo-drawboard-page button.artwork-clear:before{content:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAQAAABKfvVzAAAACXBIWXMAAAsTAAALEwEAmpwYAAADGGlDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjaY2BgnuDo4uTKJMDAUFBUUuQe5BgZERmlwH6egY2BmYGBgYGBITG5uMAxIMCHgYGBIS8/L5UBFTAyMHy7xsDIwMDAcFnX0cXJlYE0wJpcUFTCwMBwgIGBwSgltTiZgYHhCwMDQ3p5SUEJAwNjDAMDg0hSdkEJAwNjAQMDg0h2SJAzAwNjCwMDE09JakUJAwMDg3N+QWVRZnpGiYKhpaWlgmNKflKqQnBlcUlqbrGCZ15yflFBflFiSWoKAwMD1A4GBgYGXpf8EgX3xMw8BSMDVQYqg4jIKAUICxE+CDEESC4tKoMHJQODAIMCgwGDA0MAQyJDPcMChqMMbxjFGV0YSxlXMN5jEmMKYprAdIFZmDmSeSHzGxZLlg6WW6x6rK2s99gs2aaxfWMPZ9/NocTRxfGFM5HzApcj1xZuTe4FPFI8U3mFeCfxCfNN45fhXyygI7BD0FXwilCq0A/hXhEVkb2i4aJfxCaJG4lfkaiQlJM8JpUvLS19QqZMVl32llyfvIv8H4WtioVKekpvldeqFKiaqP5UO6jepRGqqaT5QeuA9iSdVF0rPUG9V/pHDBYY1hrFGNuayJsym740u2C+02KJ5QSrOutcmzjbQDtXe2sHY0cdJzVnJRcFV3k3BXdlD3VPXS8Tbxsfd99gvwT//ID6wIlBS4N3hVwMfRnOFCEXaRUVEV0RMzN2T9yDBLZE3aSw5IaUNak30zkyLDIzs+ZmX8xlz7PPryjYVPiuWLskq3RV2ZsK/cqSql01jLVedVPrHzbqNdU0n22VaytsP9op3VXUfbpXta+x/+5Em0mzJ/+dGj/t8AyNmf2zvs9JmHt6vvmCpYtEFrcu+bYsc/m9lSGrTq9xWbtvveWGbZtMNm/ZarJt+w6rnft3u+45uy9s/4ODOYd+Hmk/Jn58xUnrU+fOJJ/9dX7SRe1LR68kXv13fc5Nm1t379TfU75/4mHeY7En+59lvhB5efB1/lv5dxc+NH0y/fzq64Lv4T8Ffp360/rP8f9/AA0ADzT6lvFdAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAClSURBVHjapJNJFsMwCEOl+x9aXdQDIPCiZZEXhm8TUCgAhJCN2g90GUceANAhE0AQAGQFnS/y+7YYxJIMnL5PxpAIxHIVL98CWXlKb0Rc3vu8GxXrtG55Gd0+F49Yu5yXpX3FZho5/Aok09DGP4Cr1MeqCaDql9C3pUcyqt8Wd0Wg0Mogy0FirZKTnIfc0RivHKtmaErecBNsf9Fyty2tmf+q+AwA6wtxB5rezbYAAAAASUVORK5CYII=)}#memo-drawboard-page button.artwork-undo:before{content:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAQAAABKfvVzAAAACXBIWXMAAAsTAAALEwEAmpwYAAADGGlDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjaY2BgnuDo4uTKJMDAUFBUUuQe5BgZERmlwH6egY2BmYGBgYGBITG5uMAxIMCHgYGBIS8/L5UBFTAyMHy7xsDIwMDAcFnX0cXJlYE0wJpcUFTCwMBwgIGBwSgltTiZgYHhCwMDQ3p5SUEJAwNjDAMDg0hSdkEJAwNjAQMDg0h2SJAzAwNjCwMDE09JakUJAwMDg3N+QWVRZnpGiYKhpaWlgmNKflKqQnBlcUlqbrGCZ15yflFBflFiSWoKAwMD1A4GBgYGXpf8EgX3xMw8BSMDVQYqg4jIKAUICxE+CDEESC4tKoMHJQODAIMCgwGDA0MAQyJDPcMChqMMbxjFGV0YSxlXMN5jEmMKYprAdIFZmDmSeSHzGxZLlg6WW6x6rK2s99gs2aaxfWMPZ9/NocTRxfGFM5HzApcj1xZuTe4FPFI8U3mFeCfxCfNN45fhXyygI7BD0FXwilCq0A/hXhEVkb2i4aJfxCaJG4lfkaiQlJM8JpUvLS19QqZMVl32llyfvIv8H4WtioVKekpvldeqFKiaqP5UO6jepRGqqaT5QeuA9iSdVF0rPUG9V/pHDBYY1hrFGNuayJsym740u2C+02KJ5QSrOutcmzjbQDtXe2sHY0cdJzVnJRcFV3k3BXdlD3VPXS8Tbxsfd99gvwT//ID6wIlBS4N3hVwMfRnOFCEXaRUVEV0RMzN2T9yDBLZE3aSw5IaUNak30zkyLDIzs+ZmX8xlz7PPryjYVPiuWLskq3RV2ZsK/cqSql01jLVedVPrHzbqNdU0n22VaytsP9op3VXUfbpXta+x/+5Em0mzJ/+dGj/t8AyNmf2zvs9JmHt6vvmCpYtEFrcu+bYsc/m9lSGrTq9xWbtvveWGbZtMNm/ZarJt+w6rnft3u+45uy9s/4ODOYd+Hmk/Jn58xUnrU+fOJJ/9dX7SRe1LR68kXv13fc5Nm1t379TfU75/4mHeY7En+59lvhB5efB1/lv5dxc+NH0y/fzq64Lv4T8Ffp360/rP8f9/AA0ADzT6lvFdAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAB3SURBVHjavJRRCsAgDEOT+x86+9BqZehS2Oaf0NfGNEihdvgfQHlwL6LcacVKX0luTsBExAAawn3lAiAQnpovQDTfKeMdaIgeLJqSxvUlIE+3gUDyps8u9Zev0ThvgoAKWcpBqoRjypedJUMJoHDRBsL07z+BawCI1EgB+/fGrQAAAABJRU5ErkJggg==)}#memo-drawboard-page button.artwork-pencil.small:before{content:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAQAAABKfvVzAAAACXBIWXMAAAsTAAALEwEAmpwYAAADGGlDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjaY2BgnuDo4uTKJMDAUFBUUuQe5BgZERmlwH6egY2BmYGBgYGBITG5uMAxIMCHgYGBIS8/L5UBFTAyMHy7xsDIwMDAcFnX0cXJlYE0wJpcUFTCwMBwgIGBwSgltTiZgYHhCwMDQ3p5SUEJAwNjDAMDg0hSdkEJAwNjAQMDg0h2SJAzAwNjCwMDE09JakUJAwMDg3N+QWVRZnpGiYKhpaWlgmNKflKqQnBlcUlqbrGCZ15yflFBflFiSWoKAwMD1A4GBgYGXpf8EgX3xMw8BSMDVQYqg4jIKAUICxE+CDEESC4tKoMHJQODAIMCgwGDA0MAQyJDPcMChqMMbxjFGV0YSxlXMN5jEmMKYprAdIFZmDmSeSHzGxZLlg6WW6x6rK2s99gs2aaxfWMPZ9/NocTRxfGFM5HzApcj1xZuTe4FPFI8U3mFeCfxCfNN45fhXyygI7BD0FXwilCq0A/hXhEVkb2i4aJfxCaJG4lfkaiQlJM8JpUvLS19QqZMVl32llyfvIv8H4WtioVKekpvldeqFKiaqP5UO6jepRGqqaT5QeuA9iSdVF0rPUG9V/pHDBYY1hrFGNuayJsym740u2C+02KJ5QSrOutcmzjbQDtXe2sHY0cdJzVnJRcFV3k3BXdlD3VPXS8Tbxsfd99gvwT//ID6wIlBS4N3hVwMfRnOFCEXaRUVEV0RMzN2T9yDBLZE3aSw5IaUNak30zkyLDIzs+ZmX8xlz7PPryjYVPiuWLskq3RV2ZsK/cqSql01jLVedVPrHzbqNdU0n22VaytsP9op3VXUfbpXta+x/+5Em0mzJ/+dGj/t8AyNmf2zvs9JmHt6vvmCpYtEFrcu+bYsc/m9lSGrTq9xWbtvveWGbZtMNm/ZarJt+w6rnft3u+45uy9s/4ODOYd+Hmk/Jn58xUnrU+fOJJ/9dX7SRe1LR68kXv13fc5Nm1t379TfU75/4mHeY7En+59lvhB5efB1/lv5dxc+NH0y/fzq64Lv4T8Ffp360/rP8f9/AA0ADzT6lvFdAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAABwSURBVHjazNMxDsAgDENRcv9Du0NVFSXfUbpUsOKHkAOh9W3FnyBoX/nQHghSDcCDPRBf3gHoQuEBVueBuj4rMPFnIwMbZ9DECbTxAkJ3D4mV6jagWIPRAHgbpNGnN7INxzwtABw3YDCSo//0bF0DALiCRAFLB28mAAAAAElFTkSuQmCC)}#memo-drawboard-page button.artwork-pencil.medium:before{content:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAQAAABKfvVzAAAACXBIWXMAAAsTAAALEwEAmpwYAAADGGlDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjaY2BgnuDo4uTKJMDAUFBUUuQe5BgZERmlwH6egY2BmYGBgYGBITG5uMAxIMCHgYGBIS8/L5UBFTAyMHy7xsDIwMDAcFnX0cXJlYE0wJpcUFTCwMBwgIGBwSgltTiZgYHhCwMDQ3p5SUEJAwNjDAMDg0hSdkEJAwNjAQMDg0h2SJAzAwNjCwMDE09JakUJAwMDg3N+QWVRZnpGiYKhpaWlgmNKflKqQnBlcUlqbrGCZ15yflFBflFiSWoKAwMD1A4GBgYGXpf8EgX3xMw8BSMDVQYqg4jIKAUICxE+CDEESC4tKoMHJQODAIMCgwGDA0MAQyJDPcMChqMMbxjFGV0YSxlXMN5jEmMKYprAdIFZmDmSeSHzGxZLlg6WW6x6rK2s99gs2aaxfWMPZ9/NocTRxfGFM5HzApcj1xZuTe4FPFI8U3mFeCfxCfNN45fhXyygI7BD0FXwilCq0A/hXhEVkb2i4aJfxCaJG4lfkaiQlJM8JpUvLS19QqZMVl32llyfvIv8H4WtioVKekpvldeqFKiaqP5UO6jepRGqqaT5QeuA9iSdVF0rPUG9V/pHDBYY1hrFGNuayJsym740u2C+02KJ5QSrOutcmzjbQDtXe2sHY0cdJzVnJRcFV3k3BXdlD3VPXS8Tbxsfd99gvwT//ID6wIlBS4N3hVwMfRnOFCEXaRUVEV0RMzN2T9yDBLZE3aSw5IaUNak30zkyLDIzs+ZmX8xlz7PPryjYVPiuWLskq3RV2ZsK/cqSql01jLVedVPrHzbqNdU0n22VaytsP9op3VXUfbpXta+x/+5Em0mzJ/+dGj/t8AyNmf2zvs9JmHt6vvmCpYtEFrcu+bYsc/m9lSGrTq9xWbtvveWGbZtMNm/ZarJt+w6rnft3u+45uy9s/4ODOYd+Hmk/Jn58xUnrU+fOJJ/9dX7SRe1LR68kXv13fc5Nm1t379TfU75/4mHeY7En+59lvhB5efB1/lv5dxc+NH0y/fzq64Lv4T8Ffp360/rP8f9/AA0ADzT6lvFdAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAB6SURBVHjarNRJDsAgDANA8v9Hpwdakc1OWpUrHgmCheh6t+QjEJzQtVTm4D7AIRyY8z6EgXC9TTAopqGCQTk8DBRPtAIgvjcygPEakHgFaDyDJh5BG/dgEDdA1D0KiDsQqkXaEkDfRvPcpo2k7QGweAKxBP9+AvN1DQBwc0oBRN8v9gAAAABJRU5ErkJggg==)}#memo-drawboard-page button.artwork-pencil.large:before{content:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAQAAABKfvVzAAAACXBIWXMAAAsTAAALEwEAmpwYAAADGGlDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjaY2BgnuDo4uTKJMDAUFBUUuQe5BgZERmlwH6egY2BmYGBgYGBITG5uMAxIMCHgYGBIS8/L5UBFTAyMHy7xsDIwMDAcFnX0cXJlYE0wJpcUFTCwMBwgIGBwSgltTiZgYHhCwMDQ3p5SUEJAwNjDAMDg0hSdkEJAwNjAQMDg0h2SJAzAwNjCwMDE09JakUJAwMDg3N+QWVRZnpGiYKhpaWlgmNKflKqQnBlcUlqbrGCZ15yflFBflFiSWoKAwMD1A4GBgYGXpf8EgX3xMw8BSMDVQYqg4jIKAUICxE+CDEESC4tKoMHJQODAIMCgwGDA0MAQyJDPcMChqMMbxjFGV0YSxlXMN5jEmMKYprAdIFZmDmSeSHzGxZLlg6WW6x6rK2s99gs2aaxfWMPZ9/NocTRxfGFM5HzApcj1xZuTe4FPFI8U3mFeCfxCfNN45fhXyygI7BD0FXwilCq0A/hXhEVkb2i4aJfxCaJG4lfkaiQlJM8JpUvLS19QqZMVl32llyfvIv8H4WtioVKekpvldeqFKiaqP5UO6jepRGqqaT5QeuA9iSdVF0rPUG9V/pHDBYY1hrFGNuayJsym740u2C+02KJ5QSrOutcmzjbQDtXe2sHY0cdJzVnJRcFV3k3BXdlD3VPXS8Tbxsfd99gvwT//ID6wIlBS4N3hVwMfRnOFCEXaRUVEV0RMzN2T9yDBLZE3aSw5IaUNak30zkyLDIzs+ZmX8xlz7PPryjYVPiuWLskq3RV2ZsK/cqSql01jLVedVPrHzbqNdU0n22VaytsP9op3VXUfbpXta+x/+5Em0mzJ/+dGj/t8AyNmf2zvs9JmHt6vvmCpYtEFrcu+bYsc/m9lSGrTq9xWbtvveWGbZtMNm/ZarJt+w6rnft3u+45uy9s/4ODOYd+Hmk/Jn58xUnrU+fOJJ/9dX7SRe1LR68kXv13fc5Nm1t379TfU75/4mHeY7En+59lvhB5efB1/lv5dxc+NH0y/fzq64Lv4T8Ffp360/rP8f9/AA0ADzT6lvFdAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAB+SURBVHjalJM5EsAwCAOl/z9aKTIZwOEyjZvdMdiIwlyUHRQ48fLmLMQWOAlK2uMF3gsqHoAXeD1DgVc3lHguNHj2Dw2eCS3+Fwb8FEY8CgvcCyvchCX+CWscEAgBIk6tXDBCYghigx+CZbcLCN+BRUt5H0AnzLgT4kZ29QwAnplFBUt4JkYAAAAASUVORK5CYII=)}#memo-drawboard-page button.artwork-eraser.small:before{content:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAQAAABKfvVzAAAACXBIWXMAAAsTAAALEwEAmpwYAAADGGlDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjaY2BgnuDo4uTKJMDAUFBUUuQe5BgZERmlwH6egY2BmYGBgYGBITG5uMAxIMCHgYGBIS8/L5UBFTAyMHy7xsDIwMDAcFnX0cXJlYE0wJpcUFTCwMBwgIGBwSgltTiZgYHhCwMDQ3p5SUEJAwNjDAMDg0hSdkEJAwNjAQMDg0h2SJAzAwNjCwMDE09JakUJAwMDg3N+QWVRZnpGiYKhpaWlgmNKflKqQnBlcUlqbrGCZ15yflFBflFiSWoKAwMD1A4GBgYGXpf8EgX3xMw8BSMDVQYqg4jIKAUICxE+CDEESC4tKoMHJQODAIMCgwGDA0MAQyJDPcMChqMMbxjFGV0YSxlXMN5jEmMKYprAdIFZmDmSeSHzGxZLlg6WW6x6rK2s99gs2aaxfWMPZ9/NocTRxfGFM5HzApcj1xZuTe4FPFI8U3mFeCfxCfNN45fhXyygI7BD0FXwilCq0A/hXhEVkb2i4aJfxCaJG4lfkaiQlJM8JpUvLS19QqZMVl32llyfvIv8H4WtioVKekpvldeqFKiaqP5UO6jepRGqqaT5QeuA9iSdVF0rPUG9V/pHDBYY1hrFGNuayJsym740u2C+02KJ5QSrOutcmzjbQDtXe2sHY0cdJzVnJRcFV3k3BXdlD3VPXS8Tbxsfd99gvwT//ID6wIlBS4N3hVwMfRnOFCEXaRUVEV0RMzN2T9yDBLZE3aSw5IaUNak30zkyLDIzs+ZmX8xlz7PPryjYVPiuWLskq3RV2ZsK/cqSql01jLVedVPrHzbqNdU0n22VaytsP9op3VXUfbpXta+x/+5Em0mzJ/+dGj/t8AyNmf2zvs9JmHt6vvmCpYtEFrcu+bYsc/m9lSGrTq9xWbtvveWGbZtMNm/ZarJt+w6rnft3u+45uy9s/4ODOYd+Hmk/Jn58xUnrU+fOJJ/9dX7SRe1LR68kXv13fc5Nm1t379TfU75/4mHeY7En+59lvhB5efB1/lv5dxc+NH0y/fzq64Lv4T8Ffp360/rP8f9/AA0ADzT6lvFdAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAABsSURBVHja3FNJEsAgCEv+/+j00DrKJvYqJw0JAUYp/AveLaCyfAQgm3CMwsHA9aW21U6Q1RBPivUCAu1I6xGQGB1EQoU2Wf1spnCwoKd7AWBcIj0O/UmmW7P0IRlOL6L9W8JS3dOv/3F5PAMA2JRDARqv+DEAAAAASUVORK5CYII=)}#memo-drawboard-page button.artwork-eraser.medium:before{content:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAQAAABKfvVzAAAACXBIWXMAAAsTAAALEwEAmpwYAAADGGlDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjaY2BgnuDo4uTKJMDAUFBUUuQe5BgZERmlwH6egY2BmYGBgYGBITG5uMAxIMCHgYGBIS8/L5UBFTAyMHy7xsDIwMDAcFnX0cXJlYE0wJpcUFTCwMBwgIGBwSgltTiZgYHhCwMDQ3p5SUEJAwNjDAMDg0hSdkEJAwNjAQMDg0h2SJAzAwNjCwMDE09JakUJAwMDg3N+QWVRZnpGiYKhpaWlgmNKflKqQnBlcUlqbrGCZ15yflFBflFiSWoKAwMD1A4GBgYGXpf8EgX3xMw8BSMDVQYqg4jIKAUICxE+CDEESC4tKoMHJQODAIMCgwGDA0MAQyJDPcMChqMMbxjFGV0YSxlXMN5jEmMKYprAdIFZmDmSeSHzGxZLlg6WW6x6rK2s99gs2aaxfWMPZ9/NocTRxfGFM5HzApcj1xZuTe4FPFI8U3mFeCfxCfNN45fhXyygI7BD0FXwilCq0A/hXhEVkb2i4aJfxCaJG4lfkaiQlJM8JpUvLS19QqZMVl32llyfvIv8H4WtioVKekpvldeqFKiaqP5UO6jepRGqqaT5QeuA9iSdVF0rPUG9V/pHDBYY1hrFGNuayJsym740u2C+02KJ5QSrOutcmzjbQDtXe2sHY0cdJzVnJRcFV3k3BXdlD3VPXS8Tbxsfd99gvwT//ID6wIlBS4N3hVwMfRnOFCEXaRUVEV0RMzN2T9yDBLZE3aSw5IaUNak30zkyLDIzs+ZmX8xlz7PPryjYVPiuWLskq3RV2ZsK/cqSql01jLVedVPrHzbqNdU0n22VaytsP9op3VXUfbpXta+x/+5Em0mzJ/+dGj/t8AyNmf2zvs9JmHt6vvmCpYtEFrcu+bYsc/m9lSGrTq9xWbtvveWGbZtMNm/ZarJt+w6rnft3u+45uy9s/4ODOYd+Hmk/Jn58xUnrU+fOJJ/9dX7SRe1LR68kXv13fc5Nm1t379TfU75/4mHeY7En+59lvhB5efB1/lv5dxc+NH0y/fzq64Lv4T8Ffp360/rP8f9/AA0ADzT6lvFdAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAACOSURBVHjavNRLEoAgDAPQ5P6HjgsG+oECbnDlSN5YSpXCv4tvAd29QAHiFZBbyKQA/nEkC6BpY55MQMs+GElAZds6Seu7LjcS37A9lAncxF3qLj5ylIjjhgegDO7jHQAq2ma1QwEAAuMUxTgQalgTH0/ASC9xNdr5HAYh6hmZp1WgteD4iTZSx1/8BL4BAA4JVgFAxTGJAAAAAElFTkSuQmCC)}#memo-drawboard-page button.artwork-eraser.large:before{content:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAQAAABKfvVzAAAACXBIWXMAAAsTAAALEwEAmpwYAAADGGlDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjaY2BgnuDo4uTKJMDAUFBUUuQe5BgZERmlwH6egY2BmYGBgYGBITG5uMAxIMCHgYGBIS8/L5UBFTAyMHy7xsDIwMDAcFnX0cXJlYE0wJpcUFTCwMBwgIGBwSgltTiZgYHhCwMDQ3p5SUEJAwNjDAMDg0hSdkEJAwNjAQMDg0h2SJAzAwNjCwMDE09JakUJAwMDg3N+QWVRZnpGiYKhpaWlgmNKflKqQnBlcUlqbrGCZ15yflFBflFiSWoKAwMD1A4GBgYGXpf8EgX3xMw8BSMDVQYqg4jIKAUICxE+CDEESC4tKoMHJQODAIMCgwGDA0MAQyJDPcMChqMMbxjFGV0YSxlXMN5jEmMKYprAdIFZmDmSeSHzGxZLlg6WW6x6rK2s99gs2aaxfWMPZ9/NocTRxfGFM5HzApcj1xZuTe4FPFI8U3mFeCfxCfNN45fhXyygI7BD0FXwilCq0A/hXhEVkb2i4aJfxCaJG4lfkaiQlJM8JpUvLS19QqZMVl32llyfvIv8H4WtioVKekpvldeqFKiaqP5UO6jepRGqqaT5QeuA9iSdVF0rPUG9V/pHDBYY1hrFGNuayJsym740u2C+02KJ5QSrOutcmzjbQDtXe2sHY0cdJzVnJRcFV3k3BXdlD3VPXS8Tbxsfd99gvwT//ID6wIlBS4N3hVwMfRnOFCEXaRUVEV0RMzN2T9yDBLZE3aSw5IaUNak30zkyLDIzs+ZmX8xlz7PPryjYVPiuWLskq3RV2ZsK/cqSql01jLVedVPrHzbqNdU0n22VaytsP9op3VXUfbpXta+x/+5Em0mzJ/+dGj/t8AyNmf2zvs9JmHt6vvmCpYtEFrcu+bYsc/m9lSGrTq9xWbtvveWGbZtMNm/ZarJt+w6rnft3u+45uy9s/4ODOYd+Hmk/Jn58xUnrU+fOJJ/9dX7SRe1LR68kXv13fc5Nm1t379TfU75/4mHeY7En+59lvhB5efB1/lv5dxc+NH0y/fzq64Lv4T8Ffp360/rP8f9/AA0ADzT6lvFdAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAACSSURBVHjalJNBEoAgDAOT/z86HkS0kLboQWdwt9QSKVQX9dzCCgDQ8dtLlUIo3Atrr6wF92nMBeUzcEI1ONIMoh90GAP+CC0eWzrAvzsc4ZM7xWXSVeBDoMRG+oYPEhlTkuJDMElMcAz4bswrWyYZnqtiMj9qW8X+U/dYYRpLsvIcXCj+btuHjyrxcF6TKoN7DQDFlVMFmREVnwAAAABJRU5ErkJggg==)}#memo-drawboard-page button.artwork-color.beige:before{content:url(data:image/png;base64,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)}#memo-drawboard-page button.artwork-color.black:before{content:url(data:image/png;base64,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)}#memo-drawboard-page button.artwork-color.blue:before{content:url(data:image/png;base64,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)}#memo-drawboard-page button.artwork-color.brown:before{content:url(data:image/png;base64,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)}#memo-drawboard-page button.artwork-color.darkaqua:before{content:url(data:image/png;base64,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)}#memo-drawboard-page button.artwork-color.darkgreen:before{content:url(data:image/png;base64,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)}#memo-drawboard-page button.artwork-color.darkorange:before{content:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAAENJREFUeNpi/P//PwMtAeOoBYPTAkZGRrJs/f//PyPRFhxoIM1wh4ZRC0YtGLVg1ALqW0DTwm60whleFgAAAAD//wMAgXSX0bunlW0AAAAASUVORK5CYII=)}#memo-drawboard-page button.artwork-color.gray:before{content:url(data:image/png;base64,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)}#memo-drawboard-page button.artwork-color.green:before{content:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAAEFJREFUeNpi/P//PwMtAeOoBYPTAkZGRrJs/f//PyPxFhwn0XTLUQtGLRi1YNQCGlhAy8JutMIZXhYAAAAA//8DAAQKi9HTlhEdAAAAAElFTkSuQmCC)}#memo-drawboard-page button.artwork-color.openverse:before{content:url(data:image/png;base64,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)}#memo-drawboard-page button.artwork-color.orange:before{content:url(data:image/png;base64,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)}#memo-drawboard-page button.artwork-color.pink:before{content:url(data:image/png;base64,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)}#memo-drawboard-page button.artwork-color.purple:before{content:url(data:image/png;base64,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)}#memo-drawboard-page button.artwork-color.red:before{content:url(data:image/png;base64,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)}#memo-drawboard-page button.artwork-color.skyblue:before{content:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAAD9JREFUeNrs1dEJACAMA1Fv/6HjCioWSrks8MhPQpJVGQR6AsCTmoRz4LYZCAgICPwHKsfOw5kFbAAAAP//AwAVEpfRSumTTwAAAABJRU5ErkJggg==)}#memo-drawboard-page button.artwork-color.yellow:before{content:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAAD9JREFUeNrs1dEJACAMA1Fv/6HjCioWSrks8MhPQpJVGQR6AsCTmoRj4LYYCAgICPwHSsfOw5kFbAAAAP//AwAtEpfRJmnKjwAAAABJRU5ErkJggg==)}#memo-drawboard-page button.artwork-zoom:before{content:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAQAAABKfvVzAAAACXBIWXMAAAsTAAALEwEAmpwYAAADGGlDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjaY2BgnuDo4uTKJMDAUFBUUuQe5BgZERmlwH6egY2BmYGBgYGBITG5uMAxIMCHgYGBIS8/L5UBFTAyMHy7xsDIwMDAcFnX0cXJlYE0wJpcUFTCwMBwgIGBwSgltTiZgYHhCwMDQ3p5SUEJAwNjDAMDg0hSdkEJAwNjAQMDg0h2SJAzAwNjCwMDE09JakUJAwMDg3N+QWVRZnpGiYKhpaWlgmNKflKqQnBlcUlqbrGCZ15yflFBflFiSWoKAwMD1A4GBgYGXpf8EgX3xMw8BSMDVQYqg4jIKAUICxE+CDEESC4tKoMHJQODAIMCgwGDA0MAQyJDPcMChqMMbxjFGV0YSxlXMN5jEmMKYprAdIFZmDmSeSHzGxZLlg6WW6x6rK2s99gs2aaxfWMPZ9/NocTRxfGFM5HzApcj1xZuTe4FPFI8U3mFeCfxCfNN45fhXyygI7BD0FXwilCq0A/hXhEVkb2i4aJfxCaJG4lfkaiQlJM8JpUvLS19QqZMVl32llyfvIv8H4WtioVKekpvldeqFKiaqP5UO6jepRGqqaT5QeuA9iSdVF0rPUG9V/pHDBYY1hrFGNuayJsym740u2C+02KJ5QSrOutcmzjbQDtXe2sHY0cdJzVnJRcFV3k3BXdlD3VPXS8Tbxsfd99gvwT//ID6wIlBS4N3hVwMfRnOFCEXaRUVEV0RMzN2T9yDBLZE3aSw5IaUNak30zkyLDIzs+ZmX8xlz7PPryjYVPiuWLskq3RV2ZsK/cqSql01jLVedVPrHzbqNdU0n22VaytsP9op3VXUfbpXta+x/+5Em0mzJ/+dGj/t8AyNmf2zvs9JmHt6vvmCpYtEFrcu+bYsc/m9lSGrTq9xWbtvveWGbZtMNm/ZarJt+w6rnft3u+45uy9s/4ODOYd+Hmk/Jn58xUnrU+fOJJ/9dX7SRe1LR68kXv13fc5Nm1t379TfU75/4mHeY7En+59lvhB5efB1/lv5dxc+NH0y/fzq64Lv4T8Ffp360/rP8f9/AA0ADzT6lvFdAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAACMSURBVHjavFRbDsAgCKP3P3T34+RhxS1Z5tcsLUghA+3dwYeCENKfbaZ5rbiZ0WGYDcChGLERX8DAFQLL2UMVYi/ArAXel6OAtbVWMPN6LSUQDnU9cLEcyTVpeBoMsmtJwMPglwfzEb1ZK6LOv10qAqVI4YkdlPRs1ZbeC6C63gpqqweB0/nLT0CfawDTRF8BBXckvAAAAABJRU5ErkJggg==)}#memo-drawboard-page button.artwork-zoom.out:before{content:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAQAAABKfvVzAAAACXBIWXMAAAsTAAALEwEAmpwYAAADGGlDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjaY2BgnuDo4uTKJMDAUFBUUuQe5BgZERmlwH6egY2BmYGBgYGBITG5uMAxIMCHgYGBIS8/L5UBFTAyMHy7xsDIwMDAcFnX0cXJlYE0wJpcUFTCwMBwgIGBwSgltTiZgYHhCwMDQ3p5SUEJAwNjDAMDg0hSdkEJAwNjAQMDg0h2SJAzAwNjCwMDE09JakUJAwMDg3N+QWVRZnpGiYKhpaWlgmNKflKqQnBlcUlqbrGCZ15yflFBflFiSWoKAwMD1A4GBgYGXpf8EgX3xMw8BSMDVQYqg4jIKAUICxE+CDEESC4tKoMHJQODAIMCgwGDA0MAQyJDPcMChqMMbxjFGV0YSxlXMN5jEmMKYprAdIFZmDmSeSHzGxZLlg6WW6x6rK2s99gs2aaxfWMPZ9/NocTRxfGFM5HzApcj1xZuTe4FPFI8U3mFeCfxCfNN45fhXyygI7BD0FXwilCq0A/hXhEVkb2i4aJfxCaJG4lfkaiQlJM8JpUvLS19QqZMVl32llyfvIv8H4WtioVKekpvldeqFKiaqP5UO6jepRGqqaT5QeuA9iSdVF0rPUG9V/pHDBYY1hrFGNuayJsym740u2C+02KJ5QSrOutcmzjbQDtXe2sHY0cdJzVnJRcFV3k3BXdlD3VPXS8Tbxsfd99gvwT//ID6wIlBS4N3hVwMfRnOFCEXaRUVEV0RMzN2T9yDBLZE3aSw5IaUNak30zkyLDIzs+ZmX8xlz7PPryjYVPiuWLskq3RV2ZsK/cqSql01jLVedVPrHzbqNdU0n22VaytsP9op3VXUfbpXta+x/+5Em0mzJ/+dGj/t8AyNmf2zvs9JmHt6vvmCpYtEFrcu+bYsc/m9lSGrTq9xWbtvveWGbZtMNm/ZarJt+w6rnft3u+45uy9s/4ODOYd+Hmk/Jn58xUnrU+fOJJ/9dX7SRe1LR68kXv13fc5Nm1t379TfU75/4mHeY7En+59lvhB5efB1/lv5dxc+NH0y/fzq64Lv4T8Ffp360/rP8f9/AA0ADzT6lvFdAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAACKSURBVHjavFRBDoAwDIL/Pxovi63YdpoYd3GloIMuUni3+KEgtert+KazdByAAiawgIByB6sfoOKxuIUACVLeQOwFwUrFTiC3NgoUAZy+CoHb2nhQEzm7lOSDMcql0mbwtwPrEX24VqLPf7xUIu0jVQB2hIp+zaGlzwJWrluBW90Igq5ffgL1OgYA7gNeAcZXpMIAAAAASUVORK5CYII=)}#memo-drawboard-page button.artwork-fill:before{content:url(data:image/png;base64,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)}#memo-drawboard-page .memo-canvas{margin-top:48px;height:128px}#memo-drawboard-page button.artwork-lock:before{content:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAQAAABKfvVzAAAACXBIWXMAAAsTAAALEwEAmpwYAAADGGlDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjaY2BgnuDo4uTKJMDAUFBUUuQe5BgZERmlwH6egY2BmYGBgYGBITG5uMAxIMCHgYGBIS8/L5UBFTAyMHy7xsDIwMDAcFnX0cXJlYE0wJpcUFTCwMBwgIGBwSgltTiZgYHhCwMDQ3p5SUEJAwNjDAMDg0hSdkEJAwNjAQMDg0h2SJAzAwNjCwMDE09JakUJAwMDg3N+QWVRZnpGiYKhpaWlgmNKflKqQnBlcUlqbrGCZ15yflFBflFiSWoKAwMD1A4GBgYGXpf8EgX3xMw8BSMDVQYqg4jIKAUICxE+CDEESC4tKoMHJQODAIMCgwGDA0MAQyJDPcMChqMMbxjFGV0YSxlXMN5jEmMKYprAdIFZmDmSeSHzGxZLlg6WW6x6rK2s99gs2aaxfWMPZ9/NocTRxfGFM5HzApcj1xZuTe4FPFI8U3mFeCfxCfNN45fhXyygI7BD0FXwilCq0A/hXhEVkb2i4aJfxCaJG4lfkaiQlJM8JpUvLS19QqZMVl32llyfvIv8H4WtioVKekpvldeqFKiaqP5UO6jepRGqqaT5QeuA9iSdVF0rPUG9V/pHDBYY1hrFGNuayJsym740u2C+02KJ5QSrOutcmzjbQDtXe2sHY0cdJzVnJRcFV3k3BXdlD3VPXS8Tbxsfd99gvwT//ID6wIlBS4N3hVwMfRnOFCEXaRUVEV0RMzN2T9yDBLZE3aSw5IaUNak30zkyLDIzs+ZmX8xlz7PPryjYVPiuWLskq3RV2ZsK/cqSql01jLVedVPrHzbqNdU0n22VaytsP9op3VXUfbpXta+x/+5Em0mzJ/+dGj/t8AyNmf2zvs9JmHt6vvmCpYtEFrcu+bYsc/m9lSGrTq9xWbtvveWGbZtMNm/ZarJt+w6rnft3u+45uy9s/4ODOYd+Hmk/Jn58xUnrU+fOJJ/9dX7SRe1LR68kXv13fc5Nm1t379TfU75/4mHeY7En+59lvhB5efB1/lv5dxc+NH0y/fzq64Lv4T8Ffp360/rP8f9/AA0ADzT6lvFdAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAABnSURBVHjatJRBDsAgCAR3///o6cUmNVCIrXIhbhiDLmq0Fv4JWJKYBRqAZkv6DicxX3hkYlUG+CEhSdgZWwHSjXwHWkNMksrAWwErWFgAWK/qHmBcJEtn4DRw3ocWiC+tnqWDv8Y1AKETUgGf7LYxAAAAAElFTkSuQmCC)}#memo-drawboard-page .memo-canvas.zoom{overflow-x:scroll}#memo-drawboard-page .memo-canvas.locked{overflow:hidden}#memo-drawboard-page .memo-canvas #artwork-canvas{-ms-interpolation-mode:nearest-neighbor;image-rendering:-webkit-optimize-contrast;image-rendering:optimize-contrast;image-rendering:-moz-crisp-edges;image-rendering:-o-crisp-edges;image-rendering:optimizeSpeed;image-rendering:pixelated;border:1px solid #0080ff}#memo-drawboard-page .memo-canvas canvas:not(#artwork-canvas){display:none}#global-menu{position:relative}#global-menu #global-menu-logo{padding:12px 0;text-align:center}#global-menu #global-menu-logo h1{line-height:1}#global-menu #global-menu-logo img{width:167px;height:32px}#global-menu #global-menu-list{float:right;padding:0}#global-menu #global-menu-list:after{content:"";display:block;clear:both}#global-menu li{float:left;padding:0 10px;line-height:1}#global-menu li a,#global-menu li button{position:relative;line-height:1;color:#646464;background-repeat:no-repeat;padding:0 5px;display:table}#global-menu li a:hover,#global-menu li button:hover{box-shadow:inset 0 -4px 0 -1px #0080ff}#global-menu li a:before,#global-menu li button:before{background:0 0;font-size:32px;line-height:54px;vertical-align:middle;padding-right:8px;display:inline-block}#global-menu li a span{font-weight:700;padding-top:5px;display:table-cell;vertical-align:middle}#global-menu li#global-menu-mymenu .icon-container{padding:0;margin:8px 10px 8px 0;width:38px;height:38px}#global-menu li#global-menu-mymenu .icon-container img{border:1px solid #ddd;width:36px;height:36px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px}#global-menu li#global-menu-feed a:before{content:'a'}#global-menu li#global-menu-community a:before{content:'c'}#global-menu li#global-menu-message a:before{content:'m'}#global-menu li#global-menu-news a:before{content:'n';text-indent:0;padding-right:0}#global-menu li#global-menu-my-menu{padding-right:0}#global-menu li#global-menu-my-menu button{-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;appearance:none;border:0;background-color:transparent;margin:0 auto}#global-menu li#global-menu-my-menu button:before{padding-right:0;content:'j';font-size:26px}#global-menu li#global-menu-my-menu button:after{font-family:MiiverseSymbols,sans-serif;font-weight:400;content:'V';vertical-align:middle;padding-left:8px;display:inline-block}#global-menu .badge,.tab-icon-my-news .badge{height:18px;padding:1px 5px 0;font-size:12px;font-weight:700;text-align:center;display:block;line-height:18px}.tab-icon-my-news .badge{width:9px;background:#fc951e;color:#fff;margin-top:-17px;margin-left:16px;border-radius:20px}#global-menu li.selected a,#global-menu li.selected a:before{color:#0080ff}#global-menu .badge{position:absolute;top:50%;min-width:9px;border:2px solid #fff;background:#fc951e;color:#fff;right:auto;left:50%;margin-top:-6px;margin-left:8px;-webkit-border-radius:20px;-moz-border-radius:20px;-ms-border-radius:20px;-o-border-radius:20px;border-radius:20px}#global-menu #global-menu-message .badge{left:10%!important}#global-menu #global-my-menu{background-color:#fff;border:2px solid #ddd;text-align:left;top:60px;padding:10px 5px;position:absolute;right:0;width:240px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;-webkit-box-shadow:0 3px 4px 0 rgba(0,0,0,.4);-moz-box-shadow:0 3px 4px 0 rgba(0,0,0,.4);-ms-box-shadow:0 3px 4px 0 rgba(0,0,0,.4);-o-box-shadow:0 3px 4px 0 rgba(0,0,0,.4);box-shadow:0 3px 4px 0 rgba(0,0,0,.4)}#global-menu #global-my-menu:after,#global-menu #global-my-menu:before{bottom:100%;right:12%;border:solid transparent;content:" ";height:0;width:0;position:absolute}#global-menu #global-my-menu:after{border-color:transparent transparent #fff;border-width:10px;margin-right:-10px}#global-menu #global-my-menu:before{border-color:transparent transparent #ddd;border-width:13px;margin-right:-13px}#global-menu #global-my-menu li{float:none;padding:0}#global-menu #global-my-menu a{display:block;padding:8px 10px}#global-menu #global-my-menu a:hover{-webkit-box-shadow:none;-moz-box-shadow:none;-ms-box-shadow:none;-o-box-shadow:none;box-shadow:none}#global-menu #global-my-menu span{padding:0 0 0 30px;font-weight:400;display:block}#global-menu #global-my-menu form{position:relative}#global-menu #global-my-menu form:before{content:'b';position:absolute;left:10px;top:7px}#global-menu #global-my-menu form input,#global-menu #global-my-menu form input:active,#global-menu #global-my-menu form input:hover{-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;appearance:none;border:none;background:0 0;color:#646464;display:block;text-align:left;text-indent:30px;font-size:14px;padding:8px 10px;margin:0;width:100%;position:relative;z-index:2}#global-menu #global-my-menu .symbol:before{font-size:18px;line-height:18px;width:22px;text-align:center;color:#0080ff;position:absolute;top:50%;margin-top:-9px}.headline,.icon-container.administrator,.icon-container.developer,.icon-container.donator,.icon-container.moderator,.icon-container.openverse,.icon-container.tester,.icon-container.urapp{position:relative}#global-menu #global-my-menu .my-menu-profile-setting:before{content:"Z"}#global-menu #global-my-menu .my-menu-white-power:before{content:url(/s/img/font/wp.svg);width:20px}#global-menu #global-my-menu .my-menu-account-setting:before{content:"Y"}#global-menu #global-my-menu .my-menu-openman:before{content:"w"}#global-menu #global-my-menu .my-menu-guide:before{content:"g"}@-moz-document url-prefix(){#global-menu #global-my-menu form input,#global-menu #global-my-menu form input:active,#global-menu #global-my-menu form input:hover{text-indent:27px}}h2.label{border-bottom:3px solid #0080ff;color:#0080ff;font-weight:400;font-size:16px;padding:17px 15px 10px;line-height:1;margin:0}.count,.headline h2,.tab2 a,.tab3 a,h3.label{font-weight:700}h2.label:before{font-size:20px;vertical-align:middle;margin-right:3px;margin-top:-3px;display:inline-block}h3.label{padding:9px 15px 6px;line-height:1.2}h3.label.label-wiiu{background:#d8f2fc;color:#1193c4;-webkit-box-shadow:inset 0 1px 0 #c1eafa;-moz-box-shadow:inset 0 1px 0 #c1eafa;-ms-box-shadow:inset 0 1px 0 #c1eafa;-o-box-shadow:inset 0 1px 0 #c1eafa;box-shadow:inset 0 1px 0 #c1eafa}h3.label.label-wiiu .with-filter-right{color:#1193c4}h3.label.label-3ds{background:#fce9e9;color:#ce181e;-webkit-box-shadow:inset 0 1px 0 #fad2d3;-moz-box-shadow:inset 0 1px 0 #fad2d3;-ms-box-shadow:inset 0 1px 0 #fad2d3;-o-box-shadow:inset 0 1px 0 #fad2d3;box-shadow:inset 0 1px 0 #fad2d3}h3.label.label-3ds .with-filter-right{color:#ce181e}h2.reply-label{clear:both;background:#0080ff;color:#FFF;border-top:1px solid #0040ff;padding:3px 10px 1px}.count{color:#0080ff;line-height:1;float:right;margin:13px 12px 6px;padding:4px 12px;background-color:#bedcff}.headline{padding-bottom:10px}.headline h2{padding:10px 285px 0 8px;font-size:16px;color:#606060}.headline h2>span{display:inline-block;vertical-align:middle;padding:3px 10px 0 0}.post-filter{display:inline-block;margin-top:4px}.headline form.search{position:absolute;right:0;top:0;width:250px;margin-left:10px;margin-bottom:0}.headline .activity-headline:before{content:'a';line-height:23px;font-size:23px;vertical-align:middle;margin:-7px 5px 0 0;display:inline-block}h2.label-diary,h2.label-diary_post{border-bottom:3px solid #04c9db;color:#00b7d8}h2.label-diary:before,h2.label-diary_post:before{content:"%"}h2.label-artwork,h2.label-artwork_post{border-bottom:3px solid #fcc735;color:#ffae00}h2.label-artwork:before,h2.label-artwork_post:before{content:"M"}h2.label-topic,h2.label-topic_post{border-bottom:3px solid #e8316e;color:#e8316e}h2.label-topic:before,h2.label-topic_post:before{content:"t"}h2.label-via_api:before{content:"&"}.with-filter-right{float:right;border:none;padding:0;background:0 0;vertical-align:top}.with-filter-right:before{content:"V";float:right;margin-left:3px;margin-top:3px}h2.label-diary .with-filter-right{color:#00b7d8}h2.label-artwork .with-filter-right{color:#ffae00}h2.label-topic .with-filter-right{color:#e8316e}.tab-container{padding:15px 15px 0}.tab-container+.post-list{margin-top:15px;border-top:1px solid #ddd}.tab-container+#community-post-list,.tab-container+.community-list{margin-top:15px}.tab-container#notification-tab-container{margin-bottom:15px}.tab2,.tab3{display:table;margin:0 auto;width:100%}.tab2:after,.tab3:after{content:"";display:block;clear:both}.tab2 a,.tab3 a{display:table-cell;vertical-align:middle;padding:10px 10px 8px;font-size:14px;background-color:#fff;background:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e6e6e6),color-stop(.5,#fff));background:-webkit-linear-gradient(top,#fff 0,#fff 50%,#e6e6e6 100%);background:-moz-linear-gradient(top,#fff 0,#fff 50%,#e6e6e6 100%);background:-ms-linear-gradient(top,#fff 0,#fff 50%,#e6e6e6 100%);background:-o-linear-gradient(top,#fff 0,#fff 50%,#e6e6e6 100%);background:linear-gradient(top,#fff 0,#fff 50%,#e6e6e6 100%);color:#323232;text-align:center;line-height:1.2;border:1px solid #ddd;border-bottom-color:#ccc;border-left:none}.tab2 a span,.tab3 a span{text-align:left;display:inline-block}.tab2 a span.label,.tab3 a span.label{float:left;margin:8px 0 0}.tab2 a span.number,.tab3 a span.number{text-shadow:0 0 0 transparent;color:#FFF;float:right;font-size:10px;font-weight:400;background:#969696;min-width:4em;padding:1px 5px 0;margin:8px 0;text-align:right;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px}.tab2.user-menu-activity a,.tab3.user-menu-activity a{padding:0 10px}.tab2.user-menu-friends a,.tab3.user-menu-friends a{padding:8px 10px}.tab2.user-menu-friends a span.name,.tab3.user-menu-friends a span.name{font-size:12px}.tab2.user-menu-friends a span.number,.tab3.user-menu-friends a span.number{width:100%;margin:5px 0 0;text-align:center;padding:2px 5px;font-size:12px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box}.tab2.user-menu-friends a span.number .denominator,.tab3.user-menu-friends a span.number .denominator{font-size:10px;font-weight:400;color:rgba(255,255,255,.7);padding-left:2px}.tab2 a:hover,.tab3 a:hover{background:#f9f9f9;-webkit-box-shadow:inset 0 1px 0 #fff,0 2px 4px rgba(0,0,0,.1);-moz-box-shadow:inset 0 1px 0 #fff,0 2px 4px rgba(0,0,0,.1);-ms-box-shadow:inset 0 1px 0 #fff,0 2px 4px rgba(0,0,0,.1);-o-box-shadow:inset 0 1px 0 #fff,0 2px 4px rgba(0,0,0,.1);box-shadow:inset 0 1px 0 #fff,0 2px 4px rgba(0,0,0,.1)}.tab2 a.selected,.tab3 a.selected{color:#FFF;background-color:#81e52e;background:-webkit-gradient(linear,left top,left bottom,from(#2e81e5),to(#005ac8));background:-webkit-linear-gradient(top,#2e81e5 #005ac8);background:-moz-linear-gradient(top,#2e81e5 #005ac8);background:-ms-linear-gradient(top,#2e81e5 #005ac8);background:-o-linear-gradient(top,#2e81e5 #005ac8);background:linear-gradient(top,#2e81e5 #005ac8)}.tab2 a.selected span.number,.tab3 a.selected span.number{background:#003caa}.tab2 a.selected:hover,.tab3 a.selected:hover{-webkit-box-shadow:inset 0 0 0 #fff,0 0 0 rgba(0,0,0,.1);-moz-box-shadow:inset 0 0 0 #fff,0 0 0 rgba(0,0,0,.1);-ms-box-shadow:inset 0 0 0 #fff,0 0 0 rgba(0,0,0,.1);-o-box-shadow:inset 0 0 0 #fff,0 0 0 rgba(0,0,0,.1);box-shadow:inset 0 0 0 #fff,0 0 0 rgba(0,0,0,.1)}.big-button.disabled:hover,.button{-webkit-box-shadow:inset 0 1px 0 #fff;-moz-box-shadow:inset 0 1px 0 #fff;-ms-box-shadow:inset 0 1px 0 #fff;-o-box-shadow:inset 0 1px 0 #fff}.tab2>a:first-child,.tab3>a:first-child{border-left:1px solid #ddd;-webkit-border-top-left-radius:5px;-moz-border-top-left-radius:5px;-ms-border-top-left-radius:5px;-o-border-top-left-radius:5px;border-top-left-radius:5px;-webkit-border-bottom-left-radius:5px;-moz-border-bottom-left-radius:5px;-ms-border-bottom-left-radius:5px;-o-border-bottom-left-radius:5px;border-bottom-left-radius:5px}.tab2>a:last-child,.tab3>a:last-child{-webkit-border-top-right-radius:5px;-moz-border-top-right-radius:5px;-ms-border-top-right-radius:5px;-o-border-top-right-radius:5px;border-top-right-radius:5px;-webkit-border-bottom-right-radius:5px;-moz-border-bottom-right-radius:5px;-ms-border-bottom-right-radius:5px;-o-border-bottom-right-radius:5px;border-bottom-right-radius:5px}.tab2 a{width:50%}.tab-icon-my-news span.symbol{margin-right:5px}span.symbol.nf:before{content:"n"}span.symbol.fr:before{content:"F"}.icon-container{width:58px;height:58px;float:left}.icon-container .icon{background:#fff;border:1px solid #ddd;vertical-align:middle;width:56px;height:56px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px}.icon-container.administrator:after,.icon-container.developer:after,.icon-container.donator:after,.icon-container.moderator:after,.icon-container.openverse:after,.icon-container.tester:after,.icon-container.urapp:after{position:absolute;display:block;top:0;left:0;width:22px;height:22px}.icon-container.administrator:after{content:url(/s/img/administrator.png)}.icon-container.developer:after{content:url(/s/img/developer.png)}.icon-container.openverse:after{content:url(/s/img/open-dev.png)}.icon-container.urapp:after{content:url(/s/img/open-zsdev.png)}.icon-container.moderator:after{content:url(/s/img/moderator.png)}.icon-container.donator:after{content:url(/s/img/donator.png)}.icon-container.tester:after{content:url(/s/img/tester.png)}.post-permalink-feeling-icon.administrator,.post-permalink-feeling-icon.developer,.post-permalink-feeling-icon.donator,.post-permalink-feeling-icon.moderator,.post-permalink-feeling-icon.openverse,.post-permalink-feeling-icon.tester,.post-permalink-feeling-icon.urapp{position:relative}.post-permalink-feeling-icon.administrator:after,.post-permalink-feeling-icon.developer:after,.post-permalink-feeling-icon.donator:after,.post-permalink-feeling-icon.moderator:after,.post-permalink-feeling-icon.openverse:after,.post-permalink-feeling-icon.tester:after{position:absolute;width:22px;height:22px;display:block;top:0;left:0}.post-permalink-feeling-icon.administrator:after{content:url(/s/img/administrator.png)}.post-permalink-feeling-icon.developer:after{content:url(/s/img/developer.png)}.post-permalink-feeling-icon.openverse:after{content:url(/s/img/open-dev.png)}.post-permalink-feeling-icon.moderator:after{content:url(/s/img/moderator.png)}.post-permalink-feeling-icon.donator:after{content:url(/s/img/donator.png)}.post-permalink-feeling-icon.tester:after{content:url(/s/img/tester.png)}.button{-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;appearance:none;padding:12px 15px;border-bottom-color:#ccc;background:#f6f6f6;color:#323232;display:block;font-size:14px;text-align:center;max-width:480px;margin:0 auto;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;box-shadow:inset 0 1px 0 #fff}.button.edit-button,.button.rm{width:34px;padding:4px 0 3px;float:right}.button:hover{text-decoration:none!important;background:#f6f6f6;-webkit-box-shadow:inset 0 1px 0 #fff,0 2px 4px rgba(0,0,0,.1);-moz-box-shadow:inset 0 1px 0 #fff,0 2px 4px rgba(0,0,0,.1);-ms-box-shadow:inset 0 1px 0 #fff,0 2px 4px rgba(0,0,0,.1);-o-box-shadow:inset 0 1px 0 #fff,0 2px 4px rgba(0,0,0,.1);box-shadow:inset 0 1px 0 #fff,0 2px 4px rgba(0,0,0,.1)}.button.edit-button:hover,.button.rm:hover{text-decoration:none}.button.edit-button{margin:0 0 10px 10px}.button.edit-post-button:before{content:"J"!important}.button.rm-post-button:before{content:"d"!important}.button.profile-post-button:before{content:"P"!important}.button.profile-post-button.done:before{content:"s"!important}.button.edit-button:before{content:"y";font-size:18px;color:#969696}.button.rm:before{content:"d";font-size:18px;color:#969696}.big-button{background:#f1f1f1;border:1px solid rgba(0,0,0,.1);overflow:hidden;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.2);-moz-box-shadow:0 1px 0 rgba(0,0,0,.2);-ms-box-shadow:0 1px 0 rgba(0,0,0,.2);-o-box-shadow:0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 0 rgba(0,0,0,.2);display:block;max-width:400px;margin:0 auto;padding:12px 0 10px;color:#323232;text-align:center;font-size:16px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px}.big-button:hover{background-color:#ededed}.big-button.disabled{color:#969696}.big-button.disabled:hover{box-shadow:inset 0 1px 0 #fff;text-decoration:none}.arrow-button{clear:both;display:block;padding:11px 20px 9px 15px;background:url(/s/img/icon-arrow-right.png) 97.5% center no-repeat;color:#323232;-webkit-background-size:9px 15px;-moz-background-size:9px 15px;-ms-background-size:9px 15px;-o-background-size:9px 15px;background-size:9px 15px}.arrow-button:hover{background-color:#f9f9f9}.sidebar-container .button{margin:5px auto 20px;width:80%}.sidebar-container .title-settings-button:before{content:"y";font-size:18px}.sidebar-container .title-settings-button{width:15%!important;float:right;margin-top:-65px;margin-right:20px}.favorite-button{margin-left:40px!important}.favorite-button:before{content:"P";font-size:20px;margin:-2px 5px 0 0;line-height:11px;color:#f79726;display:inline-block;vertical-align:middle}.favorite-button.checked:before{content:"s"}.ie .favorite-button.changing:before{content:none}.favorite-button .favorite-button-text{padding:4px 0 2px}.filter-button{background-color:rgba(0,0,0,.06);border:none;float:none;padding:4px 10px;vertical-align:middle;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px}.filter-button:hover{background-color:rgba(0,0,0,.08);color:#323232}.filter-button:before{content:"V";float:right;font-size:10px;padding:3px 0 0 5px}.hidden-content-button{display:inline-block;margin:5px;padding:3px 5px;border:1px solid #ddd;border-bottom-color:#ccc;background:#f6f6f6;font-size:12px;color:#323232;text-align:center;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;-webkit-box-shadow:inset 0 1px 0 #fff;-moz-box-shadow:inset 0 1px 0 #fff;-ms-box-shadow:inset 0 1px 0 #fff;-o-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.black-button,.gray-button{min-width:135px;padding:9px 10px 7px;margin:0;font-size:14px;vertical-align:middle;font-weight:700}.hidden-content-button:hover{text-decoration:none!important;-webkit-box-shadow:inset 0 1px 0 #fff,0 2px 4px rgba(0,0,0,.1);-moz-box-shadow:inset 0 1px 0 #fff,0 2px 4px rgba(0,0,0,.1);-ms-box-shadow:inset 0 1px 0 #fff,0 2px 4px rgba(0,0,0,.1);-o-box-shadow:inset 0 1px 0 #fff,0 2px 4px rgba(0,0,0,.1);box-shadow:inset 0 1px 0 #fff,0 2px 4px rgba(0,0,0,.1)}.black-button{border:1px solid #444;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.5);background-color:#646464;background:-webkit-gradient(linear,left top,left bottom,from(#646464),to(#323232),color-stop(.96,#434343));background:-webkit-linear-gradient(top,#646464 0,#434343 96%,#323232 100%);background:-moz-linear-gradient(top,#646464 0,#434343 96%,#323232 100%);background:-ms-linear-gradient(top,#646464 0,#434343 96%,#323232 100%);background:-o-linear-gradient(top,#646464 0,#434343 96%,#323232 100%);background:linear-gradient(top,#646464 0,#434343 96%,#323232 100%);-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.3);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.3);-ms-box-shadow:inset 0 1px 0 rgba(255,255,255,.3);-o-box-shadow:inset 0 1px 0 rgba(255,255,255,.3);box-shadow:inset 0 1px 0 rgba(255,255,255,.3);min-height:40px;min-height:30px\\9}.black-button.disabled{background-color:#ddd;background:-webkit-gradient(linear,left top,left bottom,from(#ddd),to(#d0d0d0),color-stop(.96,#ddd));background:-webkit-linear-gradient(top,#ddd 0,#ddd 96%,#d0d0d0 100%);background:-moz-linear-gradient(top,#ddd 0,#ddd 96%,#d0d0d0 100%);background:-ms-linear-gradient(top,#ddd 0,#ddd 96%,#d0d0d0 100%);background:-o-linear-gradient(top,#ddd 0,#ddd 96%,#d0d0d0 100%);background:linear-gradient(top,#ddd 0,#ddd 96%,#d0d0d0 100%);border-color:#c4c4c4;color:#919191;text-shadow:0 1px 0 #fff;cursor:default}.black-button.loading{border-color:#b7b7b7;color:#969696;background-color:#ddd;background:-webkit-gradient(linear,left top,left bottom,from(#ddd),to(#b7b7b7),color-stop(.96,#c4c4c4));background:-webkit-linear-gradient(top,#ddd 0,#c4c4c4 96%,#b7b7b7 100%);background:-moz-linear-gradient(top,#ddd 0,#c4c4c4 96%,#b7b7b7 100%);background:-ms-linear-gradient(top,#ddd 0,#c4c4c4 96%,#b7b7b7 100%);background:-o-linear-gradient(top,#ddd 0,#c4c4c4 96%,#b7b7b7 100%);background:linear-gradient(top,#ddd 0,#c4c4c4 96%,#b7b7b7 100%);text-shadow:0 1px 0 #fff}.gray-button{border:1px solid #bbb;color:#323232;text-shadow:0 1px 0 #fff;background-color:#fff;background:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#bbb),color-stop(.96,#ddd));background:-webkit-linear-gradient(top,#fff 0,#ddd 96%,#bbb 100%);background:-moz-linear-gradient(top,#fff 0,#ddd 96%,#bbb 100%);background:-ms-linear-gradient(top,#fff 0,#ddd 96%,#bbb 100%);background:-o-linear-gradient(top,#fff 0,#ddd 96%,#bbb 100%);background:linear-gradient(top,#fff 0,#ddd 96%,#bbb 100%);-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;-webkit-box-shadow:inset 0 1px 0 #fff;-moz-box-shadow:inset 0 1px 0 #fff;-ms-box-shadow:inset 0 1px 0 #fff;-o-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff;min-height:40px;min-height:30px\\9}.gray-button.disabled{background:#ddd;color:#969696;-webkit-box-shadow:none;-moz-box-shadow:none;-ms-box-shadow:none;-o-box-shadow:none;box-shadow:none}.buttons-content{text-align:center}.buttons-content a{width:45%;display:inline-block;margin:0 .5%}.new-topic-button:before,.newest-more-button:before{content:"p";vertical-align:middle;font-size:20px;line-height:20px}.popular-more-button:before{content:"W";vertical-align:middle;font-size:22px;line-height:22px}.pager-button{display:table;margin:20px auto;background:#f6f6f6;width:auto;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px}.pager-button:after{content:"";display:block;clear:both}.pager-button .button{display:table-cell;vertical-align:middle;color:#323232;text-align:center;line-height:1.2;border:none}.pager-button .selected{width:260px;font-size:14px}.pager-button .back-button{padding:10px;margin:0;border-right:1px solid #ddd;width:40px;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;-ms-border-radius:3px 0 0 3px;-o-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.pager-button .back-button:before{content:"I"}.pager-button .next-button{padding:10px;margin:0;border-left:1px solid #ddd;width:40px;-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;-ms-border-radius:0 3px 3px 0;-o-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.pager-button .next-button:before{content:"R"}.report-buttons-content{display:block;float:right}.report-button,.report-violation-button{font-size:12px;display:inline;width:auto;padding:0;margin:0 0 0 10px;border:none;background:0 0;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;color:#ddd}.report-button:hover,.report-violation-button:hover{color:#969696}.community-list .siblings:hover,.community-list .title:hover{text-decoration:none}.report-button.disabled:hover,.report-violation-button.disabled:hover{text-decoration:none;color:#ddd}.closed-user-report-content{margin-top:15px}.button-n3ds{background-color:#ce181e}.button-n3ds:hover{background:#c0161c}.button-wiiu{background-color:#1193c4}.button-wiiu:hover{background:#1088b6}.list>a,.list>div,.list>li,.list>span{padding:15px;border-top:1px solid #ddd;background-repeat:no-repeat}.list>a:after,.list>div:after,.list>li:after,.list>span:after{content:"";display:block;clear:both}.list>a,.list>span{display:block;padding-left:52px;color:#323232;font-weight:700}.list.info-reply-list+.reply-list li:first-child{border-top:1px solid #ddd}.list div#user-page-no-content.none+div{border:0}.list .toggle-button{margin-top:7px;margin-left:10px;float:right;position:relative}.list .toggle-button .button{width:100px;padding:0 30px 0 0;height:36px;line-height:34px}.list .toggle-button .button:before{color:#fff;line-height:34px;position:absolute;top:0;right:0;display:block;width:30px;height:34px;border:1px solid #ddd;border-left:none;border-bottom-color:#ccc;-webkit-box-shadow:inset 0 .5px 0 rgba(255,255,255,.9);-moz-box-shadow:inset 0 .5px 0 rgba(255,255,255,.9);-ms-box-shadow:inset 0 .5px 0 rgba(255,255,255,.9);-o-box-shadow:inset 0 .5px 0 rgba(255,255,255,.9);box-shadow:inset 0 .5px 0 rgba(255,255,255,.9);-webkit-border-top-right-radius:5px;-moz-border-top-right-radius:5px;-ms-border-top-right-radius:5px;-o-border-top-right-radius:5px;border-top-right-radius:5px;-webkit-border-bottom-right-radius:5px;-moz-border-bottom-right-radius:5px;-ms-border-bottom-right-radius:5px;-o-border-bottom-right-radius:5px;border-bottom-right-radius:5px}.list .toggle-button .unfollow-button:before{background-color:#969696;content:"x"}.list .toggle-button .follow-button:before{color:#0080ff;content:"Q"}.list .toggle-button .friend-button:before{color:#0080ff;content:"F"}.list .toggle-button .unfriend-button:before{color:#0080ff;content:"f"}.list .toggle-button .follow-done-button:before{color:#0080ff;content:"v"}.list .toggle-button .follow-done-button:hover{-webkit-box-shadow:none;-moz-box-shadow:none;-ms-box-shadow:none;-o-box-shadow:none;box-shadow:none}.community-list>li{padding:0}.filtering-label,.news-label{display:block;min-height:70px;padding:0 0 0 60px!important;font-size:24px;line-height:28px;color:#323232;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAkCAYAAADsHujfAAAD2klEQVR4AbXUA7TjShwG8G+S2/Zmbdv2Hj3btm3btm2tbdu27fqyVjAvk+7Joi8vvZivDv79DckNP7a51yGRbwSR1CMEliECAdUolDRdkkloz01+1r0F1Rhy36QO5bWbOurpGOuLmJAAmkKRjmqIBuVQvEQ5b+KT1YchT6/oQuu2dEB0ENiFaoCa0RAvUVHuzoSiAfm8iU95qgVDnt/QldZuWoD8wzAUsWIF5ccYRjlv0tNVx5DnNnRhELPFbcTBuKPZ95DEOjgUX4dRJU9BFmO2mMlPe6uEIc+u72xClBTFW+3XQiqoY14w1fsx1meGQygg/40pURA6JoeiQeW5yU95h1Qa8sy6TiYkUabiq377lgC4jhASopSeO//oH7MWpr6UHJJgOUzsvrBXRsSv3DfpicphyNNrO5qQeKmK+EHp9T9u3v4JmObHFvU692i7D81KGjtqCLAKW03JkIqQW8f4GMY3pBKQ9rTWcUg6prFu1lunDFFlelSqJ9xTv62zXa0mou2q0lSGMe43MJOf8FcIQ55c045BzGKZqGZ0taoArtoCpHoiHIU6IuuwxaROwkx5MpA3hjyxuq0OEU/dK2RqfIoOQBBtERYYxcBMfSqYF4Y8vroNZV1fnTEx7ixm2lNFthjyy84H6EHHAhAB1YyBjlENTNSn3jft6eL/xZDixDH65eHLoDijAPhgwqxndMyMZ0osMYRSOtkd23ntz56bkBF5YTQDE/UzTOkQK0g7AJvdsR31fnTfyBfjyQ7TrGfLczCEvemYfgAWJ5Rwve8P3YCAtgsgfDARj5rFPMcwp0FOwcjhet8euB5BupMLJh1mw6QawzT7+fCQ0yAmpt5xTL9vDlyLgMYXEwto9815PjLEhFhhvt5/DVdMxKMZPTP3hegQ8y+sMF/uu1rH7OCKifm1+4zytpi9V8LPDUMRPqZmS9th4gyz5wr4KoChGtC31hVoVdgLklgXbWr0sbwuED7yjlE2X8wXey6HT91uj6FAc9Ib7/VdiXxjCzkd8/nuy2wxrMvba2fizcGzpwDYCiAEYAusE8oHkoP5bNelOmabJUaTgWbJQbFPzl1Wu/p6xALzyc5LLDFqBjir8LEjD/X/uj0HyOmYkIHxqltzqihJ4GzpsSMPD/yWGyQH8/GOi3MwcgLog+uXvnr2mHN5QnIwH22/yMSYEHLD0tf4Q3IxH26/EF7FwJiQ188Zyxligflg+wUGRk4CfQ3IOP4QS8y2C3A4sgX9hBuXvn4uV4g95p9dz6MxOo+9td/rt3KE2GMA9APwHiHkXb4Qe8w3AKbqkCnIM/8C+TLMZcAMCYoAAAAASUVORK5CYII=) 20px 21px no-repeat,-webkit-gradient(linear,left top,left bottom,from(#fff),color-stop(.5,#fff),color-stop(.8,#f6f6f6),color-stop(.96,#f5f5f5),to(#bbb));border-radius:12px;-webkit-border-radius:12px;box-shadow:0 3px 10px rgba(0,0,0,.6);-webkit-box-shadow:0 3px 10px rgba(0,0,0,.6)}.filtering-label p,.news-label p{display:box;display:-webkit-box;box-align:center;-webkit-box-align:center;width:700px;min-height:70px}.header-news-button,.news-button{background:url(data:image/png;base64,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) 15px center no-repeat}.news-label{padding:0!important;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAaCAQAAAAUYRSMAAABbklEQVR4AW2KJXTbYRwAPx1V/0ZeTdfbednIYceMZsy8MJcDDRfDNGZQUZkZ86Zu3/vnF86dvFPHNpzKnOMKV+sXNqphnHpygyniJJn9cs88ZDinc44qNYoksA8ul4gZWUuJFI7+xV+fp0xVNJZTPcN3V7K+rENFLOrF5eoa2IJl+d0CBUpiQS+ezoIJvSy+S5OnKOZJyyIwhmXhXZIseTFLEveTcyM9y6NMlBWyYoYk3ifne5cHmTDLZMRVUvgyqgOjWGqZIIusiMvEUYIsqxkLUZbaLvYOu83HuEuEhbbFRlfeZT7CVSaJkxIzH/+4Otl1lGtMECMprurMXsk7Xce4wSTzxMXKOywcw2TkcdcRyVGx3MnbRsbDR7nOBBHmxZLOjKkmO4wcIERYfPhQcpN9XNY5SEh8lUGycAgLcwTFlzqzSXVzpWFhljlt+J+RR1Uv31yuho8Z5r+/n+vNAnuxiFd7s4BJljOsVUP4D0R1qRL4an5FAAAAAElFTkSuQmCC) 920px center no-repeat,-webkit-gradient(linear,left top,left bottom,from(#fff),color-stop(.5,#fff),color-stop(.8,#f6f6f6),color-stop(.96,#f5f5f5),to(#bbb))}#header-news{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAaCAQAAAAUYRSMAAABbklEQVR4AW2KJXTbYRwAPx1V/0ZeTdfbednIYceMZsy8MJcDDRfDNGZQUZkZ86Zu3/vnF86dvFPHNpzKnOMKV+sXNqphnHpygyniJJn9cs88ZDinc44qNYoksA8ul4gZWUuJFI7+xV+fp0xVNJZTPcN3V7K+rENFLOrF5eoa2IJl+d0CBUpiQS+ezoIJvSy+S5OnKOZJyyIwhmXhXZIseTFLEveTcyM9y6NMlBWyYoYk3ifne5cHmTDLZMRVUvgyqgOjWGqZIIusiMvEUYIsqxkLUZbaLvYOu83HuEuEhbbFRlfeZT7CVSaJkxIzH/+4Otl1lGtMECMprurMXsk7Xce4wSTzxMXKOywcw2TkcdcRyVGx3MnbRsbDR7nOBBHmxZLOjKkmO4wcIERYfPhQcpN9XNY5SEh8lUGycAgLcwTFlzqzSXVzpWFhljlt+J+RR1Uv31yuho8Z5r+/n+vNAnuxiFd7s4BJljOsVUP4D0R1qRL4an5FAAAAAElFTkSuQmCC) 1160px center no-repeat,-webkit-gradient(linear,left top,left bottom,from(#fff),color-stop(.5,#fff),color-stop(.8,#f6f6f6),color-stop(.96,#f5f5f5),to(#bbb))}#header-news .close-button{display:block;float:right;width:80px;height:70px;border-left:2px solid #fff;-webkit-box-shadow:-2px 0 0 #ddd;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAiCAQAAACUuxN0AAACqUlEQVR4AY2QJ3TcTBSFBxuJnzRkvDS9b3Pb3ou2V8kdpaJQYyFX5m4jI6UzW86fP9gkPfJxYUI371jeSN4dl/ehmXe/q8Ja0ysOqD6176VHYGeMV+h76VMH1F6xbeGbTCCPAtIIaF7hdD2gpVGgZAK+SdvCPymiiRFikNZhfgXpYa1ACcpRWoS/VeEjXcYYxo8YQhEhrfNDPEJIK9LWTI2RIZpv0S9mIGGUrlrQWyBoVtj04NHTrdQoWRn0iyym1jFCRzsy8lTh/lfhJj0PuS01gjpiKpPeyBjpQEIOAaow9YCWg8RJyZDesKVJCcOdmL9Jcwkuwa+JdOJlJCxNMtTWVBlDHBrIIqgFtSwa3L2MNRU1BgeUNVXCIIc6ikSdu5NAugIHYww3oKyqDUgcGgT/fpV03GDmmBV1NC9I3a5bFStqDY0LUMOKXbdXLKsVWp9NBcuWzqsoo3oGZb5ur5j7WEKFD0qY+8jVrfnirOt5CvLJo65/cZ6h3xU8WpRiRT60icKj3RUYf+4ILi2ELApnkEUILu2OwNMdzp0g0sidDSWCcO7ccXTorr0gUhAvQIoqXHsnKm6THqJF9oKkEKKK262KWw7nXgAJpDkUjILBu08gAOfeLapgN6893vMjjhQH0dhe2F4QDc6ODD8e7928xh5M+uiQ7IT0rQVMYGKLKjh7snx4MMn63oeR4JA19csEVWQNXiaMvvdsdCNCXe1kjnVGY1ZkjM5UBKMb7MfTih7DSdI23apIG+25iv7jKUNkd7KqR2GRMjYt3VaxuZAy7LmqvjuJCEMXnuqTFT0CkyRHtyqSRitX0fVJPEUXrcwK+VuYrsVDS+dXiIdtOjuugLK5oK5DsXR+BRR1nR6itHSrYhQK8crS+RWUUEydt+xmFxh02x/yFy98PdyB7+HaAAAAAElFTkSuQmCC) center center no-repeat}#header-news .header-news-button{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;line-height:70px;padding:0 50px 0 65px;font-size:24px;color:#323232}.community-list .news-community-badge{background:#0080ff;color:#FFF;display:inline-block;font-size:10px;margin:0;position:relative;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px}.community-list .community-list-body{display:table;width:100%;padding:10px 0}.community-list .icon-container{float:none;display:table-cell;vertical-align:middle;line-height:0;padding:0 0 0 10px}.community-list .icon-container .icon{border:1px solid #ddd;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px}.community-list .user-community .icon-container .icon{width:36px;height:36px}.community-list .title{display:block;font-size:16px;font-weight:700;color:#323232;margin-bottom:2px;margin-top:3px;line-height:1.2;position:relative}.community-list .text{color:#969696;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;word-wrap:normal;display:block}.community-list .body{margin-left:0;display:table-cell;vertical-align:middle;padding:5px 15px 0 10px;word-wrap:break-word;max-width:176px}.community-list .community-list-cover,.community-list.other-communities-list .text{display:none}.community-list .siblings{display:table-cell;vertical-align:middle;padding:0 5px;width:40px;color:#969696;text-align:center;border-left:1px solid #ddd;z-index:2}.card,.community-card-list>li{border:1px solid rgba(0,0,0,.1);-webkit-box-shadow:0 1px 0 rgba(0,0,0,.2);-moz-box-shadow:0 1px 0 rgba(0,0,0,.2);-ms-box-shadow:0 1px 0 rgba(0,0,0,.2);-o-box-shadow:0 1px 0 rgba(0,0,0,.2);overflow:hidden}.community-list .siblings:before{content:'l';font-size:30px;line-height:56px}.community-card-list{margin-bottom:3px}.community-card-list:after{content:"";display:block;clear:both}.community-card-list>li{background:#fff;box-shadow:0 1px 0 rgba(0,0,0,.2);-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;margin:0 1% 8px 0;width:49.5%;float:left;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box}.tutorial-window,form.search{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box}.community-card-list>li:after{content:none}.community-card-list>li:nth-child(2n){margin-right:0}.community-card-list>li:nth-child(2n+1){clear:both}.community-card-list .community-list-body{padding:0}.community-card-list .icon-container{padding:10px 0 10px 10px}.community-card-list .body{padding:5px 10px 0}.community-card-list .community-list-cover{display:block}.community-card-list .title{overflow:hidden;max-height:2.4em;-webkit-line-clamp:2;display:-webkit-box;-webkit-box-orient:vertical}.community-small-list .icon-container{width:50px;height:50px}.community-small-list .icon-container .icon{width:48px;height:48px}.community-small-list .body{padding:10px 15px 10px 10px}.device-new-community-list .community-list-cover,.special-community-list .community-list-cover{display:none}.community-list-cover{width:100%;min-height:131px;display:block;border-bottom:1px solid #ddd;-webkit-border-radius:3px 3px 0 0;-moz-border-radius:3px 3px 0 0;-ms-border-radius:3px 3px 0 0;-o-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0}.feeling-selector,.list-content-with-icon-and-text .user-profile-memo-content img{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px}.post-list-loading{text-align:center}.post-list-loading img{width:22px;height:22px}.list-content-with-icon-and-text li{padding:15px;border-top:1px solid #ddd;background-repeat:no-repeat}.list-content-with-icon-and-text li:after{content:"";display:block;clear:both}.list-content-with-icon-and-text .title{margin-bottom:2px;margin-top:6px;display:block}.list-content-with-icon-and-text .text{color:#969696;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;word-wrap:normal;display:block;height:1.6em}.list-content-with-icon-and-text .text.placeholder{color:#999!important}.list-content-with-icon-and-text .text.type-memo{font-style:italic}.list-content-with-icon-and-text .text.my:before{content:"b";font-family:MiiverseSymbols;margin-right:5px}.list-content-with-icon-and-text .timestamp{float:right;margin:0 5px;color:#969696}.list-content-with-icon-and-text .body{margin-left:66px}.list-content-with-icon-and-text .nick-name{font-size:16px;font-weight:700;color:#323232}.list-content-with-icon-and-text .nick-name a{color:#323232}.list-content-with-icon-and-text .id-name{font-size:12px;line-height:14px;padding:1px 3px;margin-top:2px;color:#969696;margin-right:5px}.list-content-with-icon-and-text .toggle-button{float:right;margin:10px 0 0 10px}.list-content-with-icon-and-text .user-profile-memo-content{margin-top:10px;margin-bottom:5px;text-align:center;margin-right:62px}.list-content-with-icon-and-text .user-profile-memo-content img{width:100%;max-width:320px;vertical-align:bottom;border-radius:5px}select{min-width:80%;margin:0;font-size:16px;border:1px solid #bbb}form.search{margin:0 0 15px;text-align:left;background:#fff;border:3px solid #e0e0e0;width:100%;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;-ms-box-sizing:border-box;box-sizing:border-box}form.search input[type=text]{-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;appearance:none;box-shadow:none;border:none;font-size:16px;width:86%;height:32px;padding:0 0 0 2%;line-height:32px;margin:0;vertical-align:middle;display:inline-block}.textarea,.topic-title-input,form.search input[type=submit]{-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;font-size:16px}form.search input[type=text]:focus{outline:0}form.search input[type=submit]{appearance:none;background:#fff;border:none;color:#646464;font-family:MiiverseSymbols,sans-serif!important;font-weight:400!important;height:32px;margin:0;padding:0;text-align:center;vertical-align:middle;width:12%;float:right;display:inline-block}#post-form{margin:15px;position:relative}#post-form.folded{margin:15px 15px 10px}#post-form.folded .textarea-text{height:3.4em;line-height:1.2em}.textarea-memo img{margin-top:30px;margin-bottom:10px}#post-form.folded .feeling-selector,#post-form.folded .file-button-container,#post-form.folded .form-buttons,#post-form.folded .language-bodies,#post-form.folded .language-id-selector,#post-form.folded .multi-language-selector,#post-form.folded .open-topic-post-existing-warning,#post-form.folded .region-ids,#post-form.folded .select-from-album-button,#post-form.folded .spoiler-button,#post-form.folded .textarea-menu,#post-form.folded .topic-categories-container,#post-form.folded .url-form,#post-form.folded.body-folded .textarea-text{display:none}#post-form+#community-post-list .list>div:first-child{border-top:1px solid #ddd}.tutorial-window{background-color:rgba(255,255,255,.9);width:100%;display:-webkit-box;display:-moz-box;display:-ms-box;display:-o-box;display:box;-webkit-box-align:center;-moz-box-align:center;-ms-box-align:center;-o-box-align:center;box-align:center;-ms-box-sizing:border-box;box-sizing:border-box}.guest #about-inner,.tutorial-window .content{-webkit-box-sizing:border-box;-o-box-sizing:border-box;-moz-box-sizing:border-box}.tutorial-window .content{border:2px solid #0080ff;padding:25px 20px;-webkit-border-radius:10px;-moz-border-radius:10px;-ms-border-radius:10px;-o-border-radius:10px;border-radius:10px;-ms-box-sizing:border-box;box-sizing:border-box;width:100%}.tutorial-window .window-bottom-buttons{margin-top:12px}.open-topic-post-existing-warning{height:100%;left:0;top:0;position:absolute;z-index:2}.open-topic-post-existing-warning+.textarea-container .textarea{margin:0 0 -10px;outline:0}.textarea,.topic-title-input{appearance:none;resize:vertical;width:96%;padding:1.8%;margin:0 0 10px;border:1px solid #969696;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;-webkit-box-shadow:inset 0 2px 6px rgba(0,0,0,.12),0 1px 0 #fff;-moz-box-shadow:inset 0 2px 6px rgba(0,0,0,.12),0 1px 0 #fff;-ms-box-shadow:inset 0 2px 6px rgba(0,0,0,.12),0 1px 0 #fff;-o-box-shadow:inset 0 2px 6px rgba(0,0,0,.12),0 1px 0 #fff;box-shadow:inset 0 2px 6px rgba(0,0,0,.12),0 1px 0 #fff}.feeling-selector input,.spoiler-button input{-webkit-appearance:none;-ms-appearance:none;-webkit-opacity:0;-moz-appearance:none}.textarea.with-image,.topic-title-input.with-image{padding-left:23.8%;width:74%}.textarea{height:5.6em}.feeling-selector{height:61px;margin-bottom:15px;text-align:center;background-color:#646464;background:-webkit-gradient(linear,left top,left bottom,from(#646464),to(#969696));background:-webkit-linear-gradient(top,#646464 #969696);background:-moz-linear-gradient(top,#646464 #969696);background:-ms-linear-gradient(top,#646464 #969696);background:-o-linear-gradient(top,#646464 #969696);background:linear-gradient(top,#646464 #969696);border-radius:5px}.file-button-container,.topic-categories-container{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px}.feeling-selector .feeling-button{font-size:45px;font-weight:400!important;color:#FFF;text-shadow:0 1px 6px #000;-ms-filter:progid:DXImageTransform.Microsoft.DropShadow(offx=0px, offy=1px, color=#000000);line-height:60px;display:inline-block;width:15%;position:relative}.feeling-selector .feeling-button.checked{color:#0bf}.feeling-selector input{-o-appearance:none;appearance:none;position:absolute;top:0;left:0;width:100%;height:100%;margin:0;outline:0;-moz-opacity:0;-ms-opacity:0;-o-opacity:0;opacity:0}.ie8-earlier .feeling-selector input{display:inline;height:0;width:0;outline:0}.ie8-earlier .feeling-selector .feeling-button.changing:before{content:none}.feeling-selector .feeling-button-normal:before{content:"C"}.feeling-selector .feeling-button-happy:before{content:"H"}.feeling-selector .feeling-button-like:before{content:"L"}.feeling-selector .feeling-button-surprised:before{content:"O"}.feeling-selector .feeling-button-frustrated:before{content:"G"}.feeling-selector .feeling-button-puzzled:before{content:"U"}.topic-categories-container{position:relative;margin:5px 0 15px;background:#fff;font-size:14px;font-weight:700;text-align:center;border-radius:5px;-webkit-box-shadow:0 1px 0 #fff;-moz-box-shadow:0 1px 0 #fff;-ms-box-shadow:0 1px 0 #fff;-o-box-shadow:0 1px 0 #fff;box-shadow:0 1px 0 #fff;width:100%;padding:0}.topic-categories-container .tag-categories-icon{position:relative;display:block;float:left;padding:3px 10px 1px;border-radius:6px;background:#e8316e;height:25px;width:27px}.topic-categories-container .tag-categories-icon:before{position:absolute;left:16px;top:2px;content:"t";font-size:19px;color:#fff}.topic-categories-container .tag-categories-icon:after{left:100%;top:50%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none;border-color:rgba(213,115,180,0);border-left-color:#e8316e;border-width:6px;margin-top:-6px}.ie8-earlier .topic-categories-container.changing:before{content:none}.topic-categories-container select{display:block;margin-left:60px;min-width:532px;height:30px}.language-id-selector:not(.none)+.topic-categories-container+.topic-title-input{display:none}.post-count-container{text-align:right;color:#969696;font-size:11px;margin-bottom:3px}.dialog .select-content,.dialog .window-title,.form-buttons,.spoiler-button{text-align:center}.post-count-container .remaining-today-post-count{color:#646464;font-size:13px;padding:0 7px 0 3px}.post-form-footer-options{display:table;width:100%;margin:0 0 15px}.post-form-footer-options .post-form-footer-option-inner{display:table-cell;vertical-align:middle}.post-form-footer-options .post-form-select-from-album{width:60%;padding-right:10px}.post-form-footer-options .select-from-album-button{width:100%;font-size:14px}.post-form-footer-options .select-from-album-button:before{content:"X";vertical-align:middle;font-size:20px;line-height:20px}.spoiler-button{position:relative;display:block;margin:0;border:1px solid #ddd;background:#fff;font-size:14px;font-weight:700;padding:10px 0;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;-webkit-box-shadow:0 1px 0 #fff;-moz-box-shadow:0 1px 0 #fff;-ms-box-shadow:0 1px 0 #fff;-o-box-shadow:0 1px 0 #fff;box-shadow:0 1px 0 #fff}.spoiler-button:before{content:"v";font-size:20px;line-height:20px;color:#ddd}.spoiler-button input{-o-appearance:none;appearance:none;position:absolute;top:0;left:0;width:100%;height:100%;margin:0;-moz-opacity:0;-ms-opacity:0;-o-opacity:0;opacity:0}.spoiler-button.checked,.spoiler-button.checked:before{color:#0080ff}.form-buttons{margin-top:20px}.form-buttons input{display:inline-block}.form-buttons .gray-button{margin-right:10px}.warning-content-forward .age-gate p{padding:20px 0}.warning-content-forward .age-gate .select-content{margin:0 0 30px}.warning-content-forward .age-gate .select-button{width:90px;display:inline-block}.warning-content-forward .age-gate .year-select{width:110px}.warning-content-forward .age-gate select{height:28px}#community-content{padding-bottom:10px;overflow:hidden}.url-form{width:96%;padding:1.8%;border:1px solid #969696;font-size:16px;border-radius:5px;box-shadow:inset 0 2px 6px rgba(0,0,0,.12),0 1px 0 #fff}.file-button-container{margin-top:15px;background:#f6f6f6;padding:1.8%;display:block;margin-bottom:15px;border-radius:5px}.language-id-selector,.multi-language-selector,.region-ids,.textarea-container .community-container{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;background:#f6f6f6}.input-label{display:block;color:#646464}.input-label span{font-size:12px;color:#969696}input.file-button{font-size:16px;color:#646464;margin-top:5px;background:#f6f6f6;width:96%}.language-id-selector,.multi-language-selector,.region-ids{margin:15px 0 10px;padding:1.8%;display:block;border-radius:5px}.language-id-selector:not(.none)+.textarea-container .album-image-preview{position:static;text-align:center;width:100%;margin:12px 0 0}.language-id-selector:not(.none)+.textarea-container .album-image-preview img{height:80px;width:auto}.region-ids label{margin:0 5px 5px 0;display:inline-block}#reply-form{margin:15px 15px 20px}.textarea-container{position:relative}.textarea-container .community-container{padding:5px;margin-bottom:5px;border-radius:5px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;word-wrap:normal}.textarea-container .community-container .community-icon{width:28px;height:28px;vertical-align:middle;margin-right:4px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px}.textarea-container .album-image-preview{position:absolute;left:2%;top:55px;width:20%}.textarea-container .album-image-preview img{height:auto;width:100%;vertical-align:bottom;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px}.community-post-list .textarea-container .community-container,.community-top .textarea-container .community-container{display:none}.community-post-list .textarea-container .album-image-preview,.community-top .textarea-container .album-image-preview{top:15px}.dialog,.mask{position:fixed;top:0;left:0}.mask{right:0;bottom:0;margin:0;padding:0;border:0;background:url(/s/img/mask-bg-white.png);background:rgba(240,240,240,.6);z-index:31;-webkit-tap-highlight-color:transparent}.dialog{display:table;width:100%;height:100%;z-index:30}.dialog.active-dialog{z-index:32}.dialog.track-error .window-body{padding:30px 25px 40px}.dialog .dialog-inner{display:table-cell;vertical-align:middle}.dialog .window{width:615px;margin:auto;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;-webkit-box-shadow:0 2px 10px rgba(0,0,0,.5);-moz-box-shadow:0 2px 10px rgba(0,0,0,.5);-ms-box-shadow:0 2px 10px rgba(0,0,0,.5);-o-box-shadow:0 2px 10px rgba(0,0,0,.5);box-shadow:0 2px 10px rgba(0,0,0,.5)}#sidebar-cover,.dialog .window-title{-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;-ms-border-radius:5px 5px 0 0;-o-border-radius:5px 5px 0 0}.dialog .window-title{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;word-wrap:normal;height:34px;padding:0 10px;border-top:1px solid #78c9ff;border-bottom:1px solid #0080ff;background:#0080ff;color:#fff;font-size:16px;font-weight:700;line-height:34px;text-shadow:0 -1px 0 rgba(0,0,0,.3);border-radius:5px 5px 0 0}.dialog .window-body{padding:10px 10px 20px;-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;-ms-border-radius:0 0 5px 5px;-o-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px;background:#fff;border:1px solid #ddd;border-top:none}.dialog .select-button-content,.dialog .window-body-content{padding:10px 0;display:inline-block}.dialog .textarea{margin:15px 0 0}.dialog .form-buttons{margin-top:10px}.dialog p.description{text-align:left;margin:0 0 10px}.dialog span.note{font-size:12px;color:#969696;display:block}.dialog .post-id,.dialog .violator-id{margin:10px 0;color:#969696;font-size:12px}#disabled-report-violation-notice .window-body-inner{text-align:center}#disabled-report-violation-notice .window-body-inner p{display:inline-block;margin:10px auto 5px;text-align:left}#official-tags-page .window-body,.dialog#edit-post-page .window-body{text-align:center}#official-tags-page ul{margin:10px 0 15px}#official-tags-page li{display:inline-block;margin:5px;max-width:460px}#official-tags-page li a{color:#00acca;width:auto;padding:5px 15px;font-size:16px;text-align:left}#official-tags-page li a:before{content:"t";font-size:19px;vertical-align:middle;color:#00acca;margin-right:5px}.card{background:#fff;box-shadow:0 1px 0 rgba(0,0,0,.2);-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px}#guide-menu,.sidebar-container{-ms-box-shadow:0 1px 0 rgba(0,0,0,.2)}.sidebar-container{margin:0 0 15px;background:#fff;border:1px solid rgba(0,0,0,.1);overflow:hidden;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.2);-moz-box-shadow:0 1px 0 rgba(0,0,0,.2);-o-box-shadow:0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 0 rgba(0,0,0,.2);-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px}.sidebar-container .report-buttons-content{padding:0 10px 10px;margin:-5px 0 0}.sidebar-container .shop-buttons-container .button-shop{margin-bottom:10px}.sidebar-container .shop-buttons-notice{margin:0 15px 15px;font-size:12px;color:#969696}.sidebar-container h4 a{clear:both;background:url(/s/img/icon-arrow-right.png) 97.5% center no-repeat;color:#323232;-webkit-background-size:9px 15px;-moz-background-size:9px 15px;-ms-background-size:9px 15px;-o-background-size:9px 15px;background-size:9px 15px;display:table;width:100%;padding:0;position:relative}.sidebar-container h4 a:hover{background-color:#f9f9f9}.sidebar-container h4 a:before{font-size:20px;line-height:20px;vertical-align:middle;padding:0 8px 0 12px;width:27px;text-align:center;display:inline-block;position:absolute;top:50%;margin-top:-12px}.sidebar-container h4 span{display:table-cell;padding:12px 30px 12px 47px}.sidebar-container h4 .favorite-community-button:before{content:"s";color:#f79726}.sidebar-container .community-list .icon-container{width:50px;height:50px}.sidebar-container .community-list .icon-container .icon{width:48px;height:48px}.sidebar-container .community-list .user-community .icon-container{padding:0 0 0 10px}.sidebar-container .community-list .user-community .icon-container .icon,.sidebar-container .community-list .user-community .icon-container .user-icon{width:32px;height:32px}.sidebar-container .community-list .title{background-image:none;border:none;font-size:14px;padding:0}.sidebar-container .community-list .text{display:none}.sidebar-container .more-button{padding:8px 0;text-align:center;background-image:none}#sidebar-cover{min-height:120px;background-repeat:no-repeat;background-position:center;background-size:cover;border-bottom:1px solid #ddd;display:block;border-radius:5px 5px 0 0}#sidebar-cover img{display:block;width:100%;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;-ms-border-radius:5px 5px 0 0;-o-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.sidebar-setting li{border-top:1px solid #ddd}.sidebar-setting li:first-child{border:none}.sidebar-setting a{clear:both;background:url(/s/img/icon-arrow-right.png) 97.5% center no-repeat;color:#323232;-webkit-background-size:9px 15px;-moz-background-size:9px 15px;-ms-background-size:9px 15px;-o-background-size:9px 15px;background-size:9px 15px;border-top:1px solid #ddd;display:block;width:100%;padding:0;position:relative}.sidebar-setting a:hover{background-color:#f9f9f9}.sidebar-setting a:first-child{border:none}.sidebar-setting a:before{font-size:20px;line-height:20px;vertical-align:middle;padding:0 8px 0 12px;width:27px;text-align:center;position:absolute;top:50%;margin-top:-10px;display:inline-block}.sidebar-setting a>span{padding:12px 30px 12px 47px;vertical-align:middle;display:block}.sidebar-setting a.with-count>span{padding-right:85px}.sidebar-setting a.with-count>.post-count{width:auto;position:absolute;right:0;top:0;padding-left:0;padding-right:30px}.sidebar-setting a.with-count>.post-count span{font-size:12px;line-height:12px;background-color:rgba(0,0,0,.05);color:#969696;padding:4px 8px;min-width:30px;display:inline-block;text-align:center;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px}.sidebar-setting a.selected{background-color:#f9f9f9}.sidebar-setting a.selected span{font-weight:700}.sidebar-setting .sidebar-menu-setting:before{content:"Y";color:#0080ff}.sidebar-setting .sidebar-menu-info:before{content:"w";color:#0080ff}.sidebar-setting .sidebar-menu-support:be fore{content:"h";color:#0080ff}.sidebar-setting .sidebar-menu-guide:before{content:"g";color:#0080ff}.sidebar-setting .sidebar-menu-diary:before{content:"%";color:#04c9db}.sidebar-setting .sidebar-menu-artwork:before{content:"M";color:#fcc735}.sidebar-setting .sidebar-menu-topic:before{content:"$";color:#e8316e;font-size:23px}.sidebar-setting .sidebar-menu-in_game:before{content:"&";color:#0080ff}.sidebar-setting .sidebar-menu-relation:before{content:"l";color:#0080ff}.sidebar-setting .sidebar-menu-post:before{content:"p";color:#0080ff}.sidebar-setting .sidebar-menu-album:before{content:"X"}.sidebar-setting .sidebar-menu-empathies:before{content:"e";color:#0080ff}#sidebar-profile-body{padding:0 15px 10px}#sidebar-profile-body:after{content:"";display:block;clear:both}#sidebar-profile-body .icon-container{width:74px;height:74px;float:left;position:relative}#sidebar-profile-body .icon{width:72px;height:72px;border:1px solid #ddd;margin-top:0;background-color:#fff}#sidebar-profile-body .user-organization{margin:15px 0 -10px 85px;line-height:1.2em}#sidebar-profile-body .nick-name{color:#323232;font-size:18px;font-weight:700;display:block;margin:15px 0 0 85px;line-height:1.2;padding-top:8px}#sidebar-profile-body .user-organization+.nick-name{margin-top:2px}#sidebar-profile-body .id-name{color:#969696;font-size:14px;margin-left:85px;font-weight:400}#sidebar-profile-body.with-profile-post-image .user-organization{margin-top:10px}#sidebar-profile-body.with-profile-post-image .icon-container{margin-top:-20px}#sidebar-profile-body.with-profile-post-image .nick-name{padding-top:0;margin-top:10px}#sidebar-profile-status{background:#f6f6f6;display:table;width:100%;-webkit-border-radius:0 0 3px 3px;-moz-border-radius:0 0 3px 3px;-ms-border-radius:0 0 3px 3px;-o-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px}#sidebar-profile-status li{font-size:10px;text-align:center;display:table-cell;min-width:70px}#sidebar-profile-status li:last-child a span{border-right:none}#sidebar-profile-status li a{color:#9f9f9f;display:block;padding:10px 0}#sidebar-profile-status li a>span{display:block;border-right:1px solid #ddd}#sidebar-profile-status li a:hover{text-decoration:underline}#sidebar-profile-status li a.selected{font-weight:700;background-image:url(/s/img/bg-select.png);background-size:6px auto}#sidebar-profile-status .number{color:#323232;font-size:18px;display:block;margin-bottom:-2px}.general-sidebar #sidebar-cover img,.user-sidebar #sidebar-cover img{display:none}.user-sidebar .button:before{display:inline-block;margin-top:-2px;margin-right:5px;font-size:16px;vertical-align:middle}.user-sidebar #edit-profile-settings .button:before{content:'Z'}.user-sidebar .unfollow-button{padding-right:35px;position:relative}.user-sidebar .unfollow-button:before{background-color:#969696;content:"x";position:absolute;right:0;top:0;height:100%;margin:0;width:35px;color:#fff;line-height:45px;-webkit-border-radius:0 5px 5px 0;-moz-border-radius:0 5px 5px 0;-ms-border-radius:0 5px 5px 0;-o-border-radius:0 5px 5px 0;border-radius:0 5px 5px 0}.user-sidebar .follow-button:before{color:#0080ff;font-size:13px;content:"Q"}.user-sidebar .friend-button:before{color:#0080ff;font-size:15px;content:"F"}.received-request-button{float:right}.user-sidebar .friend-button.unf:before{content:"f"!important}.user-sidebar .unfriend-button:before{color:#0080ff;font-size:15px;content:"f"}.user-sidebar .follow-done-button:before{color:#0080ff;content:"v"}.user-sidebar .follow-done-button:hover{-webkit-box-shadow:none;-moz-box-shadow:none;-ms-box-shadow:none;-o-box-shadow:none;box-shadow:none}#community-eyecatch-main>div,#guide-menu{overflow:hidden;-o-box-shadow:0 1px 0 rgba(0,0,0,.2)}.sidebar-profile{padding:20px 15px}.sidebar-profile .profile-comment{color:#646464;background-color:#f6f6f6;margin-bottom:10px;padding:15px;line-height:1.5;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px}.sidebar-profile .profile-comment:after{content:"";display:block;clear:both}.description-more-button{-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;appearance:none;background-color:transparent;border:none;color:#969696;float:right;font-size:12px;margin:5px 0 0}#sidebar-community .sidebar-setting a,.guest#help .arrow-button{border-top:1px solid #ddd}.description-more-button:hover{color:#323232}.user-data .data-content{display:table;width:100%;margin-bottom:10px;border-collapse:collapse}.user-data h4{color:#fff;width:1%;display:table-cell;vertical-align:bottom}.user-data h4 span{background-color:#0080ff;padding:2px 12px 1px;display:block;white-space:nowrap;margin-bottom:-1px;font-size:12px;-webkit-border-radius:20px;-moz-border-radius:20px;-ms-border-radius:20px;-o-border-radius:20px;border-radius:20px}.user-data .note{border-bottom:2px dashed #ddd;display:table-cell;font-size:14px;text-align:right;padding:0 0 0 4px}.user-data .user-main-profile{display:block}.user-data .user-main-profile h4{display:inline-block;float:left;width:auto;margin:2px 0 0}.user-data .user-main-profile .note{display:block;margin-left:10px;margin-bottom:10px}.user-data .user-main-profile .note.birthday{margin-bottom:5px}.user-data .game .note,.user-data .game h4,.user-data .game-skill .note,.user-data .game-skill h4{display:table-cell;vertical-align:bottom}.user-data .game-skill .note span:before{width:26px;height:26px;margin-right:5px;vertical-align:text-bottom;display:inline-block;content:'';margin-bottom:2px;background-size:26px auto}.user-data .game-skill span.beginner:before{background-image:url(/s/img/skill-beginner.png)}.user-data .game-skill span.intermediate:before{background-image:url(/s/img/skill-intermediate.png)}.user-data .game-skill span.expert:before{background-image:url(/s/img/skill-expert.png)}.user-data .game .note>div{display:inline-block}.user-data .game .note img{vertical-align:text-bottom;margin-bottom:2px;margin-right:3px}.user-data .game .note span{display:none}.user-data .game .note .wiiu-icon{width:28px}.user-data .game .note .n3ds-icon{width:21px}.user-data .favorite-game-genre .note span{display:inline-block}.user-data .favorite-game-genre .note span:after{content:"/";padding:0 3px}.user-data .favorite-game-genre .note span:last-child:after{content:none;padding:0}#sidebar-community-body:after,.community-description:after,.guest #about-inner:after,.sidebar-favorite-community ul:after{content:"";clear:both}.sidebar-favorite-community ul{margin:5px 10px 10px}.sidebar-favorite-community ul:after{display:block}.sidebar-favorite-community li.favorite-community{float:left;width:18%;margin:0 1% 5px}.sidebar-favorite-community li.favorite-community:nth-child(5n+1){clear:both}.sidebar-favorite-community li>a{display:block}.sidebar-favorite-community .icon-container{float:none;width:100%;height:auto}.sidebar-favorite-community .icon-container .icon{width:100%;height:auto}.sidebar-favorite-community .platform-tag{margin:2px 0 0;display:block}.sidebar-favorite-community .platform-tag img{width:100%;height:auto;display:block}.community-name{font-size:16px;font-weight:700;margin:3px 0 0 68px;line-height:1.2;color:#323232}.community-name a{color:#323232}.community-name .owner{display:inline-block;padding:2px 5px;background:#f6f6f6;color:#969696;font-size:12px;line-height:16px;margin-left:5px;margin-top:5px;font-weight:400;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px}#sidebar-community-body{padding:13px 15px 5px;display:block}#sidebar-community-body:after{display:block}#sidebar-community-img{width:58px;float:left}.news-community-badge{display:inline-block;background:#0080ff;font-size:10px;color:#FFF;margin-left:10px;padding:1px 5px;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;position:relative;top:-3px}.news-community-badge+.title{margin-top:-3px}.community-description{color:#646464;background-color:#f6f6f6;margin:0 15px 15px;padding:15px;line-height:1.5;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px}.community-description:after{display:block}.sidebar-social-container{margin-right:0;margin-bottom:10px;display:block}.no-login-btn #global-menu-list,.no-login-btn #global-menu-login{display:none!important}.guest #global-menu-login{float:right;padding:10px 0}.guest #global-menu-login input{height:35px}.guest .welcome-message{padding:10px 0;font-size:22px;font-weight:700;color:#0080ff;text-align:center}.guest #try-miiverse .try-miiverse-catch{font-size:12px;margin:15px 15px -10px;color:#969696;line-height:1.2}.guest #try-miiverse #slide-post-container{overflow:hidden;height:210px;text-align:center}.guest #try-miiverse #slide-post-container .post{padding:13px 15px 0;margin:0}.guest #try-miiverse #slide-post-container .post .post-content-memo{margin:0}.guest #try-miiverse #slide-post-container .post .screenshot-container.still-image{float:right;height:48px;margin:0 0 5px 10px;position:relative;line-height:0}.guest #try-miiverse #slide-post-container .post .screenshot-container.still-image img{height:48px;width:auto}.guest #try-miiverse #slide-post-container .body{display:table-cell;vertical-align:middle;height:148px;width:930px;margin:0 auto}.guest #try-miiverse #slide-post-container .post-content{margin:0;display:inline-block;text-align:left;max-width:930px}.guest #try-miiverse #slide-post-container .with-image .post-content{width:420px}.guest #try-miiverse h3.label{margin-top:0}.guest #about{background:#fff;margin-bottom:20px;border-bottom:2px solid #e5e5e5}.guest #about p{font-size:14px;padding:0 14px 5px;text-align:left}.guest #about img{width:53%;margin-top:20px;float:right}.guest #about-inner{max-width:960px;margin:0 auto;padding:30px 25px 50px;-ms-box-sizing:border-box;box-sizing:border-box}.community-eyecatch-image,.community-eyecatch-info{-webkit-box-sizing:border-box;-o-box-sizing:border-box}.guest #about-inner:after{display:block}.guest #about-text{float:left;width:45%}.guest .no-content+.arrow-button,.guest .post-list+.arrow-button{margin:0 0 -10px}.guest#help .arrow-button{margin:20px -15px -15px}.guest .guest-terms-content{text-align:center;margin:10px 14px 0}.guest .guest-terms-link{background-color:#0080ff;color:#fff;padding:7px 35px 7px 20px;position:relative;line-height:18px;text-align:left;display:inline-block;-webkit-border-radius:40px;-moz-border-radius:40px;-ms-border-radius:40px;-o-border-radius:40px;border-radius:40px}.guest .guest-terms-link:hover{background-color:#0055be}#guide-menu,#guide-menu:hover{background:#fff}.guest .guest-terms-link:before{font-size:10px;content:'A';color:#fff;position:absolute;right:15px;top:50%;margin-top:-9px}#community-guide-footer{float:left;margin:40px 0 0;width:625px}#community-guide-footer:after{content:"";display:block;clear:both}#guide-menu{border:1px solid rgba(0,0,0,.1);-webkit-box-shadow:0 1px 0 rgba(0,0,0,.2);-moz-box-shadow:0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 0 rgba(0,0,0,.2);-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px}#guide-menu .arrow-button{border-top:1px solid #ddd}#guide-menu .arrow-button:first-child{border-top:none}p.note-jasrac{padding:0;font-size:12px;color:#969696;margin:10px 0 0}p.note-jasrac span{white-space:nowrap}.guest.post-permlink #footer{text-align:center}.guest .guest-message p{padding:15px;-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;-ms-border-radius:0 0 5px 5px;-o-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px;color:#969696;background:#f6f6f6}.guest .guest-message .arrow-button{border-top:1px solid #ddd}.guest-top.guest #main-body{max-width:100%;padding:71px 0 170px}.guest-top.guest #community-top{max-width:960px;margin:0 auto}.guest-top.guest #cookie-policy-notice{top:0}.setting-form{margin:20px 10px}.setting-form li{margin:0 5px;border-bottom:1px solid #ddd;padding:0 5px 15px}.setting-form .settings-label{margin:20px 0 10px}.setting-form .select-content{text-align:right}.setting-form .select-content select{width:auto;max-width:100%;min-width:50%}.setting-form .note{font-size:12px;color:#969696;margin:0 0 10px}.setting-form .note-attention{font-size:12px;color:#e67877;clear:both}.setting-nnid input{margin-left:4px;padding:0 8px;border-radius:5px;border:1px solid #ddd;height:56px;width:calc(100% - 80px)}.setting-nnid .error{padding:0 8px;color:red}.setting-avatar .icon-container{padding-right:8px;float:left}.setting-form .note-attention:before{content:"";-webkit-border-radius:50%;-moz-border-radius:50%;-ms-border-radius:50%;-o-border-radius:50%;border-radius:50%;display:inline-block;width:10px;height:10px;background-color:#e67877;margin-right:5px}.setting-form .setting-profile-post button#profile-post{margin:0;color:#fff;padding:0 0 8px;border-radius:6px;border:1px solid #969696;background-color:#969696;font-size:14px;overflow:hidden}.setting-form .setting-profile-post button#profile-post span:before{font-size:12px;content:'x';margin-right:7px;vertical-align:middle;margin-bottom:2px;display:inline-block}.setting-form .setting-profile-post img{display:block;margin-bottom:8px;width:240px;height:auto}.setting-form #favorite-game-genre .select-content{margin-bottom:10px}.setting-form #favorite-game-genre .select-content:last-child{margin-bottom:0}.download-request-setting-form{margin:20px 10px}.download-request-setting-form h2{clear:both;padding:5px 10px 3px;margin-top:2em;background:#5ac800;color:#fff;font-size:14px;border-radius:5px}.download-request-setting-form ol.asterisk{counter-reset:number;list-style:none}.download-request-setting-form ol.asterisk li:before{counter-increment:number;content:"*" counter(number) " "}.download-request-setting-form ul{list-style:none;margin:10px 30px}.download-request-setting-form ul li:before{content:'\25CF';margin:0 .2em 0 -.9em}.download-request-setting-form .settings-label{margin:10px 0}.download-request-setting-form .note{font-size:12px;color:#969696;margin:0 10px 5px}.download-request-setting-form .attention{clear:both;padding:5px 10px 0;border:3px solid #fb625a;margin:10px 30px 0;background:#fff;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px}.download-request-setting-form .attention p img{vertical-align:middle;max-width:300px;width:100%}.download-request-setting-form .attention .title{margin:0 -5px 5px;padding:5px;Background-color:#fb625a;color:#fff}.download-request-setting-form .attention p.title img{width:20px;height:18px;margin-right:3px;vertical-align:middle}div#activity-feed-tutorial{background-color:#fff;border:3px solid #0080ff;border-radius:10px;height:auto;padding:25px 14px 15px;margin:10px 5px 20px}div#activity-feed-tutorial p.tleft{float:left;width:60%;margin-right:5%}div#activity-feed-tutorial img.tutorial-image{width:35%}div#activity-feed-tutorial h3{text-align:left;clear:both;color:#0080ff;font-size:14px;border-bottom:1px dashed #ddd;padding:15px 0 3px}div#activity-feed-tutorial .list-content-with-icon-and-text li{margin:0;padding:10px 0;border:none}div#activity-feed-tutorial .list-content-with-icon-and-text .text,div#activity-feed-tutorial .list-content-with-icon-and-text .title{text-align:left}div#activity-feed-tutorial .trigger:hover{background-color:transparent;background-image:none}div#activity-feed-tutorial.no-content{margin:10px auto 30px;padding:15px 0;height:100px;border:none}div#activity-feed-tutorial.no-content p.tleft{color:#323232;font-size:14px}.content-loading-window.activity-feed{text-align:center;padding:110px 10px}.content-loading-window.activity-feed p{text-align:center;margin-top:10px}.content-loading-window.activity-feed p span{text-align:left;display:inline-block;color:#969696}.content-loading-window.activity-feed img{width:22px;height:22px;margin-right:3px}.content-load-error-window.activity-feed{text-align:center;padding:40px 10px 30px}.content-load-error-window.activity-feed p{text-align:left;margin:30px 55px;display:inline-block}.community-title{font-size:16px;margin:2em 5px .4em;text-align:left;font-weight:700;color:#606060}.community-title:before{margin-right:5px;margin-top:-3px;vertical-align:middle;font-size:18px;display:inline-block}.community-title>span{padding:3px 10px 0 0;vertical-align:middle;display:inline-block}.community-title.hot-artwork-title:before{content:'M';color:#ffae00;font-size:20px}.community-title.hot-topic-title:before{content:'$';color:#e8316e;font-size:22px}.community-title.community-favorite-title:before{content:'s';color:#f79726}#community-favorite ul:after,.community-eyecatch-balloon:after,.community-eyecatch-image:after,.community-eyecatch-info:after,.community-main:after{content:""}.community-game-title{font-size:16px;color:#323232;font-weight:700;margin-bottom:2px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;word-wrap:normal}.community-game-device{color:#969696;line-height:1}.community-main{width:625px;float:left}.community-main:after{display:block;clear:both}#community-eyecatch-main{position:relative;width:100%;height:414px}#community-eyecatch-main>div{background:#fff;border:1px solid rgba(0,0,0,.1);-webkit-box-shadow:0 1px 0 rgba(0,0,0,.2);-moz-box-shadow:0 1px 0 rgba(0,0,0,.2);-ms-box-shadow:0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 0 rgba(0,0,0,.2);-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px}.eyecatch-diary-post{position:absolute;width:100%;height:100%;top:0;left:0;background-color:#fff;opacity:1;z-index:2;transition-property:opacity;transition-duration:6s;transition-timing-function:ease;transition-delay:.5s}.eyecatch-diary-post.invisible{opacity:0;z-index:1}.community-eyecatch-image{width:100%;display:block;background-repeat:no-repeat;background-size:cover;background-position:center;background-color:#ddd;padding:278px 15px 15px;-webkit-border-radius:3px 3px 0 0;-moz-border-radius:3px 3px 0 0;-ms-border-radius:3px 3px 0 0;-o-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.community-eyecatch-balloon,.community-eyecatch-info{color:#323232;-moz-box-sizing:border-box;-ms-box-sizing:border-box}.community-eyecatch-image:after{display:block;clear:both}.community-eyecatch-info{box-sizing:border-box;clear:both;display:block;background:url(/s/img/icon-arrow-right.png) 97.5% center no-repeat;-webkit-background-size:9px 15px;-moz-background-size:9px 15px;-ms-background-size:9px 15px;-o-background-size:9px 15px;background-size:9px 15px;padding:12px 25px 12px 12px}.community-eyecatch-info:after{display:block;clear:both}.community-eyecatch-info:hover{background-color:#f9f9f9}.community-eyecatch-infoicon{float:left;margin:0 10px 0 0;border:1px solid #ddd;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px}.community-eyecatch-balloon{position:relative;background:rgba(255,255,255,.9);padding:7px 8px;float:right;width:88%;height:58px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;-webkit-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;-webkit-box-shadow:0 2px 4px rgba(0,0,0,.3);-moz-box-shadow:0 2px 4px rgba(0,0,0,.3);-ms-box-shadow:0 2px 4px rgba(0,0,0,.3);-o-box-shadow:0 2px 4px rgba(0,0,0,.3);box-shadow:0 2px 4px rgba(0,0,0,.3)}.digest .post .community-container,.post-body .multi-timeline-post-list .post-subtype-artwork{-moz-box-sizing:border-box;-ms-box-sizing:border-box;-o-box-sizing:border-box;-webkit-box-sizing:border-box}#community-favorite,#identified-user-banner{-webkit-box-shadow:0 1px 0 rgba(0,0,0,.2);-moz-box-shadow:0 1px 0 rgba(0,0,0,.2);-ms-box-shadow:0 1px 0 rgba(0,0,0,.2);-o-box-shadow:0 1px 0 rgba(0,0,0,.2);overflow:hidden}.community-eyecatch-balloon:after{position:absolute;top:50%;left:-8px;margin-top:-8px;display:block;width:0;height:0;border-style:solid;border-width:8px 8px 8px 0;border-color:transparent rgba(255,255,255,.9) transparent transparent}.community-eyecatch-balloon span{height:42px;overflow:hidden;-webkit-line-clamp:2;display:-webkit-box;-webkit-box-orient:vertical}.community-top-sidebar{width:320px;float:right;text-align:center}#community-favorite{padding:10px 0 10px 10px;background:#fff;border:1px solid rgba(0,0,0,.1);box-shadow:0 1px 0 rgba(0,0,0,.2);-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px}#community-favorite:hover{background:#fff}#community-favorite ul{position:relative;display:block}#community-favorite ul:after{display:block;clear:both}#community-favorite li{float:left;margin:0 10px 0 0;line-height:1;width:58px}#community-favorite a{display:block}#community-favorite .empty-icon img{width:100%;height:auto;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px}#community-favorite img{width:100%;height:auto;vertical-align:bottom}#community-favorite .user-community .icon-container .icon{left:0}#community-favorite .user-community .icon-container .icon,#community-favorite .user-community .icon-container .user-icon{width:65%;height:65%}.favorite-community-link.symbol{background:#f2f2f2;display:inline-block;top:50%;right:15px;width:50px;height:50px;margin-top:-25px;position:absolute;text-align:center;-webkit-border-radius:25px;-moz-border-radius:25px;-ms-border-radius:25px;-o-border-radius:25px;border-radius:25px}.favorite-community-link.symbol:before{content:'A';color:#969696;font-size:18px;line-height:50px;margin-left:6px}.favorite-community-link.symbol:hover{background:#e6e6e6}#identified-user-banner{background:#fff;border:0 solid rgba(0,0,0,.1);width:230px;box-shadow:0 1px 0 rgba(0,0,0,.2);-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;text-align:left}#identified-user-banner:hover{background-color:#f9f9f9}#identified-user-banner .title{font-size:16px;font-weight:700;display:block;color:#0080ff;padding:12px 5px 4px 10px;line-height:1.3em}#identified-user-banner .text{font-size:14px;display:block;color:#646464;padding:0 5px 10px 10px;line-height:1.2}.platform-tag{position:static;float:left;margin:1px 5px 0 0;display:inline-block}.platform-tag img{width:58px;height:12px}#community-top .platform-logo{float:right;margin-top:-6px;width:120px;height:auto}.filtering-label-container{margin:0 15px}.filtering-label{background:#f6f6f6;display:table;margin:0 auto 10px;width:100%;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px}.filtering-label:after{content:"";display:block;clear:both}.filtering-label .tag-name{padding:0;font-size:14px;font-weight:700;color:#0080ff;margin-right:2px}.filtering-label .tag-name:before{content:"t";font-weight:400;font-size:14px;margin-right:2px;vertical-align:middle;color:#0080ff}.filtering-label.filtering-label-official-tag .tag-name,.filtering-label.filtering-label-official-tag .tag-name:before{color:#00acca}.filtering-label.filtering-label-topic-category .tag-name,.filtering-label.filtering-label-topic-category .tag-name:before{color:#e8316e}.filtering-label.filtering-label-topic-open .accepting{color:#e8316e;font-weight:700}.filtering-label.filtering-label-topic-open .accepting:before{content:"\25CF ";font-weight:400;font-size:5px;margin-right:5px;vertical-align:middle;color:#ffe400}.filtering-label p{color:#646464;font-size:12px;display:table-cell;vertical-align:middle;padding:0 5px 0 10px;max-width:435px;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;-ms-border-radius:3px 0 0 3px;-o-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.filtering-label .button{display:table-cell;vertical-align:middle;border:none;border-left:1px solid #ddd;color:#323232;width:40px;text-align:center;line-height:1.2;margin:2px 0;padding:10px 0;-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;-ms-border-radius:0 3px 3px 0;-o-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.filtering-label .button:before{content:"x"}.digest-container{margin-bottom:20px}.digest .post{text-align:left;position:relative;margin-left:42px;margin-top:10px}.digest .post:first-child{margin-top:0}.digest .post .community-container{border:1px solid #ddd;border-top:1px solid #eee;border-bottom:none;bottom:0;margin:0;padding:3px 0;position:absolute;width:100%;box-sizing:border-box;-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;-ms-border-radius:0 0 5px 5px;-o-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px}.digest .post .community-container a{padding:0 8px}.digest .post .icon-container{background:#fff;border:1px solid rgba(0,0,0,.1);overflow:hidden;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.2);-moz-box-shadow:0 1px 0 rgba(0,0,0,.2);-ms-box-shadow:0 1px 0 rgba(0,0,0,.2);-o-box-shadow:0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 0 rgba(0,0,0,.2);-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;width:36px;height:36px;position:absolute;left:-42px}.digest .post .icon-container .icon{width:36px;height:36px;border:none}.close-announce-link,.digest .post .body{border:1px solid rgba(0,0,0,.1);-webkit-box-shadow:0 1px 0 rgba(0,0,0,.2);-moz-box-shadow:0 1px 0 rgba(0,0,0,.2);-ms-box-shadow:0 1px 0 rgba(0,0,0,.2);-o-box-shadow:0 1px 0 rgba(0,0,0,.2);overflow:hidden}.digest .post .body{background:#fff;box-shadow:0 1px 0 rgba(0,0,0,.2);-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:10px 10px 32px}.digest .post .body:after,.digest .post .body:before{content:"";position:absolute;top:20px;display:block;width:0;height:0;border-style:solid}.digest .post .body:after{border-color:transparent #fff transparent transparent;border-width:4px;margin-top:-4px;left:-7px}.digest .post .body:before{border-color:transparent #ddd transparent transparent;border-width:5px;margin-top:-5px;left:-10px}.digest .post .screenshot-container{float:right;margin:2px 0 5px 5px;clear:both}.close-announce-link:before,.download-request-link:before{content:'A';right:15px;top:50%;margin-top:-9px}.digest .post .screenshot-container img{height:42px;width:auto}.digest .post .post-meta,.digest .post .post-tag,.digest .post .tag-container>span{font-size:12px}.digest .post .post-content-memo img{width:100%}.artwork-digest .post .post-meta,.artwork-digest .post .screenshot-container,.digest .post .accepting,.digest .post .post-meta .played,.digest .post .post-meta .yeah-button,.digest .post .timestamp-container,.digest .post .topic-body,.digest .post .user-name{display:none}.close-announce-container{background-color:rgba(0,0,0,.06);padding:10px 10px 5px;margin-bottom:10px;display:block;text-align:center}.close-announce-link .title,.download-request-link .title{padding:10px 25px 8px 10px;line-height:1.3em;display:block}.close-announce-link{box-shadow:0 1px 0 rgba(0,0,0,.2);-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;text-align:left;background:#fff9cd;margin-bottom:5px;position:relative}.close-announce-link:hover{background-color:#fffce4}.close-announce-link:before{font-size:14px;color:#FF9100;position:absolute}.close-announce-link .title{font-size:16px;font-weight:700;color:#FF9100}.download-request-link{background:#fff;border:1px solid rgba(0,0,0,.1);overflow:hidden;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.2);-moz-box-shadow:0 1px 0 rgba(0,0,0,.2);-ms-box-shadow:0 1px 0 rgba(0,0,0,.2);-o-box-shadow:0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 0 rgba(0,0,0,.2);-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;text-align:left;margin-bottom:5px;position:relative}.yeah-button,.yeah-button:disabled:hover{-webkit-box-shadow:inset 0 1px 0 #fff;-moz-box-shadow:inset 0 1px 0 #fff;-ms-box-shadow:inset 0 1px 0 #fff;-o-box-shadow:inset 0 1px 0 #fff}.download-request-link:hover{background-color:#f9f9f9}.download-request-link:before{font-size:14px;color:#646464;position:absolute}.download-request-link .title{font-size:16px;color:#646464}.notify{background:#f4f4ff!important}.news-list .nick-name{font-weight:700;color:#323232}.news-list a.link{color:#0080ff}.messages .post a,.news-list .id-name,.news-list .timestamp{color:#969696}.news-list .icon-container{margin-right:10px}.messages .post .timestamp-container{float:inherit;text-align:right}.messages .post .screenshot-container{max-width:400px;margin:5px auto}.messages .post .post-content-memo{text-align:center;margin-top:-15px;margin-right:120px}.messages .post .post-content-memo img{width:100%;max-width:320px;background-color:#fff}.messages .post .post-body{margin-left:62px}.messages .post .icon-container{width:50px;height:50px;margin-right:8px}.messages .post .icon-container .icon{width:48px;height:48px}.messages .post .post-meta{margin-bottom:0;padding:8px 0 0;font-size:14px}.messages .post.my{background-color:#e6fbff}.post .post-subtype-label{color:#323232;float:right;margin:-5px -8px -5px 10px;padding:9px;font-size:12px}.post .post-subtype-label.post-subtype-label-diary{border-bottom:2px solid #04c9db}.post .post-subtype-label.post-subtype-label-artwork{border-bottom:2px solid #fcc735}.post .post-subtype-label.post-subtype-label-topic{border-bottom:2px solid #e8316e}.post .post-subtype-label.post-subtype-label-via-api{border-bottom:2px solid #0080ff}.post .post-permlink .post-subtype-label{margin-right:-15px}.post .community-container{background-color:#f9f9f9;border-bottom:1px solid #eee;margin:-15px -15px 15px;padding:5px 8px;font-size:12px}.post .community-container a{color:#969696;display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;word-wrap:normal}.post .community-container a:hover{color:#646464}.post .community-container .community-icon{width:24px;height:24px;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;vertical-align:middle;margin-right:5px;margin-top:-2px}.post .community-container-heading{font-weight:700;font-size:18px}.post .community-container-heading a{color:#323232}.post .post-content-memo img{vertical-align:bottom}.post .deleted-message,.post .hidden-content,.post .hidden_as_violation{color:#969696;font-size:16px;padding:20px 0 1.2em 3px;text-align:center}.post .deleted-message a,.post .deleted-message button,.post .hidden-content a,.post .hidden-content button,.post .hidden_as_violation a,.post .hidden_as_violation button,.user-name a{color:#323232}.post .deleted-message+.post-content-memo,.post .deleted-message+.post-content-text,.post .hidden-content+.post-content-memo,.post .hidden-content+.post-content-text,.post .hidden_as_violation+.post-content-memo,.post .hidden_as_violation+.post-content-text{margin-top:-7px}.post .spoiler-status{display:none}.post .spoiler-status.spoiler{display:inline}.post.hidden:hover{cursor:auto;background:#fff}.post.hidden .post-content-memo,.post.hidden .post-content-text,.post.hidden .post-meta,.post.hidden .reply-content-memo,.post.hidden .reply-content-text,.post.hidden .reply-meta,.post.hidden .screenshot-container img{display:none!important}.user-name a{font-weight:700}.timestamp-container{font-size:14px;color:#969696}.timestamp-container a{color:#969696}.screenshot-container{overflow:hidden;display:block;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px}.screenshot-container img{vertical-align:bottom;width:100%}.screenshot-container.video{position:relative}.screenshot-container.video img{height:42px;width:auto}.screenshot-container.video:after{position:absolute;content:'';display:block;bottom:0;right:0;width:20px;height:15px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAbCAQAAADM6ofdAAABT0lEQVR4AZWUA0ynYRyAv+dv2862bXtWc5gVZrvZTbnGZjWl2Q3pOsw8a/zuvay7ep933p69PyugKGjQocd4/fTo0AAozwFo0GPCihO3eC7sWIQmJHhe0GHCjpcICZLECePHKSQDWngiocGAHT8JcimmjFIKyCKGFzumZ4JDixkPcQq+nqnqp4uFWdqpF2o6YdxYEcE9UNBhJUAW1eo1R3tF43RSTR5JAjgxo78XHDrsRCigVb3l98/tdYZpoYwsoojg7hUBHQ7ilNKjPuD96fQ8vdRTRDohXDdFUNDjIkkFg+oTDndEcB1UkosoAjbEPzdCJSPqU0Rwy4sM0EAhSXxCMVwJKaoQwvN8OBmbpIki4niwPC884WCrsYtsgthfJwi+nFNIDOdrBQHFxHHJ/yCfg3yV5Psg2WnpWZKaVvl9kN84+Z2WvxrI3yVkLt8fOBmlvDxmleAAAAAASUVORK5CYII=) center center no-repeat rgba(0,0,0,.65);-webkit-background-size:12px 14px;-moz-background-size:12px 14px;-ms-background-size:12px 14px;-o-background-size:12px 14px;background-size:12px 14px;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px}.post-tag{padding:0;font-size:14px;font-weight:700;color:#0080ff;margin-right:7px;display:inline-block}.multi-language-post:before,.post-tag:before{font-weight:400;display:inline-block;font-size:14px;vertical-align:middle}.post-tag:before{content:"t";color:#0080ff;margin-top:-3px;margin-right:3px}.post-tag.post-official-tag,.post-tag.post-official-tag:before{color:#00acca}.post-tag.post-topic-category,.post-tag.post-topic-category:before{color:#e8316e}.multi-language-post{color:#969696;padding:0;font-size:14px;display:inline-block}.multi-language-post:before{content:'#';margin-right:3px;margin-top:-2px}.multi-language-body{margin-top:-5px}.accepting .not-accepting,.not-accepting .accepting{display:none}.accepting>span,.not-accepting>span{float:right;font-size:14px;padding:1px 8px}.accepting>span{background-color:#fff7b3;color:#fc951e}.accepting>span:before{color:#ffe400}.not-accepting>span{background-color:#f6f6f6;color:#969696}.not-accepting>span:before{color:#ddd}.multi-timeline-post.post-subtype-topic .accepting>span,.multi-timeline-post.post-subtype-topic .not-accepting>span{padding:2px 5px 4px}.topic-title{font-weight:700}.post.has-video-thumbnail .topic-title{min-height:50px}.post.has-video-thumbnail .post-content-text{padding-right:65px}.post-meta,.reply-meta{font-size:16px;text-align:right;color:#969696;overflow:hidden;clear:both}.post-meta .empathy-added+.empathy,.post-meta .empathy-added+.empathy:before,.reply-meta .empathy-added+.empathy,.reply-meta .empathy-added+.empathy:before{color:#0080ff}.post-meta div,.reply-meta div{display:inline-block;padding:2px 0 0;margin-left:8px;vertical-align:middle}.post-meta .empathy:before,.reply-meta .empathy:before{content:"e";margin-right:3px}.ie8-earlier .post-meta .empathy.changing:before,.ie8-earlier .reply-meta .empathy.changing:before{content:none}.post-meta .reply:before,.reply-meta .reply:before{content:"r";margin-right:3px}.post-meta .played,.reply-meta .played{margin-left:13px}.post-meta .played:before,.reply-meta .played:before{content:"D"}.post-meta .link-confirm{width:20px;height:25px;float:right;margin-left:10px;padding:5px;margin-bottom:-10px;margin-top:-10px}.post-meta .link-confirm:before{content:"o";font-size:18px;color:#0080ff}.yeah-button{float:left;display:inline-block;margin:0 auto;padding:3px 5px 2px;border:1px solid #ddd;border-bottom-color:#ccc;background:#FFF;font-size:12px;color:#323232;text-align:center;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;box-shadow:inset 0 1px 0 #fff}.empathy-container a:before,.yeah-button:before{margin-top:-3px;display:inline-block;vertical-align:middle}.yeah-button:hover{text-decoration:none;-webkit-box-shadow:inset 0 1px 0 #fff,0 2px 4px rgba(0,0,0,.1);-moz-box-shadow:inset 0 1px 0 #fff,0 2px 4px rgba(0,0,0,.1);-ms-box-shadow:inset 0 1px 0 #fff,0 2px 4px rgba(0,0,0,.1);-o-box-shadow:inset 0 1px 0 #fff,0 2px 4px rgba(0,0,0,.1);box-shadow:inset 0 1px 0 #fff,0 2px 4px rgba(0,0,0,.1)}.yeah-button:before{content:"E";font-size:16px;color:#969696;margin-right:2px}.yeah-button:disabled{color:#ddd;cursor:default}.yeah-button:disabled:before{color:#ddd}.yeah-button:disabled:hover{box-shadow:inset 0 1px 0 #fff}.empathy-container a:before{content:"e";font-size:16px;color:#0080ff;margin-right:4px}.empathy-body{font-size:16px}.empathy-body a{color:#0080ff}.other-empathy-cotainer a,.post-list a.another-posts{color:#323232;font-size:12px}.other-empathy-cotainer{text-align:right;padding-bottom:10px;padding-top:5px}.post-list .community-container{margin-right:-20px}.post-list .post{padding-right:20px}.post-list>.post-list-outline{border-top:1px solid rgba(0,0,0,.1);overflow:hidden}.post-list a.another-posts{background-color:rgba(0,0,0,.04);border-top:1px solid #ddd;font-weight:400;display:block;text-align:center;margin:15px -20px -15px -15px;padding:10px 30px 8px;position:relative;-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;-ms-border-radius:0 0 5px 5px;-o-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px}.post-list a.another-posts:before{content:'A';color:#969696;font-size:10px;position:absolute;right:12px;top:12px}.post-list .post:hover a.another-posts{background-color:rgba(0,0,0,.05)}.post-list .acted-user-name,.post-list .empathized-user-name{border:none;display:block;padding:5px 10px;font-weight:400;font-size:12px}.post-list .acted-user-name a,.post-list .empathized-user-name a{color:#0080ff;font-weight:700;padding-right:3px;font-size:13px}.post-list .empathized-user-name:before{font-size:14px;color:#0080ff;content:"e";margin-right:2px}.post-list .recommend-user-container{border:none;padding:0}.post-list .recommend-user-container li{border:none}.post-list .recommend-user-container .body{margin-top:0}.post-list .recommend-user-container .list-content-with-icon-and-text .title{margin-top:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;word-wrap:normal}.post-list .user-name{display:inline}.post-list .timestamp-container{display:inline;padding-left:5px}.post-list .body{margin-left:68px;margin-top:10px}.post-list .screenshot-container{margin-bottom:8px;margin-top:5px;margin-right:62px;text-align:center;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0}.post-list .screenshot-container img{width:auto;height:auto;max-width:100%;max-height:320px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px}.post-list .screenshot-container+.post-content-memo{margin-top:10px}.post-list .screenshot-container.video+.post-content-memo{overflow:hidden}.post-list .screenshot-container.video{float:right;margin:5px 0 8px 8px}.post-list .screenshot-container.video img{width:auto;height:70px}.post-list .screenshot-container.video+.screenshot-container img{height:auto}.post-list .icon-container{margin:0 10px 0 0}.post-list .post-content-text{font-size:18px}.post-list .post-content-memo{text-align:center;margin-top:15px;margin-right:62px}.post-list .post-content-memo img{width:100%;max-width:320px;background-color:#fff}.post-list .multi-language-post+.post-content-text,.post-list .post-tag+.post-content-text,.post-list .screenshot-container.video+.post-content-text{margin-top:2px}.post-list .topic-body{margin-top:0;font-size:16px}.post-list .post-meta{padding-top:15px}.post-list .recent-reply-content{background-color:#f9f9f9;border-top:1px solid #e9e9e9;padding:0;margin:10px 0 0;-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;-ms-border-radius:0 0 5px 5px;-o-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px}.post-list .recent-reply-content .recent-reply-read-more-container:hover,.post-list .recent-reply-content .recent-reply:hover{background-color:#f4f4f4}.post-list .recent-reply-content .recent-reply-read-more-container{text-align:center;border-bottom:1px solid #e9e9e9;font-size:12px;padding:5px 0}.post-list .recent-reply-content .recent-reply{padding:8px}.post-list .recent-reply-content .recent-reply:after{content:"";display:block;clear:both}.post-list .recent-reply-content .icon-container{width:50px;height:50px;margin-right:8px}.post-list .recent-reply-content .icon-container .icon{width:48px;height:48px}.post-list .recent-reply-content .timestamp-container{font-size:10px}.post-list .recent-reply-content .user-name{font-size:12px;padding-top:0}.post-list .recent-reply-content .post-content{padding:1px 0 0;font-size:12px}.post-list .recent-reply-content .body{margin-left:56px;margin-top:0}.post-list .recent-reply-content .recent-reply-content-text{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;word-wrap:normal}.post-list .recent-reply-content .recent-reply-content-memo{text-align:center;margin-right:56px}.post-list .recent-reply-content .recent-reply-content-memo img{max-height:80px;width:auto;max-width:100%;background-color:#fff}.post-list .post.hidden .recent-reply-content,.post-list .post.hidden .screenshot-container{display:none}.post-list .empathized-post .body{clear:both}.post-list-outline .empty{height:200px;text-align:center}.multi-timeline-post-list .post{clear:both}.multi-timeline-post-list .post .body{position:relative;min-height:80px}.multi-timeline-post-list .post .body:after{content:"";display:block;clear:both}.post-body .multi-timeline-post-list .post-subtype-artwork .timestamp-container,.post-body .multi-timeline-post-list .post-subtype-artwork .yeah-button{display:none}.multi-timeline-post-list .post .icon-container{width:38px!important;height:38px!important;margin:0 5px 0 0}.multi-timeline-post-list .post .icon-container .icon{width:36px!important;height:36px!important;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px}.multi-timeline-post-list .post .tag-container a,.multi-timeline-post-list .post .tag-container span,.multi-timeline-post-list .post .user-name{font-size:14px}.multi-timeline-post-list .post .timestamp-container{margin-bottom:8px;font-size:12px}.multi-timeline-post-list .post .multi-language-post,.multi-timeline-post-list .post .post-tag{float:left;margin-right:7px}.multi-timeline-post-list .post .post-content-text{font-size:16px;line-height:1.4;white-space:pre-wrap}.multi-timeline-post-list .post .post-content-memo{text-align:center}.multi-timeline-post-list .post .post-content-memo img{width:100%;max-width:320px;background-color:#fff}.multi-timeline-post-list .post .topic-body{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;word-wrap:normal}#post-content .post-content-text,#post-content .reply-content-text,.reply-list .reply-content-text{white-space:pre-wrap}.multi-timeline-post-list .post .accepting>span,.multi-timeline-post-list .post .not-accepting>span{font-size:12px}.multi-timeline-post-list .post .post-meta{padding:15px 0 0}.multi-timeline-post-list .post .screenshot-container{width:280px;height:157px;position:absolute;left:-290px;top:0;margin:0 10px 0 0;text-align:center}.multi-timeline-post-list .post .screenshot-container img{height:157px;width:auto;margin:0 auto;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px}.multi-timeline-post-list .post .screenshot-container.video{position:absolute!important;left:auto;right:0;top:0;margin:0!important;height:42px!important;width:auto!important}.multi-timeline-post-list .post .screenshot-container.video img{height:42px!important;width:auto!important}.multi-timeline-post-list .post.with-image .body{margin-left:290px;min-height:160px}.multi-timeline-post-list .post.hidden .screenshot-container{background-color:#f6f6f6}.multi-timeline-post-list .post-subtype-diary.with-image .post-content-text{min-height:3em}.post-body .multi-timeline-post-list .post-subtype-artwork{border-top:none;padding:5px;float:left;width:50%;clear:none;box-sizing:border-box}.post-body .multi-timeline-post-list .post-subtype-artwork:nth-child(2n+1){clear:both}.post-body .multi-timeline-post-list .post-subtype-artwork.with-image .body{margin:0;min-height:0}.post-body .multi-timeline-post-list .post-subtype-artwork .community-container{margin:0;border:none}.post-body .multi-timeline-post-list .post-subtype-artwork .post-content-memo{margin:0 0 6px}.post-body .multi-timeline-post-list .post-subtype-artwork .post-content-memo img{width:100%}.post-body .multi-timeline-post-list .post-subtype-artwork .screenshot-container{height:42px;width:auto;position:absolute;left:auto;top:auto;bottom:0;right:0;margin:0}.post-body .multi-timeline-post-list .post-subtype-artwork .screenshot-container img{height:42px;width:auto}.post-body .multi-timeline-post-list .post-subtype-artwork .post-meta{font-size:12px;padding:0;float:none;text-align:left;clear:none}.post-body .multi-timeline-post-list .post-subtype-artwork .post-meta>div{margin-right:8px;margin-left:0;padding:0}.post-body .multi-timeline-post-list .post-subtype-artwork .hidden-content{background-color:#f9f9f9;border-top:1px dashed #ddd;display:table;padding:10px 0;margin-bottom:6px;height:90px;width:100%}.post-body .multi-timeline-post-list .post-subtype-artwork .hidden-content p{display:table-cell;vertical-align:middle;padding:0 5px}.multi-timeline-post-list .post-subtype-topic .body{min-height:0}.multi-timeline-post-list .post-subtype-topic .screenshot-container{position:static;float:right;margin:0 0 0 10px;width:auto;height:auto}.multi-timeline-post-list .post-subtype-topic .screenshot-container img{height:70px}.multi-timeline-post-list .post-subtype-topic .user-container{padding:5px 0 0;margin:0;float:left}.multi-timeline-post-list .post-subtype-topic .timestamp-container,.multi-timeline-post-list .post-subtype-topic .user-name{display:inline-block;vertical-align:middle;line-height:27px;margin:0}.multi-timeline-post-list .post-subtype-topic .timestamp-container a,.multi-timeline-post-list .post-subtype-topic .user-name a{font-weight:400;color:#969696;font-size:13px}.multi-timeline-post-list .post-subtype-topic .post-meta{clear:none;float:right;padding:5px 0 0}.multi-timeline-post-list .post-subtype-topic .icon-container,.multi-timeline-post-list .post-subtype-topic .yeah-button{display:none}.multi-timeline-post-list .post-subtype-topic.post.with-image .body{margin:0;min-height:0}.multi-timeline-post-list .post-subtype-topic .deleted-message,.multi-timeline-post-list .post-subtype-topic .hidden-content,.multi-timeline-post-list .post-subtype-topic .hidden_as_violation{padding:25px 0 0}.window-create-new-topic .post-buttons-content{margin-top:10px}h2.label-topic_post{padding-top:12px}h2.label-topic_post:after{content:"";display:block;clear:both}h2.label-topic_post .label-topic_post-msgid{display:inline-block;padding-top:5px}.post-list-heading-button{float:right;display:inline-block;margin:0 auto;padding:3px 5px 2px;border:1px solid #ddd;border-bottom-color:#ccc;background:#FFF;font-size:12px;color:#323232;text-align:center;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;-webkit-box-shadow:inset 0 1px 0 #fff;-moz-box-shadow:inset 0 1px 0 #fff;-ms-box-shadow:inset 0 1px 0 #fff;-o-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.post-list-heading-button:hover{text-decoration:none;-webkit-box-shadow:inset 0 1px 0 #fff,0 2px 4px rgba(0,0,0,.1);-moz-box-shadow:inset 0 1px 0 #fff,0 2px 4px rgba(0,0,0,.1);-ms-box-shadow:inset 0 1px 0 #fff,0 2px 4px rgba(0,0,0,.1);-o-box-shadow:inset 0 1px 0 #fff,0 2px 4px rgba(0,0,0,.1);box-shadow:inset 0 1px 0 #fff,0 2px 4px rgba(0,0,0,.1)}#help .help-content a:hover,#post-content .timestamp-container .timestamp:hover,.hatebu-entries .hatebu-entries-list a:hover{text-decoration:underline}.post-list-heading-button:before{content:"p";font-size:14px;color:#0080ff;float:left;margin-right:3px}.multi_timeline-topic-filter{padding:15px;display:none}.multi_timeline-topic-filter.open{display:block}.multi_timeline-topic-filter .content{padding-bottom:15px;position:relative}.multi_timeline-topic-filter .content:before{content:"";display:inline-block;width:22px;height:10px;background:url(/s/img/tutorial-window-balloon.png);background-size:22px 10px;position:absolute;top:-10px;right:15px}.multi_timeline-topic-filter .select-button{margin-top:10px}.multi_timeline-topic-filter .window-bottom-buttons{text-align:center}.multi_timeline-topic-filter .window-bottom-buttons .button{margin:10px auto;width:300px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box}.multi_timeline-topic-filter .window-bottom-buttons .topic-search-filter-button:after{font-family:MiiverseSymbols,sans-serif;font-weight:400;content:'V';vertical-align:middle;padding-left:5px;display:inline-block;color:#0080ff}.multi_timeline-topic-filter .window-bottom-buttons .topic-search-filter-post:before{content:'p';vertical-align:middle;font-size:20px;line-height:20px;padding-right:5px;color:#0080ff}#post-content,.post-permlink .buttons-content{padding:15px}.before-renewal .post-body{padding:15px;background-color:#ebebeb;background-color:rgba(200,200,200,.3);-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px}.before-renewal .post-body p{margin-bottom:10px}.before-renewal .post-body .button{max-width:380px}.post-permlink .buttons-content:after{content:"";display:block;clear:both}.post-permlink .buttons-content .embed-link-button{margin:10px 0 0;float:left}.post-permlink .buttons-content .report-buttons-content{margin:10px 0;float:right}#post-content .community-container{font-weight:700;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;-ms-border-radius:5px 5px 0 0;-o-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}#post-content .user-content{display:table}#post-content .icon-container,#post-content .user-name-content{display:table-cell;vertical-align:middle;float:none}#post-content .user-name-content{padding-left:10px}#post-content .user-organization{font-size:11px}#post-content .user-name{font-size:16px}#post-content .user-id{margin-left:5px;color:#969696;font-size:14px;font-weight:400}#post-content .timestamp-container{font-size:14px;color:#969696;margin-top:1px;line-height:1.2em}#post-content .timestamp-container .timestamp{color:#969696}#post-content .body{clear:both;font-size:18px;padding:10px 0 0}#post-content .screenshot-container{margin-bottom:8px}#post-content .post-content-memo{margin:10px auto 0;text-align:center}#post-content .post-content-memo img{width:100%;background-color:#fff}#post-content .video{margin-top:10px}#post-content .video,#post-content .video iframe{width:100%;height:auto;min-height:330px;margin-left:0;margin-bottom:0;vertical-align:bottom}#post-content .video iframe:after,#post-content .video:after{display:none}#post-content .post-meta{padding-top:20px}#post-content #close-topic-post{margin:15px 0 -5px}#post-content #close-topic-post input{width:320px}#post-content .select-button-label{font-size:14px}#post-content .select-button-label:after{content:" : "}#post-content .select-button-label:before{content:'#';font-weight:400;font-size:16px;margin-right:5px;vertical-align:middle;color:#969696;margin-top:-3px;display:inline-block}#post-content .select-content{margin:10px 0}#post-content select#body-language-selector{min-width:50%;margin:0 0 10px}#empathy-content{clear:both;position:relative;padding:6px 8px;margin:-5px 15px 20px;border:1px solid #ddd;background:#f9f9f9;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px}#empathy-content:after{content:"";display:block;clear:both}#empathy-content:before{content:'';position:absolute;display:block;width:10px;height:7px;top:-6px;left:22px;background:url(/s/img/balloon-part-empathy.png) no-repeat;-webkit-background-size:10px 7px;-moz-background-size:10px 7px;-ms-background-size:10px 7px;-o-background-size:10px 7px;background-size:10px 7px}#empathy-content .post-permalink-feeling-icon{float:left;display:block;width:48px;height:48px;margin:2px}#empathy-content .post-permalink-feeling-icon img{width:46px;height:46px;background:#fff;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px}#empathy-content.none+.buttons-content,#post-content+.buttons-content{border-top:1px solid #fff}.buttons-content .post-social-buttons-wrapper{text-align:left}.buttons-content .social-buttons-heading{font-size:12px;color:#969696;font-weight:700;margin-bottom:5px;text-align:left}#reply-content.no-reply{display:none}#reply-content .no-reply-content{padding:30px 0;color:#969696;text-align:center}#reply-content .no-reply-content p{display:inline-block;text-align:left}#reply-content button.more-button{font-size:14px;padding:13px 10px 11px;border:none;display:block;color:#323232;font-weight:700;text-align:center;background:0 0;width:100%}#reply-content button.more-button:after{content:"";display:block;clear:both}#reply-content button.more-button.newer-replies-button,#reply-content button.more-button.newest-replies-button{border-top:1px solid #ddd;border-bottom:none}#reply-content button.more-button:hover{background-color:#f9f9f9}#reply-content button.more-button.loading img{width:22px;height:22px}#reply-content button.more-button span:before{font-size:14px;margin-right:3px;color:#646464}#reply-content button.more-button.oldest-replies-button span:before{content:'/'}#reply-content button.more-button.older-replies-button span:before{content:'-'}#reply-content button.more-button.newest-replies-button span:before{content:'*'}#reply-content button.more-button.newer-replies-button span:before{content:'+'}#reply-content button.more-button span.loading:before{content:''}#reply-content .info-reply-list+button.more-button,#reply-content .more-button+.more-button{border-top:1px solid #ddd}#reply-content .list .my{background-color:#e6fbff}#reply-content .list>li.my:hover{background-color:#c7f6ff}.reply-list .icon-container{width:50px;height:50px;margin-right:8px}.reply-list .icon-container .icon{width:48px;height:48px}.reply-list .body{margin-left:58px}.reply-list .header{margin-bottom:5px}.reply-list .timestamp-container,.reply-list .user-name{display:inline}.reply-list .timestamp-container{font-size:12px;padding-left:5px}.reply-list .reply-content-memo,.reply-list .reply-content-text{margin-top:4px;font-size:16px}.reply-list .reply-content-memo{text-align:center}.reply-list .reply-content-memo img{width:100%;max-width:320px;background-color:#fff}.reply-list .reply-meta{padding-top:10px}.reply-list .screenshot-container{max-width:400px;margin:5px auto}.reply-list .hidden .screenshot-container{margin:0}.cannot-reply{padding:30px 0;color:#969696;text-align:center}.post-permalink-button{background:url(/s/img/icon-arrow-left.png) 15px center no-repeat #fff;color:#323232;display:table;width:100%;min-height:68px;-webkit-background-size:9px 15px;-moz-background-size:9px 15px;-ms-background-size:9px 15px;-o-background-size:9px 15px;background-size:9px 15px}.post-permalink-button>span{text-align:left;display:table-cell;vertical-align:middle;padding:10px}.post-permalink-button .icon-container{width:50px;height:50px;padding:10px 0 10px 40px;float:none}.post-permalink-button .icon-container .icon{width:48px;height:48px}.post-permalink-button .post-user-description{font-weight:700}.post-permalink-button:hover{background-color:#f9f9f9}.reply-permalink-post{padding:15px}.reply-permalink-post #empathy-content{margin:10px 0}.reply-permalink-post .reply-content-memo .post-memo{width:100%;background-color:#fff}.main-column-hatebu-entries{margin-top:30px}.main-column-hatebu-entries .post-list-outline{overflow:visible}.hatebu-entries h2{border-color:#00A5DE;color:#00A5DE;position:relative;padding-left:65px;padding-top:12px;line-height:1.3}.hatebu-entries h2:after{content:"";display:block;clear:both}.hatebu-entries .hatebu-entries-label-icon{position:absolute;left:15px;bottom:10px;width:40px;height:40px}.hatebu-entries .hatebu-label-about{float:right;display:inline-block;margin:5px 0 0 5px;font-size:12px;color:#00A5DE}.hatebu-entries .hatebu-label-about a{color:#00A5DE;text-decoration:underline}.hatebu-entries .hatebu-entries-list a{color:#323232}.hatebu-entries .hatebu-entries-list .hatebu-entries-meta{display:block}.hatebu-entries .hatebu-entries-list .hatebu-entries-host{color:#969696;font-size:12px}.hatebu-entries .hatebu-entries-list .hatebu-entries-users{color:#FF4166;margin-right:10px}.hatebu-entries .hatebu-show-more{text-align:right}.hatebu-entries .hatebu-more-icon{width:20px;height:20px;vertical-align:middle}.user-organization{display:block;font-size:12px;color:#0080ff}.search form.search{margin:15px auto;width:95%}.search .search-content p.note{margin:5px 10px 10px}.album-content .album-list{clear:both;margin:4px 10px 15px}.album-content .album-list:after{content:"";display:block;clear:both}.album-content .album-list a.screenshot-container{background-size:100% auto;background-position:center;background-repeat:no-repeat;background-color:#fff;display:block;float:left;margin:6px .5% 0;width:49%;height:132px}.album-content .community-list-body+.album-list{margin:-7px 7px 15px}.album-dialog .dialog-inner{padding:0 15px}.album-dialog .window{max-width:830px;width:auto}.album-dialog .window-title{white-space:normal}.album-dialog .window-body{padding:0}.album-dialog img{display:block;margin-bottom:15px;max-height:320px;min-height:300px;max-width:100%;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px}.album-dialog .img-wrapper{display:inline-block;text-align:right;padding:0 10px}.album-dialog .created-at{color:#969696;margin:15px 0 3px;display:block}.album-dialog .button{position:relative;display:inline-block;min-height:0}.album-dialog .button input{position:absolute;top:0;left:0;border:0;margin:0;padding:0;opacity:0;width:100%;height:100%;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;appearance:none}.album-dialog .album-delete-button,.album-dialog .album-diary-button{width:200px;margin:0 10px}.album-dialog .album-diary-button:before{color:#00b7d8;content:"%";margin-right:3px;font-size:16px;line-height:14px}.album-dialog .album-diary-button.disabled:before{color:#969696}.album-dialog .album-delete-button:before{color:#323232;content:"d";margin-right:3px}.album-dialog .album-close-button{width:100%;max-width:100%;background:-webkit-linear-gradient(bottom,#e9e9e9,#fff);border:0;-webkit-box-shadow:0 1px 10px rgba(1,1,1,.4);-moz-box-shadow:0 1px 10px rgba(1,1,1,.4);-ms-box-shadow:0 1px 10px rgba(1,1,1,.4);-o-box-shadow:0 1px 10px rgba(1,1,1,.4);box-shadow:0 1px 10px rgba(1,1,1,.4);margin-top:20px;-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;-ms-border-radius:0 0 5px 5px;-o-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px;font-size:16px}#diary-container #diary-user-content{padding:5px 10px 10px;text-align:center;background-image:url(/s/img/bg-gray-dot.png);background-size:14px auto;border-bottom:1px solid #ddd;border-top:4px solid #04c9db}#diary-container .icon-container{margin:15px auto 0;float:none;position:relative;overflow:visible}#diary-container .icon-container:before{content:'%';font-size:20px;color:#04c9db;position:absolute;right:-9px;bottom:-3px;background-color:#fff;line-height:24px;height:23px;width:25px;border-radius:6px}#diary-container .user-organization{margin:7px 0 0;display:block;line-height:1;font-size:12px;color:#0080ff}#diary-container .nick-name{font-size:16px;font-weight:700;margin:3px 0}#diary-container #post-diary-window+#diary-user-content{border-bottom:none}#diary-container .report-buttons-content{margin:0}#post-diary-window{padding:20px;background:#04c9db;text-align:center;margin-top:-1px}#post-diary-window p{color:#fff;margin-bottom:7px;display:inline-block;text-align:left}#diary-post-form{padding-top:56px;margin-top:-56px}#image-header-content{background-position:center bottom;background-repeat:repeat-x;background-size:14px auto;background-image:url(/s/img/bg-gray.png);min-height:140px;width:100%;position:relative;display:table}#image-header-content:after{content:"";display:block;clear:both}#image-header-content .image-header-title{line-height:140px;display:table-cell;vertical-align:middle;width:100%}#image-header-content .image-header-title .title{color:#0080ff;font-size:18px;margin:0 0 10px 20px;line-height:1.3em;display:block;font-weight:700}#image-header-content .image-header-title .text{font-size:14px;margin:0 0 0 20px;line-height:1.2em;display:block}#image-header-content img{display:block;width:157px;height:auto;padding:15px 15px 15px 10px}.identified_user .post-list .text{color:#969696;height:21px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;word-wrap:normal}.identified_user .post-list .timestamp-container{float:left;margin-top:5px}.identified_user .post-list .multi-language-post{float:left;font-size:14px;padding-top:5px;margin-left:10px}#help .help-content{padding:15px;margin:0 auto}#help .help-content:after{content:"";display:block;clear:both}#help .help-content h2,.index-memo h2:not(.label){clear:both;padding:5px 10px 3px;margin-top:2em;background:#0080ff;color:#fff;font-size:14px;border-radius:5px}.index-memo h2:not(.label){margin-bottom:5px;margin-top:14px}#help .help-content .num1 h2{margin-top:0}#help .help-content h3{clear:both;margin-top:1.5em;border-bottom:2px solid #0080ff;font-size:14px;font-weight:700}#help .help-content div,#help .help-content p{font-size:14px;margin:10px 0}#help .help-content p.guide-img{text-align:center;margin:20px 0}#help .help-content .attention img,#help .help-content p img{vertical-align:middle;max-width:300px;width:100%}#help .help-content p.guide-img5 img,#help .help-content p.guide-img7 img{width:120px}#help .help-content .attention{clear:both;padding:5px 10px 0;border:3px solid #81e52e;margin:20px 0 0;background:#fff;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px}#help .help-content .attention .title{margin:0 -5px 5px;padding:5px;color:#fff}#help .help-content .attention p.title img{width:20px;height:18px;margin-right:3px;vertical-align:middle}#help .help-content ol,#help .help-content ul{padding-left:1.2em;margin:0 0 1.2em}#help .help-content .help-display-img+ol,#help .help-content .help-display-img+ul{padding-left:55px}#help .help-content .help-display-img+ol .img-anchor-button,#help .help-content .help-display-img+ul .img-anchor-button{margin:-3px 0 0 -55px}#help .help-content ol li,#help .help-content ul li{padding:.5em 0 0}#help .help-content .note,#help .help-content li p{color:#646464;font-size:12px;margin:5px 0}#help .help-content .note{padding-left:30px}#help .help-content .note:before{content:'\25C6 ';margin-left:-30px;margin-right:5px}#help .help-content ol li:before,#help .help-content ul li:before{content:'\25CF ';margin:0 .2em 0 -1.2em}#help .help-content ul ul li:before{content:'\25CB '}#help .help-content ol li:nth-child(1):before{content:'\2776 '}#help .help-content ol li:nth-child(2):before{content:'\2777 '}#help .help-content ol li:nth-child(3):before{content:'\2778 '}#help .help-content ol li:nth-child(4):before{content:'\2779 '}#help .help-content ol li:nth-child(5):before{content:'\277A '}#help .help-content ol li:nth-child(6):before{content:'\277B '}#help .help-content ol li:nth-child(7):before{content:'\277C '}#help .help-content ol li:nth-child(8):before{content:'\277D '}#help .help-content ol li:nth-child(9):before{content:'\277E '}#help .help-content ol li:nth-child(10):before{content:'\277F '}#help .help-content ol li:nth-child(11):before{content:'\24EB '}#help .help-content ol li:nth-child(12):before{content:'\24EC '}#help .help-content ol li:nth-child(13):before{content:'\24ED '}#help .help-content ol li:nth-child(14):before{content:'\24EE '}#help .help-content ol li:nth-child(15):before{content:'\24EF '}#help .help-content ol li:nth-child(16):before{content:'\24F0 '}#help .help-content ol li:nth-child(17):before{content:'\24F1 '}#help .help-content ol li:nth-child(18):before{content:'\24F2 '}#help .help-content ol li:nth-child(19):before{content:'\24F3 '}#help .help-content ol li:nth-child(20):before{content:'\24F4 '}#help .help-content#guide .num1 h3,#help .help-content#guide .num1 li:before,#help .help-content.num1 li:before{color:#ff9100}#help .help-content#guide .num2 h3,#help .help-content#guide .num2 li:before,#help .help-content.num2 li:before{color:#ff6473}#help .help-content#guide .num4 h3,#help .help-content#guide .num4 li:before,#help .help-content.num4 li:before{color:#00a8e8}#help .help-content#guide .num5 h3,#help .help-content#guide .num5 li:before,#help .help-content.num5 li:before{color:#0092aa}#help .help-content#guide .num6 h3,#help .help-content#guide .num6 li:before,#help .help-content.num6 li:before{color:#46c81e}#help #guide .num1 h2,#help .index-title1,#help .num1 .help-display-img a,#help .num1 a.img-anchor-button{background:#ff9100}#help #guide .num2 h2,#help .index-title2,#help .num2 .help-display-img a,#help .num2 a.img-anchor-button{background:#ff6473}#help #guide .num1 h3,#help .num1 .attention,#help .num1 .table td,#help .num1 .table th{border-color:#ff9100}#help #guide .num2 h3,#help .num2 .attention,#help .num2 .table td,#help .num2 .table th{border-color:#ff6473}#help .num1 .attention .title{background-color:#ff9100}#help .num2 .attention .title{background-color:#ff6473}#help .faq .attention .title{background-color:#0080ff}#help .guide-img6:after{content:"";display:block;clear:both}#help .guide-img6 img{float:right;width:70px;height:70px}.warning-content{background:#fff;border:1px solid rgba(0,0,0,.1);overflow:hidden;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.2);-moz-box-shadow:0 1px 0 rgba(0,0,0,.2);-ms-box-shadow:0 1px 0 rgba(0,0,0,.2);-o-box-shadow:0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 0 rgba(0,0,0,.2);-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;min-height:300px;max-width:625px;margin:20px auto;display:table;padding:0;color:#646464;font-size:16px;text-align:center}.warning-content>div{display:table-cell;vertical-align:middle;width:900px;padding:30px}.warning-content>div p{padding:30px 0;text-align:left}.warning-content .black-button{display:inline-block;margin:0 auto;width:auto}.warning-content-unactivated form+div{line-height:0}.warning-content-unactivated img{margin-bottom:-30px;width:100%}.warning-content-unactivated form{margin-bottom:30px}.warning-content-restricted>div p{padding-bottom:0}.warning-content-restricted>div p:after{content:"";display:block;clear:both}.warning-content-restricted img{margin-top:20px;margin-left:20px;width:100px;float:right}.warning-content-forward>div strong{margin-top:10px;font-size:21px;border-bottom:none;text-align:center;display:block;color:#0080ff}.warning-content-forward>div p{display:inline-block;padding:20px 0 30px;text-align:left}.warning-content-forward form{margin-bottom:20px}@media screen and (max-width:980px){#footer-selector,#sidebar,.main-column{width:100%;float:none}body{border-top-width:4px}#wrapper{width:100%}#main-body{margin:0 auto;max-width:625px;padding-right:5px;padding-left:5px}#sidebar{margin:0}.general-sidebar{display:none}#footer-inner{max-width:620px;text-align:center}#footer-inner .link-container{text-align:center;padding-top:10px}#footer-inner #region-select-page+#copyright{text-align:center}#sidebar,.main-column{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box}#cookie-policy-notice .cookie-content{width:630px;font-size:13px;display:table}#cookie-policy-notice p{padding:0 10px;max-width:100%}#cookie-policy-notice button{font-size:14px}#sidebar+.main-column{float:none;margin-bottom:60px;padding:0}.main-column.replyform-bottom{margin-bottom:40px}.main-column.messages{margin-bottom:60px!important}#global-menu{width:615px}#global-menu #global-menu-list{float:inherit}#global-menu #global-menu-list>ul>li{float:left;width:16.6%;padding:0;text-align:center}#global-menu #global-menu-list>ul>li#global-menu-my-menu button,#global-menu li#global-menu-news a{width:100%}#global-menu #global-menu-list>ul>li>a{padding:0 1px;text-align:center;position:relative;display:block;height:54px}#global-menu #global-menu-list>ul>li>a:before{padding:0;display:inline-block}#global-menu #global-menu-list>ul>li>a:hover{-webkit-box-shadow:none;-moz-box-shadow:none;-ms-box-shadow:none;-o-box-shadow:none;box-shadow:none;background-color:#f4f4f4}#global-menu #global-menu-list>ul>li>a:after,#global-menu #global-menu-list>ul>li>a>span{display:none}#global-menu #global-menu-list>ul>li>a>span.icon-container{display:block}#global-menu #global-menu-list>ul>li#global-menu-my-menu button:before{padding:0;display:inline-block}#global-menu #global-menu-list>ul>li#global-menu-my-menu button:after{display:inline-block}#global-menu-logo,.sidebar-container .community-list{display:none}#global-menu #global-menu-list>ul>li#global-menu-my-menu button:hover{-webkit-box-shadow:none;-moz-box-shadow:none;-ms-box-shadow:none;-o-box-shadow:none;box-shadow:none;background-color:#f4f4f4}#global-menu li#global-menu-community a,#global-menu li#global-menu-feed a{padding-left:0}#global-menu li#global-menu-mymenu .icon-container{float:none;margin:0 auto;position:relative;top:9px}#global-menu li.selected a{border-bottom:2px solid #0080ff}#global-menu #global-my-menu{top:62px}#global-menu #global-my-menu:after,#global-menu #global-my-menu:before{right:25%}#global-menu #global-menu-message .badge{left:40%!important}.list>a,.list>div,.list>li,.list>span{margin:0}.list.post-list>div:last-child{-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;-ms-border-radius:0 0 5px 5px;-o-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px}.community-card-list>li{margin:0 1% 10px 0}#reply-content .list>li.my:hover{background-color:#c7f6ff}.list-content-with-icon-and-text li{margin:0}.list-content-with-icon-and-text .text{height:auto}.sidebar-setting .sidebar-post-menu{display:table;width:100%}.sidebar-setting .sidebar-post-menu a{background-image:none;border-top:none;border-right:1px dashed #ddd;display:table-cell;padding:15px 0 10px;vertical-align:top;width:22%}.sidebar-setting .sidebar-post-menu a:last-child{border:none}.sidebar-setting .sidebar-post-menu a:before{display:block;width:auto;padding:0 10px 5px;position:static;margin:0}.sidebar-setting .sidebar-post-menu a>span{display:block;padding:0 10px;text-align:center;width:auto}.sidebar-setting .sidebar-post-menu a.with-count>.post-count{position:static;padding:0 10px}.sidebar-setting .sidebar-post-menu a.with-count>.post-count span{display:block;width:auto;max-width:150px;margin:0 auto}.community-name{font-size:18px}.sidebar-favorite-community ul{height:82px;margin-bottom:5px;overflow:hidden}.sidebar-favorite-community li.favorite-community{width:10%;margin:0 .5%;min-height:83px}.sidebar-favorite-community li.favorite-community:nth-child(5n+1){clear:none}.sidebar-favorite-community li.favorite-community:nth-child(10){clear:both}.general-sidebar #sidebar-cover,.user-sidebar #sidebar-cover{min-height:230px}#edit-profile-settings,.sidebar-favorite-community,.sidebar-profile{display:none}.profile-top #edit-profile-settings,.profile-top .sidebar-favorite-community,.profile-top .sidebar-profile{display:block}#sidebar-community .favorite-button,.community-description{display:none}.community-top #sidebar-community .favorite-button,.community-top .community-description{display:block}form.search{margin:0 0 10px}.search .search-content p.note{margin:0;padding:0 10px 15px}h3.label{margin-top:0}.community-main{width:100%;float:none}.community-top-sidebar{width:100%;float:none;margin-top:12px}#community-eyecatch-menu{text-align:center}#community-eyecatch-menu li{float:none;display:inline-block}.digest-container,body.community-post-list #sidebar-cover{display:none}#page-title+.community-list{margin-top:0}#identified-user-banner{margin-bottom:12px}.post-list>.post-list-outline{margin-bottom:15px}.post-list .screenshot-container.image{margin:0 0 15px}.post-list .screenshot-container.image img{max-width:320px;width:100%;height:auto;max-height:320px}.post-list .recent-reply-content{background-color:#f3f3f3;border:none;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px}.post-list .recent-reply-content .recent-reply-read-more-container:hover,.post-list .recent-reply-content .recent-reply:hover{background-color:#ececec}.post-list .recent-reply-content .recent-reply-read-more-container{border-bottom:1px solid #ddd}.user-data .note{padding:0 10px;text-align:center;font-size:16px}.user-data .user-main-profile{display:table}.user-data .user-main-profile h4{display:table-cell;float:none;width:1%}#about img,#about-text,#community-guide-footer{width:100%;float:none}.user-data .user-main-profile .note{display:table-cell}.user-data .data-content.game .note span{display:inline-block}#about img,.guest:not(.user) #global-menu-logo{display:block}.user-data .data-content.game .note div{margin:0 8px}.login-page .g-recaptcha{margin:10px 0 15px!important}.redesign-banner{position:relative;min-width:428px;padding-left:45px;font-size:14px;margin:0 auto 15px;top:auto}.redesign-banner .redesign-banner-text{max-width:100%}#global-menu-login{vertical-align:middle;text-align:right}#global-menu li{width:auto}#global-menu li a{height:auto;background-color:transparent}#main-body{padding-top:0}#community-top{padding:10px 5px 0;margin:0 auto;max-width:625px}#cookie-policy-notice{top:0}#about-inner{max-width:615px;padding:0 0 35px}.guest-terms-content{margin-top:7px}#about img{max-width:500px;margin:20px auto 0}.album-dialog .window{max-width:580px}.album-dialog .created-at{margin-top:5px}.album-dialog img{min-height:0;margin-bottom:15px;max-height:240px}}@media screen and (max-width:660px){#global-menu,#wrapper{min-width:320px}#global-menu{width:100%;margin:0 auto}#global-menu li a:before{font-size:30px}#global-menu li#global-menu-mymenu .icon-container{width:36px;height:36px;top:10px}#global-menu li#global-menu-mymenu .icon-container .icon{width:34px;height:34px}#global-menu li#global-menu-my-menu button:before{font-size:24px}#global-menu #global-my-menu{width:90%;margin:0 5%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box}#global-menu #global-my-menu:after,#global-menu #global-my-menu:before{right:6%}#main-body{max-width:480px}#footer-selector li{font-size:10px;padding:0;margin:0 5px}.pager-button{margin:15px auto 5px;width:auto}.pager-button .selected{padding:9px 30px 7px;width:auto}.pager-button .back-button,.pager-button .next-button{padding:9px 20px 7px;width:auto}.no-content{font-size:14px}.no-content.no-content-favorites>div{padding:15px 70px 15px 10px}.no-content.no-content-favorites .favorite-community-link.symbol{right:10px}div#activity-feed-tutorial{margin:5px 10px 10px;padding:13px 10px 5px}div#activity-feed-tutorial p.tleft{float:none;width:100%;margin-bottom:6px;font-size:12px}div#activity-feed-tutorial img.tutorial-image{width:50%;display:block;margin:0 auto}div#activity-feed-tutorial h3{padding:5px 0 3px;line-height:1.3em;font-size:12px}div#activity-feed-tutorial.no-content p.tleft{color:#323232;font-size:12px}.dialog .window{width:300px}.dialog.track-error .window-body{padding:15px 15px 25px}.simple-wrapper #wrapper{width:auto;margin-top:0}.simple-wrapper.simple-wrapper-content #wrapper{margin:20px 10px 0}.simple-wrapper.simple-wrapper-content #main-body{border:none}#empathy-content .icon-container.donator:after,#reply-content .icon-container.donator:after,.news-list .icon-container.donator:after{content:url(/s/img/donator.png);width:17px;height:17px}#empathy-content .icon-container.tester:after,#reply-content .icon-container.tester:after,.news-list .icon-container.tester:after{content:url(/s/img/tester.png);width:17px;height:17px}#empathy-content .icon-container.moderator:after,#reply-content .icon-container.moderator:after,.news-list .icon-container.moderator:after{content:url(/s/img/moderator.png);width:17px;height:17px}#empathy-content .icon-container.administrator:after,#reply-content .icon-container.administrator:after,.news-list .icon-container.administrator:after{content:url(/s/img/administrator.png);width:17px;height:17px}#empathy-content .icon-container.developer:after,#reply-content .icon-container.developer:after,.news-list .icon-container.developer:after{content:url(/s/img/developer.png);width:17px;height:17px}#empathy-content .icon-container.openverse:after,#reply-content .icon-container.openverse:after,.news-list .icon-container.openverse:after{content:url(/s/img/open-dev.png);width:17px;height:17px}.button{font-size:14px;width:85%;padding:8px 10px 6px}.big-button{width:80%;font-size:14px;padding:10px 0 8px}.user-sidebar .unfollow-button:before{line-height:35px}.dialog .window-body .black-button,.dialog .window-body .button,.dialog .window-body .gray-button{min-width:120px;font-size:12px}.main-column .social-buttons-content:after{clear:none}.social-buttons-content{display:table}.social-buttons-content+.report-buttons-content{margin:10px 0 0}.social-buttons-content.social-buttons-content-primary{width:100%;table-layout:fixed}.social-buttons-content .social-button.line,.social-buttons-content .social-buttons-content-cell.line{display:block}.social-buttons-content .social-buttons-content-cell{display:table-cell;padding-right:5px}.social-buttons-content .embed-link-button{font-size:10px;clear:both;float:left;margin-top:10px;min-height:25px;max-width:50%;text-align:left}.social-buttons-content.is-disable-twitter{display:block}.social-buttons-content.is-disable-twitter .social-buttons-content,.social-buttons-content.is-disable-twitter .social-buttons-content-cell{display:inline-block}#empathy-content+.buttons-content,#post-content+.buttons-content{padding:10px}.reply-list .reply-meta .button,.report-buttons-content .button{font-size:10px;margin-left:15px}.post-filter{padding:0}#disabled-report-violation-notice .window-body-inner p{margin:5px 10px 0}.button-shop{padding-right:30px!important}.sidebar-setting .sidebar-post-menu a span{font-size:10px;line-height:12px;padding:0 3px}.sidebar-setting .sidebar-post-menu a .post-count{margin:5px auto 0;padding:0 10px}.sidebar-setting .sidebar-post-menu a .post-count span{padding:2px 0}.general-sidebar #sidebar-cover,.user-sidebar #sidebar-cover{min-height:0;background-image:none}.general-sidebar #sidebar-cover img,.user-sidebar #sidebar-cover img{display:block;width:100%;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;-ms-border-radius:5px 5px 0 0;-o-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.user-sidebar .sidebar-setting .sidebar-post-menu{table-layout:fixed}.user-sidebar .sidebar-setting .sidebar-post-menu a span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;word-wrap:normal}.sidebar-favorite-community ul{height:auto;overflow:visible;max-width:350px;margin:0 auto;padding:5px 10px 15px}.sidebar-favorite-community li.favorite-community{width:18%;margin:0 1% 5px;min-height:0}.sidebar-favorite-community li.favorite-community:nth-child(5n+1){clear:both}.sidebar-favorite-community li.favorite-community:nth-child(10){clear:none}.sidebar-favorite-community .platform-tag{margin:2px 0 0}#sidebar-community-body{padding:10px 10px 5px}.community-description{margin:0 10px 15px;font-size:13px;padding:10px}.list>a,.list>div,.list>li,.list>span{padding:10px}.list .icon-container{width:50px;height:50px}.list .icon-container .icon{width:48px;height:48px}.list .toggle-button .button{width:94px;height:30px;line-height:30px;padding:0 28px 0 0}.list .toggle-button .button:before{height:28px;line-height:28px}.list .user-community .icon-container .icon,.list .user-community .icon-container .user-icon{width:32px;height:32px}.news-list .icon-container{margin-right:8px}.community-list>li{padding:0}.community-list .siblings:before{font-size:27px}.community-list .siblings+.body{margin-right:38px}.community-list .body{padding:5px 10px 0}.community-list .news-community-badge{padding:0 3px;top:-3px}.community-list .news-community-badge+.title{margin-top:-3px}.community-list .title{margin-bottom:2px}.community-list .users{margin-top:1px;margin-right:3px;background-color:#e9e9e9}.community-card-list{margin:0 0 5px}.community-card-list>li{width:100%;margin:0 0 7px}.community-small-list .icon-container{width:38px;height:38px}.community-small-list .icon-container .icon{width:36px;height:36px}.community-small-list .title{margin-bottom:7px;font-size:14px}#community-eyecatch-menu li{margin-right:5px}#community-eyecatch-main{height:333px}#community-eyecatch-main .icon-container{width:38px;height:38px;margin-top:20px}#community-eyecatch-main .icon-container .icon{width:36px;height:36px}.community-eyecatch-image{padding:200px 10px 10px}.community-eyecatch-balloon{float:none;width:auto;margin-left:50px}.community-eyecatch-balloon:after{margin-top:3px}.list-content-with-icon-and-text li{padding:10px}.list-content-with-icon-and-text .body{margin-left:58px}.list-content-with-icon-and-text .title{margin-bottom:0;margin-top:6px}.list-content-with-icon-and-text .nick-name{font-size:14px}.list-content-with-icon-and-text .id-name{font-size:10px}.count,.list-content-with-icon-and-text .text{font-size:12px}.list-content-with-icon-and-text .user-profile-memo-content{width:auto;min-height:0;margin-right:0}.list-content-with-icon-and-text .toggle-button{margin:3px 0 0 5px}#community-favorite{padding-bottom:3px;padding-right:10px}#community-favorite ul{padding-right:55px;max-width:320px;margin:0 auto}#community-favorite li{width:21%;height:inherit;margin:0 2% 2%}#community-favorite li:nth-child(5){clear:both}#community-favorite .read-more .favorite-community-link.symbol{right:0}#community-favorite .icon-container{display:block;height:100%;width:100%}#community-favorite .icon-container .icon{width:100%;height:auto}#community-favorite .empty-icon{width:100%}#community-favorite .user-community .icon-container .icon{width:100%;height:auto;position:static}#community-favorite .user-community .icon-container .user-icon{width:50%;height:auto;right:3px;bottom:5px}.follow-list .body{float:none;width:auto}.follow-list .toggle-button{margin:4px 0}.follow-list .title{line-height:1.2em;margin-top:5px}.follow-list .text{margin-top:3px}.follow-list .user-profile-memo-content{width:100%;max-width:320px;min-height:0}.headline h2{padding:10px 5px 0}.headline form.search{position:relative;margin:10px 0 0;width:auto}.count{margin:7px 10px 0}h2.label,h3.label{padding:12px 12px 8px;font-size:14px}.tab2 a,.tab3 a{font-size:10px;height:20px;padding:5px 2px 3px}.tab2 a span.number,.tab3 a span.number{min-width:3em;padding:1px 3px 0}.tab2.user-menu-activity a,.tab3.user-menu-activity a{padding:0 5px}.tab2 a{width:50%}.tab3 a{width:34%}.tab3 a:first-child,.tab3 a:last-child{width:33%}.tab-header-community{margin:0 auto 5px}#tab-header-official-tags{font-size:10px}.select-tab2{margin-top:20px;width:95%}.select-tab2 a,.select-tab2 select{font-size:10px;padding:5px 6px 3px}.select-tab2 a{height:20px;line-height:17px}.select-tab2 .filter-dropdown-container:before{font-size:10px;line-height:28px;padding:0 7px}#post-form{margin:15px 10px}#post-form.folded{margin:15px 10px 0}#post-form.folded .textarea-text{height:4.5em}.post-list-outline.more{margin-bottom:40px}#reply-form{margin:15px 10px 20px}select{min-width:90%!important;max-width:100%!important;white-space:pre-wrap}.topic-categories-container select{min-width:80%!important}.warning-content-forward .age-gate p{padding:20px 0 15px}.warning-content-forward .age-gate .select-content{margin-bottom:35px}.warning-content-forward .age-gate .select-button{width:70px}.warning-content-forward .age-gate .year-select{width:90px}.open-topic-post-existing-warning .content{padding:15px 20px}.open-topic-post-existing-warning .window-bottom-buttons{margin-top:8px}.search .search-content p.note{padding:5px 5px 10px;line-height:1.2em;font-size:12px}.search .no-title-content{min-height:120px;text-align:left;width:auto;-webkit-box-align:start;-moz-box-align:start;-ms-box-align:start;-o-box-align:start;box-align:start}.search .no-title-content p{padding:0 10px}.post-form-album-content{max-width:454px}#official-tags-page li{max-width:260px}.setting-form{margin:10px 0}.setting-form li{margin:0;padding:0 10px 15px}.setting-form .settings-label{margin:15px 0 5px}.content-loading-window.activity-feed{padding:60px 10px}.content-loading-window.activity-feed p{font-size:12px}.content-load-error-window.activity-feed{padding:20px 10px 10px}.content-load-error-window.activity-feed p{font-size:12px;margin:10px}#community-top .platform-logo{width:100px;margin-top:-3px}#community-content .title{font-size:14px;line-height:1.4}#community-content .news-community-badge{padding:0 3px}#community-content .text{font-size:12px;line-height:1.2}.filtering-label-container{margin:0 10px}.filtering-label-container .tag-name,.filtering-label-container p{font-size:12px;line-height:1.2em}.community-title{margin-top:1.5em}p.note-jasrac{padding-left:5px;padding-right:5px}.post .community-container{margin:-10px -10px 10px}.post .post-tag{font-size:14px}.post .post-content-text{font-size:16px}.post .topic-body{font-size:14px}.post-list .icon-container{margin:0 6px 5px 0;width:38px;height:38px}.post-list .post-content-memo,.post-list .screenshot-container{margin-right:0}.post-list .icon-container .icon{width:36px;height:36px}.post-list .user-name{display:block}.post-list .timestamp-container{display:block;padding-left:0;font-size:12px}.post-list .body{margin-left:0;clear:both}.post-list .screenshot-container img{height:auto}.post-list .screenshot-container.video img{height:50px}.post-list .post{padding:10px}.post-list>.post-list-outline a.another-posts{margin:10px -10px -10px}.post-list .recommend-user-container{padding:0}.post-list .recommend-user-container li{padding:10px}.post-list .recommend-user-container .body{clear:none}.post-list .recent-reply-content .recent-reply-read-more-container{font-size:10px}.post-list .recent-reply-content .icon-container{width:38px;height:38px;margin-right:6px}.post-list .recent-reply-content .icon-container .icon{width:36px;height:36px}.post-list .recent-reply-content .timestamp-container,.post-list .recent-reply-content .user-name{display:inline}.post-list .recent-reply-content .post-content{margin:0}.post-list .recent-reply-content .body{margin-left:44px;padding-top:0;clear:none}.post-list .recent-reply-content .recent-reply-content-memo{margin-right:44px}.post-list .recent-reply-content .recent-reply-content-memo img{height:50px}.multi-timeline-post-list .post .post-content-text{font-size:16px}.multi-timeline-post-list .post .topic-body{font-size:14px}.multi-timeline-post-list .post .screenshot-container{position:static;width:48%;height:auto;display:block;float:left;margin:0 2% 0 0}.multi-timeline-post-list .post.with-image .post-content-text,.multi-timeline-post-list .post.with-image .tag-container a,.multi-timeline-post-list .post.with-image .tag-container span{margin:0}.multi-timeline-post-list .post .screenshot-container img{width:100%;height:auto}.multi-timeline-post-list .post.with-image .body{margin:0;min-height:0}.multi-timeline-post-list .post.with-image .timestamp-container{font-size:12px}#post-content .community-container-heading,#post-content .user-name-content .user-name{font-size:14px}.multi-timeline-post-list .post.with-image .post-content-memo{display:inline-block;width:50%}.multi-timeline-post-list .post .post-meta{padding-top:10px}.multi-timeline-post-list .post-subtype-topic .post-meta,.multi-timeline-post-list .post-subtype-topic.post.with-image .body{padding:0}.post-body .multi-timeline-post-list .post-subtype-artwork{float:none;width:100%;border-top:1px solid #ddd}.post-body .multi-timeline-post-list .post-subtype-artwork:first-child{border-top:none}.post-body .multi-timeline-post-list .post-subtype-artwork .community-container{margin:-5px -5px 5px}.post-body .multi-timeline-post-list .post-subtype-artwork .post-content-memo{width:100%;display:block}.post-body .multi-timeline-post-list .post-subtype-artwork .list>div{float:none;width:100%;border-top:1px solid #ddd}.post-body .multi-timeline-post-list .post-subtype-artwork .list>div:first-child{border-top:none}.post-body .multi-timeline-post-list .post-subtype-artwork .post-content-memo img{max-width:auto}.post-body .multi-timeline-post-list .post-subtype-artwork .hidden-content{border:1px dashed #ddd}.multi-timeline-post-list .post-subtype-topic .screenshot-container{width:auto;float:right;margin:0 0 0 10px}.multi-timeline-post-list .post-subtype-topic .screenshot-container img{height:60px;width:auto}.multi-timeline-post-list .post-subtype-topic .user-container{padding:0;clear:both}.multi-timeline-post-list .post-subtype-topic .timestamp-container{display:none}.multi_timeline-topic-filter .window-bottom-buttons .button{width:100%}#post-content{padding:10px}#post-content .user-content{display:block}#post-content .community-container{padding:3px 8px}#post-content .community-container .post-subtype-label{margin:-2px -8px -5px 10px;padding:3px 9px}#post-content .community-icon{width:16px;height:16px;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0}#post-content .icon-container{display:inline-block;margin-right:8px;float:left;width:50px;height:50px}#post-content .icon-container .icon{width:48px;height:48px}#post-content .user-name-content{display:block;padding-left:0;padding-top:8px;margin-left:58px}#post-content .timestamp-container,#post-content .user-name-content .user-id{font-size:12px}#post-content .video,#post-content .video iframe{min-height:240px;width:100%}#post-content #close-topic-post input{width:80%}#post-content .post-content-text{font-size:16px}#post-content .topic-title{margin-top:2px}#post-content .topic-body{margin-top:0}#post-content #close-topic-post{margin-top:10px}#empathy-content{margin:0 10px 20px;padding:4px 5px}#empathy-content .post-permalink-feeling-icon{width:38px;height:38px;margin:2px 1.5px 1px}#empathy-content .post-permalink-feeling-icon img{width:36px;height:36px}.reply-list .icon-container{width:38px;height:38px;margin-right:8px}.reply-list .icon-container .icon{width:36px;height:36px}.reply-list .body{margin-left:46px}.reply-list .hidden-content,.reply-list .reply-content-text{font-size:14px}.post-permalink-button{background:url(/s/img/icon-arrow-left.png) 10px center no-repeat #fff;min-height:56px}.post-permalink-button>span{padding:8px}.post-permalink-button .icon-container{width:38px;height:38px;padding-left:28px}.post-permalink-button .icon-container .icon{width:36px;height:36px}.user-data h4 span{font-size:12px}.user-data .note{text-align:right;padding:0;font-size:14px}.user-data .data-content.user-main-profile{display:block}.user-data .data-content.user-main-profile h4{display:inline-block;float:left;width:auto;margin:2px 0 0}.user-data .data-content.user-main-profile .note{display:block;margin-left:10px;margin-bottom:10px}.identified_user #image-header-content img,.user-data .data-content.game .note span{display:none}.user-data .data-content.game .note div{margin:0 0 0 5px}.identified_user #image-header-content{min-height:0}.identified_user #image-header-content .image-header-title{padding:24px 0}.identified_user .post-list .text{font-size:12px;margin-right:0;line-height:17px;height:17px}#identified-user-banner a:before{background-size:auto 40px!important;height:40px;width:40px;margin:6px 7px 6px 8px}#identified-user-banner .title{font-size:14px;padding:11px 9px 5px 55px;line-height:1.1em}#identified-user-banner .text{font-size:12px;padding:0 5px 8px 55px;line-height:1em}#global-menu{padding:0 10px;box-sizing:border-box}#global-menu #global-menu-logo{padding:16px 0}#global-menu #global-menu-logo img{height:auto;width:130px}#global-menu-login input{height:30px;margin-top:4px}h2.welcome-message{font-size:18px;padding:0 0 10px}#try-miiverse .try-miiverse-catch{font-size:10px;margin:10px 10px -22px}#try-miiverse #slide-post-container .post{padding:10px 10px 8px}#try-miiverse #slide-post-container .post .screenshot-container,#try-miiverse #slide-post-container .post .screenshot-container img{height:35px}#try-miiverse #slide-post-container .post-content{max-width:305px}#global-menu{max-width:100%}#main-body{width:100%}#community-top{max-width:480px}#about{font-size:14px;padding:15px 15px 5px}#about p{padding:0}.guest-terms-content{margin:7px 0 0}.warning-content>div{padding:0 20px}.warning-content>div p{padding-top:20px;padding-bottom:20px}.warning-content form{margin-bottom:20px}.warning-content-forward>div{padding:20px}.warning-content-unactivated form{margin-bottom:40px}.warning-content-unactivated img{margin:0}.warning-content-restricted>div p{padding-bottom:0}.warning-content-restricted img{margin-top:15px;margin-left:10px;width:25%}}.index-memo,.login-page,.textarea-with-menu .textarea-poll{text-align:center}@media screen and (max-width:580px){.multi-timeline-post-list .post .post-content-memo{margin:0;display:inline-block;width:100%}.post-form-album-content{width:auto;padding-left:5px;padding-right:5px}}@media screen and (max-width:480px){#community-eyecatch-main{height:247px}.community-eyecatch-image{padding:115px 10px 10px}.post-permlink #main-body{padding:56px 0 170px}.post-permlink .main-column{padding:0;border-bottom:1px solid #ddd}.post-permlink .post-list-outline{border:none;margin:0;-webkit-box-shadow:none;-moz-box-shadow:none;-ms-box-shadow:none;-o-box-shadow:none;box-shadow:none}.community-name{font-size:16px}.album-content .album-list{margin-right:7px;margin-left:7px}.album-content .album-list a.screenshot-container{height:80px;width:48%;margin:5px 1% 0}.textarea-container .album-image-preview{width:100%;left:0;top:40px;text-align:center;padding-bottom:5px;position:static}.textarea-container .album-image-preview img{height:150px;width:auto;margin:0 auto}.textarea-container .textarea.with-image{padding-left:1.8%;width:96%;margin:0 0 8px;height:6em}#post-form{min-height:170px}#post-form.folded{min-height:0}}@media only screen and (max-height:690px){pre{max-height:140px!important}}.textarea-with-menu .textarea-menu{float:left}.textarea-with-menu .textarea-menu li{display:inline-block;float:left}.textarea-with-menu .textarea-menu label{display:block;position:relative;width:50px;height:27px;-webkit-box-sizing:border-box;border:1px solid rgba(0,0,0,.3)}.textarea-with-menu .textarea-menu label input[type=radio]{position:absolute;width:50px;height:27px;margin:0;-webkit-appearance:none}.textarea-with-menu .textarea-menu-memo,.textarea-with-menu .textarea-menu-poll,.textarea-with-menu .textarea-menu-text{background:-webkit-gradient(linear,left top,left bottom,from(#fff),color-stop(.5,#fff),to(#e6e6e6))}.textarea-with-menu .textarea-menu-memo:before,.textarea-with-menu .textarea-menu-poll:before,.textarea-with-menu .textarea-menu-text:before{content:"";background:url(/s/img/form-icons.png);position:absolute;top:3px;left:50%;margin-left:-10px}.textarea-with-menu.active-memo .textarea-menu-memo,.textarea-with-menu.active-poll .textarea-menu-poll,.textarea-with-menu.active-text .textarea-menu-text{background:-webkit-gradient(linear,left top,left bottom,from(#2e81e5),to(#005ac8))}.textarea-with-menu .textarea-menu-memo.disabled,.textarea-with-menu .textarea-menu-poll.disabled,.textarea-with-menu .textarea-menu-text.disabled{background:-webkit-gradient(linear,left top,left bottom,from(#fff),color-stop(.5,#fff),to(#e6e6e6))}.textarea-with-menu .textarea-menu li label{z-index:2}.textarea-with-menu .textarea-menu li:first-of-type label{-webkit-border-top-left-radius:6px}.textarea-with-menu .textarea-menu li:last-of-type label{-webkit-border-top-right-radius:6px}.textarea-with-menu .textarea-menu-text:before{background-position:0 0;width:20px;height:20px}.textarea-with-menu .textarea-menu-memo:before{background-position:-60px 0;width:20px;height:20px}.textarea-with-menu .textarea-menu-poll:before{background-position:-120px 0;width:20px;height:20px}.textarea-with-menu.active-text .textarea-menu-text:before{background-position:-20px 0;width:20px;height:20px}.textarea-with-menu.active-memo .textarea-menu-memo:before{background-position:-80px 0;width:20px;height:20px}.textarea-with-menu.active-poll .textarea-menu-poll:before{background-position:-140px 0;width:20px;height:20px}.textarea-with-menu .textarea-menu-text.disabled:before{background-position:-40px 0;width:20px;height:20px}.textarea-with-menu .textarea-menu-memo.disabled:before{background-position:-100px 0;width:20px;height:20px}.textarea-with-menu .textarea-menu-poll.disabled:before{background-position:-160px 0;width:20px;height:20px}.textarea-with-menu .textarea-poll .option{margin-bottom:8px;border-radius:5px}.textarea-with-menu .textarea-poll .delete:not(.none)+.option{width:calc(100% - 64px)}.textarea-with-menu .textarea-poll .delete.none+.option{width:calc(100% - 36px)}.textarea-with-menu .textarea-poll .delete{border-radius:25px;background:0 0;margin-top:1%;padding:5px 8px 8px;border:none;height:28px;float:right}.textarea-with-menu .textarea-poll .delete:before{font-family:MiiverseSymbols;font-size:16px;content:"x"}.textarea-with-menu .textarea-poll .delete:hover{background:#0080ff;color:#fff}.textarea-with-menu .textarea-poll .add-option{margin-bottom:12px;border-radius:5px;background:#888;min-width:135px;font-size:14px;padding:9px 10px;border:1px solid #444;color:#fff}.textarea-with-menu .textarea-poll .add-option:before{content:'Q';margin-right:4px}.textarea-with-menu .textarea-poll .add-option:disabled{border-color:#c4c4c4;background:#ddd;color:#919191;text-shadow:none}.login-page img{margin-top:30px;margin-bottom:10px;max-width:95%}.login-page .lh{font-weight:700;font-size:20px}.login-page .ll{margin-top:20px;margin-bottom:20px}.login-page .g-recaptcha{margin:10px auto 15px;display:block;width:50%}.index-memo{margin-top:10px}.index-memo p{width:90%;display:inline-block;padding-top:10px;padding-bottom:10px}#empathy-content .post-permalink-feeling-icon img{border:1px solid #ddd}.post-poll{position:relative;margins:0 10px}.poll-options.with-background{background-position:center;background-size:cover;padding:25% 10px 5px}.post-poll .poll-option{border-radius:5px;position:relative;display:block;padding:12px;margin:5px 0;height:20px;color:#fff;width:auto}.post-poll:not(.selected) .poll-option{background:#0080ff}.post-poll:not(.selected) .poll-option .percentage,.post-poll:not(.selected) .poll-option .poll-background{display:none}.post-poll.selected .poll-option{background:#212121;z-index:0}.post-poll.selected .poll-option.selected:before{font-family:MiiverseSymbols;content:'v';margin-right:3px}.post-poll.selected .poll-option .percentage{font-weight:700;font-size:16px;float:right}.post-poll.selected .poll-option .poll-background{border-radius:5px;background:#0080ff;position:absolute;z-index:-1;height:100%;float:left;left:0;top:0}#nprogress .bar,#splatoon{position:fixed;top:0;left:0}code,pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;page-break-inside:avoid;max-height:340px;overflow-y:auto;background-color:#f5f5f5;border-radius:4px;border:1px solid #999;font-family:Menlo,Monaco,Consolas,"Courier New",monospace}html.os-mac>pre::-webkit-scrollbar{display:block!important}#splatoon{display:block;width:100px;height:100px;z-index:2000;background:url(https://splatoon.nintendo.net/assets/en/loading/@2x-se6335ab797-cb27d69f23a4d1112bc2a0d272538f39dd3017be20e5f2e3f4a460bd0071b68d.png) no-repeat;animation:woomy .36s steps(17) infinite}@keyframes woomy{100%{background-position:0 -1700px}}#nprogress .bar{background:linear-gradient(45deg,#322ff3,#b50096);z-index:1031;width:100%;height:4px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px #b50096,0 0 4px #b50096;opacity:1;-webkit-transform:rotate(3deg) translate(0,-4px);-ms-transform:rotate(3deg) translate(0,-4px);transform:rotate(3deg) translate(0,-4px)}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .bar,.nprogress-custom-parent #nprogress .spinner{position:absolute} \ No newline at end of file diff --git a/static/closedverse.min.js b/static/closedverse.min.js new file mode 100644 index 0000000..0152dd9 --- /dev/null +++ b/static/closedverse.min.js @@ -0,0 +1 @@ +function go(e){$.pjax({url:e,container:pjax_container})}function reload(){$.pjax.reload(pjax_container)}function changesel(e){$("li.selected").removeClass("selected"),void 0!==e&&$("li#global-menu-"+e).addClass("selected")}function prlinkConf(){$("#container").prepend('

    Confirm link

    Are you sure you want to visit '+ass+'?

    "),new Olv.ModalWindow($(".linkconfirmsuck")).open()}function lights(){$("#darkness").prop("disabled",function(e,t){return!t}),Olv.Form.get("/lights")}function openDrawboardModal(){return new Olv.ModalWindow($("#memo-drawboard-page")).open(),!0}function setupDrawboard(){function e(e){var t=o.getBoundingClientRect();if("touchmove"==e.type)var n=e.touches[0].clientX,r=e.touches[0].clientY;else var n=e.clientX,r=e.clientY;return{x:(n-t.left)/artworkZoomFactor,y:(r-t.top)/artworkZoomFactor}}function t(e,t,n,o,r){for(var i=Math.sqrt((o-t)*(o-t)+(r-n)*(r-n)),a=Math.atan((r-n)/(o-t==0?.01:o-t))+(o-t<0?Math.PI:0),s=0;s0&&artworkColorOffset<15?1==e.which?artworkColorOffset+=1:artworkColorOffset-=1:0==artworkColorOffset?1==e.which?artworkColorOffset+=1:artworkColorOffset=15:1==e.which?artworkColorOffset=0:artworkColorOffset-=1,$(this).addClass(artworkColors[artworkColorOffset][0])}),$(".artwork-zoom").click(function(e){1==artworkZoomFactor?(artworkZoomFactor=2,$("#artwork-canvas").css("width","640px"),$(".memo-canvas").addClass("zoom"),$(".artwork-lock").removeClass("none")):2==artworkZoomFactor?(artworkZoomFactor=4,$("#artwork-canvas").css("width","1280px"),$(this).addClass("out")):(artworkZoomFactor=1,$("#artwork-canvas").css("width","320px"),$(this).removeClass("out"),$(".memo-canvas").removeClass("zoom"),$(".artwork-lock").addClass("none")),e.preventDefault()}),$(".artwork-lock").click(function(){$(this).hasClass("selected")?($(".memo-canvas").removeClass("locked"),$(this).removeClass("selected")):($(".memo-canvas").addClass("locked"),$(this).addClass("selected"))}),$(".memo-finish-btn").click(function(){var e=o.toDataURL();void 0!==typeof e&&$("input[type=hidden][name=painting]").val(e.split(",")[1]),$("#drawing").remove(),$(".textarea-memo").append(''),$("#memo-drawboard-page button").off("click"),$("body").css("overflow","")})}function setupPostForm2(){function e(){var e=$("div.textarea-with-menu");e.removeClass("active-memo"),e.removeClass("active-poll"),e.addClass("active-text"),$("div.textarea-container").removeClass("none"),$("div.textarea-memo").addClass("none"),$("div.textarea-poll").addClass("none"),$("textarea[name=body]").attr("data-required","")}$("label.textarea-menu-memo").on("click",function(){if(openDrawboardModal()){var e=$("div.textarea-with-menu"),t=$("div.textarea-memo"),n=$("div.textarea-container"),o=$("div.textarea-poll");(e.hasClass("active-text")||e.hasClass("active-poll"))&&(e.removeClass("active-text"),e.removeClass("active-poll"),e.addClass("active-memo"),t.removeClass("none"),n.addClass("none"),o.addClass("none")),Olv.Form.toggleDisabled($("input.post-button"),!1),setupDrawboard()}}),$("label.textarea-menu-text").on("click",e),$(".post-button").on("click",e)}var splatoon=!0;innerWidth<=480&&(splatoon=!1);var pjax_container="#container";!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){"use strict";function n(e,t){var n=(t=t||te).createElement("script");n.text=e,t.head.appendChild(n).parentNode.removeChild(n)}function o(e){var t=!!e&&"length"in e&&e.length,n=me.type(e);return"function"!==n&&!me.isWindow(e)&&("array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e)}function r(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}function i(e,t,n){return me.isFunction(t)?me.grep(e,function(e,o){return!!t.call(e,o,e)!==n}):t.nodeType?me.grep(e,function(e){return e===t!==n}):"string"!=typeof t?me.grep(e,function(e){return ae.call(t,e)>-1!==n}):Te.test(t)?me.filter(t,e,n):(t=me.filter(t,e),me.grep(e,function(e){return ae.call(t,e)>-1!==n&&1===e.nodeType}))}function a(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}function s(e){var t={};return me.each(e.match(Fe)||[],function(e,n){t[n]=!0}),t}function l(e){return e}function u(e){throw e}function c(e,t,n,o){var r;try{e&&me.isFunction(r=e.promise)?r.call(e).done(t).fail(n):e&&me.isFunction(r=e.then)?r.call(e,t,n):t.apply(void 0,[e].slice(o))}catch(e){n.apply(void 0,[e])}}function d(){te.removeEventListener("DOMContentLoaded",d),e.removeEventListener("load",d),me.ready()}function f(){this.expando=me.expando+f.uid++}function p(e){return"true"===e||"false"!==e&&("null"===e?null:e===+e+""?+e:Le.test(e)?JSON.parse(e):e)}function m(e,t,n){var o;if(void 0===n&&1===e.nodeType)if(o="data-"+t.replace(Oe,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(o))){try{n=p(n)}catch(e){}Me.set(e,t,n)}else n=void 0;return n}function h(e,t,n,o){var r,i=1,a=20,s=o?function(){return o.cur()}:function(){return me.css(e,t,"")},l=s(),u=n&&n[3]||(me.cssNumber[t]?"":"px"),c=(me.cssNumber[t]||"px"!==u&&+l)&&Ie.exec(me.css(e,t));if(c&&c[3]!==u){u=u||c[3],n=n||[],c=+l||1;do{i=i||".5",c/=i,me.style(e,t,c+u)}while(i!==(i=s()/l)&&1!==i&&--a)}return n&&(c=+c||+l||0,r=n[1]?c+(n[1]+1)*n[2]:+n[2],o&&(o.unit=u,o.start=c,o.end=r)),r}function v(e){var t,n=e.ownerDocument,o=e.nodeName,r=Be[o];return r||(t=n.body.appendChild(n.createElement(o)),r=me.css(t,"display"),t.parentNode.removeChild(t),"none"===r&&(r="block"),Be[o]=r,r)}function g(e,t){for(var n,o,r=[],i=0,a=e.length;i-1)r&&r.push(i);else if(u=me.contains(i.ownerDocument,i),a=y(d.appendChild(i),"script"),u&&b(a),n)for(c=0;i=a[c++];)Ge.test(i.type||"")&&n.push(i);return d}function x(){return!0}function C(){return!1}function k(){try{return te.activeElement}catch(e){}}function T(e,t,n,o,r,i){var a,s;if("object"==typeof t){"string"!=typeof n&&(o=o||n,n=void 0);for(s in t)T(e,s,n,o,t[s],i);return e}if(null==o&&null==r?(r=n,o=n=void 0):null==r&&("string"==typeof n?(r=o,o=void 0):(r=o,o=n,n=void 0)),!1===r)r=C;else if(!r)return e;return 1===i&&(a=r,r=function(e){return me().off(e),a.apply(this,arguments)},r.guid=a.guid||(a.guid=me.guid++)),e.each(function(){me.event.add(this,t,r,o,n)})}function E(e,t){return r(e,"table")&&r(11!==t.nodeType?t:t.firstChild,"tr")?me(">tbody",e)[0]||e:e}function _(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function $(e){var t=nt.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function D(e,t){var n,o,r,i,a,s,l,u;if(1===t.nodeType){if(Pe.hasData(e)&&(i=Pe.access(e),a=Pe.set(t,i),u=i.events)){delete a.handle,a.events={};for(r in u)for(n=0,o=u[r].length;n1&&"string"==typeof m&&!fe.checkClone&&tt.test(m))return e.each(function(n){var i=e.eq(n);h&&(t[0]=m.call(this,n,i.html())),S(i,t,o,r)});if(f&&(i=w(t,e[0].ownerDocument,!1,e,r),a=i.firstChild,1===i.childNodes.length&&(i=a),a||r)){for(l=(s=me.map(y(i,"script"),_)).length;d=0&&nx.cacheLength&&delete e[t.shift()],e[n+" "]=o}var t=[];return e}function o(e){return e[q]=!0,e}function r(e){var t=j.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function i(e,t){for(var n=e.split("|"),o=n.length;o--;)x.attrHandle[n[o]]=t}function a(e,t){var n=t&&e,o=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(o)return o;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function s(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&Ce(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function l(e){return o(function(t){return t=+t,o(function(n,o){for(var r,i=e([],n.length,t),a=i.length;a--;)n[r=i[a]]&&(n[r]=!(o[r]=n[r]))})})}function u(e){return e&&void 0!==e.getElementsByTagName&&e}function c(){}function d(e){for(var t=0,n=e.length,o="";t1?function(t,n,o){for(var r=e.length;r--;)if(!e[r](t,n,o))return!1;return!0}:e[0]}function m(e,n,o){for(var r=0,i=n.length;r-1&&(o[u]=!(a[u]=d))}}else b=h(b===a?b.splice(v,b.length):b),i?i(null,a,b,l):Z.apply(a,b)})}function g(e){for(var t,n,o,r=e.length,i=x.relative[e[0].type],a=i||x.relative[" "],s=i?1:0,l=f(function(e){return e===t},a,!0),u=f(function(e){return K(t,e)>-1},a,!0),c=[function(e,n,o){var r=!i&&(o||n!==$)||((t=n).nodeType?l(e,n,o):u(e,n,o));return t=null,r}];s1&&p(c),s>1&&d(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(ie,"$1"),n,s0,i=e.length>0,a=function(o,a,s,l,u){var c,d,f,p=0,m="0",v=o&&[],g=[],y=$,b=o||i&&x.find.TAG("*",u),w=R+=null==y?1:Math.random()||.1,C=b.length;for(u&&($=a===j||a||u);m!==C&&null!=(c=b[m]);m++){if(i&&c){for(d=0,a||c.ownerDocument===j||(S(c),s=!A);f=e[d++];)if(f(c,a||j,s)){l.push(c);break}u&&(R=w)}r&&((c=!f&&c)&&p--,o&&v.push(c))}if(p+=m,r&&m!==p){for(d=0;f=n[d++];)f(v,g,a,s);if(o){if(p>0)for(;m--;)v[m]||g[m]||(g[m]=V.call(l));g=h(g)}Z.apply(l,g),u&&!o&&g.length>0&&p+n.length>1&&t.uniqueSort(l)}return u&&(R=w,$=y),v};return r?o(a):a}var b,w,x,C,k,T,E,_,$,D,F,S,j,N,A,P,M,L,O,q="sizzle"+1*new Date,I=e.document,R=0,H=0,U=n(),B=n(),W=n(),z=function(e,t){return e===t&&(F=!0),0},G={}.hasOwnProperty,X=[],V=X.pop,Y=X.push,Z=X.push,J=X.slice,K=function(e,t){for(var n=0,o=e.length;n+~]|"+ee+")"+ee+"*"),le=new RegExp("="+ee+"*([^\\]'\"]*?)"+ee+"*\\]","g"),ue=new RegExp(oe),ce=new RegExp("^"+te+"$"),de={ID:new RegExp("^#("+te+")"),CLASS:new RegExp("^\\.("+te+")"),TAG:new RegExp("^("+te+"|[*])"),ATTR:new RegExp("^"+ne),PSEUDO:new RegExp("^"+oe),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ee+"*(even|odd|(([+-]|)(\\d*)n|)"+ee+"*(?:([+-]|)"+ee+"*(\\d+)|))"+ee+"*\\)|)","i"),bool:new RegExp("^(?:"+Q+")$","i"),needsContext:new RegExp("^"+ee+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ee+"*((?:-\\d)?\\d*)"+ee+"*\\)|)(?=[^-]|$)","i")},fe=/^(?:input|select|textarea|button)$/i,pe=/^h\d$/i,me=/^[^{]+\{\s*\[native \w/,he=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ve=/[+~]/,ge=new RegExp("\\\\([\\da-f]{1,6}"+ee+"?|("+ee+")|.)","ig"),ye=function(e,t,n){var o="0x"+t-65536;return o!==o||n?t:o<0?String.fromCharCode(o+65536):String.fromCharCode(o>>10|55296,1023&o|56320)},be=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,we=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},xe=function(){S()},Ce=f(function(e){return!0===e.disabled&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"});try{Z.apply(X=J.call(I.childNodes),I.childNodes),X[I.childNodes.length].nodeType}catch(e){Z={apply:X.length?function(e,t){Y.apply(e,J.call(t))}:function(e,t){for(var n=e.length,o=0;e[n++]=t[o++];);e.length=n-1}}}w=t.support={},k=t.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},S=t.setDocument=function(e){var t,n,o=e?e.ownerDocument||e:I;return o!==j&&9===o.nodeType&&o.documentElement?(j=o,N=j.documentElement,A=!k(j),I!==j&&(n=j.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",xe,!1):n.attachEvent&&n.attachEvent("onunload",xe)),w.attributes=r(function(e){return e.className="i",!e.getAttribute("className")}),w.getElementsByTagName=r(function(e){return e.appendChild(j.createComment("")),!e.getElementsByTagName("*").length}),w.getElementsByClassName=me.test(j.getElementsByClassName),w.getById=r(function(e){return N.appendChild(e).id=q,!j.getElementsByName||!j.getElementsByName(q).length}),w.getById?(x.filter.ID=function(e){var t=e.replace(ge,ye);return function(e){return e.getAttribute("id")===t}},x.find.ID=function(e,t){if(void 0!==t.getElementById&&A){var n=t.getElementById(e);return n?[n]:[]}}):(x.filter.ID=function(e){var t=e.replace(ge,ye);return function(e){var n=void 0!==e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},x.find.ID=function(e,t){if(void 0!==t.getElementById&&A){var n,o,r,i=t.getElementById(e);if(i){if((n=i.getAttributeNode("id"))&&n.value===e)return[i];for(r=t.getElementsByName(e),o=0;i=r[o++];)if((n=i.getAttributeNode("id"))&&n.value===e)return[i]}return[]}}),x.find.TAG=w.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):w.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,o=[],r=0,i=t.getElementsByTagName(e);if("*"===e){for(;n=i[r++];)1===n.nodeType&&o.push(n);return o}return i},x.find.CLASS=w.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&A)return t.getElementsByClassName(e)},M=[],P=[],(w.qsa=me.test(j.querySelectorAll))&&(r(function(e){N.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&P.push("[*^$]="+ee+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||P.push("\\["+ee+"*(?:value|"+Q+")"),e.querySelectorAll("[id~="+q+"-]").length||P.push("~="),e.querySelectorAll(":checked").length||P.push(":checked"),e.querySelectorAll("a#"+q+"+*").length||P.push(".#.+[+~]")}),r(function(e){e.innerHTML="";var t=j.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&P.push("name"+ee+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&P.push(":enabled",":disabled"),N.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&P.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),P.push(",.*:")})),(w.matchesSelector=me.test(L=N.matches||N.webkitMatchesSelector||N.mozMatchesSelector||N.oMatchesSelector||N.msMatchesSelector))&&r(function(e){w.disconnectedMatch=L.call(e,"*"),L.call(e,"[s!='']:x"),M.push("!=",oe)}),P=P.length&&new RegExp(P.join("|")),M=M.length&&new RegExp(M.join("|")),t=me.test(N.compareDocumentPosition),O=t||me.test(N.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,o=t&&t.parentNode;return e===o||!(!o||1!==o.nodeType||!(n.contains?n.contains(o):e.compareDocumentPosition&&16&e.compareDocumentPosition(o)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},z=t?function(e,t){if(e===t)return F=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1,1&n||!w.sortDetached&&t.compareDocumentPosition(e)===n?e===j||e.ownerDocument===I&&O(I,e)?-1:t===j||t.ownerDocument===I&&O(I,t)?1:D?K(D,e)-K(D,t):0:4&n?-1:1)}:function(e,t){if(e===t)return F=!0,0;var n,o=0,r=e.parentNode,i=t.parentNode,s=[e],l=[t];if(!r||!i)return e===j?-1:t===j?1:r?-1:i?1:D?K(D,e)-K(D,t):0;if(r===i)return a(e,t);for(n=e;n=n.parentNode;)s.unshift(n);for(n=t;n=n.parentNode;)l.unshift(n);for(;s[o]===l[o];)o++;return o?a(s[o],l[o]):s[o]===I?-1:l[o]===I?1:0},j):j},t.matches=function(e,n){return t(e,null,null,n)},t.matchesSelector=function(e,n){if((e.ownerDocument||e)!==j&&S(e),n=n.replace(le,"='$1']"),w.matchesSelector&&A&&!W[n+" "]&&(!M||!M.test(n))&&(!P||!P.test(n)))try{var o=L.call(e,n);if(o||w.disconnectedMatch||e.document&&11!==e.document.nodeType)return o}catch(e){}return t(n,j,null,[e]).length>0},t.contains=function(e,t){return(e.ownerDocument||e)!==j&&S(e),O(e,t)},t.attr=function(e,t){(e.ownerDocument||e)!==j&&S(e);var n=x.attrHandle[t.toLowerCase()],o=n&&G.call(x.attrHandle,t.toLowerCase())?n(e,t,!A):void 0;return void 0!==o?o:w.attributes||!A?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},t.escape=function(e){return(e+"").replace(be,we)},t.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},t.uniqueSort=function(e){var t,n=[],o=0,r=0;if(F=!w.detectDuplicates,D=!w.sortStable&&e.slice(0),e.sort(z),F){for(;t=e[r++];)t===e[r]&&(o=n.push(r));for(;o--;)e.splice(n[o],1)}return D=null,e},C=t.getText=function(e){var t,n="",o=0,r=e.nodeType;if(r){if(1===r||9===r||11===r){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=C(e)}else if(3===r||4===r)return e.nodeValue}else for(;t=e[o++];)n+=C(t);return n},(x=t.selectors={cacheLength:50,createPseudo:o,match:de,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(ge,ye),e[3]=(e[3]||e[4]||e[5]||"").replace(ge,ye),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||t.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&t.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return de.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&ue.test(n)&&(t=T(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(ge,ye).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=U[e+" "];return t||(t=new RegExp("(^|"+ee+")"+e+"("+ee+"|$)"))&&U(e,function(e){return t.test("string"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,n,o){return function(r){var i=t.attr(r,e);return null==i?"!="===n:!n||(i+="","="===n?i===o:"!="===n?i!==o:"^="===n?o&&0===i.indexOf(o):"*="===n?o&&i.indexOf(o)>-1:"$="===n?o&&i.slice(-o.length)===o:"~="===n?(" "+i.replace(re," ")+" ").indexOf(o)>-1:"|="===n&&(i===o||i.slice(0,o.length+1)===o+"-"))}},CHILD:function(e,t,n,o,r){var i="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===o&&0===r?function(e){return!!e.parentNode}:function(t,n,l){var u,c,d,f,p,m,h=i!==a?"nextSibling":"previousSibling",v=t.parentNode,g=s&&t.nodeName.toLowerCase(),y=!l&&!s,b=!1;if(v){if(i){for(;h;){for(f=t;f=f[h];)if(s?f.nodeName.toLowerCase()===g:1===f.nodeType)return!1;m=h="only"===e&&!m&&"nextSibling"}return!0}if(m=[a?v.firstChild:v.lastChild],a&&y){for(b=(p=(u=(c=(d=(f=v)[q]||(f[q]={}))[f.uniqueID]||(d[f.uniqueID]={}))[e]||[])[0]===R&&u[1])&&u[2],f=p&&v.childNodes[p];f=++p&&f&&f[h]||(b=p=0)||m.pop();)if(1===f.nodeType&&++b&&f===t){c[e]=[R,p,b];break}}else if(y&&(f=t,d=f[q]||(f[q]={}),c=d[f.uniqueID]||(d[f.uniqueID]={}),u=c[e]||[],p=u[0]===R&&u[1],b=p),!1===b)for(;(f=++p&&f&&f[h]||(b=p=0)||m.pop())&&((s?f.nodeName.toLowerCase()!==g:1!==f.nodeType)||!++b||(y&&(d=f[q]||(f[q]={}),c=d[f.uniqueID]||(d[f.uniqueID]={}),c[e]=[R,b]),f!==t)););return(b-=r)===o||b%o==0&&b/o>=0}}},PSEUDO:function(e,n){var r,i=x.pseudos[e]||x.setFilters[e.toLowerCase()]||t.error("unsupported pseudo: "+e);return i[q]?i(n):i.length>1?(r=[e,e,"",n],x.setFilters.hasOwnProperty(e.toLowerCase())?o(function(e,t){for(var o,r=i(e,n),a=r.length;a--;)o=K(e,r[a]),e[o]=!(t[o]=r[a])}):function(e){return i(e,0,r)}):i}},pseudos:{not:o(function(e){var t=[],n=[],r=E(e.replace(ie,"$1"));return r[q]?o(function(e,t,n,o){for(var i,a=r(e,null,o,[]),s=e.length;s--;)(i=a[s])&&(e[s]=!(t[s]=i))}):function(e,o,i){return t[0]=e,r(t,null,i,n),t[0]=null,!n.pop()}}),has:o(function(e){return function(n){return t(e,n).length>0}}),contains:o(function(e){return e=e.replace(ge,ye),function(t){return(t.textContent||t.innerText||C(t)).indexOf(e)>-1}}),lang:o(function(e){return ce.test(e||"")||t.error("unsupported lang: "+e),e=e.replace(ge,ye).toLowerCase(),function(t){var n;do{if(n=A?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===N},focus:function(e){return e===j.activeElement&&(!j.hasFocus||j.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:s(!1),disabled:s(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!x.pseudos.empty(e)},header:function(e){return pe.test(e.nodeName)},input:function(e){return fe.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:l(function(){return[0]}),last:l(function(e,t){return[t-1]}),eq:l(function(e,t,n){return[n<0?n+t:n]}),even:l(function(e,t){for(var n=0;n=0;)e.push(o);return e}),gt:l(function(e,t,n){for(var o=n<0?n+t:n;++o2&&"ID"===(a=i[0]).type&&9===t.nodeType&&A&&x.relative[i[1].type]){if(!(t=(x.find.ID(a.matches[0].replace(ge,ye),t)||[])[0]))return n;c&&(t=t.parentNode),e=e.slice(i.shift().value.length)}for(r=de.needsContext.test(e)?0:i.length;r--&&(a=i[r],!x.relative[s=a.type]);)if((l=x.find[s])&&(o=l(a.matches[0].replace(ge,ye),ve.test(i[0].type)&&u(t.parentNode)||t))){if(i.splice(r,1),!(e=o.length&&d(i)))return Z.apply(n,o),n;break}}return(c||E(e,f))(o,t,!A,n,!t||ve.test(e)&&u(t.parentNode)||t),n},w.sortStable=q.split("").sort(z).join("")===q,w.detectDuplicates=!!F,S(),w.sortDetached=r(function(e){return 1&e.compareDocumentPosition(j.createElement("fieldset"))}),r(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||i("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),w.attributes&&r(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||i("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),r(function(e){return null==e.getAttribute("disabled")})||i(Q,function(e,t,n){var o;if(!n)return!0===e[t]?t.toLowerCase():(o=e.getAttributeNode(t))&&o.specified?o.value:null}),t}(e);me.find=be,me.expr=be.selectors,me.expr[":"]=me.expr.pseudos,me.uniqueSort=me.unique=be.uniqueSort,me.text=be.getText,me.isXMLDoc=be.isXML,me.contains=be.contains,me.escapeSelector=be.escape;var we=function(e,t,n){for(var o=[],r=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(r&&me(e).is(n))break;o.push(e)}return o},xe=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},Ce=me.expr.match.needsContext,ke=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,Te=/^.[^:#\[\.,]*$/;me.filter=function(e,t,n){var o=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===o.nodeType?me.find.matchesSelector(o,e)?[o]:[]:me.find.matches(e,me.grep(t,function(e){return 1===e.nodeType}))},me.fn.extend({find:function(e){var t,n,o=this.length,r=this;if("string"!=typeof e)return this.pushStack(me(e).filter(function(){for(t=0;t1?me.uniqueSort(n):n},filter:function(e){return this.pushStack(i(this,e||[],!1))},not:function(e){return this.pushStack(i(this,e||[],!0))},is:function(e){return!!i(this,"string"==typeof e&&Ce.test(e)?me(e):e||[],!1).length}});var Ee,_e=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(me.fn.init=function(e,t,n){var o,r;if(!e)return this;if(n=n||Ee,"string"==typeof e){if(!(o="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:_e.exec(e))||!o[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(o[1]){if(t=t instanceof me?t[0]:t,me.merge(this,me.parseHTML(o[1],t&&t.nodeType?t.ownerDocument||t:te,!0)),ke.test(o[1])&&me.isPlainObject(t))for(o in t)me.isFunction(this[o])?this[o](t[o]):this.attr(o,t[o]);return this}return(r=te.getElementById(o[2]))&&(this[0]=r,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):me.isFunction(e)?void 0!==n.ready?n.ready(e):e(me):me.makeArray(e,this)}).prototype=me.fn,Ee=me(te);var $e=/^(?:parents|prev(?:Until|All))/,De={children:!0,contents:!0,next:!0,prev:!0};me.fn.extend({has:function(e){var t=me(e,this),n=t.length;return this.filter(function(){for(var e=0;e-1:1===n.nodeType&&me.find.matchesSelector(n,e))){i.push(n);break}return this.pushStack(i.length>1?me.uniqueSort(i):i)},index:function(e){return e?"string"==typeof e?ae.call(me(e),this[0]):ae.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(me.uniqueSort(me.merge(this.get(),me(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),me.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return we(e,"parentNode")},parentsUntil:function(e,t,n){return we(e,"parentNode",n)},next:function(e){return a(e,"nextSibling")},prev:function(e){return a(e,"previousSibling")},nextAll:function(e){return we(e,"nextSibling")},prevAll:function(e){return we(e,"previousSibling")},nextUntil:function(e,t,n){return we(e,"nextSibling",n)},prevUntil:function(e,t,n){return we(e,"previousSibling",n)},siblings:function(e){return xe((e.parentNode||{}).firstChild,e)},children:function(e){return xe(e.firstChild)},contents:function(e){return r(e,"iframe")?e.contentDocument:(r(e,"template")&&(e=e.content||e),me.merge([],e.childNodes))}},function(e,t){me.fn[e]=function(n,o){var r=me.map(this,t,n);return"Until"!==e.slice(-5)&&(o=n),o&&"string"==typeof o&&(r=me.filter(o,r)),this.length>1&&(De[e]||me.uniqueSort(r),$e.test(e)&&r.reverse()),this.pushStack(r)}});var Fe=/[^\x20\t\r\n\f]+/g;me.Callbacks=function(e){e="string"==typeof e?s(e):me.extend({},e);var t,n,o,r,i=[],a=[],l=-1,u=function(){for(r=r||e.once,o=t=!0;a.length;l=-1)for(n=a.shift();++l-1;)i.splice(n,1),n<=l&&l--}),this},has:function(e){return e?me.inArray(e,i)>-1:i.length>0},empty:function(){return i&&(i=[]),this},disable:function(){return r=a=[],i=n="",this},disabled:function(){return!i},lock:function(){return r=a=[],n||t||(i=n=""),this},locked:function(){return!!r},fireWith:function(e,n){return r||(n=n||[],n=[e,n.slice?n.slice():n],a.push(n),t||u()),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!o}};return c},me.extend({Deferred:function(t){var n=[["notify","progress",me.Callbacks("memory"),me.Callbacks("memory"),2],["resolve","done",me.Callbacks("once memory"),me.Callbacks("once memory"),0,"resolved"],["reject","fail",me.Callbacks("once memory"),me.Callbacks("once memory"),1,"rejected"]],o="pending",r={state:function(){return o},always:function(){return i.done(arguments).fail(arguments),this},catch:function(e){return r.then(null,e)},pipe:function(){var e=arguments;return me.Deferred(function(t){me.each(n,function(n,o){var r=me.isFunction(e[o[4]])&&e[o[4]];i[o[1]](function(){var e=r&&r.apply(this,arguments);e&&me.isFunction(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[o[0]+"With"](this,r?[e]:arguments)})}),e=null}).promise()},then:function(t,o,r){function i(t,n,o,r){return function(){var s=this,c=arguments,d=function(){var e,d;if(!(t=a&&(o!==u&&(s=void 0,c=[e]),n.rejectWith(s,c))}};t?f():(me.Deferred.getStackHook&&(f.stackTrace=me.Deferred.getStackHook()),e.setTimeout(f))}}var a=0;return me.Deferred(function(e){n[0][3].add(i(0,e,me.isFunction(r)?r:l,e.notifyWith)),n[1][3].add(i(0,e,me.isFunction(t)?t:l)),n[2][3].add(i(0,e,me.isFunction(o)?o:u))}).promise()},promise:function(e){return null!=e?me.extend(e,r):r}},i={};return me.each(n,function(e,t){var a=t[2],s=t[5];r[t[1]]=a.add,s&&a.add(function(){o=s},n[3-e][2].disable,n[0][2].lock),a.add(t[3].fire),i[t[0]]=function(){return i[t[0]+"With"](this===i?void 0:this,arguments),this},i[t[0]+"With"]=a.fireWith}),r.promise(i),t&&t.call(i,i),i},when:function(e){var t=arguments.length,n=t,o=Array(n),r=oe.call(arguments),i=me.Deferred(),a=function(e){return function(n){o[e]=this,r[e]=arguments.length>1?oe.call(arguments):n,--t||i.resolveWith(o,r)}};if(t<=1&&(c(e,i.done(a(n)).resolve,i.reject,!t),"pending"===i.state()||me.isFunction(r[n]&&r[n].then)))return i.then();for(;n--;)c(r[n],a(n),i.reject);return i.promise()}});var Se=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;me.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&Se.test(t.name)&&e.console.warn("jQuery.Deferred exception: "+t.message,t.stack,n)},me.readyException=function(t){e.setTimeout(function(){throw t})};var je=me.Deferred();me.fn.ready=function(e){return je.then(e).catch(function(e){me.readyException(e)}),this},me.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--me.readyWait:me.isReady)||(me.isReady=!0,!0!==e&&--me.readyWait>0||je.resolveWith(te,[me]))}}),me.ready.then=je.then,"complete"===te.readyState||"loading"!==te.readyState&&!te.documentElement.doScroll?e.setTimeout(me.ready):(te.addEventListener("DOMContentLoaded",d),e.addEventListener("load",d));var Ne=function(e,t,n,o,r,i,a){var s=0,l=e.length,u=null==n;if("object"===me.type(n)){r=!0;for(s in n)Ne(e,t,s,n[s],!0,i,a)}else if(void 0!==o&&(r=!0,me.isFunction(o)||(a=!0),u&&(a?(t.call(e,o),t=null):(u=t,t=function(e,t,n){return u.call(me(e),n)})),t))for(;s1,null,!0)},removeData:function(e){return this.each(function(){Me.remove(this,e)})}}),me.extend({queue:function(e,t,n){var o;if(e)return t=(t||"fx")+"queue",o=Pe.get(e,t),n&&(!o||Array.isArray(n)?o=Pe.access(e,t,me.makeArray(n)):o.push(n)),o||[]},dequeue:function(e,t){t=t||"fx";var n=me.queue(e,t),o=n.length,r=n.shift(),i=me._queueHooks(e,t);"inprogress"===r&&(r=n.shift(),o--),r&&("fx"===t&&n.unshift("inprogress"),delete i.stop,r.call(e,function(){me.dequeue(e,t)},i)),!o&&i&&i.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Pe.get(e,n)||Pe.access(e,n,{empty:me.Callbacks("once memory").add(function(){Pe.remove(e,[t+"queue",n])})})}}),me.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length\x20\t\r\n\f]+)/i,Ge=/^$|\/(?:java|ecma)script/i,Xe={option:[1,""],thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};Xe.optgroup=Xe.option,Xe.tbody=Xe.tfoot=Xe.colgroup=Xe.caption=Xe.thead,Xe.th=Xe.td;var Ve=/<|&#?\w+;/;!function(){var e=te.createDocumentFragment().appendChild(te.createElement("div")),t=te.createElement("input");t.setAttribute("type","radio"),t.setAttribute("checked","checked"),t.setAttribute("name","t"),e.appendChild(t),fe.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="",fe.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var Ye=te.documentElement,Ze=/^key/,Je=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ke=/^([^.]*)(?:\.(.+)|)/;me.event={global:{},add:function(e,t,n,o,r){var i,a,s,l,u,c,d,f,p,m,h,v=Pe.get(e);if(v)for(n.handler&&(i=n,n=i.handler,r=i.selector),r&&me.find.matchesSelector(Ye,r),n.guid||(n.guid=me.guid++),(l=v.events)||(l=v.events={}),(a=v.handle)||(a=v.handle=function(t){return void 0!==me&&me.event.triggered!==t.type?me.event.dispatch.apply(e,arguments):void 0}),u=(t=(t||"").match(Fe)||[""]).length;u--;)s=Ke.exec(t[u])||[],p=h=s[1],m=(s[2]||"").split(".").sort(),p&&(d=me.event.special[p]||{},p=(r?d.delegateType:d.bindType)||p,d=me.event.special[p]||{},c=me.extend({type:p,origType:h,data:o,handler:n,guid:n.guid,selector:r,needsContext:r&&me.expr.match.needsContext.test(r),namespace:m.join(".")},i),(f=l[p])||(f=l[p]=[],f.delegateCount=0,d.setup&&!1!==d.setup.call(e,o,m,a)||e.addEventListener&&e.addEventListener(p,a)),d.add&&(d.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),r?f.splice(f.delegateCount++,0,c):f.push(c),me.event.global[p]=!0)},remove:function(e,t,n,o,r){var i,a,s,l,u,c,d,f,p,m,h,v=Pe.hasData(e)&&Pe.get(e);if(v&&(l=v.events)){for(u=(t=(t||"").match(Fe)||[""]).length;u--;)if(s=Ke.exec(t[u])||[],p=h=s[1],m=(s[2]||"").split(".").sort(),p){for(d=me.event.special[p]||{},f=l[p=(o?d.delegateType:d.bindType)||p]||[],s=s[2]&&new RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=i=f.length;i--;)c=f[i],!r&&h!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||o&&o!==c.selector&&("**"!==o||!c.selector)||(f.splice(i,1),c.selector&&f.delegateCount--,d.remove&&d.remove.call(e,c));a&&!f.length&&(d.teardown&&!1!==d.teardown.call(e,m,v.handle)||me.removeEvent(e,p,v.handle),delete l[p])}else for(p in l)me.event.remove(e,p+t[u],n,o,!0);me.isEmptyObject(l)&&Pe.remove(e,"handle events")}},dispatch:function(e){var t,n,o,r,i,a,s=me.event.fix(e),l=new Array(arguments.length),u=(Pe.get(this,"events")||{})[s.type]||[],c=me.event.special[s.type]||{};for(l[0]=s,t=1;t=1))for(;u!==this;u=u.parentNode||this)if(1===u.nodeType&&("click"!==e.type||!0!==u.disabled)){for(i=[],a={},n=0;n-1:me.find(r,this,null,[u]).length),a[r]&&i.push(o);i.length&&s.push({elem:u,handlers:i})}return u=this,l\x20\t\r\n\f]*)[^>]*)\/>/gi,et=/\s*$/g;me.extend({htmlPrefilter:function(e){return e.replace(Qe,"<$1>")},clone:function(e,t,n){var o,r,i,a,s=e.cloneNode(!0),l=me.contains(e.ownerDocument,e);if(!(fe.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||me.isXMLDoc(e)))for(a=y(s),i=y(e),o=0,r=i.length;o0&&b(a,!l&&y(e,"script")),s},cleanData:function(e){for(var t,n,o,r=me.event.special,i=0;void 0!==(n=e[i]);i++)if(Ae(n)){if(t=n[Pe.expando]){if(t.events)for(o in t.events)r[o]?me.event.remove(n,o):me.removeEvent(n,o,t.handle);n[Pe.expando]=void 0}n[Me.expando]&&(n[Me.expando]=void 0)}}}),me.fn.extend({detach:function(e){return j(this,e,!0)},remove:function(e){return j(this,e)},text:function(e){return Ne(this,function(e){return void 0===e?me.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return S(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||E(this,e).appendChild(e)})},prepend:function(){return S(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=E(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return S(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return S(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(me.cleanData(y(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return me.clone(this,e,t)})},html:function(e){return Ne(this,function(e){var t=this[0]||{},n=0,o=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!et.test(e)&&!Xe[(ze.exec(e)||["",""])[1].toLowerCase()]){e=me.htmlPrefilter(e);try{for(;n1)}}),me.Tween=I,I.prototype={constructor:I,init:function(e,t,n,o,r,i){this.elem=e,this.prop=n,this.easing=r||me.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=o,this.unit=i||(me.cssNumber[n]?"":"px")},cur:function(){var e=I.propHooks[this.prop];return e&&e.get?e.get(this):I.propHooks._default.get(this)},run:function(e){var t,n=I.propHooks[this.prop];return this.options.duration?this.pos=t=me.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):I.propHooks._default.set(this),this}},I.prototype.init.prototype=I.prototype,I.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=me.css(e.elem,e.prop,""),t&&"auto"!==t?t:0)},set:function(e){me.fx.step[e.prop]?me.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[me.cssProps[e.prop]]&&!me.cssHooks[e.prop]?e.elem[e.prop]=e.now:me.style(e.elem,e.prop,e.now+e.unit)}}},I.propHooks.scrollTop=I.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},me.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},me.fx=I.prototype.init,me.fx.step={};var pt,mt,ht=/^(?:toggle|show|hide)$/,vt=/queueHooks$/;me.Animation=me.extend(z,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return h(n.elem,e,Ie.exec(t),n),n}]},tweener:function(e,t){me.isFunction(e)?(t=e,e=["*"]):e=e.match(Fe);for(var n,o=0,r=e.length;o1)},removeAttr:function(e){return this.each(function(){me.removeAttr(this,e)})}}),me.extend({attr:function(e,t,n){var o,r,i=e.nodeType;if(3!==i&&8!==i&&2!==i)return void 0===e.getAttribute?me.prop(e,t,n):(1===i&&me.isXMLDoc(e)||(r=me.attrHooks[t.toLowerCase()]||(me.expr.match.bool.test(t)?gt:void 0)),void 0!==n?null===n?void me.removeAttr(e,t):r&&"set"in r&&void 0!==(o=r.set(e,n,t))?o:(e.setAttribute(t,n+""),n):r&&"get"in r&&null!==(o=r.get(e,t))?o:(o=me.find.attr(e,t),null==o?void 0:o))},attrHooks:{type:{set:function(e,t){if(!fe.radioValue&&"radio"===t&&r(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,o=0,r=t&&t.match(Fe);if(r&&1===e.nodeType)for(;n=r[o++];)e.removeAttribute(n)}}),gt={set:function(e,t,n){return!1===t?me.removeAttr(e,n):e.setAttribute(n,n),n}},me.each(me.expr.match.bool.source.match(/\w+/g),function(e,t){var n=yt[t]||me.find.attr;yt[t]=function(e,t,o){var r,i,a=t.toLowerCase();return o||(i=yt[a],yt[a]=r,r=null!=n(e,t,o)?a:null,yt[a]=i),r}});var bt=/^(?:input|select|textarea|button)$/i,wt=/^(?:a|area)$/i;me.fn.extend({prop:function(e,t){return Ne(this,me.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[me.propFix[e]||e]})}}),me.extend({prop:function(e,t,n){var o,r,i=e.nodeType;if(3!==i&&8!==i&&2!==i)return 1===i&&me.isXMLDoc(e)||(t=me.propFix[t]||t,r=me.propHooks[t]),void 0!==n?r&&"set"in r&&void 0!==(o=r.set(e,n,t))?o:e[t]=n:r&&"get"in r&&null!==(o=r.get(e,t))?o:e[t]},propHooks:{tabIndex:{get:function(e){var t=me.find.attr(e,"tabindex");return t?parseInt(t,10):bt.test(e.nodeName)||wt.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),fe.optSelected||(me.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),me.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){me.propFix[this.toLowerCase()]=this}),me.fn.extend({addClass:function(e){var t,n,o,r,i,a,s,l=0;if(me.isFunction(e))return this.each(function(t){me(this).addClass(e.call(this,t,X(this)))});if("string"==typeof e&&e)for(t=e.match(Fe)||[];n=this[l++];)if(r=X(n),o=1===n.nodeType&&" "+G(r)+" "){for(a=0;i=t[a++];)o.indexOf(" "+i+" ")<0&&(o+=i+" ");r!==(s=G(o))&&n.setAttribute("class",s)}return this},removeClass:function(e){var t,n,o,r,i,a,s,l=0;if(me.isFunction(e))return this.each(function(t){me(this).removeClass(e.call(this,t,X(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof e&&e)for(t=e.match(Fe)||[];n=this[l++];)if(r=X(n),o=1===n.nodeType&&" "+G(r)+" "){for(a=0;i=t[a++];)for(;o.indexOf(" "+i+" ")>-1;)o=o.replace(" "+i+" "," ");r!==(s=G(o))&&n.setAttribute("class",s)}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):me.isFunction(e)?this.each(function(n){me(this).toggleClass(e.call(this,n,X(this),t),t)}):this.each(function(){var t,o,r,i;if("string"===n)for(o=0,r=me(this),i=e.match(Fe)||[];t=i[o++];)r.hasClass(t)?r.removeClass(t):r.addClass(t);else void 0!==e&&"boolean"!==n||((t=X(this))&&Pe.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":Pe.get(this,"__className__")||""))})},hasClass:function(e){var t,n,o=0;for(t=" "+e+" ";n=this[o++];)if(1===n.nodeType&&(" "+G(X(n))+" ").indexOf(t)>-1)return!0;return!1}});var xt=/\r/g;me.fn.extend({val:function(e){var t,n,o,r=this[0];return arguments.length?(o=me.isFunction(e),this.each(function(n){var r;1===this.nodeType&&(r=o?e.call(this,n,me(this).val()):e,null==r?r="":"number"==typeof r?r+="":Array.isArray(r)&&(r=me.map(r,function(e){return null==e?"":e+""})),(t=me.valHooks[this.type]||me.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,r,"value")||(this.value=r))})):r?(t=me.valHooks[r.type]||me.valHooks[r.nodeName.toLowerCase()],t&&"get"in t&&void 0!==(n=t.get(r,"value"))?n:(n=r.value,"string"==typeof n?n.replace(xt,""):null==n?"":n)):void 0}}),me.extend({valHooks:{option:{get:function(e){var t=me.find.attr(e,"value");return null!=t?t:G(me.text(e))}},select:{get:function(e){var t,n,o,i=e.options,a=e.selectedIndex,s="select-one"===e.type,l=s?null:[],u=s?a+1:i.length;for(o=a<0?u:s?a:0;o-1)&&(n=!0);return n||(e.selectedIndex=-1),i}}}}),me.each(["radio","checkbox"],function(){me.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=me.inArray(me(e).val(),t)>-1}},fe.checkOn||(me.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Ct=/^(?:focusinfocus|focusoutblur)$/;me.extend(me.event,{trigger:function(t,n,o,r){var i,a,s,l,u,c,d,f=[o||te],p=ue.call(t,"type")?t.type:t,m=ue.call(t,"namespace")?t.namespace.split("."):[];if(a=s=o=o||te,3!==o.nodeType&&8!==o.nodeType&&!Ct.test(p+me.event.triggered)&&(p.indexOf(".")>-1&&(m=p.split("."),p=m.shift(),m.sort()),u=p.indexOf(":")<0&&"on"+p,t=t[me.expando]?t:new me.Event(p,"object"==typeof t&&t),t.isTrigger=r?2:3,t.namespace=m.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=o),n=null==n?[t]:me.makeArray(n,[t]),d=me.event.special[p]||{},r||!d.trigger||!1!==d.trigger.apply(o,n))){if(!r&&!d.noBubble&&!me.isWindow(o)){for(l=d.delegateType||p,Ct.test(l+p)||(a=a.parentNode);a;a=a.parentNode)f.push(a),s=a;s===(o.ownerDocument||te)&&f.push(s.defaultView||s.parentWindow||e)}for(i=0;(a=f[i++])&&!t.isPropagationStopped();)t.type=i>1?l:d.bindType||p,(c=(Pe.get(a,"events")||{})[t.type]&&Pe.get(a,"handle"))&&c.apply(a,n),(c=u&&a[u])&&c.apply&&Ae(a)&&(t.result=c.apply(a,n),!1===t.result&&t.preventDefault());return t.type=p,r||t.isDefaultPrevented()||d._default&&!1!==d._default.apply(f.pop(),n)||!Ae(o)||u&&me.isFunction(o[p])&&!me.isWindow(o)&&((s=o[u])&&(o[u]=null),me.event.triggered=p,o[p](),me.event.triggered=void 0,s&&(o[u]=s)),t.result}},simulate:function(e,t,n){var o=me.extend(new me.Event,n,{type:e,isSimulated:!0});me.event.trigger(o,null,t)}}),me.fn.extend({trigger:function(e,t){return this.each(function(){me.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return me.event.trigger(e,t,n,!0)}}),me.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,t){me.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),me.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),fe.focusin="onfocusin"in e,fe.focusin||me.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){me.event.simulate(t,e.target,me.event.fix(e))};me.event.special[t]={setup:function(){var o=this.ownerDocument||this,r=Pe.access(o,t);r||o.addEventListener(e,n,!0),Pe.access(o,t,(r||0)+1)},teardown:function(){var o=this.ownerDocument||this,r=Pe.access(o,t)-1;r?Pe.access(o,t,r):(o.removeEventListener(e,n,!0),Pe.remove(o,t))}}});var kt=e.location,Tt=me.now(),Et=/\?/;me.parseXML=function(t){var n;if(!t||"string"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,"text/xml")}catch(e){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||me.error("Invalid XML: "+t),n};var _t=/\[\]$/,$t=/\r?\n/g,Dt=/^(?:submit|button|image|reset|file)$/i,Ft=/^(?:input|select|textarea|keygen)/i;me.param=function(e,t){var n,o=[],r=function(e,t){var n=me.isFunction(t)?t():t;o[o.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(Array.isArray(e)||e.jquery&&!me.isPlainObject(e))me.each(e,function(){r(this.name,this.value)});else for(n in e)V(n,e[n],t,r);return o.join("&")},me.fn.extend({serialize:function(){return me.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=me.prop(this,"elements");return e?me.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!me(this).is(":disabled")&&Ft.test(this.nodeName)&&!Dt.test(e)&&(this.checked||!We.test(e))}).map(function(e,t){var n=me(this).val();return null==n?null:Array.isArray(n)?me.map(n,function(e){return{name:t.name,value:e.replace($t,"\r\n")}}):{name:t.name,value:n.replace($t,"\r\n")}}).get()}});var St=/%20/g,jt=/#.*$/,Nt=/([?&])_=[^&]*/,At=/^(.*?):[ \t]*([^\r\n]*)$/gm,Pt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Mt=/^(?:GET|HEAD)$/,Lt=/^\/\//,Ot={},qt={},It="*/".concat("*"),Rt=te.createElement("a");Rt.href=kt.href,me.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:kt.href,type:"GET",isLocal:Pt.test(kt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":It,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":me.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?J(J(e,me.ajaxSettings),t):J(me.ajaxSettings,e)},ajaxPrefilter:Y(Ot),ajaxTransport:Y(qt),ajax:function(t,n){function o(t,n,o,s){var u,f,p,w,x,C=n;c||(c=!0,l&&e.clearTimeout(l),r=void 0,a=s||"",k.readyState=t>0?4:0,u=t>=200&&t<300||304===t,o&&(w=K(m,k,o)),w=Q(m,w,k,u),u?(m.ifModified&&((x=k.getResponseHeader("Last-Modified"))&&(me.lastModified[i]=x),(x=k.getResponseHeader("etag"))&&(me.etag[i]=x)),204===t||"HEAD"===m.type?C="nocontent":304===t?C="notmodified":(C=w.state,f=w.data,p=w.error,u=!p)):(p=C,!t&&C||(C="error",t<0&&(t=0))),k.status=t,k.statusText=(n||C)+"",u?g.resolveWith(h,[f,C,k]):g.rejectWith(h,[k,C,p]),k.statusCode(b),b=void 0,d&&v.trigger(u?"ajaxSuccess":"ajaxError",[k,m,u?f:p]),y.fireWith(h,[k,C]),d&&(v.trigger("ajaxComplete",[k,m]),--me.active||me.event.trigger("ajaxStop")))}"object"==typeof t&&(n=t,t=void 0),n=n||{};var r,i,a,s,l,u,c,d,f,p,m=me.ajaxSetup({},n),h=m.context||m,v=m.context&&(h.nodeType||h.jquery)?me(h):me.event,g=me.Deferred(),y=me.Callbacks("once memory"),b=m.statusCode||{},w={},x={},C="canceled",k={readyState:0,getResponseHeader:function(e){var t;if(c){if(!s)for(s={};t=At.exec(a);)s[t[1].toLowerCase()]=t[2];t=s[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return c?a:null},setRequestHeader:function(e,t){return null==c&&(e=x[e.toLowerCase()]=x[e.toLowerCase()]||e,w[e]=t),this},overrideMimeType:function(e){return null==c&&(m.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)k.always(e[k.status]);else for(t in e)b[t]=[b[t],e[t]];return this},abort:function(e){var t=e||C;return r&&r.abort(t),o(0,t),this}};if(g.promise(k),m.url=((t||m.url||kt.href)+"").replace(Lt,kt.protocol+"//"),m.type=n.method||n.type||m.method||m.type,m.dataTypes=(m.dataType||"*").toLowerCase().match(Fe)||[""],null==m.crossDomain){u=te.createElement("a");try{u.href=m.url,u.href=u.href,m.crossDomain=Rt.protocol+"//"+Rt.host!=u.protocol+"//"+u.host}catch(e){m.crossDomain=!0}}if(m.data&&m.processData&&"string"!=typeof m.data&&(m.data=me.param(m.data,m.traditional)),Z(Ot,m,n,k),c)return k;(d=me.event&&m.global)&&0==me.active++&&me.event.trigger("ajaxStart"),m.type=m.type.toUpperCase(),m.hasContent=!Mt.test(m.type),i=m.url.replace(jt,""),m.hasContent?m.data&&m.processData&&0===(m.contentType||"").indexOf("application/x-www-form-urlencoded")&&(m.data=m.data.replace(St,"+")):(p=m.url.slice(i.length),m.data&&(i+=(Et.test(i)?"&":"?")+m.data,delete m.data),!1===m.cache&&(i=i.replace(Nt,"$1"),p=(Et.test(i)?"&":"?")+"_="+Tt+++p),m.url=i+p),m.ifModified&&(me.lastModified[i]&&k.setRequestHeader("If-Modified-Since",me.lastModified[i]),me.etag[i]&&k.setRequestHeader("If-None-Match",me.etag[i])),(m.data&&m.hasContent&&!1!==m.contentType||n.contentType)&&k.setRequestHeader("Content-Type",m.contentType),k.setRequestHeader("Accept",m.dataTypes[0]&&m.accepts[m.dataTypes[0]]?m.accepts[m.dataTypes[0]]+("*"!==m.dataTypes[0]?", "+It+"; q=0.01":""):m.accepts["*"]);for(f in m.headers)k.setRequestHeader(f,m.headers[f]);if(m.beforeSend&&(!1===m.beforeSend.call(h,k,m)||c))return k.abort();if(C="abort",y.add(m.complete),k.done(m.success),k.fail(m.error),r=Z(qt,m,n,k)){if(k.readyState=1,d&&v.trigger("ajaxSend",[k,m]),c)return k;m.async&&m.timeout>0&&(l=e.setTimeout(function(){k.abort("timeout")},m.timeout));try{c=!1,r.send(w,o)}catch(e){if(c)throw e;o(-1,e)}}else o(-1,"No Transport");return k},getJSON:function(e,t,n){return me.get(e,t,n,"json")},getScript:function(e,t){return me.get(e,void 0,t,"script")}}),me.each(["get","post"],function(e,t){me[t]=function(e,n,o,r){return me.isFunction(n)&&(r=r||o,o=n,n=void 0),me.ajax(me.extend({url:e,type:t,dataType:r,data:n,success:o},me.isPlainObject(e)&&e))}}),me._evalUrl=function(e){return me.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,throws:!0})},me.fn.extend({wrapAll:function(e){var t;return this[0]&&(me.isFunction(e)&&(e=e.call(this[0])),t=me(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return me.isFunction(e)?this.each(function(t){me(this).wrapInner(e.call(this,t))}):this.each(function(){var t=me(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=me.isFunction(e);return this.each(function(n){me(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){me(this).replaceWith(this.childNodes)}),this}}),me.expr.pseudos.hidden=function(e){return!me.expr.pseudos.visible(e)},me.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},me.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var Ht={0:200,1223:204},Ut=me.ajaxSettings.xhr();fe.cors=!!Ut&&"withCredentials"in Ut,fe.ajax=Ut=!!Ut,me.ajaxTransport(function(t){var n,o;if(fe.cors||Ut&&!t.crossDomain)return{send:function(r,i){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||r["X-Requested-With"]||(r["X-Requested-With"]="XMLHttpRequest");for(a in r)s.setRequestHeader(a,r[a]);n=function(e){return function(){n&&(n=o=s.onload=s.onerror=s.onabort=s.onreadystatechange=null,"abort"===e?s.abort():"error"===e?"number"!=typeof s.status?i(0,"error"):i(s.status,s.statusText):i(Ht[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),o=s.onerror=n("error"),void 0!==s.onabort?s.onabort=o:s.onreadystatechange=function(){4===s.readyState&&e.setTimeout(function(){n&&o()})},n=n("abort");try{s.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}}),me.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),me.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return me.globalEval(e),e}}}),me.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),me.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(o,r){t=me("