diff --git a/.gitignore b/.gitignore index 0f90b47..fa505a4 100644 --- a/.gitignore +++ b/.gitignore @@ -30,4 +30,9 @@ Splunk/opt-splunk-var/* *.log -etc/nginx/default\.conf +etc/nginx/default.conf + +etc/logs/nginx/*.log +etc/logs/letsencrypt/* +etc/ghost/logs/*.log +etc/ghost/logs/*.log.* diff --git a/README.md b/README.md index 2b15cf6..8d13c81 100644 --- a/README.md +++ b/README.md @@ -1,34 +1,67 @@ # Open RSC Docker Home [![Build Status](https://travis-ci.org/Open-RSC/Docker-Home.svg?branch=master)](https://travis-ci.org/Open-RSC/Docker-Home) -An easy to run RSC private server environment using Docker that works in Windows, Mac, and Linux. ![Death](https://i.imgur.com/tzLgEwV.png) +# Table of contents +1. [Project Introduction](#introduction) +1. [Default Credentials](#credentials) +2. [Minimum Requirements](#requirements) +3. [How to Obtain Open RSC](#obtain) +4. [Required Step For Windows Users](#windows) +5. [Setup Process](#setup) +6. [Steps to Host on a VPS](#vps) + + +## Project Introduction + Choices: 1. Single player RSC game + basic database editing (PHPMyAdmin) 2. Game + Website + PHPMyAdmin +[Return to top](#top) ___ -## Operating systems supported +## Default Credentials -* Windows 10 x64 (Not Windows 7) +#### Website + +Username: admin@openrsc.com + +Password: malwareinfection + + +#### Database + +Username: root + +Password: root + +[Return to top](#top) +___ + +## Minimum Requirements (suggested use a VPS host or a VirtualBox VM) + +* Windows 10 (sorry, no Windows 7 due to Docker for Windows incompatibility) * Mac OS X High Sierra -* Ubuntu Linux 18.04 x64 +* Ubuntu Linux 18.04 (or a derivative like Mint Linux) -* Fedora Linux 28 x64 +* Fedora Linux 28 * CentOS 7 x64 +[Return to top](#top) ___ -## Choice 1: Download the zip, extract it, and open the "Docker-Home" folder +## How to Obtain Open RSC + +#### Option 1: Download the zip, extract it, and open the "Docker-Home" folder https://github.com/Open-RSC/Docker-Home/archive/master.zip -## Choice 2: Clone the project with git +#### Option 2: Clone the project with git Install [Git](http://git-scm.com/book/en/v2/Getting-Started-Installing-Git), then clone the project: @@ -36,17 +69,19 @@ Install [Git](http://git-scm.com/book/en/v2/Getting-Started-Installing-Git), the git clone https://github.com/Open-RSC/Docker-Home.git ``` + [Return to top](#top) ___ -## Important for Windows users! +## Required Step For Windows Users Open Docker and make your drives available to your Docker containers: ![Shared drives setting](https://i.imgur.com/6YsGkoZ.png) +[Return to top](#top) ___ -## Run the scripts +## Setup Process 1. Perform the first time setup: @@ -112,43 +147,36 @@ ___ Windows: "Stop_Game_Windows.cmd" ``` +[Return to top](#top) ___ -## Ready to host a public version on your own VPS? +## Steps to Host on a VPS You will need to edit: -* PHPMyAdmin's MySQL users +#### PHPMyAdmin MariaDB SQL users * Create a new user in PHPMyAdmin, grant permissions, remove existing users. - * Secure your users by making them only accessible from specific hostnames + * Use % for the host associated with the user. Docker containers get fresh IPs, the setup script configures firewall to block external access to MariaDB and the Docker container for MariaDB is bound to localhost. - * Each Docker container will have it's own assigned internal IP address. +#### Launcher main.java - * Examples: - - * openrsc_forum @ 172.18.0.3 (only accessible via Nginx Docker container) - - * openrsc_game @ 172.18.0.1 (only accessible via locally running Open RSC game server) - - * Marwolf @ 172.18.0.4 (only accessible via PHPMyAdmin Docker container) - - * Avoid: % for any host (risks allowing remote brute force MySQL server attacks) - -* Launcher's main.java - - * Edit: /Docker-Home/Game/Launcher/src/Main.java + * Edit: "/Docker-Home/Game/Launcher/src/Main.java" * Replace with your domain / IP: private static String URL = "http://localhost"; -* Client's config.java + * Compile and copy result from "/Docker-Home/Game/Launcher/dist/Open_RSC_Launcher.jar" to "/Docker-Home/Website/downloads/Open_RSC_Launcher.jar" - * Edit: /Docker-Home/Game/client/src/org/openrsc/client/Config.java +#### Client config.java + + * Edit: "/Docker-Home/Game/client/src/org/openrsc/client/Config.java" * Replace with your domain / IP: public static String IP = "localhost"; -* Server's config.xml + * Compile and compress "/Docker-Home/Game/Launcher/dist/Open_RSC_Launcher.jar" as "/Docker-Home/Game/Launcher/dist/client.zip" then copy "/Docker-Home/Game/Launcher/dist/client.zip" to "/Docker-Home/Website/downloads/client.zip" + +#### Server config.xml * Edit: /Docker-Home/Game/server/config/config.xml @@ -156,28 +184,13 @@ You will need to edit: * Replace with your newly created SQL user pass: root -* Website's board/config.php - - * Edit: /Docker-Home/Website/board/config.php - - * Replace with your newly created SQL username: $dbuser = 'root'; - - * Replace with your newly created SQL user pass: $dbpasswd = 'root'; - -* Website's client.zip file - - * Compile changes for your client and compress "Open_RSC_Client.jar" as client.zip - - * Location: /Docker-Home/Game/client/dist/Open_RSC_Client.jar - - * Copy result to: /Docker-Home/Website/downloads/client.zip - -* Website's downloads/hashes.txt +#### Website downloads/hashes.txt * Edit: /Docker-Home/Website/downloads/hashes.txt - * Replace with updated md5sum hashes of your client.zip and cache.zip (likely you only will replace client.zip) + * Replace with updated md5sum hashes of client.zip and cache.zip (likely you only will replace client.zip's hash) - * Obtain MD5sum via md5sum *.zip + * Obtain MD5sum via command: "md5sum *.zip" -___ + +[Return to top](#top) diff --git a/docker-compose.yml b/docker-compose.yml index 3840b34..d878382 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,12 +1,12 @@ -version: '3' +version: '3.1' services: - web: - image: nginx:alpine + nginx: + image: nginx:latest container_name: nginx volumes: - "./etc/nginx/default.conf:/etc/nginx/conf.d/default.conf" - - "./Website:/var/www/html/public:ro" + - "./Website:/var/www/html/public" - "./etc/nginx/default.template.conf:/etc/nginx/conf.d/default.template" - "./etc/logs/nginx:/var/log/nginx" - "./etc/logs/letsencrypt:/var/log/letsencrypt" @@ -20,8 +20,8 @@ services: command: /bin/sh -c "envsubst '$$NGINX_HOST' < /etc/nginx/conf.d/default.template > /etc/nginx/conf.d/default.conf && nginx -g 'daemon off;'" restart: always depends_on: - - php - mysqldb + - tomcat # logging: # driver: splunk # options: @@ -31,22 +31,6 @@ services: # tag: "{{.ImageName}}/{{.Name}}/{{.ID}}" # labels: "Nginx" - php: - image: nanoninja/php-fpm:7.2 - container_name: php - restart: always - volumes: - - "./etc/php/php.ini:/usr/local/etc/php/conf.d/php.ini" - - "./Website:/var/www/html/public" -# logging: -# driver: splunk -# options: -# splunk-token: "e1c56fa1-9f7c-4d2c-ba8f-989b15d85008" -# splunk-url: "https://127.0.0.1:8088" -# splunk-insecureskipverify: "true" -# tag: "{{.ImageName}}/{{.Name}}/{{.ID}}" -# labels: "PHP" - myadmin: image: phpmyadmin/phpmyadmin container_name: phpmyadmin @@ -77,7 +61,7 @@ services: - MYSQL_USER=dev - MYSQL_PASSWORD=dev ports: - - "3306:3306" + - "127.0.0.1:3306:3306" volumes: - "./data/db/mysql:/var/lib/mysql" - "./etc/mariadb/innodb-fix.cnf:/etc/mysql/conf.d/innodb-fix.cnf" @@ -95,7 +79,6 @@ services: container_name: tomcat ports: - "8082:8082" - - "8443:8443" restart: always volumes: - "./Website:/usr/local/tomcat/webapps/ROOT" @@ -110,3 +93,25 @@ services: # splunk-insecureskipverify: "true" # tag: "{{.ImageName}}/{{.Name}}/{{.ID}}" # labels: "Tomcat" + + ghost: + image: ghost:latest + container_name: ghost + ports: + - "127.0.0.1:2368:2368" + restart: always + volumes: + - "./etc/ghost:/var/lib/ghost/content" + depends_on: + - nginx + environment: + NODE_ENV: production + privacy__useUpdateCheck: 0 +# logging: +# driver: splunk +# options: +# splunk-token: "e1c56fa1-9f7c-4d2c-ba8f-989b15d85008" +# splunk-url: "https://127.0.0.1:8088" +# splunk-insecureskipverify: "true" +# tag: "{{.ImageName}}/{{.Name}}/{{.ID}}" +# labels: "Ghost" diff --git a/etc/ghost/images/2018/08/0vytc.png b/etc/ghost/images/2018/08/0vytc.png new file mode 100644 index 0000000..a433fe8 Binary files /dev/null and b/etc/ghost/images/2018/08/0vytc.png differ diff --git a/etc/ghost/images/2018/08/16737510.jpg b/etc/ghost/images/2018/08/16737510.jpg new file mode 100644 index 0000000..13b2035 Binary files /dev/null and b/etc/ghost/images/2018/08/16737510.jpg differ diff --git a/etc/ghost/images/2018/08/18274778_280580645735523_4488223525424635644_n.jpg b/etc/ghost/images/2018/08/18274778_280580645735523_4488223525424635644_n.jpg new file mode 100644 index 0000000..eac103c Binary files /dev/null and b/etc/ghost/images/2018/08/18274778_280580645735523_4488223525424635644_n.jpg differ diff --git a/etc/ghost/images/2018/08/41124845-1.png b/etc/ghost/images/2018/08/41124845-1.png new file mode 100644 index 0000000..281992c Binary files /dev/null and b/etc/ghost/images/2018/08/41124845-1.png differ diff --git a/etc/ghost/images/2018/08/41124845.png b/etc/ghost/images/2018/08/41124845.png new file mode 100644 index 0000000..281992c Binary files /dev/null and b/etc/ghost/images/2018/08/41124845.png differ diff --git a/etc/ghost/images/2018/08/68747470733a2f2f692e696d6775722e636f6d2f747a4c674577562e706e67-1.png b/etc/ghost/images/2018/08/68747470733a2f2f692e696d6775722e636f6d2f747a4c674577562e706e67-1.png new file mode 100644 index 0000000..a9a4196 Binary files /dev/null and b/etc/ghost/images/2018/08/68747470733a2f2f692e696d6775722e636f6d2f747a4c674577562e706e67-1.png differ diff --git a/etc/ghost/images/2018/08/68747470733a2f2f692e696d6775722e636f6d2f747a4c674577562e706e67.png b/etc/ghost/images/2018/08/68747470733a2f2f692e696d6775722e636f6d2f747a4c674577562e706e67.png new file mode 100644 index 0000000..a9a4196 Binary files /dev/null and b/etc/ghost/images/2018/08/68747470733a2f2f692e696d6775722e636f6d2f747a4c674577562e706e67.png differ diff --git a/etc/ghost/images/2018/08/96Uk-sa-Y6g4hkPV7d2cLdxuXQAPW6lt3mRSExWm18A.jpg b/etc/ghost/images/2018/08/96Uk-sa-Y6g4hkPV7d2cLdxuXQAPW6lt3mRSExWm18A.jpg new file mode 100644 index 0000000..31ec8ae Binary files /dev/null and b/etc/ghost/images/2018/08/96Uk-sa-Y6g4hkPV7d2cLdxuXQAPW6lt3mRSExWm18A.jpg differ diff --git a/etc/ghost/images/2018/08/OO6Urwx.png b/etc/ghost/images/2018/08/OO6Urwx.png new file mode 100644 index 0000000..29681d3 Binary files /dev/null and b/etc/ghost/images/2018/08/OO6Urwx.png differ diff --git a/etc/ghost/images/2018/08/capes.png b/etc/ghost/images/2018/08/capes.png new file mode 100644 index 0000000..06926e3 Binary files /dev/null and b/etc/ghost/images/2018/08/capes.png differ diff --git a/etc/ghost/images/2018/08/dragons.png b/etc/ghost/images/2018/08/dragons.png new file mode 100644 index 0000000..0965c09 Binary files /dev/null and b/etc/ghost/images/2018/08/dragons.png differ diff --git a/etc/ghost/images/2018/08/n00b.png b/etc/ghost/images/2018/08/n00b.png new file mode 100644 index 0000000..d7b0422 Binary files /dev/null and b/etc/ghost/images/2018/08/n00b.png differ diff --git a/etc/ghost/images/2018/08/plcLv.png b/etc/ghost/images/2018/08/plcLv.png new file mode 100644 index 0000000..8a590b1 Binary files /dev/null and b/etc/ghost/images/2018/08/plcLv.png differ diff --git a/etc/ghost/images/2018/08/travis.png b/etc/ghost/images/2018/08/travis.png new file mode 100644 index 0000000..620b5c1 Binary files /dev/null and b/etc/ghost/images/2018/08/travis.png differ diff --git a/etc/ghost/images/2018/08/wod.png b/etc/ghost/images/2018/08/wod.png new file mode 100644 index 0000000..c1f8ee5 Binary files /dev/null and b/etc/ghost/images/2018/08/wod.png differ diff --git a/etc/ghost/settings/routes.yaml b/etc/ghost/settings/routes.yaml new file mode 100644 index 0000000..b3df485 --- /dev/null +++ b/etc/ghost/settings/routes.yaml @@ -0,0 +1,11 @@ +routes: + +collections: + /: + permalink: '{globals.permalinks}' # special 1.0 compatibility setting. See the docs for details. + template: + - index + +taxonomies: + tag: /tag/{slug}/ + author: /author/{slug}/ diff --git a/etc/ghost/themes/casper/SHOWCASE.md b/etc/ghost/themes/casper/SHOWCASE.md new file mode 100644 index 0000000..1431f89 --- /dev/null +++ b/etc/ghost/themes/casper/SHOWCASE.md @@ -0,0 +1,40 @@ +## Showcase + +
+ + + + + + + + + + + + + + + + + + +
+
+
+ +## Add your blog + +1. Customize your blog! Use a different color and combine it with a nice background. +2. Take a snapshot of your blog in the main page. +2. Trim the snapshot to remove top and bottom margins and resize it into **327 × 174 pixels**. +3. Host the snapshot in a image hosting like [imgur](https://imgur.com). +4. Edit this file adding a new line at the end of this file following the format: + +```html + +``` + +5. Create a Pull Request! + + diff --git a/etc/ghost/themes/casper/assets/css/uno-zen.css b/etc/ghost/themes/casper/assets/css/uno-zen.css new file mode 100755 index 0000000..d0981c2 --- /dev/null +++ b/etc/ghost/themes/casper/assets/css/uno-zen.css @@ -0,0 +1,8 @@ +/** + * uno-zen - Minimalist and Elegant theme for Ghost + * @version 2.9.8 + * @link https://github.com/kikobeats/uno-zen + * @author Kiko Beats (https://github.com/kikobeats) + * @license MIT + */ +#post-content a:not(.title-link),#posts-list>li>a{border-bottom:1px dashed #ea6153;line-height:25px;transition:all .5s;padding:.1rem .25rem}#post-content a:hover:not(.title-link),#posts-list>li>a:hover{color:#fff;border-color:#ea6153;background:#ea6153}#post-content a:active:not(.title-link),#post-content a:hover:not(.title-link),#posts-list>li>a:active,#posts-list>li>a:hover{outline:0}.cover.container,body[data-page=error]{background:linear-gradient(150deg,rgba(95,44,130,.1) 30%,rgba(73,160,157,.2) 70%) 0 0/cover fixed}.cover.container,body[data-page=error]>article{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.cover.container{text-shadow:0 1px 1px rgba(0,0,0,.4)}.navigation.left .links>li.expanded,.navigation.left .links>li>a,.navigation.right .social.item a{position:relative;display:block;font-size:.9em;-webkit-font-smoothing:antialiased;font-weight:700;letter-spacing:1px;opacity:.8;color:#f8f8f8;border-radius:20px;text-shadow:none}.navigation.left .links>li.expanded:hover,.navigation.left .links>li>a:hover,.navigation.right .social.item a:hover{opacity:1}.navigation.left .links>li.expanded{border:1px solid #f8f8f8}a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{padding:0;margin:0;font:inherit;font-size:100%;vertical-align:baseline;border:0}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1.75rem}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:"";content:none}table{border-spacing:0;border-collapse:collapse}body{width:100%;*zoom:1}body:after,body:before{display:table;content:""}body:after{clear:both}html{font-size:1.125rem;height:100%;max-height:100%}html.expanded{overflow-y:hidden}body,html{height:100%}body{color:#666;font-family:Raleway,sans-serif}mark{background:#feda9e;padding:.05em .2em;border-radius:3px}::-moz-selection{background:#ffe28c}::selection{background:#ffe28c}hr{border:0}a{color:#333;position:relative;text-decoration:none;transition:all .35s}a:hover{color:#ea6153}h1,h2,h3,h4,h5,h6{color:#333;font-family:Roboto Slab,serif;-webkit-font-smoothing:antialiased;font-weight:lighter}h1{font-size:1.76rem;line-height:3.0625rem}h1,h2{margin:1.98rem 0}h2{font-size:1.408rem}h3{font-size:1.1264rem}h3,h4{margin:1.98rem 0}h4{font-size:.90112rem}h5{font-size:.7209rem}h5,h6{margin:1.98rem 0}h6{font-size:.57672rem}p{line-height:1.75rem;margin-bottom:1.3rem}strong{font-weight:700}em{font-style:italic}blockquote{border-left:.25rem solid #333;margin:2rem 0;padding:0 0 0 1.5rem}blockquote>p{font-family:freight-text-pro,Georgia,Cambria,Times New Roman,Times,serif;-webkit-font-smoothing:antialiased;font-style:italic;letter-spacing:.01rem;word-wrap:break-word}ol,ul{margin:0 0 1.3rem 2.5rem}ol li,ul li{line-height:2.1rem;margin:0 0 .2rem}ol ol,ol ul,ul ol,ul ul{margin:.1rem 0 .2rem 2rem}ol{list-style-type:decimal}ul{list-style-type:disc}.block-heading{display:inline;float:left;width:940px;margin:0 10px;bottom:-15px;font-size:.8rem;font-weight:700;letter-spacing:1px;position:relative;text-align:center;text-transform:uppercase}.label{padding:8px 18px 9px}main{bottom:0;left:22.5rem;padding:2rem 3rem;position:absolute;right:0;top:0}main>.content{margin:0 3.7rem;padding:2rem 0}main>.content>h1{margin-bottom:2.7rem}main>.content>footer{border-top:2px solid #ddd;color:#b3b3b3;display:block;font-size:.7em;padding:2em 0 0}.divider{border-top:1px solid hsla(0,0%,100%,.14);margin:10px auto}.divider.long{width:30%}.divider.short{width:15%}.divider.post{border-top:1px solid #ddd;margin:1.7rem 0;width:30%}.container{margin:0 auto;position:relative;width:940px}.copyright{display:block;margin-bottom:.7em}.copyright a{color:#a6a6a6;text-decoration:underline}.copyright a:hover{color:#ea6153}.emoji{height:1em!important;margin:0 .05em 0 .1em!important;vertical-align:-.1em!important;width:1em!important}@font-face{font-family:foundation-icons;font-style:normal;font-weight:400;src:url(../fonts/foundation-icons/foundation-icons.eot);src:url(../fonts/foundation-icons/foundation-icons.eot?#iefix) format("embedded-opentype"),url(../fonts/foundation-icons/foundation-icons.woff) format("woff"),url(../fonts/foundation-icons/foundation-icons.ttf) format("truetype"),url(../fonts/foundation-icons/foundation-icons.svg#fontcustom) format("svg")}.icon-reverse:after,.icon:before{display:inline-block;font-family:foundation-icons;-webkit-font-smoothing:antialiased;font-style:normal;font-weight:400;font-variant:normal;line-height:1;text-decoration:inherit;text-transform:none}.icon-search{position:static!important}.icon-search:before{position:absolute;right:95px;margin-top:32px;content:"\f16c"}.icon-address-book:before{content:"\f100"}.icon-alert:before{content:"\f101"}.icon-align-center:before{content:"\f102"}.icon-align-justify:before{content:"\f103"}.icon-align-left:before{content:"\f104"}.icon-align-right:before{content:"\f105"}.icon-anchor:before{content:"\f106"}.icon-annotate:before{content:"\f107"}.icon-archive:before{content:"\f108"}.icon-arrow-down:before{content:"\f109"}.icon-arrow-left:before{content:"\f10a"}.icon-arrow-right:before{content:"\f10b"}.icon-arrow-up:before{content:"\f10c"}.icon-arrows-compress:before{content:"\f10d"}.icon-arrows-expand:before{content:"\f10e"}.icon-arrows-in:before{content:"\f10f"}.icon-arrows-out:before{content:"\f110"}.icon-asl:before{content:"\f111"}.icon-asterisk:before{content:"\f112"}.icon-at-sign:before{content:"\f113"}.icon-background-color:before{content:"\f114"}.icon-battery-empty:before{content:"\f115"}.icon-battery-full:before{content:"\f116"}.icon-battery-half:before{content:"\f117"}.icon-bitcoin-circle:before{content:"\f118"}.icon-bitcoin:before{content:"\f119"}.icon-blind:before{content:"\f11a"}.icon-bluetooth:before{content:"\f11b"}.icon-bold:before{content:"\f11c"}.icon-book-bookmark:before{content:"\f11d"}.icon-book:before{content:"\f11e"}.icon-bookmark:before{content:"\f11f"}.icon-braille:before{content:"\f120"}.icon-burst-new:before{content:"\f121"}.icon-burst-sale:before{content:"\f122"}.icon-burst:before{content:"\f123"}.icon-calendar:before{content:"\f124"}.icon-camera:before{content:"\f125"}.icon-check:before{content:"\f126"}.icon-checkbox:before{content:"\f127"}.icon-clipboard-notes:before{content:"\f128"}.icon-clipboard-pencil:before{content:"\f129"}.icon-clipboard:before{content:"\f12a"}.icon-clock:before{content:"\f12b"}.icon-closed-caption:before{content:"\f12c"}.icon-cloud:before{content:"\f12d"}.icon-comment-minus:before{content:"\f12e"}.icon-comment-quotes:before{content:"\f12f"}.icon-comment-video:before{content:"\f130"}.icon-comment:before{content:"\f131"}.icon-comments:before{content:"\f132"}.icon-compass:before{content:"\f133"}.icon-contrast:before{content:"\f134"}.icon-credit-card:before{content:"\f135"}.icon-crop:before{content:"\f136"}.icon-crown:before{content:"\f137"}.icon-css3:before{content:"\f138"}.icon-database:before{content:"\f139"}.icon-die-five:before{content:"\f13a"}.icon-die-four:before{content:"\f13b"}.icon-die-one:before{content:"\f13c"}.icon-die-six:before{content:"\f13d"}.icon-die-three:before{content:"\f13e"}.icon-die-two:before{content:"\f13f"}.icon-dislike:before{content:"\f140"}.icon-dollar-bill:before{content:"\f141"}.icon-dollar:before{content:"\f142"}.icon-download:before{content:"\f143"}.icon-eject:before{content:"\f144"}.icon-elevator:before{content:"\f145"}.icon-euro:before{content:"\f146"}.icon-eye:before{content:"\f147"}.icon-fast-forward:before{content:"\f148"}.icon-female-symbol:before{content:"\f149"}.icon-female:before{content:"\f14a"}.icon-filter:before{content:"\f14b"}.icon-first-aid:before{content:"\f14c"}.icon-flag:before{content:"\f14d"}.icon-folder-add:before{content:"\f14e"}.icon-folder-lock:before{content:"\f14f"}.icon-folder:before{content:"\f150"}.icon-foot:before{content:"\f151"}.icon-foundation:before{content:"\f152"}.icon-graph-bar:before{content:"\f153"}.icon-graph-horizontal:before{content:"\f154"}.icon-graph-pie:before{content:"\f155"}.icon-graph-trend:before{content:"\f156"}.icon-guide-dog:before{content:"\f157"}.icon-hearing-aid:before{content:"\f158"}.icon-heart:before{content:"\f159"}.icon-home:before{content:"\f15a"}.icon-html5:before{content:"\f15b"}.icon-indent-less:before{content:"\f15c"}.icon-indent-more:before{content:"\f15d"}.icon-info:before{content:"\f15e"}.icon-italic:before{content:"\f15f"}.icon-key:before{content:"\f160"}.icon-laptop:before{content:"\f161"}.icon-layout:before{content:"\f162"}.icon-lightbulb:before{content:"\f163"}.icon-like:before{content:"\f164"}.icon-link:before{content:"\f165"}.icon-list-bullet:before{content:"\f166"}.icon-list-number:before{content:"\f167"}.icon-list-thumbnails:before{content:"\f168"}.icon-list:before{content:"\f169"}.icon-lock:before{content:"\f16a"}.icon-loop:before{content:"\f16b"}.icon-magnifying-glass:before{content:"\f16c"}.icon-mail:before{content:"\f16d"}.icon-male-female:before{content:"\f16e"}.icon-male-symbol:before{content:"\f16f"}.icon-male:before{content:"\f170"}.icon-map:before{content:"\f171"}.icon-marker:before{content:"\f172"}.icon-megaphone:before{content:"\f173"}.icon-microphone:before{content:"\f174"}.icon-minus-circle:before{content:"\f175"}.icon-minus:before{content:"\f176"}.icon-mobile-signal:before{content:"\f177"}.icon-mobile:before{content:"\f178"}.icon-monitor:before{content:"\f179"}.icon-mountains:before{content:"\f17a"}.icon-music:before{content:"\f17b"}.icon-next:before{content:"\f17c"}.icon-no-dogs:before{content:"\f17d"}.icon-no-smoking:before{content:"\f17e"}.icon-page-add:before{content:"\f17f"}.icon-page-copy:before{content:"\f180"}.icon-page-csv:before{content:"\f181"}.icon-page-delete:before{content:"\f182"}.icon-page-doc:before{content:"\f183"}.icon-page-edit:before{content:"\f184"}.icon-page-export-csv:before{content:"\f185"}.icon-page-export-doc:before{content:"\f186"}.icon-page-export-pdf:before{content:"\f187"}.icon-page-export:before{content:"\f188"}.icon-page-filled:before{content:"\f189"}.icon-page-multiple:before{content:"\f18a"}.icon-page-pdf:before{content:"\f18b"}.icon-page-remove:before{content:"\f18c"}.icon-page-search:before{content:"\f18d"}.icon-page:before{content:"\f18e"}.icon-paint-bucket:before{content:"\f18f"}.icon-paperclip:before{content:"\f190"}.icon-pause:before{content:"\f191"}.icon-paw:before{content:"\f192"}.icon-paypal:before{content:"\f193"}.icon-pencil:before{content:"\f194"}.icon-photo:before{content:"\f195"}.icon-play-circle:before{content:"\f196"}.icon-play-video:before{content:"\f197"}.icon-play:before{content:"\f198"}.icon-plus:before{content:"\f199"}.icon-pound:before{content:"\f19a"}.icon-power:before{content:"\f19b"}.icon-previous:before{content:"\f19c"}.icon-price-tag:before{content:"\f19d"}.icon-pricetag-multiple:before{content:"\f19e"}.icon-print:before{content:"\f19f"}.icon-prohibited:before{content:"\f1a0"}.icon-projection-screen:before{content:"\f1a1"}.icon-puzzle:before{content:"\f1a2"}.icon-quote:before{content:"\f1a3"}.icon-record:before{content:"\f1a4"}.icon-refresh:before{content:"\f1a5"}.icon-results-demographics:before{content:"\f1a6"}.icon-results:before{content:"\f1a7"}.icon-rewind-ten:before{content:"\f1a8"}.icon-rewind:before{content:"\f1a9"}.icon-rss:before{content:"\f1aa"}.icon-safety-cone:before{content:"\f1ab"}.icon-save:before{content:"\f1ac"}.icon-share:before{content:"\f1ad"}.icon-sheriff-badge:before{content:"\f1ae"}.icon-shield:before{content:"\f1af"}.icon-shopping-bag:before{content:"\f1b0"}.icon-shopping-cart:before{content:"\f1b1"}.icon-shuffle:before{content:"\f1b2"}.icon-skull:before{content:"\f1b3"}.icon-social-500px:before{content:"\f1b4"}.icon-social-adobe:before{content:"\f1b5"}.icon-social-amazon:before{content:"\f1b6"}.icon-social-android:before{content:"\f1b7"}.icon-social-apple:before{content:"\f1b8"}.icon-social-behance:before{content:"\f1b9"}.icon-social-bing:before{content:"\f1ba"}.icon-social-blogger:before{content:"\f1bb"}.icon-social-delicious:before{content:"\f1bc"}.icon-social-designer-news:before{content:"\f1bd"}.icon-social-deviant-art:before{content:"\f1be"}.icon-social-digg:before{content:"\f1bf"}.icon-social-dribbble:before{content:"\f1c0"}.icon-social-drive:before{content:"\f1c1"}.icon-social-dropbox:before{content:"\f1c2"}.icon-social-evernote:before{content:"\f1c3"}.icon-social-facebook:before{content:"\f1c4"}.icon-social-flickr:before{content:"\f1c5"}.icon-social-forrst:before{content:"\f1c6"}.icon-social-foursquare:before{content:"\f1c7"}.icon-social-game-center:before{content:"\f1c8"}.icon-social-github:before{content:"\f1c9"}.icon-social-google-plus:before{content:"\f1ca"}.icon-social-hacker-news:before{content:"\f1cb"}.icon-social-hi5:before{content:"\f1cc"}.icon-social-instagram:before{content:"\f1cd"}.icon-social-joomla:before{content:"\f1ce"}.icon-social-lastfm:before{content:"\f1cf"}.icon-social-linkedin:before{content:"\f1d0"}.icon-social-medium:before{content:"\f1d1"}.icon-social-myspace:before{content:"\f1d2"}.icon-social-orkut:before{content:"\f1d3"}.icon-social-path:before{content:"\f1d4"}.icon-social-picasa:before{content:"\f1d5"}.icon-social-pinterest:before{content:"\f1d6"}.icon-social-rdio:before{content:"\f1d7"}.icon-social-reddit:before{content:"\f1d8"}.icon-social-skillshare:before{content:"\f1d9"}.icon-social-skype:before{content:"\f1da"}.icon-social-smashing-mag:before{content:"\f1db"}.icon-social-snapchat:before{content:"\f1dc"}.icon-social-spotify:before{content:"\f1dd"}.icon-social-squidoo:before{content:"\f1de"}.icon-social-stack-overflow:before{content:"\f1df"}.icon-social-steam:before{content:"\f1e0"}.icon-social-stumbleupon:before{content:"\f1e1"}.icon-social-treehouse:before{content:"\f1e2"}.icon-social-tumblr:before{content:"\f1e3"}.icon-social-twitter:before{content:"\f1e4"}.icon-social-twitter-post:after{display:inline-block;height:36px;margin-left:9px;font-size:26px;content:"\f1e4";vertical-align:middle}.icon-social-vimeo:before{content:"\f1e5"}.icon-social-windows:before{content:"\f1e6"}.icon-social-xbox:before{content:"\f1e7"}.icon-social-yahoo:before{content:"\f1e8"}.icon-social-yelp:before{content:"\f1e9"}.icon-social-youtube:before{content:"\f1ea"}.icon-social-zerply:before{content:"\f1eb"}.icon-social-zurb:before{content:"\f1ec"}.icon-sound:before{content:"\f1ed"}.icon-star:before{content:"\f1ee"}.icon-stop:before{content:"\f1ef"}.icon-strikethrough:before{content:"\f1f0"}.icon-subscript:before{content:"\f1f1"}.icon-superscript:before{content:"\f1f2"}.icon-tablet-landscape:before{content:"\f1f3"}.icon-tablet-portrait:before{content:"\f1f4"}.icon-target-two:before{content:"\f1f5"}.icon-target:before{content:"\f1f6"}.icon-telephone-accessible:before{content:"\f1f7"}.icon-telephone:before{content:"\f1f8"}.icon-text-color:before{content:"\f1f9"}.icon-thumbnails:before{content:"\f1fa"}.icon-ticket:before{content:"\f1fb"}.icon-torso-business:before{content:"\f1fc"}.icon-torso-female:before{content:"\f1fd"}.icon-torso:before{content:"\f1fe"}.icon-torsos-all-female:before{content:"\f1ff"}.icon-torsos-all:before{content:"\f200"}.icon-torsos-female-male:before{content:"\f201"}.icon-torsos-male-female:before{content:"\f202"}.icon-torsos:before{content:"\f203"}.icon-trash:before{content:"\f204"}.icon-trees:before{content:"\f205"}.icon-trophy:before{content:"\f206"}.icon-underline:before{content:"\f207"}.icon-universal-access:before{content:"\f208"}.icon-unlink:before{content:"\f209"}.icon-unlock:before{content:"\f20a"}.icon-upload-cloud:before{content:"\f20b"}.icon-upload:before{content:"\f20c"}.icon-usb:before{content:"\f20d"}.icon-video:before{content:"\f20e"}.icon-volume-none:before{content:"\f20f"}.icon-volume-strike:before{content:"\f210"}.icon-volume:before{content:"\f211"}.icon-web:before{content:"\f212"}.icon-wheelchair:before{content:"\f213"}.icon-widget:before{content:"\f214"}.icon-wrench:before{content:"\f215"}.icon-x-circle:before{content:"\f216"}.icon-x:before{content:"\f217"}.icon-yen:before{content:"\f218"}.icon-zoom-in:before{content:"\f219"}.icon-zoom-out:before{content:"\f21a"}.btn.square,img.square{border-radius:0}.btn.rounded,img.rounded{border-radius:50%}.btn{border:1px solid #ea6153;border-radius:20px;color:#ea6153;font-size:.9em;-webkit-font-smoothing:antialiased;font-weight:700;letter-spacing:1px;padding:10px 20px;text-shadow:none}.btn:hover{border-color:#d62c1a;color:#d62c1a}.btn.small{font-size:.7em;padding:8px 12px}.btn.large{font-size:1.1em;padding:10px 24px}.btn.secondary{border-color:#ffc107;color:#ffc107}.btn.secondary:hover{border-color:#ba8b00;color:#ba8b00}#menu-button{display:none}#menu-button>a>i{color:#f8f8f8;font-size:36px;position:relative;top:3px}:focus{outline:none}input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week]{background:#f8f8f8;border:1px solid #ddd;border-radius:3px;color:#666;font-size:.9em;padding:1em;width:240px}input[type=date] ::-webkit-input-placeholder,input[type=datetime-local] ::-webkit-input-placeholder,input[type=datetime] ::-webkit-input-placeholder,input[type=email] ::-webkit-input-placeholder,input[type=month] ::-webkit-input-placeholder,input[type=number] ::-webkit-input-placeholder,input[type=password] ::-webkit-input-placeholder,input[type=search] ::-webkit-input-placeholder,input[type=tel] ::-webkit-input-placeholder,input[type=text] ::-webkit-input-placeholder,input[type=time] ::-webkit-input-placeholder,input[type=url] ::-webkit-input-placeholder,input[type=week] ::-webkit-input-placeholder{color:#ccc}input[type=date] :-moz-placeholder,input[type=date] ::-moz-placeholder,input[type=datetime-local] :-moz-placeholder,input[type=datetime-local] ::-moz-placeholder,input[type=datetime] :-moz-placeholder,input[type=datetime] ::-moz-placeholder,input[type=email] :-moz-placeholder,input[type=email] ::-moz-placeholder,input[type=month] :-moz-placeholder,input[type=month] ::-moz-placeholder,input[type=number] :-moz-placeholder,input[type=number] ::-moz-placeholder,input[type=password] :-moz-placeholder,input[type=password] ::-moz-placeholder,input[type=search] :-moz-placeholder,input[type=search] ::-moz-placeholder,input[type=tel] :-moz-placeholder,input[type=tel] ::-moz-placeholder,input[type=text] :-moz-placeholder,input[type=text] ::-moz-placeholder,input[type=time] :-moz-placeholder,input[type=time] ::-moz-placeholder,input[type=url] :-moz-placeholder,input[type=url] ::-moz-placeholder,input[type=week] :-moz-placeholder,input[type=week] ::-moz-placeholder{color:#ccc}input[type=date] :-ms-input-placeholder,input[type=datetime-local] :-ms-input-placeholder,input[type=datetime] :-ms-input-placeholder,input[type=email] :-ms-input-placeholder,input[type=month] :-ms-input-placeholder,input[type=number] :-ms-input-placeholder,input[type=password] :-ms-input-placeholder,input[type=search] :-ms-input-placeholder,input[type=tel] :-ms-input-placeholder,input[type=text] :-ms-input-placeholder,input[type=time] :-ms-input-placeholder,input[type=url] :-ms-input-placeholder,input[type=week] :-ms-input-placeholder{color:#ccc}input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus{border-color:#ffc107}.hvr-grow-rotate{display:inline-block;-moz-osx-font-smoothing:grayscale;transition-duration:.3s;transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform;-webkit-transform:translateZ(0);transform:translateZ(0);vertical-align:middle;box-shadow:0 0 1px transparent;-webkit-backface-visibility:hidden;backface-visibility:hidden}.hvr-grow-rotate:active,.hvr-grow-rotate:focus,.hvr-grow-rotate:hover{-webkit-transform:scale(1.1) rotate(4deg);transform:scale(1.1) rotate(4deg)}@-webkit-keyframes a{10%{-webkit-transform:translateX(3px) rotate(2deg);transform:translateX(3px) rotate(2deg)}20%{-webkit-transform:translateX(-3px) rotate(-2deg);transform:translateX(-3px) rotate(-2deg)}30%{-webkit-transform:translateX(3px) rotate(2deg);transform:translateX(3px) rotate(2deg)}40%{-webkit-transform:translateX(-3px) rotate(-2deg);transform:translateX(-3px) rotate(-2deg)}50%{-webkit-transform:translateX(2px) rotate(1deg);transform:translateX(2px) rotate(1deg)}60%{-webkit-transform:translateX(-2px) rotate(-1deg);transform:translateX(-2px) rotate(-1deg)}70%{-webkit-transform:translateX(2px) rotate(1deg);transform:translateX(2px) rotate(1deg)}80%{-webkit-transform:translateX(-2px) rotate(-1deg);transform:translateX(-2px) rotate(-1deg)}90%{-webkit-transform:translateX(1px) rotate(0);transform:translateX(1px) rotate(0)}to{-webkit-transform:translateX(-1px) rotate(0);transform:translateX(-1px) rotate(0)}}@keyframes a{10%{-webkit-transform:translateX(3px) rotate(2deg);transform:translateX(3px) rotate(2deg)}20%{-webkit-transform:translateX(-3px) rotate(-2deg);transform:translateX(-3px) rotate(-2deg)}30%{-webkit-transform:translateX(3px) rotate(2deg);transform:translateX(3px) rotate(2deg)}40%{-webkit-transform:translateX(-3px) rotate(-2deg);transform:translateX(-3px) rotate(-2deg)}50%{-webkit-transform:translateX(2px) rotate(1deg);transform:translateX(2px) rotate(1deg)}60%{-webkit-transform:translateX(-2px) rotate(-1deg);transform:translateX(-2px) rotate(-1deg)}70%{-webkit-transform:translateX(2px) rotate(1deg);transform:translateX(2px) rotate(1deg)}80%{-webkit-transform:translateX(-2px) rotate(-1deg);transform:translateX(-2px) rotate(-1deg)}90%{-webkit-transform:translateX(1px) rotate(0);transform:translateX(1px) rotate(0)}to{-webkit-transform:translateX(-1px) rotate(0);transform:translateX(-1px) rotate(0)}}.hvr-buzz-out{display:inline-block;-moz-osx-font-smoothing:grayscale;-webkit-transform:translateZ(0);transform:translateZ(0);vertical-align:middle;box-shadow:0 0 1px transparent;-webkit-backface-visibility:hidden;backface-visibility:hidden}.hvr-buzz-out:active,.hvr-buzz-out:focus,.hvr-buzz-out:hover{-webkit-animation-name:a;animation-name:a;-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-iteration-count:1;animation-iteration-count:1}@-webkit-keyframes b{0%{-webkit-transform:translateY(50px);transform:translateY(50px)}50%{-webkit-transform:translate(20px,100px);transform:translate(20px,100px)}to{-webkit-transform:translateY(50px);transform:translateY(50px)}}@keyframes b{0%{-webkit-transform:translateY(50px);transform:translateY(50px)}50%{-webkit-transform:translate(20px,100px);transform:translate(20px,100px)}to{-webkit-transform:translateY(50px);transform:translateY(50px)}}code,pre{font-family:Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:90%;line-height:1.5;text-align:left;white-space:pre;word-spacing:normal;word-wrap:normal;word-break:normal;-moz-tab-size:2;-o-tab-size:2;tab-size:2;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none;color:#000;text-shadow:0 1px #fff;direction:ltr}code::-moz-selection,pre::-moz-selection{background:#b3d4fc;text-shadow:none}code::selection,pre::selection{background:#b3d4fc;text-shadow:none}@media print{code,pre{text-shadow:none}}pre{padding:1em;margin:2.5rem 0;overflow:auto}:not(pre)>code,pre{border:1px solid rgba(0,0,0,.15);background:#fbfaf8}:not(pre)>code{padding:1px 3px;font-family:Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:72%;line-height:72%;white-space:normal;color:#c25;border:1px solid #e1e1e8;border-radius:.3em;background-color:#f7f7f9;text-shadow:0 1px #fff}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#969896}.token.punctuation{color:#333}.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#0086b3}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#183691}.language-css .token.string,.style .token.string,.token.atrule,.token.attr-value,.token.entity,.token.keyword,.token.operator,.token.url{color:#a71d5d}.token.function{color:#0086b3}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.cover{position:fixed;z-index:1;display:block;width:22.5rem;height:100%;overflow-y:auto;border-right:1px solid #ccc;box-shadow:10.5px -10px 1px -9px #ddd}.cover.animated{transition:width .35s cubic-bezier(.645,.045,.355,1)}.cover.expanded{width:100%}.cover.expanded .navigation.left{margin-top:.85rem;margin-bottom:1rem}.cover.container{text-align:center;color:#f8f8f8}#profile-resume{display:none}.profile{max-width:38.75rem}.profile>p{margin:10px 2rem;font-size:.9rem}.profile>a>h1{margin:10px auto;font-family:Raleway,sans-serif;font-size:1.6rem;font-weight:700;letter-spacing:.05rem;color:#f8f8f8}.profile>a>h3{margin:0;color:#f8f8f8}.profile>a>img{width:7rem;border:2px solid rgba(234,97,83,.1);box-shadow:0 0 1px 1px rgba(0,0,0,.3)}.navigation.left{display:inline-block}.navigation.left .links{margin:0;list-style:none}.navigation.left .links>li{display:block;margin:0 1px 0 0;line-height:1em}.navigation.left .links>li.expanded{display:inline-block;margin:0 5px;border-radius:20px}.navigation.left .links>li.expanded>a{padding:.625rem 1.25rem}.navigation.left .links>li>a{display:block;float:none;padding:.5rem 1.25rem;opacity:.8;color:#f8f8f8}.navigation.left .links>li>a:hover{color:#ea6153}.navigation.right{display:block;margin:.5rem}.navigation.right .social{margin:0}.navigation.right .social.item{display:inline-block;margin:0 4px 0 0;line-height:1em}.navigation.right .social.item a{padding:6px 8px 6px 9px}.navigation.right .social.item a .label{display:none}.navigation.right .social.item a .icon{display:block;font-size:1.7em}.navigation.right .social.item a:hover{color:#ea6153}body[data-page=error]{width:100%;height:100%;font-size:1rem;font-weight:400;line-height:25px;text-align:center}.mayday{width:500px;margin:150px auto 20px}.mayday>h2{font-size:24px;line-height:35px;color:#f8f8f8;text-shadow:0 1px 1px rgba(0,0,0,.4)}.astro-wrap{position:relative;width:20vh;height:32vh;margin:auto}.astronaut{position:absolute;top:0;left:0;width:20vh;height:32vh;-webkit-transform:translateY(50px);transform:translateY(50px);-webkit-animation:b 10s infinite;animation:b 10s infinite;background:url(/assets/img/pikachu.jpg) 50%/cover no-repeat}.pagination{margin:0 0 2.5rem}.posts.index{font-size:.8rem;color:#999}.posts.newer{margin-right:1rem}.posts.older{margin-left:1rem}#posts-list{padding:0;margin:5rem 0;list-style-type:none}#posts-list>li{margin-left:1rem;margin-bottom:1.25rem}#posts-list>li>time{float:right;text-transform:uppercase;color:#777;font-size:10px;letter-spacing:2px}#posts-list>li>span>a{bottom:2px}#post-content a.title-link{color:#ea6153}#post-content .deep-link a:before{display:inline-block;content:"#";margin-left:-30px;width:30px;color:#fff;transition:all .2s;font-family:freight-text-pro,Georgia,Cambria,Times New Roman,Times,serif}#post-content .deep-link a:hover:before{color:rgba(234,97,83,.8)}.post>p>img{border-radius:3px;display:block;margin:1.5rem auto;max-width:100%;text-align:center;width:auto}.post pre{width:95%}.post>header{text-align:center}.post.meta{margin:.7em 0;font-size:.85rem;color:#ccc}.post.tags>a{padding:.15rem .25rem;font-size:.55rem;transition:all .35s;text-transform:uppercase;color:#f8f8f8;border-radius:.25rem;background-color:rgba(234,97,83,.45)}.post.tags>a:first-child{margin-left:.2rem}.post.tags>a:last-child{margin-right:.2rem}.post.tags>a:hover{background-color:#ea6153}.post.author img{display:inline-block;height:22px;margin:0 .5rem;vertical-align:middle;border:0;box-shadow:none}.post.comments{padding:2rem 0 0}.post.related{line-height:1;display:-webkit-box;display:-ms-flexbox;display:flex;padding:4rem 0 2rem;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}#post-image{max-width:100%;margin-top:1rem}#post-title{font-size:2.2rem;margin:3rem 0 2.5rem;transition:all .35s}#post-title:hover{color:#ea6153}#search-form{padding:.25rem 0}#search-field{width:12.5rem;height:1rem;padding:4% 5px 4% 18px;transition:border .3s ease-in;border-radius:1.68rem}#search-field:focus,#search-field:hover{border:1.5px solid #ed7669}#search-results{text-align:center}#search-results.active{margin-top:3rem;margin-bottom:9rem}#search-results>p{margin-bottom:3rem;font-size:1.2rem}.result{display:block;padding:1rem;margin-bottom:1.3rem;text-decoration:none;word-wrap:break-word;border:1px solid #ea6153;border-radius:5px}.result>h2,.result>h4{color:#666}.result:hover{transition:.5s}.result:hover>h2,.result:hover>h4{transition:.5s;color:#ea6153}.icon-search{position:absolute;top:31.5rem;left:16.5rem;color:#ccc;text-shadow:1px 1px 0 #ccc}.pace{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none;-webkit-pointer-events:none}.pace-inactive{display:none}.pace .pace-progress{position:fixed;top:0;right:100%;z-index:3;width:100%;height:2px;background:#ea6153}@media only screen and (min-width:1824px){main{padding:2.5rem 11rem}.content{margin:0 7rem}}@media (max-width:1024px){.pace,.post.reading-time,.post.related,span.post.tags{display:none}#search-container{display:none!important}#profile-resume{display:inherit}#menu-button{position:fixed;top:.5rem;left:13.5rem;z-index:2;display:block;transition:all .35s}#menu-button.expanded{left:.85rem}#menu-button>a>i{color:#ea6153}.cover{width:16rem;transition:width .35s cubic-bezier(.645,.045,.355,1),transform .35s cubic-bezier(.645,.045,.355,1),border-right .63s cubic-bezier(.645,.045,.355,1),box-shadow .63s cubic-bezier(.645,.045,.355,1);transition:width .35s cubic-bezier(.645,.045,.355,1),transform .35s cubic-bezier(.645,.045,.355,1),border-right .63s cubic-bezier(.645,.045,.355,1),box-shadow .63s cubic-bezier(.645,.045,.355,1),-webkit-transform .35s cubic-bezier(.645,.045,.355,1);-webkit-transform:translate3d(-16rem,0,0);transform:translate3d(-16rem,0,0);border-right:0;box-shadow:none}.cover.expanded{width:16rem;-webkit-transform:translateZ(0);transform:translateZ(0);border-right:1px solid #ccc;box-shadow:11px -10px 1px -9px #ddd}.cover.animated{transition:all .35s}.profile{width:100%;height:100%;max-width:100%}.profile.contact>nav{padding:0}.profile>a>img{width:8rem;margin-bottom:1rem}.profile>a>h1{margin:0}.profile .divider,.profile>p{display:none}.navigation.left{margin-top:1.2rem;margin-bottom:1rem}.navigation.left .links>li{margin:0}.navigation.left .links>li>a{padding:.85rem 1.25rem;font-size:1rem}#avatar-link{display:inline-block;margin-top:4rem}.navigation{width:100%}.navigation.right{margin:0}.navigation.left .links.item{width:100%}main{left:0;transition:all .35s;-webkit-transform:translateZ(0);transform:translateZ(0)}main.expanded{-webkit-transform:translate3d(14rem,0,0);transform:translate3d(14rem,0,0)}}@media (max-width:480px){.pagination>span,.post .meta>time,.post .tags{display:none}main{padding:1rem 0}.btn{display:block;margin-bottom:.4em}.mayday{width:auto}.mayday>h2{font-size:20px;line-height:25px}.astronaut{background-size:55%}.astro-wrap{margin:-5% auto}.astro-wrap,.astronaut{height:10rem}#panic-button{margin-bottom:1rem}.posts.newer,.posts.older{margin:1rem 0}#posts-list{margin:3rem 0;text-align:center}#posts-list>li{margin-bottom:2rem}#posts-list>li>time{display:block;float:none;letter-spacing:1px;padding:0}#post-title{margin:2.5rem 0}} diff --git a/etc/ghost/themes/casper/assets/fonts/foundation-icons/.fontcustom-data b/etc/ghost/themes/casper/assets/fonts/foundation-icons/.fontcustom-data new file mode 100755 index 0000000..8753d7b --- /dev/null +++ b/etc/ghost/themes/casper/assets/fonts/foundation-icons/.fontcustom-data @@ -0,0 +1,298 @@ +{ + "fonts": [ + "fontcustom_10588e4d0af9f9cd5471c9540658204b.ttf", + "fontcustom_10588e4d0af9f9cd5471c9540658204b.woff", + "fontcustom_10588e4d0af9f9cd5471c9540658204b.eot", + "fontcustom_10588e4d0af9f9cd5471c9540658204b.svg" + ], + "templates": [ + "fontcustom.css", + "fontcustom-preview.html" + ], + "file_name": "fontcustom_10588e4d0af9f9cd5471c9540658204b", + "glyphs": [ + "fi-address-book", + "fi-alert", + "fi-align-center", + "fi-align-justify", + "fi-align-left", + "fi-align-right", + "fi-anchor", + "fi-annotate", + "fi-archive", + "fi-arrow-down", + "fi-arrow-left", + "fi-arrow-right", + "fi-arrow-up", + "fi-arrows-compress", + "fi-arrows-expand", + "fi-arrows-in", + "fi-arrows-out", + "fi-asl", + "fi-asterisk", + "fi-at-sign", + "fi-background-color", + "fi-battery-empty", + "fi-battery-full", + "fi-battery-half", + "fi-bitcoin-circle", + "fi-bitcoin", + "fi-blind", + "fi-bluetooth", + "fi-bold", + "fi-book-bookmark", + "fi-book", + "fi-bookmark", + "fi-braille", + "fi-burst-new", + "fi-burst-sale", + "fi-burst", + "fi-calendar", + "fi-camera", + "fi-check", + "fi-checkbox", + "fi-clipboard-notes", + "fi-clipboard-pencil", + "fi-clipboard", + "fi-clock", + "fi-closed-caption", + "fi-cloud", + "fi-comment-minus", + "fi-comment-quotes", + "fi-comment-video", + "fi-comment", + "fi-comments", + "fi-compass", + "fi-contrast", + "fi-credit-card", + "fi-crop", + "fi-crown", + "fi-css3", + "fi-database", + "fi-die-five", + "fi-die-four", + "fi-die-one", + "fi-die-six", + "fi-die-three", + "fi-die-two", + "fi-dislike", + "fi-dollar-bill", + "fi-dollar", + "fi-download", + "fi-eject", + "fi-elevator", + "fi-euro", + "fi-eye", + "fi-fast-forward", + "fi-female-symbol", + "fi-female", + "fi-filter", + "fi-first-aid", + "fi-flag", + "fi-folder-add", + "fi-folder-lock", + "fi-folder", + "fi-foot", + "fi-foundation", + "fi-graph-bar", + "fi-graph-horizontal", + "fi-graph-pie", + "fi-graph-trend", + "fi-guide-dog", + "fi-hearing-aid", + "fi-heart", + "fi-home", + "fi-html5", + "fi-indent-less", + "fi-indent-more", + "fi-info", + "fi-italic", + "fi-key", + "fi-laptop", + "fi-layout", + "fi-lightbulb", + "fi-like", + "fi-link", + "fi-list-bullet", + "fi-list-number", + "fi-list-thumbnails", + "fi-list", + "fi-lock", + "fi-loop", + "fi-magnifying-glass", + "fi-mail", + "fi-male-female", + "fi-male-symbol", + "fi-male", + "fi-map", + "fi-marker", + "fi-megaphone", + "fi-microphone", + "fi-minus-circle", + "fi-minus", + "fi-mobile-signal", + "fi-mobile", + "fi-monitor", + "fi-mountains", + "fi-music", + "fi-next", + "fi-no-dogs", + "fi-no-smoking", + "fi-page-add", + "fi-page-copy", + "fi-page-csv", + "fi-page-delete", + "fi-page-doc", + "fi-page-edit", + "fi-page-export-csv", + "fi-page-export-doc", + "fi-page-export-pdf", + "fi-page-export", + "fi-page-filled", + "fi-page-multiple", + "fi-page-pdf", + "fi-page-remove", + "fi-page-search", + "fi-page", + "fi-paint-bucket", + "fi-paperclip", + "fi-pause", + "fi-paw", + "fi-paypal", + "fi-pencil", + "fi-photo", + "fi-play-circle", + "fi-play-video", + "fi-play", + "fi-plus", + "fi-pound", + "fi-power", + "fi-previous", + "fi-price-tag", + "fi-pricetag-multiple", + "fi-print", + "fi-prohibited", + "fi-projection-screen", + "fi-puzzle", + "fi-quote", + "fi-record", + "fi-refresh", + "fi-results-demographics", + "fi-results", + "fi-rewind-ten", + "fi-rewind", + "fi-rss", + "fi-safety-cone", + "fi-save", + "fi-share", + "fi-sheriff-badge", + "fi-shield", + "fi-shopping-bag", + "fi-shopping-cart", + "fi-shuffle", + "fi-skull", + "fi-social-500px", + "fi-social-adobe", + "fi-social-amazon", + "fi-social-android", + "fi-social-apple", + "fi-social-behance", + "fi-social-bing", + "fi-social-blogger", + "fi-social-delicious", + "fi-social-designer-news", + "fi-social-deviant-art", + "fi-social-digg", + "fi-social-dribbble", + "fi-social-drive", + "fi-social-dropbox", + "fi-social-evernote", + "fi-social-facebook", + "fi-social-flickr", + "fi-social-forrst", + "fi-social-foursquare", + "fi-social-game-center", + "fi-social-github", + "fi-social-google-plus", + "fi-social-hacker-news", + "fi-social-hi5", + "fi-social-instagram", + "fi-social-joomla", + "fi-social-lastfm", + "fi-social-linkedin", + "fi-social-medium", + "fi-social-myspace", + "fi-social-orkut", + "fi-social-path", + "fi-social-picasa", + "fi-social-pinterest", + "fi-social-rdio", + "fi-social-reddit", + "fi-social-skillshare", + "fi-social-skype", + "fi-social-smashing-mag", + "fi-social-snapchat", + "fi-social-spotify", + "fi-social-squidoo", + "fi-social-stack-overflow", + "fi-social-steam", + "fi-social-stumbleupon", + "fi-social-treehouse", + "fi-social-tumblr", + "fi-social-twitter", + "fi-social-vimeo", + "fi-social-windows", + "fi-social-xbox-20", + "fi-social-yahoo", + "fi-social-yelp", + "fi-social-youtube", + "fi-social-zerply", + "fi-social-zurb", + "fi-sound", + "fi-star", + "fi-stop", + "fi-strikethrough", + "fi-subscript", + "fi-superscript", + "fi-tablet-landscape", + "fi-tablet-portrait", + "fi-target-two", + "fi-target", + "fi-telephone-accessible", + "fi-telephone", + "fi-text-color", + "fi-thumbnails", + "fi-ticket", + "fi-torso-business", + "fi-torso-female", + "fi-torso", + "fi-torsos-all-female", + "fi-torsos-all", + "fi-torsos-female-male", + "fi-torsos-male-female", + "fi-torsos", + "fi-trash", + "fi-trees", + "fi-trophy", + "fi-underline", + "fi-universal-access", + "fi-unlink", + "fi-unlock", + "fi-upload-cloud", + "fi-upload", + "fi-usb", + "fi-video", + "fi-volume-none", + "fi-volume-strike", + "fi-volume", + "fi-web", + "fi-wheelchair", + "fi-widget", + "fi-wrench", + "fi-x-circle", + "fi-x", + "fi-yen", + "fi-zoom-in", + "fi-zoom-out" + ] +} \ No newline at end of file diff --git a/etc/ghost/themes/casper/assets/fonts/foundation-icons/foundation-icons.css b/etc/ghost/themes/casper/assets/fonts/foundation-icons/foundation-icons.css new file mode 100755 index 0000000..a015734 --- /dev/null +++ b/etc/ghost/themes/casper/assets/fonts/foundation-icons/foundation-icons.css @@ -0,0 +1,594 @@ +/* + * Foundation Icons v 3.0 + * Made by ZURB 2013 http://zurb.com/playground/foundation-icon-fonts-3 + * MIT License + */ + +@font-face { + font-family: "foundation-icons"; + src: url("foundation-icons.eot"); + src: url("foundation-icons.eot?#iefix") format("embedded-opentype"), + url("foundation-icons.woff") format("woff"), + url("foundation-icons.ttf") format("truetype"), + url("foundation-icons.svg#fontcustom") format("svg"); + font-weight: normal; + font-style: normal; +} + +.fi-address-book:before, +.fi-alert:before, +.fi-align-center:before, +.fi-align-justify:before, +.fi-align-left:before, +.fi-align-right:before, +.fi-anchor:before, +.fi-annotate:before, +.fi-archive:before, +.fi-arrow-down:before, +.fi-arrow-left:before, +.fi-arrow-right:before, +.fi-arrow-up:before, +.fi-arrows-compress:before, +.fi-arrows-expand:before, +.fi-arrows-in:before, +.fi-arrows-out:before, +.fi-asl:before, +.fi-asterisk:before, +.fi-at-sign:before, +.fi-background-color:before, +.fi-battery-empty:before, +.fi-battery-full:before, +.fi-battery-half:before, +.fi-bitcoin-circle:before, +.fi-bitcoin:before, +.fi-blind:before, +.fi-bluetooth:before, +.fi-bold:before, +.fi-book-bookmark:before, +.fi-book:before, +.fi-bookmark:before, +.fi-braille:before, +.fi-burst-new:before, +.fi-burst-sale:before, +.fi-burst:before, +.fi-calendar:before, +.fi-camera:before, +.fi-check:before, +.fi-checkbox:before, +.fi-clipboard-notes:before, +.fi-clipboard-pencil:before, +.fi-clipboard:before, +.fi-clock:before, +.fi-closed-caption:before, +.fi-cloud:before, +.fi-comment-minus:before, +.fi-comment-quotes:before, +.fi-comment-video:before, +.fi-comment:before, +.fi-comments:before, +.fi-compass:before, +.fi-contrast:before, +.fi-credit-card:before, +.fi-crop:before, +.fi-crown:before, +.fi-css3:before, +.fi-database:before, +.fi-die-five:before, +.fi-die-four:before, +.fi-die-one:before, +.fi-die-six:before, +.fi-die-three:before, +.fi-die-two:before, +.fi-dislike:before, +.fi-dollar-bill:before, +.fi-dollar:before, +.fi-download:before, +.fi-eject:before, +.fi-elevator:before, +.fi-euro:before, +.fi-eye:before, +.fi-fast-forward:before, +.fi-female-symbol:before, +.fi-female:before, +.fi-filter:before, +.fi-first-aid:before, +.fi-flag:before, +.fi-folder-add:before, +.fi-folder-lock:before, +.fi-folder:before, +.fi-foot:before, +.fi-foundation:before, +.fi-graph-bar:before, +.fi-graph-horizontal:before, +.fi-graph-pie:before, +.fi-graph-trend:before, +.fi-guide-dog:before, +.fi-hearing-aid:before, +.fi-heart:before, +.fi-home:before, +.fi-html5:before, +.fi-indent-less:before, +.fi-indent-more:before, +.fi-info:before, +.fi-italic:before, +.fi-key:before, +.fi-laptop:before, +.fi-layout:before, +.fi-lightbulb:before, +.fi-like:before, +.fi-link:before, +.fi-list-bullet:before, +.fi-list-number:before, +.fi-list-thumbnails:before, +.fi-list:before, +.fi-lock:before, +.fi-loop:before, +.fi-magnifying-glass:before, +.fi-mail:before, +.fi-male-female:before, +.fi-male-symbol:before, +.fi-male:before, +.fi-map:before, +.fi-marker:before, +.fi-megaphone:before, +.fi-microphone:before, +.fi-minus-circle:before, +.fi-minus:before, +.fi-mobile-signal:before, +.fi-mobile:before, +.fi-monitor:before, +.fi-mountains:before, +.fi-music:before, +.fi-next:before, +.fi-no-dogs:before, +.fi-no-smoking:before, +.fi-page-add:before, +.fi-page-copy:before, +.fi-page-csv:before, +.fi-page-delete:before, +.fi-page-doc:before, +.fi-page-edit:before, +.fi-page-export-csv:before, +.fi-page-export-doc:before, +.fi-page-export-pdf:before, +.fi-page-export:before, +.fi-page-filled:before, +.fi-page-multiple:before, +.fi-page-pdf:before, +.fi-page-remove:before, +.fi-page-search:before, +.fi-page:before, +.fi-paint-bucket:before, +.fi-paperclip:before, +.fi-pause:before, +.fi-paw:before, +.fi-paypal:before, +.fi-pencil:before, +.fi-photo:before, +.fi-play-circle:before, +.fi-play-video:before, +.fi-play:before, +.fi-plus:before, +.fi-pound:before, +.fi-power:before, +.fi-previous:before, +.fi-price-tag:before, +.fi-pricetag-multiple:before, +.fi-print:before, +.fi-prohibited:before, +.fi-projection-screen:before, +.fi-puzzle:before, +.fi-quote:before, +.fi-record:before, +.fi-refresh:before, +.fi-results-demographics:before, +.fi-results:before, +.fi-rewind-ten:before, +.fi-rewind:before, +.fi-rss:before, +.fi-safety-cone:before, +.fi-save:before, +.fi-share:before, +.fi-sheriff-badge:before, +.fi-shield:before, +.fi-shopping-bag:before, +.fi-shopping-cart:before, +.fi-shuffle:before, +.fi-skull:before, +.fi-social-500px:before, +.fi-social-adobe:before, +.fi-social-amazon:before, +.fi-social-android:before, +.fi-social-apple:before, +.fi-social-behance:before, +.fi-social-bing:before, +.fi-social-blogger:before, +.fi-social-delicious:before, +.fi-social-designer-news:before, +.fi-social-deviant-art:before, +.fi-social-digg:before, +.fi-social-dribbble:before, +.fi-social-drive:before, +.fi-social-dropbox:before, +.fi-social-evernote:before, +.fi-social-facebook:before, +.fi-social-flickr:before, +.fi-social-forrst:before, +.fi-social-foursquare:before, +.fi-social-game-center:before, +.fi-social-github:before, +.fi-social-google-plus:before, +.fi-social-hacker-news:before, +.fi-social-hi5:before, +.fi-social-instagram:before, +.fi-social-joomla:before, +.fi-social-lastfm:before, +.fi-social-linkedin:before, +.fi-social-medium:before, +.fi-social-myspace:before, +.fi-social-orkut:before, +.fi-social-path:before, +.fi-social-picasa:before, +.fi-social-pinterest:before, +.fi-social-rdio:before, +.fi-social-reddit:before, +.fi-social-skillshare:before, +.fi-social-skype:before, +.fi-social-smashing-mag:before, +.fi-social-snapchat:before, +.fi-social-spotify:before, +.fi-social-squidoo:before, +.fi-social-stack-overflow:before, +.fi-social-steam:before, +.fi-social-stumbleupon:before, +.fi-social-treehouse:before, +.fi-social-tumblr:before, +.fi-social-twitter:before, +.fi-social-vimeo:before, +.fi-social-windows:before, +.fi-social-xbox:before, +.fi-social-yahoo:before, +.fi-social-yelp:before, +.fi-social-youtube:before, +.fi-social-zerply:before, +.fi-social-zurb:before, +.fi-sound:before, +.fi-star:before, +.fi-stop:before, +.fi-strikethrough:before, +.fi-subscript:before, +.fi-superscript:before, +.fi-tablet-landscape:before, +.fi-tablet-portrait:before, +.fi-target-two:before, +.fi-target:before, +.fi-telephone-accessible:before, +.fi-telephone:before, +.fi-text-color:before, +.fi-thumbnails:before, +.fi-ticket:before, +.fi-torso-business:before, +.fi-torso-female:before, +.fi-torso:before, +.fi-torsos-all-female:before, +.fi-torsos-all:before, +.fi-torsos-female-male:before, +.fi-torsos-male-female:before, +.fi-torsos:before, +.fi-trash:before, +.fi-trees:before, +.fi-trophy:before, +.fi-underline:before, +.fi-universal-access:before, +.fi-unlink:before, +.fi-unlock:before, +.fi-upload-cloud:before, +.fi-upload:before, +.fi-usb:before, +.fi-video:before, +.fi-volume-none:before, +.fi-volume-strike:before, +.fi-volume:before, +.fi-web:before, +.fi-wheelchair:before, +.fi-widget:before, +.fi-wrench:before, +.fi-x-circle:before, +.fi-x:before, +.fi-yen:before, +.fi-zoom-in:before, +.fi-zoom-out:before { + font-family: "foundation-icons"; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + -webkit-font-smoothing: antialiased; + display: inline-block; + text-decoration: inherit; +} + +.fi-address-book:before { content: "\f100"; } +.fi-alert:before { content: "\f101"; } +.fi-align-center:before { content: "\f102"; } +.fi-align-justify:before { content: "\f103"; } +.fi-align-left:before { content: "\f104"; } +.fi-align-right:before { content: "\f105"; } +.fi-anchor:before { content: "\f106"; } +.fi-annotate:before { content: "\f107"; } +.fi-archive:before { content: "\f108"; } +.fi-arrow-down:before { content: "\f109"; } +.fi-arrow-left:before { content: "\f10a"; } +.fi-arrow-right:before { content: "\f10b"; } +.fi-arrow-up:before { content: "\f10c"; } +.fi-arrows-compress:before { content: "\f10d"; } +.fi-arrows-expand:before { content: "\f10e"; } +.fi-arrows-in:before { content: "\f10f"; } +.fi-arrows-out:before { content: "\f110"; } +.fi-asl:before { content: "\f111"; } +.fi-asterisk:before { content: "\f112"; } +.fi-at-sign:before { content: "\f113"; } +.fi-background-color:before { content: "\f114"; } +.fi-battery-empty:before { content: "\f115"; } +.fi-battery-full:before { content: "\f116"; } +.fi-battery-half:before { content: "\f117"; } +.fi-bitcoin-circle:before { content: "\f118"; } +.fi-bitcoin:before { content: "\f119"; } +.fi-blind:before { content: "\f11a"; } +.fi-bluetooth:before { content: "\f11b"; } +.fi-bold:before { content: "\f11c"; } +.fi-book-bookmark:before { content: "\f11d"; } +.fi-book:before { content: "\f11e"; } +.fi-bookmark:before { content: "\f11f"; } +.fi-braille:before { content: "\f120"; } +.fi-burst-new:before { content: "\f121"; } +.fi-burst-sale:before { content: "\f122"; } +.fi-burst:before { content: "\f123"; } +.fi-calendar:before { content: "\f124"; } +.fi-camera:before { content: "\f125"; } +.fi-check:before { content: "\f126"; } +.fi-checkbox:before { content: "\f127"; } +.fi-clipboard-notes:before { content: "\f128"; } +.fi-clipboard-pencil:before { content: "\f129"; } +.fi-clipboard:before { content: "\f12a"; } +.fi-clock:before { content: "\f12b"; } +.fi-closed-caption:before { content: "\f12c"; } +.fi-cloud:before { content: "\f12d"; } +.fi-comment-minus:before { content: "\f12e"; } +.fi-comment-quotes:before { content: "\f12f"; } +.fi-comment-video:before { content: "\f130"; } +.fi-comment:before { content: "\f131"; } +.fi-comments:before { content: "\f132"; } +.fi-compass:before { content: "\f133"; } +.fi-contrast:before { content: "\f134"; } +.fi-credit-card:before { content: "\f135"; } +.fi-crop:before { content: "\f136"; } +.fi-crown:before { content: "\f137"; } +.fi-css3:before { content: "\f138"; } +.fi-database:before { content: "\f139"; } +.fi-die-five:before { content: "\f13a"; } +.fi-die-four:before { content: "\f13b"; } +.fi-die-one:before { content: "\f13c"; } +.fi-die-six:before { content: "\f13d"; } +.fi-die-three:before { content: "\f13e"; } +.fi-die-two:before { content: "\f13f"; } +.fi-dislike:before { content: "\f140"; } +.fi-dollar-bill:before { content: "\f141"; } +.fi-dollar:before { content: "\f142"; } +.fi-download:before { content: "\f143"; } +.fi-eject:before { content: "\f144"; } +.fi-elevator:before { content: "\f145"; } +.fi-euro:before { content: "\f146"; } +.fi-eye:before { content: "\f147"; } +.fi-fast-forward:before { content: "\f148"; } +.fi-female-symbol:before { content: "\f149"; } +.fi-female:before { content: "\f14a"; } +.fi-filter:before { content: "\f14b"; } +.fi-first-aid:before { content: "\f14c"; } +.fi-flag:before { content: "\f14d"; } +.fi-folder-add:before { content: "\f14e"; } +.fi-folder-lock:before { content: "\f14f"; } +.fi-folder:before { content: "\f150"; } +.fi-foot:before { content: "\f151"; } +.fi-foundation:before { content: "\f152"; } +.fi-graph-bar:before { content: "\f153"; } +.fi-graph-horizontal:before { content: "\f154"; } +.fi-graph-pie:before { content: "\f155"; } +.fi-graph-trend:before { content: "\f156"; } +.fi-guide-dog:before { content: "\f157"; } +.fi-hearing-aid:before { content: "\f158"; } +.fi-heart:before { content: "\f159"; } +.fi-home:before { content: "\f15a"; } +.fi-html5:before { content: "\f15b"; } +.fi-indent-less:before { content: "\f15c"; } +.fi-indent-more:before { content: "\f15d"; } +.fi-info:before { content: "\f15e"; } +.fi-italic:before { content: "\f15f"; } +.fi-key:before { content: "\f160"; } +.fi-laptop:before { content: "\f161"; } +.fi-layout:before { content: "\f162"; } +.fi-lightbulb:before { content: "\f163"; } +.fi-like:before { content: "\f164"; } +.fi-link:before { content: "\f165"; } +.fi-list-bullet:before { content: "\f166"; } +.fi-list-number:before { content: "\f167"; } +.fi-list-thumbnails:before { content: "\f168"; } +.fi-list:before { content: "\f169"; } +.fi-lock:before { content: "\f16a"; } +.fi-loop:before { content: "\f16b"; } +.fi-magnifying-glass:before { content: "\f16c"; } +.fi-mail:before { content: "\f16d"; } +.fi-male-female:before { content: "\f16e"; } +.fi-male-symbol:before { content: "\f16f"; } +.fi-male:before { content: "\f170"; } +.fi-map:before { content: "\f171"; } +.fi-marker:before { content: "\f172"; } +.fi-megaphone:before { content: "\f173"; } +.fi-microphone:before { content: "\f174"; } +.fi-minus-circle:before { content: "\f175"; } +.fi-minus:before { content: "\f176"; } +.fi-mobile-signal:before { content: "\f177"; } +.fi-mobile:before { content: "\f178"; } +.fi-monitor:before { content: "\f179"; } +.fi-mountains:before { content: "\f17a"; } +.fi-music:before { content: "\f17b"; } +.fi-next:before { content: "\f17c"; } +.fi-no-dogs:before { content: "\f17d"; } +.fi-no-smoking:before { content: "\f17e"; } +.fi-page-add:before { content: "\f17f"; } +.fi-page-copy:before { content: "\f180"; } +.fi-page-csv:before { content: "\f181"; } +.fi-page-delete:before { content: "\f182"; } +.fi-page-doc:before { content: "\f183"; } +.fi-page-edit:before { content: "\f184"; } +.fi-page-export-csv:before { content: "\f185"; } +.fi-page-export-doc:before { content: "\f186"; } +.fi-page-export-pdf:before { content: "\f187"; } +.fi-page-export:before { content: "\f188"; } +.fi-page-filled:before { content: "\f189"; } +.fi-page-multiple:before { content: "\f18a"; } +.fi-page-pdf:before { content: "\f18b"; } +.fi-page-remove:before { content: "\f18c"; } +.fi-page-search:before { content: "\f18d"; } +.fi-page:before { content: "\f18e"; } +.fi-paint-bucket:before { content: "\f18f"; } +.fi-paperclip:before { content: "\f190"; } +.fi-pause:before { content: "\f191"; } +.fi-paw:before { content: "\f192"; } +.fi-paypal:before { content: "\f193"; } +.fi-pencil:before { content: "\f194"; } +.fi-photo:before { content: "\f195"; } +.fi-play-circle:before { content: "\f196"; } +.fi-play-video:before { content: "\f197"; } +.fi-play:before { content: "\f198"; } +.fi-plus:before { content: "\f199"; } +.fi-pound:before { content: "\f19a"; } +.fi-power:before { content: "\f19b"; } +.fi-previous:before { content: "\f19c"; } +.fi-price-tag:before { content: "\f19d"; } +.fi-pricetag-multiple:before { content: "\f19e"; } +.fi-print:before { content: "\f19f"; } +.fi-prohibited:before { content: "\f1a0"; } +.fi-projection-screen:before { content: "\f1a1"; } +.fi-puzzle:before { content: "\f1a2"; } +.fi-quote:before { content: "\f1a3"; } +.fi-record:before { content: "\f1a4"; } +.fi-refresh:before { content: "\f1a5"; } +.fi-results-demographics:before { content: "\f1a6"; } +.fi-results:before { content: "\f1a7"; } +.fi-rewind-ten:before { content: "\f1a8"; } +.fi-rewind:before { content: "\f1a9"; } +.fi-rss:before { content: "\f1aa"; } +.fi-safety-cone:before { content: "\f1ab"; } +.fi-save:before { content: "\f1ac"; } +.fi-share:before { content: "\f1ad"; } +.fi-sheriff-badge:before { content: "\f1ae"; } +.fi-shield:before { content: "\f1af"; } +.fi-shopping-bag:before { content: "\f1b0"; } +.fi-shopping-cart:before { content: "\f1b1"; } +.fi-shuffle:before { content: "\f1b2"; } +.fi-skull:before { content: "\f1b3"; } +.fi-social-500px:before { content: "\f1b4"; } +.fi-social-adobe:before { content: "\f1b5"; } +.fi-social-amazon:before { content: "\f1b6"; } +.fi-social-android:before { content: "\f1b7"; } +.fi-social-apple:before { content: "\f1b8"; } +.fi-social-behance:before { content: "\f1b9"; } +.fi-social-bing:before { content: "\f1ba"; } +.fi-social-blogger:before { content: "\f1bb"; } +.fi-social-delicious:before { content: "\f1bc"; } +.fi-social-designer-news:before { content: "\f1bd"; } +.fi-social-deviant-art:before { content: "\f1be"; } +.fi-social-digg:before { content: "\f1bf"; } +.fi-social-dribbble:before { content: "\f1c0"; } +.fi-social-drive:before { content: "\f1c1"; } +.fi-social-dropbox:before { content: "\f1c2"; } +.fi-social-evernote:before { content: "\f1c3"; } +.fi-social-facebook:before { content: "\f1c4"; } +.fi-social-flickr:before { content: "\f1c5"; } +.fi-social-forrst:before { content: "\f1c6"; } +.fi-social-foursquare:before { content: "\f1c7"; } +.fi-social-game-center:before { content: "\f1c8"; } +.fi-social-github:before { content: "\f1c9"; } +.fi-social-google-plus:before { content: "\f1ca"; } +.fi-social-hacker-news:before { content: "\f1cb"; } +.fi-social-hi5:before { content: "\f1cc"; } +.fi-social-instagram:before { content: "\f1cd"; } +.fi-social-joomla:before { content: "\f1ce"; } +.fi-social-lastfm:before { content: "\f1cf"; } +.fi-social-linkedin:before { content: "\f1d0"; } +.fi-social-medium:before { content: "\f1d1"; } +.fi-social-myspace:before { content: "\f1d2"; } +.fi-social-orkut:before { content: "\f1d3"; } +.fi-social-path:before { content: "\f1d4"; } +.fi-social-picasa:before { content: "\f1d5"; } +.fi-social-pinterest:before { content: "\f1d6"; } +.fi-social-rdio:before { content: "\f1d7"; } +.fi-social-reddit:before { content: "\f1d8"; } +.fi-social-skillshare:before { content: "\f1d9"; } +.fi-social-skype:before { content: "\f1da"; } +.fi-social-smashing-mag:before { content: "\f1db"; } +.fi-social-snapchat:before { content: "\f1dc"; } +.fi-social-spotify:before { content: "\f1dd"; } +.fi-social-squidoo:before { content: "\f1de"; } +.fi-social-stack-overflow:before { content: "\f1df"; } +.fi-social-steam:before { content: "\f1e0"; } +.fi-social-stumbleupon:before { content: "\f1e1"; } +.fi-social-treehouse:before { content: "\f1e2"; } +.fi-social-tumblr:before { content: "\f1e3"; } +.fi-social-twitter:before { content: "\f1e4"; } +.fi-social-vimeo:before { content: "\f1e5"; } +.fi-social-windows:before { content: "\f1e6"; } +.fi-social-xbox:before { content: "\f1e7"; } +.fi-social-yahoo:before { content: "\f1e8"; } +.fi-social-yelp:before { content: "\f1e9"; } +.fi-social-youtube:before { content: "\f1ea"; } +.fi-social-zerply:before { content: "\f1eb"; } +.fi-social-zurb:before { content: "\f1ec"; } +.fi-sound:before { content: "\f1ed"; } +.fi-star:before { content: "\f1ee"; } +.fi-stop:before { content: "\f1ef"; } +.fi-strikethrough:before { content: "\f1f0"; } +.fi-subscript:before { content: "\f1f1"; } +.fi-superscript:before { content: "\f1f2"; } +.fi-tablet-landscape:before { content: "\f1f3"; } +.fi-tablet-portrait:before { content: "\f1f4"; } +.fi-target-two:before { content: "\f1f5"; } +.fi-target:before { content: "\f1f6"; } +.fi-telephone-accessible:before { content: "\f1f7"; } +.fi-telephone:before { content: "\f1f8"; } +.fi-text-color:before { content: "\f1f9"; } +.fi-thumbnails:before { content: "\f1fa"; } +.fi-ticket:before { content: "\f1fb"; } +.fi-torso-business:before { content: "\f1fc"; } +.fi-torso-female:before { content: "\f1fd"; } +.fi-torso:before { content: "\f1fe"; } +.fi-torsos-all-female:before { content: "\f1ff"; } +.fi-torsos-all:before { content: "\f200"; } +.fi-torsos-female-male:before { content: "\f201"; } +.fi-torsos-male-female:before { content: "\f202"; } +.fi-torsos:before { content: "\f203"; } +.fi-trash:before { content: "\f204"; } +.fi-trees:before { content: "\f205"; } +.fi-trophy:before { content: "\f206"; } +.fi-underline:before { content: "\f207"; } +.fi-universal-access:before { content: "\f208"; } +.fi-unlink:before { content: "\f209"; } +.fi-unlock:before { content: "\f20a"; } +.fi-upload-cloud:before { content: "\f20b"; } +.fi-upload:before { content: "\f20c"; } +.fi-usb:before { content: "\f20d"; } +.fi-video:before { content: "\f20e"; } +.fi-volume-none:before { content: "\f20f"; } +.fi-volume-strike:before { content: "\f210"; } +.fi-volume:before { content: "\f211"; } +.fi-web:before { content: "\f212"; } +.fi-wheelchair:before { content: "\f213"; } +.fi-widget:before { content: "\f214"; } +.fi-wrench:before { content: "\f215"; } +.fi-x-circle:before { content: "\f216"; } +.fi-x:before { content: "\f217"; } +.fi-yen:before { content: "\f218"; } +.fi-zoom-in:before { content: "\f219"; } +.fi-zoom-out:before { content: "\f21a"; } diff --git a/etc/ghost/themes/casper/assets/fonts/foundation-icons/foundation-icons.eot b/etc/ghost/themes/casper/assets/fonts/foundation-icons/foundation-icons.eot new file mode 100755 index 0000000..1746ad4 Binary files /dev/null and b/etc/ghost/themes/casper/assets/fonts/foundation-icons/foundation-icons.eot differ diff --git a/etc/ghost/themes/casper/assets/fonts/foundation-icons/foundation-icons.svg b/etc/ghost/themes/casper/assets/fonts/foundation-icons/foundation-icons.svg new file mode 100755 index 0000000..64bed3f --- /dev/null +++ b/etc/ghost/themes/casper/assets/fonts/foundation-icons/foundation-icons.svg @@ -0,0 +1,970 @@ + + + + + +Created by FontForge 20120731 at Fri Aug 23 09:25:55 2013 + By Jordan Humphreys +Created by Jordan Humphreys with FontForge 2.0 (http://fontforge.sf.net) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/etc/ghost/themes/casper/assets/fonts/foundation-icons/foundation-icons.ttf b/etc/ghost/themes/casper/assets/fonts/foundation-icons/foundation-icons.ttf new file mode 100755 index 0000000..6cce217 Binary files /dev/null and b/etc/ghost/themes/casper/assets/fonts/foundation-icons/foundation-icons.ttf differ diff --git a/etc/ghost/themes/casper/assets/fonts/foundation-icons/foundation-icons.woff b/etc/ghost/themes/casper/assets/fonts/foundation-icons/foundation-icons.woff new file mode 100755 index 0000000..e2cfe25 Binary files /dev/null and b/etc/ghost/themes/casper/assets/fonts/foundation-icons/foundation-icons.woff differ diff --git a/etc/ghost/themes/casper/assets/img/browserconfig.xml b/etc/ghost/themes/casper/assets/img/browserconfig.xml new file mode 100644 index 0000000..b3930d0 --- /dev/null +++ b/etc/ghost/themes/casper/assets/img/browserconfig.xml @@ -0,0 +1,9 @@ + + + + + + #da532c + + + diff --git a/etc/ghost/themes/casper/assets/img/favicon.ico b/etc/ghost/themes/casper/assets/img/favicon.ico new file mode 100644 index 0000000..8e79abe Binary files /dev/null and b/etc/ghost/themes/casper/assets/img/favicon.ico differ diff --git a/etc/ghost/themes/casper/assets/img/manifest.json b/etc/ghost/themes/casper/assets/img/manifest.json new file mode 100644 index 0000000..0b6b57c --- /dev/null +++ b/etc/ghost/themes/casper/assets/img/manifest.json @@ -0,0 +1,41 @@ +{ + "name": "Kiko Beats Blog", + "icons": [ + { + "src": "\/assets\/img\/android-chrome-36x36.png?v=wAAv6Wqe6l", + "sizes": "36x36", + "type": "image\/png", + "density": "0.75" + }, + { + "src": "\/assets\/img\/android-chrome-48x48.png?v=wAAv6Wqe6l", + "sizes": "48x48", + "type": "image\/png", + "density": "1.0" + }, + { + "src": "\/assets\/img\/android-chrome-72x72.png?v=wAAv6Wqe6l", + "sizes": "72x72", + "type": "image\/png", + "density": "1.5" + }, + { + "src": "\/assets\/img\/android-chrome-96x96.png?v=wAAv6Wqe6l", + "sizes": "96x96", + "type": "image\/png", + "density": "2.0" + }, + { + "src": "\/assets\/img\/android-chrome-144x144.png?v=wAAv6Wqe6l", + "sizes": "144x144", + "type": "image\/png", + "density": "3.0" + }, + { + "src": "\/assets\/img\/android-chrome-192x192.png?v=wAAv6Wqe6l", + "sizes": "192x192", + "type": "image\/png", + "density": "4.0" + } + ] +} diff --git a/etc/ghost/themes/casper/assets/img/pikachu.jpg b/etc/ghost/themes/casper/assets/img/pikachu.jpg new file mode 100755 index 0000000..eac103c Binary files /dev/null and b/etc/ghost/themes/casper/assets/img/pikachu.jpg differ diff --git a/etc/ghost/themes/casper/assets/img/site.webmanifest b/etc/ghost/themes/casper/assets/img/site.webmanifest new file mode 100644 index 0000000..0e0e858 --- /dev/null +++ b/etc/ghost/themes/casper/assets/img/site.webmanifest @@ -0,0 +1,14 @@ +{ + "name": "", + "short_name": "", + "icons": [ + { + "src": "/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff", + "display": "standalone" +} diff --git a/etc/ghost/themes/casper/assets/js/src/__init.coffee b/etc/ghost/themes/casper/assets/js/src/__init.coffee new file mode 100755 index 0000000..1bb2c75 --- /dev/null +++ b/etc/ghost/themes/casper/assets/js/src/__init.coffee @@ -0,0 +1,64 @@ +'use strict' + +do -> + app = document.body + + window.Uno = Uno = + version: '2.9.0' + + is: (k, v) -> + return app.dataset[k] is v unless Array.isArray v + v.some (v) -> app.dataset[k] is v + + attr: (k, v) -> if v? then app.dataset[k] = v else app.dataset[k] + + context: -> + # get the context from the first class name of body + # https://github.com/TryGhost/Ghost/wiki/Context-aware-Filters-and-Helpers + className = document.body.className.split(' ')[0].split('-')[0] + if className is '' then 'error' else className + + linkify: (selector) -> + $(selector).each -> + el = $(this) + text = el.text() + id = el.attr 'id' + + el.html('') + el.addClass('deep-link') + el.append("#{text}") + + search: + form: do -> + context = $('#search-container') + (action) -> context[action]() + + timeAgo: (selector) -> + $(selector).each -> + postDate = $(this).html() + postDateInDays = Math.floor((Date.now() - new Date(postDate)) / 86400000) + + if postDateInDays is 0 then postDateInDays = 'today' + else if postDateInDays is 1 then postDateInDays = 'yesterday' + else postDateInDays = "#{postDateInDays} days ago" + + $(this).html(postDateInDays) + $(this).mouseover -> $(this).html postDate + $(this).mouseout -> $(this).html postDateInDays + + device: -> + w = window.innerWidth + h = window.innerHeight + return 'mobile' if (w <= 480) + return 'tablet' if (w <= 1024) + 'desktop' + + + Uno.attr 'page', Uno.context() + Uno.attr 'device', Uno.device() + + # window global properties + $('#profile-title').text window.profile_title if window.profile_title + $('#profile-resume').text window.profile_resume if window.profile_resume + $('#posts-headline').text window.posts_headline if window.posts_headline + window.open_button = window.open_button or '.nav-posts > a' diff --git a/etc/ghost/themes/casper/assets/js/src/cover.coffee b/etc/ghost/themes/casper/assets/js/src/cover.coffee new file mode 100755 index 0000000..bcbe535 --- /dev/null +++ b/etc/ghost/themes/casper/assets/js/src/cover.coffee @@ -0,0 +1,26 @@ +'use strict' + +$ -> + + _animate = -> + setTimeout(-> + $('.cover').addClass 'animated' + , 1000) + + _expand = (options)-> + $('main, .cover, .links > li, html').toggleClass 'expanded' + Uno.search.form options.form + + $('#menu-button').click -> + $('.cover, main, #menu-button, html').toggleClass 'expanded' + + $("#{window.open_button}, #avatar-link").click (event) -> + if Uno.is 'page', 'home' + event.preventDefault() + location.hash = if location.hash is '' then '#open' else '' + return $('#menu-button').trigger 'click' unless Uno.is 'device', 'desktop' + _expand form: 'toggle' + + if (Uno.is 'device', 'desktop') and (Uno.is 'page', 'home') + _animate() + _expand form: 'hide' unless location.hash is '#open' diff --git a/etc/ghost/themes/casper/assets/js/src/main.coffee b/etc/ghost/themes/casper/assets/js/src/main.coffee new file mode 100644 index 0000000..5ed4252 --- /dev/null +++ b/etc/ghost/themes/casper/assets/js/src/main.coffee @@ -0,0 +1,31 @@ +'use strict' + +$ -> + + InstantClick.init() + + if Uno.is 'device', 'desktop' + $('a').not('[href*="mailto:"]').click -> + if this.href.indexOf(location.hostname) is -1 + window.open $(this).attr 'href' + false + else + FastClick.attach Uno.app + + if Uno.is('page', 'home') or Uno.is('page', 'paged') or Uno.is('page', 'tag') + Uno.timeAgo '#posts-list time' + + if Uno.is 'page', 'post' + Uno.timeAgo '.post.meta > time' + $('main').readingTime readingTimeTarget: '.post.reading-time > span' + Uno.linkify $('#post-content').children('h1, h2, h3, h4, h5, h6') + $('.content').fitVids() + + if Uno.is 'page', 'error' + $('#panic-button').click -> + s = document.createElement 'script' + s.setAttribute 'src','https://nthitz.github.io/turndownforwhatjs/tdfw.js' + document.body.appendChild s + + $('#search-input').keyup (e) -> + $('#search-form').attr('action', Uno.search.url + '+' + encodeURIComponent(e.target.value)) diff --git a/etc/ghost/themes/casper/assets/js/src/prism.js b/etc/ghost/themes/casper/assets/js/src/prism.js new file mode 100644 index 0000000..6f3bcb3 --- /dev/null +++ b/etc/ghost/themes/casper/assets/js/src/prism.js @@ -0,0 +1,14 @@ +/* http://prismjs.com/download.html?themes=prism-okaidia&languages=markup+css+clike+javascript+bash+c+coffeescript+css-extras+git+markdown+scss+sql */ +var _self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},Prism=function(){var e=/\blang(?:uage)?-(\w+)\b/i,t=_self.Prism={util:{encode:function(e){return e instanceof n?new n(e.type,t.util.encode(e.content),e.alias):"Array"===t.util.type(e)?e.map(t.util.encode):e.replace(/&/g,"&").replace(/e.length)break e;if(!(d instanceof a)){u.lastIndex=0;var m=u.exec(d);if(m){c&&(f=m[1].length);var y=m.index-1+f,m=m[0].slice(f),v=m.length,k=y+v,b=d.slice(0,y+1),w=d.slice(k+1),P=[p,1];b&&P.push(b);var A=new a(i,g?t.tokenize(m,g):m,h);P.push(A),w&&P.push(w),Array.prototype.splice.apply(r,P)}}}}}return r},hooks:{all:{},add:function(e,n){var a=t.hooks.all;a[e]=a[e]||[],a[e].push(n)},run:function(e,n){var a=t.hooks.all[e];if(a&&a.length)for(var r,l=0;r=a[l++];)r(n)}}},n=t.Token=function(e,t,n){this.type=e,this.content=t,this.alias=n};if(n.stringify=function(e,a,r){if("string"==typeof e)return e;if("Array"===t.util.type(e))return e.map(function(t){return n.stringify(t,a,e)}).join("");var l={type:e.type,content:n.stringify(e.content,a,r),tag:"span",classes:["token",e.type],attributes:{},language:a,parent:r};if("comment"==l.type&&(l.attributes.spellcheck="true"),e.alias){var i="Array"===t.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(l.classes,i)}t.hooks.run("wrap",l);var o="";for(var s in l.attributes)o+=(o?" ":"")+s+'="'+(l.attributes[s]||"")+'"';return"<"+l.tag+' class="'+l.classes.join(" ")+'" '+o+">"+l.content+""},!_self.document)return _self.addEventListener?(_self.addEventListener("message",function(e){var n=JSON.parse(e.data),a=n.language,r=n.code,l=n.immediateClose;_self.postMessage(t.highlight(r,t.languages[a],a)),l&&_self.close()},!1),_self.Prism):_self.Prism;var a=document.getElementsByTagName("script");return a=a[a.length-1],a&&(t.filename=a.src,document.addEventListener&&!a.hasAttribute("data-manual")&&document.addEventListener("DOMContentLoaded",t.highlightAll)),_self.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=Prism),"undefined"!=typeof global&&(global.Prism=Prism); +Prism.languages.markup={comment://,prolog:/<\?[\w\W]+?\?>/,doctype://,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=.$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\\1|\\?(?!\1)[\w\W])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:('|")[\w\W]*?(\1)|[^\s>]+)/i,inside:{punctuation:/[=>"']/}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},Prism.hooks.add("wrap",function(a){"entity"===a.type&&(a.attributes.title=a.content.replace(/&/,"&"))}),Prism.languages.xml=Prism.languages.markup,Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup; +Prism.languages.css={comment:/\/\*[\w\W]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^\{\}\s][^\{\};]*?(?=\s*\{)/,string:/("|')(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1/,property:/(\b|\B)[\w-]+(?=\s*:)/i,important:/\B!important\b/i,"function":/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},Prism.languages.css.atrule.inside.rest=Prism.util.clone(Prism.languages.css),Prism.languages.markup&&(Prism.languages.insertBefore("markup","tag",{style:{pattern:/()[\w\W]*?(?=<\/style>)/i,lookbehind:!0,inside:Prism.languages.css,alias:"language-css"}}),Prism.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|').*?\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:Prism.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:Prism.languages.css}},alias:"language-css"}},Prism.languages.markup.tag)); +Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\w\W]*?\*\//,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0}],string:/(["'])(\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,"class-name":{pattern:/((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[a-z0-9_\.\\]+/i,lookbehind:!0,inside:{punctuation:/(\.|\\)/}},keyword:/\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,"boolean":/\b(true|false)\b/,"function":/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/}; +Prism.languages.javascript=Prism.languages.extend("clike",{keyword:/\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\b/,number:/\b-?(0x[\dA-Fa-f]+|0b[01]+|0o[0-7]+|\d*\.?\d+([Ee][+-]?\d+)?|NaN|Infinity)\b/,"function":/[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*(?=\()/i}),Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^\/])\/(?!\/)(\[.+?]|\\.|[^\/\\\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0}}),Prism.languages.insertBefore("javascript","class-name",{"template-string":{pattern:/`(?:\\`|\\?[^`])*`/,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}}}),Prism.languages.markup&&Prism.languages.insertBefore("markup","tag",{script:{pattern:/()[\w\W]*?(?=<\/script>)/i,lookbehind:!0,inside:Prism.languages.javascript,alias:"language-javascript"}}),Prism.languages.js=Prism.languages.javascript; +!function(e){var t={variable:[{pattern:/\$?\(\([\w\W]+?\)\)/,inside:{variable:[{pattern:/(^\$\(\([\w\W]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b-?(?:0x[\dA-Fa-f]+|\d*\.?\d+(?:[Ee]-?\d+)?)\b/,operator:/--?|-=|\+\+?|\+=|!=?|~|\*\*?|\*=|\/=?|%=?|<<=?|>>=?|<=?|>=?|==?|&&?|&=|\^=?|\|\|?|\|=|\?|:/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\([^)]+\)|`[^`]+`/,inside:{variable:/^\$\(|^`|\)$|`$/}},/\$(?:[a-z0-9_#\?\*!@]+|\{[^}]+\})/i]};e.languages.bash={shebang:{pattern:/^#!\s*\/bin\/bash|^#!\s*\/bin\/sh/,alias:"important"},comment:{pattern:/(^|[^"{\\])#.*/,lookbehind:!0},string:[{pattern:/((?:^|[^<])<<\s*)(?:"|')?(\w+?)(?:"|')?\s*\r?\n(?:[\s\S])*?\r?\n\2/g,lookbehind:!0,inside:t},{pattern:/("|')(?:\\?[\s\S])*?\1/g,inside:t}],variable:t.variable,"function":{pattern:/(^|\s|;|\||&)(?:alias|apropos|apt-get|aptitude|aspell|awk|basename|bash|bc|bg|builtin|bzip2|cal|cat|cd|cfdisk|chgrp|chmod|chown|chroot|chkconfig|cksum|clear|cmp|comm|command|cp|cron|crontab|csplit|cut|date|dc|dd|ddrescue|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|du|egrep|eject|enable|env|ethtool|eval|exec|expand|expect|export|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|getopts|git|grep|groupadd|groupdel|groupmod|groups|gzip|hash|head|help|hg|history|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|jobs|join|kill|killall|less|link|ln|locate|logname|logout|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|make|man|mkdir|mkfifo|mkisofs|mknod|more|most|mount|mtools|mtr|mv|mmv|nano|netstat|nice|nl|nohup|notify-send|nslookup|open|op|passwd|paste|pathchk|ping|pkill|popd|pr|printcap|printenv|printf|ps|pushd|pv|pwd|quota|quotacheck|quotactl|ram|rar|rcp|read|readarray|readonly|reboot|rename|renice|remsync|rev|rm|rmdir|rsync|screen|scp|sdiff|sed|seq|service|sftp|shift|shopt|shutdown|sleep|slocate|sort|source|split|ssh|stat|strace|su|sudo|sum|suspend|sync|tail|tar|tee|test|time|timeout|times|touch|top|traceroute|trap|tr|tsort|tty|type|ulimit|umask|umount|unalias|uname|unexpand|uniq|units|unrar|unshar|uptime|useradd|userdel|usermod|users|uuencode|uudecode|v|vdir|vi|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yes|zip)(?=$|\s|;|\||&)/,lookbehind:!0},keyword:{pattern:/(^|\s|;|\||&)(?:let|:|\.|if|then|else|elif|fi|for|break|continue|while|in|case|function|select|do|done|until|echo|exit|return|set|declare)(?=$|\s|;|\||&)/,lookbehind:!0},"boolean":{pattern:/(^|\s|;|\||&)(?:true|false)(?=$|\s|;|\||&)/,lookbehind:!0},operator:/&&?|\|\|?|==?|!=?|<<>|<=?|>=?|=~/,punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];]/};var a=t.variable[1].inside;a["function"]=e.languages.bash["function"],a.keyword=e.languages.bash.keyword,a.boolean=e.languages.bash.boolean,a.operator=e.languages.bash.operator,a.punctuation=e.languages.bash.punctuation}(Prism); +Prism.languages.c=Prism.languages.extend("clike",{keyword:/\b(asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while)\b/,operator:/\-[>-]?|\+\+?|!=?|<>?=?|==?|&&?|\|?\||[~^%?*\/]/,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)[ful]*\b/i}),Prism.languages.insertBefore("c","string",{macro:{pattern:/(^\s*)#\s*[a-z]+([^\r\n\\]|\\.|\\(?:\r\n?|\n))*/im,lookbehind:!0,alias:"property",inside:{string:{pattern:/(#\s*include\s*)(<.+?>|("|')(\\?.)+?\3)/,lookbehind:!0},directive:{pattern:/(#\s*)\b(define|elif|else|endif|error|ifdef|ifndef|if|import|include|line|pragma|undef|using)\b/,lookbehind:!0,alias:"keyword"}}},constant:/\b(__FILE__|__LINE__|__DATE__|__TIME__|__TIMESTAMP__|__func__|EOF|NULL|stdin|stdout|stderr)\b/}),delete Prism.languages.c["class-name"],delete Prism.languages.c["boolean"]; +!function(e){var n=/#(?!\{).+/,t={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:n,string:[/'(?:\\?[^\\])*?'/,{pattern:/"(?:\\?[^\\])*?"/,inside:{interpolation:t}}],keyword:/\b(and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:n,interpolation:t}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\?[\s\S])*?`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},rest:e.languages.javascript}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,alias:"string"},{pattern:/"""[\s\S]*?"""/,alias:"string",inside:{interpolation:t}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/})}(Prism); +Prism.languages.css.selector={pattern:/[^\{\}\s][^\{\}]*(?=\s*\{)/,inside:{"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+(?:\(.*\))?/,"class":/\.[-:\.\w]+/,id:/#[-:\.\w]+/}},Prism.languages.insertBefore("css","function",{hexcode:/#[\da-f]{3,6}/i,entity:/\\[\da-f]{1,8}/i,number:/[\d%\.]+/}); +Prism.languages.git={comment:/^#.*/m,deleted:/^[-–].*/m,inserted:/^\+.*/m,string:/("|')(\\?.)*?\1/m,command:{pattern:/^.*\$ git .*$/m,inside:{parameter:/\s(--|-)\w+/m}},coord:/^@@.*@@$/m,commit_sha1:/^commit \w{40}$/m}; +Prism.languages.markdown=Prism.languages.extend("markup",{}),Prism.languages.insertBefore("markdown","prolog",{blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},code:[{pattern:/^(?: {4}|\t).+/m,alias:"keyword"},{pattern:/``.+?``|`[^`\n]+`/,alias:"keyword"}],title:[{pattern:/\w+.*(?:\r?\n|\r)(?:==+|--+)/,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#+.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])([\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:/(^|[^\\])(\*\*|__)(?:(?:\r?\n|\r)(?!\r?\n|\r)|.)+?\2/,lookbehind:!0,inside:{punctuation:/^\*\*|^__|\*\*$|__$/}},italic:{pattern:/(^|[^\\])([*_])(?:(?:\r?\n|\r)(?!\r?\n|\r)|.)+?\2/,lookbehind:!0,inside:{punctuation:/^[*_]|[*_]$/}},url:{pattern:/!?\[[^\]]+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)| ?\[[^\]\n]*\])/,inside:{variable:{pattern:/(!?\[)[^\]]+(?=\]$)/,lookbehind:!0},string:{pattern:/"(?:\\.|[^"\\])*"(?=\)$)/}}}}),Prism.languages.markdown.bold.inside.url=Prism.util.clone(Prism.languages.markdown.url),Prism.languages.markdown.italic.inside.url=Prism.util.clone(Prism.languages.markdown.url),Prism.languages.markdown.bold.inside.italic=Prism.util.clone(Prism.languages.markdown.italic),Prism.languages.markdown.italic.inside.bold=Prism.util.clone(Prism.languages.markdown.bold); +Prism.languages.scss=Prism.languages.extend("css",{comment:{pattern:/(^|[^\\])(?:\/\*[\w\W]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-]+(?:\([^()]+\)|[^(])*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)*url(?=\()/i,selector:{pattern:/(?=\S)[^@;\{\}\(\)]?([^@;\{\}\(\)]|&|#\{\$[-_\w]+\})+(?=\s*\{(\}|\s|[^\}]+(:|\{)[^\}]+))/m,inside:{placeholder:/%[-_\w]+/}}}),Prism.languages.insertBefore("scss","atrule",{keyword:[/@(?:if|else(?: if)?|for|each|while|import|extend|debug|warn|mixin|include|function|return|content)/i,{pattern:/( +)(?:from|through)(?= )/,lookbehind:!0}]}),Prism.languages.insertBefore("scss","property",{variable:/\$[-_\w]+|#\{\$[-_\w]+\}/}),Prism.languages.insertBefore("scss","function",{placeholder:{pattern:/%[-_\w]+/,alias:"selector"},statement:/\B!(?:default|optional)\b/i,"boolean":/\b(?:true|false)\b/,"null":/\bnull\b/,operator:{pattern:/(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|or|not)(?=\s)/,lookbehind:!0}}),Prism.languages.scss.atrule.inside.rest=Prism.util.clone(Prism.languages.scss); +Prism.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\w\W]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},string:{pattern:/(^|[^@\\])("|')(?:\\?[\s\S])*?\2/,lookbehind:!0},variable:/@[\w.$]+|@("|'|`)(?:\\?[\s\S])+?\1/,"function":/\b(?:COUNT|SUM|AVG|MIN|MAX|FIRST|LAST|UCASE|LCASE|MID|LEN|ROUND|NOW|FORMAT)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR VARYING|CHARACTER (?:SET|VARYING)|CHARSET|CHECK|CHECKPOINT|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMN|COLUMNS|COMMENT|COMMIT|COMMITTED|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS|CONTAINSTABLE|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|DATA(?:BASES?)?|DATETIME|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE(?: PRECISION)?|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE KEY|ELSE|ENABLE|ENCLOSED BY|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPE(?:D BY)?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|IDENTITY(?:_INSERT|COL)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTO|INVOKER|ISOLATION LEVEL|JOIN|KEYS?|KILL|LANGUAGE SQL|LAST|LEFT|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MODIFIES SQL DATA|MODIFY|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL(?: CHAR VARYING| CHARACTER(?: VARYING)?| VARCHAR)?|NATURAL|NCHAR(?: VARCHAR)?|NEXT|NO(?: SQL|CHECK|CYCLE)?|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READ(?:S SQL DATA|TEXT)?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEATABLE|REPLICATION|REQUIRE|RESTORE|RESTRICT|RETURNS?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE MODE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|START(?:ING BY)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED BY|TEXT(?:SIZE)?|THEN|TIMESTAMP|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNPIVOT|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?)\b/i,"boolean":/\b(?:TRUE|FALSE|NULL)\b/i,number:/\b-?(?:0x)?\d*\.?[\da-f]+\b/,operator:/[-+*\/=%^~]|&&?|\|?\||!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|IN|LIKE|NOT|OR|IS|DIV|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/}; diff --git a/etc/ghost/themes/casper/assets/js/uno-zen.common.js b/etc/ghost/themes/casper/assets/js/uno-zen.common.js new file mode 100755 index 0000000..aafd6e5 --- /dev/null +++ b/etc/ghost/themes/casper/assets/js/uno-zen.common.js @@ -0,0 +1,8 @@ +/** + * uno-zen - Minimalist and Elegant theme for Ghost + * @version 2.9.8 + * @link https://github.com/kikobeats/uno-zen + * @author Kiko Beats (https://github.com/kikobeats) + * @license MIT + */ +!function(){"use strict";function t(e,r){var i;if(r=r||{},this.trackingClick=!1,this.trackingClickStart=0,this.targetElement=null,this.touchStartX=0,this.touchStartY=0,this.lastTouchIdentifier=0,this.touchBoundary=r.touchBoundary||10,this.layer=e,this.tapDelay=r.tapDelay||200,this.tapTimeout=r.tapTimeout||700,!t.notNeeded(e)){for(var o=["onMouse","onClick","onTouchStart","onTouchMove","onTouchEnd","onTouchCancel"],s=this,a=0,c=o.length;a=0,n=navigator.userAgent.indexOf("Android")>0&&!e,r=/iP(ad|hone|od)/.test(navigator.userAgent)&&!e,i=r&&/OS 4_\d(_\d)?/.test(navigator.userAgent),o=r&&/OS [6-7]_\d/.test(navigator.userAgent),s=navigator.userAgent.indexOf("BB10")>0;t.prototype.needsClick=function(t){switch(t.nodeName.toLowerCase()){case"button":case"select":case"textarea":if(t.disabled)return!0;break;case"input":if(r&&"file"===t.type||t.disabled)return!0;break;case"label":case"iframe":case"video":return!0}return/\bneedsclick\b/.test(t.className)},t.prototype.needsFocus=function(t){switch(t.nodeName.toLowerCase()){case"textarea":return!0;case"select":return!n;case"input":switch(t.type){case"button":case"checkbox":case"file":case"image":case"radio":case"submit":return!1}return!t.disabled&&!t.readOnly;default:return/\bneedsfocus\b/.test(t.className)}},t.prototype.sendClick=function(t,e){var n,r;document.activeElement&&document.activeElement!==t&&document.activeElement.blur(),r=e.changedTouches[0],(n=document.createEvent("MouseEvents")).initMouseEvent(this.determineEventType(t),!0,!0,window,1,r.screenX,r.screenY,r.clientX,r.clientY,!1,!1,!1,!1,0,null),n.forwardedTouchEvent=!0,t.dispatchEvent(n)},t.prototype.determineEventType=function(t){return n&&"select"===t.tagName.toLowerCase()?"mousedown":"click"},t.prototype.focus=function(t){var e;r&&t.setSelectionRange&&0!==t.type.indexOf("date")&&"time"!==t.type&&"month"!==t.type?(e=t.value.length,t.setSelectionRange(e,e)):t.focus()},t.prototype.updateScrollParent=function(t){var e,n;if(!(e=t.fastClickScrollParent)||!e.contains(t)){n=t;do{if(n.scrollHeight>n.offsetHeight){e=n,t.fastClickScrollParent=n;break}n=n.parentElement}while(n)}e&&(e.fastClickLastScrollTop=e.scrollTop)},t.prototype.getTargetElementFromEventTarget=function(t){return t.nodeType===Node.TEXT_NODE?t.parentNode:t},t.prototype.onTouchStart=function(t){var e,n,o;if(t.targetTouches.length>1)return!0;if(e=this.getTargetElementFromEventTarget(t.target),n=t.targetTouches[0],r){if((o=window.getSelection()).rangeCount&&!o.isCollapsed)return!0;if(!i){if(n.identifier&&n.identifier===this.lastTouchIdentifier)return t.preventDefault(),!1;this.lastTouchIdentifier=n.identifier,this.updateScrollParent(e)}}return this.trackingClick=!0,this.trackingClickStart=t.timeStamp,this.targetElement=e,this.touchStartX=n.pageX,this.touchStartY=n.pageY,t.timeStamp-this.lastClickTimen||Math.abs(e.pageY-this.touchStartY)>n},t.prototype.onTouchMove=function(t){return!this.trackingClick||((this.targetElement!==this.getTargetElementFromEventTarget(t.target)||this.touchHasMoved(t))&&(this.trackingClick=!1,this.targetElement=null),!0)},t.prototype.findControl=function(t){return void 0!==t.control?t.control:t.htmlFor?document.getElementById(t.htmlFor):t.querySelector("button, input:not([type=hidden]), keygen, meter, output, progress, select, textarea")},t.prototype.onTouchEnd=function(t){var e,s,a,c,u,l=this.targetElement;if(!this.trackingClick)return!0;if(t.timeStamp-this.lastClickTimethis.tapTimeout)return!0;if(this.cancelNextClick=!1,this.lastClickTime=t.timeStamp,s=this.trackingClickStart,this.trackingClick=!1,this.trackingClickStart=0,o&&(u=t.changedTouches[0],(l=document.elementFromPoint(u.pageX-window.pageXOffset,u.pageY-window.pageYOffset)||l).fastClickScrollParent=this.targetElement.fastClickScrollParent),"label"===(a=l.tagName.toLowerCase())){if(e=this.findControl(l)){if(this.focus(l),n)return!1;l=e}}else if(this.needsFocus(l))return t.timeStamp-s>100||r&&window.top!==window&&"input"===a?(this.targetElement=null,!1):(this.focus(l),this.sendClick(l,t),r&&"select"===a||(this.targetElement=null,t.preventDefault()),!1);return!(!r||i||!(c=l.fastClickScrollParent)||c.fastClickLastScrollTop===c.scrollTop)||(this.needsClick(l)||(t.preventDefault(),this.sendClick(l,t)),!1)},t.prototype.onTouchCancel=function(){this.trackingClick=!1,this.targetElement=null},t.prototype.onMouse=function(t){return!this.targetElement||(!!t.forwardedTouchEvent||(!t.cancelable||(!(!this.needsClick(this.targetElement)||this.cancelNextClick)||(t.stopImmediatePropagation?t.stopImmediatePropagation():t.propagationStopped=!0,t.stopPropagation(),t.preventDefault(),!1))))},t.prototype.onClick=function(t){var e;return this.trackingClick?(this.targetElement=null,this.trackingClick=!1,!0):"submit"===t.target.type&&0===t.detail||((e=this.onMouse(t))||(this.targetElement=null),e)},t.prototype.destroy=function(){var t=this.layer;n&&(t.removeEventListener("mouseover",this.onMouse,!0),t.removeEventListener("mousedown",this.onMouse,!0),t.removeEventListener("mouseup",this.onMouse,!0)),t.removeEventListener("click",this.onClick,!0),t.removeEventListener("touchstart",this.onTouchStart,!1),t.removeEventListener("touchmove",this.onTouchMove,!1),t.removeEventListener("touchend",this.onTouchEnd,!1),t.removeEventListener("touchcancel",this.onTouchCancel,!1)},t.notNeeded=function(t){var e,r,i;if(void 0===window.ontouchstart)return!0;if(r=+(/Chrome\/([0-9]+)/.exec(navigator.userAgent)||[,0])[1]){if(!n)return!0;if(e=document.querySelector("meta[name=viewport]")){if(-1!==e.content.indexOf("user-scalable=no"))return!0;if(r>31&&document.documentElement.scrollWidth<=window.outerWidth)return!0}}if(s&&(i=navigator.userAgent.match(/Version\/([0-9]*)\.([0-9]*)/))[1]>=10&&i[2]>=3&&(e=document.querySelector("meta[name=viewport]"))){if(-1!==e.content.indexOf("user-scalable=no"))return!0;if(document.documentElement.scrollWidth<=window.outerWidth)return!0}return"none"===t.style.msTouchAction||"manipulation"===t.style.touchAction||(!!(+(/Firefox\/([0-9]+)/.exec(navigator.userAgent)||[,0])[1]>=27&&(e=document.querySelector("meta[name=viewport]"))&&(-1!==e.content.indexOf("user-scalable=no")||document.documentElement.scrollWidth<=window.outerWidth))||"none"===t.style.touchAction||"manipulation"===t.style.touchAction)},t.attach=function(e,n){return new t(e,n)},"function"==typeof define&&"object"==typeof define.amd&&define.amd?define(function(){return t}):"undefined"!=typeof module&&module.exports?(module.exports=t.attach,module.exports.FastClick=t):window.FastClick=t}(),function(){"use strict";!function(){var t,e;e=document.body,window.Uno=t={version:"2.9.0",is:function(t,n){return Array.isArray(n)?n.some(function(n){return e.dataset[t]===n}):e.dataset[t]===n},attr:function(t,n){return null!=n?e.dataset[t]=n:e.dataset[t]},context:function(){var t;return""===(t=document.body.className.split(" ")[0].split("-")[0])?"error":t},linkify:function(t){return $(t).each(function(){var t,e,n;return t=$(this),n=t.text(),e=t.attr("id"),t.html(""),t.addClass("deep-link"),t.append("'+n+"")})},search:{form:function(){var t;return t=$("#search-container"),function(e){return t[e]()}}()},timeAgo:function(t){return $(t).each(function(){var t,e;return t=$(this).html(),0===(e=Math.floor((Date.now()-new Date(t))/864e5))?e="today":1===e?e="yesterday":e+=" days ago",$(this).html(e),$(this).mouseover(function(){return $(this).html(t)}),$(this).mouseout(function(){return $(this).html(e)})})},device:function(){var t;return t=window.innerWidth,window.innerHeight,t<=480?"mobile":t<=1024?"tablet":"desktop"}},t.attr("page",t.context()),t.attr("device",t.device()),window.profile_title&&$("#profile-title").text(window.profile_title),window.profile_resume&&$("#profile-resume").text(window.profile_resume),window.posts_headline&&$("#posts-headline").text(window.posts_headline),window.open_button=window.open_button||".nav-posts > a"}()}.call(this);var InstantClick=function(t,e){function n(t){var e=t.indexOf("#");return e<0?t:t.substr(0,e)}function r(t){for(;t&&"A"!=t.nodeName;)t=t.parentNode;return t}function o(t){do{if(!t.hasAttribute)break;if(t.hasAttribute("data-instant"))return!1;if(t.hasAttribute("data-no-instant"))return!0}while(t=t.parentNode);return!1}function s(t){do{if(!t.hasAttribute)break;if(t.hasAttribute("data-no-instant"))return!1;if(t.hasAttribute("data-instant"))return!0}while(t=t.parentNode);return!1}function a(t){var r=e.protocol+"//"+e.host;return!(t.target||t.hasAttribute("download")||0!=t.href.indexOf(r+"/")||t.href.indexOf("#")>-1&&n(t.href)==k||(x?!s(t):o(t)))}function c(t,e,n,r){for(var i=!1,o=0;o-1&&t.getElementById(i.substr(s+1)),u=0;if(a)for(;a.offsetParent;)u+=a.offsetTop,a=a.offsetParent;scrollTo(0,u),k=n(i)}else scrollTo(0,o);O&&t.title==e?t.title=e+String.fromCharCode(160):t.title=e,y(),I.done(),c("change",!1);var l=t.createEvent("HTMLEvents");l.initEvent("instantclick:newpage",!0,!0),dispatchEvent(l)}function l(){R=!1,F=!1}function d(t){return t.replace(//gi,"")}function h(t){if(!(C>+new Date-500)){var e=r(t.target);e&&a(e)&&w(e.href)}}function f(t){if(!(C>+new Date-500)){var e=r(t.target);e&&a(e)&&(e.addEventListener("mouseout",m),M?(T=e.href,E=setTimeout(w,M)):w(e.href))}}function p(t){C=+new Date;var e=r(t.target);e&&a(e)&&(L?e.removeEventListener("mousedown",h):e.removeEventListener("mouseover",f),w(e.href))}function g(t){var e=r(t.target);e&&a(e)&&(t.which>1||t.metaKey||t.ctrlKey||(t.preventDefault(),b(e.href)))}function m(){if(E)return clearTimeout(E),void(E=!1);R&&!F&&(S.abort(),l())}function v(){if(!(S.readyState<4)&&0!=S.status){if(_.ready=+new Date-_.start,S.getResponseHeader("Content-Type").match(/\/(x|ht|xht)ml/)){var e=t.implementation.createHTMLDocument("");e.documentElement.innerHTML=d(S.responseText),$=e.title,U=e.body;var r=c("receive",q,U,$);r&&("body"in r&&(U=r.body),"title"in r&&($=r.title));var i=n(q);N[i]={body:U,title:$,scrollY:i in N?N[i].scrollY:0};for(var o,s,a=e.head.children,u=0,l=a.length-1;l>=0;l--)if((o=a[l]).hasAttribute("data-instant-track")){s=o.getAttribute("href")||o.getAttribute("src")||o.innerHTML;for(var h=H.length-1;h>=0;h--)H[h]==s&&u++}u!=H.length&&(D=!0)}else D=!0;F&&(F=!1,b(q))}}function y(e){if(t.body.addEventListener("touchstart",p,!0),L?t.body.addEventListener("mousedown",h,!0):t.body.addEventListener("mouseover",f,!0),t.body.addEventListener("click",g,!0),!e){var n,r,o,s,a=t.body.getElementsByTagName("script");for(i=0,j=a.length;i-1,P="createTouch"in t,N={},q=!1,$=!1,D=!1,U=!1,_={},R=!1,F=!1,H=[],Y={fetch:[],receive:[],wait:[],change:[]},I=function(){function e(e,o){l=e,t.getElementById(a.id)&&t.body.removeChild(a),a.style.opacity="1",t.getElementById(a.id)&&t.body.removeChild(a),i(),o&&setTimeout(n,0),clearTimeout(d),d=setTimeout(r,500)}function n(){l=10,i()}function r(){(l+=1+2*Math.random())>=98?l=98:d=setTimeout(r,500),i()}function i(){c.style[u]="translate("+l+"%)",t.getElementById(a.id)||t.body.appendChild(a)}function o(){if(t.getElementById(a.id))return clearTimeout(d),l=100,i(),void(a.style.opacity="0");e(100==l?0:l),setTimeout(o,0)}function s(){a.style.left=pageXOffset+"px",a.style.width=innerWidth+"px",a.style.top=pageYOffset+"px";var t="orientation"in window&&90==Math.abs(orientation),e=innerWidth/screen[t?"height":"width"]*2;a.style[u]="scaleY("+e+")"}var a,c,u,l,d;return{init:function(){(a=t.createElement("div")).id="instantclick",(c=t.createElement("div")).id="instantclick-bar",c.className="instantclick-bar",a.appendChild(c);var e=["Webkit","Moz","O"];if(!((u="transform")in c.style))for(r=0;r<3;r++)e[r]+"Transform"in c.style&&(u=e[r]+"Transform");var n="transition";if(!(n in c.style))for(var r=0;r<3;r++)e[r]+"Transition"in c.style&&(n="-"+e[r].toLowerCase()+"-"+n);var i=t.createElement("style");i.innerHTML="#instantclick{position:"+(P?"absolute":"fixed")+";top:0;left:0;width:100%;pointer-events:none;z-index:2147483647;"+n+":opacity .25s .1s}.instantclick-bar{background:#29d;width:100%;margin-left:-100%;height:2px;"+n+":all .25s}",t.head.appendChild(i),P&&(s(),addEventListener("resize",s),addEventListener("scroll",s))},start:e,done:o}}(),W="pushState"in history&&(!A.match("Android")||A.match("Chrome/"))&&"file:"!=e.protocol;return{supported:W,init:function(){if(!k)if(W){for(a=arguments.length-1;a>=0;a--){var r=arguments[a];!0===r?x=!0:"mousedown"==r?L=!0:"number"==typeof r&&(M=r)}k=n(e.href),N[k]={body:t.body,title:t.title,scrollY:pageYOffset};for(var i,o,s=t.head.children,a=s.length-1;a>=0;a--)(i=s[a]).hasAttribute("data-instant-track")&&(o=i.getAttribute("href")||i.getAttribute("src")||i.innerHTML,H.push(o));(S=new XMLHttpRequest).addEventListener("readystatechange",v),y(!0),I.init(),c("change",!0),addEventListener("popstate",function(){var t=n(e.href);t!=k&&(t in N?(N[k].scrollY=pageYOffset,k=t,u(N[t].title,N[t].body,!1,N[t].scrollY)):e.href=e.href)})}else c("change",!0)},on:function(t,e){Y[t].push(e)}}}(document,location);(function(){"use strict";$(function(){return InstantClick.init(),Uno.is("device","desktop")?$("a").not('[href*="mailto:"]').click(function(){if(-1===this.href.indexOf(location.hostname))return window.open($(this).attr("href")),!1}):FastClick.attach(Uno.app),(Uno.is("page","home")||Uno.is("page","paged")||Uno.is("page","tag"))&&Uno.timeAgo("#posts-list time"),Uno.is("page","post")&&(Uno.timeAgo(".post.meta > time"),$("main").readingTime({readingTimeTarget:".post.reading-time > span"}),Uno.linkify($("#post-content").children("h1, h2, h3, h4, h5, h6")),$(".content").fitVids()),Uno.is("page","error")&&$("#panic-button").click(function(){var t;return(t=document.createElement("script")).setAttribute("src","https://nthitz.github.io/turndownforwhatjs/tdfw.js"),document.body.appendChild(t)}),$("#search-input").keyup(function(t){return $("#search-form").attr("action",Uno.search.url+"+"+encodeURIComponent(t.target.value))})})}).call(this),function(){var t,e,n,r,i,o,s,a,c,u,l,d,h,f,p,g,m,v,y,w,b,k,T,E,C,S,x,L,M,A,O,P,N,q,$,D,U,_,R,j,F,H,Y,I,W,X,B,z,G,K=[].slice,V={}.hasOwnProperty,J=function(t,e){function n(){this.constructor=t}for(var r in e)V.call(e,r)&&(t[r]=e[r]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},Q=[].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1};for(b={catchupTime:100,initialRate:.03,minTime:250,ghostTime:100,maxProgressPerFrame:20,easeFactor:1.25,startOnPageLoad:!0,restartOnPushState:!0,restartOnRequestAfter:500,target:"body",elements:{checkInterval:100,selectors:["body"]},eventLag:{minSamples:10,sampleCount:3,lagThreshold:3},ajax:{trackMethods:["GET"],trackWebSockets:!0,ignoreURLs:[]}},M=function(){var t;return null!=(t="undefined"!=typeof performance&&null!==performance&&"function"==typeof performance.now?performance.now():void 0)?t:+new Date},O=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame,w=window.cancelAnimationFrame||window.mozCancelAnimationFrame,null==O&&(O=function(t){return setTimeout(t,50)},w=function(t){return clearTimeout(t)}),N=function(t){var e,n;return e=M(),(n=function(){var r;return(r=M()-e)>=33?(e=M(),t(r,function(){return O(n)})):setTimeout(n,33-r)})()},P=function(){var t,e,n;return n=arguments[0],e=arguments[1],t=3<=arguments.length?K.call(arguments,2):[],"function"==typeof n[e]?n[e].apply(n,t):n[e]},k=function(){var t,e,n,r,i,o,s;for(e=arguments[0],o=0,s=(r=2<=arguments.length?K.call(arguments,1):[]).length;s>o;o++)if(n=r[o])for(t in n)V.call(n,t)&&(i=n[t],null!=e[t]&&"object"==typeof e[t]&&null!=i&&"object"==typeof i?k(e[t],i):e[t]=i);return e},m=function(t){var e,n,r,i,o;for(n=e=0,i=0,o=t.length;o>i;i++)r=t[i],n+=Math.abs(r),e++;return n/e},E=function(t,e){var n,r,i;if(null==t&&(t="options"),null==e&&(e=!0),i=document.querySelector("[data-pace-"+t+"]")){if(n=i.getAttribute("data-pace-"+t),!e)return n;try{return JSON.parse(n)}catch(t){return r=t,"undefined"!=typeof console&&null!==console?console.error("Error parsing inline pace options",r):void 0}}},s=function(){function t(){}return t.prototype.on=function(t,e,n,r){var i;return null==r&&(r=!1),null==this.bindings&&(this.bindings={}),null==(i=this.bindings)[t]&&(i[t]=[]),this.bindings[t].push({handler:e,ctx:n,once:r})},t.prototype.once=function(t,e,n){return this.on(t,e,n,!0)},t.prototype.off=function(t,e){var n,r,i;if(null!=(null!=(r=this.bindings)?r[t]:void 0)){if(null==e)return delete this.bindings[t];for(n=0,i=[];nY;Y++)U=B[Y],!0===A[U]&&(A[U]=b[U]);c=function(t){function e(){return z=e.__super__.constructor.apply(this,arguments)}return J(e,t),e}(Error),e=function(){function t(){this.progress=0}return t.prototype.getElement=function(){var t;if(null==this.el){if(!(t=document.querySelector(A.target)))throw new c;this.el=document.createElement("div"),this.el.className="pace pace-active",document.body.className=document.body.className.replace(/pace-done/g,""),document.body.className+=" pace-running",this.el.innerHTML='
\n
\n
\n
',null!=t.firstChild?t.insertBefore(this.el,t.firstChild):t.appendChild(this.el)}return this.el},t.prototype.finish=function(){var t;return t=this.getElement(),t.className=t.className.replace("pace-active",""),t.className+=" pace-inactive",document.body.className=document.body.className.replace("pace-running",""),document.body.className+=" pace-done"},t.prototype.update=function(t){return this.progress=t,this.render()},t.prototype.destroy=function(){try{this.getElement().parentNode.removeChild(this.getElement())}catch(t){c=t}return this.el=void 0},t.prototype.render=function(){var t,e,n,r,i,o,s;if(null==document.querySelector(A.target))return!1;for(t=this.getElement(),r="translate3d("+this.progress+"%, 0, 0)",i=0,o=(s=["webkitTransform","msTransform","transform"]).length;o>i;i++)e=s[i],t.children[0].style[e]=r;return(!this.lastRenderedProgress||this.lastRenderedProgress|0!==this.progress|0)&&(t.children[0].setAttribute("data-progress-text",(0|this.progress)+"%"),this.progress>=100?n="99":(n=this.progress<10?"0":"",n+=0|this.progress),t.children[0].setAttribute("data-progress",""+n)),this.lastRenderedProgress=this.progress},t.prototype.done=function(){return this.progress>=100},t}(),a=function(){function t(){this.bindings={}}return t.prototype.trigger=function(t,e){var n,r,i,o,s;if(null!=this.bindings[t]){for(s=[],r=0,i=(o=this.bindings[t]).length;i>r;r++)n=o[r],s.push(n.call(this,e));return s}},t.prototype.on=function(t,e){var n;return null==(n=this.bindings)[t]&&(n[t]=[]),this.bindings[t].push(e)},t}(),H=window.XMLHttpRequest,F=window.XDomainRequest,j=window.WebSocket,T=function(t,e){var n,r;r=[];for(n in e.prototype)try{r.push(null==t[n]&&"function"!=typeof e[n]?"function"==typeof Object.defineProperty?Object.defineProperty(t,n,{get:function(){return e.prototype[n]},configurable:!0,enumerable:!0}):t[n]=e.prototype[n]:void 0)}catch(t){t}return r},x=[],u.ignore=function(){var t,e,n;return e=arguments[0],t=2<=arguments.length?K.call(arguments,1):[],x.unshift("ignore"),n=e.apply(null,t),x.shift(),n},u.track=function(){var t,e,n;return e=arguments[0],t=2<=arguments.length?K.call(arguments,1):[],x.unshift("track"),n=e.apply(null,t),x.shift(),n},D=function(t){var e;if(null==t&&(t="GET"),"track"===x[0])return"force";if(!x.length&&A.ajax){if("socket"===t&&A.ajax.trackWebSockets)return!0;if(e=t.toUpperCase(),Q.call(A.ajax.trackMethods,e)>=0)return!0}return!1},l=function(t){function e(){var t,n=this;e.__super__.constructor.apply(this,arguments),t=function(t){var e;return e=t.open,t.open=function(r,i){return D(r)&&n.trigger("request",{type:r,url:i,request:t}),e.apply(t,arguments)}},window.XMLHttpRequest=function(e){var n;return n=new H(e),t(n),n};try{T(window.XMLHttpRequest,H)}catch(t){}if(null!=F){window.XDomainRequest=function(){var e;return e=new F,t(e),e};try{T(window.XDomainRequest,F)}catch(t){}}if(null!=j&&A.ajax.trackWebSockets){window.WebSocket=function(t,e){var r;return r=null!=e?new j(t,e):new j(t),D("socket")&&n.trigger("request",{type:"socket",url:t,protocols:e,request:r}),r};try{T(window.WebSocket,j)}catch(t){}}}return J(e,a),e}(),I=null,$=function(t){var e,n,r,i;for(n=0,r=(i=A.ajax.ignoreURLs).length;r>n;n++)if("string"==typeof(e=i[n])){if(-1!==t.indexOf(e))return!0}else if(e.test(t))return!0;return!1},(C=function(){return null==I&&(I=new l),I})().on("request",function(e){var n,r,i,o,s;return o=e.type,i=e.request,s=e.url,$(s)?void 0:u.running||!1===A.restartOnRequestAfter&&"force"!==D(o)?void 0:(r=arguments,"boolean"==typeof(n=A.restartOnRequestAfter||0)&&(n=0),setTimeout(function(){var e,n,s,a,c;if("socket"===o?i.readyState<2:0<(s=i.readyState)&&4>s){for(u.restart(),c=[],e=0,n=(a=u.sources).length;n>e;e++){if((U=a[e])instanceof t){U.watch.apply(U,r);break}c.push(void 0)}return c}},n))}),t=function(){function t(){var t=this;this.elements=[],C().on("request",function(){return t.watch.apply(t,arguments)})}return t.prototype.watch=function(t){var e,n,r,i;return r=t.type,e=t.request,i=t.url,$(i)?void 0:(n="socket"===r?new f(e):new p(e),this.elements.push(n))},t}(),p=function(){return function(t){var e,n,r,i,o,s=this;if(this.progress=0,null!=window.ProgressEvent)for(t.addEventListener("progress",function(t){return s.progress=t.lengthComputable?100*t.loaded/t.total:s.progress+(100-s.progress)/2},!1),o=["load","abort","timeout","error"],n=0,r=o.length;r>n;n++)e=o[n],t.addEventListener(e,function(){return s.progress=100},!1);else i=t.onreadystatechange,t.onreadystatechange=function(){var e;return 0===(e=t.readyState)||4===e?s.progress=100:3===t.readyState&&(s.progress=50),"function"==typeof i?i.apply(null,arguments):void 0}}}(),f=function(){return function(t){var e,n,r,i,o=this;for(this.progress=0,n=0,r=(i=["error","open"]).length;r>n;n++)e=i[n],t.addEventListener(e,function(){return o.progress=100},!1)}}(),r=function(){return function(t){var e,n,r,o;for(null==t&&(t={}),this.elements=[],null==t.selectors&&(t.selectors=[]),n=0,r=(o=t.selectors).length;r>n;n++)e=o[n],this.elements.push(new i(e))}}(),i=function(){function t(t){this.selector=t,this.progress=0,this.check()}return t.prototype.check=function(){var t=this;return document.querySelector(this.selector)?this.done():setTimeout(function(){return t.check()},A.elements.checkInterval)},t.prototype.done=function(){return this.progress=100},t}(),n=function(){function t(){var t,e,n=this;this.progress=null!=(e=this.states[document.readyState])?e:100,t=document.onreadystatechange,document.onreadystatechange=function(){return null!=n.states[document.readyState]&&(n.progress=n.states[document.readyState]),"function"==typeof t?t.apply(null,arguments):void 0}}return t.prototype.states={loading:0,interactive:50,complete:100},t}(),o=function(){return function(){var t,e,n,r,i,o=this;this.progress=0,t=0,i=[],r=0,n=M(),e=setInterval(function(){var s;return s=M()-n-50,n=M(),i.push(s),i.length>A.eventLag.sampleCount&&i.shift(),t=m(i),++r>=A.eventLag.minSamples&&t=100&&(this.done=!0),e===this.last?this.sinceLastUpdate+=t:(this.sinceLastUpdate&&(this.rate=(e-this.last)/this.sinceLastUpdate),this.catchup=(e-this.progress)/A.catchupTime,this.sinceLastUpdate=0,this.last=e),e>this.progress&&(this.progress+=this.catchup*t),n=1-Math.pow(this.progress/100,A.easeFactor),this.progress+=n*this.rate*t,this.progress=Math.min(this.lastProgress+A.maxProgressPerFrame,this.progress),this.progress=Math.max(0,this.progress),this.progress=Math.min(100,this.progress),this.lastProgress=this.progress,this.progress},t}(),_=null,q=null,v=null,R=null,g=null,y=null,u.running=!1,S=function(){return A.restartOnPushState?u.restart():void 0},null!=window.history.pushState&&(X=window.history.pushState,window.history.pushState=function(){return S(),X.apply(window.history,arguments)}),null!=window.history.replaceState&&(G=window.history.replaceState,window.history.replaceState=function(){return S(),G.apply(window.history,arguments)}),d={ajax:t,elements:r,document:n,eventLag:o},(L=function(){var t,n,r,i,o,s,a,c;for(u.sources=_=[],n=0,i=(s=["ajax","elements","document","eventLag"]).length;i>n;n++)t=s[n],!1!==A[t]&&_.push(new d[t](A[t]));for(r=0,o=(c=null!=(a=A.extraSources)?a:[]).length;o>r;r++)U=c[r],_.push(new U(A));return u.bar=v=new e,q=[],R=new h})(),u.stop=function(){return u.trigger("stop"),u.running=!1,v.destroy(),y=!0,null!=g&&("function"==typeof w&&w(g),g=null),L()},u.restart=function(){return u.trigger("restart"),u.stop(),u.start()},u.go=function(){var t;return u.running=!0,v.render(),t=M(),y=!1,g=N(function(e,n){var r,i,o,s,a,c,l,d,f,p,g,m,w,b,k;for(100-v.progress,i=p=0,o=!0,c=g=0,w=_.length;w>g;c=++g)for(U=_[c],f=null!=q[c]?q[c]:q[c]=[],a=null!=(k=U.elements)?k:[U],l=m=0,b=a.length;b>m;l=++m)s=a[l],d=null!=f[l]?f[l]:f[l]=new h(s),o&=d.done,d.done||(i++,p+=d.tick(e));return r=p/i,v.update(R.tick(e,r)),v.done()||o||y?(v.update(100),u.trigger("done"),setTimeout(function(){return v.finish(),u.running=!1,u.trigger("hide")},Math.max(A.ghostTime,Math.max(A.minTime-(M()-t),0)))):n()})},u.start=function(t){k(A,t),u.running=!0;try{v.render()}catch(t){c=t}return document.querySelector(".pace")?(u.trigger("start"),u.go()):setTimeout(u.start,50)},"function"==typeof define&&define.amd?define(["pace"],function(){return u}):"object"==typeof exports?module.exports=u:A.startOnPageLoad&&u.start()}.call(this),function(t){t.fn.readingTime=function(e){if(!this.length)return this;var n={readingTimeTarget:".eta",wordCountTarget:null,wordsPerMinute:270,round:!0,lang:"en",remotePath:null,remoteTarget:null},r=this,i=t(this);r.settings=t.extend({},n,e);var o=r.settings.readingTimeTarget,s=r.settings.wordCountTarget,a=r.settings.wordsPerMinute,c=r.settings.round,u=r.settings.lang,l=r.settings.remotePath,d=r.settings.remoteTarget;if("fr"==u)var h="Moins d'une minute",f="min";else if("de"==u)var h="Weniger als eine Minute",f="min";else if("es"==u)var h="Menos de un minuto",f="min";else var h="Less than a minute",f="min";var p=function(t){var e=t.split(" ").length,n=e/(a/60),r=Math.round(n/60),u=Math.round(n-60*r);if(!0===c)r>0?i.find(o).text(r+" "+f):i.find(o).text(h);else{var l=r+":"+u;i.find(o).text(l)}""!==s&&void 0!==s&&i.find(s).text(e)};i.each(function(){null!=l&&null!=d?t.get(l,function(e){p(t(e).children().text())}):p(i.text())})}}(jQuery),function(){"use strict";$(function(){var t,e;if(t=function(){return setTimeout(function(){return $(".cover").addClass("animated")},1e3)},e=function(t){return $("main, .cover, .links > li, html").toggleClass("expanded"),Uno.search.form(t.form)},$("#menu-button").click(function(){return $(".cover, main, #menu-button, html").toggleClass("expanded")}),$(window.open_button+", #avatar-link").click(function(t){if(Uno.is("page","home"))return t.preventDefault(),location.hash=""===location.hash?"#open":"",Uno.is("device","desktop")?e({form:"toggle"}):$("#menu-button").trigger("click")}),Uno.is("device","desktop")&&Uno.is("page","home")&&(t(),"#open"!==location.hash))return e({form:"hide"})})}.call(this); \ No newline at end of file diff --git a/etc/ghost/themes/casper/assets/js/uno-zen.post.js b/etc/ghost/themes/casper/assets/js/uno-zen.post.js new file mode 100644 index 0000000..54ff7be --- /dev/null +++ b/etc/ghost/themes/casper/assets/js/uno-zen.post.js @@ -0,0 +1,8 @@ +/** + * uno-zen - Minimalist and Elegant theme for Ghost + * @version 2.9.8 + * @link https://github.com/kikobeats/uno-zen + * @author Kiko Beats (https://github.com/kikobeats) + * @license MIT + */ +!function(e){"use strict";e.fn.fitVids=function(t){var a={customSelector:null,ignore:null};if(!document.getElementById("fit-vids-style")){var n=document.head||document.getElementsByTagName("head")[0],i=document.createElement("div");i.innerHTML='

