├── .gitignore ├── README.md ├── assets ├── css │ ├── animate.css │ ├── font-awesome.min.css │ ├── tomorrow.css │ └── vno.css ├── fonts │ ├── FontAwesome.otf │ ├── fontawesome-webfont.eot │ ├── fontawesome-webfont.svg │ ├── fontawesome-webfont.ttf │ └── fontawesome-webfont.woff ├── images │ ├── background-cover.jpg │ └── favicon.png ├── js │ ├── highlight.pack.js │ └── main.js └── scss │ ├── components │ ├── _buttons.scss │ ├── _forms.scss │ ├── _icons.scss │ ├── _navigation.scss │ ├── _pagination.scss │ ├── _panels.scss │ ├── _post-list.scss │ └── _read-more.scss │ ├── global.scss │ ├── grid.scss │ ├── media-queries.scss │ ├── reset.scss │ ├── sections │ └── _post.scss │ ├── variables.scss │ └── vno.scss ├── default.hbs ├── error.hbs ├── index.hbs ├── package.json ├── page.hbs ├── partials ├── comments.hbs ├── footer.hbs ├── list-posts.hbs ├── pagination.hbs ├── read-more.hbs ├── side-panel.hbs └── social.hbs ├── post.hbs └── tag.hbs /.gitignore: -------------------------------------------------------------------------------- 1 | # vim ~tmp files 2 | *.swp 3 | *.un~ 4 | 5 | # ignore bourbon install so that it is the latest build 6 | # for developers that need it 7 | assets/scss/bourbon/* 8 | 9 | # ignore the sass-cache/ 10 | .sass-cache/* 11 | **/.sass-cache/* 12 | 13 | ### OSX ### 14 | .DS_Store 15 | .AppleDouble 16 | .LSOverride 17 | 18 | # Icon must end with two \r 19 | Icon 20 | 21 | 22 | # Thumbnails 23 | ._* 24 | 25 | # Files that might appear on external disk 26 | .Spotlight-V100 27 | .Trashes 28 | 29 | # Directories potentially created on remote AFP share 30 | .AppleDB 31 | .AppleDesktop 32 | Network Trash Folder 33 | Temporary Items 34 | .apdisk 35 | config.codekit 36 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Vno, just another ghost theme 2 | 3 | ## Deprecated 4 | 5 | Since I am not using Ghost anymore, vno for Ghost will not be continued developed. I am moving to Jekyll now and I also ported vno to a Jekyll theme and simplify the configuration as well. If you are interested in that, please visit [Vno Jekyll](https://github.com/onevcat/vno-jekyll) for more information. 6 | 7 | ## 弃用 8 | 9 | 因为我不再使用 Ghost 了,所以 vno for Ghost 主题也将不再继续开发。我现在转向使用 Jekyll,因此我把 vno 向 Jekyll 平台进行了移植,并简化了主题的配置和使用。如果您对此感兴趣的话,可以访问 [Vno Jekyll](https://github.com/onevcat/vno-jekyll) 来获取更多信息。 10 | 11 | (中文在后) 12 | 13 | ## Overview 14 | 15 | `Vno` is a ghost theme derivated from [Dale Anthony's Uno](https://github.com/daleanthony/uno). The theme features a minimal, responsive design with a cover page, disqus comment integration, font icons and various color options. 16 | 17 | I fixed some unexpected behaviors and changed some style and detail, making it more suitable for Chinese (or Japanese and Korea) language content. Please find a live demo of the theme running as my personal blog, [OneV's Den](http://onevcat.com). 18 | 19 | ## Features 20 | 21 | ### Cover page 22 | 23 | There is a beautiful full screen landing page for you to display a cover image with blur effect. I suppied several color for you to choose for the cover, while of course you can add your own. You can also place your avatar, blog title, your bio and some social button here. 24 | 25 | ### Responsive and Animation 26 | 27 | Vno is following the responsive design and works well in mobile devices. You may find some events is driven by great animation, thanks to the [Animate.css](http://daneden.github.io/animate.css/), which makes all these possible. 28 | 29 | ### Disqus comments and Font Awesome 30 | 31 | Integrate comment system with a simple user name input with [Disqus](https://disqus.com). Use [Font Awesome](http://fontawesome.io) icon to express yourself better. They are perfect for a personal site (such as blog), as well as some commercial CMS. 32 | 33 | ### SASS 34 | 35 | Vno is built on SASS, but it is not a must flow. If you know HTML and CSS, making modifications to the theme should be super simple. 36 | 37 | ### Code highlight 38 | 39 | [highlight.js](http://highlightjs.org) is used as the code highlight engine of this theme. You can get a clean and good-look code block in your tech blog. 40 | 41 | ## Usage 42 | 43 | ### Install 44 | 45 | You should already set up a [ghost blog](https://ghost.org). If you are not prepared yet, please refer to the official [installation page](http://docs.ghost.org/installation/). 46 | 47 | When you get ready, just clone the repo to a folder under your blog's theme folder: `content/themes/`. Restart ghost and you can find the `Vno` in the blog setting panle. 48 | 49 | ### Cover 50 | 51 | #### Image and Color 52 | 53 | Place your cover image under `assets/images/` folder and replace the default image file `background-cover.jpg`(You can also change it in your blog setting). You can change the cover overlap color as well. Change the `cover-orange` in the line of `
` in `partials/side-panel.hbs` to the color you like. There are 7 options by default: 54 | 55 | * `cover-blue` - #2568A3 56 | * `cover-green` - #156F78 57 | * `cover-purple` - #493252 58 | * `cover-red` - #E25440 59 | * `cover-orange` - #FB9C50 60 | * `cover-slate` - #3D4260 61 | * `cover-disabled` - Transparent 62 | 63 | #### Avatar and Bio 64 | 65 | The avatar will be the logo of your blog. Change it in your blog setting. 66 | 67 | You can write a short bio on the landing page. See `partials/side-panel.hbs` file and you will find how to deal with that. :) 68 | 69 | #### Navigation Buttons 70 | 71 | Also in the `partials/side-panel.hbs` file. Don't forget to change it to your own links. You may not change the `/#blog` link, which will trigger an animation to your blog main page. 72 | 73 | #### Social Buttons 74 | 75 | You should update the links and icons in `partials/social.hbs`. The icons comes from Font Awesome, see [here](http://fontawesome.io/icons/) for all icons you can use. 76 | 77 | ### Disqus 78 | 79 | You need to know your `short name` of Disqus. Add it to `disqus_shortname` in `comments.hbs` and then replace the `{{!-- {{> comments}} --}}` with `{{> comments}}` in `post.hbs` to enable Disqus for your blog. 80 | 81 | ### Code highlight theme 82 | 83 | Vno is using the classic [tomorrow](http://jmblog.github.io/color-themes-for-highlightjs/tomorrow/) theme as a default. You can select your favourite color scheme and put it under `assets/css` folder directly. Then change the `css/tomorrow.css` in `default.hbs` to make it live. For more color schemes, see [this site](http://jmblog.github.com/color-themes-for-highlightjs/). 84 | 85 | ## Development 86 | 87 | In order to develop or make changes to the theme you will need to have the sass compiler and bourbon both installed. If you are running a Ghost environment locally then you should already have these installed as those are required to run Ghost. 88 | 89 | To check installation run the following commands from a terminal and you should see the `> cli output` but your version numbers may vary. 90 | 91 | ### SASS 92 | 93 | ```bash 94 | sass -v 95 | > Sass 3.3.6 (Maptastic Maple) 96 | ``` 97 | 98 | If for some reason SASS isn't installed follow the instructions from the [Sass install page](http://sass-lang.com/install) 99 | 100 | ### Bourbon 101 | ```bash 102 | bourbon version 103 | > Bourbon 4.0.1 104 | ``` 105 | 106 | If Bourbon isn't installed follow the installation instructions on the [Bourbon website](http://bourbon.io) 107 | 108 | ### Go go dev 109 | 110 | Once installation is verified we will need to go mount the bourbon mixins into the `scss` folder. 111 | 112 | From the project root run `bourbon install` with the correct path 113 | 114 | ```bash 115 | bourbon install --path assets/scss 116 | > bourbon files installed to assets/scss/bourbon/ 117 | //Or "Bourbon files already installed, doing nothing." if you already installed it. 118 | ``` 119 | 120 | Now that we have the bourbon mixins inside of the `scss` src folder. We can now use the sass cli command to watch the scss files for changes and recompile them. 121 | 122 | ```bash 123 | pwd 124 | > In the vno theme root folder: {blog_path}/content/themes/vno 125 | sass --watch assets/scss/vno.scss:assets/css/vno.css 126 | >>>> Sass is watching for changes. Press Ctrl-C to stop. 127 | ``` 128 | 129 | Now, you can change the scss files and all change will be complied to the final `/css/vno.css` automatically. 130 | 131 | ### OSX Maverick 132 | 133 | Some people may receive this error when trying to run the `sass --watch` command 134 | 135 | ```bash 136 | > LoadError: cannot load such file -- rb-fsevent 137 | Use --trace for backtrace. 138 | ``` 139 | 140 | This is a known issue with the [Sass on OSX Maverick](http://stackoverflow.com/questions/22413834/getting-error-when-using-command-line-for-sass-to-watch-files) as indicated install the `rb-fsevent` gem. 141 | 142 | ```bash 143 | gem install rb-fsevent 144 | ``` 145 | 146 | ### Good luck 147 | 148 | Enjoy it and give me feedback. If you find any bugs (in fact I am new to web dev), do not hesitate to point them out, and a pull request would be appreciated! 149 | 150 | ## Licence 151 | 152 | Great thanks to [Dale Anthony](https://github.com/daleanthony) and his [Uno](https://github.com/daleanthony/uno). Vno is based on Uno, and contains a lot of modification on page layout, animation, font and some more things I can not remember. 153 | 154 | Vno is followed with Uno and be licensed as [Creative Commons Attribution 4.0 International](http://creativecommons.org/licenses/by/4.0/). See the link for more information. 155 | 156 | --- 157 | 158 | ## 总览 159 | 160 | `Vno` 是一个从 [Dale Anthony 的 Uno](https://github.com/daleanthony/uno) 派生出的 Ghost 主题。它遵从简洁和响应式的设计风格,拥有一个独立的封面,易于集成的 Disqus 评论系统,字体图标以及多种颜色。 161 | 162 | 我在原来的基础上对一些预料外的行为进行了修正,并且改变了一些样式和细节,这样主题在中文 (以及日文和韩文) 上表现得更好。我的个人博客 [OneV's Den](http://onevcat.com) 正在使用这个主题,您可以看看实际的效果。 163 | 164 | ## 特性 165 | 166 | ### 封面 167 | 168 | 主题有一个全屏的带有模糊(和半透明)效果的封面页,您可以选择喜欢的颜色,当然也可以添加您自己喜欢的颜色。您可以在封面页上放置头像,博客名字,简介以及社交网络导航等等。 169 | 170 | ### 响应式设计和动画 171 | 172 | Vno 遵循响应式设计,所以应该能在各种设备上都表现良好。很多事件是由动画驱动的,这要感谢 [Animate.css](http://daneden.github.io/animate.css/) 的帮助。 173 | 174 | ### Disqus 评论系统和 Font Awesome 字体 175 | 176 | 如果您打算使用 [Disqus](https://disqus.com) 的话,集成评论系统就只是填一个用户名那么简单。您也可以使用 [Font Awesome](http://fontawesome.io) 的图标字体来获得更好的表现。这些不仅对于个人站点 (比如博客) 来说是很好的选择,对于一些商用的 CMS (内容管理系统) 来说也是不错的解决方案。 177 | 178 | ### SASS 179 | 180 | Vno 是基于 SASS 创建的,但是如果您不再希望继续维护可扩展性,您也可以忽略这个再开发的流程。不过如果您懂一些 HTML 和 CSS 的话,对现有主题做出修改是轻而易举的。 181 | 182 | ### 代码高亮 183 | 184 | 使用了 [highlight.js](http://highlightjs.org) 作为主题的代码高亮引擎。您可以在您的技术博客上以简洁优美的形式呈现您的代码。 185 | 186 | ## 使用 187 | 188 | ### 安装 189 | 190 | 您应该已经建立了一个可用的 [ghost 博客](https://ghost.org)。如果您还没有准备好,请参考[官方的安装页面](http://docs.ghost.org/installation/)来配置一个属于您自己的 ghost 博客。 191 | 192 | 一旦您准备就绪,只需要将这个 repo clone 到您博客的主题文件夹下:`content/themes/`,然后重启 ghost,您应该就能在博客的设定面板中看到 `Vno` 了。 193 | 194 | ### 封面 195 | 196 | #### 图片和颜色 197 | 198 | 将您的封面图片放到主题的 `assets/images/` 下,替换掉原来的 `background-cover.jpg` 文件即可(您也可以在博客的设定页面中进行更改)。您也可以改变封面的颜色。找到 `partials/side-panel.hbs` 文件,将 `
` 中的 `cover-orange` 替换成您需要的颜色即可。默认为您提供了七种选择: 199 | 200 | * `cover-blue` - #2568A3 201 | * `cover-green` - #156F78 202 | * `cover-purple` - #493252 203 | * `cover-red` - #E25440 204 | * `cover-orange` - #FB9C50 205 | * `cover-slate` - #3D4260 206 | * `cover-disabled` - 透明 207 | 208 | #### 头像和简介 209 | 210 | 头像直接使用了您的博客的 logo。在博客的设定页面中可以进行更改。 211 | 212 | 您还可以在封面页上写一个简短的介绍。只要您瞄一眼 `partials/side-panel.hbs` 应该就知道怎么做了 :) 213 | 214 | #### 导航按钮 215 | 216 | 也在 `partials/side-panel.hbs` 文件中定义。不要忘了把它们换成您自己的链接。您不应该更改或者至少保留 `/#blog` 链接,因为这个链接将触发一个转场到您的博客主页面的动画。 217 | 218 | #### 社交按钮 219 | 220 | 可以在 `partials/social.hbs` 中按照例子将社交网络的按钮替换成您需要的链接和图标。图标都来自 Font Awesome,您可以访问它们的[网站](http://fontawesome.io/icons/)来查看您能使用的所有图标。 221 | 222 | ### Disqus 223 | 224 | 为了使用 Disqus 的评论系统,您需要从 Disqus 获取您自己的 `short name`。将其添加到 `comments.hbs` 的 `disqus_shortname` 中就可以了。然后您还需要将 `post.hbs` 中的 `{{!-- {{> comments}} --}}` 替换为 `{{> comments}}` 来使 Disqus 生效。 225 | 226 | 227 | ### 代码高亮主题 228 | 229 | Vno 使用经典的 [tomorrow](http://jmblog.github.io/color-themes-for-highlightjs/tomorrow/) 主题作为默认的代码高亮配色。您也可以选择和使用您最喜欢的配色,将配色文件直接放到 `assets/css` 文件夹下, 然后将 `default.hbs` 中的 `css/tomorrow.css` 改为您的文件来使配置生效。想要更多的配色方案的话,可以看看这个[站点](http://jmblog.github.com/color-themes-for-highlightjs/)。 230 | 231 | ## 开发 232 | 233 | 为了简单地对主题进行修改和开发,您需要安装 sass 编译器以及 bourbon。如果您在本地有 ghost 环境的话,这些应该已经安装好了,因为 ghost 运行是需要这些部件的。 234 | 235 | 您可以在终端中进行一些检查,来看看是否已经安装完成。如果没有问题的话,您应该可以在命令行后看到对应的工具的版本号。 236 | 237 | ### SASS 238 | 239 | ```bash 240 | sass -v 241 | > Sass 3.3.6 (Maptastic Maple) 242 | ``` 243 | 244 | 如果 SASS 没有能正确安装的话,请参见 [Sass 安装页面](http://sass-lang.com/install)进行安装。 245 | 246 | ### Bourbon 247 | 248 | ```bash 249 | bourbon version 250 | > Bourbon 4.0.1 251 | ``` 252 | 253 | 如果 Bourbon 没有能正确安装的话,请参见 [Bourbon 的网站](http://bourbon.io)进行安装。 254 | 255 | ### 开始开发 256 | 257 | 验证安装后就可以开始开发了。首先我们要将 bourbon 加载到 `scss` 文件夹里。 258 | 259 | 在主题文件夹下执行 `bourbon install` 来加载 bourbon: 260 | 261 | ```bash 262 | bourbon install --path assets/scss 263 | > bourbon files installed to assets/scss/bourbon/ 264 | //Or "Bourbon files already installed, doing nothing." if you already installed it. 265 | ``` 266 | 267 | 然后就可以使用 sass 的命令行工具来监视文件夹中的 scss 文件的改动,并自动重新编译了。 268 | 269 | ```bash 270 | pwd 271 | > In the vno theme root folder: {blog_path}/content/themes/vno 272 | 273 | sass --watch assets/scss/vno.scss:assets/css/vno.css 274 | >>>> Sass is watching for changes. Press Ctrl-C to stop. 275 | ``` 276 | 277 | 现在,任何对于 scss 文件的改动都将自动反映到最终的 `/css/vno.css` 文件中了。 278 | 279 | ### OSX Maverick 280 | 281 | 有些人在运行 `sass --watch` 时可能会遇到如下错误: 282 | 283 | ```bash 284 | > LoadError: cannot load such file -- rb-fsevent 285 | Use --trace for backtrace. 286 | ``` 287 | 288 | 这是一个 Sass 在 OSX Maverick 下的[已知问题](http://stackoverflow.com/questions/22413834/getting-error-when-using-command-line-for-sass-to-watch-files),新版本中应该已经修复。请尝试将 Sass 升级到最新版本,或者安装 `rb-fsevent` 这个gem: 289 | 290 | ```bash 291 | gem install rb-fsevent 292 | ``` 293 | 294 | ### 祝你好运 295 | 296 | 玩得开心,也请记得给我反馈。如果您发现了什么 bug (我刚入门 web 开发,这简直是必然的),请直接指出,如果还能附带一个 pull request 修正的话,那真的感激万分! 297 | 298 | 如果您觉得这个主题还不错的话,欢迎加颗星星或者 follow 我一下以示支持,这将对我和我的项目的发展提供不可估量的帮助。再次感谢。 299 | 300 | ## 许可 301 | 302 | 非常感谢 [Dale Anthony](https://github.com/daleanthony) 和他的 [Uno](https://github.com/daleanthony/uno)。Vno 是一个基于 Uno 大量工作的主题,我在页面布局,动画,字体以及其他一些我也不记得了的地方做出了不少改动。 303 | 304 | Vno 遵循 Uno 的要求按照 [Creative Commons Attribution 4.0 International](http://creativecommons.org/licenses/by/4.0/) 进行授权。点击上面的链接可以了解到更多信息。 305 | -------------------------------------------------------------------------------- /assets/css/animate.css: -------------------------------------------------------------------------------- 1 | .animated{-webkit-animation-fill-mode:both;-moz-animation-fill-mode:both;-ms-animation-fill-mode:both;-o-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:1s;-moz-animation-duration:1s;-ms-animation-duration:1s;-o-animation-duration:1s;animation-duration:1s;}.animated.hinge{-webkit-animation-duration:1s;-moz-animation-duration:1s;-ms-animation-duration:1s;-o-animation-duration:1s;animation-duration:1s;}@-webkit-keyframes flash { 2 | 0%, 50%, 100% {opacity: 1;} 25%, 75% {opacity: 0;} 3 | } 4 | 5 | @-moz-keyframes flash { 6 | 0%, 50%, 100% {opacity: 1;} 7 | 25%, 75% {opacity: 0;} 8 | } 9 | 10 | @-o-keyframes flash { 11 | 0%, 50%, 100% {opacity: 1;} 12 | 25%, 75% {opacity: 0;} 13 | } 14 | 15 | @keyframes flash { 16 | 0%, 50%, 100% {opacity: 1;} 17 | 25%, 75% {opacity: 0;} 18 | } 19 | 20 | .flash { 21 | -webkit-animation-name: flash; 22 | -moz-animation-name: flash; 23 | -o-animation-name: flash; 24 | animation-name: flash; 25 | } 26 | @-webkit-keyframes shake { 27 | 0%, 100% {-webkit-transform: translateX(0);} 28 | 10%, 30%, 50%, 70%, 90% {-webkit-transform: translateX(-10px);} 29 | 20%, 40%, 60%, 80% {-webkit-transform: translateX(10px);} 30 | } 31 | 32 | @-moz-keyframes shake { 33 | 0%, 100% {-moz-transform: translateX(0);} 34 | 10%, 30%, 50%, 70%, 90% {-moz-transform: translateX(-10px);} 35 | 20%, 40%, 60%, 80% {-moz-transform: translateX(10px);} 36 | } 37 | 38 | @-o-keyframes shake { 39 | 0%, 100% {-o-transform: translateX(0);} 40 | 10%, 30%, 50%, 70%, 90% {-o-transform: translateX(-10px);} 41 | 20%, 40%, 60%, 80% {-o-transform: translateX(10px);} 42 | } 43 | 44 | @keyframes shake { 45 | 0%, 100% {transform: translateX(0);} 46 | 10%, 30%, 50%, 70%, 90% {transform: translateX(-10px);} 47 | 20%, 40%, 60%, 80% {transform: translateX(10px);} 48 | } 49 | 50 | .shake { 51 | -webkit-animation-name: shake; 52 | -moz-animation-name: shake; 53 | -o-animation-name: shake; 54 | animation-name: shake; 55 | } 56 | @-webkit-keyframes bounce { 57 | 0%, 20%, 50%, 80%, 100% {-webkit-transform: translateY(0);} 58 | 40% {-webkit-transform: translateY(-30px);} 59 | 60% {-webkit-transform: translateY(-15px);} 60 | } 61 | 62 | @-moz-keyframes bounce { 63 | 0%, 20%, 50%, 80%, 100% {-moz-transform: translateY(0);} 64 | 40% {-moz-transform: translateY(-30px);} 65 | 60% {-moz-transform: translateY(-15px);} 66 | } 67 | 68 | @-o-keyframes bounce { 69 | 0%, 20%, 50%, 80%, 100% {-o-transform: translateY(0);} 70 | 40% {-o-transform: translateY(-30px);} 71 | 60% {-o-transform: translateY(-15px);} 72 | } 73 | @keyframes bounce { 74 | 0%, 20%, 50%, 80%, 100% {transform: translateY(0);} 75 | 40% {transform: translateY(-30px);} 76 | 60% {transform: translateY(-15px);} 77 | } 78 | 79 | .bounce { 80 | -webkit-animation-name: bounce; 81 | -moz-animation-name: bounce; 82 | -o-animation-name: bounce; 83 | animation-name: bounce; 84 | } 85 | @-webkit-keyframes tada { 86 | 0% {-webkit-transform: scale(1);} 87 | 10%, 20% {-webkit-transform: scale(0.9) rotate(-3deg);} 88 | 30%, 50%, 70%, 90% {-webkit-transform: scale(1.1) rotate(3deg);} 89 | 40%, 60%, 80% {-webkit-transform: scale(1.1) rotate(-3deg);} 90 | 100% {-webkit-transform: scale(1) rotate(0);} 91 | } 92 | 93 | @-moz-keyframes tada { 94 | 0% {-moz-transform: scale(1);} 95 | 10%, 20% {-moz-transform: scale(0.9) rotate(-3deg);} 96 | 30%, 50%, 70%, 90% {-moz-transform: scale(1.1) rotate(3deg);} 97 | 40%, 60%, 80% {-moz-transform: scale(1.1) rotate(-3deg);} 98 | 100% {-moz-transform: scale(1) rotate(0);} 99 | } 100 | 101 | @-o-keyframes tada { 102 | 0% {-o-transform: scale(1);} 103 | 10%, 20% {-o-transform: scale(0.9) rotate(-3deg);} 104 | 30%, 50%, 70%, 90% {-o-transform: scale(1.1) rotate(3deg);} 105 | 40%, 60%, 80% {-o-transform: scale(1.1) rotate(-3deg);} 106 | 100% {-o-transform: scale(1) rotate(0);} 107 | } 108 | 109 | @keyframes tada { 110 | 0% {transform: scale(1);} 111 | 10%, 20% {transform: scale(0.9) rotate(-3deg);} 112 | 30%, 50%, 70%, 90% {transform: scale(1.1) rotate(3deg);} 113 | 40%, 60%, 80% {transform: scale(1.1) rotate(-3deg);} 114 | 100% {transform: scale(1) rotate(0);} 115 | } 116 | 117 | .tada { 118 | -webkit-animation-name: tada; 119 | -moz-animation-name: tada; 120 | -o-animation-name: tada; 121 | animation-name: tada; 122 | } 123 | @-webkit-keyframes swing { 124 | 20%, 40%, 60%, 80%, 100% { -webkit-transform-origin: top center; } 125 | 20% { -webkit-transform: rotate(15deg); } 126 | 40% { -webkit-transform: rotate(-10deg); } 127 | 60% { -webkit-transform: rotate(5deg); } 128 | 80% { -webkit-transform: rotate(-5deg); } 129 | 100% { -webkit-transform: rotate(0deg); } 130 | } 131 | 132 | @-moz-keyframes swing { 133 | 20% { -moz-transform: rotate(15deg); } 134 | 40% { -moz-transform: rotate(-10deg); } 135 | 60% { -moz-transform: rotate(5deg); } 136 | 80% { -moz-transform: rotate(-5deg); } 137 | 100% { -moz-transform: rotate(0deg); } 138 | } 139 | 140 | @-o-keyframes swing { 141 | 20% { -o-transform: rotate(15deg); } 142 | 40% { -o-transform: rotate(-10deg); } 143 | 60% { -o-transform: rotate(5deg); } 144 | 80% { -o-transform: rotate(-5deg); } 145 | 100% { -o-transform: rotate(0deg); } 146 | } 147 | 148 | @keyframes swing { 149 | 20% { transform: rotate(15deg); } 150 | 40% { transform: rotate(-10deg); } 151 | 60% { transform: rotate(5deg); } 152 | 80% { transform: rotate(-5deg); } 153 | 100% { transform: rotate(0deg); } 154 | } 155 | 156 | .swing { 157 | -webkit-transform-origin: top center; 158 | -moz-transform-origin: top center; 159 | -o-transform-origin: top center; 160 | transform-origin: top center; 161 | -webkit-animation-name: swing; 162 | -moz-animation-name: swing; 163 | -o-animation-name: swing; 164 | animation-name: swing; 165 | } 166 | /* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ 167 | 168 | @-webkit-keyframes wobble { 169 | 0% { -webkit-transform: translateX(0%); } 170 | 15% { -webkit-transform: translateX(-25%) rotate(-5deg); } 171 | 30% { -webkit-transform: translateX(20%) rotate(3deg); } 172 | 45% { -webkit-transform: translateX(-15%) rotate(-3deg); } 173 | 60% { -webkit-transform: translateX(10%) rotate(2deg); } 174 | 75% { -webkit-transform: translateX(-5%) rotate(-1deg); } 175 | 100% { -webkit-transform: translateX(0%); } 176 | } 177 | 178 | @-moz-keyframes wobble { 179 | 0% { -moz-transform: translateX(0%); } 180 | 15% { -moz-transform: translateX(-25%) rotate(-5deg); } 181 | 30% { -moz-transform: translateX(20%) rotate(3deg); } 182 | 45% { -moz-transform: translateX(-15%) rotate(-3deg); } 183 | 60% { -moz-transform: translateX(10%) rotate(2deg); } 184 | 75% { -moz-transform: translateX(-5%) rotate(-1deg); } 185 | 100% { -moz-transform: translateX(0%); } 186 | } 187 | 188 | @-o-keyframes wobble { 189 | 0% { -o-transform: translateX(0%); } 190 | 15% { -o-transform: translateX(-25%) rotate(-5deg); } 191 | 30% { -o-transform: translateX(20%) rotate(3deg); } 192 | 45% { -o-transform: translateX(-15%) rotate(-3deg); } 193 | 60% { -o-transform: translateX(10%) rotate(2deg); } 194 | 75% { -o-transform: translateX(-5%) rotate(-1deg); } 195 | 100% { -o-transform: translateX(0%); } 196 | } 197 | 198 | @keyframes wobble { 199 | 0% { transform: translateX(0%); } 200 | 15% { transform: translateX(-25%) rotate(-5deg); } 201 | 30% { transform: translateX(20%) rotate(3deg); } 202 | 45% { transform: translateX(-15%) rotate(-3deg); } 203 | 60% { transform: translateX(10%) rotate(2deg); } 204 | 75% { transform: translateX(-5%) rotate(-1deg); } 205 | 100% { transform: translateX(0%); } 206 | } 207 | 208 | .wobble { 209 | -webkit-animation-name: wobble; 210 | -moz-animation-name: wobble; 211 | -o-animation-name: wobble; 212 | animation-name: wobble; 213 | } 214 | /* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ 215 | 216 | @-webkit-keyframes pulse { 217 | 0% { -webkit-transform: scale(1); } 218 | 50% { -webkit-transform: scale(1.1); } 219 | 100% { -webkit-transform: scale(1); } 220 | } 221 | @-moz-keyframes pulse { 222 | 0% { -moz-transform: scale(1); } 223 | 50% { -moz-transform: scale(1.1); } 224 | 100% { -moz-transform: scale(1); } 225 | } 226 | @-o-keyframes pulse { 227 | 0% { -o-transform: scale(1); } 228 | 50% { -o-transform: scale(1.1); } 229 | 100% { -o-transform: scale(1); } 230 | } 231 | @keyframes pulse { 232 | 0% { transform: scale(1); } 233 | 50% { transform: scale(1.1); } 234 | 100% { transform: scale(1); } 235 | } 236 | 237 | .pulse { 238 | -webkit-animation-name: pulse; 239 | -moz-animation-name: pulse; 240 | -o-animation-name: pulse; 241 | animation-name: pulse; 242 | } 243 | @-webkit-keyframes flip { 244 | 0% { 245 | -webkit-transform: perspective(400px) translateZ(0) rotateY(0) scale(1); 246 | -webkit-animation-timing-function: ease-out; 247 | } 248 | 40% { 249 | -webkit-transform: perspective(400px) translateZ(150px) rotateY(170deg) scale(1); 250 | -webkit-animation-timing-function: ease-out; 251 | } 252 | 50% { 253 | -webkit-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1); 254 | -webkit-animation-timing-function: ease-in; 255 | } 256 | 80% { 257 | -webkit-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(.95); 258 | -webkit-animation-timing-function: ease-in; 259 | } 260 | 100% { 261 | -webkit-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(1); 262 | -webkit-animation-timing-function: ease-in; 263 | } 264 | } 265 | @-moz-keyframes flip { 266 | 0% { 267 | -moz-transform: perspective(400px) translateZ(0) rotateY(0) scale(1); 268 | -moz-animation-timing-function: ease-out; 269 | } 270 | 40% { 271 | -moz-transform: perspective(400px) translateZ(150px) rotateY(170deg) scale(1); 272 | -moz-animation-timing-function: ease-out; 273 | } 274 | 50% { 275 | -moz-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1); 276 | -moz-animation-timing-function: ease-in; 277 | } 278 | 80% { 279 | -moz-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(.95); 280 | -moz-animation-timing-function: ease-in; 281 | } 282 | 100% { 283 | -moz-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(1); 284 | -moz-animation-timing-function: ease-in; 285 | } 286 | } 287 | @-o-keyframes flip { 288 | 0% { 289 | -o-transform: perspective(400px) translateZ(0) rotateY(0) scale(1); 290 | -o-animation-timing-function: ease-out; 291 | } 292 | 40% { 293 | -o-transform: perspective(400px) translateZ(150px) rotateY(170deg) scale(1); 294 | -o-animation-timing-function: ease-out; 295 | } 296 | 50% { 297 | -o-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1); 298 | -o-animation-timing-function: ease-in; 299 | } 300 | 80% { 301 | -o-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(.95); 302 | -o-animation-timing-function: ease-in; 303 | } 304 | 100% { 305 | -o-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(1); 306 | -o-animation-timing-function: ease-in; 307 | } 308 | } 309 | @keyframes flip { 310 | 0% { 311 | transform: perspective(400px) translateZ(0) rotateY(0) scale(1); 312 | animation-timing-function: ease-out; 313 | } 314 | 40% { 315 | transform: perspective(400px) translateZ(150px) rotateY(170deg) scale(1); 316 | animation-timing-function: ease-out; 317 | } 318 | 50% { 319 | transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1); 320 | animation-timing-function: ease-in; 321 | } 322 | 80% { 323 | transform: perspective(400px) translateZ(0) rotateY(360deg) scale(.95); 324 | animation-timing-function: ease-in; 325 | } 326 | 100% { 327 | transform: perspective(400px) translateZ(0) rotateY(360deg) scale(1); 328 | animation-timing-function: ease-in; 329 | } 330 | } 331 | 332 | .animated.flip { 333 | -webkit-backface-visibility: visible !important; 334 | -webkit-animation-name: flip; 335 | -moz-backface-visibility: visible !important; 336 | -moz-animation-name: flip; 337 | -o-backface-visibility: visible !important; 338 | -o-animation-name: flip; 339 | backface-visibility: visible !important; 340 | animation-name: flip; 341 | } 342 | 343 | @-webkit-keyframes flipInX { 344 | 0% { 345 | -webkit-transform: perspective(400px) rotateX(90deg); 346 | opacity: 0; 347 | } 348 | 349 | 40% { 350 | -webkit-transform: perspective(400px) rotateX(-10deg); 351 | } 352 | 353 | 70% { 354 | -webkit-transform: perspective(400px) rotateX(10deg); 355 | } 356 | 357 | 100% { 358 | -webkit-transform: perspective(400px) rotateX(0deg); 359 | opacity: 1; 360 | } 361 | } 362 | @-moz-keyframes flipInX { 363 | 0% { 364 | -moz-transform: perspective(400px) rotateX(90deg); 365 | opacity: 0; 366 | } 367 | 368 | 40% { 369 | -moz-transform: perspective(400px) rotateX(-10deg); 370 | } 371 | 372 | 70% { 373 | -moz-transform: perspective(400px) rotateX(10deg); 374 | } 375 | 376 | 100% { 377 | -moz-transform: perspective(400px) rotateX(0deg); 378 | opacity: 1; 379 | } 380 | } 381 | @-o-keyframes flipInX { 382 | 0% { 383 | -o-transform: perspective(400px) rotateX(90deg); 384 | opacity: 0; 385 | } 386 | 387 | 40% { 388 | -o-transform: perspective(400px) rotateX(-10deg); 389 | } 390 | 391 | 70% { 392 | -o-transform: perspective(400px) rotateX(10deg); 393 | } 394 | 395 | 100% { 396 | -o-transform: perspective(400px) rotateX(0deg); 397 | opacity: 1; 398 | } 399 | } 400 | @keyframes flipInX { 401 | 0% { 402 | transform: perspective(400px) rotateX(90deg); 403 | opacity: 0; 404 | } 405 | 406 | 40% { 407 | transform: perspective(400px) rotateX(-10deg); 408 | } 409 | 410 | 70% { 411 | transform: perspective(400px) rotateX(10deg); 412 | } 413 | 414 | 100% { 415 | transform: perspective(400px) rotateX(0deg); 416 | opacity: 1; 417 | } 418 | } 419 | 420 | .flipInX { 421 | -webkit-backface-visibility: visible !important; 422 | -webkit-animation-name: flipInX; 423 | -moz-backface-visibility: visible !important; 424 | -moz-animation-name: flipInX; 425 | -o-backface-visibility: visible !important; 426 | -o-animation-name: flipInX; 427 | backface-visibility: visible !important; 428 | animation-name: flipInX; 429 | } 430 | @-webkit-keyframes flipOutX { 431 | 0% { 432 | -webkit-transform: perspective(400px) rotateX(0deg); 433 | opacity: 1; 434 | } 435 | 100% { 436 | -webkit-transform: perspective(400px) rotateX(90deg); 437 | opacity: 0; 438 | } 439 | } 440 | 441 | @-moz-keyframes flipOutX { 442 | 0% { 443 | -moz-transform: perspective(400px) rotateX(0deg); 444 | opacity: 1; 445 | } 446 | 100% { 447 | -moz-transform: perspective(400px) rotateX(90deg); 448 | opacity: 0; 449 | } 450 | } 451 | 452 | @-o-keyframes flipOutX { 453 | 0% { 454 | -o-transform: perspective(400px) rotateX(0deg); 455 | opacity: 1; 456 | } 457 | 100% { 458 | -o-transform: perspective(400px) rotateX(90deg); 459 | opacity: 0; 460 | } 461 | } 462 | 463 | @keyframes flipOutX { 464 | 0% { 465 | transform: perspective(400px) rotateX(0deg); 466 | opacity: 1; 467 | } 468 | 100% { 469 | transform: perspective(400px) rotateX(90deg); 470 | opacity: 0; 471 | } 472 | } 473 | 474 | .flipOutX { 475 | -webkit-animation-name: flipOutX; 476 | -webkit-backface-visibility: visible !important; 477 | -moz-animation-name: flipOutX; 478 | -moz-backface-visibility: visible !important; 479 | -o-animation-name: flipOutX; 480 | -o-backface-visibility: visible !important; 481 | animation-name: flipOutX; 482 | backface-visibility: visible !important; 483 | } 484 | @-webkit-keyframes flipInY { 485 | 0% { 486 | -webkit-transform: perspective(400px) rotateY(90deg); 487 | opacity: 0; 488 | } 489 | 490 | 40% { 491 | -webkit-transform: perspective(400px) rotateY(-10deg); 492 | } 493 | 494 | 70% { 495 | -webkit-transform: perspective(400px) rotateY(10deg); 496 | } 497 | 498 | 100% { 499 | -webkit-transform: perspective(400px) rotateY(0deg); 500 | opacity: 1; 501 | } 502 | } 503 | @-moz-keyframes flipInY { 504 | 0% { 505 | -moz-transform: perspective(400px) rotateY(90deg); 506 | opacity: 0; 507 | } 508 | 509 | 40% { 510 | -moz-transform: perspective(400px) rotateY(-10deg); 511 | } 512 | 513 | 70% { 514 | -moz-transform: perspective(400px) rotateY(10deg); 515 | } 516 | 517 | 100% { 518 | -moz-transform: perspective(400px) rotateY(0deg); 519 | opacity: 1; 520 | } 521 | } 522 | @-o-keyframes flipInY { 523 | 0% { 524 | -o-transform: perspective(400px) rotateY(90deg); 525 | opacity: 0; 526 | } 527 | 528 | 40% { 529 | -o-transform: perspective(400px) rotateY(-10deg); 530 | } 531 | 532 | 70% { 533 | -o-transform: perspective(400px) rotateY(10deg); 534 | } 535 | 536 | 100% { 537 | -o-transform: perspective(400px) rotateY(0deg); 538 | opacity: 1; 539 | } 540 | } 541 | @keyframes flipInY { 542 | 0% { 543 | transform: perspective(400px) rotateY(90deg); 544 | opacity: 0; 545 | } 546 | 547 | 40% { 548 | transform: perspective(400px) rotateY(-10deg); 549 | } 550 | 551 | 70% { 552 | transform: perspective(400px) rotateY(10deg); 553 | } 554 | 555 | 100% { 556 | transform: perspective(400px) rotateY(0deg); 557 | opacity: 1; 558 | } 559 | } 560 | 561 | .flipInY { 562 | -webkit-backface-visibility: visible !important; 563 | -webkit-animation-name: flipInY; 564 | -moz-backface-visibility: visible !important; 565 | -moz-animation-name: flipInY; 566 | -o-backface-visibility: visible !important; 567 | -o-animation-name: flipInY; 568 | backface-visibility: visible !important; 569 | animation-name: flipInY; 570 | } 571 | @-webkit-keyframes flipOutY { 572 | 0% { 573 | -webkit-transform: perspective(400px) rotateY(0deg); 574 | opacity: 1; 575 | } 576 | 100% { 577 | -webkit-transform: perspective(400px) rotateY(90deg); 578 | opacity: 0; 579 | } 580 | } 581 | @-moz-keyframes flipOutY { 582 | 0% { 583 | -moz-transform: perspective(400px) rotateY(0deg); 584 | opacity: 1; 585 | } 586 | 100% { 587 | -moz-transform: perspective(400px) rotateY(90deg); 588 | opacity: 0; 589 | } 590 | } 591 | @-o-keyframes flipOutY { 592 | 0% { 593 | -o-transform: perspective(400px) rotateY(0deg); 594 | opacity: 1; 595 | } 596 | 100% { 597 | -o-transform: perspective(400px) rotateY(90deg); 598 | opacity: 0; 599 | } 600 | } 601 | @keyframes flipOutY { 602 | 0% { 603 | transform: perspective(400px) rotateY(0deg); 604 | opacity: 1; 605 | } 606 | 100% { 607 | transform: perspective(400px) rotateY(90deg); 608 | opacity: 0; 609 | } 610 | } 611 | 612 | .flipOutY { 613 | -webkit-backface-visibility: visible !important; 614 | -webkit-animation-name: flipOutY; 615 | -moz-backface-visibility: visible !important; 616 | -moz-animation-name: flipOutY; 617 | -o-backface-visibility: visible !important; 618 | -o-animation-name: flipOutY; 619 | backface-visibility: visible !important; 620 | animation-name: flipOutY; 621 | } 622 | @-webkit-keyframes fadeIn { 623 | 0% {opacity: 0;} 624 | 100% {opacity: 1;} 625 | } 626 | 627 | @-moz-keyframes fadeIn { 628 | 0% {opacity: 0;} 629 | 100% {opacity: 1;} 630 | } 631 | 632 | @-o-keyframes fadeIn { 633 | 0% {opacity: 0;} 634 | 100% {opacity: 1;} 635 | } 636 | 637 | @keyframes fadeIn { 638 | 0% {opacity: 0;} 639 | 100% {opacity: 1;} 640 | } 641 | 642 | .fadeIn { 643 | -webkit-animation-name: fadeIn; 644 | -moz-animation-name: fadeIn; 645 | -o-animation-name: fadeIn; 646 | animation-name: fadeIn; 647 | } 648 | @-webkit-keyframes fadeInUp { 649 | 0% { 650 | opacity: 0; 651 | -webkit-transform: translateY(20px); 652 | } 653 | 654 | 100% { 655 | opacity: 1; 656 | -webkit-transform: translateY(0); 657 | } 658 | } 659 | 660 | @-moz-keyframes fadeInUp { 661 | 0% { 662 | opacity: 0; 663 | -moz-transform: translateY(20px); 664 | } 665 | 666 | 100% { 667 | opacity: 1; 668 | -moz-transform: translateY(0); 669 | } 670 | } 671 | 672 | @-o-keyframes fadeInUp { 673 | 0% { 674 | opacity: 0; 675 | -o-transform: translateY(20px); 676 | } 677 | 678 | 100% { 679 | opacity: 1; 680 | -o-transform: translateY(0); 681 | } 682 | } 683 | 684 | @keyframes fadeInUp { 685 | 0% { 686 | opacity: 0; 687 | transform: translateY(20px); 688 | } 689 | 690 | 100% { 691 | opacity: 1; 692 | transform: translateY(0); 693 | } 694 | } 695 | 696 | .fadeInUp { 697 | -webkit-animation-name: fadeInUp; 698 | -moz-animation-name: fadeInUp; 699 | -o-animation-name: fadeInUp; 700 | animation-name: fadeInUp; 701 | } 702 | @-webkit-keyframes fadeInDown { 703 | 0% { 704 | opacity: 0; 705 | -webkit-transform: translateY(-20px); 706 | } 707 | 708 | 100% { 709 | opacity: 1; 710 | -webkit-transform: translateY(0); 711 | } 712 | } 713 | 714 | @-moz-keyframes fadeInDown { 715 | 0% { 716 | opacity: 0; 717 | -moz-transform: translateY(-20px); 718 | } 719 | 720 | 100% { 721 | opacity: 1; 722 | -moz-transform: translateY(0); 723 | } 724 | } 725 | 726 | @-o-keyframes fadeInDown { 727 | 0% { 728 | opacity: 0; 729 | -o-transform: translateY(-20px); 730 | } 731 | 732 | 100% { 733 | opacity: 1; 734 | -o-transform: translateY(0); 735 | } 736 | } 737 | 738 | @keyframes fadeInDown { 739 | 0% { 740 | opacity: 0; 741 | transform: translateY(-20px); 742 | } 743 | 744 | 100% { 745 | opacity: 1; 746 | transform: translateY(0); 747 | } 748 | } 749 | 750 | .fadeInDown { 751 | -webkit-animation-name: fadeInDown; 752 | -moz-animation-name: fadeInDown; 753 | -o-animation-name: fadeInDown; 754 | animation-name: fadeInDown; 755 | } 756 | @-webkit-keyframes fadeInLeft { 757 | 0% { 758 | opacity: 0; 759 | -webkit-transform: translateX(-20px); 760 | } 761 | 762 | 100% { 763 | opacity: 1; 764 | -webkit-transform: translateX(0); 765 | } 766 | } 767 | 768 | @-moz-keyframes fadeInLeft { 769 | 0% { 770 | opacity: 0; 771 | -moz-transform: translateX(-20px); 772 | } 773 | 774 | 100% { 775 | opacity: 1; 776 | -moz-transform: translateX(0); 777 | } 778 | } 779 | 780 | @-o-keyframes fadeInLeft { 781 | 0% { 782 | opacity: 0; 783 | -o-transform: translateX(-20px); 784 | } 785 | 786 | 100% { 787 | opacity: 1; 788 | -o-transform: translateX(0); 789 | } 790 | } 791 | 792 | @keyframes fadeInLeft { 793 | 0% { 794 | opacity: 0; 795 | transform: translateX(-20px); 796 | } 797 | 798 | 100% { 799 | opacity: 1; 800 | transform: translateX(0); 801 | } 802 | } 803 | 804 | .fadeInLeft { 805 | -webkit-animation-name: fadeInLeft; 806 | -moz-animation-name: fadeInLeft; 807 | -o-animation-name: fadeInLeft; 808 | animation-name: fadeInLeft; 809 | } 810 | @-webkit-keyframes fadeInRight { 811 | 0% { 812 | opacity: 0; 813 | -webkit-transform: translateX(20px); 814 | } 815 | 816 | 100% { 817 | opacity: 1; 818 | -webkit-transform: translateX(0); 819 | } 820 | } 821 | 822 | @-moz-keyframes fadeInRight { 823 | 0% { 824 | opacity: 0; 825 | -moz-transform: translateX(20px); 826 | } 827 | 828 | 100% { 829 | opacity: 1; 830 | -moz-transform: translateX(0); 831 | } 832 | } 833 | 834 | @-o-keyframes fadeInRight { 835 | 0% { 836 | opacity: 0; 837 | -o-transform: translateX(20px); 838 | } 839 | 840 | 100% { 841 | opacity: 1; 842 | -o-transform: translateX(0); 843 | } 844 | } 845 | 846 | @keyframes fadeInRight { 847 | 0% { 848 | opacity: 0; 849 | transform: translateX(20px); 850 | } 851 | 852 | 100% { 853 | opacity: 1; 854 | transform: translateX(0); 855 | } 856 | } 857 | 858 | .fadeInRight { 859 | -webkit-animation-name: fadeInRight; 860 | -moz-animation-name: fadeInRight; 861 | -o-animation-name: fadeInRight; 862 | animation-name: fadeInRight; 863 | } 864 | @-webkit-keyframes fadeInUpBig { 865 | 0% { 866 | opacity: 0; 867 | -webkit-transform: translateY(2000px); 868 | } 869 | 870 | 100% { 871 | opacity: 1; 872 | -webkit-transform: translateY(0); 873 | } 874 | } 875 | 876 | @-moz-keyframes fadeInUpBig { 877 | 0% { 878 | opacity: 0; 879 | -moz-transform: translateY(2000px); 880 | } 881 | 882 | 100% { 883 | opacity: 1; 884 | -moz-transform: translateY(0); 885 | } 886 | } 887 | 888 | @-o-keyframes fadeInUpBig { 889 | 0% { 890 | opacity: 0; 891 | -o-transform: translateY(2000px); 892 | } 893 | 894 | 100% { 895 | opacity: 1; 896 | -o-transform: translateY(0); 897 | } 898 | } 899 | 900 | @keyframes fadeInUpBig { 901 | 0% { 902 | opacity: 0; 903 | transform: translateY(2000px); 904 | } 905 | 906 | 100% { 907 | opacity: 1; 908 | transform: translateY(0); 909 | } 910 | } 911 | 912 | .fadeInUpBig { 913 | -webkit-animation-name: fadeInUpBig; 914 | -moz-animation-name: fadeInUpBig; 915 | -o-animation-name: fadeInUpBig; 916 | animation-name: fadeInUpBig; 917 | } 918 | @-webkit-keyframes fadeInDownBig { 919 | 0% { 920 | opacity: 0; 921 | -webkit-transform: translateY(-2000px); 922 | } 923 | 924 | 100% { 925 | opacity: 1; 926 | -webkit-transform: translateY(0); 927 | } 928 | } 929 | 930 | @-moz-keyframes fadeInDownBig { 931 | 0% { 932 | opacity: 0; 933 | -moz-transform: translateY(-2000px); 934 | } 935 | 936 | 100% { 937 | opacity: 1; 938 | -moz-transform: translateY(0); 939 | } 940 | } 941 | 942 | @-o-keyframes fadeInDownBig { 943 | 0% { 944 | opacity: 0; 945 | -o-transform: translateY(-2000px); 946 | } 947 | 948 | 100% { 949 | opacity: 1; 950 | -o-transform: translateY(0); 951 | } 952 | } 953 | 954 | @keyframes fadeInDownBig { 955 | 0% { 956 | opacity: 0; 957 | transform: translateY(-2000px); 958 | } 959 | 960 | 100% { 961 | opacity: 1; 962 | transform: translateY(0); 963 | } 964 | } 965 | 966 | .fadeInDownBig { 967 | -webkit-animation-name: fadeInDownBig; 968 | -moz-animation-name: fadeInDownBig; 969 | -o-animation-name: fadeInDownBig; 970 | animation-name: fadeInDownBig; 971 | } 972 | @-webkit-keyframes fadeInLeftBig { 973 | 0% { 974 | opacity: 0; 975 | -webkit-transform: translateX(-2000px); 976 | } 977 | 978 | 100% { 979 | opacity: 1; 980 | -webkit-transform: translateX(0); 981 | } 982 | } 983 | @-moz-keyframes fadeInLeftBig { 984 | 0% { 985 | opacity: 0; 986 | -moz-transform: translateX(-2000px); 987 | } 988 | 989 | 100% { 990 | opacity: 1; 991 | -moz-transform: translateX(0); 992 | } 993 | } 994 | @-o-keyframes fadeInLeftBig { 995 | 0% { 996 | opacity: 0; 997 | -o-transform: translateX(-2000px); 998 | } 999 | 1000 | 100% { 1001 | opacity: 1; 1002 | -o-transform: translateX(0); 1003 | } 1004 | } 1005 | @keyframes fadeInLeftBig { 1006 | 0% { 1007 | opacity: 0; 1008 | transform: translateX(-2000px); 1009 | } 1010 | 1011 | 100% { 1012 | opacity: 1; 1013 | transform: translateX(0); 1014 | } 1015 | } 1016 | 1017 | .fadeInLeftBig { 1018 | -webkit-animation-name: fadeInLeftBig; 1019 | -moz-animation-name: fadeInLeftBig; 1020 | -o-animation-name: fadeInLeftBig; 1021 | animation-name: fadeInLeftBig; 1022 | } 1023 | @-webkit-keyframes fadeInRightBig { 1024 | 0% { 1025 | opacity: 0; 1026 | -webkit-transform: translateX(2000px); 1027 | } 1028 | 1029 | 100% { 1030 | opacity: 1; 1031 | -webkit-transform: translateX(0); 1032 | } 1033 | } 1034 | 1035 | @-moz-keyframes fadeInRightBig { 1036 | 0% { 1037 | opacity: 0; 1038 | -moz-transform: translateX(2000px); 1039 | } 1040 | 1041 | 100% { 1042 | opacity: 1; 1043 | -moz-transform: translateX(0); 1044 | } 1045 | } 1046 | 1047 | @-o-keyframes fadeInRightBig { 1048 | 0% { 1049 | opacity: 0; 1050 | -o-transform: translateX(2000px); 1051 | } 1052 | 1053 | 100% { 1054 | opacity: 1; 1055 | -o-transform: translateX(0); 1056 | } 1057 | } 1058 | 1059 | @keyframes fadeInRightBig { 1060 | 0% { 1061 | opacity: 0; 1062 | transform: translateX(2000px); 1063 | } 1064 | 1065 | 100% { 1066 | opacity: 1; 1067 | transform: translateX(0); 1068 | } 1069 | } 1070 | 1071 | .fadeInRightBig { 1072 | -webkit-animation-name: fadeInRightBig; 1073 | -moz-animation-name: fadeInRightBig; 1074 | -o-animation-name: fadeInRightBig; 1075 | animation-name: fadeInRightBig; 1076 | } 1077 | @-webkit-keyframes fadeOut { 1078 | 0% {opacity: 1;} 1079 | 100% {opacity: 0;} 1080 | } 1081 | 1082 | @-moz-keyframes fadeOut { 1083 | 0% {opacity: 1;} 1084 | 100% {opacity: 0;} 1085 | } 1086 | 1087 | @-o-keyframes fadeOut { 1088 | 0% {opacity: 1;} 1089 | 100% {opacity: 0;} 1090 | } 1091 | 1092 | @keyframes fadeOut { 1093 | 0% {opacity: 1;} 1094 | 100% {opacity: 0;} 1095 | } 1096 | 1097 | .fadeOut { 1098 | -webkit-animation-name: fadeOut; 1099 | -moz-animation-name: fadeOut; 1100 | -o-animation-name: fadeOut; 1101 | animation-name: fadeOut; 1102 | } 1103 | @-webkit-keyframes fadeOutUp { 1104 | 0% { 1105 | opacity: 1; 1106 | -webkit-transform: translateY(0); 1107 | } 1108 | 1109 | 100% { 1110 | opacity: 0; 1111 | -webkit-transform: translateY(-20px); 1112 | } 1113 | } 1114 | @-moz-keyframes fadeOutUp { 1115 | 0% { 1116 | opacity: 1; 1117 | -moz-transform: translateY(0); 1118 | } 1119 | 1120 | 100% { 1121 | opacity: 0; 1122 | -moz-transform: translateY(-20px); 1123 | } 1124 | } 1125 | @-o-keyframes fadeOutUp { 1126 | 0% { 1127 | opacity: 1; 1128 | -o-transform: translateY(0); 1129 | } 1130 | 1131 | 100% { 1132 | opacity: 0; 1133 | -o-transform: translateY(-20px); 1134 | } 1135 | } 1136 | @keyframes fadeOutUp { 1137 | 0% { 1138 | opacity: 1; 1139 | transform: translateY(0); 1140 | } 1141 | 1142 | 100% { 1143 | opacity: 0; 1144 | transform: translateY(-20px); 1145 | } 1146 | } 1147 | 1148 | .fadeOutUp { 1149 | -webkit-animation-name: fadeOutUp; 1150 | -moz-animation-name: fadeOutUp; 1151 | -o-animation-name: fadeOutUp; 1152 | animation-name: fadeOutUp; 1153 | } 1154 | @-webkit-keyframes fadeOutDown { 1155 | 0% { 1156 | opacity: 1; 1157 | -webkit-transform: translateY(0); 1158 | } 1159 | 1160 | 100% { 1161 | opacity: 0; 1162 | -webkit-transform: translateY(20px); 1163 | } 1164 | } 1165 | 1166 | @-moz-keyframes fadeOutDown { 1167 | 0% { 1168 | opacity: 1; 1169 | -moz-transform: translateY(0); 1170 | } 1171 | 1172 | 100% { 1173 | opacity: 0; 1174 | -moz-transform: translateY(20px); 1175 | } 1176 | } 1177 | 1178 | @-o-keyframes fadeOutDown { 1179 | 0% { 1180 | opacity: 1; 1181 | -o-transform: translateY(0); 1182 | } 1183 | 1184 | 100% { 1185 | opacity: 0; 1186 | -o-transform: translateY(20px); 1187 | } 1188 | } 1189 | 1190 | @keyframes fadeOutDown { 1191 | 0% { 1192 | opacity: 1; 1193 | transform: translateY(0); 1194 | } 1195 | 1196 | 100% { 1197 | opacity: 0; 1198 | transform: translateY(20px); 1199 | } 1200 | } 1201 | 1202 | .fadeOutDown { 1203 | -webkit-animation-name: fadeOutDown; 1204 | -moz-animation-name: fadeOutDown; 1205 | -o-animation-name: fadeOutDown; 1206 | animation-name: fadeOutDown; 1207 | } 1208 | @-webkit-keyframes fadeOutLeft { 1209 | 0% { 1210 | opacity: 1; 1211 | -webkit-transform: translateX(0); 1212 | } 1213 | 1214 | 100% { 1215 | opacity: 0; 1216 | -webkit-transform: translateX(-20px); 1217 | } 1218 | } 1219 | 1220 | @-moz-keyframes fadeOutLeft { 1221 | 0% { 1222 | opacity: 1; 1223 | -moz-transform: translateX(0); 1224 | } 1225 | 1226 | 100% { 1227 | opacity: 0; 1228 | -moz-transform: translateX(-20px); 1229 | } 1230 | } 1231 | 1232 | @-o-keyframes fadeOutLeft { 1233 | 0% { 1234 | opacity: 1; 1235 | -o-transform: translateX(0); 1236 | } 1237 | 1238 | 100% { 1239 | opacity: 0; 1240 | -o-transform: translateX(-20px); 1241 | } 1242 | } 1243 | 1244 | @keyframes fadeOutLeft { 1245 | 0% { 1246 | opacity: 1; 1247 | transform: translateX(0); 1248 | } 1249 | 1250 | 100% { 1251 | opacity: 0; 1252 | transform: translateX(-20px); 1253 | } 1254 | } 1255 | 1256 | .fadeOutLeft { 1257 | -webkit-animation-name: fadeOutLeft; 1258 | -moz-animation-name: fadeOutLeft; 1259 | -o-animation-name: fadeOutLeft; 1260 | animation-name: fadeOutLeft; 1261 | } 1262 | @-webkit-keyframes fadeOutRight { 1263 | 0% { 1264 | opacity: 1; 1265 | -webkit-transform: translateX(0); 1266 | } 1267 | 1268 | 100% { 1269 | opacity: 0; 1270 | -webkit-transform: translateX(20px); 1271 | } 1272 | } 1273 | 1274 | @-moz-keyframes fadeOutRight { 1275 | 0% { 1276 | opacity: 1; 1277 | -moz-transform: translateX(0); 1278 | } 1279 | 1280 | 100% { 1281 | opacity: 0; 1282 | -moz-transform: translateX(20px); 1283 | } 1284 | } 1285 | 1286 | @-o-keyframes fadeOutRight { 1287 | 0% { 1288 | opacity: 1; 1289 | -o-transform: translateX(0); 1290 | } 1291 | 1292 | 100% { 1293 | opacity: 0; 1294 | -o-transform: translateX(20px); 1295 | } 1296 | } 1297 | 1298 | @keyframes fadeOutRight { 1299 | 0% { 1300 | opacity: 1; 1301 | transform: translateX(0); 1302 | } 1303 | 1304 | 100% { 1305 | opacity: 0; 1306 | transform: translateX(20px); 1307 | } 1308 | } 1309 | 1310 | .fadeOutRight { 1311 | -webkit-animation-name: fadeOutRight; 1312 | -moz-animation-name: fadeOutRight; 1313 | -o-animation-name: fadeOutRight; 1314 | animation-name: fadeOutRight; 1315 | } 1316 | @-webkit-keyframes fadeOutUpBig { 1317 | 0% { 1318 | opacity: 1; 1319 | -webkit-transform: translateY(0); 1320 | } 1321 | 1322 | 100% { 1323 | opacity: 0; 1324 | -webkit-transform: translateY(-2000px); 1325 | } 1326 | } 1327 | 1328 | @-moz-keyframes fadeOutUpBig { 1329 | 0% { 1330 | opacity: 1; 1331 | -moz-transform: translateY(0); 1332 | } 1333 | 1334 | 100% { 1335 | opacity: 0; 1336 | -moz-transform: translateY(-2000px); 1337 | } 1338 | } 1339 | 1340 | @-o-keyframes fadeOutUpBig { 1341 | 0% { 1342 | opacity: 1; 1343 | -o-transform: translateY(0); 1344 | } 1345 | 1346 | 100% { 1347 | opacity: 0; 1348 | -o-transform: translateY(-2000px); 1349 | } 1350 | } 1351 | 1352 | @keyframes fadeOutUpBig { 1353 | 0% { 1354 | opacity: 1; 1355 | transform: translateY(0); 1356 | } 1357 | 1358 | 100% { 1359 | opacity: 0; 1360 | transform: translateY(-2000px); 1361 | } 1362 | } 1363 | 1364 | .fadeOutUpBig { 1365 | -webkit-animation-name: fadeOutUpBig; 1366 | -moz-animation-name: fadeOutUpBig; 1367 | -o-animation-name: fadeOutUpBig; 1368 | animation-name: fadeOutUpBig; 1369 | } 1370 | @-webkit-keyframes fadeOutDownBig { 1371 | 0% { 1372 | opacity: 1; 1373 | -webkit-transform: translateY(0); 1374 | } 1375 | 1376 | 100% { 1377 | opacity: 0; 1378 | -webkit-transform: translateY(2000px); 1379 | } 1380 | } 1381 | 1382 | @-moz-keyframes fadeOutDownBig { 1383 | 0% { 1384 | opacity: 1; 1385 | -moz-transform: translateY(0); 1386 | } 1387 | 1388 | 100% { 1389 | opacity: 0; 1390 | -moz-transform: translateY(2000px); 1391 | } 1392 | } 1393 | 1394 | @-o-keyframes fadeOutDownBig { 1395 | 0% { 1396 | opacity: 1; 1397 | -o-transform: translateY(0); 1398 | } 1399 | 1400 | 100% { 1401 | opacity: 0; 1402 | -o-transform: translateY(2000px); 1403 | } 1404 | } 1405 | 1406 | @keyframes fadeOutDownBig { 1407 | 0% { 1408 | opacity: 1; 1409 | transform: translateY(0); 1410 | } 1411 | 1412 | 100% { 1413 | opacity: 0; 1414 | transform: translateY(2000px); 1415 | } 1416 | } 1417 | 1418 | .fadeOutDownBig { 1419 | -webkit-animation-name: fadeOutDownBig; 1420 | -moz-animation-name: fadeOutDownBig; 1421 | -o-animation-name: fadeOutDownBig; 1422 | animation-name: fadeOutDownBig; 1423 | } 1424 | @-webkit-keyframes fadeOutLeftBig { 1425 | 0% { 1426 | opacity: 1; 1427 | -webkit-transform: translateX(0); 1428 | } 1429 | 1430 | 100% { 1431 | opacity: 0; 1432 | -webkit-transform: translateX(-2000px); 1433 | } 1434 | } 1435 | 1436 | @-moz-keyframes fadeOutLeftBig { 1437 | 0% { 1438 | opacity: 1; 1439 | -moz-transform: translateX(0); 1440 | } 1441 | 1442 | 100% { 1443 | opacity: 0; 1444 | -moz-transform: translateX(-2000px); 1445 | } 1446 | } 1447 | 1448 | @-o-keyframes fadeOutLeftBig { 1449 | 0% { 1450 | opacity: 1; 1451 | -o-transform: translateX(0); 1452 | } 1453 | 1454 | 100% { 1455 | opacity: 0; 1456 | -o-transform: translateX(-2000px); 1457 | } 1458 | } 1459 | 1460 | @keyframes fadeOutLeftBig { 1461 | 0% { 1462 | opacity: 1; 1463 | transform: translateX(0); 1464 | } 1465 | 1466 | 100% { 1467 | opacity: 0; 1468 | transform: translateX(-2000px); 1469 | } 1470 | } 1471 | 1472 | .fadeOutLeftBig { 1473 | -webkit-animation-name: fadeOutLeftBig; 1474 | -moz-animation-name: fadeOutLeftBig; 1475 | -o-animation-name: fadeOutLeftBig; 1476 | animation-name: fadeOutLeftBig; 1477 | } 1478 | @-webkit-keyframes fadeOutRightBig { 1479 | 0% { 1480 | opacity: 1; 1481 | -webkit-transform: translateX(0); 1482 | } 1483 | 1484 | 100% { 1485 | opacity: 0; 1486 | -webkit-transform: translateX(2000px); 1487 | } 1488 | } 1489 | @-moz-keyframes fadeOutRightBig { 1490 | 0% { 1491 | opacity: 1; 1492 | -moz-transform: translateX(0); 1493 | } 1494 | 1495 | 100% { 1496 | opacity: 0; 1497 | -moz-transform: translateX(2000px); 1498 | } 1499 | } 1500 | @-o-keyframes fadeOutRightBig { 1501 | 0% { 1502 | opacity: 1; 1503 | -o-transform: translateX(0); 1504 | } 1505 | 1506 | 100% { 1507 | opacity: 0; 1508 | -o-transform: translateX(2000px); 1509 | } 1510 | } 1511 | @keyframes fadeOutRightBig { 1512 | 0% { 1513 | opacity: 1; 1514 | transform: translateX(0); 1515 | } 1516 | 1517 | 100% { 1518 | opacity: 0; 1519 | transform: translateX(2000px); 1520 | } 1521 | } 1522 | 1523 | .fadeOutRightBig { 1524 | -webkit-animation-name: fadeOutRightBig; 1525 | -moz-animation-name: fadeOutRightBig; 1526 | -o-animation-name: fadeOutRightBig; 1527 | animation-name: fadeOutRightBig; 1528 | } 1529 | @-webkit-keyframes slideInDown { 1530 | 0% { 1531 | opacity: 0; 1532 | -webkit-transform: translateY(-2000px); 1533 | } 1534 | 1535 | 100% { 1536 | -webkit-transform: translateY(0); 1537 | } 1538 | } 1539 | 1540 | @-moz-keyframes slideInDown { 1541 | 0% { 1542 | opacity: 0; 1543 | -moz-transform: translateY(-2000px); 1544 | } 1545 | 1546 | 100% { 1547 | -moz-transform: translateY(0); 1548 | } 1549 | } 1550 | 1551 | @-o-keyframes slideInDown { 1552 | 0% { 1553 | opacity: 0; 1554 | -o-transform: translateY(-2000px); 1555 | } 1556 | 1557 | 100% { 1558 | -o-transform: translateY(0); 1559 | } 1560 | } 1561 | 1562 | @keyframes slideInDown { 1563 | 0% { 1564 | opacity: 0; 1565 | transform: translateY(-2000px); 1566 | } 1567 | 1568 | 100% { 1569 | transform: translateY(0); 1570 | } 1571 | } 1572 | 1573 | .slideInDown { 1574 | -webkit-animation-name: slideInDown; 1575 | -moz-animation-name: slideInDown; 1576 | -o-animation-name: slideInDown; 1577 | animation-name: slideInDown; 1578 | } 1579 | @-webkit-keyframes slideInLeft { 1580 | 0% { 1581 | opacity: 0; 1582 | -webkit-transform: translateX(-2000px); 1583 | } 1584 | 1585 | 100% { 1586 | -webkit-transform: translateX(0); 1587 | } 1588 | } 1589 | 1590 | @-moz-keyframes slideInLeft { 1591 | 0% { 1592 | opacity: 0; 1593 | -moz-transform: translateX(-2000px); 1594 | } 1595 | 1596 | 100% { 1597 | -moz-transform: translateX(0); 1598 | } 1599 | } 1600 | 1601 | @-o-keyframes slideInLeft { 1602 | 0% { 1603 | opacity: 0; 1604 | -o-transform: translateX(-2000px); 1605 | } 1606 | 1607 | 100% { 1608 | -o-transform: translateX(0); 1609 | } 1610 | } 1611 | 1612 | @keyframes slideInLeft { 1613 | 0% { 1614 | opacity: 0; 1615 | transform: translateX(-2000px); 1616 | } 1617 | 1618 | 100% { 1619 | transform: translateX(0); 1620 | } 1621 | } 1622 | 1623 | .slideInLeft { 1624 | -webkit-animation-name: slideInLeft; 1625 | -moz-animation-name: slideInLeft; 1626 | -o-animation-name: slideInLeft; 1627 | animation-name: slideInLeft; 1628 | } 1629 | @-webkit-keyframes slideInRight { 1630 | 0% { 1631 | opacity: 0; 1632 | -webkit-transform: translateX(2000px); 1633 | } 1634 | 1635 | 100% { 1636 | -webkit-transform: translateX(0); 1637 | } 1638 | } 1639 | 1640 | @-moz-keyframes slideInRight { 1641 | 0% { 1642 | opacity: 0; 1643 | -moz-transform: translateX(2000px); 1644 | } 1645 | 1646 | 100% { 1647 | -moz-transform: translateX(0); 1648 | } 1649 | } 1650 | 1651 | @-o-keyframes slideInRight { 1652 | 0% { 1653 | opacity: 0; 1654 | -o-transform: translateX(2000px); 1655 | } 1656 | 1657 | 100% { 1658 | -o-transform: translateX(0); 1659 | } 1660 | } 1661 | 1662 | @keyframes slideInRight { 1663 | 0% { 1664 | opacity: 0; 1665 | transform: translateX(2000px); 1666 | } 1667 | 1668 | 100% { 1669 | transform: translateX(0); 1670 | } 1671 | } 1672 | 1673 | .slideInRight { 1674 | -webkit-animation-name: slideInRight; 1675 | -moz-animation-name: slideInRight; 1676 | -o-animation-name: slideInRight; 1677 | animation-name: slideInRight; 1678 | } 1679 | @-webkit-keyframes slideOutUp { 1680 | 0% { 1681 | -webkit-transform: translateY(0); 1682 | } 1683 | 1684 | 100% { 1685 | opacity: 0; 1686 | -webkit-transform: translateY(-2000px); 1687 | } 1688 | } 1689 | 1690 | @-moz-keyframes slideOutUp { 1691 | 0% { 1692 | -moz-transform: translateY(0); 1693 | } 1694 | 1695 | 100% { 1696 | opacity: 0; 1697 | -moz-transform: translateY(-2000px); 1698 | } 1699 | } 1700 | 1701 | @-o-keyframes slideOutUp { 1702 | 0% { 1703 | -o-transform: translateY(0); 1704 | } 1705 | 1706 | 100% { 1707 | opacity: 0; 1708 | -o-transform: translateY(-2000px); 1709 | } 1710 | } 1711 | 1712 | @keyframes slideOutUp { 1713 | 0% { 1714 | transform: translateY(0); 1715 | } 1716 | 1717 | 100% { 1718 | opacity: 0; 1719 | transform: translateY(-2000px); 1720 | } 1721 | } 1722 | 1723 | .slideOutUp { 1724 | -webkit-animation-name: slideOutUp; 1725 | -moz-animation-name: slideOutUp; 1726 | -o-animation-name: slideOutUp; 1727 | animation-name: slideOutUp; 1728 | } 1729 | @-webkit-keyframes slideOutLeft { 1730 | 0% { 1731 | -webkit-transform: translateX(0); 1732 | } 1733 | 1734 | 100% { 1735 | opacity: 0; 1736 | -webkit-transform: translateX(-2000px); 1737 | } 1738 | } 1739 | 1740 | @-moz-keyframes slideOutLeft { 1741 | 0% { 1742 | -moz-transform: translateX(0); 1743 | } 1744 | 1745 | 100% { 1746 | opacity: 0; 1747 | -moz-transform: translateX(-2000px); 1748 | } 1749 | } 1750 | 1751 | @-o-keyframes slideOutLeft { 1752 | 0% { 1753 | -o-transform: translateX(0); 1754 | } 1755 | 1756 | 100% { 1757 | opacity: 0; 1758 | -o-transform: translateX(-2000px); 1759 | } 1760 | } 1761 | 1762 | @keyframes slideOutLeft { 1763 | 0% { 1764 | transform: translateX(0); 1765 | } 1766 | 1767 | 100% { 1768 | opacity: 0; 1769 | transform: translateX(-2000px); 1770 | } 1771 | } 1772 | 1773 | .slideOutLeft { 1774 | -webkit-animation-name: slideOutLeft; 1775 | -moz-animation-name: slideOutLeft; 1776 | -o-animation-name: slideOutLeft; 1777 | animation-name: slideOutLeft; 1778 | } 1779 | @-webkit-keyframes slideOutRight { 1780 | 0% { 1781 | -webkit-transform: translateX(0); 1782 | } 1783 | 1784 | 100% { 1785 | opacity: 0; 1786 | -webkit-transform: translateX(2000px); 1787 | } 1788 | } 1789 | 1790 | @-moz-keyframes slideOutRight { 1791 | 0% { 1792 | -moz-transform: translateX(0); 1793 | } 1794 | 1795 | 100% { 1796 | opacity: 0; 1797 | -moz-transform: translateX(2000px); 1798 | } 1799 | } 1800 | 1801 | @-o-keyframes slideOutRight { 1802 | 0% { 1803 | -o-transform: translateX(0); 1804 | } 1805 | 1806 | 100% { 1807 | opacity: 0; 1808 | -o-transform: translateX(2000px); 1809 | } 1810 | } 1811 | 1812 | @keyframes slideOutRight { 1813 | 0% { 1814 | transform: translateX(0); 1815 | } 1816 | 1817 | 100% { 1818 | opacity: 0; 1819 | transform: translateX(2000px); 1820 | } 1821 | } 1822 | 1823 | .slideOutRight { 1824 | -webkit-animation-name: slideOutRight; 1825 | -moz-animation-name: slideOutRight; 1826 | -o-animation-name: slideOutRight; 1827 | animation-name: slideOutRight; 1828 | } 1829 | @-webkit-keyframes bounceIn { 1830 | 0% { 1831 | opacity: 0; 1832 | -webkit-transform: scale(.3); 1833 | } 1834 | 1835 | 50% { 1836 | opacity: 1; 1837 | -webkit-transform: scale(1.05); 1838 | } 1839 | 1840 | 70% { 1841 | -webkit-transform: scale(.9); 1842 | } 1843 | 1844 | 100% { 1845 | -webkit-transform: scale(1); 1846 | } 1847 | } 1848 | 1849 | @-moz-keyframes bounceIn { 1850 | 0% { 1851 | opacity: 0; 1852 | -moz-transform: scale(.3); 1853 | } 1854 | 1855 | 50% { 1856 | opacity: 1; 1857 | -moz-transform: scale(1.05); 1858 | } 1859 | 1860 | 70% { 1861 | -moz-transform: scale(.9); 1862 | } 1863 | 1864 | 100% { 1865 | -moz-transform: scale(1); 1866 | } 1867 | } 1868 | 1869 | @-o-keyframes bounceIn { 1870 | 0% { 1871 | opacity: 0; 1872 | -o-transform: scale(.3); 1873 | } 1874 | 1875 | 50% { 1876 | opacity: 1; 1877 | -o-transform: scale(1.05); 1878 | } 1879 | 1880 | 70% { 1881 | -o-transform: scale(.9); 1882 | } 1883 | 1884 | 100% { 1885 | -o-transform: scale(1); 1886 | } 1887 | } 1888 | 1889 | @keyframes bounceIn { 1890 | 0% { 1891 | opacity: 0; 1892 | transform: scale(.3); 1893 | } 1894 | 1895 | 50% { 1896 | opacity: 1; 1897 | transform: scale(1.05); 1898 | } 1899 | 1900 | 70% { 1901 | transform: scale(.9); 1902 | } 1903 | 1904 | 100% { 1905 | transform: scale(1); 1906 | } 1907 | } 1908 | 1909 | .bounceIn { 1910 | -webkit-animation-name: bounceIn; 1911 | -moz-animation-name: bounceIn; 1912 | -o-animation-name: bounceIn; 1913 | animation-name: bounceIn; 1914 | } 1915 | @-webkit-keyframes bounceInUp { 1916 | 0% { 1917 | opacity: 0; 1918 | -webkit-transform: translateY(2000px); 1919 | } 1920 | 1921 | 60% { 1922 | opacity: 1; 1923 | -webkit-transform: translateY(-30px); 1924 | } 1925 | 1926 | 80% { 1927 | -webkit-transform: translateY(10px); 1928 | } 1929 | 1930 | 100% { 1931 | -webkit-transform: translateY(0); 1932 | } 1933 | } 1934 | @-moz-keyframes bounceInUp { 1935 | 0% { 1936 | opacity: 0; 1937 | -moz-transform: translateY(2000px); 1938 | } 1939 | 1940 | 60% { 1941 | opacity: 1; 1942 | -moz-transform: translateY(-30px); 1943 | } 1944 | 1945 | 80% { 1946 | -moz-transform: translateY(10px); 1947 | } 1948 | 1949 | 100% { 1950 | -moz-transform: translateY(0); 1951 | } 1952 | } 1953 | 1954 | @-o-keyframes bounceInUp { 1955 | 0% { 1956 | opacity: 0; 1957 | -o-transform: translateY(2000px); 1958 | } 1959 | 1960 | 60% { 1961 | opacity: 1; 1962 | -o-transform: translateY(-30px); 1963 | } 1964 | 1965 | 80% { 1966 | -o-transform: translateY(10px); 1967 | } 1968 | 1969 | 100% { 1970 | -o-transform: translateY(0); 1971 | } 1972 | } 1973 | 1974 | @keyframes bounceInUp { 1975 | 0% { 1976 | opacity: 0; 1977 | transform: translateY(2000px); 1978 | } 1979 | 1980 | 60% { 1981 | opacity: 1; 1982 | transform: translateY(-30px); 1983 | } 1984 | 1985 | 80% { 1986 | transform: translateY(10px); 1987 | } 1988 | 1989 | 100% { 1990 | transform: translateY(0); 1991 | } 1992 | } 1993 | 1994 | .bounceInUp { 1995 | -webkit-animation-name: bounceInUp; 1996 | -moz-animation-name: bounceInUp; 1997 | -o-animation-name: bounceInUp; 1998 | animation-name: bounceInUp; 1999 | } 2000 | @-webkit-keyframes bounceInDown { 2001 | 0% { 2002 | opacity: 0; 2003 | -webkit-transform: translateY(-2000px); 2004 | } 2005 | 2006 | 60% { 2007 | opacity: 1; 2008 | -webkit-transform: translateY(30px); 2009 | } 2010 | 2011 | 80% { 2012 | -webkit-transform: translateY(-10px); 2013 | } 2014 | 2015 | 100% { 2016 | -webkit-transform: translateY(0); 2017 | } 2018 | } 2019 | 2020 | @-moz-keyframes bounceInDown { 2021 | 0% { 2022 | opacity: 0; 2023 | -moz-transform: translateY(-2000px); 2024 | } 2025 | 2026 | 60% { 2027 | opacity: 1; 2028 | -moz-transform: translateY(30px); 2029 | } 2030 | 2031 | 80% { 2032 | -moz-transform: translateY(-10px); 2033 | } 2034 | 2035 | 100% { 2036 | -moz-transform: translateY(0); 2037 | } 2038 | } 2039 | 2040 | @-o-keyframes bounceInDown { 2041 | 0% { 2042 | opacity: 0; 2043 | -o-transform: translateY(-2000px); 2044 | } 2045 | 2046 | 60% { 2047 | opacity: 1; 2048 | -o-transform: translateY(30px); 2049 | } 2050 | 2051 | 80% { 2052 | -o-transform: translateY(-10px); 2053 | } 2054 | 2055 | 100% { 2056 | -o-transform: translateY(0); 2057 | } 2058 | } 2059 | 2060 | @keyframes bounceInDown { 2061 | 0% { 2062 | opacity: 0; 2063 | transform: translateY(-2000px); 2064 | } 2065 | 2066 | 60% { 2067 | opacity: 1; 2068 | transform: translateY(30px); 2069 | } 2070 | 2071 | 80% { 2072 | transform: translateY(-10px); 2073 | } 2074 | 2075 | 100% { 2076 | transform: translateY(0); 2077 | } 2078 | } 2079 | 2080 | .bounceInDown { 2081 | -webkit-animation-name: bounceInDown; 2082 | -moz-animation-name: bounceInDown; 2083 | -o-animation-name: bounceInDown; 2084 | animation-name: bounceInDown; 2085 | } 2086 | @-webkit-keyframes bounceInLeft { 2087 | 0% { 2088 | opacity: 0; 2089 | -webkit-transform: translateX(-2000px); 2090 | } 2091 | 2092 | 60% { 2093 | opacity: 1; 2094 | -webkit-transform: translateX(30px); 2095 | } 2096 | 2097 | 80% { 2098 | -webkit-transform: translateX(-10px); 2099 | } 2100 | 2101 | 100% { 2102 | -webkit-transform: translateX(0); 2103 | } 2104 | } 2105 | 2106 | @-moz-keyframes bounceInLeft { 2107 | 0% { 2108 | opacity: 0; 2109 | -moz-transform: translateX(-2000px); 2110 | } 2111 | 2112 | 60% { 2113 | opacity: 1; 2114 | -moz-transform: translateX(30px); 2115 | } 2116 | 2117 | 80% { 2118 | -moz-transform: translateX(-10px); 2119 | } 2120 | 2121 | 100% { 2122 | -moz-transform: translateX(0); 2123 | } 2124 | } 2125 | 2126 | @-o-keyframes bounceInLeft { 2127 | 0% { 2128 | opacity: 0; 2129 | -o-transform: translateX(-2000px); 2130 | } 2131 | 2132 | 60% { 2133 | opacity: 1; 2134 | -o-transform: translateX(30px); 2135 | } 2136 | 2137 | 80% { 2138 | -o-transform: translateX(-10px); 2139 | } 2140 | 2141 | 100% { 2142 | -o-transform: translateX(0); 2143 | } 2144 | } 2145 | 2146 | @keyframes bounceInLeft { 2147 | 0% { 2148 | opacity: 0; 2149 | transform: translateX(-2000px); 2150 | } 2151 | 2152 | 60% { 2153 | opacity: 1; 2154 | transform: translateX(30px); 2155 | } 2156 | 2157 | 80% { 2158 | transform: translateX(-10px); 2159 | } 2160 | 2161 | 100% { 2162 | transform: translateX(0); 2163 | } 2164 | } 2165 | 2166 | .bounceInLeft { 2167 | -webkit-animation-name: bounceInLeft; 2168 | -moz-animation-name: bounceInLeft; 2169 | -o-animation-name: bounceInLeft; 2170 | animation-name: bounceInLeft; 2171 | } 2172 | @-webkit-keyframes bounceInRight { 2173 | 0% { 2174 | opacity: 0; 2175 | -webkit-transform: translateX(2000px); 2176 | } 2177 | 2178 | 60% { 2179 | opacity: 1; 2180 | -webkit-transform: translateX(-30px); 2181 | } 2182 | 2183 | 80% { 2184 | -webkit-transform: translateX(10px); 2185 | } 2186 | 2187 | 100% { 2188 | -webkit-transform: translateX(0); 2189 | } 2190 | } 2191 | 2192 | @-moz-keyframes bounceInRight { 2193 | 0% { 2194 | opacity: 0; 2195 | -moz-transform: translateX(2000px); 2196 | } 2197 | 2198 | 60% { 2199 | opacity: 1; 2200 | -moz-transform: translateX(-30px); 2201 | } 2202 | 2203 | 80% { 2204 | -moz-transform: translateX(10px); 2205 | } 2206 | 2207 | 100% { 2208 | -moz-transform: translateX(0); 2209 | } 2210 | } 2211 | 2212 | @-o-keyframes bounceInRight { 2213 | 0% { 2214 | opacity: 0; 2215 | -o-transform: translateX(2000px); 2216 | } 2217 | 2218 | 60% { 2219 | opacity: 1; 2220 | -o-transform: translateX(-30px); 2221 | } 2222 | 2223 | 80% { 2224 | -o-transform: translateX(10px); 2225 | } 2226 | 2227 | 100% { 2228 | -o-transform: translateX(0); 2229 | } 2230 | } 2231 | 2232 | @keyframes bounceInRight { 2233 | 0% { 2234 | opacity: 0; 2235 | transform: translateX(2000px); 2236 | } 2237 | 2238 | 60% { 2239 | opacity: 1; 2240 | transform: translateX(-30px); 2241 | } 2242 | 2243 | 80% { 2244 | transform: translateX(10px); 2245 | } 2246 | 2247 | 100% { 2248 | transform: translateX(0); 2249 | } 2250 | } 2251 | 2252 | .bounceInRight { 2253 | -webkit-animation-name: bounceInRight; 2254 | -moz-animation-name: bounceInRight; 2255 | -o-animation-name: bounceInRight; 2256 | animation-name: bounceInRight; 2257 | } 2258 | @-webkit-keyframes bounceOut { 2259 | 0% { 2260 | -webkit-transform: scale(1); 2261 | } 2262 | 2263 | 25% { 2264 | -webkit-transform: scale(.95); 2265 | } 2266 | 2267 | 50% { 2268 | opacity: 1; 2269 | -webkit-transform: scale(1.1); 2270 | } 2271 | 2272 | 100% { 2273 | opacity: 0; 2274 | -webkit-transform: scale(.3); 2275 | } 2276 | } 2277 | 2278 | @-moz-keyframes bounceOut { 2279 | 0% { 2280 | -moz-transform: scale(1); 2281 | } 2282 | 2283 | 25% { 2284 | -moz-transform: scale(.95); 2285 | } 2286 | 2287 | 50% { 2288 | opacity: 1; 2289 | -moz-transform: scale(1.1); 2290 | } 2291 | 2292 | 100% { 2293 | opacity: 0; 2294 | -moz-transform: scale(.3); 2295 | } 2296 | } 2297 | 2298 | @-o-keyframes bounceOut { 2299 | 0% { 2300 | -o-transform: scale(1); 2301 | } 2302 | 2303 | 25% { 2304 | -o-transform: scale(.95); 2305 | } 2306 | 2307 | 50% { 2308 | opacity: 1; 2309 | -o-transform: scale(1.1); 2310 | } 2311 | 2312 | 100% { 2313 | opacity: 0; 2314 | -o-transform: scale(.3); 2315 | } 2316 | } 2317 | 2318 | @keyframes bounceOut { 2319 | 0% { 2320 | transform: scale(1); 2321 | } 2322 | 2323 | 25% { 2324 | transform: scale(.95); 2325 | } 2326 | 2327 | 50% { 2328 | opacity: 1; 2329 | transform: scale(1.1); 2330 | } 2331 | 2332 | 100% { 2333 | opacity: 0; 2334 | transform: scale(.3); 2335 | } 2336 | } 2337 | 2338 | .bounceOut { 2339 | -webkit-animation-name: bounceOut; 2340 | -moz-animation-name: bounceOut; 2341 | -o-animation-name: bounceOut; 2342 | animation-name: bounceOut; 2343 | } 2344 | @-webkit-keyframes bounceOutUp { 2345 | 0% { 2346 | -webkit-transform: translateY(0); 2347 | } 2348 | 2349 | 20% { 2350 | opacity: 1; 2351 | -webkit-transform: translateY(20px); 2352 | } 2353 | 2354 | 100% { 2355 | opacity: 0; 2356 | -webkit-transform: translateY(-2000px); 2357 | } 2358 | } 2359 | 2360 | @-moz-keyframes bounceOutUp { 2361 | 0% { 2362 | -moz-transform: translateY(0); 2363 | } 2364 | 2365 | 20% { 2366 | opacity: 1; 2367 | -moz-transform: translateY(20px); 2368 | } 2369 | 2370 | 100% { 2371 | opacity: 0; 2372 | -moz-transform: translateY(-2000px); 2373 | } 2374 | } 2375 | 2376 | @-o-keyframes bounceOutUp { 2377 | 0% { 2378 | -o-transform: translateY(0); 2379 | } 2380 | 2381 | 20% { 2382 | opacity: 1; 2383 | -o-transform: translateY(20px); 2384 | } 2385 | 2386 | 100% { 2387 | opacity: 0; 2388 | -o-transform: translateY(-2000px); 2389 | } 2390 | } 2391 | 2392 | @keyframes bounceOutUp { 2393 | 0% { 2394 | transform: translateY(0); 2395 | } 2396 | 2397 | 20% { 2398 | opacity: 1; 2399 | transform: translateY(20px); 2400 | } 2401 | 2402 | 100% { 2403 | opacity: 0; 2404 | transform: translateY(-2000px); 2405 | } 2406 | } 2407 | 2408 | .bounceOutUp { 2409 | -webkit-animation-name: bounceOutUp; 2410 | -moz-animation-name: bounceOutUp; 2411 | -o-animation-name: bounceOutUp; 2412 | animation-name: bounceOutUp; 2413 | } 2414 | @-webkit-keyframes bounceOutDown { 2415 | 0% { 2416 | -webkit-transform: translateY(0); 2417 | } 2418 | 2419 | 20% { 2420 | opacity: 1; 2421 | -webkit-transform: translateY(-20px); 2422 | } 2423 | 2424 | 100% { 2425 | opacity: 0; 2426 | -webkit-transform: translateY(2000px); 2427 | } 2428 | } 2429 | 2430 | @-moz-keyframes bounceOutDown { 2431 | 0% { 2432 | -moz-transform: translateY(0); 2433 | } 2434 | 2435 | 20% { 2436 | opacity: 1; 2437 | -moz-transform: translateY(-20px); 2438 | } 2439 | 2440 | 100% { 2441 | opacity: 0; 2442 | -moz-transform: translateY(2000px); 2443 | } 2444 | } 2445 | 2446 | @-o-keyframes bounceOutDown { 2447 | 0% { 2448 | -o-transform: translateY(0); 2449 | } 2450 | 2451 | 20% { 2452 | opacity: 1; 2453 | -o-transform: translateY(-20px); 2454 | } 2455 | 2456 | 100% { 2457 | opacity: 0; 2458 | -o-transform: translateY(2000px); 2459 | } 2460 | } 2461 | 2462 | @keyframes bounceOutDown { 2463 | 0% { 2464 | transform: translateY(0); 2465 | } 2466 | 2467 | 20% { 2468 | opacity: 1; 2469 | transform: translateY(-20px); 2470 | } 2471 | 2472 | 100% { 2473 | opacity: 0; 2474 | transform: translateY(2000px); 2475 | } 2476 | } 2477 | 2478 | .bounceOutDown { 2479 | -webkit-animation-name: bounceOutDown; 2480 | -moz-animation-name: bounceOutDown; 2481 | -o-animation-name: bounceOutDown; 2482 | animation-name: bounceOutDown; 2483 | } 2484 | @-webkit-keyframes bounceOutLeft { 2485 | 0% { 2486 | -webkit-transform: translateX(0); 2487 | } 2488 | 2489 | 20% { 2490 | opacity: 1; 2491 | -webkit-transform: translateX(20px); 2492 | } 2493 | 2494 | 100% { 2495 | opacity: 0; 2496 | -webkit-transform: translateX(-2000px); 2497 | } 2498 | } 2499 | 2500 | @-moz-keyframes bounceOutLeft { 2501 | 0% { 2502 | -moz-transform: translateX(0); 2503 | } 2504 | 2505 | 20% { 2506 | opacity: 1; 2507 | -moz-transform: translateX(20px); 2508 | } 2509 | 2510 | 100% { 2511 | opacity: 0; 2512 | -moz-transform: translateX(-2000px); 2513 | } 2514 | } 2515 | 2516 | @-o-keyframes bounceOutLeft { 2517 | 0% { 2518 | -o-transform: translateX(0); 2519 | } 2520 | 2521 | 20% { 2522 | opacity: 1; 2523 | -o-transform: translateX(20px); 2524 | } 2525 | 2526 | 100% { 2527 | opacity: 0; 2528 | -o-transform: translateX(-2000px); 2529 | } 2530 | } 2531 | 2532 | @keyframes bounceOutLeft { 2533 | 0% { 2534 | transform: translateX(0); 2535 | } 2536 | 2537 | 20% { 2538 | opacity: 1; 2539 | transform: translateX(20px); 2540 | } 2541 | 2542 | 100% { 2543 | opacity: 0; 2544 | transform: translateX(-2000px); 2545 | } 2546 | } 2547 | 2548 | .bounceOutLeft { 2549 | -webkit-animation-name: bounceOutLeft; 2550 | -moz-animation-name: bounceOutLeft; 2551 | -o-animation-name: bounceOutLeft; 2552 | animation-name: bounceOutLeft; 2553 | } 2554 | @-webkit-keyframes bounceOutRight { 2555 | 0% { 2556 | -webkit-transform: translateX(0); 2557 | } 2558 | 2559 | 20% { 2560 | opacity: 1; 2561 | -webkit-transform: translateX(-20px); 2562 | } 2563 | 2564 | 100% { 2565 | opacity: 0; 2566 | -webkit-transform: translateX(2000px); 2567 | } 2568 | } 2569 | 2570 | @-moz-keyframes bounceOutRight { 2571 | 0% { 2572 | -moz-transform: translateX(0); 2573 | } 2574 | 2575 | 20% { 2576 | opacity: 1; 2577 | -moz-transform: translateX(-20px); 2578 | } 2579 | 2580 | 100% { 2581 | opacity: 0; 2582 | -moz-transform: translateX(2000px); 2583 | } 2584 | } 2585 | 2586 | @-o-keyframes bounceOutRight { 2587 | 0% { 2588 | -o-transform: translateX(0); 2589 | } 2590 | 2591 | 20% { 2592 | opacity: 1; 2593 | -o-transform: translateX(-20px); 2594 | } 2595 | 2596 | 100% { 2597 | opacity: 0; 2598 | -o-transform: translateX(2000px); 2599 | } 2600 | } 2601 | 2602 | @keyframes bounceOutRight { 2603 | 0% { 2604 | transform: translateX(0); 2605 | } 2606 | 2607 | 20% { 2608 | opacity: 1; 2609 | transform: translateX(-20px); 2610 | } 2611 | 2612 | 100% { 2613 | opacity: 0; 2614 | transform: translateX(2000px); 2615 | } 2616 | } 2617 | 2618 | .bounceOutRight { 2619 | -webkit-animation-name: bounceOutRight; 2620 | -moz-animation-name: bounceOutRight; 2621 | -o-animation-name: bounceOutRight; 2622 | animation-name: bounceOutRight; 2623 | } 2624 | @-webkit-keyframes rotateIn { 2625 | 0% { 2626 | -webkit-transform-origin: center center; 2627 | -webkit-transform: rotate(-200deg); 2628 | opacity: 0; 2629 | } 2630 | 2631 | 100% { 2632 | -webkit-transform-origin: center center; 2633 | -webkit-transform: rotate(0); 2634 | opacity: 1; 2635 | } 2636 | } 2637 | @-moz-keyframes rotateIn { 2638 | 0% { 2639 | -moz-transform-origin: center center; 2640 | -moz-transform: rotate(-200deg); 2641 | opacity: 0; 2642 | } 2643 | 2644 | 100% { 2645 | -moz-transform-origin: center center; 2646 | -moz-transform: rotate(0); 2647 | opacity: 1; 2648 | } 2649 | } 2650 | @-o-keyframes rotateIn { 2651 | 0% { 2652 | -o-transform-origin: center center; 2653 | -o-transform: rotate(-200deg); 2654 | opacity: 0; 2655 | } 2656 | 2657 | 100% { 2658 | -o-transform-origin: center center; 2659 | -o-transform: rotate(0); 2660 | opacity: 1; 2661 | } 2662 | } 2663 | @keyframes rotateIn { 2664 | 0% { 2665 | transform-origin: center center; 2666 | transform: rotate(-200deg); 2667 | opacity: 0; 2668 | } 2669 | 2670 | 100% { 2671 | transform-origin: center center; 2672 | transform: rotate(0); 2673 | opacity: 1; 2674 | } 2675 | } 2676 | 2677 | .rotateIn { 2678 | -webkit-animation-name: rotateIn; 2679 | -moz-animation-name: rotateIn; 2680 | -o-animation-name: rotateIn; 2681 | animation-name: rotateIn; 2682 | } 2683 | @-webkit-keyframes rotateInUpLeft { 2684 | 0% { 2685 | -webkit-transform-origin: left bottom; 2686 | -webkit-transform: rotate(90deg); 2687 | opacity: 0; 2688 | } 2689 | 2690 | 100% { 2691 | -webkit-transform-origin: left bottom; 2692 | -webkit-transform: rotate(0); 2693 | opacity: 1; 2694 | } 2695 | } 2696 | 2697 | @-moz-keyframes rotateInUpLeft { 2698 | 0% { 2699 | -moz-transform-origin: left bottom; 2700 | -moz-transform: rotate(90deg); 2701 | opacity: 0; 2702 | } 2703 | 2704 | 100% { 2705 | -moz-transform-origin: left bottom; 2706 | -moz-transform: rotate(0); 2707 | opacity: 1; 2708 | } 2709 | } 2710 | 2711 | @-o-keyframes rotateInUpLeft { 2712 | 0% { 2713 | -o-transform-origin: left bottom; 2714 | -o-transform: rotate(90deg); 2715 | opacity: 0; 2716 | } 2717 | 2718 | 100% { 2719 | -o-transform-origin: left bottom; 2720 | -o-transform: rotate(0); 2721 | opacity: 1; 2722 | } 2723 | } 2724 | 2725 | @keyframes rotateInUpLeft { 2726 | 0% { 2727 | transform-origin: left bottom; 2728 | transform: rotate(90deg); 2729 | opacity: 0; 2730 | } 2731 | 2732 | 100% { 2733 | transform-origin: left bottom; 2734 | transform: rotate(0); 2735 | opacity: 1; 2736 | } 2737 | } 2738 | 2739 | .rotateInUpLeft { 2740 | -webkit-animation-name: rotateInUpLeft; 2741 | -moz-animation-name: rotateInUpLeft; 2742 | -o-animation-name: rotateInUpLeft; 2743 | animation-name: rotateInUpLeft; 2744 | } 2745 | @-webkit-keyframes rotateInDownLeft { 2746 | 0% { 2747 | -webkit-transform-origin: left bottom; 2748 | -webkit-transform: rotate(-90deg); 2749 | opacity: 0; 2750 | } 2751 | 2752 | 100% { 2753 | -webkit-transform-origin: left bottom; 2754 | -webkit-transform: rotate(0); 2755 | opacity: 1; 2756 | } 2757 | } 2758 | 2759 | @-moz-keyframes rotateInDownLeft { 2760 | 0% { 2761 | -moz-transform-origin: left bottom; 2762 | -moz-transform: rotate(-90deg); 2763 | opacity: 0; 2764 | } 2765 | 2766 | 100% { 2767 | -moz-transform-origin: left bottom; 2768 | -moz-transform: rotate(0); 2769 | opacity: 1; 2770 | } 2771 | } 2772 | 2773 | @-o-keyframes rotateInDownLeft { 2774 | 0% { 2775 | -o-transform-origin: left bottom; 2776 | -o-transform: rotate(-90deg); 2777 | opacity: 0; 2778 | } 2779 | 2780 | 100% { 2781 | -o-transform-origin: left bottom; 2782 | -o-transform: rotate(0); 2783 | opacity: 1; 2784 | } 2785 | } 2786 | 2787 | @keyframes rotateInDownLeft { 2788 | 0% { 2789 | transform-origin: left bottom; 2790 | transform: rotate(-90deg); 2791 | opacity: 0; 2792 | } 2793 | 2794 | 100% { 2795 | transform-origin: left bottom; 2796 | transform: rotate(0); 2797 | opacity: 1; 2798 | } 2799 | } 2800 | 2801 | .rotateInDownLeft { 2802 | -webkit-animation-name: rotateInDownLeft; 2803 | -moz-animation-name: rotateInDownLeft; 2804 | -o-animation-name: rotateInDownLeft; 2805 | animation-name: rotateInDownLeft; 2806 | } 2807 | @-webkit-keyframes rotateInUpRight { 2808 | 0% { 2809 | -webkit-transform-origin: right bottom; 2810 | -webkit-transform: rotate(-90deg); 2811 | opacity: 0; 2812 | } 2813 | 2814 | 100% { 2815 | -webkit-transform-origin: right bottom; 2816 | -webkit-transform: rotate(0); 2817 | opacity: 1; 2818 | } 2819 | } 2820 | 2821 | @-moz-keyframes rotateInUpRight { 2822 | 0% { 2823 | -moz-transform-origin: right bottom; 2824 | -moz-transform: rotate(-90deg); 2825 | opacity: 0; 2826 | } 2827 | 2828 | 100% { 2829 | -moz-transform-origin: right bottom; 2830 | -moz-transform: rotate(0); 2831 | opacity: 1; 2832 | } 2833 | } 2834 | 2835 | @-o-keyframes rotateInUpRight { 2836 | 0% { 2837 | -o-transform-origin: right bottom; 2838 | -o-transform: rotate(-90deg); 2839 | opacity: 0; 2840 | } 2841 | 2842 | 100% { 2843 | -o-transform-origin: right bottom; 2844 | -o-transform: rotate(0); 2845 | opacity: 1; 2846 | } 2847 | } 2848 | 2849 | @keyframes rotateInUpRight { 2850 | 0% { 2851 | transform-origin: right bottom; 2852 | transform: rotate(-90deg); 2853 | opacity: 0; 2854 | } 2855 | 2856 | 100% { 2857 | transform-origin: right bottom; 2858 | transform: rotate(0); 2859 | opacity: 1; 2860 | } 2861 | } 2862 | 2863 | .rotateInUpRight { 2864 | -webkit-animation-name: rotateInUpRight; 2865 | -moz-animation-name: rotateInUpRight; 2866 | -o-animation-name: rotateInUpRight; 2867 | animation-name: rotateInUpRight; 2868 | } 2869 | @-webkit-keyframes rotateInDownRight { 2870 | 0% { 2871 | -webkit-transform-origin: right bottom; 2872 | -webkit-transform: rotate(90deg); 2873 | opacity: 0; 2874 | } 2875 | 2876 | 100% { 2877 | -webkit-transform-origin: right bottom; 2878 | -webkit-transform: rotate(0); 2879 | opacity: 1; 2880 | } 2881 | } 2882 | 2883 | @-moz-keyframes rotateInDownRight { 2884 | 0% { 2885 | -moz-transform-origin: right bottom; 2886 | -moz-transform: rotate(90deg); 2887 | opacity: 0; 2888 | } 2889 | 2890 | 100% { 2891 | -moz-transform-origin: right bottom; 2892 | -moz-transform: rotate(0); 2893 | opacity: 1; 2894 | } 2895 | } 2896 | 2897 | @-o-keyframes rotateInDownRight { 2898 | 0% { 2899 | -o-transform-origin: right bottom; 2900 | -o-transform: rotate(90deg); 2901 | opacity: 0; 2902 | } 2903 | 2904 | 100% { 2905 | -o-transform-origin: right bottom; 2906 | -o-transform: rotate(0); 2907 | opacity: 1; 2908 | } 2909 | } 2910 | 2911 | @keyframes rotateInDownRight { 2912 | 0% { 2913 | transform-origin: right bottom; 2914 | transform: rotate(90deg); 2915 | opacity: 0; 2916 | } 2917 | 2918 | 100% { 2919 | transform-origin: right bottom; 2920 | transform: rotate(0); 2921 | opacity: 1; 2922 | } 2923 | } 2924 | 2925 | .rotateInDownRight { 2926 | -webkit-animation-name: rotateInDownRight; 2927 | -moz-animation-name: rotateInDownRight; 2928 | -o-animation-name: rotateInDownRight; 2929 | animation-name: rotateInDownRight; 2930 | } 2931 | @-webkit-keyframes rotateOut { 2932 | 0% { 2933 | -webkit-transform-origin: center center; 2934 | -webkit-transform: rotate(0); 2935 | opacity: 1; 2936 | } 2937 | 2938 | 100% { 2939 | -webkit-transform-origin: center center; 2940 | -webkit-transform: rotate(200deg); 2941 | opacity: 0; 2942 | } 2943 | } 2944 | 2945 | @-moz-keyframes rotateOut { 2946 | 0% { 2947 | -moz-transform-origin: center center; 2948 | -moz-transform: rotate(0); 2949 | opacity: 1; 2950 | } 2951 | 2952 | 100% { 2953 | -moz-transform-origin: center center; 2954 | -moz-transform: rotate(200deg); 2955 | opacity: 0; 2956 | } 2957 | } 2958 | 2959 | @-o-keyframes rotateOut { 2960 | 0% { 2961 | -o-transform-origin: center center; 2962 | -o-transform: rotate(0); 2963 | opacity: 1; 2964 | } 2965 | 2966 | 100% { 2967 | -o-transform-origin: center center; 2968 | -o-transform: rotate(200deg); 2969 | opacity: 0; 2970 | } 2971 | } 2972 | 2973 | @keyframes rotateOut { 2974 | 0% { 2975 | transform-origin: center center; 2976 | transform: rotate(0); 2977 | opacity: 1; 2978 | } 2979 | 2980 | 100% { 2981 | transform-origin: center center; 2982 | transform: rotate(200deg); 2983 | opacity: 0; 2984 | } 2985 | } 2986 | 2987 | .rotateOut { 2988 | -webkit-animation-name: rotateOut; 2989 | -moz-animation-name: rotateOut; 2990 | -o-animation-name: rotateOut; 2991 | animation-name: rotateOut; 2992 | } 2993 | @-webkit-keyframes rotateOutUpLeft { 2994 | 0% { 2995 | -webkit-transform-origin: left bottom; 2996 | -webkit-transform: rotate(0); 2997 | opacity: 1; 2998 | } 2999 | 3000 | 100% { 3001 | -webkit-transform-origin: left bottom; 3002 | -webkit-transform: rotate(-90deg); 3003 | opacity: 0; 3004 | } 3005 | } 3006 | 3007 | @-moz-keyframes rotateOutUpLeft { 3008 | 0% { 3009 | -moz-transform-origin: left bottom; 3010 | -moz-transform: rotate(0); 3011 | opacity: 1; 3012 | } 3013 | 3014 | 100% { 3015 | -moz-transform-origin: left bottom; 3016 | -moz-transform: rotate(-90deg); 3017 | opacity: 0; 3018 | } 3019 | } 3020 | 3021 | @-o-keyframes rotateOutUpLeft { 3022 | 0% { 3023 | -o-transform-origin: left bottom; 3024 | -o-transform: rotate(0); 3025 | opacity: 1; 3026 | } 3027 | 3028 | 100% { 3029 | -o-transform-origin: left bottom; 3030 | -o-transform: rotate(-90deg); 3031 | opacity: 0; 3032 | } 3033 | } 3034 | 3035 | @keyframes rotateOutUpLeft { 3036 | 0% { 3037 | transform-origin: left bottom; 3038 | transform: rotate(0); 3039 | opacity: 1; 3040 | } 3041 | 3042 | 100% { 3043 | -transform-origin: left bottom; 3044 | -transform: rotate(-90deg); 3045 | opacity: 0; 3046 | } 3047 | } 3048 | 3049 | .rotateOutUpLeft { 3050 | -webkit-animation-name: rotateOutUpLeft; 3051 | -moz-animation-name: rotateOutUpLeft; 3052 | -o-animation-name: rotateOutUpLeft; 3053 | animation-name: rotateOutUpLeft; 3054 | } 3055 | @-webkit-keyframes rotateOutDownLeft { 3056 | 0% { 3057 | -webkit-transform-origin: left bottom; 3058 | -webkit-transform: rotate(0); 3059 | opacity: 1; 3060 | } 3061 | 3062 | 100% { 3063 | -webkit-transform-origin: left bottom; 3064 | -webkit-transform: rotate(90deg); 3065 | opacity: 0; 3066 | } 3067 | } 3068 | 3069 | @-moz-keyframes rotateOutDownLeft { 3070 | 0% { 3071 | -moz-transform-origin: left bottom; 3072 | -moz-transform: rotate(0); 3073 | opacity: 1; 3074 | } 3075 | 3076 | 100% { 3077 | -moz-transform-origin: left bottom; 3078 | -moz-transform: rotate(90deg); 3079 | opacity: 0; 3080 | } 3081 | } 3082 | 3083 | @-o-keyframes rotateOutDownLeft { 3084 | 0% { 3085 | -o-transform-origin: left bottom; 3086 | -o-transform: rotate(0); 3087 | opacity: 1; 3088 | } 3089 | 3090 | 100% { 3091 | -o-transform-origin: left bottom; 3092 | -o-transform: rotate(90deg); 3093 | opacity: 0; 3094 | } 3095 | } 3096 | 3097 | @keyframes rotateOutDownLeft { 3098 | 0% { 3099 | transform-origin: left bottom; 3100 | transform: rotate(0); 3101 | opacity: 1; 3102 | } 3103 | 3104 | 100% { 3105 | transform-origin: left bottom; 3106 | transform: rotate(90deg); 3107 | opacity: 0; 3108 | } 3109 | } 3110 | 3111 | .rotateOutDownLeft { 3112 | -webkit-animation-name: rotateOutDownLeft; 3113 | -moz-animation-name: rotateOutDownLeft; 3114 | -o-animation-name: rotateOutDownLeft; 3115 | animation-name: rotateOutDownLeft; 3116 | } 3117 | @-webkit-keyframes rotateOutUpRight { 3118 | 0% { 3119 | -webkit-transform-origin: right bottom; 3120 | -webkit-transform: rotate(0); 3121 | opacity: 1; 3122 | } 3123 | 3124 | 100% { 3125 | -webkit-transform-origin: right bottom; 3126 | -webkit-transform: rotate(90deg); 3127 | opacity: 0; 3128 | } 3129 | } 3130 | 3131 | @-moz-keyframes rotateOutUpRight { 3132 | 0% { 3133 | -moz-transform-origin: right bottom; 3134 | -moz-transform: rotate(0); 3135 | opacity: 1; 3136 | } 3137 | 3138 | 100% { 3139 | -moz-transform-origin: right bottom; 3140 | -moz-transform: rotate(90deg); 3141 | opacity: 0; 3142 | } 3143 | } 3144 | 3145 | @-o-keyframes rotateOutUpRight { 3146 | 0% { 3147 | -o-transform-origin: right bottom; 3148 | -o-transform: rotate(0); 3149 | opacity: 1; 3150 | } 3151 | 3152 | 100% { 3153 | -o-transform-origin: right bottom; 3154 | -o-transform: rotate(90deg); 3155 | opacity: 0; 3156 | } 3157 | } 3158 | 3159 | @keyframes rotateOutUpRight { 3160 | 0% { 3161 | transform-origin: right bottom; 3162 | transform: rotate(0); 3163 | opacity: 1; 3164 | } 3165 | 3166 | 100% { 3167 | transform-origin: right bottom; 3168 | transform: rotate(90deg); 3169 | opacity: 0; 3170 | } 3171 | } 3172 | 3173 | .rotateOutUpRight { 3174 | -webkit-animation-name: rotateOutUpRight; 3175 | -moz-animation-name: rotateOutUpRight; 3176 | -o-animation-name: rotateOutUpRight; 3177 | animation-name: rotateOutUpRight; 3178 | } 3179 | @-webkit-keyframes rotateOutDownRight { 3180 | 0% { 3181 | -webkit-transform-origin: right bottom; 3182 | -webkit-transform: rotate(0); 3183 | opacity: 1; 3184 | } 3185 | 3186 | 100% { 3187 | -webkit-transform-origin: right bottom; 3188 | -webkit-transform: rotate(-90deg); 3189 | opacity: 0; 3190 | } 3191 | } 3192 | 3193 | @-moz-keyframes rotateOutDownRight { 3194 | 0% { 3195 | -moz-transform-origin: right bottom; 3196 | -moz-transform: rotate(0); 3197 | opacity: 1; 3198 | } 3199 | 3200 | 100% { 3201 | -moz-transform-origin: right bottom; 3202 | -moz-transform: rotate(-90deg); 3203 | opacity: 0; 3204 | } 3205 | } 3206 | 3207 | @-o-keyframes rotateOutDownRight { 3208 | 0% { 3209 | -o-transform-origin: right bottom; 3210 | -o-transform: rotate(0); 3211 | opacity: 1; 3212 | } 3213 | 3214 | 100% { 3215 | -o-transform-origin: right bottom; 3216 | -o-transform: rotate(-90deg); 3217 | opacity: 0; 3218 | } 3219 | } 3220 | 3221 | @keyframes rotateOutDownRight { 3222 | 0% { 3223 | transform-origin: right bottom; 3224 | transform: rotate(0); 3225 | opacity: 1; 3226 | } 3227 | 3228 | 100% { 3229 | transform-origin: right bottom; 3230 | transform: rotate(-90deg); 3231 | opacity: 0; 3232 | } 3233 | } 3234 | 3235 | .rotateOutDownRight { 3236 | -webkit-animation-name: rotateOutDownRight; 3237 | -moz-animation-name: rotateOutDownRight; 3238 | -o-animation-name: rotateOutDownRight; 3239 | animation-name: rotateOutDownRight; 3240 | } 3241 | @-webkit-keyframes lightSpeedIn { 3242 | 0% { -webkit-transform: translateX(100%) skewX(-30deg); opacity: 0; } 3243 | 60% { -webkit-transform: translateX(-20%) skewX(30deg); opacity: 1; } 3244 | 80% { -webkit-transform: translateX(0%) skewX(-15deg); opacity: 1; } 3245 | 100% { -webkit-transform: translateX(0%) skewX(0deg); opacity: 1; } 3246 | } 3247 | 3248 | @-moz-keyframes lightSpeedIn { 3249 | 0% { -moz-transform: translateX(100%) skewX(-30deg); opacity: 0; } 3250 | 60% { -moz-transform: translateX(-20%) skewX(30deg); opacity: 1; } 3251 | 80% { -moz-transform: translateX(0%) skewX(-15deg); opacity: 1; } 3252 | 100% { -moz-transform: translateX(0%) skewX(0deg); opacity: 1; } 3253 | } 3254 | 3255 | @-o-keyframes lightSpeedIn { 3256 | 0% { -o-transform: translateX(100%) skewX(-30deg); opacity: 0; } 3257 | 60% { -o-transform: translateX(-20%) skewX(30deg); opacity: 1; } 3258 | 80% { -o-transform: translateX(0%) skewX(-15deg); opacity: 1; } 3259 | 100% { -o-transform: translateX(0%) skewX(0deg); opacity: 1; } 3260 | } 3261 | 3262 | @keyframes lightSpeedIn { 3263 | 0% { transform: translateX(100%) skewX(-30deg); opacity: 0; } 3264 | 60% { transform: translateX(-20%) skewX(30deg); opacity: 1; } 3265 | 80% { transform: translateX(0%) skewX(-15deg); opacity: 1; } 3266 | 100% { transform: translateX(0%) skewX(0deg); opacity: 1; } 3267 | } 3268 | 3269 | .lightSpeedIn { 3270 | -webkit-animation-name: lightSpeedIn; 3271 | -moz-animation-name: lightSpeedIn; 3272 | -o-animation-name: lightSpeedIn; 3273 | animation-name: lightSpeedIn; 3274 | 3275 | -webkit-animation-timing-function: ease-out; 3276 | -moz-animation-timing-function: ease-out; 3277 | -o-animation-timing-function: ease-out; 3278 | animation-timing-function: ease-out; 3279 | } 3280 | @-webkit-keyframes lightSpeedOut { 3281 | 0% { -webkit-transform: translateX(0%) skewX(0deg); opacity: 1; } 3282 | 100% { -webkit-transform: translateX(100%) skewX(-30deg); opacity: 0; } 3283 | } 3284 | 3285 | @-moz-keyframes lightSpeedOut { 3286 | 0% { -moz-transform: translateX(0%) skewX(0deg); opacity: 1; } 3287 | 100% { -moz-transform: translateX(100%) skewX(-30deg); opacity: 0; } 3288 | } 3289 | 3290 | @-o-keyframes lightSpeedOut { 3291 | 0% { -o-transform: translateX(0%) skewX(0deg); opacity: 1; } 3292 | 100% { -o-transform: translateX(100%) skewX(-30deg); opacity: 0; } 3293 | } 3294 | 3295 | @keyframes lightSpeedOut { 3296 | 0% { transform: translateX(0%) skewX(0deg); opacity: 1; } 3297 | 100% { transform: translateX(100%) skewX(-30deg); opacity: 0; } 3298 | } 3299 | 3300 | .lightSpeedOut { 3301 | -webkit-animation-name: lightSpeedOut; 3302 | -moz-animation-name: lightSpeedOut; 3303 | -o-animation-name: lightSpeedOut; 3304 | animation-name: lightSpeedOut; 3305 | 3306 | -webkit-animation-timing-function: ease-in; 3307 | -moz-animation-timing-function: ease-in; 3308 | -o-animation-timing-function: ease-in; 3309 | animation-timing-function: ease-in; 3310 | } 3311 | @-webkit-keyframes hinge { 3312 | 0% { -webkit-transform: rotate(0); -webkit-transform-origin: top left; -webkit-animation-timing-function: ease-in-out; } 3313 | 20%, 60% { -webkit-transform: rotate(80deg); -webkit-transform-origin: top left; -webkit-animation-timing-function: ease-in-out; } 3314 | 40% { -webkit-transform: rotate(60deg); -webkit-transform-origin: top left; -webkit-animation-timing-function: ease-in-out; } 3315 | 80% { -webkit-transform: rotate(60deg) translateY(0); opacity: 1; -webkit-transform-origin: top left; -webkit-animation-timing-function: ease-in-out; } 3316 | 100% { -webkit-transform: translateY(700px); opacity: 0; } 3317 | } 3318 | 3319 | @-moz-keyframes hinge { 3320 | 0% { -moz-transform: rotate(0); -moz-transform-origin: top left; -moz-animation-timing-function: ease-in-out; } 3321 | 20%, 60% { -moz-transform: rotate(80deg); -moz-transform-origin: top left; -moz-animation-timing-function: ease-in-out; } 3322 | 40% { -moz-transform: rotate(60deg); -moz-transform-origin: top left; -moz-animation-timing-function: ease-in-out; } 3323 | 80% { -moz-transform: rotate(60deg) translateY(0); opacity: 1; -moz-transform-origin: top left; -moz-animation-timing-function: ease-in-out; } 3324 | 100% { -moz-transform: translateY(700px); opacity: 0; } 3325 | } 3326 | 3327 | @-o-keyframes hinge { 3328 | 0% { -o-transform: rotate(0); -o-transform-origin: top left; -o-animation-timing-function: ease-in-out; } 3329 | 20%, 60% { -o-transform: rotate(80deg); -o-transform-origin: top left; -o-animation-timing-function: ease-in-out; } 3330 | 40% { -o-transform: rotate(60deg); -o-transform-origin: top left; -o-animation-timing-function: ease-in-out; } 3331 | 80% { -o-transform: rotate(60deg) translateY(0); opacity: 1; -o-transform-origin: top left; -o-animation-timing-function: ease-in-out; } 3332 | 100% { -o-transform: translateY(700px); opacity: 0; } 3333 | } 3334 | 3335 | @keyframes hinge { 3336 | 0% { transform: rotate(0); transform-origin: top left; animation-timing-function: ease-in-out; } 3337 | 20%, 60% { transform: rotate(80deg); transform-origin: top left; animation-timing-function: ease-in-out; } 3338 | 40% { transform: rotate(60deg); transform-origin: top left; animation-timing-function: ease-in-out; } 3339 | 80% { transform: rotate(60deg) translateY(0); opacity: 1; transform-origin: top left; animation-timing-function: ease-in-out; } 3340 | 100% { transform: translateY(700px); opacity: 0; } 3341 | } 3342 | 3343 | .hinge { 3344 | -webkit-animation-name: hinge; 3345 | -moz-animation-name: hinge; 3346 | -o-animation-name: hinge; 3347 | animation-name: hinge; 3348 | } 3349 | /* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ 3350 | 3351 | @-webkit-keyframes rollIn { 3352 | 0% { opacity: 0; -webkit-transform: translateX(-100%) rotate(-120deg); } 3353 | 100% { opacity: 1; -webkit-transform: translateX(0px) rotate(0deg); } 3354 | } 3355 | 3356 | @-moz-keyframes rollIn { 3357 | 0% { opacity: 0; -moz-transform: translateX(-100%) rotate(-120deg); } 3358 | 100% { opacity: 1; -moz-transform: translateX(0px) rotate(0deg); } 3359 | } 3360 | 3361 | @-o-keyframes rollIn { 3362 | 0% { opacity: 0; -o-transform: translateX(-100%) rotate(-120deg); } 3363 | 100% { opacity: 1; -o-transform: translateX(0px) rotate(0deg); } 3364 | } 3365 | 3366 | @keyframes rollIn { 3367 | 0% { opacity: 0; transform: translateX(-100%) rotate(-120deg); } 3368 | 100% { opacity: 1; transform: translateX(0px) rotate(0deg); } 3369 | } 3370 | 3371 | .rollIn { 3372 | -webkit-animation-name: rollIn; 3373 | -moz-animation-name: rollIn; 3374 | -o-animation-name: rollIn; 3375 | animation-name: rollIn; 3376 | } 3377 | /* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ 3378 | 3379 | @-webkit-keyframes rollOut { 3380 | 0% { 3381 | opacity: 1; 3382 | -webkit-transform: translateX(0px) rotate(0deg); 3383 | } 3384 | 3385 | 100% { 3386 | opacity: 0; 3387 | -webkit-transform: translateX(100%) rotate(120deg); 3388 | } 3389 | } 3390 | 3391 | @-moz-keyframes rollOut { 3392 | 0% { 3393 | opacity: 1; 3394 | -moz-transform: translateX(0px) rotate(0deg); 3395 | } 3396 | 3397 | 100% { 3398 | opacity: 0; 3399 | -moz-transform: translateX(100%) rotate(120deg); 3400 | } 3401 | } 3402 | 3403 | @-o-keyframes rollOut { 3404 | 0% { 3405 | opacity: 1; 3406 | -o-transform: translateX(0px) rotate(0deg); 3407 | } 3408 | 3409 | 100% { 3410 | opacity: 0; 3411 | -o-transform: translateX(100%) rotate(120deg); 3412 | } 3413 | } 3414 | 3415 | @keyframes rollOut { 3416 | 0% { 3417 | opacity: 1; 3418 | transform: translateX(0px) rotate(0deg); 3419 | } 3420 | 3421 | 100% { 3422 | opacity: 0; 3423 | transform: translateX(100%) rotate(120deg); 3424 | } 3425 | } 3426 | 3427 | .rollOut { 3428 | -webkit-animation-name: rollOut; 3429 | -moz-animation-name: rollOut; 3430 | -o-animation-name: rollOut; 3431 | animation-name: rollOut; 3432 | } 3433 | -------------------------------------------------------------------------------- /assets/css/font-awesome.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome 4.0.3 by @davegandy - http://fontawesome.io - @fontawesome 3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) 4 | */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.0.3');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.0.3') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff?v=4.0.3') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.0.3') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.0.3#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.3333333333333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.2857142857142858em;text-align:center}.fa-ul{padding-left:0;margin-left:2.142857142857143em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.142857142857143em;width:2.142857142857143em;top:.14285714285714285em;text-align:center}.fa-li.fa-lg{left:-1.8571428571428572em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:spin 2s infinite linear;-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;animation:spin 2s infinite linear}@-moz-keyframes spin{0%{-moz-transform:rotate(0deg)}100%{-moz-transform:rotate(359deg)}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg)}}@-o-keyframes spin{0%{-o-transform:rotate(0deg)}100%{-o-transform:rotate(359deg)}}@-ms-keyframes spin{0%{-ms-transform:rotate(0deg)}100%{-ms-transform:rotate(359deg)}}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0,mirror=1);-webkit-transform:scale(-1,1);-moz-transform:scale(-1,1);-ms-transform:scale(-1,1);-o-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2,mirror=1);-webkit-transform:scale(1,-1);-moz-transform:scale(1,-1);-ms-transform:scale(1,-1);-o-transform:scale(1,-1);transform:scale(1,-1)}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-asc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-desc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-reply-all:before{content:"\f122"}.fa-mail-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"} -------------------------------------------------------------------------------- /assets/css/tomorrow.css: -------------------------------------------------------------------------------- 1 | /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ 2 | 3 | /* Tomorrow Comment */ 4 | .hljs-comment { 5 | color: #8e908c; 6 | } 7 | 8 | /* Tomorrow Red */ 9 | .hljs-variable, 10 | .hljs-attribute, 11 | .hljs-tag, 12 | .hljs-regexp, 13 | .ruby .hljs-constant, 14 | .xml .hljs-tag .hljs-title, 15 | .xml .hljs-pi, 16 | .xml .hljs-doctype, 17 | .html .hljs-doctype, 18 | .css .hljs-id, 19 | .css .hljs-class, 20 | .css .hljs-pseudo { 21 | color: #c82829; 22 | } 23 | 24 | /* Tomorrow Orange */ 25 | .hljs-number, 26 | .hljs-preprocessor, 27 | .hljs-pragma, 28 | .hljs-built_in, 29 | .hljs-literal, 30 | .hljs-params, 31 | .hljs-constant { 32 | color: #f5871f; 33 | } 34 | 35 | /* Tomorrow Yellow */ 36 | .ruby .hljs-class .hljs-title, 37 | .css .hljs-rules .hljs-attribute { 38 | color: #eab700; 39 | } 40 | 41 | /* Tomorrow Green */ 42 | .hljs-string, 43 | .hljs-value, 44 | .hljs-inheritance, 45 | .hljs-header, 46 | .ruby .hljs-symbol, 47 | .xml .hljs-cdata { 48 | color: #718c00; 49 | } 50 | 51 | /* Tomorrow Aqua */ 52 | .hljs-title, 53 | .css .hljs-hexcolor { 54 | color: #3e999f; 55 | } 56 | 57 | /* Tomorrow Blue */ 58 | .hljs-function, 59 | .python .hljs-decorator, 60 | .python .hljs-title, 61 | .ruby .hljs-function .hljs-title, 62 | .ruby .hljs-title .hljs-keyword, 63 | .perl .hljs-sub, 64 | .javascript .hljs-title, 65 | .coffeescript .hljs-title { 66 | color: #4271ae; 67 | } 68 | 69 | /* Tomorrow Purple */ 70 | .hljs-keyword, 71 | .javascript .hljs-function { 72 | color: #8959a8; 73 | } 74 | 75 | .hljs { 76 | display: block; 77 | overflow-x: auto; 78 | /*background: white;*/ 79 | color: #4d4d4c; 80 | padding: 0.5em; 81 | -webkit-text-size-adjust: none; 82 | } 83 | 84 | .coffeescript .javascript, 85 | .javascript .xml, 86 | .tex .hljs-formula, 87 | .xml .javascript, 88 | .xml .vbscript, 89 | .xml .css, 90 | .xml .hljs-cdata { 91 | opacity: 0.5; 92 | } 93 | -------------------------------------------------------------------------------- /assets/css/vno.css: -------------------------------------------------------------------------------- 1 | /* http://meyerweb.com/eric/tools/css/reset/ 2 | v2.0 | 20110126 3 | License: none (public domain) 4 | */ 5 | @import url(../css/animate.css); 6 | 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 { 7 | margin: 0; 8 | padding: 0; 9 | border: 0; 10 | font-size: 100%; 11 | font: inherit; 12 | vertical-align: baseline; } 13 | 14 | /* HTML5 display-role reset for older browsers */ 15 | article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section { 16 | display: block; } 17 | 18 | body { 19 | line-height: 1; } 20 | 21 | ol, ul { 22 | list-style: none; } 23 | 24 | blockquote, q { 25 | quotes: none; } 26 | 27 | blockquote:before, blockquote:after { 28 | content: ''; 29 | content: none; } 30 | 31 | q:before, q:after { 32 | content: ''; 33 | content: none; } 34 | 35 | table { 36 | border-collapse: collapse; 37 | border-spacing: 0; } 38 | 39 | body { 40 | width: 100%; 41 | *zoom: 1; } 42 | body:before, body:after { 43 | content: ""; 44 | display: table; } 45 | body:after { 46 | clear: both; } 47 | 48 | html, body { 49 | height: 100%; } 50 | 51 | html { 52 | height: 100%; 53 | max-height: 100%; } 54 | 55 | body { 56 | font-family: "ff-tisa-web-pro-1", "ff-tisa-web-pro-2", "Lucida Grande", "Hiragino Sans GB", "Hiragino Sans GB W3", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; 57 | font-size: 1em; 58 | color: #666666; 59 | -webkit-font-smoothing: antialiased; } 60 | 61 | ::selection { 62 | background: #f39ca4; } 63 | 64 | ::-moz-selection { 65 | background: #f39ca4; } 66 | 67 | a { 68 | text-decoration: none; 69 | color: #BF1827; } 70 | a:hover { 71 | color: #7b0f19; 72 | -o-transition: .5s; 73 | -ms-transition: .5s; 74 | -moz-transition: .5s; 75 | -webkit-transition: .5s; } 76 | 77 | h1, 78 | h2, 79 | h3, 80 | h4, 81 | h5, 82 | h5 { 83 | margin-top: 1.0em; 84 | margin-bottom: .5em; 85 | font-family: "ff-tisa-web-pro-1", "ff-tisa-web-pro-2", "Lucida Grande", "Hiragino Sans GB", "Hiragino Sans GB W3", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; 86 | font-weight: lighter; 87 | color: #333333; 88 | -webkit-font-smoothing: antialiased; } 89 | 90 | h1 { 91 | margin-top: 0; 92 | font-size: 2.5em; 93 | line-height: 1.2em; 94 | letter-spacing: .05em; } 95 | 96 | h2 { 97 | font-size: 2.0em; } 98 | 99 | h3 { 100 | font-size: 1.6em; } 101 | 102 | h4 { 103 | font-size: 1.2em; } 104 | 105 | h4 { 106 | font-size: 1.1em; } 107 | 108 | h5 { 109 | font-size: 1em; } 110 | 111 | p { 112 | margin-bottom: 1.3em; 113 | line-height: 1.7em; } 114 | 115 | strong { 116 | font-weight: bold; } 117 | 118 | em { 119 | font-style: italic; } 120 | 121 | blockquote { 122 | padding: 10px 20px; 123 | margin: 0 0 20px; 124 | font-family: "ff-tisa-web-pro-1", "ff-tisa-web-pro-2", "Lucida Grande", "Hiragino Sans GB", "Hiragino Sans GB W3", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; 125 | font-weight: lighter; 126 | font-size: 1em; 127 | border-left: 3px solid #BF1827; } 128 | blockquote p:last-child { 129 | margin-bottom: 0; } 130 | 131 | ol, ul { 132 | margin: 0 0 1.3em 2.5em; } 133 | ol li, ul li { 134 | margin: 0 0 .2em 0; 135 | line-height: 1.6em; } 136 | ol ol, ol ul, ul ol, ul ul { 137 | margin: .1em 0 .2em 2em; } 138 | 139 | ol { 140 | list-style-type: decimal; } 141 | 142 | ul { 143 | list-style-type: disc; } 144 | 145 | code { 146 | padding: .1em .4em; 147 | background: #e8f2fb; 148 | border: 1px solid #c9e1f6; 149 | border-radius: 3px; 150 | font-family: Consolas, Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, monospace, serif; 151 | font-size: .9em; 152 | vertical-align: bottom; 153 | word-wrap: break-word; } 154 | 155 | pre { 156 | margin-bottom: 1.3em; 157 | padding: 1em 2.5%; 158 | background: #e8f2fb; 159 | border: 1px solid #c9e1f6; 160 | border-radius: 3px; 161 | font-family: Consolas, Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, monospace, serif; 162 | font-size: .9em; 163 | font-weight: normal; 164 | line-height: 1.3em; 165 | overflow: scroll; } 166 | pre code { 167 | padding: 0; 168 | background: none; 169 | border: none; 170 | word-wrap: normal; } 171 | 172 | .date, 173 | .time, 174 | .author, 175 | .tags { 176 | font-size: .8em; 177 | color: #c7c7c7; } 178 | .date a, 179 | .time a, 180 | .author a, 181 | .tags a { 182 | color: #666666; } 183 | .date a:hover, 184 | .time a:hover, 185 | .author a:hover, 186 | .tags a:hover { 187 | color: #7b0f19; } 188 | 189 | .excerpt { 190 | margin: 0; 191 | font-size: .9em; 192 | color: #999999; } 193 | 194 | .intro { 195 | font-family: "ff-tisa-web-pro-1", "ff-tisa-web-pro-2", "Lucida Grande", "Hiragino Sans GB", "Hiragino Sans GB W3", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; 196 | font-size: 1.2em; 197 | font-weight: lighter; 198 | color: #999999; } 199 | 200 | .block-heading { 201 | display: inline; 202 | float: left; 203 | width: 940px; 204 | margin: 0 10px; 205 | position: relative; 206 | bottom: -15px; 207 | font-size: .8em; 208 | font-weight: bold; 209 | text-align: center; 210 | text-transform: uppercase; 211 | letter-spacing: 1px; } 212 | 213 | .label { 214 | position: relative; 215 | display: inline-block; 216 | padding: 8px 18px 9px 18px; 217 | background: #BF1827; 218 | border-radius: 3px; 219 | text-align: center; 220 | color: #FFF; } 221 | 222 | .container { 223 | position: relative; 224 | z-index: 500; 225 | width: 940px; 226 | margin: 0 auto; } 227 | 228 | .content-wrapper { 229 | z-index: 800; 230 | width: 70%; 231 | margin-left: 30%; } 232 | 233 | .content-wrapper__inner { 234 | margin: 0 10%; 235 | padding: 50px 0; } 236 | 237 | .footer { 238 | display: block; 239 | padding: 2em 0 0 0; 240 | border-top: 2px solid #DDDDDD; 241 | font-size: .7em; 242 | color: #b3b3b3; } 243 | 244 | .footer__copyright { 245 | display: block; 246 | margin-bottom: .7em; } 247 | .footer__copyright a { 248 | color: #a6a6a6; 249 | text-decoration: underline; } 250 | .footer__copyright a:hover { 251 | color: #7b0f19; } 252 | 253 | .avatar, 254 | .logo { 255 | border-radius: 50%; 256 | border: 3px solid #FFF; 257 | box-shadow: 0 0 1px 1px rgba(0, 0, 0, 0.3); } 258 | 259 | hr { 260 | border: none; } 261 | 262 | .section-title__divider { 263 | width: 30%; 264 | margin: 2.2em 0 2.1em 0; 265 | border-top: 1px solid #DDDDDD; } 266 | 267 | .hidden { 268 | display: none !important; } 269 | 270 | .post-comments { 271 | border-top: 1px solid #DDDDDD; 272 | padding: 60px 0; } 273 | 274 | .post-meta { 275 | margin: 0 0 .4em 0; 276 | color: #c7c7c7; } 277 | 278 | .post-meta__date { 279 | margin-right: .5em; } 280 | 281 | .post-meta__tags { 282 | margin-left: .4em; } 283 | 284 | .post-meta__author { 285 | margin-left: 1.5em; } 286 | 287 | .post-meta__avatar { 288 | display: inline-block; 289 | width: 22px; 290 | height: 22px; 291 | margin: 0 .3em -.4em 0; 292 | border: none; 293 | box-shadow: none; } 294 | 295 | .post img { 296 | max-width: 100%; 297 | margin: 0 auto; 298 | border-radius: 3px; 299 | text-align: center; 300 | display: block; } 301 | .post pre { 302 | width: 95%; 303 | overflow: auto; } 304 | .post hr { 305 | display: block; 306 | width: 30%; 307 | margin: 2em 0; 308 | border-top: 1px solid #DDDDDD; } 309 | 310 | .panel { 311 | display: table; 312 | width: 100%; 313 | height: 100%; } 314 | 315 | .panel__vertical { 316 | display: table-cell; 317 | vertical-align: middle; } 318 | 319 | .panel-title { 320 | margin: 0 0 5px 0; 321 | font-size: 2.5em; 322 | letter-spacing: 4px; 323 | color: #FFF; } 324 | 325 | .panel-subtitle { 326 | font-family: "ff-tisa-web-pro-1", "ff-tisa-web-pro-2", "Lucida Grande", "Hiragino Sans GB", "Hiragino Sans GB W3", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; 327 | font-size: 1.2em; 328 | font-weight: lighter; 329 | letter-spacing: 3px; 330 | color: #CCCCCC; 331 | -webkit-font-smoothing: antialiased; } 332 | 333 | .panel-cover { 334 | display: block; 335 | position: fixed; 336 | z-index: 900; 337 | width: 100%; 338 | max-width: none; 339 | height: 100%; 340 | background: url(../images/background-cover.jpg) top left no-repeat #666666; 341 | background-size: cover; } 342 | 343 | .panel-cover--collapsed { 344 | width: 30%; 345 | max-width: 700px; } 346 | 347 | .panel-cover--overlay { 348 | display: block; 349 | position: absolute; 350 | z-index: 0; 351 | top: 0; 352 | right: 0; 353 | bottom: 0; 354 | left: 0; 355 | background-color: rgba(68, 68, 68, 0.6); 356 | background-image: -webkit-linear-gradient(-410deg, rgba(68, 68, 68, 0.6) 20%, rgba(0, 0, 0, 0.9)); 357 | background-image: linear-gradient(140deg,rgba(68, 68, 68, 0.6) 20%, rgba(0, 0, 0, 0.9)); } 358 | 359 | .panel-cover__logo { 360 | margin-bottom: .2em; } 361 | 362 | .panel-cover__description { 363 | margin: 0 30px; } 364 | 365 | .panel-cover__divider { 366 | width: 50%; 367 | margin: 20px auto; 368 | border-top: 1px solid rgba(255, 255, 255, 0.14); } 369 | 370 | .panel-cover__divider--secondary { 371 | width: 15%; } 372 | 373 | .panel-main { 374 | display: table; 375 | width: 100%; 376 | height: 100%; } 377 | 378 | .panel-main__inner { 379 | display: table-cell; 380 | vertical-align: middle; 381 | position: relative; 382 | z-index: 800; 383 | padding: 0 60px; } 384 | 385 | .panel-main__content { 386 | max-width: 620px; 387 | margin: 0 auto; } 388 | 389 | .panel-main__content--fixed { 390 | width: 480px; 391 | transition: width 1s; 392 | -webkit-transition: width 1s; 393 | /* Safari */ } 394 | 395 | .panel-inverted { 396 | font-weight: 100; 397 | text-align: center; 398 | color: #FFF; 399 | text-shadow: 0 1px 1px rgba(0, 0, 0, 0.4); } 400 | .panel-inverted a { 401 | color: #FFF; } 402 | 403 | .cover-navigation { 404 | margin-top: 42px; } 405 | 406 | .cover-navigation--social { 407 | margin-left: 30px; } 408 | 409 | .cover-blue { 410 | background-color: rgba(37, 104, 163, 0.6); 411 | background-image: -webkit-linear-gradient(-410deg, rgba(37, 104, 163, 0.6) 20%, rgba(18, 51, 80, 0.8)); 412 | background-image: linear-gradient(140deg,rgba(37, 104, 163, 0.6) 20%, rgba(18, 51, 80, 0.8)); } 413 | 414 | .cover-green { 415 | background-color: rgba(21, 111, 120, 0.6); 416 | background-image: -webkit-linear-gradient(-410deg, rgba(21, 111, 120, 0.6) 20%, rgba(6, 31, 33, 0.8)); 417 | background-image: linear-gradient(140deg,rgba(21, 111, 120, 0.6) 20%, rgba(6, 31, 33, 0.8)); } 418 | 419 | .cover-purple { 420 | background-color: rgba(73, 50, 82, 0.6); 421 | background-image: -webkit-linear-gradient(-410deg, rgba(73, 50, 82, 0.6) 20%, rgba(17, 11, 19, 0.8)); 422 | background-image: linear-gradient(140deg,rgba(73, 50, 82, 0.6) 20%, rgba(17, 11, 19, 0.8)); } 423 | 424 | .cover-red { 425 | background-color: rgba(119, 31, 18, 0.6); 426 | background-image: -webkit-linear-gradient(-410deg, rgba(119, 31, 18, 0.6) 20%, rgba(30, 8, 5, 0.8)); 427 | background-image: linear-gradient(140deg,rgba(119, 31, 18, 0.6) 20%, rgba(30, 8, 5, 0.8)); } 428 | 429 | .cover-orange { 430 | background-color: rgba(174, 80, 4, 0.6); 431 | background-image: -webkit-linear-gradient(-410deg, rgba(174, 80, 4, 0.6) 20%, rgba(74, 34, 2, 0.8)); 432 | background-image: linear-gradient(140deg,rgba(174, 80, 4, 0.6) 20%, rgba(74, 34, 2, 0.8)); } 433 | 434 | .cover-slate { 435 | background-color: rgba(61, 66, 96, 0.6); 436 | background-image: -webkit-linear-gradient(-410deg, rgba(61, 66, 96, 0.6) 20%, rgba(21, 23, 34, 0.8)); 437 | background-image: linear-gradient(140deg,rgba(61, 66, 96, 0.6) 20%, rgba(21, 23, 34, 0.8)); } 438 | 439 | .cover-disabled { 440 | background: none; } 441 | 442 | .btn, .navigation__item a { 443 | padding: 10px 20px; 444 | border: 1px solid #BF1827; 445 | border-radius: 20px; 446 | font-size: .9em; 447 | font-weight: bold; 448 | letter-spacing: 1px; 449 | text-shadow: none; 450 | color: #BF1827; 451 | -webkit-font-smoothing: antialiased; } 452 | .btn:hover, .navigation__item a:hover { 453 | color: #7b0f19; 454 | border-color: #7b0f19; } 455 | 456 | .btn-border-small { 457 | border: 1px solid #BF1827; 458 | border-radius: 20px; 459 | padding: 6px 8px; 460 | font-size: .8em; 461 | margin-left: 10px; } 462 | 463 | .btn-secondary { 464 | border-color: #5BA4E5; 465 | color: #5BA4E5; } 466 | .btn-secondary:hover { 467 | color: #217fd2; 468 | border-color: #217fd2; } 469 | 470 | .btn-tertiary { 471 | border-color: #999999; 472 | color: #999999; } 473 | .btn-tertiary:hover { 474 | color: #737373; 475 | border-color: #737373; } 476 | 477 | .btn-large { 478 | padding: 10px 24px; 479 | font-size: 1.1em; } 480 | 481 | .btn-small { 482 | padding: 8px 12px; 483 | font-size: .7em; } 484 | 485 | .btn-mobile-menu { 486 | display: none; 487 | position: fixed; 488 | z-index: 9999; 489 | top: 0; 490 | right: 0; 491 | left: 0; 492 | width: 100%; 493 | height: 35px; 494 | background: rgba(51, 51, 51, 0.98); 495 | border-bottom: 1px solid rgba(255, 255, 255, 0.1); 496 | text-align: center; } 497 | 498 | .btn-mobile-menu__icon, 499 | .btn-mobile-close__icon { 500 | position: relative; 501 | top: 10px; 502 | color: #FFF; } 503 | 504 | nav { 505 | display: inline-block; 506 | position: relative; } 507 | 508 | .navigation { 509 | display: inline-block; 510 | float: left; 511 | position: relative; 512 | margin: 0; 513 | list-style-type: none; } 514 | 515 | .navigation__item { 516 | display: inline-block; 517 | margin: 5px 1px 0 0; 518 | line-height: 1em; } 519 | .navigation__item a { 520 | display: block; 521 | position: relative; 522 | border-color: #FFF; 523 | color: #FFF; 524 | opacity: .8; } 525 | .navigation__item a:hover { 526 | color: #FFF; 527 | border-color: #FFF; 528 | opacity: 1; } 529 | 530 | .navigation--social a { 531 | border: 0px; 532 | padding: 6px 8px 6px 9px; } 533 | .navigation--social a .label { 534 | display: none; } 535 | .navigation--social a .icon { 536 | display: block; 537 | font-size: 1.7em; } 538 | 539 | .pagination { 540 | display: block; 541 | margin: 0 0 4em 0; } 542 | 543 | .pagination__page-number { 544 | margin: 0; 545 | font-size: .8em; 546 | color: #999999; } 547 | 548 | .pagination__newer { 549 | margin-right: 1em; } 550 | 551 | .pagination__older { 552 | margin-left: 1em; } 553 | 554 | i { 555 | font-family: 'entypo'; 556 | font-weight: normal; 557 | font-style: normal; 558 | font-size: 18px; } 559 | 560 | .social { 561 | font-size: 22px; } 562 | 563 | .icon-social { 564 | font-family: 'entypo-social'; 565 | font-size: 22px; 566 | display: block; 567 | position: relative; } 568 | 569 | .post-list { 570 | margin: 0; 571 | padding: 0; 572 | list-style-type: none; 573 | text-align: left; } 574 | .post-list li { 575 | margin: 0 0 2.2em 0; } 576 | .post-list li:last-child hr { 577 | display: none; } 578 | 579 | .post-list__post-title { 580 | margin-top: 0; 581 | margin-bottom: .2em; 582 | font-size: 1.5em; 583 | line-height: 1.3em; } 584 | .post-list__post-title a { 585 | color: #333333; } 586 | .post-list__post-title a:hover { 587 | color: #7b0f19; } 588 | 589 | .post-list__meta { 590 | display: block; 591 | margin: .7em 0 0 0; 592 | font-size: .9em; 593 | color: #c7c7c7; } 594 | 595 | .post-list__meta--date { 596 | margin-right: .5em; 597 | color: #c7c7c7; } 598 | 599 | .post-list__meta--tags { 600 | margin-left: .5em; } 601 | 602 | .post-list__divider { 603 | width: 30%; 604 | margin: 2.2em 0 2.1em 0; 605 | border-top: 1px solid #DDDDDD; } 606 | 607 | *:focus { 608 | outline: none; } 609 | 610 | input[type="text"], 611 | input[type="password"], 612 | input[type="datetime"], 613 | input[type="datetime-local"], 614 | input[type="date"], 615 | input[type="month"], 616 | input[type="time"], 617 | input[type="week"], 618 | input[type="number"], 619 | input[type="email"], 620 | input[type="url"], 621 | input[type="search"], 622 | input[type="tel"] { 623 | width: 240px; 624 | padding: 1em 1em; 625 | background: #FFF; 626 | border: 1px solid #DDDDDD; 627 | border-radius: 3px; 628 | font-size: .9em; 629 | color: #666666; } 630 | input[type="text"]:focus, 631 | input[type="password"]:focus, 632 | input[type="datetime"]:focus, 633 | input[type="datetime-local"]:focus, 634 | input[type="date"]:focus, 635 | input[type="month"]:focus, 636 | input[type="time"]:focus, 637 | input[type="week"]:focus, 638 | input[type="number"]:focus, 639 | input[type="email"]:focus, 640 | input[type="url"]:focus, 641 | input[type="search"]:focus, 642 | input[type="tel"]:focus { 643 | border-color: #5BA4E5; } 644 | input[type="text"]::-webkit-input-placeholder, 645 | input[type="password"]::-webkit-input-placeholder, 646 | input[type="datetime"]::-webkit-input-placeholder, 647 | input[type="datetime-local"]::-webkit-input-placeholder, 648 | input[type="date"]::-webkit-input-placeholder, 649 | input[type="month"]::-webkit-input-placeholder, 650 | input[type="time"]::-webkit-input-placeholder, 651 | input[type="week"]::-webkit-input-placeholder, 652 | input[type="number"]::-webkit-input-placeholder, 653 | input[type="email"]::-webkit-input-placeholder, 654 | input[type="url"]::-webkit-input-placeholder, 655 | input[type="search"]::-webkit-input-placeholder, 656 | input[type="tel"]::-webkit-input-placeholder { 657 | color: #CCCCCC; } 658 | input[type="text"]::-moz-placeholder, 659 | input[type="password"]::-moz-placeholder, 660 | input[type="datetime"]::-moz-placeholder, 661 | input[type="datetime-local"]::-moz-placeholder, 662 | input[type="date"]::-moz-placeholder, 663 | input[type="month"]::-moz-placeholder, 664 | input[type="time"]::-moz-placeholder, 665 | input[type="week"]::-moz-placeholder, 666 | input[type="number"]::-moz-placeholder, 667 | input[type="email"]::-moz-placeholder, 668 | input[type="url"]::-moz-placeholder, 669 | input[type="search"]::-moz-placeholder, 670 | input[type="tel"]::-moz-placeholder { 671 | color: #CCCCCC; } 672 | input[type="text"]:-moz-placeholder, 673 | input[type="password"]:-moz-placeholder, 674 | input[type="datetime"]:-moz-placeholder, 675 | input[type="datetime-local"]:-moz-placeholder, 676 | input[type="date"]:-moz-placeholder, 677 | input[type="month"]:-moz-placeholder, 678 | input[type="time"]:-moz-placeholder, 679 | input[type="week"]:-moz-placeholder, 680 | input[type="number"]:-moz-placeholder, 681 | input[type="email"]:-moz-placeholder, 682 | input[type="url"]:-moz-placeholder, 683 | input[type="search"]:-moz-placeholder, 684 | input[type="tel"]:-moz-placeholder { 685 | color: #CCCCCC; } 686 | input[type="text"]:-ms-input-placeholder, 687 | input[type="password"]:-ms-input-placeholder, 688 | input[type="datetime"]:-ms-input-placeholder, 689 | input[type="datetime-local"]:-ms-input-placeholder, 690 | input[type="date"]:-ms-input-placeholder, 691 | input[type="month"]:-ms-input-placeholder, 692 | input[type="time"]:-ms-input-placeholder, 693 | input[type="week"]:-ms-input-placeholder, 694 | input[type="number"]:-ms-input-placeholder, 695 | input[type="email"]:-ms-input-placeholder, 696 | input[type="url"]:-ms-input-placeholder, 697 | input[type="search"]:-ms-input-placeholder, 698 | input[type="tel"]:-ms-input-placeholder { 699 | color: #CCCCCC; } 700 | 701 | .read-more { 702 | margin-bottom: 1em; } 703 | 704 | .read-more-item { 705 | display: inline; 706 | width: 48%; 707 | margin-top: 20pt; 708 | margin-bottom: 20pt; } 709 | 710 | .read-more-item-dim { 711 | color: #7b0f19; 712 | font-size: .8em; } 713 | 714 | .read-more-item.read-more-item-left { 715 | float: left; } 716 | 717 | .read-more-item.read-more-item-right { 718 | float: right; } 719 | 720 | @media all and (max-width: 1100px) { 721 | .panel-cover__logo { 722 | width: 70px; } 723 | 724 | .panel-title { 725 | font-size: 2em; } 726 | 727 | .panel-subtitle { 728 | font-size: 1em; } 729 | 730 | .panel-cover__description { 731 | margin: 0 10px; 732 | font-size: .9em; } 733 | 734 | .navigation--social { 735 | margin-top: 5px; 736 | margin-left: 0; } } 737 | @media all and (max-width: 960px) { 738 | .btn-mobile-menu { 739 | display: block; } 740 | 741 | .panel-main { 742 | display: table; 743 | position: relative; } 744 | 745 | .panel-cover--collapsed { 746 | width: 100%; 747 | max-width: none; } 748 | 749 | .panel-main__inner { 750 | display: table-cell; 751 | padding: 60px 10%; } 752 | 753 | .panel-cover__description { 754 | display: block; 755 | max-width: 600px; 756 | margin: 0 auto; } 757 | 758 | .panel-cover__divider--secondary { 759 | display: none; } 760 | 761 | .panel-cover { 762 | width: 100%; 763 | height: 100%; 764 | background-position: center center; } 765 | .panel-cover.panel-cover--collapsed { 766 | display: block; 767 | position: relative; 768 | height: auto; 769 | padding: 0; 770 | background-position: center center; } 771 | .panel-cover.panel-cover--collapsed .panel-main__inner { 772 | display: block; 773 | padding: 70px 0 30px 0; } 774 | .panel-cover.panel-cover--collapsed .panel-cover__logo { 775 | width: 60px; 776 | border-width: 2px; } 777 | .panel-cover.panel-cover--collapsed .panel-cover__description { 778 | display: none; } 779 | .panel-cover.panel-cover--collapsed .panel-cover__divider { 780 | display: none; 781 | margin: 1em auto; } 782 | 783 | .navigation-wrapper { 784 | display: none; 785 | position: fixed; 786 | top: 0; 787 | right: 0; 788 | left: 0; 789 | width: 100%; 790 | padding: 20px 0; 791 | background: rgba(51, 51, 51, 0.98); 792 | border-bottom: 1px solid rgba(255, 255, 255, 0.15); } 793 | .navigation-wrapper.visible { 794 | display: block; } 795 | 796 | .cover-navigation { 797 | display: block; 798 | position: relative; 799 | float: left; 800 | clear: left; 801 | width: 100%; } 802 | .cover-navigation .navigation { 803 | display: block; 804 | width: 100%; } 805 | .cover-navigation .navigation li { 806 | width: 80%; 807 | margin-bottom: .4em; } 808 | .cover-navigation.navigation--social { 809 | padding-top: 5px; } 810 | .cover-navigation.navigation--social .navigation li { 811 | display: inline-block; 812 | width: 25.8%; } 813 | 814 | .content-wrapper { 815 | width: 80%; 816 | max-width: none; 817 | margin: 0 auto; } 818 | 819 | .content-wrapper__inner { 820 | margin-right: 0; 821 | margin-left: 0; } 822 | 823 | .navigation__item { 824 | width: 100%; 825 | margin: 0 0 .4em 0; } } 826 | @media all and (max-width: 340px) { 827 | .panel-main__inner { 828 | padding: 0 5%; } 829 | 830 | .panel-title { 831 | margin-bottom: .1em; 832 | font-size: 1.5em; } 833 | 834 | .panel-subtitle { 835 | font-size: .9em; } 836 | 837 | .btn, .navigation__item a { 838 | display: block; 839 | margin-bottom: .4em; } } 840 | -------------------------------------------------------------------------------- /assets/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onevcat/vno/d6785d5bb74a75f2d24692f2c23f3371a4d9aa12/assets/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /assets/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onevcat/vno/d6785d5bb74a75f2d24692f2c23f3371a4d9aa12/assets/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /assets/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onevcat/vno/d6785d5bb74a75f2d24692f2c23f3371a4d9aa12/assets/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /assets/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onevcat/vno/d6785d5bb74a75f2d24692f2c23f3371a4d9aa12/assets/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /assets/images/background-cover.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onevcat/vno/d6785d5bb74a75f2d24692f2c23f3371a4d9aa12/assets/images/background-cover.jpg -------------------------------------------------------------------------------- /assets/images/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onevcat/vno/d6785d5bb74a75f2d24692f2c23f3371a4d9aa12/assets/images/favicon.png -------------------------------------------------------------------------------- /assets/js/highlight.pack.js: -------------------------------------------------------------------------------- 1 | !function(e){"undefined"!=typeof exports?e(exports):(window.hljs=e({}),"function"==typeof define&&define.amd&&define([],function(){return window.hljs}))}(function(e){function n(e){return e.replace(/&/gm,"&").replace(//gm,">")}function t(e){return e.nodeName.toLowerCase()}function r(e,n){var t=e&&e.exec(n);return t&&0==t.index}function a(e){var n=(e.className+" "+(e.parentNode?e.parentNode.className:"")).split(/\s+/);return n=n.map(function(e){return e.replace(/^lang(uage)?-/,"")}),n.filter(function(e){return N(e)||/no(-?)highlight/.test(e)})[0]}function o(e,n){var t={};for(var r in e)t[r]=e[r];if(n)for(var r in n)t[r]=n[r];return t}function i(e){var n=[];return function r(e,a){for(var o=e.firstChild;o;o=o.nextSibling)3==o.nodeType?a+=o.nodeValue.length:1==o.nodeType&&(n.push({event:"start",offset:a,node:o}),a=r(o,a),t(o).match(/br|hr|img|input/)||n.push({event:"stop",offset:a,node:o}));return a}(e,0),n}function c(e,r,a){function o(){return e.length&&r.length?e[0].offset!=r[0].offset?e[0].offset"}function c(e){l+=""}function u(e){("start"==e.event?i:c)(e.node)}for(var s=0,l="",f=[];e.length||r.length;){var g=o();if(l+=n(a.substr(s,g[0].offset-s)),s=g[0].offset,g==e){f.reverse().forEach(c);do u(g.splice(0,1)[0]),g=o();while(g==e&&g.length&&g[0].offset==s);f.reverse().forEach(i)}else"start"==g[0].event?f.push(g[0].node):f.pop(),u(g.splice(0,1)[0])}return l+n(a.substr(s))}function u(e){function n(e){return e&&e.source||e}function t(t,r){return RegExp(n(t),"m"+(e.cI?"i":"")+(r?"g":""))}function r(a,i){if(!a.compiled){if(a.compiled=!0,a.k=a.k||a.bK,a.k){var c={},u=function(n,t){e.cI&&(t=t.toLowerCase()),t.split(" ").forEach(function(e){var t=e.split("|");c[t[0]]=[n,t[1]?Number(t[1]):1]})};"string"==typeof a.k?u("keyword",a.k):Object.keys(a.k).forEach(function(e){u(e,a.k[e])}),a.k=c}a.lR=t(a.l||/\b[A-Za-z0-9_]+\b/,!0),i&&(a.bK&&(a.b="\\b("+a.bK.split(" ").join("|")+")\\b"),a.b||(a.b=/\B|\b/),a.bR=t(a.b),a.e||a.eW||(a.e=/\B|\b/),a.e&&(a.eR=t(a.e)),a.tE=n(a.e)||"",a.eW&&i.tE&&(a.tE+=(a.e?"|":"")+i.tE)),a.i&&(a.iR=t(a.i)),void 0===a.r&&(a.r=1),a.c||(a.c=[]);var s=[];a.c.forEach(function(e){e.v?e.v.forEach(function(n){s.push(o(e,n))}):s.push("self"==e?a:e)}),a.c=s,a.c.forEach(function(e){r(e,a)}),a.starts&&r(a.starts,i);var l=a.c.map(function(e){return e.bK?"\\.?("+e.b+")\\.?":e.b}).concat([a.tE,a.i]).map(n).filter(Boolean);a.t=l.length?t(l.join("|"),!0):{exec:function(){return null}}}}r(e)}function s(e,t,a,o){function i(e,n){for(var t=0;t";return o+=e+'">',o+n+i}function d(){if(!w.k)return n(y);var e="",t=0;w.lR.lastIndex=0;for(var r=w.lR.exec(y);r;){e+=n(y.substr(t,r.index-t));var a=g(w,r);a?(B+=a[1],e+=p(a[0],n(r[0]))):e+=n(r[0]),t=w.lR.lastIndex,r=w.lR.exec(y)}return e+n(y.substr(t))}function h(){if(w.sL&&!R[w.sL])return n(y);var e=w.sL?s(w.sL,y,!0,L[w.sL]):l(y);return w.r>0&&(B+=e.r),"continuous"==w.subLanguageMode&&(L[w.sL]=e.top),p(e.language,e.value,!1,!0)}function v(){return void 0!==w.sL?h():d()}function b(e,t){var r=e.cN?p(e.cN,"",!0):"";e.rB?(M+=r,y=""):e.eB?(M+=n(t)+r,y=""):(M+=r,y=t),w=Object.create(e,{parent:{value:w}})}function m(e,t){if(y+=e,void 0===t)return M+=v(),0;var r=i(t,w);if(r)return M+=v(),b(r,t),r.rB?0:t.length;var a=c(w,t);if(a){var o=w;o.rE||o.eE||(y+=t),M+=v();do w.cN&&(M+=""),B+=w.r,w=w.parent;while(w!=a.parent);return o.eE&&(M+=n(t)),y="",a.starts&&b(a.starts,""),o.rE?0:t.length}if(f(t,w))throw new Error('Illegal lexeme "'+t+'" for mode "'+(w.cN||"")+'"');return y+=t,t.length||1}var x=N(e);if(!x)throw new Error('Unknown language: "'+e+'"');u(x);for(var w=o||x,L={},M="",k=w;k!=x;k=k.parent)k.cN&&(M=p(k.cN,"",!0)+M);var y="",B=0;try{for(var C,j,I=0;;){if(w.t.lastIndex=I,C=w.t.exec(t),!C)break;j=m(t.substr(I,C.index-I),C[0]),I=C.index+j}m(t.substr(I));for(var k=w;k.parent;k=k.parent)k.cN&&(M+="");return{r:B,value:M,language:e,top:w}}catch(A){if(-1!=A.message.indexOf("Illegal"))return{r:0,value:n(t)};throw A}}function l(e,t){t=t||E.languages||Object.keys(R);var r={r:0,value:n(e)},a=r;return t.forEach(function(n){if(N(n)){var t=s(n,e,!1);t.language=n,t.r>a.r&&(a=t),t.r>r.r&&(a=r,r=t)}}),a.language&&(r.second_best=a),r}function f(e){return E.tabReplace&&(e=e.replace(/^((<[^>]+>|\t)+)/gm,function(e,n){return n.replace(/\t/g,E.tabReplace)})),E.useBR&&(e=e.replace(/\n/g,"
")),e}function g(e,n,t){var r=n?x[n]:t,a=[e.trim()];return e.match(/(\s|^)hljs(\s|$)/)||a.push("hljs"),r&&a.push(r),a.join(" ").trim()}function p(e){var n=a(e);if(!/no(-?)highlight/.test(n)){var t;E.useBR?(t=document.createElementNS("http://www.w3.org/1999/xhtml","div"),t.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")):t=e;var r=t.textContent,o=n?s(n,r,!0):l(r),u=i(t);if(u.length){var p=document.createElementNS("http://www.w3.org/1999/xhtml","div");p.innerHTML=o.value,o.value=c(u,i(p),r)}o.value=f(o.value),e.innerHTML=o.value,e.className=g(e.className,n,o.language),e.result={language:o.language,re:o.r},o.second_best&&(e.second_best={language:o.second_best.language,re:o.second_best.r})}}function d(e){E=o(E,e)}function h(){if(!h.called){h.called=!0;var e=document.querySelectorAll("pre code");Array.prototype.forEach.call(e,p)}}function v(){addEventListener("DOMContentLoaded",h,!1),addEventListener("load",h,!1)}function b(n,t){var r=R[n]=t(e);r.aliases&&r.aliases.forEach(function(e){x[e]=n})}function m(){return Object.keys(R)}function N(e){return R[e]||R[x[e]]}var E={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0},R={},x={};return e.highlight=s,e.highlightAuto=l,e.fixMarkup=f,e.highlightBlock=p,e.configure=d,e.initHighlighting=h,e.initHighlightingOnLoad=v,e.registerLanguage=b,e.listLanguages=m,e.getLanguage=N,e.inherit=o,e.IR="[a-zA-Z][a-zA-Z0-9_]*",e.UIR="[a-zA-Z_][a-zA-Z0-9_]*",e.NR="\\b\\d+(\\.\\d+)?",e.CNR="(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",e.BNR="\\b(0b[01]+)",e.RSR="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",e.BE={b:"\\\\[\\s\\S]",r:0},e.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[e.BE]},e.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[e.BE]},e.PWM={b:/\b(a|an|the|are|I|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such)\b/},e.CLCM={cN:"comment",b:"//",e:"$",c:[e.PWM]},e.CBCM={cN:"comment",b:"/\\*",e:"\\*/",c:[e.PWM]},e.HCM={cN:"comment",b:"#",e:"$",c:[e.PWM]},e.NM={cN:"number",b:e.NR,r:0},e.CNM={cN:"number",b:e.CNR,r:0},e.BNM={cN:"number",b:e.BNR,r:0},e.CSSNM={cN:"number",b:e.NR+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",r:0},e.RM={cN:"regexp",b:/\//,e:/\/[gimuy]*/,i:/\n/,c:[e.BE,{b:/\[/,e:/\]/,r:0,c:[e.BE]}]},e.TM={cN:"title",b:e.IR,r:0},e.UTM={cN:"title",b:e.UIR,r:0},e});hljs.registerLanguage("xml",function(){var t="[A-Za-z0-9\\._:-]+",e={b:/<\?(php)?(?!\w)/,e:/\?>/,sL:"php",subLanguageMode:"continuous"},c={eW:!0,i:/]+/}]}]}]};return{aliases:["html","xhtml","rss","atom","xsl","plist"],cI:!0,c:[{cN:"doctype",b:"",r:10,c:[{b:"\\[",e:"\\]"}]},{cN:"comment",b:"",r:10},{cN:"cdata",b:"<\\!\\[CDATA\\[",e:"\\]\\]>",r:10},{cN:"tag",b:"|$)",e:">",k:{title:"style"},c:[c],starts:{e:"",rE:!0,sL:"css"}},{cN:"tag",b:"|$)",e:">",k:{title:"script"},c:[c],starts:{e:"",rE:!0,sL:"javascript"}},e,{cN:"pi",b:/<\?\w+/,e:/\?>/,r:10},{cN:"tag",b:"",c:[{cN:"title",b:/[^ \/><\n\t]+/,r:0},c]}]}});hljs.registerLanguage("cpp",function(t){var i={keyword:"false int float while private char catch export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const struct for static_cast|10 union namespace unsigned long volatile static protected bool template mutable if public friend do goto auto void enum else break extern using true class asm case typeid short reinterpret_cast|10 default double register explicit signed typename try this switch continue wchar_t inline delete alignof char16_t char32_t constexpr decltype noexcept nullptr static_assert thread_local restrict _Bool complex _Complex _Imaginaryintmax_t uintmax_t int8_t uint8_t int16_t uint16_t int32_t uint32_t int64_t uint64_tint_least8_t uint_least8_t int_least16_t uint_least16_t int_least32_t uint_least32_tint_least64_t uint_least64_t int_fast8_t uint_fast8_t int_fast16_t uint_fast16_t int_fast32_tuint_fast32_t int_fast64_t uint_fast64_t intptr_t uintptr_t atomic_bool atomic_char atomic_scharatomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llongatomic_ullong atomic_wchar_t atomic_char16_t atomic_char32_t atomic_intmax_t atomic_uintmax_tatomic_intptr_t atomic_uintptr_t atomic_size_t atomic_ptrdiff_t atomic_int_least8_t atomic_int_least16_tatomic_int_least32_t atomic_int_least64_t atomic_uint_least8_t atomic_uint_least16_t atomic_uint_least32_tatomic_uint_least64_t atomic_int_fast8_t atomic_int_fast16_t atomic_int_fast32_t atomic_int_fast64_tatomic_uint_fast8_t atomic_uint_fast16_t atomic_uint_fast32_t atomic_uint_fast64_t",built_in:"std string cin cout cerr clog stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap array shared_ptr abort abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf"};return{aliases:["c","h","c++","h++"],k:i,i:""]',k:"include",i:"\\n"},t.CLCM]},{cN:"stl_container",b:"\\b(deque|list|queue|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\s*<",e:">",k:i,c:["self"]},{b:t.IR+"::"},{bK:"new throw return",r:0},{cN:"function",b:"("+t.IR+"\\s+)+"+t.IR+"\\s*\\(",rB:!0,e:/[{;=]/,eE:!0,k:i,c:[{b:t.IR+"\\s*\\(",rB:!0,c:[t.TM],r:0},{cN:"params",b:/\(/,e:/\)/,k:i,r:0,c:[t.CBCM]},t.CLCM,t.CBCM]}]}});hljs.registerLanguage("bash",function(e){var t={cN:"variable",v:[{b:/\$[\w\d#@][\w\d_]*/},{b:/\$\{(.*?)\}/}]},s={cN:"string",b:/"/,e:/"/,c:[e.BE,t,{cN:"variable",b:/\$\(/,e:/\)/,c:[e.BE]}]},a={cN:"string",b:/'/,e:/'/};return{aliases:["sh","zsh"],l:/-?[a-z\.]+/,k:{keyword:"if then else elif fi for while in do done case esac function",literal:"true false",built_in:"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp",operator:"-ne -eq -lt -gt -f -d -e -s -l -a"},c:[{cN:"shebang",b:/^#![^\n]+sh\s*$/,r:10},{cN:"function",b:/\w[\w\d_]*\s*\(\s*\)\s*\{/,rB:!0,c:[e.inherit(e.TM,{b:/\w[\w\d_]*/})],r:0},e.HCM,e.NM,s,a,t]}});hljs.registerLanguage("java",function(e){var a=e.UIR+"(<"+e.UIR+">)?",t="false synchronized int abstract float private char boolean static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private",c="(\\b(0b[01_]+)|\\b0[xX][a-fA-F0-9_]+|(\\b[\\d_]+(\\.[\\d_]*)?|\\.[\\d_]+)([eE][-+]?\\d+)?)[lLfF]?",r={cN:"number",b:c,r:0};return{aliases:["jsp"],k:t,i:/<\//,c:[{cN:"javadoc",b:"/\\*\\*",e:"\\*/",r:0,c:[{cN:"javadoctag",b:"(^|\\s)@[A-Za-z]+"}]},e.CLCM,e.CBCM,e.ASM,e.QSM,{cN:"class",bK:"class interface",e:/[{;=]/,eE:!0,k:"class interface",i:/[:"\[\]]/,c:[{bK:"extends implements"},e.UTM]},{bK:"new throw return",r:0},{cN:"function",b:"("+a+"\\s+)+"+e.UIR+"\\s*\\(",rB:!0,e:/[{;=]/,eE:!0,k:t,c:[{b:e.UIR+"\\s*\\(",rB:!0,r:0,c:[e.UTM]},{cN:"params",b:/\(/,e:/\)/,k:t,r:0,c:[e.ASM,e.QSM,e.CNM,e.CBCM]},e.CLCM,e.CBCM]},r,{cN:"annotation",b:"@[A-Za-z]+"}]}});hljs.registerLanguage("ini",function(e){return{cI:!0,i:/\S/,c:[{cN:"comment",b:";",e:"$"},{cN:"title",b:"^\\[",e:"\\]"},{cN:"setting",b:"^[a-z0-9\\[\\]_-]+[ \\t]*=[ \\t]*",e:"$",c:[{cN:"value",eW:!0,k:"on off true false yes no",c:[e.QSM,e.NM],r:0}]}]}});hljs.registerLanguage("objectivec",function(e){var t={keyword:"int float while char export sizeof typedef const struct for union unsigned long volatile static bool mutable if do return goto void enum else break extern asm case short default double register explicit signed typename this switch continue wchar_t inline readonly assign readwrite self @synchronized id typeof nonatomic super unichar IBOutlet IBAction strong weak copy in out inout bycopy byref oneway __strong __weak __block __autoreleasing @private @protected @public @try @property @end @throw @catch @finally @autoreleasepool @synthesize @dynamic @selector @optional @required",literal:"false true FALSE TRUE nil YES NO NULL",built_in:"NSString NSData NSDictionary CGRect CGPoint UIButton UILabel UITextView UIWebView MKMapView NSView NSViewController NSWindow NSWindowController NSSet NSUUID NSIndexSet UISegmentedControl NSObject UITableViewDelegate UITableViewDataSource NSThread UIActivityIndicator UITabbar UIToolBar UIBarButtonItem UIImageView NSAutoreleasePool UITableView BOOL NSInteger CGFloat NSException NSLog NSMutableString NSMutableArray NSMutableDictionary NSURL NSIndexPath CGSize UITableViewCell UIView UIViewController UINavigationBar UINavigationController UITabBarController UIPopoverController UIPopoverControllerDelegate UIImage NSNumber UISearchBar NSFetchedResultsController NSFetchedResultsChangeType UIScrollView UIScrollViewDelegate UIEdgeInsets UIColor UIFont UIApplication NSNotFound NSNotificationCenter NSNotification UILocalNotification NSBundle NSFileManager NSTimeInterval NSDate NSCalendar NSUserDefaults UIWindow NSRange NSArray NSError NSURLRequest NSURLConnection NSURLSession NSURLSessionDataTask NSURLSessionDownloadTask NSURLSessionUploadTask NSURLResponseUIInterfaceOrientation MPMoviePlayerController dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once"},o=/[a-zA-Z@][a-zA-Z0-9_]*/,a="@interface @class @protocol @implementation";return{aliases:["m","mm","objc","obj-c"],k:t,l:o,i:""}]}]},{cN:"class",b:"("+a.split(" ").join("|")+")\\b",e:"({|$)",eE:!0,k:a,l:o,c:[e.UTM]},{cN:"variable",b:"\\."+e.UIR,r:0}]}});hljs.registerLanguage("php",function(e){var c={cN:"variable",b:"\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*"},i={cN:"preprocessor",b:/<\?(php)?|\?>/},a={cN:"string",c:[e.BE,i],v:[{b:'b"',e:'"'},{b:"b'",e:"'"},e.inherit(e.ASM,{i:null}),e.inherit(e.QSM,{i:null})]},n={v:[e.BNM,e.CNM]};return{aliases:["php3","php4","php5","php6"],cI:!0,k:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",c:[e.CLCM,e.HCM,{cN:"comment",b:"/\\*",e:"\\*/",c:[{cN:"phpdoc",b:"\\s@[A-Za-z]+"},i]},{cN:"comment",b:"__halt_compiler.+?;",eW:!0,k:"__halt_compiler",l:e.UIR},{cN:"string",b:"<<<['\"]?\\w+['\"]?$",e:"^\\w+;",c:[e.BE]},i,c,{b:/->+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{cN:"function",bK:"function",e:/[;{]/,eE:!0,i:"\\$|\\[|%",c:[e.UTM,{cN:"params",b:"\\(",e:"\\)",c:["self",c,e.CBCM,a,n]}]},{cN:"class",bK:"class interface",e:"{",eE:!0,i:/[:\(\$"]/,c:[{bK:"extends implements"},e.UTM]},{bK:"namespace",e:";",i:/[\.']/,c:[e.UTM]},{bK:"use",e:";",c:[e.UTM]},{b:"=>"},a,n]}});hljs.registerLanguage("coffeescript",function(e){var c={keyword:"in if for while finally new do return else break catch instanceof throw try this switch continue typeof delete debugger super then unless until loop of by when and or is isnt not",literal:"true false null undefined yes no on off",reserved:"case default function var void with const let enum export import native __hasProp __extends __slice __bind __indexOf",built_in:"npm require console print module global window document"},n="[A-Za-z$_][0-9A-Za-z$_]*",t={cN:"subst",b:/#\{/,e:/}/,k:c},r=[e.BNM,e.inherit(e.CNM,{starts:{e:"(\\s*/)?",r:0}}),{cN:"string",v:[{b:/'''/,e:/'''/,c:[e.BE]},{b:/'/,e:/'/,c:[e.BE]},{b:/"""/,e:/"""/,c:[e.BE,t]},{b:/"/,e:/"/,c:[e.BE,t]}]},{cN:"regexp",v:[{b:"///",e:"///",c:[t,e.HCM]},{b:"//[gim]*",r:0},{b:/\/(?![ *])(\\\/|.)*?\/[gim]*(?=\W|$)/}]},{cN:"property",b:"@"+n},{b:"`",e:"`",eB:!0,eE:!0,sL:"javascript"}];t.c=r;var i=e.inherit(e.TM,{b:n}),s="(\\(.*\\))?\\s*\\B[-=]>",o={cN:"params",b:"\\([^\\(]",rB:!0,c:[{b:/\(/,e:/\)/,k:c,c:["self"].concat(r)}]};return{aliases:["coffee","cson","iced"],k:c,i:/\/\*/,c:r.concat([{cN:"comment",b:"###",e:"###",c:[e.PWM]},e.HCM,{cN:"function",b:"^\\s*"+n+"\\s*=\\s*"+s,e:"[-=]>",rB:!0,c:[i,o]},{b:/[:\(,=]\s*/,r:0,c:[{cN:"function",b:s,e:"[-=]>",rB:!0,c:[o]}]},{cN:"class",bK:"class",e:"$",i:/[:="\[\]]/,c:[{bK:"extends",eW:!0,i:/[:="\[\]]/,c:[i]},i]},{cN:"attribute",b:n+":",e:":",rB:!0,rE:!0,r:0}])}});hljs.registerLanguage("sql",function(e){var t={cN:"comment",b:"--",e:"$"};return{cI:!0,i:/[<>]/,c:[{cN:"operator",bK:"begin end start commit rollback savepoint lock alter create drop rename call delete do handler insert load replace select truncate update set show pragma grant merge describe use explain help declare prepare execute deallocate savepoint release unlock purge reset change stop analyze cache flush optimize repair kill install uninstall checksum restore check backup",e:/;/,eW:!0,k:{keyword:"abs absolute acos action add adddate addtime aes_decrypt aes_encrypt after aggregate all allocate alter analyze and any are as asc ascii asin assertion at atan atan2 atn2 authorization authors avg backup before begin benchmark between bin binlog bit_and bit_count bit_length bit_or bit_xor both by cache call cascade cascaded case cast catalog ceil ceiling chain change changed char_length character_length charindex charset check checksum checksum_agg choose close coalesce coercibility collate collation collationproperty column columns columns_updated commit compress concat concat_ws concurrent connect connection connection_id consistent constraint constraints continue contributors conv convert convert_tz corresponding cos cot count count_big crc32 create cross cume_dist curdate current current_date current_time current_timestamp current_user cursor curtime data database databases datalength date_add date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts datetimeoffsetfromparts day dayname dayofmonth dayofweek dayofyear deallocate declare decode default deferrable deferred degrees delayed delete des_decrypt des_encrypt des_key_file desc describe descriptor diagnostics difference disconnect distinct distinctrow div do domain double drop dumpfile each else elt enclosed encode encrypt end end-exec engine engines eomonth errors escape escaped event eventdata events except exception exec execute exists exp explain export_set extended external extract fast fetch field fields find_in_set first first_value floor flush for force foreign format found found_rows from from_base64 from_days from_unixtime full function get get_format get_lock getdate getutcdate global go goto grant grants greatest group group_concat grouping grouping_id gtid_subset gtid_subtract handler having help hex high_priority hosts hour ident_current ident_incr ident_seed identified identity if ifnull ignore iif ilike immediate in index indicator inet6_aton inet6_ntoa inet_aton inet_ntoa infile initially inner innodb input insert install instr intersect into is is_free_lock is_ipv4 is_ipv4_compat is_ipv4_mapped is_not is_not_null is_used_lock isdate isnull isolation join key kill language last last_day last_insert_id last_value lcase lead leading least leaves left len lenght level like limit lines ln load load_file local localtime localtimestamp locate lock log log10 log2 logfile logs low_priority lower lpad ltrim make_set makedate maketime master master_pos_wait match matched max md5 medium merge microsecond mid min minute mod mode module month monthname mutex name_const names national natural nchar next no no_write_to_binlog not now nullif nvarchar oct octet_length of old_password on only open optimize option optionally or ord order outer outfile output pad parse partial partition password patindex percent_rank percentile_cont percentile_disc period_add period_diff pi plugin position pow power pragma precision prepare preserve primary prior privileges procedure procedure_analyze processlist profile profiles public publishingservername purge quarter query quick quote quotename radians rand read references regexp relative relaylog release release_lock rename repair repeat replace replicate reset restore restrict return returns reverse revoke right rlike rollback rollup round row row_count rows rpad rtrim savepoint schema scroll sec_to_time second section select serializable server session session_user set sha sha1 sha2 share show sign sin size slave sleep smalldatetimefromparts snapshot some soname soundex sounds_like space sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sql_variant_property sqlstate sqrt square start starting status std stddev stddev_pop stddev_samp stdev stdevp stop str str_to_date straight_join strcmp string stuff subdate substr substring subtime subtring_index sum switchoffset sysdate sysdatetime sysdatetimeoffset system_user sysutcdatetime table tables tablespace tan temporary terminated tertiary_weights then time time_format time_to_sec timediff timefromparts timestamp timestampadd timestampdiff timezone_hour timezone_minute to to_base64 to_days to_seconds todatetimeoffset trailing transaction translation trigger trigger_nestlevel triggers trim truncate try_cast try_convert try_parse ucase uncompress uncompressed_length unhex unicode uninstall union unique unix_timestamp unknown unlock update upgrade upped upper usage use user user_resources using utc_date utc_time utc_timestamp uuid uuid_short validate_password_strength value values var var_pop var_samp variables variance varp version view warnings week weekday weekofyear weight_string when whenever where with work write xml xor year yearweek zon",literal:"true false null",built_in:"array bigint binary bit blob boolean char character date dec decimal float int integer interval number numeric real serial smallint varchar varying int8 serial8 text"},c:[{cN:"string",b:"'",e:"'",c:[e.BE,{b:"''"}]},{cN:"string",b:'"',e:'"',c:[e.BE,{b:'""'}]},{cN:"string",b:"`",e:"`",c:[e.BE]},e.CNM,e.CBCM,t]},e.CBCM,t]}});hljs.registerLanguage("http",function(){return{i:"\\S",c:[{cN:"status",b:"^HTTP/[0-9\\.]+",e:"$",c:[{cN:"number",b:"\\b\\d{3}\\b"}]},{cN:"request",b:"^[A-Z]+ (.*?) HTTP/[0-9\\.]+$",rB:!0,e:"$",c:[{cN:"string",b:" ",e:" ",eB:!0,eE:!0}]},{cN:"attribute",b:"^\\w",e:": ",eE:!0,i:"\\n|\\s|=",starts:{cN:"string",e:"$"}},{b:"\\n\\n",starts:{sL:"",eW:!0}}]}});hljs.registerLanguage("makefile",function(e){var a={cN:"variable",b:/\$\(/,e:/\)/,c:[e.BE]};return{aliases:["mk","mak"],c:[e.HCM,{b:/^\w+\s*\W*=/,rB:!0,r:0,starts:{cN:"constant",e:/\s*\W*=/,eE:!0,starts:{e:/$/,r:0,c:[a]}}},{cN:"title",b:/^[\w]+:\s*$/},{cN:"phony",b:/^\.PHONY:/,e:/$/,k:".PHONY",l:/[\.\w]+/},{b:/^\t+/,e:/$/,r:0,c:[e.QSM,a]}]}});hljs.registerLanguage("perl",function(e){var t="getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qqfileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent shutdown dump chomp connect getsockname die socketpair close flock exists index shmgetsub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedirioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when",r={cN:"subst",b:"[$@]\\{",e:"\\}",k:t},s={b:"->{",e:"}"},n={cN:"variable",v:[{b:/\$\d/},{b:/[\$\%\@](\^\w\b|#\w+(\:\:\w+)*|{\w+}|\w+(\:\:\w*)*)/},{b:/[\$\%\@][^\s\w{]/,r:0}]},o={cN:"comment",b:"^(__END__|__DATA__)",e:"\\n$",r:5},i=[e.BE,r,n],c=[n,e.HCM,o,{cN:"comment",b:"^\\=\\w",e:"\\=cut",eW:!0},s,{cN:"string",c:i,v:[{b:"q[qwxr]?\\s*\\(",e:"\\)",r:5},{b:"q[qwxr]?\\s*\\[",e:"\\]",r:5},{b:"q[qwxr]?\\s*\\{",e:"\\}",r:5},{b:"q[qwxr]?\\s*\\|",e:"\\|",r:5},{b:"q[qwxr]?\\s*\\<",e:"\\>",r:5},{b:"qw\\s+q",e:"q",r:5},{b:"'",e:"'",c:[e.BE]},{b:'"',e:'"'},{b:"`",e:"`",c:[e.BE]},{b:"{\\w+}",c:[],r:0},{b:"-?\\w+\\s*\\=\\>",c:[],r:0}]},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{b:"(\\/\\/|"+e.RSR+"|\\b(split|return|print|reverse|grep)\\b)\\s*",k:"split return print reverse grep",r:0,c:[e.HCM,o,{cN:"regexp",b:"(s|tr|y)/(\\\\.|[^/])*/(\\\\.|[^/])*/[a-z]*",r:10},{cN:"regexp",b:"(m|qr)?/",e:"/[a-z]*",c:[e.BE],r:0}]},{cN:"sub",bK:"sub",e:"(\\s*\\(.*?\\))?[;{]",r:5},{cN:"operator",b:"-\\w\\b",r:0}];return r.c=c,s.c=c,{aliases:["pl"],k:t,c:c}});hljs.registerLanguage("ruby",function(e){var b="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?",r="and false then defined module in return redo if BEGIN retry end for true self when next until do begin unless END rescue nil else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor",c={cN:"yardoctag",b:"@[A-Za-z]+"},a={cN:"value",b:"#<",e:">"},s={cN:"comment",v:[{b:"#",e:"$",c:[c]},{b:"^\\=begin",e:"^\\=end",c:[c],r:10},{b:"^__END__",e:"\\n$"}]},n={cN:"subst",b:"#\\{",e:"}",k:r},t={cN:"string",c:[e.BE,n],v:[{b:/'/,e:/'/},{b:/"/,e:/"/},{b:/`/,e:/`/},{b:"%[qQwWx]?\\(",e:"\\)"},{b:"%[qQwWx]?\\[",e:"\\]"},{b:"%[qQwWx]?{",e:"}"},{b:"%[qQwWx]?<",e:">"},{b:"%[qQwWx]?/",e:"/"},{b:"%[qQwWx]?%",e:"%"},{b:"%[qQwWx]?-",e:"-"},{b:"%[qQwWx]?\\|",e:"\\|"},{b:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/}]},i={cN:"params",b:"\\(",e:"\\)",k:r},d=[t,a,s,{cN:"class",bK:"class module",e:"$|;",i:/=/,c:[e.inherit(e.TM,{b:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{cN:"inheritance",b:"<\\s*",c:[{cN:"parent",b:"("+e.IR+"::)?"+e.IR}]},s]},{cN:"function",bK:"def",e:" |$|;",r:0,c:[e.inherit(e.TM,{b:b}),i,s]},{cN:"constant",b:"(::)?(\\b[A-Z]\\w*(::)?)+",r:0},{cN:"symbol",b:e.UIR+"(\\!|\\?)?:",r:0},{cN:"symbol",b:":",c:[t,{b:b}],r:0},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{cN:"variable",b:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{b:"("+e.RSR+")\\s*",c:[a,s,{cN:"regexp",c:[e.BE,n],i:/\n/,v:[{b:"/",e:"/[a-z]*"},{b:"%r{",e:"}[a-z]*"},{b:"%r\\(",e:"\\)[a-z]*"},{b:"%r!",e:"![a-z]*"},{b:"%r\\[",e:"\\][a-z]*"}]}],r:0}];n.c=d,i.c=d;var l="[>?]>",u="[\\w#]+\\(\\w+\\):\\d+:\\d+>",N="(\\w+-)?\\d+\\.\\d+\\.\\d(p\\d+)?[^>]+>",o=[{b:/^\s*=>/,cN:"status",starts:{e:"$",c:d}},{cN:"prompt",b:"^("+l+"|"+u+"|"+N+")",starts:{e:"$",c:d}}];return{aliases:["rb","gemspec","podspec","thor","irb"],k:r,c:[s].concat(o).concat(d)}});hljs.registerLanguage("apache",function(e){var r={cN:"number",b:"[\\$%]\\d+"};return{aliases:["apacheconf"],cI:!0,c:[e.HCM,{cN:"tag",b:""},{cN:"keyword",b:/\w+/,r:0,k:{common:"order deny allow setenv rewriterule rewriteengine rewritecond documentroot sethandler errordocument loadmodule options header listen serverroot servername"},starts:{e:/$/,r:0,k:{literal:"on off all"},c:[{cN:"sqbracket",b:"\\s\\[",e:"\\]$"},{cN:"cbracket",b:"[\\$%]\\{",e:"\\}",c:["self",r]},r,e.QSM]}}],i:/\S/}});hljs.registerLanguage("json",function(e){var t={literal:"true false null"},i=[e.QSM,e.CNM],l={cN:"value",e:",",eW:!0,eE:!0,c:i,k:t},c={b:"{",e:"}",c:[{cN:"attribute",b:'\\s*"',e:'"\\s*:\\s*',eB:!0,eE:!0,c:[e.BE],i:"\\n",starts:l}],i:"\\S"},n={b:"\\[",e:"\\]",c:[e.inherit(l,{cN:null})],i:"\\S"};return i.splice(i.length,0,c,n),{c:i,k:t,i:"\\S"}});hljs.registerLanguage("css",function(e){var c="[a-zA-Z-][a-zA-Z0-9_-]*",a={cN:"function",b:c+"\\(",rB:!0,eE:!0,e:"\\("};return{cI:!0,i:"[=/|']",c:[e.CBCM,{cN:"id",b:"\\#[A-Za-z0-9_-]+"},{cN:"class",b:"\\.[A-Za-z0-9_-]+",r:0},{cN:"attr_selector",b:"\\[",e:"\\]",i:"$"},{cN:"pseudo",b:":(:)?[a-zA-Z0-9\\_\\-\\+\\(\\)\\\"\\']+"},{cN:"at_rule",b:"@(font-face|page)",l:"[a-z-]+",k:"font-face page"},{cN:"at_rule",b:"@",e:"[{;]",c:[{cN:"keyword",b:/\S+/},{b:/\s/,eW:!0,eE:!0,r:0,c:[a,e.ASM,e.QSM,e.CSSNM]}]},{cN:"tag",b:c,r:0},{cN:"rules",b:"{",e:"}",i:"[^\\s]",r:0,c:[e.CBCM,{cN:"rule",b:"[^\\s]",rB:!0,e:";",eW:!0,c:[{cN:"attribute",b:"[A-Z\\_\\.\\-]+",e:":",eE:!0,i:"[^\\s]",starts:{cN:"value",eW:!0,eE:!0,c:[a,e.CSSNM,e.QSM,e.ASM,e.CBCM,{cN:"hexcolor",b:"#[0-9A-Fa-f]+"},{cN:"important",b:"!important"}]}}]}]}]}});hljs.registerLanguage("swift",function(e){var t={keyword:"class deinit enum extension func import init let protocol static struct subscript typealias var break case continue default do else fallthrough if in for return switch where while as dynamicType is new super self Self Type __COLUMN__ __FILE__ __FUNCTION__ __LINE__ associativity didSet get infix inout left mutating none nonmutating operator override postfix precedence prefix right set unowned unowned safe unsafe weak willSet",literal:"true false nil",built_in:"abs advance alignof alignofValue assert bridgeFromObjectiveC bridgeFromObjectiveCUnconditional bridgeToObjectiveC bridgeToObjectiveCUnconditional c contains count countElements countLeadingZeros debugPrint debugPrintln distance dropFirst dropLast dump encodeBitsAsWords enumerate equal false filter find getBridgedObjectiveCType getVaList indices insertionSort isBridgedToObjectiveC isBridgedVerbatimToObjectiveC isUniquelyReferenced join lexicographicalCompare map max maxElement min minElement nil numericCast partition posix print println quickSort reduce reflect reinterpretCast reverse roundUpToAlignment sizeof sizeofValue sort split startsWith strideof strideofValue swap swift toString transcode true underestimateCount unsafeReflect withExtendedLifetime withObjectAtPlusZero withUnsafePointer withUnsafePointerToObject withUnsafePointers withVaList"},i={cN:"type",b:"\\b[A-Z][\\w']*",r:0},n={cN:"comment",b:"/\\*",e:"\\*/",c:[e.PWM,"self"]},r={cN:"subst",b:/\\\(/,e:"\\)",k:t,c:[]},s={cN:"number",b:"\\b([\\d_]+(\\.[\\deE_]+)?|0x[a-fA-F0-9_]+(\\.[a-fA-F0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\b",r:0},o=e.inherit(e.QSM,{c:[r,e.BE]});return r.c=[s],{k:t,c:[o,e.CLCM,n,i,s,{cN:"func",bK:"func",e:"{",eE:!0,c:[e.inherit(e.TM,{b:/[A-Za-z$_][0-9A-Za-z$_]*/,i:/\(/}),{cN:"generics",b:/\/,i:/\>/},{cN:"params",b:/\(/,e:/\)/,k:t,c:["self",s,o,e.CBCM,{b:":"}],i:/["']/}],i:/\[|%/},{cN:"class",k:"struct protocol class extension enum",b:"(struct|protocol|class(?! (func|var))|extension|enum)",e:"\\{",eE:!0,c:[e.inherit(e.TM,{b:/[A-Za-z$_][0-9A-Za-z$_]*/})]},{cN:"preprocessor",b:"(@assignment|@class_protocol|@exported|@final|@lazy|@noreturn|@NSCopying|@NSManaged|@objc|@optional|@required|@auto_closure|@noreturn|@IBAction|@IBDesignable|@IBInspectable|@IBOutlet|@infix|@prefix|@postfix)"}]}});hljs.registerLanguage("nginx",function(e){var r={cN:"variable",v:[{b:/\$\d+/},{b:/\$\{/,e:/}/},{b:"[\\$\\@]"+e.UIR}]},b={eW:!0,l:"[a-z/_]+",k:{built_in:"on off yes no true false none blocked debug info notice warn error crit select break last permanent redirect kqueue rtsig epoll poll /dev/poll"},r:0,i:"=>",c:[e.HCM,{cN:"string",c:[e.BE,r],v:[{b:/"/,e:/"/},{b:/'/,e:/'/}]},{cN:"url",b:"([a-z]+):/",e:"\\s",eW:!0,eE:!0,c:[r]},{cN:"regexp",c:[e.BE,r],v:[{b:"\\s\\^",e:"\\s|{|;",rE:!0},{b:"~\\*?\\s+",e:"\\s|{|;",rE:!0},{b:"\\*(\\.[a-z\\-]+)+"},{b:"([a-z\\-]+\\.)+\\*"}]},{cN:"number",b:"\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b"},{cN:"number",b:"\\b\\d+[kKmMgGdshdwy]*\\b",r:0},r]};return{aliases:["nginxconf"],c:[e.HCM,{b:e.UIR+"\\s",e:";|{",rB:!0,c:[{cN:"title",b:e.UIR,starts:b}],r:0}],i:"[^\\s\\}]"}});hljs.registerLanguage("cs",function(e){var r="abstract as base bool break byte case catch char checked const continue decimal default delegate do double else enum event explicit extern false finally fixed float for foreach goto if implicit in int interface internal is lock long null object operator out override params private protected public readonly ref sbyte sealed short sizeof stackalloc static string struct switch this true try typeof uint ulong unchecked unsafe ushort using virtual volatile void while async protected public private internal ascending descending from get group into join let orderby partial select set value var where yield",t=e.IR+"(<"+e.IR+">)?";return{aliases:["csharp"],k:r,i:/::/,c:[{cN:"comment",b:"///",e:"$",rB:!0,c:[{cN:"xmlDocTag",v:[{b:"///",r:0},{b:""},{b:""}]}]},e.CLCM,e.CBCM,{cN:"preprocessor",b:"#",e:"$",k:"if else elif endif define undef warning error line region endregion pragma checksum"},{cN:"string",b:'@"',e:'"',c:[{b:'""'}]},e.ASM,e.QSM,e.CNM,{bK:"class namespace interface",e:/[{;=]/,i:/[^\s:]/,c:[e.TM,e.CLCM,e.CBCM]},{bK:"new return throw await",r:0},{cN:"function",b:"("+t+"\\s+)+"+e.IR+"\\s*\\(",rB:!0,e:/[{;=]/,eE:!0,k:r,c:[{b:e.IR+"\\s*\\(",rB:!0,c:[e.TM],r:0},{cN:"params",b:/\(/,e:/\)/,k:r,r:0,c:[e.ASM,e.QSM,e.CNM,e.CBCM]},e.CLCM,e.CBCM]}]}});hljs.registerLanguage("markdown",function(){return{aliases:["md","mkdown","mkd"],c:[{cN:"header",v:[{b:"^#{1,6}",e:"$"},{b:"^.+?\\n[=-]{2,}$"}]},{b:"<",e:">",sL:"xml",r:0},{cN:"bullet",b:"^([*+-]|(\\d+\\.))\\s+"},{cN:"strong",b:"[*_]{2}.+?[*_]{2}"},{cN:"emphasis",v:[{b:"\\*.+?\\*"},{b:"_.+?_",r:0}]},{cN:"blockquote",b:"^>\\s+",e:"$"},{cN:"code",v:[{b:"`.+?`"},{b:"^( {4}| )",e:"$",r:0}]},{cN:"horizontal_rule",b:"^[-\\*]{3,}",e:"$"},{b:"\\[.+?\\][\\(\\[].*?[\\)\\]]",rB:!0,c:[{cN:"link_label",b:"\\[",e:"\\]",eB:!0,rE:!0,r:0},{cN:"link_url",b:"\\]\\(",e:"\\)",eB:!0,eE:!0},{cN:"link_reference",b:"\\]\\[",e:"\\]",eB:!0,eE:!0}],r:10},{b:"^\\[.+\\]:",rB:!0,c:[{cN:"link_reference",b:"\\[",e:"\\]:",eB:!0,eE:!0,starts:{cN:"link_url",e:"$"}}]}]}});hljs.registerLanguage("diff",function(){return{aliases:["patch"],c:[{cN:"chunk",r:10,v:[{b:/^\@\@ +\-\d+,\d+ +\+\d+,\d+ +\@\@$/},{b:/^\*\*\* +\d+,\d+ +\*\*\*\*$/},{b:/^\-\-\- +\d+,\d+ +\-\-\-\-$/}]},{cN:"header",v:[{b:/Index: /,e:/$/},{b:/=====/,e:/=====$/},{b:/^\-\-\-/,e:/$/},{b:/^\*{3} /,e:/$/},{b:/^\+\+\+/,e:/$/},{b:/\*{5}/,e:/\*{5}$/}]},{cN:"addition",b:"^\\+",e:"$"},{cN:"deletion",b:"^\\-",e:"$"},{cN:"change",b:"^\\!",e:"$"}]}});hljs.registerLanguage("javascript",function(r){return{aliases:["js"],k:{keyword:"in if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const class",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document"},c:[{cN:"pi",r:10,v:[{b:/^\s*('|")use strict('|")/},{b:/^\s*('|")use asm('|")/}]},r.ASM,r.QSM,r.CLCM,r.CBCM,r.CNM,{b:"("+r.RSR+"|\\b(case|return|throw)\\b)\\s*",k:"return throw case",c:[r.CLCM,r.CBCM,r.RM,{b:/;/,r:0,sL:"xml"}],r:0},{cN:"function",bK:"function",e:/\{/,eE:!0,c:[r.inherit(r.TM,{b:/[A-Za-z$_][0-9A-Za-z$_]*/}),{cN:"params",b:/\(/,e:/\)/,c:[r.CLCM,r.CBCM],i:/["'\(]/}],i:/\[|%/},{b:/\$[(.]/},{b:"\\."+r.IR,r:0}]}});hljs.registerLanguage("python",function(e){var r={cN:"prompt",b:/^(>>>|\.\.\.) /},b={cN:"string",c:[e.BE],v:[{b:/(u|b)?r?'''/,e:/'''/,c:[r],r:10},{b:/(u|b)?r?"""/,e:/"""/,c:[r],r:10},{b:/(u|r|ur)'/,e:/'/,r:10},{b:/(u|r|ur)"/,e:/"/,r:10},{b:/(b|br)'/,e:/'/},{b:/(b|br)"/,e:/"/},e.ASM,e.QSM]},l={cN:"number",r:0,v:[{b:e.BNR+"[lLjJ]?"},{b:"\\b(0o[0-7]+)[lLjJ]?"},{b:e.CNR+"[lLjJ]?"}]},c={cN:"params",b:/\(/,e:/\)/,c:["self",r,l,b]};return{aliases:["py","gyp"],k:{keyword:"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda nonlocal|10 None True False",built_in:"Ellipsis NotImplemented"},i:/(<\/|->|\?)/,c:[r,l,b,e.HCM,{v:[{cN:"function",bK:"def",r:10},{cN:"class",bK:"class"}],e:/:/,i:/[${=;\n]/,c:[e.UTM,c]},{cN:"decorator",b:/@/,e:/$/},{b:/\b(print|exec)\(/}]}}); -------------------------------------------------------------------------------- /assets/js/main.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function() { 2 | 3 | $('a.blog-button').click(function() { 4 | // If already in blog, return early without animate overlay panel again. 5 | if (location.hash && location.hash == "#blog") return; 6 | if ($('.panel-cover').hasClass('panel-cover--collapsed')) return; 7 | $('.main-post-list').removeClass('hidden'); 8 | currentWidth = $('.panel-cover').width(); 9 | if (currentWidth < 960) { 10 | $('.panel-cover').addClass('panel-cover--collapsed'); 11 | $('.content-wrapper').addClass('animated slideInRight'); 12 | } else { 13 | $('.panel-cover').css('max-width',currentWidth); 14 | $('.panel-cover').animate({'max-width': '700px', 'width': '30%'}, 400, swing = 'swing', function() {} ); 15 | } 16 | }); 17 | 18 | if (window.location.hash && window.location.hash == "#blog") { 19 | $('.panel-cover').addClass('panel-cover--collapsed'); 20 | $('.main-post-list').removeClass('hidden'); 21 | } 22 | 23 | if (window.location.pathname.substring(0, 5) == "/tag/") { 24 | $('.panel-cover').addClass('panel-cover--collapsed'); 25 | } 26 | 27 | $('.btn-mobile-menu__icon').click(function() { 28 | if ($('.navigation-wrapper').css('display') == "block") { 29 | $('.navigation-wrapper').one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function() { 30 | $('.navigation-wrapper').toggleClass('visible animated bounceOutUp'); 31 | }); 32 | $('.navigation-wrapper').toggleClass('animated bounceInDown animated bounceOutUp'); 33 | 34 | } else { 35 | $('.navigation-wrapper').toggleClass('visible animated bounceInDown'); 36 | } 37 | $('.btn-mobile-menu__icon').toggleClass('fa fa-list fa fa-angle-up animated fadeIn'); 38 | }); 39 | 40 | $('.navigation-wrapper .blog-button').click(function() { 41 | if ($('.navigation-wrapper').css('display') == "block") { 42 | $('.navigation-wrapper').one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function() { 43 | $('.navigation-wrapper').toggleClass('visible animated bounceOutUp'); 44 | }); 45 | 46 | $('.navigation-wrapper').toggleClass('animated bounceInDown animated bounceOutUp'); 47 | } 48 | 49 | $('.btn-mobile-menu__icon').toggleClass('fa fa-list fa fa-angle-up animated fadeIn'); 50 | }); 51 | }); 52 | $(document.links).filter(function() { 53 | return this.hostname != window.location.hostname; 54 | }).attr('target', '_blank'); 55 | -------------------------------------------------------------------------------- /assets/scss/components/_buttons.scss: -------------------------------------------------------------------------------- 1 | // ------------------------------ 2 | // BUTTONS 3 | // ------------------------------ 4 | 5 | .btn { 6 | padding: 10px 20px; 7 | border: 1px solid $primary-color; 8 | border-radius: 20px; 9 | font-size: .9em; 10 | font-weight: bold; 11 | letter-spacing: 1px; 12 | text-shadow: none; 13 | color: $primary-color; 14 | -webkit-font-smoothing: antialiased; 15 | 16 | &:hover { 17 | color: darken($primary-color, 15%); 18 | border-color: darken($primary-color, 15%); 19 | } 20 | 21 | } 22 | 23 | .btn-border-small { 24 | border: 1px solid $primary-color; 25 | border-radius: 20px; 26 | padding: 6px 8px; 27 | font-size: .8em; 28 | margin-left: 10px; 29 | } 30 | 31 | .btn-secondary { 32 | border-color: $secondary-color; 33 | color: $secondary-color; 34 | 35 | &:hover { 36 | color: darken($secondary-color, 15%); 37 | border-color: darken($secondary-color, 15%); 38 | } 39 | 40 | } 41 | 42 | .btn-tertiary { 43 | border-color: $gray-dark; 44 | color: $gray-dark; 45 | 46 | &:hover { 47 | color: darken($gray-dark, 15%); 48 | border-color: darken($gray-dark, 15%); 49 | } 50 | 51 | } 52 | 53 | .btn-large { 54 | padding: 10px 24px; 55 | font-size: 1.1em; 56 | } 57 | 58 | .btn-small { 59 | padding: 8px 12px; 60 | font-size: .7em; 61 | } 62 | 63 | // ------------------------------ 64 | // MOBILE MENU BUTTON 65 | // ------------------------------ 66 | 67 | .btn-mobile-menu { 68 | display: none; 69 | position: fixed; 70 | z-index: 9999; 71 | top: 0; 72 | right: 0; 73 | left: 0; 74 | width: 100%; 75 | height: 35px; 76 | background: rgba($gray-darkest,.98); 77 | border-bottom: 1px solid rgba(255,255,255,.1); 78 | text-align: center; 79 | } 80 | 81 | .btn-mobile-menu__icon, 82 | .btn-mobile-close__icon { 83 | position: relative; 84 | top: 10px; 85 | color: #FFF; 86 | } -------------------------------------------------------------------------------- /assets/scss/components/_forms.scss: -------------------------------------------------------------------------------- 1 | *:focus { 2 | outline: none; 3 | } 4 | 5 | input[type="text"], 6 | input[type="password"], 7 | input[type="datetime"], 8 | input[type="datetime-local"], 9 | input[type="date"], 10 | input[type="month"], 11 | input[type="time"], 12 | input[type="week"], 13 | input[type="number"], 14 | input[type="email"], 15 | input[type="url"], 16 | input[type="search"], 17 | input[type="tel"] { 18 | width: 240px; 19 | padding: 1em 1em; 20 | background: #FFF; 21 | border: 1px solid $gray-light; 22 | border-radius: $border-radius; 23 | font-size: .9em; 24 | color: $gray-darker; 25 | 26 | &:focus { 27 | border-color: $secondary-color; 28 | } 29 | 30 | @include placeholder { 31 | color: $gray; 32 | } 33 | 34 | } -------------------------------------------------------------------------------- /assets/scss/components/_icons.scss: -------------------------------------------------------------------------------- 1 | i { 2 | font-family: 'entypo'; 3 | font-weight: normal; 4 | font-style: normal; 5 | font-size: 18px; 6 | } 7 | 8 | .social { 9 | font-size: 22px; 10 | } 11 | 12 | .icon-social { 13 | font-family: 'entypo-social'; 14 | font-size: 22px; 15 | display: block; 16 | position: relative; 17 | } -------------------------------------------------------------------------------- /assets/scss/components/_navigation.scss: -------------------------------------------------------------------------------- 1 | nav { 2 | display: inline-block; 3 | position: relative; 4 | } 5 | 6 | .navigation { 7 | display: inline-block; 8 | float: left; 9 | position: relative; 10 | margin: 0; 11 | list-style-type: none; 12 | } 13 | 14 | .navigation__item { 15 | display: inline-block; 16 | margin: 5px 1px 0 0; 17 | line-height: 1em; 18 | 19 | a { 20 | display: block; 21 | position: relative; 22 | @extend .btn; 23 | border-color: #FFF; 24 | color: #FFF; 25 | opacity: .8; 26 | 27 | &:hover { 28 | color: #FFF; 29 | border-color: #FFF; 30 | opacity: 1; 31 | } 32 | 33 | } 34 | 35 | } 36 | 37 | .navigation--social { 38 | a { 39 | border: 0px; 40 | padding: 6px 8px 6px 9px; 41 | 42 | .label { 43 | display: none; 44 | } 45 | 46 | .icon { 47 | display: block; 48 | font-size: 1.7em; 49 | } 50 | 51 | } 52 | 53 | } -------------------------------------------------------------------------------- /assets/scss/components/_pagination.scss: -------------------------------------------------------------------------------- 1 | // ------------------------------ 2 | // PAGINATION 3 | // ------------------------------ 4 | 5 | .pagination { 6 | display: block; 7 | margin: 0 0 4em 0; 8 | } 9 | 10 | .pagination__page-number { 11 | margin: 0; 12 | font-size: .8em; 13 | color: $gray-dark; 14 | } 15 | 16 | .pagination__newer { 17 | margin-right: 1em; 18 | } 19 | 20 | .pagination__older { 21 | margin-left: 1em; 22 | } -------------------------------------------------------------------------------- /assets/scss/components/_panels.scss: -------------------------------------------------------------------------------- 1 | // ------------------------------ 2 | // PANEL 3 | // ------------------------------ 4 | 5 | .panel { 6 | display: table; 7 | width: 100%; 8 | height: 100%; 9 | } 10 | 11 | .panel__vertical { 12 | display: table-cell; 13 | vertical-align: middle; 14 | } 15 | 16 | .panel-title { 17 | margin: 0 0 5px 0; 18 | font-size: 2.5em; 19 | letter-spacing: 4px; 20 | color: #FFF; 21 | } 22 | 23 | .panel-subtitle { 24 | font-family: $serif-font; 25 | font-size: 1.2em; 26 | font-weight: lighter; 27 | letter-spacing: 3px; 28 | color: $gray; 29 | -webkit-font-smoothing: antialiased; 30 | } 31 | 32 | // ------------------------------ 33 | // COVER PANEL 34 | // ------------------------------ 35 | 36 | .panel-cover { 37 | display: block; 38 | position: fixed; 39 | z-index: 900; 40 | width: 100%; 41 | max-width: none; 42 | height: 100%; 43 | background: url(../images/background-cover.jpg) top left no-repeat $gray-darker; 44 | background-size: cover; 45 | } 46 | 47 | .panel-cover--collapsed { 48 | width: 30%; 49 | max-width: 700px; 50 | } 51 | 52 | .panel-cover--overlay { 53 | display: block; 54 | position: absolute; 55 | z-index: 0; 56 | top: 0; 57 | right: 0; 58 | bottom: 0; 59 | left: 0; 60 | @include linear-gradient(140deg, rgba(#444444,.6) 20%, rgba(#000000,.9)); 61 | } 62 | 63 | .panel-cover__logo { 64 | margin-bottom: .2em; 65 | } 66 | 67 | .panel-cover__description { 68 | margin: 0 30px; 69 | } 70 | 71 | .panel-cover__divider { 72 | width: 50%; 73 | margin: 20px auto; 74 | border-top: 1px solid rgba(255,255,255,.14); 75 | } 76 | 77 | .panel-cover__divider--secondary { 78 | width: 15%; 79 | } 80 | 81 | // ------------------------------ 82 | // MAIN PANEL 83 | // ------------------------------ 84 | 85 | .panel-main { 86 | display: table; 87 | width: 100%; 88 | height: 100%; 89 | } 90 | 91 | .panel-main__inner { 92 | display: table-cell; 93 | vertical-align: middle; 94 | position: relative; 95 | z-index: 800; 96 | padding: 0 60px; 97 | } 98 | 99 | .panel-main__content { 100 | max-width: 620px; 101 | margin: 0 auto; 102 | } 103 | 104 | .panel-main__content--fixed { 105 | width: 480px; 106 | transition: width 1s; 107 | -webkit-transition: width 1s; /* Safari */ 108 | } 109 | 110 | .panel-inverted { 111 | font-weight: 100; 112 | text-align: center; 113 | color: #FFF; 114 | text-shadow: 0 1px 1px rgba(000,000,000,.4); 115 | 116 | a { 117 | color: #FFF; 118 | } 119 | 120 | } 121 | 122 | // ------------------------------ 123 | // COVER NAVIGATION 124 | // ------------------------------ 125 | 126 | .cover-navigation { 127 | margin-top: 42px; 128 | } 129 | 130 | .cover-navigation--social { 131 | margin-left: 30px; 132 | } 133 | 134 | // ------------------------------ 135 | // ADDITIONAL COVER COLOURS 136 | // ------------------------------ 137 | 138 | .cover-blue { 139 | @include linear-gradient(140deg, rgba($blue,.6) 20%, rgba(darken($blue, 20%),.8)); 140 | } 141 | 142 | .cover-green { 143 | @include linear-gradient(140deg, rgba($green,.6) 20%, rgba(darken($green, 20%),.8)); 144 | } 145 | 146 | .cover-purple { 147 | @include linear-gradient(140deg, rgba($purple,.6) 20%, rgba(darken($purple, 20%),.8)); 148 | } 149 | 150 | .cover-red { 151 | @include linear-gradient(140deg, rgba(darken($red, 30%),.6) 20%, rgba(darken($red, 50%),.8)); 152 | } 153 | 154 | .cover-orange { 155 | @include linear-gradient(140deg, rgba(darken($orange, 30%),.6) 20%, rgba(darken($orange, 50%),.8)); 156 | } 157 | 158 | .cover-slate { 159 | @include linear-gradient(140deg, rgba($slate,.6) 20%, rgba(darken($slate, 20%),.8)); 160 | } 161 | 162 | .cover-disabled { 163 | background: none; 164 | } 165 | -------------------------------------------------------------------------------- /assets/scss/components/_post-list.scss: -------------------------------------------------------------------------------- 1 | // ------------------------------ 2 | // POST LIST 3 | // ------------------------------ 4 | 5 | .post-list { 6 | margin: 0; 7 | padding: 0; 8 | list-style-type: none; 9 | text-align: left; 10 | 11 | li { 12 | margin: 0 0 2.2em 0; 13 | 14 | &:last-child { 15 | 16 | hr { 17 | display: none; 18 | } 19 | 20 | } 21 | 22 | } 23 | 24 | } 25 | 26 | .post-list__post-title { 27 | margin-top: 0; 28 | margin-bottom: .2em; 29 | font-size: 1.5em; 30 | line-height: 1.3em; 31 | 32 | a { 33 | color: $gray-darkest; 34 | 35 | &:hover { 36 | color: $hover-color; 37 | } 38 | 39 | } 40 | 41 | } 42 | 43 | .post-list__meta { 44 | display: block; 45 | margin: .7em 0 0 0; 46 | font-size: .9em; 47 | color: darken($gray, 2%); 48 | } 49 | 50 | .post-list__meta--date { 51 | margin-right: .5em; 52 | color: darken($gray, 2%); 53 | } 54 | 55 | .post-list__meta--tags { 56 | margin-left: .5em; 57 | } 58 | 59 | .post-list__divider { 60 | width: 30%; 61 | margin: 2.2em 0 2.1em 0; 62 | border-top: 1px solid $gray-light; 63 | } -------------------------------------------------------------------------------- /assets/scss/components/_read-more.scss: -------------------------------------------------------------------------------- 1 | // ------------------------------ 2 | // READ MORE 3 | // ------------------------------ 4 | 5 | .read-more { 6 | margin-bottom: 1em; 7 | } 8 | 9 | .read-more-item { 10 | display: inline; 11 | width: 48%; 12 | margin-top: 20pt; 13 | margin-bottom: 20pt; 14 | } 15 | 16 | .read-more-item-dim { 17 | color: $hover-color; 18 | font-size: .8em; 19 | } 20 | 21 | .read-more-item.read-more-item-left { 22 | float: left; 23 | } 24 | 25 | .read-more-item.read-more-item-right { 26 | float: right; 27 | } 28 | -------------------------------------------------------------------------------- /assets/scss/global.scss: -------------------------------------------------------------------------------- 1 | // ------------------------------ 2 | // BASICS 3 | // ------------------------------ 4 | 5 | html, body { 6 | height: 100%; 7 | } 8 | 9 | html { 10 | height: 100%; 11 | max-height: 100%; 12 | } 13 | 14 | body { 15 | font-family: $sans-font; 16 | font-size: 1em; 17 | color: $gray-darker; 18 | -webkit-font-smoothing: antialiased; 19 | } 20 | 21 | ::selection { 22 | background: lighten($primary-color, 36%); 23 | } 24 | 25 | ::-moz-selection { 26 | background: lighten($primary-color, 36%); 27 | } 28 | 29 | // ------------------------------ 30 | // TYPOGRAPHY 31 | // ------------------------------ 32 | 33 | a { 34 | text-decoration: none; 35 | color: $link-color; 36 | 37 | &:hover { 38 | color: $hover-color; 39 | -o-transition:.5s; 40 | -ms-transition:.5s; 41 | -moz-transition:.5s; 42 | -webkit-transition:.5s; 43 | } 44 | 45 | } 46 | 47 | h1, 48 | h2, 49 | h3, 50 | h4, 51 | h5, 52 | h5 { 53 | margin-top: 1.0em; 54 | margin-bottom: .5em; 55 | font-family: $serif-font; 56 | font-weight: lighter; 57 | color: $gray-darkest; 58 | -webkit-font-smoothing: antialiased; 59 | } 60 | 61 | h1 { 62 | margin-top: 0; 63 | font-size: 2.5em; 64 | line-height: 1.2em; 65 | letter-spacing: .05em; 66 | } 67 | 68 | h2 { 69 | font-size: 2.0em; 70 | } 71 | 72 | h3 { 73 | font-size: 1.6em; 74 | } 75 | 76 | h4 { 77 | font-size: 1.2em; 78 | } 79 | 80 | h4 { 81 | font-size: 1.1em; 82 | } 83 | 84 | h5 { 85 | font-size: 1em; 86 | } 87 | 88 | p { 89 | margin-bottom: 1.3em; 90 | line-height: 1.7em; 91 | } 92 | 93 | strong { 94 | font-weight: bold; 95 | } 96 | 97 | em { 98 | font-style: italic; 99 | } 100 | 101 | blockquote { 102 | padding: 10px 20px; 103 | margin: 0 0 20px; 104 | font-family: $serif-font; 105 | font-weight: lighter; 106 | font-size: 1em; 107 | border-left: 3px solid $primary-color; 108 | 109 | p { 110 | 111 | &:last-child { 112 | margin-bottom: 0; 113 | } 114 | 115 | } 116 | 117 | } 118 | 119 | // ------------------------------ 120 | // BASIC STYLING 121 | // ------------------------------ 122 | 123 | ol, ul { 124 | margin: 0 0 1.3em 2.5em; 125 | 126 | li { 127 | margin: 0 0 .2em 0; 128 | line-height: 1.6em; 129 | } 130 | 131 | ol, ul { 132 | margin: .1em 0 .2em 2em; 133 | } 134 | 135 | } 136 | 137 | ol { 138 | list-style-type: decimal; 139 | } 140 | 141 | ul { 142 | list-style-type: disc; 143 | } 144 | 145 | code { 146 | padding: .1em .4em; 147 | background: lighten($secondary-color, 32%); 148 | border: 1px solid lighten($secondary-color, 25%); 149 | border-radius: $border-radius; 150 | font-family: Consolas, Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, monospace, serif; 151 | font-size: .9em; 152 | vertical-align: bottom; 153 | word-wrap: break-word; 154 | } 155 | 156 | pre { 157 | margin-bottom: 1.3em; 158 | padding: 1em 2.5%; 159 | background: lighten($secondary-color, 32%); 160 | border: 1px solid lighten($secondary-color, 25%); 161 | border-radius: $border-radius; 162 | font-family: Consolas, Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, monospace, serif; 163 | font-size: .9em; 164 | font-weight: normal; 165 | line-height: 1.3em; 166 | overflow:scroll; 167 | 168 | code { 169 | padding: 0; 170 | background: none; 171 | border: none; 172 | word-wrap: normal; 173 | } 174 | 175 | } 176 | 177 | .date, 178 | .time, 179 | .author, 180 | .tags { 181 | font-size: .8em; 182 | color: darken($gray, 2%); 183 | 184 | a { 185 | color: $gray-darker; 186 | 187 | &:hover { 188 | color: $hover-color; 189 | } 190 | 191 | } 192 | 193 | } 194 | 195 | .excerpt { 196 | margin: 0; 197 | font-size: .9em; 198 | color: $gray-dark; 199 | } 200 | 201 | .intro { 202 | font-family: $serif-font; 203 | font-size: 1.2em; 204 | font-weight: lighter; 205 | color: $gray-dark; 206 | } 207 | 208 | .block-heading { 209 | @include column(12); 210 | position: relative; 211 | bottom: -15px; 212 | font-size: .8em; 213 | font-weight: bold; 214 | text-align: center; 215 | text-transform: uppercase; 216 | letter-spacing: 1px; 217 | } 218 | 219 | .label { 220 | position: relative; 221 | display: inline-block; 222 | padding: 8px 18px 9px 18px; 223 | background: $primary-color; 224 | border-radius: $border-radius; 225 | text-align: center; 226 | color: #FFF; 227 | } 228 | 229 | // ------------------------------ 230 | // MAIN LAYOUT 231 | // ------------------------------ 232 | 233 | .container { 234 | position: relative; 235 | z-index: 500; 236 | width: $total-width - $gutter-width; 237 | margin: 0 auto; 238 | } 239 | 240 | .content-wrapper { 241 | z-index: 800; 242 | width: 70%; 243 | margin-left: 30%; 244 | } 245 | 246 | .content-wrapper__inner { 247 | margin: 0 10%; 248 | padding: 50px 0; 249 | } 250 | 251 | .footer { 252 | display: block; 253 | padding: 2em 0 0 0; 254 | border-top: 2px solid $gray-light; 255 | font-size: .7em; 256 | color: lighten($gray-dark, 10%); 257 | } 258 | 259 | .footer__copyright { 260 | display: block; 261 | margin-bottom: .7em; 262 | 263 | a { 264 | color: lighten($gray-dark, 5%); 265 | text-decoration: underline; 266 | 267 | &:hover { 268 | color: $hover-color; 269 | } 270 | 271 | } 272 | 273 | } 274 | 275 | // ------------------------------ 276 | // AVATAR & LOGO 277 | // ------------------------------ 278 | 279 | .avatar, 280 | .logo { 281 | border-radius: 50%; 282 | border: 3px solid #FFF; 283 | box-shadow:0 0 1px 1px rgba(000,000,000,.3); 284 | } 285 | 286 | // ------------------------------ 287 | // DIVIDERS 288 | // ------------------------------ 289 | 290 | hr { 291 | border: none; 292 | } 293 | 294 | .section-title__divider { 295 | width: 30%; 296 | margin: 2.2em 0 2.1em 0; 297 | border-top: 1px solid $gray-light; 298 | } 299 | 300 | // ------------------------------ 301 | // MISC STYLES / HELPERS 302 | // ------------------------------ 303 | 304 | .hidden { 305 | display: none !important; 306 | } 307 | -------------------------------------------------------------------------------- /assets/scss/grid.scss: -------------------------------------------------------------------------------- 1 | ///////////////// 2 | // Semantic.gs // for SCSS: http://sass-lang.com/ 3 | ///////////////// 4 | 5 | // Defaults which you can freely override 6 | $column-width: 60px; 7 | $gutter-width: 20px; 8 | $columns: 12; 9 | 10 | // Utility function — you should never need to modify this 11 | @function gridsystem-width($columns:$columns) { 12 | @return ($column-width * $columns) + ($gutter-width * $columns); 13 | } 14 | 15 | // Set $total-width to 100% for a fluid layout 16 | $total-width: gridsystem-width($columns); 17 | 18 | // 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 19 | // $min-width: 999999; 20 | // $correction: 0.5 / $min-width * 100; 21 | 22 | // The micro clearfix http://nicolasgallagher.com/micro-clearfix-hack/ 23 | @mixin clearfix() { 24 | *zoom:1; 25 | 26 | &:before, 27 | &:after { 28 | content:""; 29 | display:table; 30 | } 31 | &:after { 32 | clear:both; 33 | } 34 | } 35 | 36 | 37 | ////////// 38 | // GRID // 39 | ////////// 40 | 41 | body { 42 | width: 100%; 43 | @include clearfix(); 44 | } 45 | 46 | @mixin row($columns:$columns) { 47 | display: block; 48 | width: $total-width*(($gutter-width + gridsystem-width($columns))/gridsystem-width($columns)); 49 | margin: 0 $total-width*((($gutter-width*.5)/gridsystem-width($columns))*-1); 50 | // *width: $total-width*(($gutter-width + gridsystem-width($columns))/gridsystem-width($columns))-$correction; 51 | // *margin: 0 $total-width*((($gutter-width*.5)/gridsystem-width($columns))*-1)-$correction; 52 | @include clearfix(); 53 | } 54 | @mixin column($x,$columns:$columns) { 55 | display: inline; 56 | float: left; 57 | width: $total-width*(((($gutter-width+$column-width)*$x)-$gutter-width) / gridsystem-width($columns)); 58 | margin: 0 $total-width*(($gutter-width*.5)/gridsystem-width($columns)); 59 | // *width: $total-width*(((($gutter-width+$column-width)*$x)-$gutter-width) / gridsystem-width($columns))-$correction; 60 | // *margin: 0 $total-width*(($gutter-width*.5)/gridsystem-width($columns))-$correction; 61 | } 62 | @mixin push($offset:1) { 63 | margin-left: $total-width*((($gutter-width+$column-width)*$offset) / gridsystem-width($columns)) + $total-width*(($gutter-width*.5)/gridsystem-width($columns)); 64 | } 65 | @mixin pull($offset:1) { 66 | margin-right: $total-width*((($gutter-width+$column-width)*$offset) / gridsystem-width($columns)) + $total-width*(($gutter-width*.5)/gridsystem-width($columns)); 67 | } -------------------------------------------------------------------------------- /assets/scss/media-queries.scss: -------------------------------------------------------------------------------- 1 | // ------------------------------ 2 | // MEDIA QUERIES 3 | // ------------------------------ 4 | 5 | @media all and (min-width: 1300px) { 6 | 7 | } 8 | 9 | // ------------------------------ 10 | // < 1100px 11 | // ------------------------------ 12 | 13 | @media all and (max-width: 1100px) { 14 | 15 | .panel-cover__logo { 16 | width: 70px; 17 | } 18 | 19 | .panel-title { 20 | font-size: 2em; 21 | } 22 | 23 | .panel-subtitle { 24 | font-size: 1em; 25 | } 26 | 27 | .panel-cover__description { 28 | margin: 0 10px; 29 | font-size: .9em; 30 | } 31 | 32 | .navigation--social { 33 | margin-top: 5px; 34 | margin-left: 0; 35 | } 36 | 37 | } 38 | 39 | // ------------------------------ 40 | // < 960px 41 | // ------------------------------ 42 | 43 | @media all and (max-width: 960px) { 44 | 45 | .btn-mobile-menu { 46 | display: block; 47 | } 48 | 49 | .panel-main { 50 | display: table; 51 | position: relative; 52 | } 53 | 54 | .panel-cover--collapsed { 55 | width: 100%; 56 | max-width: none; 57 | } 58 | 59 | .panel-main__inner { 60 | display: table-cell; 61 | padding: 60px 10%; 62 | } 63 | 64 | .panel-cover__description { 65 | display: block; 66 | max-width: 600px; 67 | margin: 0 auto; 68 | } 69 | 70 | .panel-cover__divider--secondary { 71 | display: none; 72 | } 73 | 74 | .panel-cover { 75 | width: 100%; 76 | height: 100%; 77 | background-position: center center; 78 | 79 | &.panel-cover--collapsed { 80 | display: block; 81 | position: relative; 82 | height: auto; 83 | padding: 0; 84 | background-position: center center; 85 | 86 | .panel-main__inner { 87 | display: block; 88 | padding: 70px 0 30px 0; 89 | } 90 | 91 | .panel-cover__logo { 92 | width: 60px; 93 | border-width: 2px; 94 | } 95 | 96 | .panel-cover__description { 97 | display: none; 98 | } 99 | 100 | .panel-cover__divider { 101 | display: none; 102 | margin: 1em auto; 103 | } 104 | 105 | } 106 | 107 | } 108 | 109 | .navigation-wrapper { 110 | display: none; 111 | position: fixed; 112 | top: 0; 113 | right: 0; 114 | left: 0; 115 | width: 100%; 116 | padding: 20px 0; 117 | background: rgba($gray-darkest,.98); 118 | border-bottom: 1px solid rgba(255,255,255,.15); 119 | 120 | &.visible { 121 | display: block; 122 | } 123 | } 124 | 125 | .cover-navigation { 126 | display: block; 127 | position: relative; 128 | float: left; 129 | clear: left; 130 | width: 100%; 131 | 132 | .navigation { 133 | display: block; 134 | width: 100%; 135 | 136 | li { 137 | width: 80%; 138 | margin-bottom: .4em; 139 | } 140 | 141 | } 142 | 143 | &.navigation--social { 144 | padding-top: 5px; 145 | 146 | .navigation { 147 | 148 | li { 149 | display: inline-block; 150 | width: 25.8%; 151 | } 152 | 153 | } 154 | 155 | } 156 | 157 | } 158 | 159 | .content-wrapper { 160 | width: 80%; 161 | max-width: none; 162 | margin: 0 auto; 163 | } 164 | 165 | .content-wrapper__inner { 166 | margin-right: 0; 167 | margin-left: 0; 168 | } 169 | 170 | .navigation__item { 171 | width: 100%; 172 | margin: 0 0 .4em 0; 173 | } 174 | 175 | } 176 | 177 | // ------------------------------ 178 | // < 340px 179 | // ------------------------------ 180 | 181 | @media all and (max-width: 340px) { 182 | 183 | .panel-main__inner { 184 | padding: 0 5%; 185 | } 186 | 187 | .panel-title { 188 | margin-bottom: .1em; 189 | font-size: 1.5em; 190 | } 191 | 192 | .panel-subtitle { 193 | font-size: .9em; 194 | } 195 | 196 | .btn { 197 | display: block; 198 | margin-bottom: .4em; 199 | } 200 | 201 | } 202 | -------------------------------------------------------------------------------- /assets/scss/reset.scss: -------------------------------------------------------------------------------- 1 | /* http://meyerweb.com/eric/tools/css/reset/ 2 | v2.0 | 20110126 3 | License: none (public domain) 4 | */ 5 | 6 | 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 { 7 | margin: 0; 8 | padding: 0; 9 | border: 0; 10 | font-size: 100%; 11 | font: inherit; 12 | vertical-align: baseline; } 13 | 14 | /* HTML5 display-role reset for older browsers */ 15 | 16 | article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section { 17 | display: block; } 18 | 19 | body { 20 | line-height: 1; } 21 | 22 | ol, ul { 23 | list-style: none; } 24 | 25 | blockquote, q { 26 | quotes: none; } 27 | 28 | blockquote { 29 | &:before, &:after { 30 | content: ''; 31 | content: none; } } 32 | 33 | q { 34 | &:before, &:after { 35 | content: ''; 36 | content: none; } } 37 | 38 | table { 39 | border-collapse: collapse; 40 | border-spacing: 0; } -------------------------------------------------------------------------------- /assets/scss/sections/_post.scss: -------------------------------------------------------------------------------- 1 | // ------------------------------ 2 | // SINGLE POST LAYOUT 3 | // ------------------------------ 4 | 5 | .post-comments { 6 | border-top: 1px solid $gray-light; 7 | padding: 60px 0; 8 | } 9 | 10 | // ------------------------------ 11 | // SINGLE POST METAß 12 | // ------------------------------ 13 | 14 | .post-meta { 15 | margin: 0 0 .4em 0; 16 | color: darken($gray, 2%); 17 | } 18 | 19 | .post-meta__date { 20 | margin-right: .5em; 21 | } 22 | 23 | .post-meta__tags { 24 | margin-left: .4em; 25 | } 26 | 27 | .post-meta__author { 28 | margin-left: 1.5em; 29 | } 30 | 31 | .post-meta__avatar { 32 | display: inline-block; 33 | width: 22px; 34 | height: 22px; 35 | margin: 0 .3em -.4em 0; 36 | border: none; 37 | box-shadow:none; 38 | } 39 | 40 | // ------------------------------ 41 | // SINGLE POST STYLES 42 | // ------------------------------ 43 | 44 | .post { 45 | 46 | img { 47 | max-width: 100%; 48 | margin: 0 auto; 49 | border-radius: $border-radius; 50 | text-align: center; 51 | display: block; 52 | } 53 | 54 | pre { 55 | width: 95%; 56 | overflow: auto; 57 | } 58 | 59 | hr { 60 | display: block; 61 | width: 30%; 62 | margin: 2em 0; 63 | border-top: 1px solid $gray-light; 64 | } 65 | 66 | } 67 | -------------------------------------------------------------------------------- /assets/scss/variables.scss: -------------------------------------------------------------------------------- 1 | 2 | $gray-lightest: #F8F8F8; 3 | $gray-lighter: #EEEEEE; 4 | $gray-light: #DDDDDD; 5 | $gray: #CCCCCC; 6 | $gray-dark: #999999; 7 | $gray-darker: #666666; 8 | $gray-darkest: #333333; 9 | 10 | $green: #156F78; 11 | $purple: #493252; 12 | $red: #E25440; 13 | $orange: #FB9C50; 14 | $slate: #3D4260; 15 | $blue: #2568A3; 16 | $catred: #BF1827; 17 | 18 | $primary-color: $catred; 19 | $secondary-color: #5BA4E5; 20 | 21 | $link-color: $primary-color; 22 | $hover-color: darken($link-color, 15%); 23 | 24 | $sans-font: "ff-tisa-web-pro-1","ff-tisa-web-pro-2","Lucida Grande","Hiragino Sans GB","Hiragino Sans GB W3","Microsoft YaHei","WenQuanYi Micro Hei",sans-serif; 25 | $serif-font: "ff-tisa-web-pro-1","ff-tisa-web-pro-2","Lucida Grande","Hiragino Sans GB","Hiragino Sans GB W3","Microsoft YaHei","WenQuanYi Micro Hei",sans-serif; 26 | 27 | $border-radius: 3px; -------------------------------------------------------------------------------- /assets/scss/vno.scss: -------------------------------------------------------------------------------- 1 | @import 'bourbon/bourbon'; 2 | 3 | // ------------------------------ 4 | // THE BASICS 5 | // ------------------------------ 6 | 7 | @import 'reset.scss'; 8 | @import 'grid.scss'; 9 | @import 'variables.scss'; 10 | 11 | // ------------------------------ 12 | // GLOBAL STYLES 13 | // ------------------------------ 14 | 15 | @import 'global.scss'; 16 | 17 | // ------------------------------ 18 | // SECTIONS 19 | // ------------------------------ 20 | 21 | @import 'sections/post.scss'; 22 | 23 | // ------------------------------ 24 | // COMPONENTS 25 | // ------------------------------ 26 | 27 | @import 'components/panels.scss'; 28 | @import 'components/buttons.scss'; 29 | @import 'components/navigation.scss'; 30 | @import 'components/pagination.scss'; 31 | @import 'components/icons.scss'; 32 | @import 'components/post-list.scss'; 33 | @import 'components/forms.scss'; 34 | @import 'components/read-more.scss'; 35 | 36 | // ------------------------------ 37 | // MEDIA QUERIES 38 | // ------------------------------ 39 | 40 | @import 'media-queries.scss'; 41 | 42 | // ------------------------------ 43 | // EXTRAS 44 | // ------------------------------ 45 | 46 | @import '../css/animate.css'; 47 | -------------------------------------------------------------------------------- /default.hbs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | {{! Meta }} 8 | {{meta_title}} 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | {{! Styles and Scripts }} 31 | 32 | 33 | 34 | 35 | {{! Ghost Head }} 36 | {{ghost_head}} 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | {{> side-panel}} 47 | 48 |
49 |
50 | {{{body}}} 51 | 52 | {{> footer}} 53 |
54 |
55 | 56 | {{! Ghost Footer }} 57 | {{ghost_foot}} 58 | 59 | 60 | 65 | 66 | {{! The main JavaScript file }} 67 | 68 | 69 | {{! Highlight.js }} 70 | 71 | 72 | 73 | 74 | -------------------------------------------------------------------------------- /error.hbs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onevcat/vno/d6785d5bb74a75f2d24692f2c23f3371a4d9aa12/error.hbs -------------------------------------------------------------------------------- /index.hbs: -------------------------------------------------------------------------------- 1 | {{!< default}} 2 | 3 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Vno", 3 | "version": "0.1.0" 4 | } 5 | -------------------------------------------------------------------------------- /page.hbs: -------------------------------------------------------------------------------- 1 | {{!< default}} 2 | 3 | {{#post}} 4 | 5 |
6 | 7 |
8 |

