├── .gitignore ├── LICENSE ├── README.md ├── config.json.example ├── images ├── 4GI-0z5K2i4_coffee.jpg ├── QDTtF7ewaak_coffee.jpg ├── VwZyfdlvUWw_coffee.jpg ├── _JOiT2NsV1A_coffee.jpg ├── bTzk95h707g_coffee.jpg └── hgjpLGClejo_coffee.jpg ├── index.py ├── pm2.json ├── requirements.txt ├── start.sh └── templates ├── 418.html ├── assets ├── modesta.css └── profile.png └── index.html /.gitignore: -------------------------------------------------------------------------------- 1 | # Ignore all images 2 | images/* 3 | config.json 4 | 5 | # Image example whitelist 6 | !images/QDTtF7ewaak_coffee.jpg 7 | !images/4GI-0z5K2i4_coffee.jpg 8 | !images/bTzk95h707g_coffee.jpg 9 | !images/hgjpLGClejo_coffee.jpg 10 | !images/VwZyfdlvUWw_coffee.jpg 11 | !images/_JOiT2NsV1A_coffee.jpg 12 | 13 | # Standard ignore 14 | __pycache__/ 15 | .ropeproject/ 16 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 AlexFlipnote 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # CoffeeAPI ☕ 2 | An API that provides random coffee images 3 | 4 | # Open Source 5 | The project is fully open source. You're allowed to fork and create your own, lovely random API. Just please give credits to this project <3 6 | 7 | # Website 8 | - Frameworks 9 | - [ModestaCSS](https://github.com/AlexFlipnote/ModestaCSS) 10 | -------------------------------------------------------------------------------- /config.json.example: -------------------------------------------------------------------------------- 1 | { 2 | "localhost": false, 3 | "domain": "https://coffee.alexflipnote.dev/", 4 | "title": "Coffee API", 5 | "description": "Start your day with a lovely coffee~", 6 | "imagefolder": "images", 7 | "suffix": "_coffee", 8 | "port": 8080, 9 | "debug": true 10 | } 11 | -------------------------------------------------------------------------------- /images/4GI-0z5K2i4_coffee.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexFlipnote/CoffeeAPI/366338a8e7717379584eb3e7022759be1e5bccd3/images/4GI-0z5K2i4_coffee.jpg -------------------------------------------------------------------------------- /images/QDTtF7ewaak_coffee.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexFlipnote/CoffeeAPI/366338a8e7717379584eb3e7022759be1e5bccd3/images/QDTtF7ewaak_coffee.jpg -------------------------------------------------------------------------------- /images/VwZyfdlvUWw_coffee.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexFlipnote/CoffeeAPI/366338a8e7717379584eb3e7022759be1e5bccd3/images/VwZyfdlvUWw_coffee.jpg -------------------------------------------------------------------------------- /images/_JOiT2NsV1A_coffee.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexFlipnote/CoffeeAPI/366338a8e7717379584eb3e7022759be1e5bccd3/images/_JOiT2NsV1A_coffee.jpg -------------------------------------------------------------------------------- /images/bTzk95h707g_coffee.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexFlipnote/CoffeeAPI/366338a8e7717379584eb3e7022759be1e5bccd3/images/bTzk95h707g_coffee.jpg -------------------------------------------------------------------------------- /images/hgjpLGClejo_coffee.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexFlipnote/CoffeeAPI/366338a8e7717379584eb3e7022759be1e5bccd3/images/hgjpLGClejo_coffee.jpg -------------------------------------------------------------------------------- /index.py: -------------------------------------------------------------------------------- 1 | import os 2 | import sys 3 | import json 4 | import random 5 | import secrets 6 | 7 | from collections import namedtuple 8 | from quart import Quart, jsonify, send_from_directory, send_file, render_template 9 | 10 | # Checking if you have config.json on your API 11 | try: 12 | with open("config.json", encoding='utf-8') as data: 13 | config = json.load(data, object_hook=lambda d: namedtuple('X', d.keys())(*d.values())) 14 | except FileNotFoundError: 15 | print("You need to make a config file to be able to run this API") 16 | sys.exit() 17 | 18 | 19 | app = Quart(__name__) 20 | 21 | # Cache all images 22 | cache_images = [img for img in os.listdir(config.imagefolder)] 23 | 24 | 25 | def randomize(dir, checker): 26 | """ Scout the images folder and giving token names to files missing """ 27 | for file in os.listdir(dir): 28 | name = file.split(".") 29 | if not name[0].endswith(checker): 30 | os.rename(f"{dir}/{file}", f"{dir}/{secrets.token_urlsafe(8)}{checker}.{name[-1]}") 31 | 32 | 33 | @app.route("/") 34 | async def index(): 35 | return await render_template( 36 | 'index.html', config=config, 37 | background=random.choice(cache_images), images=len(cache_images) 38 | ) 39 | 40 | 41 | # This is just for the memes, the holy 418 error \o/ 42 | @app.route("/teapot") 43 | @app.route("/418") 44 | async def teapot(): 45 | return await render_template("418.html"), 418 46 | 47 | 48 | @app.route("/") 49 | async def coffee(filename): 50 | return await send_from_directory(config.imagefolder, filename) 51 | 52 | 53 | @app.route("/assets/") 54 | async def template_images(filename): 55 | return await send_from_directory("templates/assets", filename) 56 | 57 | 58 | @app.route("/random") 59 | async def randomcoffee(): 60 | choose_random = random.choice(cache_images) 61 | name = choose_random.split(".") 62 | 63 | return await send_file( 64 | f"{config.imagefolder}/{choose_random}", 65 | mimetype=f"image/{name[-1] if name[-1] != 'jpg' else 'jpeg'}", 66 | attachment_filename=choose_random 67 | ) 68 | 69 | 70 | @app.route("/random.json") 71 | async def randomcoffeeJSON(): 72 | return jsonify({ 73 | "file": config.domain + random.choice(cache_images) 74 | }) 75 | 76 | 77 | randomize(config.imagefolder, config.suffix) 78 | app.run(port=config.port, debug=config.debug) 79 | -------------------------------------------------------------------------------- /pm2.json: -------------------------------------------------------------------------------- 1 | { 2 | "apps": [ 3 | { 4 | "name":"Coffee API", 5 | "script":"start.sh" 6 | } 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | quart 2 | -------------------------------------------------------------------------------- /start.sh: -------------------------------------------------------------------------------- 1 | hypercorn -w 16 -b 127.0.0.1:3300 index:app --log-level debug 2 | -------------------------------------------------------------------------------- /templates/418.html: -------------------------------------------------------------------------------- 1 |

I'm a coffee machine

2 |

This server is a coffee machine, not a teapot

