+
+
+
+### 外部调用
+```js
+1. import React, { Component } from 'react';
+2. import {
+3. AppRegistry,
+4. StyleSheet,
+5. Text,
+6. View
+7. } from 'react-native';
+8. import DiscolorationButton from './DiscolorationButton.js'
+9. export default class test extends Component {
+1. test(){
+2. alert('我是测试函数');
+3. }
+4. render() {
+5. return (
+6.
+6. );
+7. }
+8. }
+
+9. const styles = StyleSheet.create({
+1. container: {
+2. flex: 1,
+3. justifyContent: 'center',
+4. alignItems: 'center',
+5. backgroundColor: '#F5FCFF',
+6. },
+7. });
+8. AppRegistry.registerComponent('test', () => test);
+```
+
+
diff --git "a/Blog/source/_posts/ReactNative-ListView\350\275\273\346\235\276\344\270\212\346\211\213.md" "b/Blog/source/_posts/ReactNative-ListView\350\275\273\346\235\276\344\270\212\346\211\213.md"
new file mode 100644
index 0000000..fe746ac
--- /dev/null
+++ "b/Blog/source/_posts/ReactNative-ListView\350\275\273\346\235\276\344\270\212\346\211\213.md"
@@ -0,0 +1,193 @@
+---
+title: ReactNative ListView轻松上手
+---
+感觉自己需要提一下了,最近简单的写了个demo练练手,主要记录下自己的收获。
+
+在移动开发中我们用得最多和最重要的一个控件就是滚动视图,在iOS开发中我们用的这个控件叫做TableView,在Android开发中这个控件叫做ListView,然后就是现在的跨平台开发。最近最火的跨平台开发框架当属Facebook开源的React-Native了。在React-Native中也有一个实现滚动视图的组件也叫做ListView
+
+最近在工作中接触到了这个开源框架,在项目中用到了RN(React-Natove简写)的ListView,然后自己写了个简单的demo。
+
+RN中ListView的属性就不一一讲解了,在ReactNative中文中已经讲得很详细了。
+不管是RN中的ListView还是iOS中的TableView都得有数据源的即DataSource,因为RN跨平台框架底层是调用原生的控件。
+
+
+
+
+那么在RN中是这样设置数据源的
+
+创建一个ListView.DataSource类型的对象this.ds
+
+```js
+this.ds = new ListView.DataSource({rowHasChanged:(r1,r2)=>r1!==r2})
+```
+
+创建一个数组this.datasource并赋值,这个数组中装着的是5个对象。
+
+```js
+this.dataSource = [ {name:'柴小圣',id:1,picCategory:'写真图',picUri:'http://res.mamiw.com/uploads/allimg/160408/0450044201-0.jpg',picDescribe:'极品美女柴小圣美艳写真图',messageNumber:99,label:['搞笑六点半','网剧'],firstLabelImage:'https://tse4-mm.cn.bing.net/th?id=OIP.ngQ_96uWK-a50WUtnjGagAEsEP&w=221&h=200&c=7&qlt=90&o=4&pid=1.7'},
+ {name:'柴小圣',id:2,picCategory:'写真图',picUri:'http://res.mamiw.com/uploads/allimg/160408/0450045C3-1.jpg',picDescribe:'O(∩_∩)O哈哈~美艳写真图',messageNumber:43,label:['欢乐者联盟','网剧','哈哈'],firstLabelImage:'https://tse4-mm.cn.bing.net/th?id=OIP.wsbd4ipN95lWxm-6g5aINQEsEs&w=200&h=200&c=7&qlt=90&o=4&pid=1.7'},
+ {name:'柴小圣',id:3,picCategory:'写真图',picUri:'http://res.mamiw.com/uploads/allimg/160408/0450042929-2.jpg',picDescribe:'(~ ̄▽ ̄)~漂亮妹纸',messageNumber:55,label:['搞笑'],firstLabelImage:'https://tse4-mm.cn.bing.net/th?q=杰尼龟&w=120&h=120&c=1&rs=1&qlt=90&pid=InlineBlock&mkt=zh-CN&adlt=strict&t=1&mw=247'},
+ {name:'柴小圣',id:4,picCategory:'写真图',picUri:'http://res.mamiw.com/uploads/allimg/160408/0450041D6-3.jpg',picDescribe:'看看✧(≖ ◡ ≖✿)嘿嘿',messageNumber:33,label:['奇葩使者','雷剧','Ls'],firstLabelImage:'https://tse3-mm.cn.bing.net/th?q=可达鸭&w=120&h=120&c=1&rs=1&qlt=90&pid=InlineBlock&mkt=zh-CN&adlt=strict&t=1&mw=247'},
+ {name:'柴小圣',id:5,picCategory:'写真图',picUri:'http://res.mamiw.com/uploads/allimg/160408/045004O27-4.jpg',picDescribe:'极品美女柴小圣美艳写真图',messageNumber:99,label:['搞笑六点半','牛'],firstLabelImage:'https://tse2-mm.cn.bing.net/th?q=加菲猫&w=120&h=120&c=1&rs=1&qlt=90&pid=InlineBlock&mkt=zh-CN&adlt=strict&t=1&mw=247'},
+ ]
+```
+
+使用this.ds.cloneWithRows方法为ListViewDataSource复制填充数据this.dataSource
+
+```js
+this.state = {
+ dataSource:this.ds.cloneWithRows(this.dataSource)
+ }
+```
+使用ListView组件
+
+```js
+//设置数据源和每行的实际渲染
+
+```
+
+ListView组件的renderRow属性
+
+> renderRow function
+
+> (rowData, sectionID, rowID, highlightRow) => renderable
+
+> 从数据源(Data source)中接受一条数据,以及它和它所在section的ID。返回一个可渲染的组件来为这行数据进行渲染。默认情况下参数中的数据就是放进数据源中的数据本身,不过也可以提供一些转换器。
+
+> 如果某一行正在被高亮(通过调用highlightRow函数),ListView会得到相应的通知。当一行被高亮时,其两侧的分割线会被隐藏。行的高亮状态可以通过调用highlightRow(null)来重置。
+
+这里的renderRow使用起来有点类似iOS开发中的自定义Cell
+
+具体使用
+
+```js
+ _renderRow(rowData: string, sectionID: number, rowID: number){
+ return(
+
+
+
+ {alert('text='+obj.labelText+'selectedIndex='+obj.selectedIndex)}}
+ id = {rowData.id}
+ titleArray = {rowData.label}/>
+
+
+
+ )
+ }
+```
+ListView组件使用完整代码
+
+```js
+import React, { Component } from 'react';
+import {
+ AppRegistry,
+ StyleSheet,
+ Dimensions,
+ TouchableOpacity,
+ ListView,
+ Image,
+ Text,
+ View
+} from 'react-native';
+/**
+ *引入自定义组件
+ */
+import ImageTextMixedConfigurationCell from './ImageTextMixedConfigurationCell.js';
+import TEMcollectionButton from './CollectionButton.js';
+import BottomRightView from './BottomRightView.js';
+import TEMlabelButton from './LabelButton.js';
+/**
+ *关闭烦人的警告框(关闭有好有坏自行斟酌)
+ */
+console.disableYellowBox = true;
+/**
+ *引入系统监听机制
+ */
+import RCTDeviceEventEmitter from 'RCTDeviceEventEmitter';
+
+export const WIDTH = Dimensions.get('window').width;
+export const HEIGHT = Dimensions.get('window').height;
+
+export default class ListViewDemo extends Component {
+ constructor(props){
+ super(props)
+ this.ds = new ListView.DataSource({rowHasChanged:(r1,r2)=>r1!==r2})
+ this.dataSource = [ {name:'柴小圣',id:1,picCategory:'写真图',picUri:'http://res.mamiw.com/uploads/allimg/160408/0450044201-0.jpg',picDescribe:'极品美女柴小圣美艳写真图',messageNumber:99,label:['搞笑六点半','网剧'],firstLabelImage:'https://tse4-mm.cn.bing.net/th?id=OIP.ngQ_96uWK-a50WUtnjGagAEsEP&w=221&h=200&c=7&qlt=90&o=4&pid=1.7'},
+ {name:'柴小圣',id:2,picCategory:'写真图',picUri:'http://res.mamiw.com/uploads/allimg/160408/0450045C3-1.jpg',picDescribe:'O(∩_∩)O哈哈~美艳写真图',messageNumber:43,label:['欢乐者联盟','网剧','哈哈'],firstLabelImage:'https://tse4-mm.cn.bing.net/th?id=OIP.wsbd4ipN95lWxm-6g5aINQEsEs&w=200&h=200&c=7&qlt=90&o=4&pid=1.7'},
+ {name:'柴小圣',id:3,picCategory:'写真图',picUri:'http://res.mamiw.com/uploads/allimg/160408/0450042929-2.jpg',picDescribe:'(~ ̄▽ ̄)~漂亮妹纸',messageNumber:55,label:['搞笑'],firstLabelImage:'https://tse4-mm.cn.bing.net/th?q=杰尼龟&w=120&h=120&c=1&rs=1&qlt=90&pid=InlineBlock&mkt=zh-CN&adlt=strict&t=1&mw=247'},
+ {name:'柴小圣',id:4,picCategory:'写真图',picUri:'http://res.mamiw.com/uploads/allimg/160408/0450041D6-3.jpg',picDescribe:'看看✧(≖ ◡ ≖✿)嘿嘿',messageNumber:33,label:['奇葩使者','雷剧','Ls'],firstLabelImage:'https://tse3-mm.cn.bing.net/th?q=可达鸭&w=120&h=120&c=1&rs=1&qlt=90&pid=InlineBlock&mkt=zh-CN&adlt=strict&t=1&mw=247'},
+ {name:'柴小圣',id:5,picCategory:'写真图',picUri:'http://res.mamiw.com/uploads/allimg/160408/045004O27-4.jpg',picDescribe:'极品美女柴小圣美艳写真图',messageNumber:99,label:['搞笑六点半','牛'],firstLabelImage:'https://tse2-mm.cn.bing.net/th?q=加菲猫&w=120&h=120&c=1&rs=1&qlt=90&pid=InlineBlock&mkt=zh-CN&adlt=strict&t=1&mw=247'},
+ ]
+ this.state = {
+ dataSource:this.ds.cloneWithRows(this.dataSource)
+ }
+ }
+ componentDidMount(){
+ this.listenerA=RCTDeviceEventEmitter.addListener('deletCellEvent',(rowID) => {
+ this.deletCell(rowID);
+ });
+ }
+ componentWillUnmount(){
+ this.listenerA.remove();
+ }
+ deletCell(rowID){
+ this.dataSource.splice(rowID,1);
+ this.setState({
+ dataSource : this.ds.cloneWithRows(this.dataSource)
+ })
+ }
+ _renderRow(rowData: string, sectionID: number, rowID: number){
+ return(
+
+
+
+ {alert('text='+obj.labelText+'selectedIndex='+obj.selectedIndex)}}
+ id = {rowData.id}
+ titleArray = {rowData.label}/>
+
+
+
+ )
+ }
+ render() {
+ return (
+
+
+
+
+ );
+ }
+}
+
+const styles = StyleSheet.create({
+ container: {
+ flex: 1,
+ backgroundColor: '#F5FCFF',
+ },
+ topBar: {
+ width: WIDTH,
+ height: 20,
+ },
+ bottomStyle: {
+ flexDirection: 'row',
+ alignItems: 'center',
+ justifyContent: 'space-between',
+ width: WIDTH,
+ backgroundColor: '#FFF',
+ height: 40
+ },
+});
+
+AppRegistry.registerComponent('ListViewDemo', () => ListViewDemo);
+
+```
+
+完整demo
+https://github.com/jungleiOS/RN_ListView.git
+如果大家觉得喜欢请在GitHub上赏作者一个Star吧
+
+
diff --git "a/Blog/source/_posts/TextField-\344\270\200\350\241\214\344\273\243\347\240\201\346\220\236\345\256\232\350\276\223\345\205\245\351\231\220\345\210\266.md" "b/Blog/source/_posts/TextField-\344\270\200\350\241\214\344\273\243\347\240\201\346\220\236\345\256\232\350\276\223\345\205\245\351\231\220\345\210\266.md"
new file mode 100644
index 0000000..524d0ab
--- /dev/null
+++ "b/Blog/source/_posts/TextField-\344\270\200\350\241\214\344\273\243\347\240\201\346\220\236\345\256\232\350\276\223\345\205\245\351\231\220\345\210\266.md"
@@ -0,0 +1,85 @@
+---
+title: 一行代码搞定TextField输入限制
+---
+
+网上有很多介绍输入限制的文章
+原理请参看[这篇文章](http://www.jianshu.com/p/2d1c06f2dfa4),我只是做了一个简单的封装而已
+
+这里可以贴出全部代码
+
+```
+#import
+
+@interface UITextField (TMRInputLimit)
+- (void)inputLimitWithMaxLength:(NSInteger)maxLength;
+@end
+```
+
+
+```
+#import "UITextField+TMRInputLimit.h"
+#import
+@interface UITextField ()
+@property (assign, nonatomic) NSNumber *maxLength;
+@end
+@implementation UITextField (TMRInputLimit)
+
+- (void)setMaxLength:(NSNumber *)maxLength
+{
+ objc_setAssociatedObject(self, @selector(maxLength), maxLength, OBJC_ASSOCIATION_ASSIGN);
+}
+
+- (NSNumber *)maxLength
+{
+ return objc_getAssociatedObject(self, @selector(maxLength));
+
+}
+
+- (void)inputLimitWithMaxLength:(NSInteger)maxLength
+{
+ self.maxLength = [NSNumber numberWithInteger:maxLength];
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textFieldEditChanged:) name:@"UITextFieldTextDidChangeNotification" object:self];
+}
+
+- (void)textFieldEditChanged:(NSNotification *)obj
+{
+ NSInteger maxLength = [self.maxLength integerValue];
+ UITextField *field = (UITextField *)obj.object;
+ NSString *toBeString = field.text;
+ UITextRange *selectedRange = [field markedTextRange];
+ UITextPosition *position = [field positionFromPosition:selectedRange.start offset:0];
+ if (!position || !selectedRange)
+ {
+ if (toBeString.length > maxLength)
+ {
+ NSRange rangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:maxLength];
+ if (rangeIndex.length == 1)
+ {
+ field.text = [toBeString substringToIndex:maxLength];
+ }
+ else
+ {
+ NSRange rangeRange = [toBeString rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, maxLength)];
+ field.text = [toBeString substringWithRange:rangeRange];
+ }
+ }
+ }
+
+}
+
+- (void)dealloc
+{
+ [[NSNotificationCenter defaultCenter] removeObserver:self name:@"UITextFieldTextDidChangeNotification" object:self];
+}
+
+@end
+
+```
+
+使用时import这个分类
+
+```
+[_textField inputLimitWithMaxLength:6];
+```
+
+
diff --git a/Blog/themes/landscape/.gitignore b/Blog/themes/landscape/.gitignore
new file mode 100644
index 0000000..6e3a08a
--- /dev/null
+++ b/Blog/themes/landscape/.gitignore
@@ -0,0 +1,3 @@
+.DS_Store
+node_modules
+tmp
\ No newline at end of file
diff --git a/Blog/themes/landscape/Gruntfile.js b/Blog/themes/landscape/Gruntfile.js
new file mode 100644
index 0000000..59fd5df
--- /dev/null
+++ b/Blog/themes/landscape/Gruntfile.js
@@ -0,0 +1,46 @@
+module.exports = function(grunt){
+ grunt.initConfig({
+ gitclone: {
+ fontawesome: {
+ options: {
+ repository: 'https://github.com/FortAwesome/Font-Awesome.git',
+ directory: 'tmp/fontawesome'
+ },
+ },
+ fancybox: {
+ options: {
+ repository: 'https://github.com/fancyapps/fancyBox.git',
+ directory: 'tmp/fancybox'
+ }
+ }
+ },
+ copy: {
+ fontawesome: {
+ expand: true,
+ cwd: 'tmp/fontawesome/fonts/',
+ src: ['**'],
+ dest: 'source/css/fonts/'
+ },
+ fancybox: {
+ expand: true,
+ cwd: 'tmp/fancybox/source/',
+ src: ['**'],
+ dest: 'source/fancybox/'
+ }
+ },
+ _clean: {
+ tmp: ['tmp'],
+ fontawesome: ['source/css/fonts'],
+ fancybox: ['source/fancybox']
+ }
+ });
+
+ require('load-grunt-tasks')(grunt);
+
+ grunt.renameTask('clean', '_clean');
+
+ grunt.registerTask('fontawesome', ['gitclone:fontawesome', 'copy:fontawesome', '_clean:tmp']);
+ grunt.registerTask('fancybox', ['gitclone:fancybox', 'copy:fancybox', '_clean:tmp']);
+ grunt.registerTask('default', ['gitclone', 'copy', '_clean:tmp']);
+ grunt.registerTask('clean', ['_clean']);
+};
\ No newline at end of file
diff --git a/Blog/themes/landscape/LICENSE b/Blog/themes/landscape/LICENSE
new file mode 100644
index 0000000..9ce4d32
--- /dev/null
+++ b/Blog/themes/landscape/LICENSE
@@ -0,0 +1,7 @@
+Copyright (c) 2013 Tommy Chen
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file
diff --git a/Blog/themes/landscape/README.md b/Blog/themes/landscape/README.md
new file mode 100644
index 0000000..90ecccd
--- /dev/null
+++ b/Blog/themes/landscape/README.md
@@ -0,0 +1,112 @@
+# Landscape
+
+A brand new default theme for [Hexo].
+
+- [Preview](http://hexo.io/hexo-theme-landscape/)
+
+## Installation
+
+### Install
+
+``` bash
+$ git clone https://github.com/hexojs/hexo-theme-landscape.git themes/landscape
+```
+
+**Landscape requires Hexo 2.4 and above.** If you would like to enable the RSS, the [hexo-generate-feed] plugin is also required.
+
+### Enable
+
+Modify `theme` setting in `_config.yml` to `landscape`.
+
+### Update
+
+``` bash
+cd themes/landscape
+git pull
+```
+
+## Configuration
+
+``` yml
+# Header
+menu:
+ Home: /
+ Archives: /archives
+rss: /atom.xml
+
+# Content
+excerpt_link: Read More
+fancybox: true
+
+# Sidebar
+sidebar: right
+widgets:
+- category
+- tag
+- tagcloud
+- archives
+- recent_posts
+
+# Miscellaneous
+google_analytics:
+favicon: /favicon.png
+twitter:
+google_plus:
+```
+
+- **menu** - Navigation menu
+- **rss** - RSS link
+- **excerpt_link** - "Read More" link at the bottom of excerpted articles. `false` to hide the link.
+- **fancybox** - Enable [Fancybox]
+- **sidebar** - Sidebar style. You can choose `left`, `right`, `bottom` or `false`.
+- **widgets** - Widgets displaying in sidebar
+- **google_analytics** - Google Analytics ID
+- **favicon** - Favicon path
+- **twitter** - Twiiter ID
+- **google_plus** - Google+ ID
+
+## Features
+
+### Fancybox
+
+Landscape uses [Fancybox] to showcase your photos. You can use Markdown syntax or fancybox tag plugin to add your photos.
+
+```
+
+
+{% fancybox img_url [img_thumbnail] [img_caption] %}
+```
+
+### Sidebar
+
+You can put your sidebar in left side, right side or bottom of your site by editing `sidebar` setting.
+
+Landscape provides 5 built-in widgets:
+
+- category
+- tag
+- tagcloud
+- archives
+- recent_posts
+
+All of them are enabled by default. You can edit them in `widget` setting.
+
+## Development
+
+### Requirements
+
+- [Grunt] 0.4+
+- Hexo 2.4+
+
+### Grunt tasks
+
+- **default** - Download [Fancybox] and [Font Awesome].
+- **fontawesome** - Only download [Font Awesome].
+- **fancybox** - Only download [Fancybox].
+- **clean** - Clean temporarily files and downloaded files.
+
+[Hexo]: https://hexo.io/
+[Fancybox]: http://fancyapps.com/fancybox/
+[Font Awesome]: http://fontawesome.io/
+[Grunt]: http://gruntjs.com/
+[hexo-generate-feed]: https://github.com/hexojs/hexo-generator-feed
diff --git a/Blog/themes/landscape/_config.yml b/Blog/themes/landscape/_config.yml
new file mode 100644
index 0000000..ca22374
--- /dev/null
+++ b/Blog/themes/landscape/_config.yml
@@ -0,0 +1,37 @@
+# Header
+menu:
+ Home: /
+ Archives: /archives
+rss: /atom.xml
+
+# Content
+excerpt_link: Read More
+fancybox: true
+
+# Sidebar
+sidebar: right
+widgets:
+- category
+- tag
+- tagcloud
+- archive
+- recent_posts
+
+# display widgets at the bottom of index pages (pagination == 2)
+index_widgets:
+# - category
+# - tagcloud
+# - archive
+
+# widget behavior
+archive_type: 'monthly'
+show_count: false
+
+# Miscellaneous
+google_analytics:
+gauges_analytics:
+favicon: /favicon.png
+twitter:
+google_plus:
+fb_admins:
+fb_app_id:
diff --git a/Blog/themes/landscape/languages/de.yml b/Blog/themes/landscape/languages/de.yml
new file mode 100644
index 0000000..630055f
--- /dev/null
+++ b/Blog/themes/landscape/languages/de.yml
@@ -0,0 +1,19 @@
+categories: Kategorien
+search: Suche
+tags: Tags
+tagcloud: Tag Cloud
+tweets: Tweets
+prev: zurück
+next: weiter
+comment: Kommentare
+archive_a: Archiv
+archive_b: "Archive: %s"
+page: Seite %d
+recent_posts: letzter Beitrag
+newer: Neuer
+older: Älter
+share: Teilen
+powered_by: Powered by
+rss_feed: RSS Feed
+category: Kategorie
+tag: Tag
diff --git a/Blog/themes/landscape/languages/default.yml b/Blog/themes/landscape/languages/default.yml
new file mode 100644
index 0000000..3ef7e92
--- /dev/null
+++ b/Blog/themes/landscape/languages/default.yml
@@ -0,0 +1,19 @@
+categories: Categories
+search: Search
+tags: Tags
+tagcloud: Tag Cloud
+tweets: Tweets
+prev: Prev
+next: Next
+comment: Comments
+archive_a: Archives
+archive_b: "Archives: %s"
+page: Page %d
+recent_posts: Recent Posts
+newer: Newer
+older: Older
+share: Share
+powered_by: Powered by
+rss_feed: RSS Feed
+category: Category
+tag: Tag
\ No newline at end of file
diff --git a/Blog/themes/landscape/languages/es.yml b/Blog/themes/landscape/languages/es.yml
new file mode 100644
index 0000000..d862e87
--- /dev/null
+++ b/Blog/themes/landscape/languages/es.yml
@@ -0,0 +1,19 @@
+categories: Categorías
+search: Buscar
+tags: Tags
+tagcloud: Nube de Tags
+tweets: Tweets
+prev: Previo
+next: Siguiente
+comment: Comentarios
+archive_a: Archivos
+archive_b: "Archivos: %s"
+page: Página %d
+recent_posts: Posts recientes
+newer: Nuevo
+older: Viejo
+share: Compartir
+powered_by: Construido por
+rss_feed: RSS
+category: Categoría
+tag: Tag
\ No newline at end of file
diff --git a/Blog/themes/landscape/languages/fr.yml b/Blog/themes/landscape/languages/fr.yml
new file mode 100644
index 0000000..c84f51b
--- /dev/null
+++ b/Blog/themes/landscape/languages/fr.yml
@@ -0,0 +1,19 @@
+categories: Catégories
+search: Rechercher
+tags: Mot-clés
+tagcloud: Nuage de mot-clés
+tweets: Tweets
+prev: Précédent
+next: Suivant
+comment: Commentaires
+archive_a: Archives
+archive_b: "Archives: %s"
+page: Page %d
+recent_posts: Articles récents
+newer: Récent
+older: Ancien
+share: Partager
+powered_by: Propulsé par
+rss_feed: Flux RSS
+category: Catégorie
+tag: Mot-clé
diff --git a/Blog/themes/landscape/languages/ja.yml b/Blog/themes/landscape/languages/ja.yml
new file mode 100644
index 0000000..af0f7fe
--- /dev/null
+++ b/Blog/themes/landscape/languages/ja.yml
@@ -0,0 +1,19 @@
+categories: カテゴリ
+search: 検索
+tags: タグ
+tagcloud: タグクラウド
+tweets: ツイート
+prev: 戻る
+next: 次へ
+comment: コメント
+archive_a: アーカイブ
+archive_b: "アーカイブ: %s"
+page: ページ %d
+recent_posts: 最近の投稿
+newer: 次の記事
+older: 前の記事
+share: 共有
+powered_by: Powered by
+rss_feed: RSSフィード
+category: カテゴリ
+tag: タグ
diff --git a/Blog/themes/landscape/languages/ko.yml b/Blog/themes/landscape/languages/ko.yml
new file mode 100644
index 0000000..1d27b43
--- /dev/null
+++ b/Blog/themes/landscape/languages/ko.yml
@@ -0,0 +1,19 @@
+categories: 카테고리
+search: 검색
+tags: 태그
+tagcloud: 태그 클라우드
+tweets: 트윗
+prev: 이전
+next: 다음
+comment: 댓글
+archive_a: 아카이브
+archive_b: "아카이브: %s"
+page: 페이지 %d
+recent_posts: 최근 포스트
+newer: 최신
+older: 이전
+share: 공유
+powered_by: Powered by
+rss_feed: RSS Feed
+category: 카테고리
+tag: 태그
diff --git a/Blog/themes/landscape/languages/nl.yml b/Blog/themes/landscape/languages/nl.yml
new file mode 100644
index 0000000..568d33e
--- /dev/null
+++ b/Blog/themes/landscape/languages/nl.yml
@@ -0,0 +1,20 @@
+
+categories: Categorieën
+search: Zoeken
+tags: Labels
+tagcloud: Tag Cloud
+tweets: Tweets
+prev: Vorige
+next: Volgende
+comment: Commentaren
+archive_a: Archieven
+archive_b: "Archieven: %s"
+page: Pagina %d
+recent_posts: Recente berichten
+newer: Nieuwer
+older: Ouder
+share: Delen
+powered_by: Powered by
+rss_feed: RSS Feed
+category: Categorie
+tag: Label
diff --git a/Blog/themes/landscape/languages/no.yml b/Blog/themes/landscape/languages/no.yml
new file mode 100644
index 0000000..b997691
--- /dev/null
+++ b/Blog/themes/landscape/languages/no.yml
@@ -0,0 +1,19 @@
+categories: Kategorier
+search: Søk
+tags: Tags
+tagcloud: Tag Cloud
+tweets: Tweets
+prev: Forrige
+next: Neste
+comment: Kommentarer
+archive_a: Arkiv
+archive_b: "Arkiv: %s"
+page: Side %d
+recent_posts: Siste innlegg
+newer: Newer
+older: Older
+share: Share
+powered_by: Powered by
+rss_feed: RSS Feed
+category: Category
+tag: Tag
\ No newline at end of file
diff --git a/Blog/themes/landscape/languages/pt.yml b/Blog/themes/landscape/languages/pt.yml
new file mode 100644
index 0000000..3d74af3
--- /dev/null
+++ b/Blog/themes/landscape/languages/pt.yml
@@ -0,0 +1,19 @@
+categories: Categorias
+search: Buscar
+tags: Tags
+tagcloud: Nuvem de Tags
+tweets: Tweets
+prev: Anterior
+next: Próximo
+comment: Comentários
+archive_a: Arquivos
+archive_b: "Arquivos: %s"
+page: Página %d
+recent_posts: Postagens Recentes
+newer: Mais Recente
+older: Mais Antigo
+share: Compartilhar
+powered_by: Desenvolvido por
+rss_feed: Feed RSS
+category: Categoria
+tag: Tag
diff --git a/Blog/themes/landscape/languages/ru.yml b/Blog/themes/landscape/languages/ru.yml
new file mode 100644
index 0000000..625a83c
--- /dev/null
+++ b/Blog/themes/landscape/languages/ru.yml
@@ -0,0 +1,19 @@
+categories: Категории
+search: Поиск
+tags: Метки
+tagcloud: Облако меток
+tweets: Твиты
+prev: Назад
+next: Вперед
+comment: Комментарии
+archive_a: Архив
+archive_b: "Архив: %s"
+page: Страница %d
+recent_posts: Недавние записи
+newer: Следующий
+older: Предыдущий
+share: Поделиться
+powered_by: Создано с помощью
+rss_feed: RSS-каналы
+category: Категория
+tag: Метка
\ No newline at end of file
diff --git a/Blog/themes/landscape/languages/zh-CN.yml b/Blog/themes/landscape/languages/zh-CN.yml
new file mode 100644
index 0000000..51e1321
--- /dev/null
+++ b/Blog/themes/landscape/languages/zh-CN.yml
@@ -0,0 +1,19 @@
+categories: 分类
+search: 搜索
+tags: 标签
+tagcloud: 标签云
+tweets: 推文
+prev: 上一页
+next: 下一页
+comment: 留言
+archive_a: 归档
+archive_b: 归档:%s
+page: 第 %d 页
+recent_posts: 最新文章
+newer: Newer
+older: Older
+share: Share
+powered_by: Powered by
+rss_feed: RSS Feed
+category: Category
+tag: Tag
\ No newline at end of file
diff --git a/Blog/themes/landscape/languages/zh-TW.yml b/Blog/themes/landscape/languages/zh-TW.yml
new file mode 100644
index 0000000..76d2916
--- /dev/null
+++ b/Blog/themes/landscape/languages/zh-TW.yml
@@ -0,0 +1,19 @@
+categories: 分類
+search: 搜尋
+tags: 標籤
+tagcloud: 標籤雲
+tweets: 推文
+prev: 上一頁
+next: 下一頁
+comment: 留言
+archive_a: 彙整
+archive_b: 彙整:%s
+page: 第 %d 頁
+recent_posts: 最新文章
+newer: Newer
+older: Older
+share: Share
+powered_by: Powered by
+rss_feed: RSS Feed
+category: Category
+tag: Tag
\ No newline at end of file
diff --git a/Blog/themes/landscape/layout/_partial/after-footer.ejs b/Blog/themes/landscape/layout/_partial/after-footer.ejs
new file mode 100644
index 0000000..ff2d509
--- /dev/null
+++ b/Blog/themes/landscape/layout/_partial/after-footer.ejs
@@ -0,0 +1,25 @@
+<% if (config.disqus_shortname){ %>
+
+<% } %>
+
+
+
+<% if (theme.fancybox){ %>
+ <%- css('fancybox/jquery.fancybox') %>
+ <%- js('fancybox/jquery.fancybox.pack') %>
+<% } %>
+
+<%- js('js/script') %>
+<%- partial('gauges-analytics') %>
diff --git a/Blog/themes/landscape/layout/_partial/archive-post.ejs b/Blog/themes/landscape/layout/_partial/archive-post.ejs
new file mode 100644
index 0000000..36f2cc3
--- /dev/null
+++ b/Blog/themes/landscape/layout/_partial/archive-post.ejs
@@ -0,0 +1,8 @@
+
+
+
+ <%- partial('post/date', {class_name: 'archive-article-date', date_format: 'MMM D'}) %>
+ <%- partial('post/title', {class_name: 'archive-article-title'}) %>
+
+
+
\ No newline at end of file
diff --git a/Blog/themes/landscape/layout/_partial/archive.ejs b/Blog/themes/landscape/layout/_partial/archive.ejs
new file mode 100644
index 0000000..9da934a
--- /dev/null
+++ b/Blog/themes/landscape/layout/_partial/archive.ejs
@@ -0,0 +1,34 @@
+<% if (pagination == 2){ %>
+ <% page.posts.each(function(post){ %>
+ <%- partial('article', {post: post, index: true}) %>
+ <% }) %>
+<% } else { %>
+ <% var last; %>
+ <% page.posts.each(function(post, i){ %>
+ <% var year = post.date.year(); %>
+ <% if (last != year){ %>
+ <% if (last != null){ %>
+
+<% } %>
diff --git a/Blog/themes/landscape/layout/_partial/article.ejs b/Blog/themes/landscape/layout/_partial/article.ejs
new file mode 100644
index 0000000..0f951a9
--- /dev/null
+++ b/Blog/themes/landscape/layout/_partial/article.ejs
@@ -0,0 +1,44 @@
+
+
+ <%- partial('post/date', {class_name: 'article-date', date_format: null}) %>
+ <%- partial('post/category') %>
+
+
+ <%- partial('post/gallery') %>
+ <% if (post.link || post.title){ %>
+
+ <%- partial('post/title', {class_name: 'article-title'}) %>
+
+ <% } %>
+
+ <% if (post.excerpt && index){ %>
+ <%- post.excerpt %>
+ <% if (theme.excerpt_link){ %>
+
+ <%= theme.excerpt_link %>
+
+ <% } %>
+ <% } else { %>
+ <%- post.content %>
+ <% } %>
+
+
+
+ <% if (!index){ %>
+ <%- partial('post/nav') %>
+ <% } %>
+
+
+<% if (!index && post.comments && config.disqus_shortname){ %>
+
+<% } %>
\ No newline at end of file
diff --git a/Blog/themes/landscape/layout/_partial/footer.ejs b/Blog/themes/landscape/layout/_partial/footer.ejs
new file mode 100644
index 0000000..3aca618
--- /dev/null
+++ b/Blog/themes/landscape/layout/_partial/footer.ejs
@@ -0,0 +1,11 @@
+
\ No newline at end of file
diff --git a/Blog/themes/landscape/layout/_partial/gauges-analytics.ejs b/Blog/themes/landscape/layout/_partial/gauges-analytics.ejs
new file mode 100644
index 0000000..d64be38
--- /dev/null
+++ b/Blog/themes/landscape/layout/_partial/gauges-analytics.ejs
@@ -0,0 +1,18 @@
+<% if (theme.gauges_analytics){ %>
+
+
+
+<% } %>
diff --git a/Blog/themes/landscape/layout/_partial/google-analytics.ejs b/Blog/themes/landscape/layout/_partial/google-analytics.ejs
new file mode 100644
index 0000000..84e75f0
--- /dev/null
+++ b/Blog/themes/landscape/layout/_partial/google-analytics.ejs
@@ -0,0 +1,14 @@
+<% if (theme.google_analytics){ %>
+
+
+
+<% } %>
diff --git a/Blog/themes/landscape/layout/_partial/head.ejs b/Blog/themes/landscape/layout/_partial/head.ejs
new file mode 100644
index 0000000..43d5f93
--- /dev/null
+++ b/Blog/themes/landscape/layout/_partial/head.ejs
@@ -0,0 +1,36 @@
+
+
+
+
+ <%- partial('google-analytics') %>
+ <%
+ var title = page.title;
+
+ if (is_archive()){
+ title = __('archive_a');
+
+ if (is_month()){
+ title += ': ' + page.year + '/' + page.month;
+ } else if (is_year()){
+ title += ': ' + page.year;
+ }
+ } else if (is_category()){
+ title = __('category') + ': ' + page.category;
+ } else if (is_tag()){
+ title = __('tag') + ': ' + page.tag;
+ }
+ %>
+
+ <%- open_graph({twitter_id: theme.twitter, google_plus: theme.google_plus, fb_admins: theme.fb_admins, fb_app_id: theme.fb_app_id}) %>
+ <% if (theme.rss){ %>
+
+ <% } %>
+ <%- css('css/style') %>
+
diff --git a/Blog/themes/landscape/layout/_partial/header.ejs b/Blog/themes/landscape/layout/_partial/header.ejs
new file mode 100644
index 0000000..e8a305e
--- /dev/null
+++ b/Blog/themes/landscape/layout/_partial/header.ejs
@@ -0,0 +1,32 @@
+
\ No newline at end of file
diff --git a/Blog/themes/landscape/layout/_partial/mobile-nav.ejs b/Blog/themes/landscape/layout/_partial/mobile-nav.ejs
new file mode 100644
index 0000000..7c1d2af
--- /dev/null
+++ b/Blog/themes/landscape/layout/_partial/mobile-nav.ejs
@@ -0,0 +1,5 @@
+
\ No newline at end of file
diff --git a/Blog/themes/landscape/layout/_partial/post/category.ejs b/Blog/themes/landscape/layout/_partial/post/category.ejs
new file mode 100644
index 0000000..db2ed48
--- /dev/null
+++ b/Blog/themes/landscape/layout/_partial/post/category.ejs
@@ -0,0 +1,10 @@
+<% if (post.categories && post.categories.length){ %>
+
+ <%- list_categories(post.categories, {
+ show_count: false,
+ class: 'article-category',
+ style: 'none',
+ separator: '►'
+ }) %>
+
+<% } %>
\ No newline at end of file
diff --git a/Blog/themes/landscape/layout/_partial/post/date.ejs b/Blog/themes/landscape/layout/_partial/post/date.ejs
new file mode 100644
index 0000000..3f49613
--- /dev/null
+++ b/Blog/themes/landscape/layout/_partial/post/date.ejs
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/Blog/themes/landscape/layout/_partial/post/gallery.ejs b/Blog/themes/landscape/layout/_partial/post/gallery.ejs
new file mode 100644
index 0000000..886c8ec
--- /dev/null
+++ b/Blog/themes/landscape/layout/_partial/post/gallery.ejs
@@ -0,0 +1,11 @@
+<% if (post.photos && post.photos.length){ %>
+
+
+ <% post.photos.forEach(function(photo, i){ %>
+
+
+
+ <% }) %>
+
+
+<% } %>
\ No newline at end of file
diff --git a/Blog/themes/landscape/layout/_partial/post/nav.ejs b/Blog/themes/landscape/layout/_partial/post/nav.ejs
new file mode 100644
index 0000000..720798a
--- /dev/null
+++ b/Blog/themes/landscape/layout/_partial/post/nav.ejs
@@ -0,0 +1,22 @@
+<% if (post.prev || post.next){ %>
+
+<% } %>
\ No newline at end of file
diff --git a/Blog/themes/landscape/layout/_partial/post/tag.ejs b/Blog/themes/landscape/layout/_partial/post/tag.ejs
new file mode 100644
index 0000000..e0f327f
--- /dev/null
+++ b/Blog/themes/landscape/layout/_partial/post/tag.ejs
@@ -0,0 +1,6 @@
+<% if (post.tags && post.tags.length){ %>
+ <%- list_tags(post.tags, {
+ show_count: false,
+ class: 'article-tag'
+ }) %>
+<% } %>
\ No newline at end of file
diff --git a/Blog/themes/landscape/layout/_partial/post/title.ejs b/Blog/themes/landscape/layout/_partial/post/title.ejs
new file mode 100644
index 0000000..69d646f
--- /dev/null
+++ b/Blog/themes/landscape/layout/_partial/post/title.ejs
@@ -0,0 +1,15 @@
+<% if (post.link){ %>
+
+ <% } %>
+<% } %>
\ No newline at end of file
diff --git a/Blog/themes/landscape/layout/_partial/sidebar.ejs b/Blog/themes/landscape/layout/_partial/sidebar.ejs
new file mode 100644
index 0000000..c1e48e5
--- /dev/null
+++ b/Blog/themes/landscape/layout/_partial/sidebar.ejs
@@ -0,0 +1,5 @@
+
\ No newline at end of file
diff --git a/Blog/themes/landscape/layout/_widget/archive.ejs b/Blog/themes/landscape/layout/_widget/archive.ejs
new file mode 100644
index 0000000..a20c58c
--- /dev/null
+++ b/Blog/themes/landscape/layout/_widget/archive.ejs
@@ -0,0 +1,8 @@
+<% if (site.posts.length){ %>
+
+<% } %>
diff --git a/Blog/themes/landscape/layout/_widget/category.ejs b/Blog/themes/landscape/layout/_widget/category.ejs
new file mode 100644
index 0000000..8d9e5e9
--- /dev/null
+++ b/Blog/themes/landscape/layout/_widget/category.ejs
@@ -0,0 +1,8 @@
+<% if (site.categories.length){ %>
+
+<% } %>
diff --git a/Blog/themes/landscape/layout/_widget/recent_posts.ejs b/Blog/themes/landscape/layout/_widget/recent_posts.ejs
new file mode 100644
index 0000000..7a38547
--- /dev/null
+++ b/Blog/themes/landscape/layout/_widget/recent_posts.ejs
@@ -0,0 +1,14 @@
+<% if (site.posts.length){ %>
+
+<% } %>
\ No newline at end of file
diff --git a/Blog/themes/landscape/layout/_widget/tag.ejs b/Blog/themes/landscape/layout/_widget/tag.ejs
new file mode 100644
index 0000000..ea5fb2c
--- /dev/null
+++ b/Blog/themes/landscape/layout/_widget/tag.ejs
@@ -0,0 +1,8 @@
+<% if (site.tags.length){ %>
+
+<% } %>
diff --git a/Blog/themes/landscape/layout/_widget/tagcloud.ejs b/Blog/themes/landscape/layout/_widget/tagcloud.ejs
new file mode 100644
index 0000000..5feb435
--- /dev/null
+++ b/Blog/themes/landscape/layout/_widget/tagcloud.ejs
@@ -0,0 +1,8 @@
+<% if (site.tags.length){ %>
+
+<% } %>
\ No newline at end of file
diff --git a/Blog/themes/landscape/layout/archive.ejs b/Blog/themes/landscape/layout/archive.ejs
new file mode 100644
index 0000000..52f9b21
--- /dev/null
+++ b/Blog/themes/landscape/layout/archive.ejs
@@ -0,0 +1 @@
+<%- partial('_partial/archive', {pagination: config.archive, index: true}) %>
\ No newline at end of file
diff --git a/Blog/themes/landscape/layout/category.ejs b/Blog/themes/landscape/layout/category.ejs
new file mode 100644
index 0000000..3ffe252
--- /dev/null
+++ b/Blog/themes/landscape/layout/category.ejs
@@ -0,0 +1 @@
+<%- partial('_partial/archive', {pagination: config.category, index: true}) %>
\ No newline at end of file
diff --git a/Blog/themes/landscape/layout/index.ejs b/Blog/themes/landscape/layout/index.ejs
new file mode 100644
index 0000000..60a2c68
--- /dev/null
+++ b/Blog/themes/landscape/layout/index.ejs
@@ -0,0 +1 @@
+<%- partial('_partial/archive', {pagination: 2, index: true}) %>
\ No newline at end of file
diff --git a/Blog/themes/landscape/layout/layout.ejs b/Blog/themes/landscape/layout/layout.ejs
new file mode 100644
index 0000000..cf88daf
--- /dev/null
+++ b/Blog/themes/landscape/layout/layout.ejs
@@ -0,0 +1,18 @@
+<%- partial('_partial/head') %>
+
+
+
+ <%- partial('_partial/header', null, {cache: !config.relative_link}) %>
+
+
+ <% if (theme.sidebar && theme.sidebar !== 'bottom'){ %>
+ <%- partial('_partial/sidebar', null, {cache: !config.relative_link}) %>
+ <% } %>
+
+ <%- partial('_partial/footer', null, {cache: !config.relative_link}) %>
+
+ <%- partial('_partial/mobile-nav', null, {cache: !config.relative_link}) %>
+ <%- partial('_partial/after-footer') %>
+
+
+
\ No newline at end of file
diff --git a/Blog/themes/landscape/layout/page.ejs b/Blog/themes/landscape/layout/page.ejs
new file mode 100644
index 0000000..bea6318
--- /dev/null
+++ b/Blog/themes/landscape/layout/page.ejs
@@ -0,0 +1 @@
+<%- partial('_partial/article', {post: page, index: false}) %>
\ No newline at end of file
diff --git a/Blog/themes/landscape/layout/post.ejs b/Blog/themes/landscape/layout/post.ejs
new file mode 100644
index 0000000..bea6318
--- /dev/null
+++ b/Blog/themes/landscape/layout/post.ejs
@@ -0,0 +1 @@
+<%- partial('_partial/article', {post: page, index: false}) %>
\ No newline at end of file
diff --git a/Blog/themes/landscape/layout/tag.ejs b/Blog/themes/landscape/layout/tag.ejs
new file mode 100644
index 0000000..048cdb0
--- /dev/null
+++ b/Blog/themes/landscape/layout/tag.ejs
@@ -0,0 +1 @@
+<%- partial('_partial/archive', {pagination: config.tag, index: true}) %>
\ No newline at end of file
diff --git a/Blog/themes/landscape/package.json b/Blog/themes/landscape/package.json
new file mode 100644
index 0000000..ac0df3d
--- /dev/null
+++ b/Blog/themes/landscape/package.json
@@ -0,0 +1,12 @@
+{
+ "name": "hexo-theme-landscape",
+ "version": "0.0.2",
+ "private": true,
+ "devDependencies": {
+ "grunt": "~0.4.2",
+ "load-grunt-tasks": "~0.2.0",
+ "grunt-git": "~0.2.2",
+ "grunt-contrib-clean": "~0.5.0",
+ "grunt-contrib-copy": "~0.4.1"
+ }
+}
diff --git a/Blog/themes/landscape/scripts/fancybox.js b/Blog/themes/landscape/scripts/fancybox.js
new file mode 100644
index 0000000..83f1fdc
--- /dev/null
+++ b/Blog/themes/landscape/scripts/fancybox.js
@@ -0,0 +1,24 @@
+var rUrl = /((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[.\!\/\\w]*))?)/;
+
+/**
+* Fancybox tag
+*
+* Syntax:
+* {% fancybox /path/to/image [/path/to/thumbnail] [title] %}
+*/
+
+hexo.extend.tag.register('fancybox', function(args){
+ var original = args.shift(),
+ thumbnail = '';
+
+ if (args.length && rUrl.test(args[0])){
+ thumbnail = args.shift();
+ }
+
+ var title = args.join(' ');
+
+ return '
' : '');
+});
\ No newline at end of file
diff --git a/Blog/themes/landscape/source/css/_extend.styl b/Blog/themes/landscape/source/css/_extend.styl
new file mode 100644
index 0000000..96a1817
--- /dev/null
+++ b/Blog/themes/landscape/source/css/_extend.styl
@@ -0,0 +1,63 @@
+$block-caption
+ text-decoration: none
+ text-transform: uppercase
+ letter-spacing: 2px
+ color: color-grey
+ margin-bottom: 1em
+ margin-left: 5px
+ line-height: 1em
+ text-shadow: 0 1px #fff
+ font-weight: bold
+
+$block
+ background: #fff
+ box-shadow: 1px 2px 3px #ddd
+ border: 1px solid color-border
+ border-radius: 3px
+
+$base-style
+ h1
+ font-size: 2em
+ h2
+ font-size: 1.5em
+ h3
+ font-size: 1.3em
+ h4
+ font-size: 1.2em
+ h5
+ font-size: 1em
+ h6
+ font-size: 1em
+ color: color-grey
+ hr
+ border: 1px dashed color-border
+ strong
+ font-weight: bold
+ em, cite
+ font-style: italic
+ sup, sub
+ font-size: 0.75em
+ line-height: 0
+ position: relative
+ vertical-align: baseline
+ sup
+ top: -0.5em
+ sub
+ bottom: -0.2em
+ small
+ font-size: 0.85em
+ acronym, abbr
+ border-bottom: 1px dotted
+ ul, ol, dl
+ margin: 0 20px
+ line-height: line-height
+ ul, ol
+ ul, ol
+ margin-top: 0
+ margin-bottom: 0
+ ul
+ list-style: disc
+ ol
+ list-style: decimal
+ dt
+ font-weight: bold
\ No newline at end of file
diff --git a/Blog/themes/landscape/source/css/_partial/archive.styl b/Blog/themes/landscape/source/css/_partial/archive.styl
new file mode 100644
index 0000000..90ef053
--- /dev/null
+++ b/Blog/themes/landscape/source/css/_partial/archive.styl
@@ -0,0 +1,80 @@
+.archives-wrap
+ margin: block-margin 0
+
+.archives
+ clearfix()
+
+.archive-year-wrap
+ margin-bottom: 1em
+
+.archive-year
+ @extend $block-caption
+
+.archives
+ column-gap: 10px
+ @media mq-tablet
+ column-count: 2
+ @media mq-normal
+ column-count: 3
+
+.archive-article
+ avoid-column-break()
+
+.archive-article-inner
+ @extend $block
+ padding: 10px
+ margin-bottom: 15px
+
+.archive-article-title
+ text-decoration: none
+ font-weight: bold
+ color: color-default
+ transition: color 0.2s
+ line-height: line-height
+ &:hover
+ color: color-link
+
+.archive-article-footer
+ margin-top: 1em
+
+.archive-article-date
+ color: color-grey
+ text-decoration: none
+ font-size: 0.85em
+ line-height: 1em
+ margin-bottom: 0.5em
+ display: block
+
+#page-nav
+ clearfix()
+ margin: block-margin auto
+ background: #fff
+ box-shadow: 1px 2px 3px #ddd
+ border: 1px solid color-border
+ border-radius: 3px
+ text-align: center
+ color: color-grey
+ overflow: hidden
+ a, span
+ padding: 10px 20px
+ line-height: 1
+ height: 2ex
+ a
+ color: color-grey
+ text-decoration: none
+ &:hover
+ background: color-grey
+ color: #fff
+ .prev
+ float: left
+ .next
+ float: right
+ .page-number
+ display: inline-block
+ @media mq-mobile
+ display: none
+ .current
+ color: color-default
+ font-weight: bold
+ .space
+ color: color-border
\ No newline at end of file
diff --git a/Blog/themes/landscape/source/css/_partial/article.styl b/Blog/themes/landscape/source/css/_partial/article.styl
new file mode 100644
index 0000000..46094f9
--- /dev/null
+++ b/Blog/themes/landscape/source/css/_partial/article.styl
@@ -0,0 +1,357 @@
+.article
+ margin: block-margin 0
+
+.article-inner
+ @extend $block
+ overflow: hidden
+
+.article-meta
+ clearfix()
+
+.article-date
+ @extend $block-caption
+ float: left
+
+.article-category
+ float: left
+ line-height: 1em
+ color: #ccc
+ text-shadow: 0 1px #fff
+ margin-left: 8px
+ &:before
+ content: "\2022"
+
+.article-category-link
+ @extend $block-caption
+ margin: 0 12px 1em
+
+.article-header
+ padding: article-padding article-padding 0
+
+.article-title
+ text-decoration: none
+ font-size: 2em
+ font-weight: bold
+ color: color-default
+ line-height: line-height-title
+ transition: color 0.2s
+ a&:hover
+ color: color-link
+
+.article-entry
+ @extend $base-style
+ clearfix()
+ color: color-default
+ padding: 0 article-padding
+ p, table
+ line-height: line-height
+ margin: line-height 0
+ h1, h2, h3, h4, h5, h6
+ font-weight: bold
+ h1, h2, h3, h4, h5, h6
+ line-height: line-height-title
+ margin: line-height-title 0
+ a
+ color: color-link
+ text-decoration: none
+ &:hover
+ text-decoration: underline
+ ul, ol, dl
+ margin-top: line-height
+ margin-bottom: line-height
+ img, video
+ max-width: 100%
+ height: auto
+ display: block
+ margin: auto
+ iframe
+ border: none
+ table
+ width: 100%
+ border-collapse: collapse
+ border-spacing: 0
+ th
+ font-weight: bold
+ border-bottom: 3px solid color-border
+ padding-bottom: 0.5em
+ td
+ border-bottom: 1px solid color-border
+ padding: 10px 0
+ blockquote
+ font-family: font-serif
+ font-size: 1.4em
+ margin: line-height 20px
+ text-align: center
+ footer
+ font-size: font-size
+ margin: line-height 0
+ font-family: font-sans
+ cite
+ &:before
+ content: "—"
+ padding: 0 0.5em
+ .pullquote
+ text-align: left
+ width: 45%
+ margin: 0
+ &.left
+ margin-left: 0.5em
+ margin-right: 1em
+ &.right
+ margin-right: 0.5em
+ margin-left: 1em
+ .caption
+ color: color-grey
+ display: block
+ font-size: 0.9em
+ margin-top: 0.5em
+ position: relative
+ text-align: center
+ // http://webdesignerwall.com/tutorials/css-elastic-videos
+ .video-container
+ position: relative
+ padding-top: (9 / 16 * 100)% // 16:9 ratio
+ height: 0
+ overflow: hidden
+ iframe, object, embed
+ position: absolute
+ top: 0
+ left: 0
+ width: 100%
+ height: 100%
+ margin-top: 0
+
+.article-more-link a
+ display: inline-block
+ line-height: 1em
+ padding: 6px 15px
+ border-radius: 15px
+ background: color-background
+ color: color-grey
+ text-shadow: 0 1px #fff
+ text-decoration: none
+ &:hover
+ background: color-link
+ color: #fff
+ text-decoration: none
+ text-shadow: 0 1px darken(color-link, 20%)
+
+.article-footer
+ clearfix()
+ font-size: 0.85em
+ line-height: line-height
+ border-top: 1px solid color-border
+ padding-top: line-height
+ margin: 0 article-padding article-padding
+ a
+ color: color-grey
+ text-decoration: none
+ &:hover
+ color: color-default
+
+.article-tag-list-item
+ float: left
+ margin-right: 10px
+
+.article-tag-list-link
+ &:before
+ content: "#"
+
+.article-comment-link
+ float: right
+ &:before
+ content: "\f075"
+ font-family: font-icon
+ padding-right: 8px
+
+.article-share-link
+ cursor: pointer
+ float: right
+ margin-left: 20px
+ &:before
+ content: "\f064"
+ font-family: font-icon
+ padding-right: 6px
+
+#article-nav
+ clearfix()
+ position: relative
+ @media mq-normal
+ margin: block-margin 0
+ &:before
+ absolute-center(8px)
+ content: ""
+ border-radius: 50%
+ background: color-border
+ box-shadow: 0 1px 2px #fff
+
+.article-nav-link-wrap
+ text-decoration: none
+ text-shadow: 0 1px #fff
+ color: color-grey
+ box-sizing: border-box
+ margin-top: block-margin
+ text-align: center
+ display: block
+ &:hover
+ color: color-default
+ @media mq-normal
+ width: 50%
+ margin-top: 0
+
+#article-nav-newer
+ @media mq-normal
+ float: left
+ text-align: right
+ padding-right: 20px
+
+#article-nav-older
+ @media mq-normal
+ float: right
+ text-align: left
+ padding-left: 20px
+
+.article-nav-caption
+ text-transform: uppercase
+ letter-spacing: 2px
+ color: color-border
+ line-height: 1em
+ font-weight: bold
+ #article-nav-newer &
+ margin-right: -2px
+
+.article-nav-title
+ font-size: 0.85em
+ line-height: line-height
+ margin-top: 0.5em
+
+.article-share-box
+ position: absolute
+ display: none
+ background: #fff
+ box-shadow: 1px 2px 10px rgba(0, 0, 0, 0.2)
+ border-radius: 3px
+ margin-left: -145px
+ overflow: hidden
+ z-index: 1
+ &.on
+ display: block
+
+.article-share-input
+ width: 100%
+ background: none
+ box-sizing: border-box
+ font: 14px font-sans
+ padding: 0 15px
+ color: color-default
+ outline: none
+ border: 1px solid color-border
+ border-radius: 3px 3px 0 0
+ height: 36px
+ line-height: 36px
+
+.article-share-links
+ clearfix()
+ background: color-background
+
+$article-share-link
+ width: 50px
+ height: 36px
+ display: block
+ float: left
+ position: relative
+ color: #999
+ text-shadow: 0 1px #fff
+ &:before
+ font-size: 20px
+ font-family: font-icon
+ absolute-center(@font-size)
+ text-align: center
+ &:hover
+ color: #fff
+
+.article-share-twitter
+ @extend $article-share-link
+ &:before
+ content: "\f099"
+ &:hover
+ background: color-twitter
+ text-shadow: 0 1px darken(color-twitter, 20%)
+
+.article-share-facebook
+ @extend $article-share-link
+ &:before
+ content: "\f09a"
+ &:hover
+ background: color-facebook
+ text-shadow: 0 1px darken(color-facebook, 20%)
+
+.article-share-pinterest
+ @extend $article-share-link
+ &:before
+ content: "\f0d2"
+ &:hover
+ background: color-pinterest
+ text-shadow: 0 1px darken(color-pinterest, 20%)
+
+.article-share-google
+ @extend $article-share-link
+ &:before
+ content: "\f0d5"
+ &:hover
+ background: color-google
+ text-shadow: 0 1px darken(color-google, 20%)
+
+.article-gallery
+ background: #000
+ position: relative
+
+.article-gallery-photos
+ position: relative
+ overflow: hidden
+
+.article-gallery-img
+ display: none
+ max-width: 100%
+ &:first-child
+ display: block
+ &.loaded
+ position: absolute
+ display: block
+ img
+ display: block
+ max-width: 100%
+ margin: 0 auto
+/*
+$article-gallery-ctrl
+ position: absolute
+ top: 0
+ height: 100%
+ width: 60px
+ color: #fff
+ text-shadow: 0 0 3px rgba(0, 0, 0, 0.3)
+ opacity: 0.3
+ transition: opacity 0.2s
+ cursor: pointer
+ &:hover
+ opacity: 0.8
+ &:before
+ font-size: 30px
+ font-family: font-icon
+ position: absolute
+ top: 50%
+ margin-top: @font-size * -0.5
+
+.article-gallery-prev
+ @extend $article-gallery-ctrl
+ left: 0
+ &:before
+ content: "\f053"
+ left: 15px
+
+.article-gallery-next
+ @extend $article-gallery-ctrl
+ right: 0
+ &:before
+ content: "\f054"
+ right: 15px*/
\ No newline at end of file
diff --git a/Blog/themes/landscape/source/css/_partial/comment.styl b/Blog/themes/landscape/source/css/_partial/comment.styl
new file mode 100644
index 0000000..296b7dd
--- /dev/null
+++ b/Blog/themes/landscape/source/css/_partial/comment.styl
@@ -0,0 +1,9 @@
+#comments
+ background: #fff
+ box-shadow: 1px 2px 3px #ddd
+ padding: article-padding
+ border: 1px solid color-border
+ border-radius: 3px
+ margin: block-margin 0
+ a
+ color: color-link
\ No newline at end of file
diff --git a/Blog/themes/landscape/source/css/_partial/footer.styl b/Blog/themes/landscape/source/css/_partial/footer.styl
new file mode 100644
index 0000000..fe2fd24
--- /dev/null
+++ b/Blog/themes/landscape/source/css/_partial/footer.styl
@@ -0,0 +1,14 @@
+#footer
+ background: color-footer-background
+ padding: 50px 0
+ border-top: 1px solid color-border
+ color: color-grey
+ a
+ color: color-link
+ text-decoration: none
+ &:hover
+ text-decoration: underline
+
+#footer-info
+ line-height: line-height
+ font-size: 0.85em
\ No newline at end of file
diff --git a/Blog/themes/landscape/source/css/_partial/header.styl b/Blog/themes/landscape/source/css/_partial/header.styl
new file mode 100644
index 0000000..d18ebc8
--- /dev/null
+++ b/Blog/themes/landscape/source/css/_partial/header.styl
@@ -0,0 +1,165 @@
+#header
+ height: banner-height
+ position: relative
+ border-bottom: 1px solid color-border
+ &:before, &:after
+ content: ""
+ position: absolute
+ left: 0
+ right: 0
+ height: 40px
+ &:before
+ top: 0
+ background: linear-gradient(rgba(0, 0, 0, 0.2), transparent)
+ &:after
+ bottom: 0
+ background: linear-gradient(transparent, rgba(0, 0, 0, 0.2))
+
+#header-outer
+ height: 100%
+ position: relative
+
+#header-inner
+ position: relative
+ overflow: hidden
+
+#banner
+ position: absolute
+ top: 0
+ left: 0
+ width: 100%
+ height: 100%
+ background: url(banner-url) center #000
+ background-size: cover
+ z-index: -1
+
+#header-title
+ text-align: center
+ height: logo-size
+ position: absolute
+ top: 50%
+ left: 0
+ margin-top: logo-size * -0.5
+
+$logo-text
+ text-decoration: none
+ color: #fff
+ font-weight: 300
+ text-shadow: 0 1px 4px rgba(0, 0, 0, 0.3)
+
+#logo
+ @extend $logo-text
+ font-size: logo-size
+ line-height: logo-size
+ letter-spacing: 2px
+
+#subtitle
+ @extend $logo-text
+ font-size: subtitle-size
+ line-height: subtitle-size
+ letter-spacing: 1px
+
+#subtitle-wrap
+ margin-top: subtitle-size
+
+#main-nav
+ float: left
+ margin-left: -15px
+
+$nav-link
+ float: left
+ color: #fff
+ opacity: 0.6
+ text-decoration: none
+ text-shadow: 0 1px rgba(0, 0, 0, 0.2)
+ transition: opacity 0.2s
+ display: block
+ padding: 20px 15px
+ &:hover
+ opacity: 1
+
+.nav-icon
+ @extend $nav-link
+ font-family: font-icon
+ text-align: center
+ font-size: font-size
+ width: font-size
+ height: font-size
+ padding: 20px 15px
+ position: relative
+ cursor: pointer
+
+.main-nav-link
+ @extend $nav-link
+ font-weight: 300
+ letter-spacing: 1px
+ @media mq-mobile
+ display: none
+
+#main-nav-toggle
+ display: none
+ &:before
+ content: "\f0c9"
+ @media mq-mobile
+ display: block
+
+#sub-nav
+ float: right
+ margin-right: -15px
+
+#nav-rss-link
+ &:before
+ content: "\f09e"
+
+#nav-search-btn
+ &:before
+ content: "\f002"
+
+#search-form-wrap
+ position: absolute
+ top: 15px
+ width: 150px
+ height: 30px
+ right: -150px
+ opacity: 0
+ transition: 0.2s ease-out
+ &.on
+ opacity: 1
+ right: 0
+ @media mq-mobile
+ width: 100%
+ right: -100%
+
+.search-form
+ position: absolute
+ top: 0
+ left: 0
+ right: 0
+ background: #fff
+ padding: 5px 15px
+ border-radius: 15px
+ box-shadow: 0 0 10px rgba(0, 0, 0, 0.3)
+
+.search-form-input
+ border: none
+ background: none
+ color: color-default
+ width: 100%
+ font: 13px font-sans
+ outline: none
+ &::-webkit-search-results-decoration
+ &::-webkit-search-cancel-button
+ -webkit-appearance: none
+
+.search-form-submit
+ position: absolute
+ top: 50%
+ right: 10px
+ margin-top: -7px
+ font: 13px font-icon
+ border: none
+ background: none
+ color: #bbb
+ cursor: pointer
+ &:hover, &:focus
+ color: #777
\ No newline at end of file
diff --git a/Blog/themes/landscape/source/css/_partial/highlight.styl b/Blog/themes/landscape/source/css/_partial/highlight.styl
new file mode 100644
index 0000000..c932ec3
--- /dev/null
+++ b/Blog/themes/landscape/source/css/_partial/highlight.styl
@@ -0,0 +1,158 @@
+// https://github.com/chriskempson/tomorrow-theme
+highlight-background = #2d2d2d
+highlight-current-line = #393939
+highlight-selection = #515151
+highlight-foreground = #cccccc
+highlight-comment = #999999
+highlight-red = #f2777a
+highlight-orange = #f99157
+highlight-yellow = #ffcc66
+highlight-green = #99cc99
+highlight-aqua = #66cccc
+highlight-blue = #6699cc
+highlight-purple = #cc99cc
+
+$code-block
+ background: highlight-background
+ margin: 0 article-padding * -1
+ padding: 15px article-padding
+ border-style: solid
+ border-color: color-border
+ border-width: 1px 0
+ overflow: auto
+ color: highlight-foreground
+ line-height: font-size * line-height
+
+$line-numbers
+ color: #666
+ font-size: 0.85em
+
+.article-entry
+ pre, code
+ font-family: font-mono
+ code
+ background: color-background
+ text-shadow: 0 1px #fff
+ padding: 0 0.3em
+ pre
+ @extend $code-block
+ code
+ background: none
+ text-shadow: none
+ padding: 0
+ .highlight
+ @extend $code-block
+ pre
+ border: none
+ margin: 0
+ padding: 0
+ table
+ margin: 0
+ width: auto
+ td
+ border: none
+ padding: 0
+ figcaption
+ clearfix()
+ font-size: 0.85em
+ color: highlight-comment
+ line-height: 1em
+ margin-bottom: 1em
+ a
+ float: right
+ .gutter pre
+ @extend $line-numbers
+ text-align: right
+ padding-right: 20px
+ .line
+ height: font-size * line-height
+ .line.marked
+ background: highlight-selection
+ .gist
+ margin: 0 article-padding * -1
+ border-style: solid
+ border-color: color-border
+ border-width: 1px 0
+ background: highlight-background
+ padding: 15px article-padding 15px 0
+ .gist-file
+ border: none
+ font-family: font-mono
+ margin: 0
+ .gist-data
+ background: none
+ border: none
+ .line-numbers
+ @extend $line-numbers
+ background: none
+ border: none
+ padding: 0 20px 0 0
+ .line-data
+ padding: 0 !important
+ .highlight
+ margin: 0
+ padding: 0
+ border: none
+ .gist-meta
+ background: highlight-background
+ color: highlight-comment
+ font: 0.85em font-sans
+ text-shadow: 0 0
+ padding: 0
+ margin-top: 1em
+ margin-left: article-padding
+ a
+ color: color-link
+ font-weight: normal
+ &:hover
+ text-decoration: underline
+
+pre
+ .comment
+ .title
+ color: highlight-comment
+ .variable
+ .attribute
+ .tag
+ .regexp
+ .ruby .constant
+ .xml .tag .title
+ .xml .pi
+ .xml .doctype
+ .html .doctype
+ .css .id
+ .css .class
+ .css .pseudo
+ color: highlight-red
+ .number
+ .preprocessor
+ .built_in
+ .literal
+ .params
+ .constant
+ color: highlight-orange
+ .class
+ .ruby .class .title
+ .css .rules .attribute
+ color: highlight-green
+ .string
+ .value
+ .inheritance
+ .header
+ .ruby .symbol
+ .xml .cdata
+ color: highlight-green
+ .css .hexcolor
+ color: highlight-aqua
+ .function
+ .python .decorator
+ .python .title
+ .ruby .function .title
+ .ruby .title .keyword
+ .perl .sub
+ .javascript .title
+ .coffeescript .title
+ color: highlight-blue
+ .keyword
+ .javascript .function
+ color: highlight-purple
diff --git a/Blog/themes/landscape/source/css/_partial/mobile.styl b/Blog/themes/landscape/source/css/_partial/mobile.styl
new file mode 100644
index 0000000..eb68b3a
--- /dev/null
+++ b/Blog/themes/landscape/source/css/_partial/mobile.styl
@@ -0,0 +1,19 @@
+@media mq-mobile
+ #mobile-nav
+ position: absolute
+ top: 0
+ left: 0
+ width: mobile-nav-width
+ height: 100%
+ background: color-mobile-nav-background
+ border-right: 1px solid #fff
+
+@media mq-mobile
+ .mobile-nav-link
+ display: block
+ color: color-grey
+ text-decoration: none
+ padding: 15px 20px
+ font-weight: bold
+ &:hover
+ color: #fff
diff --git a/Blog/themes/landscape/source/css/_partial/sidebar-aside.styl b/Blog/themes/landscape/source/css/_partial/sidebar-aside.styl
new file mode 100644
index 0000000..838b167
--- /dev/null
+++ b/Blog/themes/landscape/source/css/_partial/sidebar-aside.styl
@@ -0,0 +1,27 @@
+#sidebar
+ @media mq-normal
+ column(sidebar-column)
+
+.widget-wrap
+ margin: block-margin 0
+
+.widget-title
+ @extend $block-caption
+
+.widget
+ color: color-sidebar-text
+ text-shadow: 0 1px #fff
+ background: color-widget-background
+ box-shadow: 0 -1px 4px color-widget-border inset
+ border: 1px solid color-widget-border
+ padding: 15px
+ border-radius: 3px
+ a
+ color: color-link
+ text-decoration: none
+ &:hover
+ text-decoration: underline
+ ul, ol, dl
+ ul, ol, dl
+ margin-left: 15px
+ list-style: disc
\ No newline at end of file
diff --git a/Blog/themes/landscape/source/css/_partial/sidebar-bottom.styl b/Blog/themes/landscape/source/css/_partial/sidebar-bottom.styl
new file mode 100644
index 0000000..e2403fd
--- /dev/null
+++ b/Blog/themes/landscape/source/css/_partial/sidebar-bottom.styl
@@ -0,0 +1,27 @@
+.widget-wrap
+ margin-bottom: block-margin !important
+ @media mq-normal
+ column(main-column)
+
+.widget-title
+ color: #ccc
+ text-transform: uppercase
+ letter-spacing: 2px
+ margin-bottom: .5em
+ line-height: 1em
+ font-weight: bold
+
+.widget
+ color: color-grey
+ ul, ol
+ li
+ display: inline-block
+ zoom:1
+ *display:inline
+ padding-right: .75em
+/* Having problems getting balanced white space between items
+ li:before
+ content: " | "
+ li:first-child:before
+ content: none
+ */
diff --git a/Blog/themes/landscape/source/css/_partial/sidebar.styl b/Blog/themes/landscape/source/css/_partial/sidebar.styl
new file mode 100644
index 0000000..e43d66a
--- /dev/null
+++ b/Blog/themes/landscape/source/css/_partial/sidebar.styl
@@ -0,0 +1,35 @@
+if sidebar is bottom
+ @import "sidebar-bottom"
+else
+ @import "sidebar-aside"
+
+.widget
+ @extend $base-style
+ line-height: line-height
+ word-wrap: break-word
+ font-size: 0.9em
+ ul, ol
+ list-style: none
+ margin: 0
+ ul, ol
+ margin: 0 20px
+ ul
+ list-style: disc
+ ol
+ list-style: decimal
+
+.category-list-count
+.tag-list-count
+.archive-list-count
+ padding-left: 5px
+ color: color-grey
+ font-size: 0.85em
+ &:before
+ content: "("
+ &:after
+ content: ")"
+
+.tagcloud
+ a
+ margin-right: 5px
+ display: inline-block
diff --git a/Blog/themes/landscape/source/css/_util/grid.styl b/Blog/themes/landscape/source/css/_util/grid.styl
new file mode 100644
index 0000000..2a14dd2
--- /dev/null
+++ b/Blog/themes/landscape/source/css/_util/grid.styl
@@ -0,0 +1,38 @@
+/////////////////
+// Semantic.gs // for Stylus: http://learnboost.github.com/stylus/
+/////////////////
+
+// Utility function — you should never need to modify this
+// _gridsystem-width = (column-width + gutter-width) * columns
+gridsystem-width(_columns = columns)
+ (column-width + gutter-width) * _columns
+
+// Set @total-width to 100% for a fluid layout
+// total-width = gridsystem-width(columns)
+total-width = 100%
+
+//////////
+// GRID //
+//////////
+
+body
+ clearfix()
+ width: 100%
+
+row(_columns = columns)
+ clearfix()
+ display: block
+ width: total-width * ((gutter-width + gridsystem-width(_columns)) / gridsystem-width(_columns))
+ margin: 0 total-width * (((gutter-width * .5) / gridsystem-width(_columns)) * -1)
+
+column(x, _columns = columns)
+ display: inline
+ float: left
+ width: total-width * ((((gutter-width + column-width) * x) - gutter-width) / gridsystem-width(_columns))
+ margin: 0 total-width * ((gutter-width * .5) / gridsystem-width(_columns))
+
+push(offset = 1)
+ margin-left: total-width * (((gutter-width + column-width) * offset) / gridsystem-width(columns))
+
+pull(offset = 1)
+ margin-right: total-width * (((gutter-width + column-width) * offset) / gridsystem-width(columns))
\ No newline at end of file
diff --git a/Blog/themes/landscape/source/css/_util/mixin.styl b/Blog/themes/landscape/source/css/_util/mixin.styl
new file mode 100644
index 0000000..b56f037
--- /dev/null
+++ b/Blog/themes/landscape/source/css/_util/mixin.styl
@@ -0,0 +1,31 @@
+// http://www.zeldman.com/2012/03/01/replacing-the-9999px-hack-new-image-replacement/
+hide-text()
+ text-indent: 100%
+ white-space: nowrap
+ overflow: hidden
+
+// http://codepen.io/shshaw/full/gEiDt
+absolute-center(width, height = width)
+ // margin: auto
+ // position: absolute
+ // top: 50%
+ // top: 0
+ // left: 0
+ // bottom: 0
+ // right: 0
+ // width: width
+ // height: height
+ // overflow: auto
+ width: width
+ height: height
+ position: absolute
+ top: 50%
+ left: 50%
+ margin-top: width * -0.5
+ margin-left: height * -0.5
+
+avoid-column-break()
+ vendor("column-break-inside", avoid, only: webkit)
+ page-break-inside: avoid // for firefox
+ overflow: hidden // fix for firefox
+ break-inside: avoid-column
diff --git a/Blog/themes/landscape/source/css/_variables.styl b/Blog/themes/landscape/source/css/_variables.styl
new file mode 100644
index 0000000..4562911
--- /dev/null
+++ b/Blog/themes/landscape/source/css/_variables.styl
@@ -0,0 +1,63 @@
+// Config
+support-for-ie = false
+vendor-prefixes = webkit moz ms official
+
+// Colors
+color-default = #555
+color-grey = #999
+color-border = #ddd
+color-link = #258fb8
+color-background = #eee
+color-sidebar-text = #777
+color-widget-background = #ddd
+color-widget-border = #ccc
+color-footer-background = #262a30
+color-mobile-nav-background = #191919
+color-twitter = #00aced
+color-facebook = #3b5998
+color-pinterest = #cb2027
+color-google = #dd4b39
+
+// Fonts
+font-sans = -apple-system, BlinkMacSystemFont,
+ "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell",
+ "Fira Sans", "Droid Sans", "Helvetica Neue",
+ sans-serif
+font-serif = Georgia, "Times New Roman", serif
+font-mono = "Source Code Pro", Consolas, Monaco, Menlo, Consolas, monospace
+font-icon = FontAwesome
+font-icon-path = "fonts/fontawesome-webfont"
+font-icon-version = "4.0.3"
+font-size = 14px
+line-height = 1.6em
+line-height-title = 1.1em
+
+// Header
+logo-size = 40px
+subtitle-size = 16px
+banner-height = 300px
+banner-url = "images/banner.jpg"
+
+sidebar = hexo-config("sidebar")
+
+// Layout
+block-margin = 50px
+article-padding = 20px
+mobile-nav-width = 280px
+main-column = 9
+sidebar-column = 3
+
+if sidebar and sidebar isnt bottom
+ _sidebar-column = sidebar-column
+else
+ _sidebar-column = 0
+
+// Grids
+column-width = 80px
+gutter-width = 20px
+columns = main-column + _sidebar-column
+
+// Media queries
+mq-mobile = "screen and (max-width: 479px)"
+mq-tablet = "screen and (min-width: 480px) and (max-width: 767px)"
+mq-normal = "screen and (min-width: 768px)"
\ No newline at end of file
diff --git a/Blog/themes/landscape/source/css/fonts/FontAwesome.otf b/Blog/themes/landscape/source/css/fonts/FontAwesome.otf
new file mode 100644
index 0000000000000000000000000000000000000000..8b0f54e47e1d356dcf1496942a50e228e0f1ee14
GIT binary patch
literal 62856
zcmcfp2Y3_5)&LBzEbU6(wGF`%u_do$I-wUs=poc3^xzP>t859|l91%ydy%{4ZewH9
zLNU#OK%5)jlp7M#adH#VlN(Y