diff --git a/config/settings.py b/config/settings.py index b2d9e57..df967cb 100755 --- a/config/settings.py +++ b/config/settings.py @@ -39,6 +39,7 @@ INSTALLED_APPS = [ 'django.contrib.messages', 'django.contrib.staticfiles', 'widget_tweaks', + 'django_cleanup' ] MIDDLEWARE = [ @@ -123,3 +124,10 @@ STATIC_URL = '/static/' STATICFILES_DIRS = [ os.path.join(BASE_DIR, "static"), ] + +CRISPY_TEMPLATE_PACK = 'bootstrap4' + +MEDIA_ROOT = os.path.join(BASE_DIR, 'media') +MEDIA_URL = '/media/' + +PROJECT_PATH = os.path.abspath(os.path.dirname(__name__)) \ No newline at end of file diff --git a/config/urls.py b/config/urls.py index 9acc569..bcfeb4c 100755 --- a/config/urls.py +++ b/config/urls.py @@ -15,9 +15,13 @@ Including another URLconf """ from django.contrib import admin from django.urls import path, include +from django.conf.urls.static import static +from django.conf import settings urlpatterns = [ + path ('admin/', admin.site.urls), path ('', include('homepage.urls')), - path ('admin/', include('admin.urls')), - path( 'adminpanel/', admin.site.urls), ] + +if settings.DEBUG: + urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) \ No newline at end of file diff --git a/homepage/admin.py b/homepage/admin.py index 5c9c3a9..4d2bab4 100755 --- a/homepage/admin.py +++ b/homepage/admin.py @@ -1,7 +1,8 @@ from django.contrib import admin -from .models import Poll, Answer +from .models import Poll, Answer, Location # Register your models here. +admin.site.register(Location) admin.site.register(Poll) admin.site.register(Answer) \ No newline at end of file diff --git a/homepage/forms.py b/homepage/forms.py index 3655db6..a55987a 100644 --- a/homepage/forms.py +++ b/homepage/forms.py @@ -1,16 +1,16 @@ -from django import forms -from django.contrib.auth.models import User -import re -from .models import Answer, EMOTION_CHOICES - -class PollForm(forms.ModelForm): - hi = forms.CharField(max_length=200, required=True) - lo = forms.CharField(max_length=200, required=True) - emotion = forms.ChoiceField(widget=forms.RadioSelect, choices=EMOTION_CHOICES, required=True) - name = forms.CharField(max_length=100) - place = forms.CharField(max_length=100) - question = forms.CharField(max_length=200) - - class Meta: - model = Answer +from django import forms +from django.contrib.auth.models import User +import re +from .models import Answer, EMOTION_CHOICES + +class PollForm(forms.ModelForm): + hi = forms.CharField(max_length=200, required=True) + lo = forms.CharField(max_length=200, required=True) + emotion = forms.ChoiceField(widget=forms.RadioSelect, choices=EMOTION_CHOICES, required=True) + name = forms.CharField(max_length=100) + place = forms.CharField(max_length=100) + question = forms.CharField(max_length=200) + + class Meta: + model = Answer fields = ['hi', 'lo', 'emotion', 'name', 'place', 'question'] \ No newline at end of file diff --git a/homepage/migrations/0001_initial.py b/homepage/migrations/0001_initial.py index 66eef4e..b2996b4 100755 --- a/homepage/migrations/0001_initial.py +++ b/homepage/migrations/0001_initial.py @@ -1,4 +1,4 @@ -# Generated by Django 3.0.8 on 2020-08-25 21:41 +# Generated by Django 3.1 on 2020-08-26 17:28 from django.db import migrations, models import django.db.models.deletion @@ -12,23 +12,31 @@ class Migration(migrations.Migration): ] operations = [ + migrations.CreateModel( + name='Location', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(blank=True, max_length=20, null=True)), + ], + ), migrations.CreateModel( name='Poll', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('askHi', models.BooleanField(default=True)), - ('HiText', models.CharField(blank=True, max_length=50, null=True)), - ('askLo', models.BooleanField(default=True)), - ('LoText', models.CharField(blank=True, max_length=50, null=True)), - ('askEmotion', models.BooleanField(default=True)), - ('EmotionText', models.CharField(blank=True, max_length=50, null=True)), - ('askName', models.BooleanField(default=True)), - ('NameText', models.CharField(blank=True, max_length=50, null=True)), - ('askPlace', models.BooleanField(default=True)), - ('PlaceText', models.CharField(blank=True, max_length=50, null=True)), - ('askQuestion', models.BooleanField(default=True)), - ('QuestionText', models.CharField(blank=True, max_length=50, null=True)), + ('ask_hi', models.BooleanField(default=True)), + ('hi_text', models.CharField(blank=True, max_length=50, null=True)), + ('ask_lo', models.BooleanField(default=True)), + ('lo_text', models.CharField(blank=True, max_length=50, null=True)), + ('ask_emotion', models.BooleanField(default=True)), + ('emotion_text', models.CharField(blank=True, max_length=50, null=True)), + ('ask_name', models.BooleanField(default=True)), + ('name_text', models.CharField(blank=True, max_length=50, null=True)), + ('ask_place', models.BooleanField(default=True)), + ('place_text', models.CharField(blank=True, max_length=50, null=True)), + ('ask_question', models.BooleanField(default=False)), + ('question_text', models.CharField(blank=True, max_length=50, null=True)), ('pub_date', models.DateTimeField(verbose_name='date published')), + ('location', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='homepage.location')), ], ), migrations.CreateModel( @@ -37,9 +45,11 @@ class Migration(migrations.Migration): ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('hi', models.CharField(blank=True, max_length=200, null=True)), ('lo', models.CharField(blank=True, max_length=200, null=True)), - ('name', models.CharField(blank=True, max_length=200, null=True)), - ('place', models.CharField(blank=True, max_length=200, null=True)), - ('poll', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='homepage.Poll')), + ('emotion', models.CharField(blank=True, choices=[('happy', 'Happy'), ('meh', 'Meh'), ('sad', 'Sad')], default='meh', max_length=8, null=True)), + ('name', models.CharField(blank=True, max_length=100, null=True)), + ('place', models.CharField(blank=True, max_length=100, null=True)), + ('question', models.CharField(blank=True, max_length=200, null=True)), + ('poll', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='homepage.poll')), ], ), ] diff --git a/homepage/migrations/0002_answer_emotion.py b/homepage/migrations/0002_answer_emotion.py deleted file mode 100644 index 2d88d93..0000000 --- a/homepage/migrations/0002_answer_emotion.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.0.8 on 2020-08-25 21:41 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('homepage', '0001_initial'), - ] - - operations = [ - migrations.AddField( - model_name='answer', - name='emotion', - field=models.CharField(blank=True, max_length=200, null=True), - ), - ] diff --git a/homepage/migrations/0002_auto_20200826_1732.py b/homepage/migrations/0002_auto_20200826_1732.py new file mode 100644 index 0000000..137a8d5 --- /dev/null +++ b/homepage/migrations/0002_auto_20200826_1732.py @@ -0,0 +1,38 @@ +# Generated by Django 3.1 on 2020-08-26 17:32 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('homepage', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='poll', + name='emotion_text', + field=models.CharField(blank=True, default='how are you feeling today?', max_length=50, null=True), + ), + migrations.AlterField( + model_name='poll', + name='hi_text', + field=models.CharField(blank=True, default='What was the Hi of this we', max_length=50, null=True), + ), + migrations.AlterField( + model_name='poll', + name='lo_text', + field=models.CharField(blank=True, default='What was the Lo of this we', max_length=50, null=True), + ), + migrations.AlterField( + model_name='poll', + name='name_text', + field=models.CharField(blank=True, default="what's your name?", max_length=50, null=True), + ), + migrations.AlterField( + model_name='poll', + name='place_text', + field=models.CharField(blank=True, default='where are you from?', max_length=50, null=True), + ), + ] diff --git a/homepage/migrations/0003_auto_20200825_2220.py b/homepage/migrations/0003_auto_20200825_2220.py deleted file mode 100644 index 5c1d510..0000000 --- a/homepage/migrations/0003_auto_20200825_2220.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.0.8 on 2020-08-25 22:20 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('homepage', '0002_answer_emotion'), - ] - - operations = [ - migrations.AlterField( - model_name='answer', - name='emotion', - field=models.CharField(blank=True, choices=[('happy', 'Happy'), ('meh', 'Meh'), ('sad', 'Sad')], default='meh', max_length=8, null=True), - ), - ] diff --git a/homepage/migrations/0003_auto_20200826_1738.py b/homepage/migrations/0003_auto_20200826_1738.py new file mode 100644 index 0000000..dd45b08 --- /dev/null +++ b/homepage/migrations/0003_auto_20200826_1738.py @@ -0,0 +1,19 @@ +# Generated by Django 3.1 on 2020-08-26 17:38 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('homepage', '0002_auto_20200826_1732'), + ] + + operations = [ + migrations.AlterField( + model_name='poll', + name='location', + field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='homepage.location'), + ), + ] diff --git a/homepage/migrations/0004_auto_20200825_2233.py b/homepage/migrations/0004_auto_20200825_2233.py deleted file mode 100644 index ff74e51..0000000 --- a/homepage/migrations/0004_auto_20200825_2233.py +++ /dev/null @@ -1,73 +0,0 @@ -# Generated by Django 3.0.8 on 2020-08-25 22:33 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('homepage', '0003_auto_20200825_2220'), - ] - - operations = [ - migrations.RenameField( - model_name='poll', - old_name='askEmotion', - new_name='ask_emotion', - ), - migrations.RenameField( - model_name='poll', - old_name='askHi', - new_name='ask_hi', - ), - migrations.RenameField( - model_name='poll', - old_name='askLo', - new_name='ask_lo', - ), - migrations.RenameField( - model_name='poll', - old_name='askName', - new_name='ask_name', - ), - migrations.RenameField( - model_name='poll', - old_name='askPlace', - new_name='ask_place', - ), - migrations.RenameField( - model_name='poll', - old_name='askQuestion', - new_name='ask_question', - ), - migrations.RenameField( - model_name='poll', - old_name='EmotionText', - new_name='emotion_text', - ), - migrations.RenameField( - model_name='poll', - old_name='HiText', - new_name='hi_text', - ), - migrations.RenameField( - model_name='poll', - old_name='LoText', - new_name='lo_text', - ), - migrations.RenameField( - model_name='poll', - old_name='NameText', - new_name='name_text', - ), - migrations.RenameField( - model_name='poll', - old_name='PlaceText', - new_name='place_text', - ), - migrations.RenameField( - model_name='poll', - old_name='QuestionText', - new_name='question_text', - ), - ] diff --git a/homepage/migrations/0004_auto_20200826_1831.py b/homepage/migrations/0004_auto_20200826_1831.py new file mode 100644 index 0000000..876951e --- /dev/null +++ b/homepage/migrations/0004_auto_20200826_1831.py @@ -0,0 +1,23 @@ +# Generated by Django 3.1 on 2020-08-26 18:31 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('homepage', '0003_auto_20200826_1738'), + ] + + operations = [ + migrations.AddField( + model_name='location', + name='hero', + field=models.ImageField(default='hero.png', upload_to='heros'), + ), + migrations.AddField( + model_name='location', + name='slug', + field=models.CharField(blank=True, max_length=20, null=True), + ), + ] diff --git a/homepage/migrations/0005_auto_20200826_1843.py b/homepage/migrations/0005_auto_20200826_1843.py new file mode 100644 index 0000000..c136986 --- /dev/null +++ b/homepage/migrations/0005_auto_20200826_1843.py @@ -0,0 +1,18 @@ +# Generated by Django 3.1 on 2020-08-26 18:43 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('homepage', '0004_auto_20200826_1831'), + ] + + operations = [ + migrations.AlterField( + model_name='location', + name='hero', + field=models.ImageField(default='hero.png', upload_to='heros/-hero.png'), + ), + ] diff --git a/homepage/migrations/0006_auto_20200826_1858.py b/homepage/migrations/0006_auto_20200826_1858.py new file mode 100644 index 0000000..0d471b7 --- /dev/null +++ b/homepage/migrations/0006_auto_20200826_1858.py @@ -0,0 +1,18 @@ +# Generated by Django 3.1 on 2020-08-26 18:58 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('homepage', '0005_auto_20200826_1843'), + ] + + operations = [ + migrations.AlterField( + model_name='location', + name='hero', + field=models.ImageField(default='hero.png', upload_to='heros'), + ), + ] diff --git a/homepage/migrations/0007_location_hero_mobile.py b/homepage/migrations/0007_location_hero_mobile.py new file mode 100644 index 0000000..80f425a --- /dev/null +++ b/homepage/migrations/0007_location_hero_mobile.py @@ -0,0 +1,18 @@ +# Generated by Django 3.1 on 2020-08-26 19:20 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('homepage', '0006_auto_20200826_1858'), + ] + + operations = [ + migrations.AddField( + model_name='location', + name='hero_mobile', + field=models.ImageField(default='hero-mobile.png', upload_to='heros'), + ), + ] diff --git a/homepage/models.py b/homepage/models.py index 6b775c4..aeef0a8 100755 --- a/homepage/models.py +++ b/homepage/models.py @@ -1,22 +1,67 @@ from django.db import models +import os + +from django.core.files import File + +from django.conf import settings +from django.templatetags.static import static +from django.utils.text import slugify + +from PIL import Image, ImageDraw, ImageFont + # Create your models here. +class Location (models.Model): + name = models.CharField(max_length=20, blank=True, null=True) + slug = models.CharField(max_length=20, blank=True, null=True) + + hero = models.ImageField(default="hero.png", upload_to='heros') + hero_mobile = models.ImageField(default="hero-mobile.png", upload_to='heros') + + def __str__(self): + return self.name + + def save(self, *args, **kwargs): + self.slug = slugify(self.name) + self.hero = f'heros/hero-{self.slug}.png' + self.hero_mobile = f'heros/hero-{self.slug}-mobile.png' + super().save(*args, **kwargs) + + output = f'{settings.PROJECT_PATH}/media/heros/hero-{self.slug}.png' + mobile_output = f'{settings.PROJECT_PATH}/media/heros/hero-{self.slug}-mobile.png' + + img = Image.open(settings.PROJECT_PATH + static("css/res/hero.png")) + draw = ImageDraw.Draw(img) + font = ImageFont.truetype(settings.PROJECT_PATH + static("css/fonts/Shorelines-Script-Bold.otf"), 80) + draw.text((1050,450), self.slug, (255,255,255), font=font) + img.save(output) + + img = Image.open(settings.PROJECT_PATH + static("css/res/hero-mobile.png")) + draw = ImageDraw.Draw(img) + font = ImageFont.truetype(settings.PROJECT_PATH + static("css/fonts/Shorelines-Script-Bold.otf"), 80) + draw.text((420,860), self.slug, (255,255,255), font=font) + img.save(mobile_output) + + + class Poll (models.Model): + location = models.OneToOneField(Location, on_delete=models.CASCADE) + ask_hi = models.BooleanField(default=True) - hi_text = models.CharField(max_length=50, blank=True, null=True) + hi_text = models.CharField(max_length=50, blank=True, null=True, default='What was the Hi of this we') ask_lo = models.BooleanField(default=True) - lo_text = models.CharField(max_length=50, blank=True, null=True) + lo_text = models.CharField(max_length=50, blank=True, null=True, default='What was the Lo of this we') ask_emotion = models.BooleanField(default=True) - emotion_text = models.CharField(max_length=50, blank=True, null=True) + emotion_text = models.CharField(max_length=50, blank=True, null=True, default="how are you feeling today?") ask_name = models.BooleanField(default=True) - name_text = models.CharField(max_length=50, blank=True, null=True) + name_text = models.CharField(max_length=50, blank=True, null=True, default="what's your name?") ask_place = models.BooleanField(default=True) - place_text = models.CharField(max_length=50, blank=True, null=True) + place_text = models.CharField(max_length=50, blank=True, null=True, default="where are you from?") ask_question = models.BooleanField(default=False) question_text = models.CharField(max_length=50, blank=True, null=True) @@ -24,7 +69,7 @@ class Poll (models.Model): pub_date = models.DateTimeField('date published') def __str__(self): - return 'Current Poll' + return f"{self.location.name}'s Poll" diff --git a/homepage/templates/homepage/base.html b/homepage/templates/homepage/base.html index 0d701d9..25a0368 100644 --- a/homepage/templates/homepage/base.html +++ b/homepage/templates/homepage/base.html @@ -1,38 +1,38 @@ -{% load static %} - - - - - - - - - - - - - - - - - - - - - HiLo Arlington - - - - - - {% block content %}{% endblock content %} - - - - - - +{% load static %} + + + + + + + + + + + + + + + + + + + + + HiLo Arlington + + + + + + {% block content %}{% endblock content %} + + + + + + diff --git a/homepage/templates/homepage/finish.html b/homepage/templates/homepage/finish.html index 9fc8b37..e8fc68c 100644 --- a/homepage/templates/homepage/finish.html +++ b/homepage/templates/homepage/finish.html @@ -1,5 +1,5 @@ -{% extends 'homepage/base.html' %} -{% load static %} - -{% block content %} +{% extends 'homepage/base.html' %} +{% load static %} + +{% block content %} {% enblock %} \ No newline at end of file diff --git a/homepage/urls.py b/homepage/urls.py index f8aeec5..d4e6659 100755 --- a/homepage/urls.py +++ b/homepage/urls.py @@ -3,5 +3,6 @@ from . import views urlpatterns = [ path ('', views.homepage, name="homepage"), + path ('/', views.homepage), path ('finish/', views.finish, name="finish") ] diff --git a/homepage/views.py b/homepage/views.py index 8dc59ec..aeb72dd 100755 --- a/homepage/views.py +++ b/homepage/views.py @@ -1,14 +1,20 @@ from django.shortcuts import render, redirect from django.contrib import messages from django.shortcuts import get_object_or_404 +from django.http import HttpResponseNotFound from .forms import PollForm -from .models import Poll +from .models import Poll, Location # Create your views here. -def homepage (request): - poll = get_object_or_404(Poll) +def homepage (request, slug="arlington"): + location = get_object_or_404(Location, slug=slug) + + try: + poll = location.poll + except: + return HttpResponseNotFound(f'404: No poll was found for {location}!') if poll.ask_hi: hi_text = poll.hi_text @@ -69,4 +75,5 @@ def homepage (request): return render(request, 'homepage/index.html', context=context) def finish (request): - pass \ No newline at end of file + pass + diff --git a/requirements.txt b/requirements.txt index 57c44ad..1b78930 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,6 @@ -argparse -django -django-widget-tweaks -pip-chill -python -wsgiref +argparse==1.4.0 +django==3.1 +django-cleanup==5.0.0 +django-widget-tweaks==1.4.8 +pillow==7.2.0 +pip-chill==1.0.0 diff --git a/static/css/fonts/Shorelines-Script-Bold.otf b/static/css/fonts/Shorelines-Script-Bold.otf new file mode 100644 index 0000000..9e34462 Binary files /dev/null and b/static/css/fonts/Shorelines-Script-Bold.otf differ diff --git a/static/css/res/Shorelines-Script-Bold.otf b/static/css/res/Shorelines-Script-Bold.otf new file mode 100644 index 0000000..9e34462 Binary files /dev/null and b/static/css/res/Shorelines-Script-Bold.otf differ diff --git a/static/css/res/hero-mobile.png b/static/css/res/hero-mobile.png index 8cf2343..3838451 100755 Binary files a/static/css/res/hero-mobile.png and b/static/css/res/hero-mobile.png differ diff --git a/static/css/res/hero.png b/static/css/res/hero.png index 68b7ee7..d8e3fcb 100755 Binary files a/static/css/res/hero.png and b/static/css/res/hero.png differ diff --git a/static/css/res/hilo-hero.png b/static/css/res/hilo-hero.png deleted file mode 100644 index d8e3fcb..0000000 Binary files a/static/css/res/hilo-hero.png and /dev/null differ diff --git a/static/css/res/wys-hero-mobile.png b/static/css/res/wys-hero-mobile.png new file mode 100644 index 0000000..8cf2343 Binary files /dev/null and b/static/css/res/wys-hero-mobile.png differ diff --git a/static/css/res/wys-hero.png b/static/css/res/wys-hero.png new file mode 100644 index 0000000..68b7ee7 Binary files /dev/null and b/static/css/res/wys-hero.png differ diff --git a/static/css/styles.css b/static/css/styles.css index 4488a8e..fa72606 100644 --- a/static/css/styles.css +++ b/static/css/styles.css @@ -1,179 +1,179 @@ -@charset "UTF-8"; -@font-face { - src: url("./fonts/Hanson-Bold.ttf"); - font-family: "Hanson-Bold"; } -@font-face { - src: url("./fonts/WildYouth-Regular.otf"); - font-family: "WildYouth"; } -@font-face { - src: url("./fonts/FuturaPTMedium.otf"); - font-family: "Futura"; - font-weight: normal; - font-style: normal; } -@font-face { - src: url("./fonts/FuturaPTLight.otf"); - font-family: "Futura-Light"; } -@font-face { - src: url("./fonts/FuturaPTHeavy.otf"); - font-family: "Futura-Heavy"; } -html { - background-color: #333; - font-family: "Hanson-Bold", "Arial", sans-serif; - overflow-x: none; } - -body { - overflow-y: scroll; - /* Keep scroll functionality */ - -ms-overflow-style: none; - /* IE and Edge */ - scrollbar-width: none; - /* Firefox */ } - -body::-webkit-scrollbar { - display: none; } - -.hero { - color: #333 !important; - background-color: #333 !important; - background-image: url("res/hilo-hero-text.png"); - background-position: center; - background-repeat: no-repeat; - background-size: cover; - background-attachment: fixed; } - @media (max-width: 768px) { - .hero { - background-image: url("res/hilo-hero-text-mobile.png"); } } - -.arrow { - cursor: pointer; - width: 70px; - margin: 0 auto; - margin-top: 70vh; - height: 100px; } - -.arrow:after { - content: ""; - margin-top: 70vh; - width: 70px; - height: 100px; - position: absolute; - background-image: url("res/arrow.svg"); - background-size: cover; - background-repeat: no-repeat; - -webkit-animation: 3s infinite ease; - animation: 3s infinite ease; - animation-name: การเคลื่อนไหวที่-1; } -@keyframes การเคลื่อนไหวที่-1 { - 0%, - 100% { - top: 50px; } - 50% { - top: 80px; } } -.vh-25 { - height: 25vh; } - -.vh-50 { - height: 50vh; } - -.banner { - color: white; - background-image: url("res/banner.png"); - background-position: center; - background-repeat: no-repeat; - background-size: cover; - background-attachment: fixed; } - -.info-col { - background-color: #fff; } - -.info-header { - color: white; - font-family: "Hanson-Bold", "Arial", sans-serif; - text-stroke: 3px #305899; - -webkit-text-stroke: 3px #305899; } - @media (max-width: 768px) { - .info-header { - font-size: 1.25em; - text-stroke: 2px #305899; - -webkit-text-stroke: 2px #305899; } } - -.info { - font-size: .8em; - color: #2b5291; - font-family: "Hanson-Bold", "Arial", sans-serif; } - @media (max-width: 768px) { - .info { - font-size: .75em; } } - -#insta-section { - background-color: #333; } - -.bg-colored:before { - right: -999em; - background: #0b3b52; - content: ''; - display: block; - position: absolute; - width: 999em; - top: 0; - bottom: 0; } - -.poll { - color: white; - background-image: url("res/gradient-mobile.png"); - background-position: center; - background-repeat: no-repeat; - background-size: cover; - background-attachment: fixed; - font-family: "Hanson-Bold", "Arial", sans-serif; - font-weight: lighter; - font-size: .75em; } - @media (max-width: 768px) { - .poll { - background-image: url("res/gradient-mobile.png"); } } - -.short-answer { - font-size: 1.2em; } - -.title { - color: #42b8c7; - font-size: 1.45em; } - -.subtitle { - color: #42b8c7; - font-size: 1.15em; } - -label { - font-size: 1.25em; } - -.emote img { - width: 25vw; - height: auto; } - -.btn { - color: #2b5291; - border-image-repeat: none; } - -.hi { - color: #48B93E; - font-family: "WildYouth", "Hanson-Bold", "Arial", sans-serif; } - -.lo { - color: #E34848; - font-family: "WildYouth", "Hanson-Bold", "Arial", sans-serif; } - -[type=radio] { - position: absolute; - opacity: 0; - width: 0; - height: 0; } - -/* IMAGE STYLES */ -[type=radio] + img { - cursor: pointer; } - -/* CHECKED STYLES */ -[type=radio]:checked + img { - outline: 2px solid #2b5291; } - -/*# sourceMappingURL=styles.css.map */ +@charset "UTF-8"; +@font-face { + src: url("./fonts/Hanson-Bold.ttf"); + font-family: "Hanson-Bold"; } +@font-face { + src: url("./fonts/WildYouth-Regular.otf"); + font-family: "WildYouth"; } +@font-face { + src: url("./fonts/FuturaPTMedium.otf"); + font-family: "Futura"; + font-weight: normal; + font-style: normal; } +@font-face { + src: url("./fonts/FuturaPTLight.otf"); + font-family: "Futura-Light"; } +@font-face { + src: url("./fonts/FuturaPTHeavy.otf"); + font-family: "Futura-Heavy"; } +html { + background-color: #333; + font-family: "Hanson-Bold", "Arial", sans-serif; + overflow-x: none; } + +body { + overflow-y: scroll; + /* Keep scroll functionality */ + -ms-overflow-style: none; + /* IE and Edge */ + scrollbar-width: none; + /* Firefox */ } + +body::-webkit-scrollbar { + display: none; } + +.hero { + color: #333 !important; + background-color: #333 !important; + background-image: url("res/hilo-hero-text.png"); + background-position: center; + background-repeat: no-repeat; + background-size: cover; + background-attachment: fixed; } + @media (max-width: 768px) { + .hero { + background-image: url("res/hilo-hero-text-mobile.png"); } } + +.arrow { + cursor: pointer; + width: 70px; + margin: 0 auto; + margin-top: 70vh; + height: 100px; } + +.arrow:after { + content: ""; + margin-top: 70vh; + width: 70px; + height: 100px; + position: absolute; + background-image: url("res/arrow.svg"); + background-size: cover; + background-repeat: no-repeat; + -webkit-animation: 3s infinite ease; + animation: 3s infinite ease; + animation-name: การเคลื่อนไหวที่-1; } +@keyframes การเคลื่อนไหวที่-1 { + 0%, + 100% { + top: 50px; } + 50% { + top: 80px; } } +.vh-25 { + height: 25vh; } + +.vh-50 { + height: 50vh; } + +.banner { + color: white; + background-image: url("res/banner.png"); + background-position: center; + background-repeat: no-repeat; + background-size: cover; + background-attachment: fixed; } + +.info-col { + background-color: #fff; } + +.info-header { + color: white; + font-family: "Hanson-Bold", "Arial", sans-serif; + text-stroke: 3px #305899; + -webkit-text-stroke: 3px #305899; } + @media (max-width: 768px) { + .info-header { + font-size: 1.25em; + text-stroke: 2px #305899; + -webkit-text-stroke: 2px #305899; } } + +.info { + font-size: .8em; + color: #2b5291; + font-family: "Hanson-Bold", "Arial", sans-serif; } + @media (max-width: 768px) { + .info { + font-size: .75em; } } + +#insta-section { + background-color: #333; } + +.bg-colored:before { + right: -999em; + background: #0b3b52; + content: ''; + display: block; + position: absolute; + width: 999em; + top: 0; + bottom: 0; } + +.poll { + color: white; + background-image: url("res/gradient-mobile.png"); + background-position: center; + background-repeat: no-repeat; + background-size: cover; + background-attachment: fixed; + font-family: "Hanson-Bold", "Arial", sans-serif; + font-weight: lighter; + font-size: .75em; } + @media (max-width: 768px) { + .poll { + background-image: url("res/gradient-mobile.png"); } } + +.short-answer { + font-size: 1.2em; } + +.title { + color: #42b8c7; + font-size: 1.45em; } + +.subtitle { + color: #42b8c7; + font-size: 1.15em; } + +label { + font-size: 1.25em; } + +.emote img { + width: 25vw; + height: auto; } + +.btn { + color: #2b5291; + border-image-repeat: none; } + +.hi { + color: #48B93E; + font-family: "WildYouth", "Hanson-Bold", "Arial", sans-serif; } + +.lo { + color: #E34848; + font-family: "WildYouth", "Hanson-Bold", "Arial", sans-serif; } + +[type=radio] { + position: absolute; + opacity: 0; + width: 0; + height: 0; } + +/* IMAGE STYLES */ +[type=radio] + img { + cursor: pointer; } + +/* CHECKED STYLES */ +[type=radio]:checked + img { + outline: 2px solid #2b5291; } + +/*# sourceMappingURL=styles.css.map */