x

',n.appendChild(i.childNodes[1])}return t&&e.extend(a,t),this.each(function(){var t=['iframe[src*="player.vimeo.com"]','iframe[src*="youtube.com"]','iframe[src*="youtube-nocookie.com"]','iframe[src*="kickstarter.com"][src*="video.html"]',"object","embed"];a.customSelector&&t.push(a.customSelector);var n=".fitvidsignore";a.ignore&&(n=n+", "+a.ignore);var i=e(this).find(t.join(","));(i=(i=i.not("object object")).not(n)).each(function(){var t=e(this);if(!(t.parents(n).length>0||"embed"===this.tagName.toLowerCase()&&t.parent("object").length||t.parent(".fluid-width-video-wrapper").length)){t.css("height")||t.css("width")||!isNaN(t.attr("height"))&&!isNaN(t.attr("width"))||(t.attr("height",9),t.attr("width",16));var a=("object"===this.tagName.toLowerCase()||t.attr("height")&&!isNaN(parseInt(t.attr("height"),10))?parseInt(t.attr("height"),10):t.height())/(isNaN(parseInt(t.attr("width"),10))?t.width():parseInt(t.attr("width"),10));if(!t.attr("name")){var i="fitvid"+e.fn.fitVids._count;t.attr("name",i),e.fn.fitVids._count++}t.wrap('
').parent(".fluid-width-video-wrapper").css("padding-top",100*a+"%"),t.removeAttr("height").removeAttr("width")}})})},e.fn.fitVids._count=0}(window.jQuery||window.Zepto);var _self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},Prism=function(){var e=/\blang(?:uage)?-(\w+)\b/i,t=_self.Prism={util:{encode:function(e){return e instanceof a?new a(e.type,t.util.encode(e.content),e.alias):"Array"===t.util.type(e)?e.map(t.util.encode):e.replace(/&/g,"&").replace(/e.length)break e;if(!(E instanceof n)){u.lastIndex=0;var f=u.exec(E);if(f){d&&(p=f[1].length);var h=f.index-1+p,T=h+(f=f[0].slice(p)).length,N=E.slice(0,h+1),I=E.slice(T+1),A=[m,1];N&&A.push(N);var b=new n(s,c?t.tokenize(f,c):f,g);A.push(b),I&&A.push(I),Array.prototype.splice.apply(i,A)}}}}}return i},hooks:{all:{},add:function(e,a){var n=t.hooks.all;n[e]=n[e]||[],n[e].push(a)},run:function(e,a){var n=t.hooks.all[e];if(n&&n.length)for(var i,r=0;i=n[r++];)i(a)}}},a=t.Token=function(e,t,a){this.type=e,this.content=t,this.alias=a};if(a.stringify=function(e,n,i){if("string"==typeof e)return e;if("Array"===t.util.type(e))return e.map(function(t){return a.stringify(t,n,e)}).join("");var r={type:e.type,content:a.stringify(e.content,n,i),tag:"span",classes:["token",e.type],attributes:{},language:n,parent:i};if("comment"==r.type&&(r.attributes.spellcheck="true"),e.alias){var s="Array"===t.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(r.classes,s)}t.hooks.run("wrap",r);var o="";for(var l in r.attributes)o+=(o?" ":"")+l+'="'+(r.attributes[l]||"")+'"';return"<"+r.tag+' class="'+r.classes.join(" ")+'" '+o+">"+r.content+""},!_self.document)return _self.addEventListener?(_self.addEventListener("message",function(e){var a=JSON.parse(e.data),n=a.language,i=a.code,r=a.immediateClose;_self.postMessage(t.highlight(i,t.languages[n],n)),r&&_self.close()},!1),_self.Prism):_self.Prism;var n=document.getElementsByTagName("script");return(n=n[n.length-1])&&(t.filename=n.src,document.addEventListener&&!n.hasAttribute("data-manual")&&document.addEventListener("DOMContentLoaded",t.highlightAll)),_self.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=Prism),"undefined"!=typeof global&&(global.Prism=Prism),Prism.languages.markup={comment://,prolog:/<\?[\w\W]+?\?>/,doctype://,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=.$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\\1|\\?(?!\1)[\w\W])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:('|")[\w\W]*?(\1)|[^\s>]+)/i,inside:{punctuation:/[=>"']/}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},Prism.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),Prism.languages.xml=Prism.languages.markup,Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup,Prism.languages.css={comment:/\/\*[\w\W]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^\{\}\s][^\{\};]*?(?=\s*\{)/,string:/("|')(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1/,property:/(\b|\B)[\w-]+(?=\s*:)/i,important:/\B!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},Prism.languages.css.atrule.inside.rest=Prism.util.clone(Prism.languages.css),Prism.languages.markup&&(Prism.languages.insertBefore("markup","tag",{style:{pattern:/()[\w\W]*?(?=<\/style>)/i,lookbehind:!0,inside:Prism.languages.css,alias:"language-css"}}),Prism.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|').*?\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:Prism.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:Prism.languages.css}},alias:"language-css"}},Prism.languages.markup.tag)),Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\w\W]*?\*\//,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0}],string:/(["'])(\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,"class-name":{pattern:/((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[a-z0-9_\.\\]+/i,lookbehind:!0,inside:{punctuation:/(\.|\\)/}},keyword:/\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,boolean:/\b(true|false)\b/,function:/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},Prism.languages.javascript=Prism.languages.extend("clike",{keyword:/\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\b/,number:/\b-?(0x[\dA-Fa-f]+|0b[01]+|0o[0-7]+|\d*\.?\d+([Ee][+-]?\d+)?|NaN|Infinity)\b/,function:/[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*(?=\()/i}),Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^\/])\/(?!\/)(\[.+?]|\\.|[^\/\\\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0}}),Prism.languages.insertBefore("javascript","class-name",{"template-string":{pattern:/`(?:\\`|\\?[^`])*`/,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}}}),Prism.languages.markup&&Prism.languages.insertBefore("markup","tag",{script:{pattern:/()[\w\W]*?(?=<\/script>)/i,lookbehind:!0,inside:Prism.languages.javascript,alias:"language-javascript"}}),Prism.languages.js=Prism.languages.javascript,function(e){var t={variable:[{pattern:/\$?\(\([\w\W]+?\)\)/,inside:{variable:[{pattern:/(^\$\(\([\w\W]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b-?(?:0x[\dA-Fa-f]+|\d*\.?\d+(?:[Ee]-?\d+)?)\b/,operator:/--?|-=|\+\+?|\+=|!=?|~|\*\*?|\*=|\/=?|%=?|<<=?|>>=?|<=?|>=?|==?|&&?|&=|\^=?|\|\|?|\|=|\?|:/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\([^)]+\)|`[^`]+`/,inside:{variable:/^\$\(|^`|\)$|`$/}},/\$(?:[a-z0-9_#\?\*!@]+|\{[^}]+\})/i]};e.languages.bash={shebang:{pattern:/^#!\s*\/bin\/bash|^#!\s*\/bin\/sh/,alias:"important"},comment:{pattern:/(^|[^"{\\])#.*/,lookbehind:!0},string:[{pattern:/((?:^|[^<])<<\s*)(?:"|')?(\w+?)(?:"|')?\s*\r?\n(?:[\s\S])*?\r?\n\2/g,lookbehind:!0,inside:t},{pattern:/("|')(?:\\?[\s\S])*?\1/g,inside:t}],variable:t.variable,function:{pattern:/(^|\s|;|\||&)(?:alias|apropos|apt-get|aptitude|aspell|awk|basename|bash|bc|bg|builtin|bzip2|cal|cat|cd|cfdisk|chgrp|chmod|chown|chroot|chkconfig|cksum|clear|cmp|comm|command|cp|cron|crontab|csplit|cut|date|dc|dd|ddrescue|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|du|egrep|eject|enable|env|ethtool|eval|exec|expand|expect|export|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|getopts|git|grep|groupadd|groupdel|groupmod|groups|gzip|hash|head|help|hg|history|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|jobs|join|kill|killall|less|link|ln|locate|logname|logout|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|make|man|mkdir|mkfifo|mkisofs|mknod|more|most|mount|mtools|mtr|mv|mmv|nano|netstat|nice|nl|nohup|notify-send|nslookup|open|op|passwd|paste|pathchk|ping|pkill|popd|pr|printcap|printenv|printf|ps|pushd|pv|pwd|quota|quotacheck|quotactl|ram|rar|rcp|read|readarray|readonly|reboot|rename|renice|remsync|rev|rm|rmdir|rsync|screen|scp|sdiff|sed|seq|service|sftp|shift|shopt|shutdown|sleep|slocate|sort|source|split|ssh|stat|strace|su|sudo|sum|suspend|sync|tail|tar|tee|test|time|timeout|times|touch|top|traceroute|trap|tr|tsort|tty|type|ulimit|umask|umount|unalias|uname|unexpand|uniq|units|unrar|unshar|uptime|useradd|userdel|usermod|users|uuencode|uudecode|v|vdir|vi|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yes|zip)(?=$|\s|;|\||&)/,lookbehind:!0},keyword:{pattern:/(^|\s|;|\||&)(?:let|:|\.|if|then|else|elif|fi|for|break|continue|while|in|case|function|select|do|done|until|echo|exit|return|set|declare)(?=$|\s|;|\||&)/,lookbehind:!0},boolean:{pattern:/(^|\s|;|\||&)(?:true|false)(?=$|\s|;|\||&)/,lookbehind:!0},operator:/&&?|\|\|?|==?|!=?|<<>|<=?|>=?|=~/,punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];]/};var a=t.variable[1].inside;a.function=e.languages.bash.function,a.keyword=e.languages.bash.keyword,a.boolean=e.languages.bash.boolean,a.operator=e.languages.bash.operator,a.punctuation=e.languages.bash.punctuation}(Prism),Prism.languages.c=Prism.languages.extend("clike",{keyword:/\b(asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while)\b/,operator:/\-[>-]?|\+\+?|!=?|<>?=?|==?|&&?|\|?\||[~^%?*\/]/,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)[ful]*\b/i}),Prism.languages.insertBefore("c","string",{macro:{pattern:/(^\s*)#\s*[a-z]+([^\r\n\\]|\\.|\\(?:\r\n?|\n))*/im,lookbehind:!0,alias:"property",inside:{string:{pattern:/(#\s*include\s*)(<.+?>|("|')(\\?.)+?\3)/,lookbehind:!0},directive:{pattern:/(#\s*)\b(define|elif|else|endif|error|ifdef|ifndef|if|import|include|line|pragma|undef|using)\b/,lookbehind:!0,alias:"keyword"}}},constant:/\b(__FILE__|__LINE__|__DATE__|__TIME__|__TIMESTAMP__|__func__|EOF|NULL|stdin|stdout|stderr)\b/}),delete Prism.languages.c["class-name"],delete Prism.languages.c.boolean,function(e){var t=/#(?!\{).+/,a={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:t,string:[/'(?:\\?[^\\])*?'/,{pattern:/"(?:\\?[^\\])*?"/,inside:{interpolation:a}}],keyword:/\b(and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:t,interpolation:a}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\?[\s\S])*?`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},rest:e.languages.javascript}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,alias:"string"},{pattern:/"""[\s\S]*?"""/,alias:"string",inside:{interpolation:a}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/})}(Prism),Prism.languages.css.selector={pattern:/[^\{\}\s][^\{\}]*(?=\s*\{)/,inside:{"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+(?:\(.*\))?/,class:/\.[-:\.\w]+/,id:/#[-:\.\w]+/}},Prism.languages.insertBefore("css","function",{hexcode:/#[\da-f]{3,6}/i,entity:/\\[\da-f]{1,8}/i,number:/[\d%\.]+/}),Prism.languages.git={comment:/^#.*/m,deleted:/^[-–].*/m,inserted:/^\+.*/m,string:/("|')(\\?.)*?\1/m,command:{pattern:/^.*\$ git .*$/m,inside:{parameter:/\s(--|-)\w+/m}},coord:/^@@.*@@$/m,commit_sha1:/^commit \w{40}$/m},Prism.languages.markdown=Prism.languages.extend("markup",{}),Prism.languages.insertBefore("markdown","prolog",{blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},code:[{pattern:/^(?: {4}|\t).+/m,alias:"keyword"},{pattern:/``.+?``|`[^`\n]+`/,alias:"keyword"}],title:[{pattern:/\w+.*(?:\r?\n|\r)(?:==+|--+)/,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#+.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])([\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:/(^|[^\\])(\*\*|__)(?:(?:\r?\n|\r)(?!\r?\n|\r)|.)+?\2/,lookbehind:!0,inside:{punctuation:/^\*\*|^__|\*\*$|__$/}},italic:{pattern:/(^|[^\\])([*_])(?:(?:\r?\n|\r)(?!\r?\n|\r)|.)+?\2/,lookbehind:!0,inside:{punctuation:/^[*_]|[*_]$/}},url:{pattern:/!?\[[^\]]+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)| ?\[[^\]\n]*\])/,inside:{variable:{pattern:/(!?\[)[^\]]+(?=\]$)/,lookbehind:!0},string:{pattern:/"(?:\\.|[^"\\])*"(?=\)$)/}}}}),Prism.languages.markdown.bold.inside.url=Prism.util.clone(Prism.languages.markdown.url),Prism.languages.markdown.italic.inside.url=Prism.util.clone(Prism.languages.markdown.url),Prism.languages.markdown.bold.inside.italic=Prism.util.clone(Prism.languages.markdown.italic),Prism.languages.markdown.italic.inside.bold=Prism.util.clone(Prism.languages.markdown.bold),Prism.languages.scss=Prism.languages.extend("css",{comment:{pattern:/(^|[^\\])(?:\/\*[\w\W]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-]+(?:\([^()]+\)|[^(])*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)*url(?=\()/i,selector:{pattern:/(?=\S)[^@;\{\}\(\)]?([^@;\{\}\(\)]|&|#\{\$[-_\w]+\})+(?=\s*\{(\}|\s|[^\}]+(:|\{)[^\}]+))/m,inside:{placeholder:/%[-_\w]+/}}}),Prism.languages.insertBefore("scss","atrule",{keyword:[/@(?:if|else(?: if)?|for|each|while|import|extend|debug|warn|mixin|include|function|return|content)/i,{pattern:/( +)(?:from|through)(?= )/,lookbehind:!0}]}),Prism.languages.insertBefore("scss","property",{variable:/\$[-_\w]+|#\{\$[-_\w]+\}/}),Prism.languages.insertBefore("scss","function",{placeholder:{pattern:/%[-_\w]+/,alias:"selector"},statement:/\B!(?:default|optional)\b/i,boolean:/\b(?:true|false)\b/,null:/\bnull\b/,operator:{pattern:/(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|or|not)(?=\s)/,lookbehind:!0}}),Prism.languages.scss.atrule.inside.rest=Prism.util.clone(Prism.languages.scss),Prism.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\w\W]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},string:{pattern:/(^|[^@\\])("|')(?:\\?[\s\S])*?\2/,lookbehind:!0},variable:/@[\w.$]+|@("|'|`)(?:\\?[\s\S])+?\1/,function:/\b(?:COUNT|SUM|AVG|MIN|MAX|FIRST|LAST|UCASE|LCASE|MID|LEN|ROUND|NOW|FORMAT)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR VARYING|CHARACTER (?:SET|VARYING)|CHARSET|CHECK|CHECKPOINT|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMN|COLUMNS|COMMENT|COMMIT|COMMITTED|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS|CONTAINSTABLE|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|DATA(?:BASES?)?|DATETIME|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE(?: PRECISION)?|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE KEY|ELSE|ENABLE|ENCLOSED BY|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPE(?:D BY)?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|IDENTITY(?:_INSERT|COL)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTO|INVOKER|ISOLATION LEVEL|JOIN|KEYS?|KILL|LANGUAGE SQL|LAST|LEFT|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MODIFIES SQL DATA|MODIFY|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL(?: CHAR VARYING| CHARACTER(?: VARYING)?| VARCHAR)?|NATURAL|NCHAR(?: VARCHAR)?|NEXT|NO(?: SQL|CHECK|CYCLE)?|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READ(?:S SQL DATA|TEXT)?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEATABLE|REPLICATION|REQUIRE|RESTORE|RESTRICT|RETURNS?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE MODE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|START(?:ING BY)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED BY|TEXT(?:SIZE)?|THEN|TIMESTAMP|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNPIVOT|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?)\b/i,boolean:/\b(?:TRUE|FALSE|NULL)\b/i,number:/\b-?(?:0x)?\d*\.?[\da-f]+\b/,operator:/[-+*\/=%^~]|&&?|\|?\||!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|IN|LIKE|NOT|OR|IS|DIV|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/}; \ No newline at end of file diff --git a/etc/ghost/themes/casper/assets/scss/components/_aside.scss b/etc/ghost/themes/casper/assets/scss/components/_aside.scss new file mode 100755 index 0000000..5134786 --- /dev/null +++ b/etc/ghost/themes/casper/assets/scss/components/_aside.scss @@ -0,0 +1,144 @@ +.cover { + position: fixed; + z-index: 1; + + display: block; + width: $aside-width-collapsed; + height: 100%; + overflow-y: auto; + + border-right: 1px solid $gray; + box-shadow: 10.5px -10px 1px -9px $gray-light; + + &.animated { + transition: width $aside-animation-time $aside-animation; + } + &.expanded { + width: 100%; + + .navigation.left { + margin-top: .85rem; + margin-bottom: 1rem; + } + } + &.container { + text-align: center; + + color: $gray-lightest; + + @extend %font-shadow; + @extend %center-absolute; + @extend %background-filter; + } +} + +#profile-resume { + display: none; +} + +.profile { + max-width: 38.75rem; + > p { + margin: 10px 2rem; + + font-size: .9rem; + } + > a { + > h1 { + margin: 10px auto; + + font-family: $sans-font; + font-size: $unit * 1.6; + font-weight: bold; + + letter-spacing: .05rem; + + color: $gray-lightest; + } + > h3 { + margin: 0; + + color: $gray-lightest; + } + > img { + width: 7rem; + + border: 2px solid rgba($primary-color, .1); + box-shadow: 0 0 1px 1px rgba(000, 000, 000, .3); + } + } +} +.navigation { + &.left { + display: inline-block; + .links { + margin: 0; + + list-style: none; + + > li { + display: block; + margin: 0 1px 0 0; + + line-height: 1em; + + &.expanded { + display: inline-block; + margin: 0 5px; + + border-radius: 20px; + + @extend %btn-cover-with-border; + + > a { + padding: .625rem 1.25rem; + } + } + + > a { + display: block; + float: none; + padding: .5rem 1.25rem; + + opacity: .8; + color: $gray-lightest; + + @extend %btn-cover; + + &:hover { + color: $hover-color; + } + } + } + } + } + &.right { + display: block; + margin: .5rem; + .social { + margin: 0; + &.item { + display: inline-block; + margin: 0 4px 0 0; + + line-height: 1em; + a { + padding: 6px 8px 6px 9px; + + @extend %btn-cover; + .label { + display: none; + } + .icon { + display: block; + + font-size: 1.7em; + } + &:hover { + color: $hover-color; + } + } + } + } + } +} diff --git a/etc/ghost/themes/casper/assets/scss/components/_loading.scss b/etc/ghost/themes/casper/assets/scss/components/_loading.scss new file mode 100755 index 0000000..d4d3be8 --- /dev/null +++ b/etc/ghost/themes/casper/assets/scss/components/_loading.scss @@ -0,0 +1,24 @@ +// more in http://github.hubspot.com/pace/docs/welcome/ + +.pace { + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + pointer-events: none; + + -webkit-pointer-events: none; +} +.pace-inactive { + display: none; +} +.pace .pace-progress { + position: fixed; + top: 0; + right: 100%; + z-index: 2000; + + width: 100%; + height: 2px; + + background: $primary-color; +} diff --git a/etc/ghost/themes/casper/assets/scss/components/_media-queries.scss b/etc/ghost/themes/casper/assets/scss/components/_media-queries.scss new file mode 100755 index 0000000..3f42f55 --- /dev/null +++ b/etc/ghost/themes/casper/assets/scss/components/_media-queries.scss @@ -0,0 +1,225 @@ +// ------------------------------ +// MEDIA QUERIES +// ------------------------------ + +@media only screen and (min-width:1824px) { + main { + padding: 2.5rem 11rem; + } + + .content { + margin: 0 7rem; + } +} + +// ------------------------------ +// < 1024px (Tablet) +// ------------------------------ + +@media all and (max-width:1024px) { + /* disabling element, too much information*/ + + .pace, + span.post.tags, + .post.reading-time, + .post.related { + display: none; + } + + #search-container { + display: none !important; + }/* Enable element special for little devices */ + + #profile-resume { + display: inherit; + }/* off canvas */ + + #menu-button { + position: fixed; + top: .5rem; + left: 13.5rem; + z-index: 2; + display: block; + transition: all $aside-animation-time; + + &.expanded { + left: .85rem; + } + + > a { + > i { + color: $hover-color; + } + } + } + + .cover { + width: 16rem; + transition: width $aside-animation-time $aside-animation, + transform $aside-animation-time $aside-animation, + border-right $aside-animation-time * 1.8 $aside-animation, + box-shadow $aside-animation-time * 1.8 $aside-animation; + transform: translate3d(-16rem, 0, 0); + border-right: 0; + box-shadow: none; + + &.expanded { + width: 16rem; + transform: translate3d(0, 0, 0); + border-right: 1px solid $gray; + box-shadow: 11px -10px 1px -9px $gray-light; + } + + &.animated { + transition: all $aside-animation-time; + } + } + + .profile { + width: 100%; + height: 100%; + max-width: 100%; + + &.contact { + > nav { + padding: 0; + } + } + + > a { + > img { + width: 8rem; + margin-bottom: 1rem; + } + + > h1 { + margin: 0 + } + } + + > p { + display: none; + } + + .divider { + display: none; + } + } + + .navigation { + &.left { + margin-top: 1.2rem; + margin-bottom: 1rem; + .links { + > li { + margin: 0; + + > a { + padding: .85rem 1.25rem; + font-size: 1rem; + } + } + } + } + } + + #avatar-link { + display: inline-block; + margin-top: 4rem; + } + + .navigation { + width: 100%; + + &.right { + margin: 0; + } + + &.left { + .links.item { + width: 100%; + } + } + } + + main { + left: 0; + transition: all $aside-animation-time; + transform: translate3d(0, 0, 0); + + &.expanded { + transform: translate3d(14rem, 0, 0); + } + } +} + +// ------------------------------ +// < 480px (Mobile) +// ------------------------------ + +@media all and (max-width:480px) { + .post .tags, + .post .meta > time, + .pagination > span { + display: none; + } + + main { + padding: 1rem 0; + } + + .btn { + display: block; + margin-bottom: .4em; + } + + .mayday { + width: auto; + + > h2 { + font-size: 20px; + line-height: 25px; + } + } + + .astronaut { + background-size: 55%; + } + + .astro-wrap { + margin: -5% auto; + } + + .astro-wrap, + .astronaut { + height: 10rem; + } + + #panic-button { + margin-bottom: 1rem; + } + + .posts.newer, + .posts.older { + margin: 1rem 0; + } + + #posts-list { + margin: 3rem 0; + text-align: center; + > li { + margin-bottom: 2rem; + + > time { + display: block; + float: none; + letter-spacing: 1px; + padding: 0; + } + } + } + + #post-title { + margin: 2.5rem 0; + } +} diff --git a/etc/ghost/themes/casper/assets/scss/components/_page-error.scss b/etc/ghost/themes/casper/assets/scss/components/_page-error.scss new file mode 100755 index 0000000..baa0173 --- /dev/null +++ b/etc/ghost/themes/casper/assets/scss/components/_page-error.scss @@ -0,0 +1,43 @@ +body[data-page="error"] { + width: 100%; + height: 100%; + font-size: 1rem; + font-weight: normal; + line-height: 25px; + text-align: center; + + @extend %background-filter; + > article { + @extend %center-absolute; + } +} + +.mayday { + width: 500px; + margin: 150px auto 20px; + + > h2 { + font-size: 24px; + line-height: 35px; + color: $gray-lightest; + text-shadow: 0 1px 1px rgba(0, 0, 0, .4); + } +} + +.astro-wrap { + position: relative; + width: $astronaut-size; + height: $astronaut-size * 1.6; + margin: auto; +} + +.astronaut { + position: absolute; + top: 0; + left: 0; + width: $astronaut-size; + height: $astronaut-size * 1.6; + transform: translate(0, 50px); + animation: move 10s infinite; + background: url('/assets/img/pikachu.jpg') center / cover no-repeat; +} diff --git a/etc/ghost/themes/casper/assets/scss/components/_pagination.scss b/etc/ghost/themes/casper/assets/scss/components/_pagination.scss new file mode 100755 index 0000000..2bcc5af --- /dev/null +++ b/etc/ghost/themes/casper/assets/scss/components/_pagination.scss @@ -0,0 +1,19 @@ +.pagination { + margin: 0 0 2.5rem; +} + +.posts { + + &.index { + font-size: .8rem; + color: $gray-dark; + } + + &.newer { + margin-right: 1rem; + } + + &.older { + margin-left: 1rem; + } +} diff --git a/etc/ghost/themes/casper/assets/scss/components/_post.scss b/etc/ghost/themes/casper/assets/scss/components/_post.scss new file mode 100755 index 0000000..77fe954 --- /dev/null +++ b/etc/ghost/themes/casper/assets/scss/components/_post.scss @@ -0,0 +1,138 @@ +#posts-list { + padding: 0; + margin: 5rem 0; + list-style-type: none; + + > li { + margin-left: 1rem; + margin-bottom: 1.25rem; + + > time { + float: right; + text-transform: uppercase; + color: #777; + font-size: 10px; + letter-spacing: 2px; + } + + > a { + @extend %dotted-link; + } + + > span > a { + bottom: 2px; + } + } +} + +#post-content { + + a:not(.title-link) { + @extend %dotted-link; + } + + a.title-link { + color: $primary-color; + } + + .deep-link a:before { + display: inline-block; + content: "#"; + margin-left: -30px; + width: 30px; + color: $white; + transition: all 0.2s; + font-family: $quote-font; + } + + .deep-link a:hover::before { + color: rgba($primary-color, .8); + } +} + +.post { + > p { + > img { + border-radius: $border-radius; + display: block; + margin: 1.5rem auto; + max-width: 100%; + text-align: center; + width: auto; + } + } + + pre { + width: 95%; + } + + > header { + text-align: center; + } + + &.meta { + margin: .7em 0; + font-size: .85rem; + color: $gray; + } + + &.tags { + > a { + &:first-child { + margin-left: .2rem; + } + + &:last-child { + margin-right: .2rem; + } + padding: .15rem .25rem; + font-size: .55rem; + transition: all $aside-animation-time; + text-transform: uppercase; + color: $gray-lightest; + border-radius: .25rem; + background-color: rgba($primary-color, .45); + + &:hover { + background-color: rgba($primary-color, 1); + } + } + } + + &.author { + img { + display: inline-block; + height: 22px; + margin: 0 .5rem; + vertical-align: middle; + border: 0; + box-shadow: none; + } + } + + &.comments { + padding: 2rem 0 0; + } + + &.related { + line-height: 1; + display: flex; + padding: 4rem 0 2rem; + justify-content: space-between; + } +} + +#post-image { + max-width: 100%; + margin-top: 1rem; +} + +#post-title { + font-size: $font-title; + margin: 3rem 0 2.5rem; + transition: all $aside-animation-time; + + &:hover { + color: $hover-color; + } +} diff --git a/etc/ghost/themes/casper/assets/scss/components/_search.scss b/etc/ghost/themes/casper/assets/scss/components/_search.scss new file mode 100755 index 0000000..f7d6236 --- /dev/null +++ b/etc/ghost/themes/casper/assets/scss/components/_search.scss @@ -0,0 +1,63 @@ +#search-form { + padding: .25rem 0; +} + +#search-field { + width: 12.5rem; + height: 1rem; + padding: 4% 5px 4% 18px; + transition: border .3s ease-in; + border-radius: 1.68rem; + + &:focus, + &:hover { + border: 1.5px solid lighten($hover-color, 5%); + } +} + +#search-results { + text-align: center; + + &.active { + margin-top: 3rem; + margin-bottom: 9rem; + } + + > p { + margin-bottom: 3rem; + font-size: 1.2rem; + } +} + +.result { + display: block; + padding: 1rem; + margin-bottom: 1.3rem; + text-decoration: none; + word-wrap: break-word; + border: 1px solid $primary-color; + border-radius: 5px; + + > h2, + > h4 { + color: $gray-darker; + } + + &:hover { + transition: .5s; + + > h2, + > h4 { + transition: .5s; + color: $hover-color; + } + } +} + +.icon-search { + position: absolute; + top: 31.5rem; + left: 16.5rem; + color: $gray; + text-shadow: 1px 1px 0 $gray; +} diff --git a/etc/ghost/themes/casper/assets/scss/modules/_buttons.scss b/etc/ghost/themes/casper/assets/scss/modules/_buttons.scss new file mode 100755 index 0000000..c12b8b4 --- /dev/null +++ b/etc/ghost/themes/casper/assets/scss/modules/_buttons.scss @@ -0,0 +1,60 @@ +img, +.btn { + &.square { + border-radius: 0; + } + + &.rounded { + border-radius: 50%; + } +} + +.btn { + border: 1px solid $primary-color; + border-radius: 20px; + color: $primary-color; + font-size: .9em; + -webkit-font-smoothing: antialiased; + font-weight: bold; + letter-spacing: 1px; + padding: 10px 20px; + text-shadow: none; + + &:hover { + border-color: darken($primary-color, 15%); + color: darken($primary-color, 15%); + } + + &.small { + font-size: .7em; + padding: 8px 12px; + } + + &.large { + font-size: 1.1em; + padding: 10px 24px; + } + + &.secondary { + border-color: $secondary-color; + color: $secondary-color; + + &:hover { + border-color: darken($secondary-color, 15%); + color: darken($secondary-color, 15%); + } + } +} + +#menu-button { + display: none; + + > a { + > i { + color: $gray-lightest; + font-size: 36px; + position: relative; + top: 3px; + } + } +} diff --git a/etc/ghost/themes/casper/assets/scss/modules/_effects.scss b/etc/ghost/themes/casper/assets/scss/modules/_effects.scss new file mode 100755 index 0000000..0f4f28f --- /dev/null +++ b/etc/ghost/themes/casper/assets/scss/modules/_effects.scss @@ -0,0 +1,197 @@ +/* Grow Rotate */ +.hvr-grow-rotate { + display: inline-block; + + -moz-osx-font-smoothing: grayscale; + + -webkit-transition-duration: .3s; + transition-duration: .3s; + -webkit-transition-property: transform; + transition-property: transform; + -webkit-transform: translateZ(0); + transform: translateZ(0); + vertical-align: middle; + + box-shadow: 0 0 1px rgba(0, 0, 0, 0); + + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} +.hvr-grow-rotate:hover, +.hvr-grow-rotate:focus, +.hvr-grow-rotate:active { + -webkit-transform: scale(1.1) rotate(4deg); + transform: scale(1.1) rotate(4deg); +} + +/* Buzz Out */ +@-webkit-keyframes hvr-buzz-out { + 10% { + -webkit-transform: translateX(3px) rotate(2deg); + transform: translateX(3px) rotate(2deg); + } + 20% { + -webkit-transform: translateX(-3px) rotate(-2deg); + transform: translateX(-3px) rotate(-2deg); + } + 30% { + -webkit-transform: translateX(3px) rotate(2deg); + transform: translateX(3px) rotate(2deg); + } + 40% { + -webkit-transform: translateX(-3px) rotate(-2deg); + transform: translateX(-3px) rotate(-2deg); + } + 50% { + -webkit-transform: translateX(2px) rotate(1deg); + transform: translateX(2px) rotate(1deg); + } + 60% { + -webkit-transform: translateX(-2px) rotate(-1deg); + transform: translateX(-2px) rotate(-1deg); + } + 70% { + -webkit-transform: translateX(2px) rotate(1deg); + transform: translateX(2px) rotate(1deg); + } + 80% { + -webkit-transform: translateX(-2px) rotate(-1deg); + transform: translateX(-2px) rotate(-1deg); + } + 90% { + -webkit-transform: translateX(1px) rotate(0); + transform: translateX(1px) rotate(0); + } + 100% { + -webkit-transform: translateX(-1px) rotate(0); + transform: translateX(-1px) rotate(0); + } +} +@keyframes hvr-buzz-out { + 10% { + -webkit-transform: translateX(3px) rotate(2deg); + transform: translateX(3px) rotate(2deg); + } + 20% { + -webkit-transform: translateX(-3px) rotate(-2deg); + transform: translateX(-3px) rotate(-2deg); + } + 30% { + -webkit-transform: translateX(3px) rotate(2deg); + transform: translateX(3px) rotate(2deg); + } + 40% { + -webkit-transform: translateX(-3px) rotate(-2deg); + transform: translateX(-3px) rotate(-2deg); + } + 50% { + -webkit-transform: translateX(2px) rotate(1deg); + transform: translateX(2px) rotate(1deg); + } + 60% { + -webkit-transform: translateX(-2px) rotate(-1deg); + transform: translateX(-2px) rotate(-1deg); + } + 70% { + -webkit-transform: translateX(2px) rotate(1deg); + transform: translateX(2px) rotate(1deg); + } + 80% { + -webkit-transform: translateX(-2px) rotate(-1deg); + transform: translateX(-2px) rotate(-1deg); + } + 90% { + -webkit-transform: translateX(1px) rotate(0); + transform: translateX(1px) rotate(0); + } + 100% { + -webkit-transform: translateX(-1px) rotate(0); + transform: translateX(-1px) rotate(0); + } +} +.hvr-buzz-out { + display: inline-block; + + -moz-osx-font-smoothing: grayscale; + + -webkit-transform: translateZ(0); + transform: translateZ(0); + vertical-align: middle; + + box-shadow: 0 0 1px rgba(0, 0, 0, 0); + + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} +.hvr-buzz-out:hover, +.hvr-buzz-out:focus, +.hvr-buzz-out:active { + -webkit-animation-name: hvr-buzz-out; + animation-name: hvr-buzz-out; + -webkit-animation-duration: .75s; + animation-duration: .75s; + -webkit-animation-timing-function: linear; + animation-timing-function: linear; + -webkit-animation-iteration-count: 1; + animation-iteration-count: 1; +} +@keyframes move { + 0% { + transform: translate(0, 50px); + } + 50% { + transform: translate(20px, 100px); + } + 100% { + transform: translate(0, 50px); + } +} +@keyframes blink { + 0% { + top: 50px; + left: 0; + } + 50% { + top: 100px; + left: 20px; + } + 100% { + top: 50px; + left: 0; + } +} +@keyframes flicker { + 0% { + opacity: .9; + } + 30% { + opacity: .97; + } + 40% { + opacity: 1; + } + 80% { + opacity: .9; + } + 88% { + opacity: .98; + } + 90% { + opacity: .94; + } + 93% { + opacity: .9; + } + 95% { + opacity: .99; + } + 96% { + opacity: .93; + } + 98% { + opacity: 1; + } + 99% { + opacity: .93; + } +} diff --git a/etc/ghost/themes/casper/assets/scss/modules/_fonts.scss b/etc/ghost/themes/casper/assets/scss/modules/_fonts.scss new file mode 100755 index 0000000..315ef2a --- /dev/null +++ b/etc/ghost/themes/casper/assets/scss/modules/_fonts.scss @@ -0,0 +1,894 @@ +/* +* Foundation Icons v 3.0 +* Made by ZURB 2013 http://zurb.com/playground/foundation-icon-fonts-3 +* MIT License +*/ +@font-face { + font-family: "foundation-icons"; + font-style: normal; + font-weight: normal; + src: url("../fonts/foundation-icons/foundation-icons.eot"); + src: url("../fonts/foundation-icons/foundation-icons.eot?#iefix") format("embedded-opentype"), url("../fonts/foundation-icons/foundation-icons.woff") format("woff"), url("../fonts/foundation-icons/foundation-icons.ttf") format("truetype"), url("../fonts/foundation-icons/foundation-icons.svg#fontcustom") format("svg"); +} +.icon:before, +.icon-reverse:after { + display: inline-block; + + font-family: "foundation-icons"; + -webkit-font-smoothing: antialiased; + font-style: normal; + font-weight: normal; + font-variant: normal; + line-height: 1; + + text-decoration: inherit; + text-transform: none; +} +.icon-search { + position: static !important; +} +.icon-search:before { + position: absolute; + right: 95px; + margin-top: 32px; + content: "\f16c"; +} +.icon-address-book:before { + content: "\f100"; +} +.icon-alert:before { + content: "\f101"; +} +.icon-align-center:before { + content: "\f102"; +} +.icon-align-justify:before { + content: "\f103"; +} +.icon-align-left:before { + content: "\f104"; +} +.icon-align-right:before { + content: "\f105"; +} +.icon-anchor:before { + content: "\f106"; +} +.icon-annotate:before { + content: "\f107"; +} +.icon-archive:before { + content: "\f108"; +} +.icon-arrow-down:before { + content: "\f109"; +} +.icon-arrow-left:before { + content: "\f10a"; +} +.icon-arrow-right:before { + content: "\f10b"; +} +.icon-arrow-up:before { + content: "\f10c"; +} +.icon-arrows-compress:before { + content: "\f10d"; +} +.icon-arrows-expand:before { + content: "\f10e"; +} +.icon-arrows-in:before { + content: "\f10f"; +} +.icon-arrows-out:before { + content: "\f110"; +} +.icon-asl:before { + content: "\f111"; +} +.icon-asterisk:before { + content: "\f112"; +} +.icon-at-sign:before { + content: "\f113"; +} +.icon-background-color:before { + content: "\f114"; +} +.icon-battery-empty:before { + content: "\f115"; +} +.icon-battery-full:before { + content: "\f116"; +} +.icon-battery-half:before { + content: "\f117"; +} +.icon-bitcoin-circle:before { + content: "\f118"; +} +.icon-bitcoin:before { + content: "\f119"; +} +.icon-blind:before { + content: "\f11a"; +} +.icon-bluetooth:before { + content: "\f11b"; +} +.icon-bold:before { + content: "\f11c"; +} +.icon-book-bookmark:before { + content: "\f11d"; +} +.icon-book:before { + content: "\f11e"; +} +.icon-bookmark:before { + content: "\f11f"; +} +.icon-braille:before { + content: "\f120"; +} +.icon-burst-new:before { + content: "\f121"; +} +.icon-burst-sale:before { + content: "\f122"; +} +.icon-burst:before { + content: "\f123"; +} +.icon-calendar:before { + content: "\f124"; +} +.icon-camera:before { + content: "\f125"; +} +.icon-check:before { + content: "\f126"; +} +.icon-checkbox:before { + content: "\f127"; +} +.icon-clipboard-notes:before { + content: "\f128"; +} +.icon-clipboard-pencil:before { + content: "\f129"; +} +.icon-clipboard:before { + content: "\f12a"; +} +.icon-clock:before { + content: "\f12b"; +} +.icon-closed-caption:before { + content: "\f12c"; +} +.icon-cloud:before { + content: "\f12d"; +} +.icon-comment-minus:before { + content: "\f12e"; +} +.icon-comment-quotes:before { + content: "\f12f"; +} +.icon-comment-video:before { + content: "\f130"; +} +.icon-comment:before { + content: "\f131"; +} +.icon-comments:before { + content: "\f132"; +} +.icon-compass:before { + content: "\f133"; +} +.icon-contrast:before { + content: "\f134"; +} +.icon-credit-card:before { + content: "\f135"; +} +.icon-crop:before { + content: "\f136"; +} +.icon-crown:before { + content: "\f137"; +} +.icon-css3:before { + content: "\f138"; +} +.icon-database:before { + content: "\f139"; +} +.icon-die-five:before { + content: "\f13a"; +} +.icon-die-four:before { + content: "\f13b"; +} +.icon-die-one:before { + content: "\f13c"; +} +.icon-die-six:before { + content: "\f13d"; +} +.icon-die-three:before { + content: "\f13e"; +} +.icon-die-two:before { + content: "\f13f"; +} +.icon-dislike:before { + content: "\f140"; +} +.icon-dollar-bill:before { + content: "\f141"; +} +.icon-dollar:before { + content: "\f142"; +} +.icon-download:before { + content: "\f143"; +} +.icon-eject:before { + content: "\f144"; +} +.icon-elevator:before { + content: "\f145"; +} +.icon-euro:before { + content: "\f146"; +} +.icon-eye:before { + content: "\f147"; +} +.icon-fast-forward:before { + content: "\f148"; +} +.icon-female-symbol:before { + content: "\f149"; +} +.icon-female:before { + content: "\f14a"; +} +.icon-filter:before { + content: "\f14b"; +} +.icon-first-aid:before { + content: "\f14c"; +} +.icon-flag:before { + content: "\f14d"; +} +.icon-folder-add:before { + content: "\f14e"; +} +.icon-folder-lock:before { + content: "\f14f"; +} +.icon-folder:before { + content: "\f150"; +} +.icon-foot:before { + content: "\f151"; +} +.icon-foundation:before { + content: "\f152"; +} +.icon-graph-bar:before { + content: "\f153"; +} +.icon-graph-horizontal:before { + content: "\f154"; +} +.icon-graph-pie:before { + content: "\f155"; +} +.icon-graph-trend:before { + content: "\f156"; +} +.icon-guide-dog:before { + content: "\f157"; +} +.icon-hearing-aid:before { + content: "\f158"; +} +.icon-heart:before { + content: "\f159"; +} +.icon-home:before { + content: "\f15a"; +} +.icon-html5:before { + content: "\f15b"; +} +.icon-indent-less:before { + content: "\f15c"; +} +.icon-indent-more:before { + content: "\f15d"; +} +.icon-info:before { + content: "\f15e"; +} +.icon-italic:before { + content: "\f15f"; +} +.icon-key:before { + content: "\f160"; +} +.icon-laptop:before { + content: "\f161"; +} +.icon-layout:before { + content: "\f162"; +} +.icon-lightbulb:before { + content: "\f163"; +} +.icon-like:before { + content: "\f164"; +} +.icon-link:before { + content: "\f165"; +} +.icon-list-bullet:before { + content: "\f166"; +} +.icon-list-number:before { + content: "\f167"; +} +.icon-list-thumbnails:before { + content: "\f168"; +} +.icon-list:before { + content: "\f169"; +} +.icon-lock:before { + content: "\f16a"; +} +.icon-loop:before { + content: "\f16b"; +} +.icon-magnifying-glass:before { + content: "\f16c"; +} +.icon-mail:before { + content: "\f16d"; +} +.icon-male-female:before { + content: "\f16e"; +} +.icon-male-symbol:before { + content: "\f16f"; +} +.icon-male:before { + content: "\f170"; +} +.icon-map:before { + content: "\f171"; +} +.icon-marker:before { + content: "\f172"; +} +.icon-megaphone:before { + content: "\f173"; +} +.icon-microphone:before { + content: "\f174"; +} +.icon-minus-circle:before { + content: "\f175"; +} +.icon-minus:before { + content: "\f176"; +} +.icon-mobile-signal:before { + content: "\f177"; +} +.icon-mobile:before { + content: "\f178"; +} +.icon-monitor:before { + content: "\f179"; +} +.icon-mountains:before { + content: "\f17a"; +} +.icon-music:before { + content: "\f17b"; +} +.icon-next:before { + content: "\f17c"; +} +.icon-no-dogs:before { + content: "\f17d"; +} +.icon-no-smoking:before { + content: "\f17e"; +} +.icon-page-add:before { + content: "\f17f"; +} +.icon-page-copy:before { + content: "\f180"; +} +.icon-page-csv:before { + content: "\f181"; +} +.icon-page-delete:before { + content: "\f182"; +} +.icon-page-doc:before { + content: "\f183"; +} +.icon-page-edit:before { + content: "\f184"; +} +.icon-page-export-csv:before { + content: "\f185"; +} +.icon-page-export-doc:before { + content: "\f186"; +} +.icon-page-export-pdf:before { + content: "\f187"; +} +.icon-page-export:before { + content: "\f188"; +} +.icon-page-filled:before { + content: "\f189"; +} +.icon-page-multiple:before { + content: "\f18a"; +} +.icon-page-pdf:before { + content: "\f18b"; +} +.icon-page-remove:before { + content: "\f18c"; +} +.icon-page-search:before { + content: "\f18d"; +} +.icon-page:before { + content: "\f18e"; +} +.icon-paint-bucket:before { + content: "\f18f"; +} +.icon-paperclip:before { + content: "\f190"; +} +.icon-pause:before { + content: "\f191"; +} +.icon-paw:before { + content: "\f192"; +} +.icon-paypal:before { + content: "\f193"; +} +.icon-pencil:before { + content: "\f194"; +} +.icon-photo:before { + content: "\f195"; +} +.icon-play-circle:before { + content: "\f196"; +} +.icon-play-video:before { + content: "\f197"; +} +.icon-play:before { + content: "\f198"; +} +.icon-plus:before { + content: "\f199"; +} +.icon-pound:before { + content: "\f19a"; +} +.icon-power:before { + content: "\f19b"; +} +.icon-previous:before { + content: "\f19c"; +} +.icon-price-tag:before { + content: "\f19d"; +} +.icon-pricetag-multiple:before { + content: "\f19e"; +} +.icon-print:before { + content: "\f19f"; +} +.icon-prohibited:before { + content: "\f1a0"; +} +.icon-projection-screen:before { + content: "\f1a1"; +} +.icon-puzzle:before { + content: "\f1a2"; +} +.icon-quote:before { + content: "\f1a3"; +} +.icon-record:before { + content: "\f1a4"; +} +.icon-refresh:before { + content: "\f1a5"; +} +.icon-results-demographics:before { + content: "\f1a6"; +} +.icon-results:before { + content: "\f1a7"; +} +.icon-rewind-ten:before { + content: "\f1a8"; +} +.icon-rewind:before { + content: "\f1a9"; +} +.icon-rss:before { + content: "\f1aa"; +} +.icon-safety-cone:before { + content: "\f1ab"; +} +.icon-save:before { + content: "\f1ac"; +} +.icon-share:before { + content: "\f1ad"; +} +.icon-sheriff-badge:before { + content: "\f1ae"; +} +.icon-shield:before { + content: "\f1af"; +} +.icon-shopping-bag:before { + content: "\f1b0"; +} +.icon-shopping-cart:before { + content: "\f1b1"; +} +.icon-shuffle:before { + content: "\f1b2"; +} +.icon-skull:before { + content: "\f1b3"; +} +.icon-social-500px:before { + content: "\f1b4"; +} +.icon-social-adobe:before { + content: "\f1b5"; +} +.icon-social-amazon:before { + content: "\f1b6"; +} +.icon-social-android:before { + content: "\f1b7"; +} +.icon-social-apple:before { + content: "\f1b8"; +} +.icon-social-behance:before { + content: "\f1b9"; +} +.icon-social-bing:before { + content: "\f1ba"; +} +.icon-social-blogger:before { + content: "\f1bb"; +} +.icon-social-delicious:before { + content: "\f1bc"; +} +.icon-social-designer-news:before { + content: "\f1bd"; +} +.icon-social-deviant-art:before { + content: "\f1be"; +} +.icon-social-digg:before { + content: "\f1bf"; +} +.icon-social-dribbble:before { + content: "\f1c0"; +} +.icon-social-drive:before { + content: "\f1c1"; +} +.icon-social-dropbox:before { + content: "\f1c2"; +} +.icon-social-evernote:before { + content: "\f1c3"; +} +.icon-social-facebook:before { + content: "\f1c4"; +} +.icon-social-flickr:before { + content: "\f1c5"; +} +.icon-social-forrst:before { + content: "\f1c6"; +} +.icon-social-foursquare:before { + content: "\f1c7"; +} +.icon-social-game-center:before { + content: "\f1c8"; +} +.icon-social-github:before { + content: "\f1c9"; +} +.icon-social-google-plus:before { + content: "\f1ca"; +} +.icon-social-hacker-news:before { + content: "\f1cb"; +} +.icon-social-hi5:before { + content: "\f1cc"; +} +.icon-social-instagram:before { + content: "\f1cd"; +} +.icon-social-joomla:before { + content: "\f1ce"; +} +.icon-social-lastfm:before { + content: "\f1cf"; +} +.icon-social-linkedin:before { + content: "\f1d0"; +} +.icon-social-medium:before { + content: "\f1d1"; +} +.icon-social-myspace:before { + content: "\f1d2"; +} +.icon-social-orkut:before { + content: "\f1d3"; +} +.icon-social-path:before { + content: "\f1d4"; +} +.icon-social-picasa:before { + content: "\f1d5"; +} +.icon-social-pinterest:before { + content: "\f1d6"; +} +.icon-social-rdio:before { + content: "\f1d7"; +} +.icon-social-reddit:before { + content: "\f1d8"; +} +.icon-social-skillshare:before { + content: "\f1d9"; +} +.icon-social-skype:before { + content: "\f1da"; +} +.icon-social-smashing-mag:before { + content: "\f1db"; +} +.icon-social-snapchat:before { + content: "\f1dc"; +} +.icon-social-spotify:before { + content: "\f1dd"; +} +.icon-social-squidoo:before { + content: "\f1de"; +} +.icon-social-stack-overflow:before { + content: "\f1df"; +} +.icon-social-steam:before { + content: "\f1e0"; +} +.icon-social-stumbleupon:before { + content: "\f1e1"; +} +.icon-social-treehouse:before { + content: "\f1e2"; +} +.icon-social-tumblr:before { + content: "\f1e3"; +} +.icon-social-twitter:before { + content: "\f1e4"; +} +.icon-social-twitter-post:after { + display: inline-block; + height: 36px; + margin-left: 9px; + + font-size: 26px; + + content: "\f1e4"; + vertical-align: middle; +} +.icon-social-vimeo:before { + content: "\f1e5"; +} +.icon-social-windows:before { + content: "\f1e6"; +} +.icon-social-xbox:before { + content: "\f1e7"; +} +.icon-social-yahoo:before { + content: "\f1e8"; +} +.icon-social-yelp:before { + content: "\f1e9"; +} +.icon-social-youtube:before { + content: "\f1ea"; +} +.icon-social-zerply:before { + content: "\f1eb"; +} +.icon-social-zurb:before { + content: "\f1ec"; +} +.icon-sound:before { + content: "\f1ed"; +} +.icon-star:before { + content: "\f1ee"; +} +.icon-stop:before { + content: "\f1ef"; +} +.icon-strikethrough:before { + content: "\f1f0"; +} +.icon-subscript:before { + content: "\f1f1"; +} +.icon-superscript:before { + content: "\f1f2"; +} +.icon-tablet-landscape:before { + content: "\f1f3"; +} +.icon-tablet-portrait:before { + content: "\f1f4"; +} +.icon-target-two:before { + content: "\f1f5"; +} +.icon-target:before { + content: "\f1f6"; +} +.icon-telephone-accessible:before { + content: "\f1f7"; +} +.icon-telephone:before { + content: "\f1f8"; +} +.icon-text-color:before { + content: "\f1f9"; +} +.icon-thumbnails:before { + content: "\f1fa"; +} +.icon-ticket:before { + content: "\f1fb"; +} +.icon-torso-business:before { + content: "\f1fc"; +} +.icon-torso-female:before { + content: "\f1fd"; +} +.icon-torso:before { + content: "\f1fe"; +} +.icon-torsos-all-female:before { + content: "\f1ff"; +} +.icon-torsos-all:before { + content: "\f200"; +} +.icon-torsos-female-male:before { + content: "\f201"; +} +.icon-torsos-male-female:before { + content: "\f202"; +} +.icon-torsos:before { + content: "\f203"; +} +.icon-trash:before { + content: "\f204"; +} +.icon-trees:before { + content: "\f205"; +} +.icon-trophy:before { + content: "\f206"; +} +.icon-underline:before { + content: "\f207"; +} +.icon-universal-access:before { + content: "\f208"; +} +.icon-unlink:before { + content: "\f209"; +} +.icon-unlock:before { + content: "\f20a"; +} +.icon-upload-cloud:before { + content: "\f20b"; +} +.icon-upload:before { + content: "\f20c"; +} +.icon-usb:before { + content: "\f20d"; +} +.icon-video:before { + content: "\f20e"; +} +.icon-volume-none:before { + content: "\f20f"; +} +.icon-volume-strike:before { + content: "\f210"; +} +.icon-volume:before { + content: "\f211"; +} +.icon-web:before { + content: "\f212"; +} +.icon-wheelchair:before { + content: "\f213"; +} +.icon-widget:before { + content: "\f214"; +} +.icon-wrench:before { + content: "\f215"; +} +.icon-x-circle:before { + content: "\f216"; +} +.icon-x:before { + content: "\f217"; +} +.icon-yen:before { + content: "\f218"; +} +.icon-zoom-in:before { + content: "\f219"; +} +.icon-zoom-out:before { + content: "\f21a"; +} diff --git a/etc/ghost/themes/casper/assets/scss/modules/_forms.scss b/etc/ghost/themes/casper/assets/scss/modules/_forms.scss new file mode 100755 index 0000000..a021667 --- /dev/null +++ b/etc/ghost/themes/casper/assets/scss/modules/_forms.scss @@ -0,0 +1,33 @@ +*:focus { + outline: none; +} + +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"] { + background: $gray-lightest; + border: 1px solid $gray-light; + border-radius: $border-radius; + color: $gray-darker; + font-size: .9em; + padding: 1em; + width: 240px; + + @include placeholder { + color: $gray; + } + + &:focus { + border-color: $secondary-color; + } +} diff --git a/etc/ghost/themes/casper/assets/scss/modules/_global.scss b/etc/ghost/themes/casper/assets/scss/modules/_global.scss new file mode 100755 index 0000000..cbaacdf --- /dev/null +++ b/etc/ghost/themes/casper/assets/scss/modules/_global.scss @@ -0,0 +1,240 @@ +// ------------------------------ +// BASICS +// ------------------------------ + +html { + font-size: $unit * 1.125; + height: 100%; + max-height: 100%; + + &.expanded { + overflow-y: hidden; + } +} + +html, +body { + height: 100%; +} + +body { + color: $gray-darker; + font-family: $sans-font; +} + +mark { + background: $mark-color; + padding: .05em .2em; + border-radius: 3px; +} + +::selection { + background: lighten($secondary-color, 26%); +} + +hr { + border: 0; +} + +// ------------------------------ +// TYPOGRAPHY +// ------------------------------ + +a { + color: $link-color; + position: relative; + text-decoration: none; + transition: all $aside-animation-time; + + &:hover { + color: $hover-color; + } +} + +h1, +h2, +h3, +h4, +h5, +h6 { + color: $gray-darkest; + font-family: $serif-font; + -webkit-font-smoothing: antialiased; + font-weight: lighter; +} + +h1 { + font-size: $font-h1; + line-height: $line-height * 1.75; + margin: $margin-h1 0; +} + +h2 { + font-size: $font-h2; + margin: $margin-h2 0; +} + +h3 { + font-size: $font-h3; + margin: $margin-h3 0; +} + +h4 { + font-size: $font-h4; + margin: $margin-h4 0; +} + +h5 { + font-size: $font-h5; + margin: $margin-h5 0; +} + +h6 { + font-size: $font-h6; + margin: $margin-h6 0; +} + +p { + line-height: $line-height; + margin-bottom: 1.3rem; +} + +strong { + font-weight: bold; +} + +em { + font-style: italic; +} + +blockquote { + border-left: $gray-darkest .25rem solid; + margin: 2rem 0; + padding: 0 0 0 1.5rem; + + > p { + font-family: $quote-font; + -webkit-font-smoothing: antialiased; + font-style: italic; + letter-spacing: .01rem; + word-wrap: break-word; + } +} + +// ------------------------------ +// BASIC STYLING +// ------------------------------ + +ol, +ul { + margin: 0 0 1.3rem 2.5rem; + + li { + line-height: $line-height * 1.2; + margin: 0 0 .2rem; + } + + ol, + ul { + margin: .1rem 0 .2rem 2rem; + } +} + +ol { + list-style-type: decimal; +} + +ul { + list-style-type: disc; +} + +.block-heading { + @include column(12); + bottom: -15px; + font-size: .8rem; + font-weight: bold; + letter-spacing: 1px; + position: relative; + text-align: center; + text-transform: uppercase; +} + +.label { + padding: 8px 18px 9px; +} + +// ------------------------------ +// MAIN LAYOUT +// ------------------------------ + +main { + bottom: 0; + left: 22.5rem; + padding: 2rem 3rem; + position: absolute; + right: 0; + top: 0; + + > .content { + margin: 0 3.7rem; + padding: 2rem 0; + + > h1 { + margin-bottom: 2.7rem; + } + + > footer { + border-top: 2px solid $gray-light; + color: lighten($gray-dark, 10%); + display: block; + font-size: .7em; + padding: 2em 0 0; + } + } +} + +.divider { + border-top: 1px solid $divider-color; + margin: 10px auto; + + &.long { + width: 30%; + } + + &.short { + width: 15%; + } + + &.post { + border-top: 1px solid $gray-light; + margin: 1.7rem 0; + width: 30%; + } +} + +.container { + margin: 0 auto; + position: relative; + width: $total-width - $gutter-width; +} + +.copyright { + display: block; + margin-bottom: .7em; + + a { + color: lighten($gray-dark, 5%); + text-decoration: underline; + + &:hover { + color: $hover-color; + } + } +} + +.emoji { + height: 1em !important; + margin: 0 .05em 0 .1em !important; + vertical-align: -.1em !important; + width: 1em !important; +} diff --git a/etc/ghost/themes/casper/assets/scss/modules/_grid.scss b/etc/ghost/themes/casper/assets/scss/modules/_grid.scss new file mode 100755 index 0000000..93163a0 --- /dev/null +++ b/etc/ghost/themes/casper/assets/scss/modules/_grid.scss @@ -0,0 +1,65 @@ +///////////////// +// Semantic.gs // for SCSS: http://sass-lang.com/ +///////////////// + +// Defaults which you can freely override +$column-width: 60px; +$gutter-width: 20px; +$columns: 12; + +// Utility function — you should never need to modify this +@function gridsystem-width($columns: $columns) { + @return ($column-width * $columns) + ($gutter-width * $columns); +} +// Set $total-width to 100% for a fluid layout +$total-width: gridsystem-width($columns); +// Uncomment these two lines and the star-hack width/margin lines below to enable sub-pixel fix for IE6 & 7. See http: //tylertate.com/blog/2012/01/05/subpixel-rounding.html +// $min-width:999999; +// $correction: 0.5 / $min-width * 100; + +// The micro clearfix http://nicolasgallagher.com/micro-clearfix-hack/ +@mixin clearfix() { + *zoom: 1; + + &:before, + &:after { + display: table; + + content: ""; + } + &:after { + clear: both; + } +} +////////// +// GRID // +////////// + +body { + width: 100%; + + @include clearfix(); +} +@mixin row($columns: $columns) { + display: block; + width: $total-width*(($gutter-width + gridsystem-width($columns))/gridsystem-width($columns)); + margin: 0 $total-width*((($gutter-width*.5)/gridsystem-width($columns))*-1); + // *width: $total-width*(($gutter-width + gridsystem-width($columns))/gridsystem-width($columns))-$correction; + // *margin: 0 $total-width*((($gutter-width*.5)/gridsystem-width($columns))*-1)-$correction; + + @include clearfix(); +} +@mixin column($x, $columns: $columns) { + display: inline; + float: left; + width: $total-width*(((($gutter-width+$column-width)*$x)-$gutter-width) / gridsystem-width($columns)); + margin: 0 $total-width*(($gutter-width*.5)/gridsystem-width($columns)); + // *width: $total-width*(((($gutter-width+$column-width)*$x)-$gutter-width) / gridsystem-width($columns))-$correction; + // *margin: 0 $total-width*(($gutter-width*.5)/gridsystem-width($columns))-$correction; +} +@mixin push($offset: 1) { + margin-left: $total-width*((($gutter-width+$column-width)*$offset) / gridsystem-width($columns)) + $total-width*(($gutter-width*.5)/gridsystem-width($columns)); +} +@mixin pull($offset: 1) { + margin-right: $total-width*((($gutter-width+$column-width)*$offset) / gridsystem-width($columns)) + $total-width*(($gutter-width*.5)/gridsystem-width($columns)); +} diff --git a/etc/ghost/themes/casper/assets/scss/modules/_prism.scss b/etc/ghost/themes/casper/assets/scss/modules/_prism.scss new file mode 100644 index 0000000..7481c8e --- /dev/null +++ b/etc/ghost/themes/casper/assets/scss/modules/_prism.scss @@ -0,0 +1,131 @@ +/* http://prismjs.com/download.html?themes=prism-okaidia&languages=markup+css+clike+javascript+bash+c+coffeescript+css-extras+git+markdown+scss+sql&plugins=show-language */ + +code, +pre { + font-family: $code-font; + font-size: 90%; + line-height: 1.5; + text-align: left; + white-space: pre; + word-spacing: normal; + word-wrap: normal; + word-break: normal; + tab-size: 2; + hyphens: none; + color: black; + text-shadow: 0 1px white; + direction: ltr; +} + +pre::selection, +code::selection { + background: #b3d4fc; + text-shadow: none; +} + +@media print { + code, + pre { + text-shadow: none; + } + +} + +/* Code blocks */ +pre { + padding: 1em; + margin: 2.5rem 0; + overflow: auto; +} + +:not(pre) > code, +pre { + border: 1px solid rgba(0, 0, 0, .15); + background: #fbfaf8; +} + +/* Inline code */ +:not(pre) > code { + // slack style + padding: 1px 3px; + font-family: $code-font; + font-size: 72%; + line-height: 72%; + white-space: normal; + color: #c25; + border: 1px solid #e1e1e8; + border-radius: .3em; + background-color: #f7f7f9; + text-shadow: 0 1px #fff; +} + +.token.comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: #969896; +} + +.token.punctuation { + color: #333; +} + +.namespace { + opacity: .7; +} + +.token.property, +.token.tag, +.token.boolean, +.token.number, +.token.constant, +.token.symbol, +.token.deleted { + color: #0086b3; +} + +.token.selector, +.token.attr-name, +.token.string, +.token.char, +.token.builtin, +.token.inserted { + color: #183691; +} + +.token.operator, +.token.entity, +.token.url, +.language-css .token.string, +.style .token.string { + color: #a71d5d; +} + +.token.atrule, +.token.attr-value, +.token.keyword { + color: #a71d5d; +} + +.token.function { + color: #0086b3; +} + +.token.regex, +.token.important, +.token.variable { + color: #e90; +} + +.token.important, +.token.bold { + font-weight: bold; +} + +.token.italic { + font-style: italic; +} + +.token.entity { + cursor: help; +} diff --git a/etc/ghost/themes/casper/assets/scss/modules/_reset.scss b/etc/ghost/themes/casper/assets/scss/modules/_reset.scss new file mode 100755 index 0000000..58b0a1e --- /dev/null +++ b/etc/ghost/themes/casper/assets/scss/modules/_reset.scss @@ -0,0 +1,139 @@ +/* http://meyerweb.com/eric/tools/css/reset/ +v2.0 | 20110126 +License:none (public domain) */ + +html, +body, +div, +span, +applet, +object, +iframe, +h1, +h2, +h3, +h4, +h5, +h6, +p, +blockquote, +pre, +a, +abbr, +acronym, +address, +big, +cite, +code, +del, +dfn, +em, +img, +ins, +kbd, +q, +s, +samp, +small, +strike, +strong, +sub, +sup, +tt, +var, +b, +u, +i, +center, +dl, +dt, +dd, +ol, +ul, +li, +fieldset, +form, +label, +legend, +table, +caption, +tbody, +tfoot, +thead, +tr, +th, +td, +article, +aside, +canvas, +details, +embed, +figure, +figcaption, +footer, +header, +hgroup, +menu, +nav, +output, +ruby, +section, +summary, +time, +mark, +audio, +video { + padding: 0; + margin: 0; + + font: inherit; + font-size: 100%; + + vertical-align: baseline; + + border: 0; +} + +/* HTML5 display-role reset for older browsers */ +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +menu, +nav, +section { + display: block; +} +body { + line-height: $line-height; +} +ol, +ul { + list-style: none; +} +blockquote, +q { + quotes: none; +} +blockquote { + &:before, + &:after { + content: ""; + content: none; + } +} +q { + &:before, + &:after { + content: ""; + content: none; + } +} +table { + border-spacing: 0; + border-collapse: collapse; +} diff --git a/etc/ghost/themes/casper/assets/scss/modules/_utils.scss b/etc/ghost/themes/casper/assets/scss/modules/_utils.scss new file mode 100755 index 0000000..9309e31 --- /dev/null +++ b/etc/ghost/themes/casper/assets/scss/modules/_utils.scss @@ -0,0 +1,73 @@ +%dotted-link { + border-bottom: 1px dashed $primary-color; + line-height: 25px; + transition: all .5s; + padding: .1rem .25rem; + + &:hover { + color: $white; + border-color: $hover-color; + background: $primary-color; + } + + &:hover, + &:active { + outline: 0; + } +} + +%background-filter { + background: linear-gradient(150deg, $cover-secondary 30%, $cover-primary 70%) 0 0 / cover fixed; +} + +%center-absolute { + display: flex; + + align-items: center; + justify-content: center; +} + +%font-shadow { + text-shadow: 0 1px 1px rgba(000, 000, 000, .4); +} + +%btn-cover { + position: relative; + + display: block; + + font-size: .9em; + -webkit-font-smoothing: antialiased; + font-weight: bold; + + letter-spacing: 1px; + + opacity: .8; + color: $gray-lightest; + border-radius: 20px; + text-shadow: none; + + &:hover { + opacity: 1; + } +} + +%btn-cover-with-border { + @extend %btn-cover; + border: 1px solid $gray-lightest; +} + +@mixin placeholder { + ::-webkit-input-placeholder { + @content; + } + :-moz-placeholder { + @content; + } + ::-moz-placeholder { + @content; + } + :-ms-input-placeholder { + @content; + } +} diff --git a/etc/ghost/themes/casper/assets/scss/modules/_variables.scss b/etc/ghost/themes/casper/assets/scss/modules/_variables.scss new file mode 100755 index 0000000..71680d7 --- /dev/null +++ b/etc/ghost/themes/casper/assets/scss/modules/_variables.scss @@ -0,0 +1,66 @@ +/* COLORS */ + +$gray-darkest : #333; +$gray-darker : #666; +$gray-dark : #999; +$gray : #ccc; +$gray-light : #ddd; +$gray-lighter : #eee; +$gray-lightest : #f8f8f8; + +$black : #000000; +$white : #FFFFFF; +$cyan : #006064; +$red : #e74c3c; +$purple : #493252; +$slate : #3d4260; +$yellow : #FFC107; + +$primary-color : lighten($red, 5%); +$secondary-color : $yellow; + +$cover-secondary : rgba(#5f2c82, .1); +$cover-primary : rgba(#49a09d, .2); + +$link-color : $gray-darkest; +$hover-color : $primary-color; +$mark-color : #feda9e; + +$divider-color : rgba(255, 255, 255, .14); + +/* FONT */ + +$unit : 1rem; + +$sans-font : 'Raleway', sans-serif; +$serif-font : 'Roboto Slab', serif; +$code-font : Consolas, "Liberation Mono", Menlo, Courier, monospace; +$quote-font : "freight-text-pro", Georgia, Cambria, "Times New Roman", Times, serif; +$line-height : 1.75rem; + +$margin-title : $unit * 2.2; +$margin-h1 : $margin-title * .9; +$margin-h2 : $margin-title * .9; +$margin-h3 : $margin-title * .9; +$margin-h4 : $margin-title * .9; +$margin-h5 : $margin-title * .9; +$margin-h6 : $margin-title * .9; + +$font-title : $unit * 2.2; +$font-h1 : $font-title * .8; +$font-h2 : $font-h1 * .8; +$font-h3 : $font-h2 * .8; +$font-h4 : $font-h3 * .8; +$font-h5 : $font-h4 * .8; +$font-h6 : $font-h5 * .8; + +/* ASIDE */ + +$aside-animation-time : 350ms; +$aside-animation : cubic-bezier(.645,.045,.355,1); +$aside-width-collapsed : $unit * 22.5; + +/* OTHER */ + +$border-radius : 3px; +$astronaut-size : 20vh; diff --git a/etc/ghost/themes/casper/assets/scss/uno-zen.scss b/etc/ghost/themes/casper/assets/scss/uno-zen.scss new file mode 100755 index 0000000..c427aaa --- /dev/null +++ b/etc/ghost/themes/casper/assets/scss/uno-zen.scss @@ -0,0 +1,31 @@ +// ------------------------------ +// PRE +// ------------------------------ + +@import 'modules/variables.scss'; +@import 'modules/utils.scss'; + +// ------------------------------ +// MODULES +// ------------------------------ + +@import 'modules/reset.scss'; +@import 'modules/grid.scss'; +@import 'modules/global.scss'; +@import 'modules/fonts.scss'; +@import 'modules/buttons.scss'; +@import 'modules/forms.scss'; +@import 'modules/effects.scss'; +@import 'modules/prism.scss'; + +// ------------------------------ +// COMPONENTS +// ------------------------------ +// +@import 'components/aside.scss'; +@import 'components/page-error.scss'; +@import 'components/pagination.scss'; +@import 'components/post.scss'; +@import 'components/search.scss'; +@import 'components/loading.scss'; +@import 'components/media-queries.scss'; diff --git a/etc/ghost/themes/casper/bower.json b/etc/ghost/themes/casper/bower.json new file mode 100644 index 0000000..74c4f9b --- /dev/null +++ b/etc/ghost/themes/casper/bower.json @@ -0,0 +1,41 @@ +{ + "name": "uno-zen", + "description": "Minimalist and Elegant theme for Ghost", + "homepage": "https://github.com/kikobeats/uno-zen", + "version": "2.9.8", + "authors": [ + "Kiko Beats " + ], + "repository": { + "type": "git", + "url": "git+https://github.com/kikobeats/uno-zen.git" + }, + "bugs": { + "url": "https://github.com/Kikobeats/uno-zen/issues" + }, + "keywords": [ + "elegant", + "ghost", + "minimalism", + "theme", + "uno", + "zen" + ], + "dependencies": { + "fastclick": "latest", + "fitvids": "latest", + "instantclick": "latest", + "pace": "latest", + "reading-time": "latest" + }, + "ignore": [ + "**/.*", + "assets/vendor ", + "bower_components", + "node_modules", + "test", + "tests" + ], + "private": true, + "license": "MIT" +} diff --git a/etc/ghost/themes/casper/default.hbs b/etc/ghost/themes/casper/default.hbs new file mode 100755 index 0000000..c103091 --- /dev/null +++ b/etc/ghost/themes/casper/default.hbs @@ -0,0 +1,30 @@ + + + + {{meta_title}} + {{> meta}} + + + {{ghost_head}} + + + + {{> aside}} + +
+
+ {{{body}}} + {{> footer}} +
+
+ + {{ghost_foot}} + + + {{#is "post, page"}} + + {{/is}} + + diff --git a/etc/ghost/themes/casper/error.hbs b/etc/ghost/themes/casper/error.hbs new file mode 100755 index 0000000..96547f8 --- /dev/null +++ b/etc/ghost/themes/casper/error.hbs @@ -0,0 +1,24 @@ + + + + 404 - Page Not Found + {{> meta}} + + + {{ghost_head}} + + + + {{ghost_foot}} + + + diff --git a/etc/ghost/themes/casper/gulpfile.coffee b/etc/ghost/themes/casper/gulpfile.coffee new file mode 100755 index 0000000..08cab93 --- /dev/null +++ b/etc/ghost/themes/casper/gulpfile.coffee @@ -0,0 +1,105 @@ +'use strict' + +# -- Dependencies -------------------------------------------------------------- + +gulp = require 'gulp' +gulpif = require 'gulp-if' +gutil = require 'gulp-util' +sass = require 'gulp-sass' +concat = require 'gulp-concat' +coffee = require 'gulp-coffee' +header = require 'gulp-header' +uglify = require 'gulp-uglify' +cssnano = require 'gulp-cssnano' +addsrc = require 'gulp-add-src' +changed = require 'gulp-changed' +browserSync = require 'browser-sync' +pkg = require './package.json' +prefix = require 'gulp-autoprefixer' +strip = require 'gulp-strip-css-comments' +reload = browserSync.reload + +isProduction = process.env.NODE_ENV is 'production' + +# -- Files --------------------------------------------------------------------- + +dist = + name : pkg.name + css : 'assets/css' + js : 'assets/js' + +src = + sass: + main : 'assets/scss/' + dist.name + '.scss' + files : ['assets/scss/**/**'] + + js : + common : + main : ['assets/js/src/__init.coffee' + 'assets/js/src/main.coffee' + 'assets/js/src/cover.coffee'] + vendor : ['assets/vendor/fastclick/lib/fastclick.js' + 'assets/vendor/instantclick/instantclick.js' + 'assets/vendor/pace/pace.min.js' + 'assets/vendor/reading-time/build/readingTime.min.js'] + post : ['assets/vendor/fitvids/jquery.fitvids.js' + 'assets/js/src/prism.js'] + + css : + main : 'assets/css/' + dist.name + '.css' + vendor : [] + +banner = [ "/**" + " * <%= pkg.name %> - <%= pkg.description %>" + " * @version <%= pkg.version %>" + " * @link <%= pkg.homepage %>" + " * @author <%= pkg.author.name %> (<%= pkg.author.url %>)" + " * @license <%= pkg.license %>" + " */" + "" ].join("\n") + +# -- Tasks --------------------------------------------------------------------- + +gulp.task 'js-common', -> + gulp.src src.js.common.main + .pipe changed dist.js + .pipe coffee().on 'error', gutil.log + .pipe addsrc src.js.common.vendor + .pipe concat dist.name + '.common.js' + .pipe gulpif(isProduction, uglify()) + .pipe gulpif(isProduction, header banner, pkg: pkg) + .pipe gulp.dest dist.js + return + +gulp.task 'js-post', -> + gulp.src src.js.post + .pipe changed dist.js + .pipe concat dist.name + '.post.js' + .pipe gulpif(isProduction, uglify()) + .pipe gulpif(isProduction, header banner, pkg: pkg) + .pipe gulp.dest dist.js + return + +gulp.task 'css', -> + gulp.src src.css.vendor + .pipe changed dist.css + .pipe addsrc src.sass.main + .pipe sass().on('error', sass.logError) + .pipe concat '' + dist.name + '.css' + .pipe gulpif(isProduction, prefix()) + .pipe gulpif(isProduction, strip all: true) + .pipe gulpif(isProduction, cssnano()) + .pipe gulpif(isProduction, header banner, pkg: pkg) + .pipe gulp.dest dist.css + return + +gulp.task 'server', -> browserSync.init(pkg.browserSync) + +gulp.task 'js', ['js-common', 'js-post'] +gulp.task 'build', ['css', 'js'] + +gulp.task 'default', -> + gulp.start ['build', 'server'] + gulp.watch src.sass.files, ['css', reload] + gulp.watch src.js.common.main, ['js-common', reload] + gulp.watch src.js.post, ['js-post', reload] diff --git a/etc/ghost/themes/casper/index.hbs b/etc/ghost/themes/casper/index.hbs new file mode 100755 index 0000000..994c0de --- /dev/null +++ b/etc/ghost/themes/casper/index.hbs @@ -0,0 +1,14 @@ +{{!< default}} + +

Latest News

+
    + {{#foreach posts}} +
  1. + {{title}} + + {{tags separator=" "}} +
  2. + {{/foreach}} +
+ +{{pagination}} diff --git a/etc/ghost/themes/casper/package.json b/etc/ghost/themes/casper/package.json new file mode 100644 index 0000000..e4dcceb --- /dev/null +++ b/etc/ghost/themes/casper/package.json @@ -0,0 +1,55 @@ +{ + "name": "uno-zen", + "description": "Minimalist and Elegant theme for Ghost", + "homepage": "https://github.com/kikobeats/uno-zen", + "version": "2.9.8", + "author": { + "email": "josefrancisco.verdu@gmail.com", + "name": "Kiko Beats", + "url": "https://github.com/kikobeats" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/kikobeats/uno-zen.git" + }, + "bugs": { + "url": "https://github.com/Kikobeats/uno-zen/issues" + }, + "keywords": [ + "elegant", + "ghost", + "minimalism", + "theme", + "uno", + "zen" + ], + "devDependencies": { + "browser-sync": "latest", + "coffee-script": "latest", + "gulp": "latest", + "gulp-add-src": "latest", + "gulp-autoprefixer": "latest", + "gulp-changed": "latest", + "gulp-coffee": "latest", + "gulp-concat": "latest", + "gulp-cssnano": "latest", + "gulp-header": "latest", + "gulp-if": "latest", + "gulp-sass": "latest", + "gulp-strip-css-comments": "latest", + "gulp-uglify": "latest", + "gulp-util": "latest" + }, + "engines": { + "node": ">= 8" + }, + "license": "MIT", + "browserSync": { + "files": [ + "**/*.html", + "assets/**/*.*" + ], + "port": 3000, + "proxy": "http://127.0.0.1:2387" + } +} diff --git a/etc/ghost/themes/casper/page.hbs b/etc/ghost/themes/casper/page.hbs new file mode 100644 index 0000000..2c574f7 --- /dev/null +++ b/etc/ghost/themes/casper/page.hbs @@ -0,0 +1,17 @@ +{{!< default}} + +{{#post}} + +
+
+ {{#if feature_image}}{{title}}{{/if}} +

{{title}}

+
+ +
+ {{content}} +
+ +
+ +{{/post}} diff --git a/etc/ghost/themes/casper/partials/aside.hbs b/etc/ghost/themes/casper/partials/aside.hbs new file mode 100755 index 0000000..d5e7113 --- /dev/null +++ b/etc/ghost/themes/casper/partials/aside.hbs @@ -0,0 +1,24 @@ + diff --git a/etc/ghost/themes/casper/partials/comments.hbs b/etc/ghost/themes/casper/partials/comments.hbs new file mode 100755 index 0000000..6bd9ea4 --- /dev/null +++ b/etc/ghost/themes/casper/partials/comments.hbs @@ -0,0 +1,11 @@ +
+
+ + +
diff --git a/etc/ghost/themes/casper/partials/footer.hbs b/etc/ghost/themes/casper/partials/footer.hbs new file mode 100755 index 0000000..10c648a --- /dev/null +++ b/etc/ghost/themes/casper/partials/footer.hbs @@ -0,0 +1,5 @@ +
+ + + +
diff --git a/etc/ghost/themes/casper/partials/google-analytics.hbs b/etc/ghost/themes/casper/partials/google-analytics.hbs new file mode 100755 index 0000000..16ea4b8 --- /dev/null +++ b/etc/ghost/themes/casper/partials/google-analytics.hbs @@ -0,0 +1,11 @@ + diff --git a/etc/ghost/themes/casper/partials/meta.hbs b/etc/ghost/themes/casper/partials/meta.hbs new file mode 100755 index 0000000..42caf30 --- /dev/null +++ b/etc/ghost/themes/casper/partials/meta.hbs @@ -0,0 +1,16 @@ + + + + + + +{{!-- Twitter & Facebook meta tag are inject in ghost_head --}} + + + + + + + + + diff --git a/etc/ghost/themes/casper/partials/navigation.hbs b/etc/ghost/themes/casper/partials/navigation.hbs new file mode 100755 index 0000000..7f2c8f8 --- /dev/null +++ b/etc/ghost/themes/casper/partials/navigation.hbs @@ -0,0 +1,9 @@ + diff --git a/etc/ghost/themes/casper/partials/pagination.hbs b/etc/ghost/themes/casper/partials/pagination.hbs new file mode 100755 index 0000000..bf2b158 --- /dev/null +++ b/etc/ghost/themes/casper/partials/pagination.hbs @@ -0,0 +1,9 @@ + diff --git a/etc/ghost/themes/casper/partials/post-author.hbs b/etc/ghost/themes/casper/partials/post-author.hbs new file mode 100644 index 0000000..576900c --- /dev/null +++ b/etc/ghost/themes/casper/partials/post-author.hbs @@ -0,0 +1,3 @@ + + profile image for {{author.name}} by {{author.name}} + diff --git a/etc/ghost/themes/casper/partials/search.hbs b/etc/ghost/themes/casper/partials/search.hbs new file mode 100755 index 0000000..7d5b15c --- /dev/null +++ b/etc/ghost/themes/casper/partials/search.hbs @@ -0,0 +1,6 @@ + diff --git a/etc/ghost/themes/casper/partials/social.hbs b/etc/ghost/themes/casper/partials/social.hbs new file mode 100755 index 0000000..0c6be1a --- /dev/null +++ b/etc/ghost/themes/casper/partials/social.hbs @@ -0,0 +1,86 @@ +{{!------------------------------ +To add a new social icon simply duplicate one of the list items from below +and change the class in the tag to match the desired social network +and then add your link to the . Here is a full list of social network +classes that you can use: + + icon-social-500px + icon-social-behance + icon-social-delicious + icon-social-designer-news + icon-social-deviant-art + icon-social-digg + icon-social-dribbble + icon-social-facebook + icon-social-flickr + icon-social-forrst + icon-social-foursquare + icon-social-github + icon-social-google-plus + icon-social-hi5 + icon-social-instagram + icon-social-lastfm + icon-social-linkedin + icon-social-medium + icon-social-myspace + icon-social-path + icon-social-pinterest + icon-social-rdio + icon-social-reddit + icon-social-skype + icon-social-spotify + icon-social-stack-overflow + icon-social-steam + icon-social-stumbleupon + icon-social-treehouse + icon-social-tumblr + icon-social-twitter + icon-social-vimeo + icon-social-xbox + icon-social-yelp + icon-social-youtube + icon-social-zerply + icon-mail + +--------------------------------}} + + + diff --git a/etc/ghost/themes/casper/post.hbs b/etc/ghost/themes/casper/post.hbs new file mode 100755 index 0000000..52ebe62 --- /dev/null +++ b/etc/ghost/themes/casper/post.hbs @@ -0,0 +1,39 @@ +{{!< default}} + +{{#post}} + +
+
+
+ + {{tags prefix="in " separator=" "}} + + {{> post-author}} + + ~ read. +
+ {{#if feature_image}}{{title}}{{/if}} +

{{title}}

+
+ +
+ {{content}} +
+ +
+ +
+ {{#prev_post}} + + {{/prev_post}} + + {{#next_post}} + + {{/next_post}} +
+ + {{> comments}} + +
+ +{{/post}} diff --git a/etc/ghost/themes/casper/scripts/mail_template.html b/etc/ghost/themes/casper/scripts/mail_template.html new file mode 100644 index 0000000..c229d87 --- /dev/null +++ b/etc/ghost/themes/casper/scripts/mail_template.html @@ -0,0 +1,44 @@ +Uno Zen v{{EntryTitle}} was released! + +
+
+ +Just enter in the folder of your theme and run:
sh scripts/update.sh
+ +
+
+ +If you feel happy with the theme, please consider make a donation to be possible develop new awesome features :-) + + +
+
+ +Good hacky day! + +
+
+ +Useful links: + +
+ +
    +
  1. + Main Page +
  2. +
  3. + Changelog +
  4. +
  5. + Tagged versions +
  6. +
  7. + Theme Documentation +
  8. +
  9. + Add your theme into Showcase +
  10. +
+ +
diff --git a/etc/ghost/themes/casper/tag.hbs b/etc/ghost/themes/casper/tag.hbs new file mode 100755 index 0000000..4f4f0ab --- /dev/null +++ b/etc/ghost/themes/casper/tag.hbs @@ -0,0 +1,14 @@ +{{!< default}} + +

Tag: {{tag.name}}.

+
    + {{#foreach posts}} +
  1. + + {{title}} + {{tags separator=" "}} +
  2. + {{/foreach}} +
+ +{{pagination}} diff --git a/etc/nginx/HTTPS_default.template.conf b/etc/nginx/HTTPS_default.template.conf index bf77ab9..665a8ef 100755 --- a/etc/nginx/HTTPS_default.template.conf +++ b/etc/nginx/HTTPS_default.template.conf @@ -1,4 +1,4 @@ -# Nginx configuration for HTTPS only +# Nginx configuration for HTTPS server_tokens off; add_header X-XSS-Protection "1; mode=block"; @@ -8,6 +8,10 @@ upstream dev_tomcat_1 { server tomcat; } +upstream dev_ghost_1 { + server ghost:2368; +} + # HTTP server { listen 80 default_server; @@ -22,7 +26,7 @@ server { error_log /var/log/nginx/error.log; access_log /var/log/nginx/access.log; root /var/www/html/public; - index index.php index.html index.htm index.jsp; + index index.html index.htm index.jsp; # Redirect all requests to HTTPS on :443 location / { @@ -30,19 +34,16 @@ server { } ####### Proxies ####### - # PHP proxy - location ~ \.php$ { - try_files $uri =404; - fastcgi_split_path_info ^(.+\.php)(/.+)$; - fastcgi_pass php:9000; - fastcgi_index index.php; - include fastcgi_params; - fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; - fastcgi_param PATH_INFO $fastcgi_path_info; + # Ghost proxy + location ~ { + proxy_set_header X-Forwarded-Host $host; + proxy_set_header X-Forwarded-Server $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_pass http://ghost:2368; } # Tomcat proxy - location ~ \.(do|jspa|obr|jsp) { + location ~ \.(do|jspa|obr|jsp|txt|zip) { proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; @@ -61,7 +62,7 @@ server { } # Deny access to version control system directories. - location ~ /\.svn|/\.git { + location ~ /\.git { deny all; internal; } @@ -71,32 +72,6 @@ server { allow all; root /data/letsencrypt/; } - - ####### PHPBB Forum ####### - # PHPBB forum - location /board { - index index.php index.html index.htm; - try_files $uri $uri/ @rewriteapp; - } - - # PHPBB installer rewrite - location /install/ { - try_files $uri $uri/ @rewrite_installapp; - } - - location @rewriteapp { - rewrite ^(.*)$ /app.php/$1 last; - } - - # Deny access to internal phpbb files. - location ~ /board(config\.php|common\.php|files|images/avatars/upload|includes|(?