{{{title}}}

9 |
10 | 11 |
12 | {{content}} 13 |
14 | 15 |
16 | 17 | {{/post}} -------------------------------------------------------------------------------- /partials/comments.hbs: -------------------------------------------------------------------------------- 1 |
2 |
3 | 14 | 15 | comments powered by Disqus 16 |
-------------------------------------------------------------------------------- /partials/footer.hbs: -------------------------------------------------------------------------------- 1 |
2 | © {{date format="YYYY"}} All rights reserved. 3 | Vno theme by @onevcat 4 |
-------------------------------------------------------------------------------- /partials/list-posts.hbs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onevcat/vno/d6785d5bb74a75f2d24692f2c23f3371a4d9aa12/partials/list-posts.hbs -------------------------------------------------------------------------------- /partials/pagination.hbs: -------------------------------------------------------------------------------- 1 |
2 | 3 | -------------------------------------------------------------------------------- /partials/read-more.hbs: -------------------------------------------------------------------------------- 1 |
2 | {{#next_post}} 3 |
4 | 最近的文章 5 |

{{{title}}}

6 |

{{excerpt characters="100"}}…

7 |
{{tags prefix="于 "}}继续阅读
8 |
9 | {{/next_post}} 10 | 11 | {{#prev_post}} 12 |
13 | 更早的文章 14 |

{{{title}}}

15 |

{{excerpt characters="100"}}…

16 |
{{tags prefix="于 "}}继续阅读
17 |
18 | {{/prev_post}} 19 |
20 | -------------------------------------------------------------------------------- /partials/side-panel.hbs: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 |
5 |
6 | 7 | {{#if @blog.logo}} 8 | 9 | {{/if}} 10 |

{{@blog.title}}

11 | 上善若水,人淡如菊 12 |
13 |

{{@blog.description}}

14 |
15 | 16 | 31 | 32 |
33 | 34 |
35 | 36 |
37 |
38 |
-------------------------------------------------------------------------------- /partials/social.hbs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /post.hbs: -------------------------------------------------------------------------------- 1 | {{!< default}} 2 | 3 | {{#post}} 4 | 5 |
6 | 7 |
8 | 12 |

{{{title}}}

13 |
14 | 15 |
16 | {{content}} 17 |
18 | 19 |
20 | 21 | {{> read-more}} 22 | {{!-- {{> comments}} --}} 23 | 24 | {{/post}} 25 | -------------------------------------------------------------------------------- /tag.hbs: -------------------------------------------------------------------------------- 1 | {{!< default}} 2 | 3 |

Tag: {{tag.name}}

4 | 5 |
6 | 7 |
8 | 9 |
    10 | {{#foreach posts}} 11 |
  1. 12 |

    {{{title}}}

    13 |

    {{excerpt characters="250"}}…

    14 |
    15 | • 16 | {{#foreach tags}}{{name}}{{#if @last}}{{else}}, {{/if}}{{/foreach}}继续阅读 17 |
    18 |
    19 |
  2. 20 | {{/foreach}} 21 |
22 | 23 | {{pagination}} 24 | 25 |
26 | --------------------------------------------------------------------------------