3 | -------------------------------------------------------------------------------- /templates/assets/modesta.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Modesta v3.0.0 (https://modesta.alexflipnote.dev) 3 | * Made by AlexFlipnote (https://alexflipnote.dev) 4 | * Licensed under MIT (https://github.com/AlexFlipnote/Modesta/blob/master/LICENSE) 5 | */html,body{margin:0 auto;height:100%}input[type=checkbox],input[type=radio]{height:auto;padding:initial}input,textarea,select,fieldset{margin-bottom:1rem}label,legend{display:block;font-weight:600;margin-bottom:.5rem}form{margin-bottom:0}@keyframes button-enter{from{opacity:0;top:2em}70%{top:-0.3em}100%{opacity:1;top:0}}@keyframes bounce-button{from,20%,53%,80%,to{animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1);transform:translate3d(0, 0, 0)}40%,43%{transform:translate3d(0, -30px, 0);animation-timing-function:cubic-bezier(0.755, 0.05, 0.855, 0.06)}70%{transform:translate3d(0, -15px, 0);animation-timing-function:cubic-bezier(0.755, 0.05, 0.855, 0.06)}90%{transform:translate3d(0, -4px, 0)}}@keyframes bounce{0%,20%,50%,80%,100%{transform:translateY(0)}40%{transform:translateY(-30px)}60%{transform:translateY(-15px)}}@keyframes fading{from{opacity:0}100%{opacity:1}}@keyframes fade-from-top{from{transform:translate3d(0, -100%, 0);opacity:0}100%{transform:translate3d(0, 0, 0);opacity:1}}@keyframes fade-from-bottom{from{transform:translate3d(0, 100%, 0);opacity:0}100%{transform:translate3d(0, 0, 0);opacity:1}}@keyframes fade-from-left{from{transform:translate3d(-100%, 0, 0);opacity:0}100%{transform:translate3d(0, 0, 0);opacity:1}}@keyframes fade-from-right{from{transform:translate3d(100%, 0, 0);opacity:0}100%{transform:translate3d(0, 0, 0);opacity:1}}@keyframes fade-from-back{from{opacity:0;transform:scale3d(0.5, 0.5, 0.5)}100%{opacity:1}}@keyframes fade-from-front{from{opacity:0;transform:scale3d(1.5, 1.5, 1.5)}100%{opacity:1}}@keyframes load{0%,80%,100%{box-shadow:0 0,0 0;height:4em}40%{box-shadow:0 -1.75em,0 1.75em;height:4em}}.dark-theme .paper-container .ribbon{background-color:#303030}.dark-theme .paper-container .paper{background:linear-gradient(225deg, transparent 26px, #282828 0)}.dark-theme .paper-container .paper::before{border-color:#181818 transparent}.dark-theme .markdown-jekyll{color:#fff}.dark-theme .markdown-jekyll hr{background-color:#303030;border-bottom:1px solid #303030;border-bottom-color:#303030}.dark-theme .markdown-jekyll h1,.dark-theme .markdown-jekyll h2{border-bottom:1px solid #303030}.dark-theme .markdown-jekyll tr{background-color:#282828}.dark-theme .markdown-jekyll tr:nth-child(2n){background-color:#303030}.dark-theme .markdown-jekyll .highlight{background:#303030 !important}.dark-theme .markdown-jekyll .highlighter-rouge{background:#303030 !important;border:1px solid #303030}.dark-theme .tooltip::after{background-color:#303030;color:#fff}.dark-theme .loader,.dark-theme .loader::before,.dark-theme .loader::after{background-color:#fff;color:#fff}.dark-theme .btn{color:#fff}.dark-theme .fullscreen{background-color:#181818}.dark-theme .label{background-color:#303030;color:#fff}.dark-theme input,.dark-theme select,.dark-theme textarea,.dark-theme button{background-color:#303030;color:#fff}.dark-theme table{color:#fff}.dark-theme table th,.dark-theme table td{border:1px solid #303030}.dark-theme table tr{background-color:#282828;border:1px solid #303030}.dark-theme table tr:nth-child(2n){background-color:#303030}@media(max-width: 550px){.dark-theme .paper-container .paper{background:#282828}}.dark-theme .highlight-bg{background-color:#181818}.dark-theme .primary-bg{background-color:#282828}.dark-theme .secondary-bg{background-color:#303030}.dark-theme .highlight-text{color:#181818}.dark-theme .primary-text{color:#282828}.dark-theme .secondary-text{color:#303030}.dark-theme .theme-text{color:#fff}body.dark-theme{color:#fff;background-color:#181818}.light-theme .paper-container .ribbon{background-color:#d9d9d9}.light-theme .paper-container .paper{background:linear-gradient(225deg, transparent 26px, #ececec 0)}.light-theme .paper-container .paper::before{border-color:#f5f5f5 transparent}.light-theme .markdown-jekyll{color:#000}.light-theme .markdown-jekyll hr{background-color:#d9d9d9;border-bottom:1px solid #d9d9d9;border-bottom-color:#d9d9d9}.light-theme .markdown-jekyll h1,.light-theme .markdown-jekyll h2{border-bottom:1px solid #d9d9d9}.light-theme .markdown-jekyll tr{background-color:#ececec}.light-theme .markdown-jekyll tr:nth-child(2n){background-color:#d9d9d9}.light-theme .markdown-jekyll .highlight{background:#d9d9d9 !important}.light-theme .markdown-jekyll .highlighter-rouge{background:#d9d9d9 !important;border:1px solid #d9d9d9}.light-theme .tooltip::after{background-color:#d9d9d9;color:#000}.light-theme .loader,.light-theme .loader::before,.light-theme .loader::after{background-color:#000;color:#000}.light-theme .btn{color:#000}.light-theme .fullscreen{background-color:#f5f5f5}.light-theme .label{background-color:#d9d9d9;color:#000}.light-theme input,.light-theme select,.light-theme textarea,.light-theme button{background-color:#d9d9d9;color:#000}.light-theme table{color:#000}.light-theme table th,.light-theme table td{border:1px solid #d9d9d9}.light-theme table tr{background-color:#ececec;border:1px solid #d9d9d9}.light-theme table tr:nth-child(2n){background-color:#d9d9d9}@media(max-width: 550px){.light-theme .paper-container .paper{background:#ececec}}.light-theme .highlight-bg{background-color:#f5f5f5}.light-theme .primary-bg{background-color:#ececec}.light-theme .secondary-bg{background-color:#d9d9d9}.light-theme .highlight-text{color:#f5f5f5}.light-theme .primary-text{color:#ececec}.light-theme .secondary-text{color:#d9d9d9}.light-theme .theme-text{color:#000}body.light-theme{color:#000;background-color:#f5f5f5}.buttons{align-items:center;display:flex;justify-content:center;text-align:center}.btn{backface-visibility:hidden;background-color:transparent;border:0;box-sizing:border-box;cursor:pointer;display:inline-block;font-size:16px;height:38px;line-height:38px;margin:.5em;padding:0 30px;text-align:center;text-decoration:none;white-space:nowrap}.btn:hover{filter:brightness(65%);transition:filter 200ms ease}.btn.no-dark-hover:hover{filter:brightness(100%)}.btn.animation{animation:button-enter 1s ease-in-out forwards;opacity:0;position:relative}.btn.animation:nth-child(1){animation-delay:.25s}.btn.animation:nth-child(2){animation-delay:.5s}.btn.animation:nth-child(3){animation-delay:.75s}.btn.animation:nth-child(4){animation-delay:1s}.btn.animation:nth-child(5){animation-delay:1.25s}.btn.animation:nth-child(6){animation-delay:1.5s}.btn.animation:nth-child(7){animation-delay:1.75s}.btn.animation:nth-child(8){animation-delay:2s}.btn.animation:nth-child(9){animation-delay:2.25s}.btn.animation:nth-child(10){animation-delay:2.5s}.btn.animation:nth-child(11){animation-delay:2.75s}.btn.animation:nth-child(12){animation-delay:3s}.btn.animation:nth-child(13){animation-delay:3.25s}.btn.animation:nth-child(14){animation-delay:3.5s}.btn.animation:nth-child(15){animation-delay:3.75s}.btn.hover-scale{transition:transform 200ms ease}.btn.hover-scale:hover{transform:scale(1.05)}.btn.hover-scale-inset{transition:transform 200ms ease}.btn.hover-scale-inset:hover{transform:scale(0.95)}.btn.hover{transition:transform 200ms ease}.btn.hover:hover{transform:translateY(-0.5em)}.alizarin-text{color:#e74c3c}.alizarin-bg{background-color:#e74c3c}.alizarin-dropshadow{background-color:#e74c3c;filter:drop-shadow(5px 5px 0 rgba(231, 76, 60, 0.6))}.amethyst-text{color:#9b59b6}.amethyst-bg{background-color:#9b59b6}.amethyst-dropshadow{background-color:#9b59b6;filter:drop-shadow(5px 5px 0 rgba(155, 89, 182, 0.6))}.aqua-blue-text{color:#006266}.aqua-blue-bg{background-color:#006266}.aqua-blue-dropshadow{background-color:#006266;filter:drop-shadow(5px 5px 0 rgba(0, 98, 102, 0.6))}.asbestos-text{color:#7f8c8d}.asbestos-bg{background-color:#7f8c8d}.asbestos-dropshadow{background-color:#7f8c8d;filter:drop-shadow(5px 5px 0 rgba(127, 140, 141, 0.6))}.belize-hole-text{color:#2980b9}.belize-hole-bg{background-color:#2980b9}.belize-hole-dropshadow{background-color:#2980b9;filter:drop-shadow(5px 5px 0 rgba(41, 128, 185, 0.6))}.black-text{color:#000}.black-bg{background-color:#000}.black-dropshadow{background-color:#000;filter:drop-shadow(5px 5px 0 rgba(0, 0, 0, 0.6))}.blurple-text{color:#7289da}.blurple-bg{background-color:#7289da}.blurple-dropshadow{background-color:#7289da;filter:drop-shadow(5px 5px 0 rgba(114, 137, 218, 0.6))}.cardboard-text{color:#a58855}.cardboard-bg{background-color:#a58855}.cardboard-dropshadow{background-color:#a58855;filter:drop-shadow(5px 5px 0 rgba(165, 136, 85, 0.6))}.carrot-text{color:#e67e22}.carrot-bg{background-color:#e67e22}.carrot-dropshadow{background-color:#e67e22;filter:drop-shadow(5px 5px 0 rgba(230, 126, 34, 0.6))}.clouds-text{color:#ecf0f1}.clouds-bg{background-color:#ecf0f1}.clouds-dropshadow{background-color:#ecf0f1;filter:drop-shadow(5px 5px 0 rgba(236, 240, 241, 0.6))}.concrete-text{color:#95a5a6}.concrete-bg{background-color:#95a5a6}.concrete-dropshadow{background-color:#95a5a6;filter:drop-shadow(5px 5px 0 rgba(149, 165, 166, 0.6))}.cubered-text{color:#ef0c0c}.cubered-bg{background-color:#ef0c0c}.cubered-dropshadow{background-color:#ef0c0c;filter:drop-shadow(5px 5px 0 rgba(239, 12, 12, 0.6))}.dark-not-black-text{color:#2c2f33}.dark-not-black-bg{background-color:#2c2f33}.dark-not-black-dropshadow{background-color:#2c2f33;filter:drop-shadow(5px 5px 0 rgba(44, 47, 51, 0.6))}.dark-text{color:#343a40}.dark-bg{background-color:#343a40}.dark-dropshadow{background-color:#343a40;filter:drop-shadow(5px 5px 0 rgba(52, 58, 64, 0.6))}.disco-ball-text{color:#25ccf7}.disco-ball-bg{background-color:#25ccf7}.disco-ball-dropshadow{background-color:#25ccf7;filter:drop-shadow(5px 5px 0 rgba(37, 204, 247, 0.6))}.emerald-text{color:#2ecc71}.emerald-bg{background-color:#2ecc71}.emerald-dropshadow{background-color:#2ecc71;filter:drop-shadow(5px 5px 0 rgba(46, 204, 113, 0.6))}.energy-drink-text{color:#c4e538}.energy-drink-bg{background-color:#c4e538}.energy-drink-dropshadow{background-color:#c4e538;filter:drop-shadow(5px 5px 0 rgba(196, 229, 56, 0.6))}.fuchsia-text{color:#b33771}.fuchsia-bg{background-color:#b33771}.fuchsia-dropshadow{background-color:#b33771;filter:drop-shadow(5px 5px 0 rgba(179, 55, 113, 0.6))}.gold-text{color:gold}.gold-bg{background-color:gold}.gold-dropshadow{background-color:gold;filter:drop-shadow(5px 5px 0 rgba(255, 215, 0, 0.6))}.green-sea-text{color:#16a085}.green-sea-bg{background-color:#16a085}.green-sea-dropshadow{background-color:#16a085;filter:drop-shadow(5px 5px 0 rgba(22, 160, 133, 0.6))}.greyple-text{color:#99aab5}.greyple-bg{background-color:#99aab5}.greyple-dropshadow{background-color:#99aab5;filter:drop-shadow(5px 5px 0 rgba(153, 170, 181, 0.6))}.highlight-text{color:#181818}.highlight-bg{background-color:#181818}.highlight-dropshadow{background-color:#181818;filter:drop-shadow(5px 5px 0 rgba(24, 24, 24, 0.6))}.honey-text{color:#eab543}.honey-bg{background-color:#eab543}.honey-dropshadow{background-color:#eab543;filter:drop-shadow(5px 5px 0 rgba(234, 181, 67, 0.6))}.lavender-text{color:#b57edc}.lavender-bg{background-color:#b57edc}.lavender-dropshadow{background-color:#b57edc;filter:drop-shadow(5px 5px 0 rgba(181, 126, 220, 0.6))}.light-text{color:#f8f9fa}.light-bg{background-color:#f8f9fa}.light-dropshadow{background-color:#f8f9fa;filter:drop-shadow(5px 5px 0 rgba(248, 249, 250, 0.6))}.lemon-text{color:#ffeaa7}.lemon-bg{background-color:#ffeaa7}.lemon-dropshadow{background-color:#ffeaa7;filter:drop-shadow(5px 5px 0 rgba(255, 234, 167, 0.6))}.marine-blue-text{color:#0652dd}.marine-blue-bg{background-color:#0652dd}.marine-blue-dropshadow{background-color:#0652dd;filter:drop-shadow(5px 5px 0 rgba(6, 82, 221, 0.6))}.midnight-blue-text{color:#2c3e50}.midnight-blue-bg{background-color:#2c3e50}.midnight-blue-dropshadow{background-color:#2c3e50;filter:drop-shadow(5px 5px 0 rgba(44, 62, 80, 0.6))}.navy-blue-text{color:#182c61}.navy-blue-bg{background-color:#182c61}.navy-blue-dropshadow{background-color:#182c61;filter:drop-shadow(5px 5px 0 rgba(24, 44, 97, 0.6))}.nephritis-blue-text{color:#27ae60}.nephritis-blue-bg{background-color:#27ae60}.nephritis-blue-dropshadow{background-color:#27ae60;filter:drop-shadow(5px 5px 0 rgba(39, 174, 96, 0.6))}.not-black-text{color:#23272a}.not-black-bg{background-color:#23272a}.not-black-dropshadow{background-color:#23272a;filter:drop-shadow(5px 5px 0 rgba(35, 39, 42, 0.6))}.orange-text{color:#f39c12}.orange-bg{background-color:#f39c12}.orange-dropshadow{background-color:#f39c12;filter:drop-shadow(5px 5px 0 rgba(243, 156, 18, 0.6))}.peach-text{color:#f49898}.peach-bg{background-color:#f49898}.peach-dropshadow{background-color:#f49898;filter:drop-shadow(5px 5px 0 rgba(244, 152, 152, 0.6))}.peter-river-text{color:#3498db}.peter-river-bg{background-color:#3498db}.peter-river-dropshadow{background-color:#3498db;filter:drop-shadow(5px 5px 0 rgba(52, 152, 219, 0.6))}.pink-cherry-text{color:#e84393}.pink-cherry-bg{background-color:#e84393}.pink-cherry-dropshadow{background-color:#e84393;filter:drop-shadow(5px 5px 0 rgba(232, 67, 147, 0.6))}.pine-text{color:#bdc581}.pine-bg{background-color:#bdc581}.pine-dropshadow{background-color:#bdc581;filter:drop-shadow(5px 5px 0 rgba(189, 197, 129, 0.6))}.pinewood-text{color:#fdcb6e}.pinewood-bg{background-color:#fdcb6e}.pinewood-dropshadow{background-color:#fdcb6e;filter:drop-shadow(5px 5px 0 rgba(253, 203, 110, 0.6))}.pomegranate-text{color:#c0392b}.pomegranate-bg{background-color:#c0392b}.pomegranate-dropshadow{background-color:#c0392b;filter:drop-shadow(5px 5px 0 rgba(192, 57, 43, 0.6))}.primary-text{color:#282828}.primary-bg{background-color:#282828}.primary-dropshadow{background-color:#282828;filter:drop-shadow(5px 5px 0 rgba(40, 40, 40, 0.6))}.pumpkin-text{color:#d35400}.pumpkin-bg{background-color:#d35400}.pumpkin-dropshadow{background-color:#d35400;filter:drop-shadow(5px 5px 0 rgba(211, 84, 0, 0.6))}.rasberry-text{color:#c51d4a}.rasberry-bg{background-color:#c51d4a}.rasberry-dropshadow{background-color:#c51d4a;filter:drop-shadow(5px 5px 0 rgba(197, 29, 74, 0.6))}.raw-purple-text{color:#7222c9}.raw-purple-bg{background-color:#7222c9}.raw-purple-dropshadow{background-color:#7222c9;filter:drop-shadow(5px 5px 0 rgba(114, 34, 201, 0.6))}.secondary-text{color:#303030}.secondary-bg{background-color:#303030}.secondary-dropshadow{background-color:#303030;filter:drop-shadow(5px 5px 0 rgba(48, 48, 48, 0.6))}.silver-text{color:#7f8c8d}.silver-bg{background-color:#7f8c8d}.silver-dropshadow{background-color:#7f8c8d;filter:drop-shadow(5px 5px 0 rgba(127, 140, 141, 0.6))}.soft-purple-text{color:#6c5ce7}.soft-purple-bg{background-color:#6c5ce7}.soft-purple-dropshadow{background-color:#6c5ce7;filter:drop-shadow(5px 5px 0 rgba(108, 92, 231, 0.6))}.sun-flower-text{color:#f1c40f}.sun-flower-bg{background-color:#f1c40f}.sun-flower-dropshadow{background-color:#f1c40f;filter:drop-shadow(5px 5px 0 rgba(241, 196, 15, 0.6))}.transparent-text{color:transparent}.transparent-bg{background-color:transparent}.transparent-dropshadow{background-color:transparent;filter:drop-shadow(5px 5px 0 rgba(0, 0, 0, 0.6))}.turquoise-text{color:#1abc9c}.turquoise-bg{background-color:#1abc9c}.turquoise-dropshadow{background-color:#1abc9c;filter:drop-shadow(5px 5px 0 rgba(26, 188, 156, 0.6))}.watermelon-text{color:#ff4757}.watermelon-bg{background-color:#ff4757}.watermelon-dropshadow{background-color:#ff4757;filter:drop-shadow(5px 5px 0 rgba(255, 71, 87, 0.6))}.wet-asphalt-text{color:#34495e}.wet-asphalt-bg{background-color:#34495e}.wet-asphalt-dropshadow{background-color:#34495e;filter:drop-shadow(5px 5px 0 rgba(52, 73, 94, 0.6))}.white-text{color:#fff}.white-bg{background-color:#fff}.white-dropshadow{background-color:#fff;filter:drop-shadow(5px 5px 0 rgba(255, 255, 255, 0.6))}.wisteria-text{color:#8e44ad}.wisteria-bg{background-color:#8e44ad}.wisteria-dropshadow{background-color:#8e44ad;filter:drop-shadow(5px 5px 0 rgba(142, 68, 173, 0.6))}.amazon-text{color:#f90}.amazon-bg{background-color:#f90}.amazon-dropshadow{background-color:#f90;filter:drop-shadow(5px 5px 0 rgba(255, 153, 0, 0.6))}.android-text{color:#8ec047}.android-bg{background-color:#8ec047}.android-dropshadow{background-color:#8ec047;filter:drop-shadow(5px 5px 0 rgba(142, 192, 71, 0.6))}.bandcamp-text{color:#619aa9}.bandcamp-bg{background-color:#619aa9}.bandcamp-dropshadow{background-color:#619aa9;filter:drop-shadow(5px 5px 0 rgba(97, 154, 169, 0.6))}.deviantart-text{color:#05cc47}.deviantart-bg{background-color:#05cc47}.deviantart-dropshadow{background-color:#05cc47;filter:drop-shadow(5px 5px 0 rgba(5, 204, 71, 0.6))}.discord-text{color:#7289da}.discord-bg{background-color:#7289da}.discord-dropshadow{background-color:#7289da;filter:drop-shadow(5px 5px 0 rgba(114, 137, 218, 0.6))}.facebook-text{color:#3b5998}.facebook-bg{background-color:#3b5998}.facebook-dropshadow{background-color:#3b5998;filter:drop-shadow(5px 5px 0 rgba(59, 89, 152, 0.6))}.gitea-text{color:#5aa509}.gitea-bg{background-color:#5aa509}.gitea-dropshadow{background-color:#5aa509;filter:drop-shadow(5px 5px 0 rgba(90, 165, 9, 0.6))}.github-text{color:#292d32}.github-bg{background-color:#292d32}.github-dropshadow{background-color:#292d32;filter:drop-shadow(5px 5px 0 rgba(41, 45, 50, 0.6))}.gitlab-text{color:#fc6d26}.gitlab-bg{background-color:#fc6d26}.gitlab-dropshadow{background-color:#fc6d26;filter:drop-shadow(5px 5px 0 rgba(252, 109, 38, 0.6))}.google-text{color:#4285f4}.google-bg{background-color:#4285f4}.google-dropshadow{background-color:#4285f4;filter:drop-shadow(5px 5px 0 rgba(66, 133, 244, 0.6))}.googleplus-text{color:#db4437}.googleplus-bg{background-color:#db4437}.googleplus-dropshadow{background-color:#db4437;filter:drop-shadow(5px 5px 0 rgba(219, 68, 55, 0.6))}.instagram-text{color:#c32aa3}.instagram-bg{background-color:#c32aa3}.instagram-dropshadow{background-color:#c32aa3;filter:drop-shadow(5px 5px 0 rgba(195, 42, 163, 0.6))}.line-text{color:#00b901}.line-bg{background-color:#00b901}.line-dropshadow{background-color:#00b901;filter:drop-shadow(5px 5px 0 rgba(0, 185, 1, 0.6))}.linkedin-text{color:#007bb5}.linkedin-bg{background-color:#007bb5}.linkedin-dropshadow{background-color:#007bb5;filter:drop-shadow(5px 5px 0 rgba(0, 123, 181, 0.6))}.npm-text{color:#c12127}.npm-bg{background-color:#c12127}.npm-dropshadow{background-color:#c12127;filter:drop-shadow(5px 5px 0 rgba(193, 33, 39, 0.6))}.patreon-text{color:#f96854}.patreon-bg{background-color:#f96854}.patreon-dropshadow{background-color:#f96854;filter:drop-shadow(5px 5px 0 rgba(249, 104, 84, 0.6))}.paypal-text{color:#1e9cd7}.paypal-bg{background-color:#1e9cd7}.paypal-dropshadow{background-color:#1e9cd7;filter:drop-shadow(5px 5px 0 rgba(30, 156, 215, 0.6))}.pinterest-text{color:#bd081c}.pinterest-bg{background-color:#bd081c}.pinterest-dropshadow{background-color:#bd081c;filter:drop-shadow(5px 5px 0 rgba(189, 8, 28, 0.6))}.reddit-text{color:#ff4500}.reddit-bg{background-color:#ff4500}.reddit-dropshadow{background-color:#ff4500;filter:drop-shadow(5px 5px 0 rgba(255, 69, 0, 0.6))}.skype-text{color:#41a6ed}.skype-bg{background-color:#41a6ed}.skype-dropshadow{background-color:#41a6ed;filter:drop-shadow(5px 5px 0 rgba(65, 166, 237, 0.6))}.slack-text{color:#4d394b}.slack-bg{background-color:#4d394b}.slack-dropshadow{background-color:#4d394b;filter:drop-shadow(5px 5px 0 rgba(77, 57, 75, 0.6))}.snapchat-text{color:#fffc00}.snapchat-bg{background-color:#fffc00}.snapchat-dropshadow{background-color:#fffc00;filter:drop-shadow(5px 5px 0 rgba(255, 252, 0, 0.6))}.soundcloud-text{color:#f50}.soundcloud-bg{background-color:#f50}.soundcloud-dropshadow{background-color:#f50;filter:drop-shadow(5px 5px 0 rgba(255, 85, 0, 0.6))}.spotify-text{color:#1ed760}.spotify-bg{background-color:#1ed760}.spotify-dropshadow{background-color:#1ed760;filter:drop-shadow(5px 5px 0 rgba(30, 215, 96, 0.6))}.steam-text{color:#171a21}.steam-bg{background-color:#171a21}.steam-dropshadow{background-color:#171a21;filter:drop-shadow(5px 5px 0 rgba(23, 26, 33, 0.6))}.telegram-text{color:#08c}.telegram-bg{background-color:#08c}.telegram-dropshadow{background-color:#08c;filter:drop-shadow(5px 5px 0 rgba(0, 136, 204, 0.6))}.tumblr-text{color:#35465d}.tumblr-bg{background-color:#35465d}.tumblr-dropshadow{background-color:#35465d;filter:drop-shadow(5px 5px 0 rgba(53, 70, 93, 0.6))}.twitch-text{color:#6441a4}.twitch-bg{background-color:#6441a4}.twitch-dropshadow{background-color:#6441a4;filter:drop-shadow(5px 5px 0 rgba(100, 65, 164, 0.6))}.twitter-text{color:#1da1f2}.twitter-bg{background-color:#1da1f2}.twitter-dropshadow{background-color:#1da1f2;filter:drop-shadow(5px 5px 0 rgba(29, 161, 242, 0.6))}.viber-text{color:#7f4d9b}.viber-bg{background-color:#7f4d9b}.viber-dropshadow{background-color:#7f4d9b;filter:drop-shadow(5px 5px 0 rgba(127, 77, 155, 0.6))}.whatsapp-text{color:#25d366}.whatsapp-bg{background-color:#25d366}.whatsapp-dropshadow{background-color:#25d366;filter:drop-shadow(5px 5px 0 rgba(37, 211, 102, 0.6))}.youtube-text{color:red}.youtube-bg{background-color:red}.youtube-dropshadow{background-color:red;filter:drop-shadow(5px 5px 0 rgba(255, 0, 0, 0.6))}.container{box-sizing:border-box;margin:0 auto;margin-bottom:2.5em;margin-top:1.5em;max-width:1100px;padding:0 2em;position:relative;width:100%}.flex-grid{box-sizing:border-box;display:flex;flex:0 1 auto;flex-direction:row;flex-wrap:wrap}.flex-grid .col-xs,.flex-grid .col-xs-1,.flex-grid .col-xs-2,.flex-grid .col-xs-3,.flex-grid .col-xs-4,.flex-grid .col-xs-5,.flex-grid .col-xs-6,.flex-grid .col-xs-7,.flex-grid .col-xs-8,.flex-grid .col-xs-9,.flex-grid .col-xs-10,.flex-grid .col-xs-11,.flex-grid .col-xs-12{box-sizing:border-box;flex:0 0 auto;padding-left:.5rem;padding-right:.5rem}.flex-grid [class^=col-xs]:first-child{padding-left:0}.flex-grid [class^=col-xs]:last-child{padding-right:0}.flex-grid .col-xs{flex-basis:0;flex-grow:1;max-width:100%}.flex-grid .col-xs-1{flex-basis:8.33%;max-width:8.33%}.flex-grid .col-xs-2{flex-basis:16.66%;max-width:16.66%}.flex-grid .col-xs-3{flex-basis:25%;max-width:25%}.flex-grid .col-xs-4{flex-basis:33.33%;max-width:33.33%}.flex-grid .col-xs-5{flex-basis:41.66%;max-width:41.66%}.flex-grid .col-xs-6{flex-basis:50%;max-width:50%}.flex-grid .col-xs-7{flex-basis:58.33%;max-width:58.33%}.flex-grid .col-xs-8{flex-basis:66.66%;max-width:66.66%}.flex-grid .col-xs-9{flex-basis:75%;max-width:75%}.flex-grid .col-xs-10{flex-basis:83.33%;max-width:83.33%}.flex-grid .col-xs-11{flex-basis:91.66%;max-width:91.66%}.flex-grid .col-xs-12{flex-basis:100%;max-width:100%}.box-container{margin-bottom:2.5em;padding:1em;position:relative}.box-container.message{border-radius:0;margin-bottom:0;padding:.5em}.box-container.message .close{color:#fff;font-size:34px;font-weight:300;height:100%;line-height:24px;opacity:.6;position:absolute;right:.25em}.box-container.message .close:hover{cursor:pointer;opacity:1}.center-object{align-items:center;display:flex;flex-direction:column;height:100%;justify-content:center;position:absolute;top:0;vertical-align:middle;width:100%}.arrow{transition:all 300ms ease;animation:fading 300ms ease-in-out;bottom:20px;height:auto;left:50%;margin-left:-22.5px;position:absolute;width:45px}.arrow--scrolled{animation:fading 300ms ease-in-out;cursor:default;opacity:0}.bounce{animation:bounce 2s infinite}.fullscreen{height:100%}.fullscreen .background{background-attachment:fixed;background-position:center;background-repeat:no-repeat;background-size:cover;filter:blur(5px) brightness(50%);height:100%;width:100%}.fullscreen .me{justify-content:center;width:100%}.fullscreen.half .background{height:50%}.fullscreen.half .center-object .btn{padding:0 20px}.fullscreen.half .center-object .me .image-title{height:6em;width:6em}.fullscreen.half .center-object .me .title{font-size:4rem}.fullscreen.half .center-object .me .undertitle{font-size:1.75rem}.me{align-items:center;display:flex;flex-direction:column;height:auto;padding:1rem 0;z-index:10}.me.unset{flex-direction:unset}.me.unset .image-title{margin-right:.25em}.me.unset .unset{margin-left:.5em}.me.unset .unset .title,.me.unset .unset .undertitle{flex-direction:column;margin:0}.me .image-title{border-radius:100%;height:9em;width:9em}.me .image-title.large-border{border-radius:25px}.me .image-title.medium-border{border-radius:15px}.me .image-title.small-border{border-radius:5px}.me .image-title.no-border{border-radius:0}.me .title{font-size:5rem;letter-spacing:1px;margin:.25em}.me .undertitle{font-size:2.5rem;letter-spacing:1px;margin:0}.label{border-radius:.25em;display:inline-block;font-size:12px;font-weight:bold;letter-spacing:1px;margin-left:6px;padding:.2em .6em .3em;vertical-align:middle}.loader,.loader::before,.loader::after{animation:load 1s infinite ease-in-out;height:3em;width:1em}.loader{animation-delay:-0.16s;font-size:11px;margin:3em auto;position:relative;text-indent:-9999em;transform:translateZ(0)}.loader::before{animation-delay:-0.32s;left:-1.5em}.loader::after{left:1.5em}.loader::before,.loader::after{content:"";position:absolute;top:0}.paper-container{align-items:center;display:flex;flex-direction:column}.paper-container .paper{border-radius:2px;margin:1em .75em;margin-bottom:80px;margin-top:-35vh;max-width:1012px;min-height:500px;padding:80px 56px;position:relative}.paper-container .paper::before{border-style:solid;border-width:0 36.5px 36.5px 0;content:"";display:block;position:absolute;right:0;top:0;width:0}.paper-container .ribbon{height:40vh;width:100%}.parallax-container{position:relative}.parallax-container .parallax{background-attachment:fixed;background-position:center;background-repeat:no-repeat;background-size:cover;filter:blur(4px);height:20em;width:100%}.parallax-container .parallax.small{height:15em}.parallax-container .parallax.medium{height:26em}.parallax-container .parallax.large{height:33em}.parallax-container .content{left:50%;position:absolute;text-align:center;top:50%;transform:translate(-50%, -50%);width:100%}.tooltip{display:inline;position:relative}.tooltip::after{border-radius:2px;content:attr(data-tooltip);left:50%;opacity:0;padding:6px 10px;position:absolute;top:1.6em;transform:translateX(-50%) translateY(-2px);transition:opacity .2s cubic-bezier(0.64, 0.09, 0.08, 1),transform .2s cubic-bezier(0.64, 0.09, 0.08, 1);visibility:hidden;white-space:nowrap;z-index:2}.tooltip:hover::after{transform:translateX(-50%) translateY(0);display:block;opacity:1;visibility:visible}.tooltip.left::after{transform:translateX(-112%) translateY(0);left:0;top:-4px}.tooltip.left:hover::after{transform:translateX(-110%) translateY(0)}.tooltip.right::after{left:100%;top:-4px;transform:translateX(12%) translateY(0)}.tooltip.right:hover::after{transform:translateX(10%) translateY(0)}.emoji{background-position:center center;background-repeat:no-repeat;background-size:1em 1em;display:inline-block;height:1em;margin:0 .05em 0 .1em;vertical-align:-0.1em;width:1em}.emoji-lg{background-size:1.33em 1.33em;height:1.33em;margin:0 .0665em 0 .133em;vertical-align:-0.133em;width:1.33em}.emoji-2x{background-size:2em 2em;height:2em;margin:0 .1em 0 .2em;vertical-align:-0.2em;width:2em}.emoji-3x{background-size:3em 3em;height:3em;margin:0 .15em 0 .3em;vertical-align:-0.3em;width:3em}.emoji-4x{background-size:4em 4em;height:4em;margin:0 .2em 0 .4em;vertical-align:-0.4em;width:4em}.emoji-5x{background-size:5em 5em;height:5em;margin:0 .25em 0 .5em;vertical-align:-0.5em;width:5em}.markdown-jekyll{font-size:16px;line-height:1.5;margin:1em auto;max-width:1012px;padding:0 2em;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;word-wrap:break-word}.markdown-jekyll .pl-c{color:#6a737d}.markdown-jekyll .pl-c1,.markdown-jekyll .pl-s .pl-v{color:#005cc5}.markdown-jekyll .pl-e,.markdown-jekyll .pl-en{color:#6f42c1}.markdown-jekyll .pl-smi,.markdown-jekyll .pl-s .pl-s1{color:#24292e}.markdown-jekyll .pl-ent{color:#22863a}.markdown-jekyll .pl-k{color:#d73a49}.markdown-jekyll .pl-s,.markdown-jekyll .pl-pds,.markdown-jekyll .pl-s .pl-pse .pl-s1{color:#032f62}.markdown-jekyll .pl-sr{color:#032f62}.markdown-jekyll .pl-sr .pl-cce,.markdown-jekyll .pl-sr .pl-sre,.markdown-jekyll .pl-sr .pl-sra{color:#032f62}.markdown-jekyll .pl-sr .pl-cce{color:#22863a;font-weight:bold}.markdown-jekyll .pl-v,.markdown-jekyll .pl-smw{color:#e36209}.markdown-jekyll .pl-bu{color:#b31d28}.markdown-jekyll .pl-ii{background-color:#b31d28;color:#fafbfc}.markdown-jekyll .pl-c2{background-color:#d73a49;color:#fafbfc}.markdown-jekyll .pl-c2::before{content:"^M"}.markdown-jekyll .pl-ml{color:#735c0f}.markdown-jekyll .pl-mh{color:#005cc5;font-weight:bold}.markdown-jekyll .pl-mh .pl-en{color:#005cc5;font-weight:bold}.markdown-jekyll .pl-ms{color:#005cc5;font-weight:bold}.markdown-jekyll .pl-mi{color:#24292e;font-style:italic}.markdown-jekyll .pl-mb{color:#24292e;font-weight:bold}.markdown-jekyll .pl-md{background-color:#ffeef0;color:#b31d28}.markdown-jekyll .pl-mi1{background-color:#f0fff4;color:#22863a}.markdown-jekyll .pl-mc{background-color:#ffebda;color:#e36209}.markdown-jekyll .pl-mi2{background-color:#005cc5;color:#f6f8fa}.markdown-jekyll .pl-mdr{color:#6f42c1;font-weight:bold}.markdown-jekyll .pl-ba{color:#586069}.markdown-jekyll .pl-sg{color:#959da5}.markdown-jekyll .pl-corl{color:#032f62;text-decoration:underline}.markdown-jekyll .octicon{display:inline-block;fill:currentColor;vertical-align:text-bottom}.markdown-jekyll a{background-color:transparent;color:#0366d6;text-decoration:none}.markdown-jekyll a:hover{text-decoration:underline}.markdown-jekyll a:active,.markdown-jekyll a:hover{outline-width:0}.markdown-jekyll strong{font-weight:600}.markdown-jekyll code,.markdown-jekyll kbd,.markdown-jekyll pre{font-family:monospace,monospace;font-size:1em}.markdown-jekyll input{font:inherit;font-family:inherit;font-size:inherit;line-height:inherit;margin:0;overflow:visible}.markdown-jekyll [type=checkbox]{box-sizing:border-box;padding:0}.markdown-jekyll *{box-sizing:border-box}.markdown-jekyll hr{background:transparent;border:0;box-sizing:content-box;height:.25em;margin:24px 0;overflow:hidden;padding:0}.markdown-jekyll hr::before{content:"";display:table}.markdown-jekyll hr::after{clear:both;content:"";display:table}.markdown-jekyll td,.markdown-jekyll th{padding:0}.markdown-jekyll h1,.markdown-jekyll h2,.markdown-jekyll h3,.markdown-jekyll h4,.markdown-jekyll h5,.markdown-jekyll h6{font-weight:600;line-height:1.25;margin-bottom:16px;margin-top:24px}.markdown-jekyll h1{font-size:2em;font-weight:600;margin:.67em 0;padding-bottom:.3em}.markdown-jekyll h2{font-size:1.5em;font-weight:600;padding-bottom:.3em}.markdown-jekyll h3{font-size:1.25em;font-weight:600}.markdown-jekyll h4{font-size:1em;font-weight:600}.markdown-jekyll h5{font-size:.875em;font-weight:600}.markdown-jekyll h6{color:#6a737d;font-size:.85em;font-weight:600}.markdown-jekyll p{margin-bottom:10px;margin-top:0}.markdown-jekyll blockquote{border-left:.25em solid #7f8c8d;color:#bdc3c7;margin:0;padding:0 1em}.markdown-jekyll blockquote>:first-child{margin-top:0}.markdown-jekyll blockquote>:last-child{margin-bottom:0}.markdown-jekyll ul,.markdown-jekyll ol{padding-left:2em}.markdown-jekyll ol{margin-bottom:0;margin-top:0}.markdown-jekyll ol ol{list-style-type:lower-roman}.markdown-jekyll ol ul ol,.markdown-jekyll ol ol ol{list-style-type:lower-alpha}.markdown-jekyll ol ol,.markdown-jekyll ol ul{margin-bottom:0;margin-top:0}.markdown-jekyll ul{margin-bottom:0;margin-top:0}.markdown-jekyll ul ol{list-style-type:lower-roman}.markdown-jekyll ul ul ol,.markdown-jekyll ul ol ol{list-style-type:lower-alpha}.markdown-jekyll ul ul,.markdown-jekyll ul ol{margin-bottom:0;margin-top:0}.markdown-jekyll dd{margin-left:0}.markdown-jekyll .pl-0{padding-left:0 !important}.markdown-jekyll .pl-1{padding-left:4px !important}.markdown-jekyll .pl-2{padding-left:8px !important}.markdown-jekyll .pl-3{padding-left:16px !important}.markdown-jekyll .pl-4{padding-left:24px !important}.markdown-jekyll .pl-5{padding-left:32px !important}.markdown-jekyll .pl-6{padding-left:40px !important}.markdown-jekyll::before{content:"";display:table}.markdown-jekyll::after{clear:both;content:"";display:table}.markdown-jekyll>*:first-child{margin-top:0 !important}.markdown-jekyll>*:last-child{margin-bottom:0 !important}.markdown-jekyll a:not([href]){color:inherit;text-decoration:none}.markdown-jekyll .anchor{float:left;line-height:1;margin-left:-20px;padding-right:4px}.markdown-jekyll .anchor:focus{outline:none}.markdown-jekyll p,.markdown-jekyll blockquote,.markdown-jekyll ul,.markdown-jekyll ol,.markdown-jekyll dl,.markdown-jekyll table,.markdown-jekyll pre{margin-bottom:16px;margin-top:0}.markdown-jekyll h1 .octicon-link,.markdown-jekyll h2 .octicon-link,.markdown-jekyll h3 .octicon-link,.markdown-jekyll h4 .octicon-link,.markdown-jekyll h5 .octicon-link,.markdown-jekyll h6 .octicon-link{color:#1b1f23;vertical-align:middle;visibility:hidden}.markdown-jekyll h1:hover .anchor,.markdown-jekyll h2:hover .anchor,.markdown-jekyll h3:hover .anchor,.markdown-jekyll h4:hover .anchor,.markdown-jekyll h5:hover .anchor,.markdown-jekyll h6:hover .anchor{text-decoration:none}.markdown-jekyll h1:hover .anchor .octicon-link,.markdown-jekyll h2:hover .anchor .octicon-link,.markdown-jekyll h3:hover .anchor .octicon-link,.markdown-jekyll h4:hover .anchor .octicon-link,.markdown-jekyll h5:hover .anchor .octicon-link,.markdown-jekyll h6:hover .anchor .octicon-link{visibility:visible}.markdown-jekyll li{word-wrap:break-all}.markdown-jekyll li>p{margin-top:16px}.markdown-jekyll li+li{margin-top:.25em}.markdown-jekyll dl{padding:0}.markdown-jekyll dl dt{font-size:1em;font-style:italic;font-weight:600;margin-top:16px;padding:0}.markdown-jekyll dl dd{margin-bottom:16px;padding:0 16px}.markdown-jekyll table{border-collapse:collapse;border-spacing:0;color:#fff;display:block;overflow:auto;width:100%}.markdown-jekyll table th{border:1px solid #353535;font-weight:600;padding:6px 13px}.markdown-jekyll table td{border:1px solid #353535;padding:6px 13px}.markdown-jekyll table tr{border-top:1px solid #353535}.markdown-jekyll img{background-color:#fff;border-style:none;box-sizing:content-box;max-width:100%}.markdown-jekyll img[align=right]{padding-left:20px}.markdown-jekyll img[align=left]{padding-right:20px}.markdown-jekyll code{background-color:rgba(27,31,35,.05);border-radius:3px;font-family:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,Courier,monospace;font-size:85%;margin:0;padding:.2em .4em}.markdown-jekyll .highlight{color:#d0d0d0}.markdown-jekyll .highlight pre{background-color:#f6f8fa;border-radius:3px;font-size:85%;line-height:1.45;margin-bottom:0;overflow:auto;padding:16px;word-break:normal}.markdown-jekyll .highlight table td{padding:5px}.markdown-jekyll .highlight table pre{margin:0}.markdown-jekyll .highlight .err{background-color:#ac4142;color:#151515}.markdown-jekyll .highlight .w{color:#d0d0d0}.markdown-jekyll .highlight .c,.markdown-jekyll .highlight .cd,.markdown-jekyll .highlight .cm,.markdown-jekyll .highlight .c1,.markdown-jekyll .highlight .cs{color:#888}.markdown-jekyll .highlight .cp,.markdown-jekyll .highlight .nt{color:#f4bf75}.markdown-jekyll .highlight .o,.markdown-jekyll .highlight .ow,.markdown-jekyll .highlight .p,.markdown-jekyll .highlight .pi{color:#cb4b16}.markdown-jekyll .highlight .gi{color:#90a959}.markdown-jekyll .highlight .gd{color:#ac4142}.markdown-jekyll .highlight .gh{color:#268bd2;font-weight:bold}.markdown-jekyll .highlight .k,.markdown-jekyll .highlight .kn,.markdown-jekyll .highlight .kp,.markdown-jekyll .highlight .kr,.markdown-jekyll .highlight .kv{color:#aa759f}.markdown-jekyll .highlight .kc,.markdown-jekyll .highlight .kt,.markdown-jekyll .highlight .kd{color:#d28445}.markdown-jekyll .highlight .s,.markdown-jekyll .highlight .sb,.markdown-jekyll .highlight .sc,.markdown-jekyll .highlight .sd,.markdown-jekyll .highlight .s2,.markdown-jekyll .highlight .sh,.markdown-jekyll .highlight .sx,.markdown-jekyll .highlight .s1{color:#90a959}.markdown-jekyll .highlight .sr{color:#75b5aa}.markdown-jekyll .highlight .si,.markdown-jekyll .highlight .se{color:#8f5536}.markdown-jekyll .highlight .nn,.markdown-jekyll .highlight .nc,.markdown-jekyll .highlight .no{color:#f4bf75}.markdown-jekyll .highlight .na{color:#6a9fb5}.markdown-jekyll .highlight .m,.markdown-jekyll .highlight .mf,.markdown-jekyll .highlight .mh,.markdown-jekyll .highlight .mi,.markdown-jekyll .highlight .il,.markdown-jekyll .highlight .mo,.markdown-jekyll .highlight .mb,.markdown-jekyll .highlight .mx,.markdown-jekyll .highlight .ss{color:#90a959}.markdown-jekyll .highlighter-rouge{color:#d0d0d0}.markdown-jekyll pre{background-color:#f6f8fa;border-radius:3px;font-family:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,Courier,monospace;font-size:85%;line-height:1.45;margin-bottom:0;margin-top:0;overflow:auto;padding:16px;word-wrap:normal}.markdown-jekyll pre>code{background:transparent;border:0;font-size:100%;margin:0;padding:0;white-space:pre;word-break:normal}.markdown-jekyll pre code{background-color:transparent;border:0;display:inline;line-height:inherit;margin:0;max-width:auto;overflow:visible;padding:0;word-wrap:normal}.markdown-jekyll .full-commit .btn-outline:not(:disabled):hover{border-color:#005cc5;color:#005cc5}.markdown-jekyll kbd{background-color:#fafbfc;border:solid 1px #d1d5da;border-bottom-color:#c6cbd1;border-radius:3px;box-shadow:inset 0 -1px 0 #c6cbd1;color:#444d56;display:inline-block;font:11px "SFMono-Regular",Consolas,"Liberation Mono",Menlo,Courier,monospace;line-height:10px;padding:3px 5px;vertical-align:middle}.markdown-jekyll :checked+.radio-label{border-color:#0366d6;position:relative;z-index:1}.markdown-jekyll .task-list-item{list-style-type:none}.markdown-jekyll .task-list-item+.task-list-item{margin-top:3px}.markdown-jekyll .task-list-item input{margin:0 .2em .25em -1.6em;vertical-align:middle}@media(max-width: 750px){.markdown-container{padding:2em 3em}.paper-container .paper{padding:40px 28px}.fullscreen.half .background{height:100%}.me{padding:0}.me .title{font-size:13vmin;margin:0;text-align:center}.me .undertitle{font-size:1.75rem;text-align:center}.me .image-title{height:7em;width:7em}.me.unset{flex-direction:column;margin-left:0}.me.unset .unset{margin-left:0}.buttons{align-items:center;display:flex;flex-flow:row wrap;justify-content:center}.buttons .btn{align-items:center;display:flex;font-size:18px;justify-content:center;line-height:20px;padding:20px 10px;text-align:center;white-space:pre-line;width:calc(45% - 30px)}.buttons .btn i{margin-right:10px}.buttons.one-line .btn{padding:14px 8px;width:75%}}@media(max-width: 1012px){.paper-container .paper{width:85%}}@media(max-width: 550px){.paper-container{display:block}.paper-container .paper::before{display:none}.container{margin:0;margin-bottom:2.5em;margin-top:1.5em;padding:0;width:100%}.flex-grid .col-xs,.flex-grid .col-xs-1,.flex-grid .col-xs-2,.flex-grid .col-xs-3,.flex-grid .col-xs-4,.flex-grid .col-xs-5,.flex-grid .col-xs-6,.flex-grid .col-xs-7,.flex-grid .col-xs-8,.flex-grid .col-xs-9,.flex-grid .col-xs-10,.flex-grid .col-xs-11,.flex-grid .col-xs-12{flex-basis:100%;max-width:100%;padding:0;width:100%}}.bold{font-weight:bold}.italic{font-style:italic}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.no-border{border:0}.no-border-radius{border-radius:0}.no-box-shadow{box-shadow:none}.no-margin{margin:0}.no-padding{padding:0}.no-background{background:transparent}.no-select{-webkit-user-select:none;-moz-user-select:none;user-select:none}.center-display{display:block;margin:0 auto;text-align:center}.center-flex{display:flex;justify-content:center}.arial{font-family:Arial}.monospace{font-family:monospace}.times-new-roman{font-family:"Times New Roman",Times,serif}.github{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"}/*# sourceMappingURL=modesta.css.map */ 6 | -------------------------------------------------------------------------------- /templates/assets/profile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexFlipnote/CoffeeAPI/366338a8e7717379584eb3e7022759be1e5bccd3/templates/assets/profile.png -------------------------------------------------------------------------------- /templates/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | {{ config.title }} 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 |
20 |
21 |

☕ {{ config.title }}

22 | {{ config.description }}
Images in API: {{ images }}
23 |
24 | 29 |
30 |
31 | 32 | 33 | --------------------------------------------------------------------------------