├── assets ├── img │ └── favicon.png ├── css │ ├── main-minimal.css │ ├── prism.css │ └── main.css └── js │ ├── main.js │ ├── bootstrap.min.js │ └── jquery-1.11.2.min.js ├── partials ├── header_post_page.hbs ├── navigation.hbs ├── pagination.hbs ├── google-analytics.hbs ├── no_header_image.hbs ├── header_home.hbs ├── disqus.hbs ├── header_blog.hbs ├── nav_bar.hbs ├── header_image.hbs └── footer_blog.hbs ├── page.hbs ├── default.hbs ├── package.json ├── index.hbs ├── post.hbs ├── LICENSE └── README.md /assets/img/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/boh717/beautiful-ghost/HEAD/assets/img/favicon.png -------------------------------------------------------------------------------- /partials/header_post_page.hbs: -------------------------------------------------------------------------------- 1 | {{!< default}} 2 | 3 | {{#post}} 4 | 5 | {{> header_image}} 6 | {{!> no_header_image}} 7 | 8 | {{/post}} 9 | -------------------------------------------------------------------------------- /partials/navigation.hbs: -------------------------------------------------------------------------------- 1 | {{#foreach navigation}} 2 | 3 | {{/foreach}} -------------------------------------------------------------------------------- /page.hbs: -------------------------------------------------------------------------------- 1 | {{!< default}} 2 | 3 | {{#post}} 4 |
5 |
6 |
7 | {{content}} 8 |
9 |
10 |
11 | {{/post}} 12 | -------------------------------------------------------------------------------- /assets/css/main-minimal.css: -------------------------------------------------------------------------------- 1 | .main-content { 2 | padding-bottom: 50px; 3 | } 4 | 5 | footer.footer-min { 6 | position: fixed; 7 | bottom: 0; 8 | width: 100%; 9 | padding: 3px; 10 | background-color: #f5f5f5; 11 | border-top: 1px solid #eeeeee; 12 | text-align: center; 13 | } -------------------------------------------------------------------------------- /partials/pagination.hbs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /default.hbs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | {{> header_blog}} 7 | 8 | {{ghost_head}} 9 | 10 | 11 | 12 | 13 | {{> nav_bar}} 14 | 15 | {{> header_home}} 16 | {{> header_post_page}} 17 | 18 | {{{body}}} 19 | 20 | {{> footer_blog}} 21 | 22 | {{ghost_foot}} 23 | 24 | 25 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "beautiful-ghost", 3 | "description": "Ghost porting of 'Beautiful Jekyll' theme", 4 | "homepage": "https://github.com/boh717/beautiful-ghost", 5 | "version": "1.1.0", 6 | "engines": { 7 | "ghost": ">=1.0.0" 8 | }, 9 | "license": "MIT", 10 | "author": { 11 | "name": "Alberto Coletta", 12 | "email": "boh@slacky.it" 13 | }, 14 | "config": { 15 | "posts_per_page": 5 16 | } 17 | } -------------------------------------------------------------------------------- /partials/google-analytics.hbs: -------------------------------------------------------------------------------- 1 | 11 | -------------------------------------------------------------------------------- /partials/no_header_image.hbs: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
5 |
6 |
7 |

{{title}}

8 | {{#is "post"}} 9 | 10 | {{/is}} 11 |
12 |
13 |
14 |
15 |
16 |
17 | -------------------------------------------------------------------------------- /partials/header_home.hbs: -------------------------------------------------------------------------------- 1 | {{!< default}} 2 | 3 |
4 | 5 | {{#is "index"}} 6 |
7 |
8 |
9 |
10 |
11 |
12 |

{{@blog.title}}

13 |
14 | {{@blog.description}} 15 |
16 |
17 |
18 |
19 |
20 |
21 | {{/is}} 22 | -------------------------------------------------------------------------------- /partials/disqus.hbs: -------------------------------------------------------------------------------- 1 |
2 | 3 | 13 | 14 | comments powered by Disqus 15 | 16 |
17 | -------------------------------------------------------------------------------- /index.hbs: -------------------------------------------------------------------------------- 1 | {{!< default}} 2 | 3 |
4 |
5 |
6 |
7 | {{#foreach posts}} 8 | 23 | {{/foreach}} 24 |
25 | 26 | {{pagination}} 27 | 28 |
29 |
30 |
-------------------------------------------------------------------------------- /post.hbs: -------------------------------------------------------------------------------- 1 | {{!< default}} 2 | 3 |
4 |
5 |
6 | {{#post}} 7 |
8 | {{content}} 9 |
10 | 11 | 23 | {{/post}} 24 | 25 | {{!> disqus}} 26 | 27 |
28 |
29 |
30 | -------------------------------------------------------------------------------- /partials/header_blog.hbs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {{#is "home"}} 6 | {{meta_title}} - {{meta_description}} 7 | {{else}} 8 | {{meta_title}} 9 | {{/is}} 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /partials/nav_bar.hbs: -------------------------------------------------------------------------------- 1 | 31 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 Dean Attali 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /partials/header_image.hbs: -------------------------------------------------------------------------------- 1 |
2 | {{#if feature_image}} 3 |
4 |
5 |
6 |
7 |
8 |

{{title}}

9 | 10 | {{#is "post"}} 11 | 12 | {{/is}} 13 |
14 |
15 |
16 |
17 | 18 |
19 | {{else}} 20 |
21 |
22 |
23 |
24 |
25 |

{{title}}

26 | {{#is "post"}} 27 | 28 | {{/is}} 29 |
30 |
31 |
32 |
33 |
34 | {{/if}} 35 |
36 | -------------------------------------------------------------------------------- /assets/js/main.js: -------------------------------------------------------------------------------- 1 | var main = { 2 | 3 | bigImgEl : null, 4 | numImgs : null, 5 | 6 | init : function() { 7 | // Shorten the navbar after scrolling a little bit down 8 | $(window).scroll(function() { 9 | if ($(".navbar").offset().top > 50) { 10 | $(".navbar").addClass("top-nav-short"); 11 | } else { 12 | $(".navbar").removeClass("top-nav-short"); 13 | } 14 | }); 15 | 16 | // On mobile, hide the avatar when expanding the navbar menu 17 | $('#main-navbar').on('show.bs.collapse', function () { 18 | $(".navbar").addClass("top-nav-expanded"); 19 | }); 20 | $('#main-navbar').on('hidden.bs.collapse', function () { 21 | $(".navbar").removeClass("top-nav-expanded"); 22 | }); 23 | 24 | // On mobile, when clicking on a multi-level navbar menu, show the child links 25 | $('#main-navbar').on("click", ".navlinks-parent", function(e) { 26 | var target = e.target; 27 | $.each($(".navlinks-parent"), function(key, value) { 28 | if (value == target) { 29 | $(value).parent().toggleClass("show-children"); 30 | } else { 31 | $(value).parent().removeClass("show-children"); 32 | } 33 | }); 34 | }); 35 | } 36 | }; 37 | 38 | document.addEventListener('DOMContentLoaded', main.init); -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Beautiful Ghost - A port of Beautiful Jekyll theme 2 | 3 | This is a porting of [Beautiful Jekyll](http://deanattali.com/beautiful-jekyll/) theme by [Dean Attali](http://deanattali.com/aboutme#contact). It supports most of the features of the original theme. 4 | 5 | From version 1.1, beautiful-ghost will support only Ghost >= 1.0. It will work also on older versions, but some feature may be disabled (e.g., favicon). 6 | 7 | ## TODO 8 | 9 | - Comments count disqus 10 | 11 | ## Installation 12 | 13 | Easy way: 14 | 15 | Head to the [releases page](https://github.com/boh717/beautiful-ghost/releases) and grab the last version. Then in your ghost installation go in Settings/Design and click on `Upload a theme`. You're done! :tada: 16 | 17 | If you want to customize some parts, great! Clone the repository, make your modifications and recreate the zip file: 18 | 19 | ``` 20 | $ git clone https://github.com/boh717/beautiful-ghost.git 21 | // Your modifications 22 | // Then move in theme root level 23 | $ cd beautiful-ghost 24 | $ zip -r beautiful-ghost.zip * 25 | // Upload the theme zip as before 26 | ``` 27 | 28 | ## Features 29 | 30 | ### Responsive 31 | 32 | This theme is designed for both large-screen and small-screen (mobile) devices. 33 | 34 | ### Syntax highlighting 35 | 36 | This theme has support for syntax highlighting thanks to the PrismJS library. 37 | 38 | 39 | ### Disqus support 40 | 41 | To use this feature, change `{{!> disqus}}` into `{{> disqus}}` in `post.hbs` and fill out the `disqus_shortname` parameter in `partials/disqus.hbs`. 42 | 43 | ### Google Analytics 44 | 45 | To add Google Analytics, simply sign up to [Google Analytics](http://www.google.com/analytics/) to obtain your Google Tracking ID, add this tracking ID to `partials/google-analytics.hbs` and change `{{!> google-analytics}}` into `{{> google-analytics}}` in `partials/footer.hbs`. 46 | 47 | ### No header image in posts (but yes in social networks) 48 | 49 | In `header_post_page.hbs` you will find a switch: 50 | 51 | ``` 52 | {{> header_image}} 53 | {{!> no_header_image}} 54 | ``` 55 | 56 | The first one (`{{> header_image}}`) is the default: if you upload a post image it will be shown in post page AND on social networks when you share it; if you don't upload an image, then it won't show anywhere. Easy peasy. 57 | 58 | The second option (`{{!> no_header_image}}`) is a little bit different: you will never see the uploaded post image on your blog, but if you share it, then the image will display, giving better visibility to your tweet/FB post. 59 | 60 | **These two options are mutually exclusive, only one at a time must be activated.** 61 | 62 | ## License 63 | 64 | MIT Licensed, see [LICENSE](https://github.com/boh717/beautiful-ghost/blob/master/LICENSE). 65 | -------------------------------------------------------------------------------- /partials/footer_blog.hbs: -------------------------------------------------------------------------------- 1 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | {{!> google-analytics}} 82 | -------------------------------------------------------------------------------- /assets/css/prism.css: -------------------------------------------------------------------------------- 1 | /* http://prismjs.com/download.html?themes=prism&languages=markup+css+clike+javascript+abap+actionscript+ada+apacheconf+apl+applescript+asciidoc+aspnet+autoit+autohotkey+bash+basic+batch+c+brainfuck+bro+bison+csharp+cpp+coffeescript+ruby+css-extras+d+dart+diff+docker+eiffel+elixir+erlang+fsharp+fortran+gherkin+git+glsl+go+graphql+groovy+haml+handlebars+haskell+haxe+http+icon+inform7+ini+j+jade+java+json+julia+keyman+kotlin+latex+less+livescript+lolcode+lua+makefile+markdown+matlab+mel+mizar+monkey+nasm+nginx+nim+nix+nsis+objectivec+ocaml+oz+parigp+parser+pascal+perl+php+php-extras+powershell+processing+prolog+properties+protobuf+puppet+pure+python+q+qore+r+jsx+rest+rip+roboconf+crystal+rust+sas+sass+scss+scala+scheme+smalltalk+smarty+sql+stylus+swift+tcl+textile+twig+typescript+verilog+vhdl+vim+wiki+xojo+yaml */ 2 | /** 3 | * prism.js default theme for JavaScript, CSS and HTML 4 | * Based on dabblet (http://dabblet.com) 5 | * @author Lea Verou 6 | */ 7 | 8 | code[class*="language-"], 9 | pre[class*="language-"] { 10 | color: black; 11 | background: none; 12 | text-shadow: 0 1px white; 13 | font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; 14 | text-align: left; 15 | white-space: pre; 16 | word-spacing: normal; 17 | word-break: normal; 18 | word-wrap: normal; 19 | line-height: 1.5; 20 | 21 | -moz-tab-size: 4; 22 | -o-tab-size: 4; 23 | tab-size: 4; 24 | 25 | -webkit-hyphens: none; 26 | -moz-hyphens: none; 27 | -ms-hyphens: none; 28 | hyphens: none; 29 | } 30 | 31 | pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection, 32 | code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection { 33 | text-shadow: none; 34 | background: #b3d4fc; 35 | } 36 | 37 | pre[class*="language-"]::selection, pre[class*="language-"] ::selection, 38 | code[class*="language-"]::selection, code[class*="language-"] ::selection { 39 | text-shadow: none; 40 | background: #b3d4fc; 41 | } 42 | 43 | @media print { 44 | code[class*="language-"], 45 | pre[class*="language-"] { 46 | text-shadow: none; 47 | } 48 | } 49 | 50 | /* Code blocks */ 51 | pre[class*="language-"] { 52 | padding: 1em; 53 | margin: .5em 0; 54 | overflow: auto; 55 | } 56 | 57 | :not(pre) > code[class*="language-"], 58 | pre[class*="language-"] { 59 | background: #f5f2f0; 60 | } 61 | 62 | /* Inline code */ 63 | :not(pre) > code[class*="language-"] { 64 | padding: .1em; 65 | border-radius: .3em; 66 | white-space: normal; 67 | } 68 | 69 | .token.comment, 70 | .token.prolog, 71 | .token.doctype, 72 | .token.cdata { 73 | color: slategray; 74 | } 75 | 76 | .token.punctuation { 77 | color: #999; 78 | } 79 | 80 | .namespace { 81 | opacity: .7; 82 | } 83 | 84 | .token.property, 85 | .token.tag, 86 | .token.boolean, 87 | .token.number, 88 | .token.constant, 89 | .token.symbol, 90 | .token.deleted { 91 | color: #905; 92 | } 93 | 94 | .token.selector, 95 | .token.attr-name, 96 | .token.string, 97 | .token.char, 98 | .token.builtin, 99 | .token.inserted { 100 | color: #690; 101 | } 102 | 103 | .token.operator, 104 | .token.entity, 105 | .token.url, 106 | .language-css .token.string, 107 | .style .token.string { 108 | color: #a67f59; 109 | background: hsla(0, 0%, 100%, .5); 110 | } 111 | 112 | .token.atrule, 113 | .token.attr-value, 114 | .token.keyword { 115 | color: #07a; 116 | } 117 | 118 | .token.function { 119 | color: #DD4A68; 120 | } 121 | 122 | .token.regex, 123 | .token.important, 124 | .token.variable { 125 | color: #e90; 126 | } 127 | 128 | .token.important, 129 | .token.bold { 130 | font-weight: bold; 131 | } 132 | .token.italic { 133 | font-style: italic; 134 | } 135 | 136 | .token.entity { 137 | cursor: help; 138 | } 139 | 140 | -------------------------------------------------------------------------------- /assets/css/main.css: -------------------------------------------------------------------------------- 1 | /* --- General --- */ 2 | 3 | body { 4 | font-family: 'Lora', 'Times New Roman', serif; 5 | font-size: 18px; 6 | color: #404040; 7 | position: relative; 8 | background: #FFF; 9 | } 10 | p { 11 | line-height: 1.5; 12 | margin: 30px 0; 13 | } 14 | p a { 15 | /* text-decoration: underline */ 16 | color: #008AFF; 17 | } 18 | h1,h2,h3,h4,h5,h6 { 19 | font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; 20 | font-weight: 800; 21 | } 22 | a { 23 | color: #008AFF; 24 | } 25 | a:hover, 26 | a:focus { 27 | color: #0085a1; 28 | } 29 | blockquote { 30 | color: #808080; 31 | font-style: italic; 32 | } 33 | hr.small { 34 | max-width: 100px; 35 | margin: 15px auto; 36 | border-width: 4px; 37 | border-color: inherit; 38 | border-radius: 3px; 39 | } 40 | 41 | .main-content { 42 | padding-top: 80px; 43 | } 44 | @media only screen and (min-width: 768px) { 45 | .main-content { 46 | padding-top: 130px; 47 | } 48 | } 49 | 50 | .main-explain-area { 51 | font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; 52 | padding: 15px inherit; 53 | } 54 | 55 | .hideme { 56 | display: none; 57 | } 58 | 59 | ::-moz-selection { 60 | color: white; 61 | text-shadow: none; 62 | background: #0085a1; 63 | } 64 | ::selection { 65 | color: white; 66 | text-shadow: none; 67 | background: #0085a1; 68 | } 69 | img::selection { 70 | color: white; 71 | background: transparent; 72 | } 73 | img::-moz-selection { 74 | color: white; 75 | background: transparent; 76 | } 77 | 78 | img { 79 | max-width: 100%; 80 | } 81 | 82 | .disqus-comments { 83 | margin-top: 30px; 84 | } 85 | 86 | @media only screen and (min-width: 768px) { 87 | .disqus-comments { 88 | margin-top: 40px; 89 | } 90 | } 91 | 92 | /* --- Navbar --- */ 93 | 94 | .navbar-custom { 95 | background: #F5F5F5; 96 | border-bottom: 1px solid #EAEAEA; 97 | font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; 98 | } 99 | 100 | .navbar-custom .nav li a { 101 | text-transform: uppercase; 102 | font-size: 12px; 103 | letter-spacing: 1px; 104 | } 105 | 106 | .navbar-custom .navbar-brand, 107 | .navbar-custom .nav li a { 108 | font-weight: 800; 109 | color: #404040; 110 | } 111 | 112 | .navbar-custom .navbar-brand:hover, 113 | .navbar-custom .navbar-brand:focus , 114 | .navbar-custom .nav li a:hover, 115 | .navbar-custom .nav li a:focus { 116 | color: #0085a1; 117 | } 118 | 119 | @media only screen and (min-width: 768px) { 120 | .navbar-custom { 121 | padding: 20px 0; 122 | -webkit-transition: background .5s ease-in-out,padding .5s ease-in-out; 123 | -moz-transition: background .5s ease-in-out,padding .5s ease-in-out; 124 | transition: background .5s ease-in-out,padding .5s ease-in-out; 125 | } 126 | 127 | .navbar-custom.top-nav-short { 128 | padding: 0; 129 | } 130 | } 131 | 132 | .navbar-custom .avatar-container { 133 | opacity: 1; 134 | position: absolute; 135 | -webkit-transition: opacity 0.5s ease-in-out; 136 | -moz-transition: opacity 0.5s ease-in-out; 137 | transition: opacity 0.5s ease-in-out; 138 | left: 50%; 139 | width: 50px; 140 | margin-top: -25px; 141 | } 142 | .navbar-custom .avatar-container .avatar-img-border { 143 | width: 100%; 144 | border-radius: 50%; 145 | margin-left: -50%; 146 | display: inline-block; 147 | box-shadow: 0 0 8px rgba(0, 0, 0, .8); 148 | -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .8); 149 | -moz-box-shadow: 0 0 8px rgba(0, 0, 0, .8); 150 | } 151 | .navbar-custom .avatar-container .avatar-img { 152 | width: 100%; 153 | border-radius: 50%; 154 | display: block; 155 | } 156 | 157 | .navbar-custom.top-nav-short .avatar-container{ 158 | opacity: 0; 159 | } 160 | 161 | .navbar-custom.top-nav-expanded .avatar-container { 162 | display: none; 163 | } 164 | 165 | @media only screen and (min-width: 768px) { 166 | .navbar-custom .avatar-container { 167 | width: 100px; 168 | margin-top: -50px; 169 | } 170 | 171 | .navbar-custom .avatar-container .avatar-img-border { 172 | width: 100%; 173 | box-shadow: 1px 1px 2px rgba(0, 0, 0, .8); 174 | -webkit-box-shadow: 1px 1px 2px rgba(0, 0, 0, .8); 175 | -moz-box-shadow: 1px 1px 2px rgba(0, 0, 0, .8); 176 | } 177 | 178 | .navbar-custom .avatar-container .avatar-img { 179 | width: 100%; 180 | } 181 | } 182 | 183 | /* Multi-level navigation links */ 184 | .navbar-custom .nav .navlinks-container { 185 | position: relative; 186 | } 187 | .navbar-custom .nav .navlinks-parent:after { 188 | content: " \25BC"; 189 | } 190 | .navbar-custom .nav .navlinks-children { 191 | width: 100%; 192 | display: none; 193 | word-break: break-word; 194 | } 195 | .navbar-custom .nav .navlinks-container .navlinks-children a { 196 | display: block; 197 | padding: 10px; 198 | padding-left: 30px; 199 | background: #f5f5f5; 200 | text-decoration: none !important; 201 | border-width: 0 1px 1px 1px; 202 | font-weight: normal; 203 | } 204 | @media only screen and (max-width: 767px) { 205 | .navbar-custom .nav .navlinks-container.show-children { 206 | background: #eee; 207 | } 208 | .navbar-custom .nav .navlinks-container.show-children .navlinks-children { 209 | display: block; 210 | } 211 | } 212 | @media only screen and (min-width: 768px) { 213 | .navbar-custom .nav .navlinks-container:hover { 214 | background: #eee; 215 | } 216 | .navbar-custom .nav .navlinks-container:hover .navlinks-children { 217 | display: block; 218 | } 219 | .navbar-custom .nav .navlinks-children { 220 | position: absolute; 221 | text-align: center; 222 | } 223 | .navbar-custom .nav .navlinks-container .navlinks-children a { 224 | padding-left: 10px; 225 | border: 1px solid #eaeaea; 226 | border-width: 0 1px 1px; 227 | } 228 | } 229 | 230 | /* --- Footer --- */ 231 | 232 | footer { 233 | padding: 30px 0; 234 | background: #F5F5F5; 235 | border-top: 1px #EAEAEA solid; 236 | margin-top: 50px; 237 | font-size: 14px; 238 | } 239 | 240 | footer a { 241 | color: #404040; 242 | } 243 | 244 | footer .list-inline { 245 | margin: 0; 246 | padding: 0; 247 | } 248 | footer .copyright { 249 | font-family: Open Sans; 250 | text-align: center; 251 | margin-bottom: 0; 252 | } 253 | footer .theme-by { 254 | text-align: center; 255 | margin: 10px 0 0; 256 | } 257 | 258 | @media only screen and (min-width: 768px) { 259 | footer { 260 | padding: 50px 0; 261 | } 262 | footer .footer-links { 263 | font-size: 18px; 264 | } 265 | footer .copyright { 266 | font-size: 16px; 267 | } 268 | } 269 | 270 | /* --- Post preview --- */ 271 | 272 | .post-preview { 273 | padding: 20px 0; 274 | border-bottom: 1px solid #eee; 275 | } 276 | 277 | @media only screen and (min-width: 768px) { 278 | .post-preview { 279 | padding: 35px 0; 280 | } 281 | } 282 | 283 | .post-preview:last-child { 284 | border-bottom: 0; 285 | } 286 | 287 | .post-preview a { 288 | text-decoration: none; 289 | color: #404040; 290 | } 291 | 292 | .post-preview a:focus, 293 | .post-preview a:hover { 294 | text-decoration: none; 295 | color: #0085a1; 296 | } 297 | 298 | .post-preview .post-title { 299 | font-size: 30px; 300 | margin-top: 0; 301 | } 302 | .post-preview .post-subtitle { 303 | margin: 0; 304 | font-weight: 300; 305 | margin-bottom: 10px; 306 | } 307 | .post-preview .post-meta, 308 | .post-heading .post-meta { 309 | color: #808080; 310 | font-size: 18px; 311 | font-style: italic; 312 | margin: 0 0 10px; 313 | } 314 | .post-preview .post-entry { 315 | font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; 316 | } 317 | .post-preview .post-read-more { 318 | font-weight: 800; 319 | } 320 | 321 | @media only screen and (min-width: 768px) { 322 | .post-preview .post-title { 323 | font-size: 36px; 324 | } 325 | } 326 | 327 | /* --- Post and page headers --- */ 328 | 329 | .intro-header { 330 | margin: 80px 0 20px; 331 | position: relative; 332 | } 333 | .intro-header.big-img { 334 | background: no-repeat center center; 335 | -webkit-background-size: cover; 336 | -moz-background-size: cover; 337 | background-size: cover; 338 | -o-background-size: cover; 339 | margin-top: 51px; /* The small navbar is 50px tall + 1px border */ 340 | margin-bottom: 35px; 341 | } 342 | .intro-header.big-img .big-img-transition { 343 | position: absolute; 344 | width: 100%; 345 | height: 100%; 346 | opacity: 0; 347 | background: no-repeat center center; 348 | -webkit-background-size: cover; 349 | -moz-background-size: cover; 350 | background-size: cover; 351 | -o-background-size: cover; 352 | -webkit-transition: opacity 1s linear; 353 | -moz-transition: opacity 1s linear; 354 | transition: opacity 1s linear; 355 | } 356 | .intro-header .page-heading { 357 | text-align: center; 358 | } 359 | .intro-header.big-img .page-heading, 360 | .intro-header.big-img .post-heading { 361 | padding: 100px 0; 362 | color: #FFF; 363 | text-shadow: 1px 1px 3px #000; 364 | } 365 | .intro-header .page-heading h1 { 366 | margin-top: 0; 367 | font-size: 50px; 368 | } 369 | .intro-header .post-heading h1 { 370 | margin-top: 0; 371 | font-size: 35px; 372 | } 373 | .intro-header .page-heading .page-subheading, 374 | .intro-header .post-heading .post-subheading { 375 | font-size: 27px; 376 | line-height: 1.1; 377 | display: block; 378 | font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; 379 | font-weight: 300; 380 | margin: 10px 0 0; 381 | } 382 | .intro-header .post-heading .post-subheading { 383 | margin-bottom: 20px; 384 | } 385 | .intro-header.big-img .page-heading .page-subheading, 386 | .intro-header.big-img .post-heading .post-subheading { 387 | font-weight: 400; 388 | } 389 | .intro-header.big-img .page-heading hr { 390 | box-shadow: 1px 1px 3px #000; 391 | -webkit-box-shadow: 1px 1px 3px #000; 392 | -moz-box-shadow: 1px 1px 3px #000; 393 | } 394 | .intro-header.big-img .post-heading .post-meta { 395 | color: #EEE; 396 | } 397 | .intro-header.big-img .img-desc { 398 | background: rgba(30, 30, 30, 0.6); 399 | position: absolute; 400 | padding: 5px 10px; 401 | font-size: 11px; 402 | color: #EEE; 403 | font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; 404 | right: 0; 405 | bottom: 0; 406 | display: none; 407 | } 408 | @media only screen and (min-width: 768px) { 409 | .intro-header { 410 | margin-top: 130px; 411 | } 412 | .intro-header.big-img { 413 | margin-top: 91px; /* Full navbar is small navbar + 20px padding on each side when expanded */ 414 | } 415 | .intro-header.big-img .page-heading, 416 | .intro-header.big-img .post-heading { 417 | padding: 150px 0; 418 | } 419 | .intro-header .page-heading h1 { 420 | font-size: 80px; 421 | } 422 | .intro-header .post-heading h1 { 423 | font-size: 50px; 424 | } 425 | .intro-header.big-img .img-desc { 426 | font-size: 14px; 427 | } 428 | } 429 | 430 | .header-section.has-img .no-img { 431 | margin-top: 0; 432 | background: #FCFCFC; 433 | margin: 0 0 40px; 434 | padding: 20px 0; 435 | box-shadow: 0 0 5px #AAA; 436 | } 437 | /* Many phones are 320 or 360px, so make sure images are a proper aspect ratio in those cases */ 438 | .header-section.has-img .intro-header.no-img { 439 | display: none; 440 | } 441 | @media only screen and (max-width: 365px) { 442 | .header-section.has-img .intro-header.no-img { 443 | display: block; 444 | } 445 | .intro-header.big-img { 446 | width: 100%; 447 | height: 220px; 448 | } 449 | .intro-header.big-img .page-heading, 450 | .intro-header.big-img .post-heading { 451 | display: none; 452 | } 453 | .header-section.has-img .big-img { 454 | margin-bottom: 0; 455 | } 456 | } 457 | @media only screen and (max-width: 325px) { 458 | .intro-header.big-img { 459 | height: 200px; 460 | } 461 | } 462 | 463 | .caption { 464 | text-align: center; 465 | font-size: 14px; 466 | padding: 10px; 467 | font-style: italic; 468 | margin: 0; 469 | display: block; 470 | border-bottom-right-radius: 5px; 471 | border-bottom-left-radius: 5px; 472 | } 473 | 474 | /* --- Pager --- */ 475 | 476 | .pager li a { 477 | font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; 478 | text-transform: uppercase; 479 | font-size: 14px; 480 | font-weight: 800; 481 | letter-spacing: 1px; 482 | padding: 10px 5px; 483 | background: #FFF; 484 | border-radius: 0; 485 | color: #404040; 486 | } 487 | @media only screen and (min-width: 768px) { 488 | .pager li a { 489 | padding: 15px 25px; 490 | } 491 | } 492 | .pager li a:hover, 493 | .pager li a:focus { 494 | color: #FFF; 495 | background: #0085a1; 496 | border: 1px solid #0085a1; 497 | } 498 | 499 | .pager { 500 | margin: 10px 0 0; 501 | } 502 | 503 | .pager.blog-pager { 504 | margin-top: 0; 505 | } 506 | 507 | @media only screen and (min-width: 768px) { 508 | .pager.blog-pager { 509 | margin-top: 10px; 510 | } 511 | } 512 | 513 | /* --- Tables --- */ 514 | 515 | table { 516 | padding: 0; 517 | } 518 | table tr { 519 | border-top: 1px solid #cccccc; 520 | background-color: #ffffff; 521 | margin: 0; 522 | padding: 0; 523 | } 524 | table tr:nth-child(2n) { 525 | background-color: #f8f8f8; 526 | } 527 | table tr th { 528 | font-weight: bold; 529 | border: 1px solid #cccccc; 530 | text-align: left; 531 | margin: 0; 532 | padding: 6px 13px; 533 | } 534 | table tr td { 535 | border: 1px solid #cccccc; 536 | text-align: left; 537 | margin: 0; 538 | padding: 6px 13px; 539 | } 540 | table tr th :first-child, 541 | table tr td :first-child { 542 | margin-top: 0; 543 | } 544 | table tr th :last-child, 545 | table tr td :last-child { 546 | margin-bottom: 0; 547 | } 548 | -------------------------------------------------------------------------------- /assets/js/bootstrap.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap v3.3.2 (http://getbootstrap.com) 3 | * Copyright 2011-2015 Twitter, Inc. 4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 5 | */ 6 | if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.2",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a(f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.2",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?a=!1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active"));a&&this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),c.preventDefault()}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.2",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));return a>this.$items.length-1||0>a?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&"show"==b&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a(this.options.trigger).filter('[href="#'+b.id+'"], [data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.2",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0,trigger:'[data-toggle="collapse"]'},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":a.extend({},e.data(),{trigger:this});c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){b&&3===b.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=c(d),f={relatedTarget:this};e.hasClass("open")&&(e.trigger(b=a.Event("hide.bs.dropdown",f)),b.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger("hidden.bs.dropdown",f)))}))}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.2",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('