├── .gitignore
├── blog
├── contents
│ ├── archive.json
│ ├── feed.json
│ ├── authors
│ │ ├── steve.json
│ │ └── ashley.json
│ ├── articles
│ │ ├── hello-world
│ │ │ └── index.md
│ │ ├── twii1
│ │ │ └── index.md
│ │ ├── twii3
│ │ │ └── index.md
│ │ └── twii2
│ │ │ └── index.md
│ ├── about.md
│ └── css
│ │ └── main.css
├── readme.md
├── package.json
├── templates
│ ├── author.jade
│ ├── article.jade
│ ├── index.jade
│ ├── feed.jade
│ ├── archive.jade
│ └── layout.jade
├── config.json
├── plugins
│ └── paginator.coffee
└── css
│ └── main.css
├── public
├── images
│ ├── logo.png
│ └── rhizome.jpg
├── vendor
│ └── Skeleton-2.0.4
│ │ ├── images
│ │ └── favicon.png
│ │ ├── index.html
│ │ └── css
│ │ ├── normalize.css
│ │ └── skeleton.css
└── styles
│ └── custom.css
├── .travis.yml
├── deploy.sh
├── package.json
├── README.md
├── resources.html
├── index.html
└── code-of-conduct.html
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | blog/**/*.html
3 | blog/*.xml
4 |
--------------------------------------------------------------------------------
/blog/contents/archive.json:
--------------------------------------------------------------------------------
1 | {
2 | "template": "archive.jade"
3 | }
4 |
--------------------------------------------------------------------------------
/blog/contents/feed.json:
--------------------------------------------------------------------------------
1 | {
2 | "template": "feed.jade",
3 | "filename": "feed.xml"
4 | }
5 |
--------------------------------------------------------------------------------
/public/images/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/intermezzOS/intermezzOS.github.io/HEAD/public/images/logo.png
--------------------------------------------------------------------------------
/blog/contents/authors/steve.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Steve Klabnik",
3 | "email": "steve@steveklabnik.com"
4 | }
5 |
--------------------------------------------------------------------------------
/blog/readme.md:
--------------------------------------------------------------------------------
1 |
2 | # Blog
3 |
4 | The default [wintersmith](https://github.com/jnordberg/wintersmith) template
5 |
--------------------------------------------------------------------------------
/blog/contents/authors/ashley.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Ashley Williams",
3 | "email": "ashley666ashley@gmail.com"
4 | }
5 |
--------------------------------------------------------------------------------
/public/images/rhizome.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/intermezzOS/intermezzOS.github.io/HEAD/public/images/rhizome.jpg
--------------------------------------------------------------------------------
/public/vendor/Skeleton-2.0.4/images/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/intermezzOS/intermezzOS.github.io/HEAD/public/vendor/Skeleton-2.0.4/images/favicon.png
--------------------------------------------------------------------------------
/blog/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "dependencies": {
3 | "moment": "2.3.x",
4 | "underscore": "1.4.x",
5 | "typogr": "0.5.x"
6 | },
7 | "private": "true"
8 | }
9 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: node_js
2 | script:
3 | - npm install
4 | - npm run build:blog
5 | after_success:
6 | - test $TRAVIS_PULL_REQUEST == "false" && test $TRAVIS_BRANCH == "dev" && bash deploy.sh
7 |
--------------------------------------------------------------------------------
/blog/templates/author.jade:
--------------------------------------------------------------------------------
1 |
2 | mixin author(authorName)
3 | - var author = contents.authors[authorName + '.json'];
4 | span.author
5 | if author
6 | a(href='mailto:' + author.metadata.email)= author.metadata.name
7 | else
8 | = authorName
9 |
--------------------------------------------------------------------------------
/blog/contents/articles/hello-world/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Hello, world!
3 | author: steve
4 | date: 2016-04-29
5 | template: article.jade
6 | ---
7 |
8 | We now have a basic blog going! Keep your eyes peeled for news about intermezzOS’s development.
9 |
10 | Thanks to [@ashleygwilliams](https://github.com/ashleygwilliams) for
11 | [implementing the
12 | blog](https://github.com/intermezzOS/intermezzOS.github.io/pull/23)!
13 |
--------------------------------------------------------------------------------
/blog/contents/about.md:
--------------------------------------------------------------------------------
1 | ---
2 | view: none
3 | ---
4 |
5 |
16 |
--------------------------------------------------------------------------------
/blog/templates/article.jade:
--------------------------------------------------------------------------------
1 |
2 | extends layout
3 |
4 | block append vars
5 | - bodyclass = 'article-detail'
6 |
7 | block prepend title
8 | | #{ page.title + ' - '}
9 |
10 | block header
11 | include author
12 | h1= page.title
13 | p.author
14 | | #{ 'Written by ' }
15 | mixin author(page.metadata.author)
16 |
17 | block content
18 | article.article
19 | section.content!= typogr(page.html).typogrify()
20 |
21 | block prepend footer
22 | div.nav
23 | a(href=contents.index.url) « Full blog
24 |
--------------------------------------------------------------------------------
/deploy.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | set -o errexit -o nounset
4 |
5 | rev=$(git rev-parse --short HEAD)
6 |
7 | git init
8 | git config user.name "Steve Klabnik"
9 | git config user.email "steve@steveklabnik.com"
10 |
11 | git remote add upstream "https://$GH_TOKEN@github.com/intermezzOS/intermezzOS.github.io"
12 | git fetch upstream
13 | git reset upstream/master
14 |
15 | touch .
16 |
17 | echo "node_modules" > .gitignore
18 |
19 | git add -A .
20 | git commit -m "rebuild pages at ${rev}"
21 | git push -q upstream HEAD:master
22 |
--------------------------------------------------------------------------------
/blog/config.json:
--------------------------------------------------------------------------------
1 | {
2 | "locals": {
3 | "url": "/blog",
4 | "name": "The intermezzOS Blog",
5 | "owner": "Steve"
6 | },
7 | "plugins": [
8 | "./plugins/paginator.coffee"
9 | ],
10 | "require": {
11 | "moment": "moment",
12 | "_": "underscore",
13 | "typogr": "typogr"
14 | },
15 | "jade": {
16 | "pretty": true
17 | },
18 | "markdown": {
19 | "smartLists": true,
20 | "smartypants": true
21 | },
22 | "paginator": {
23 | "perPage": 3
24 | },
25 | "output": "./",
26 | "baseUrl": "/blog"
27 | }
28 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "intermezzOS.github.io",
3 | "version": "1.0.0",
4 | "main": "index.js",
5 | "scripts": {
6 | "start": "npm run build:blog && live-server ./",
7 | "install": "cd blog && npm install",
8 | "build:blog": "cd blog && wintersmith build"
9 | },
10 | "repository": {
11 | "type": "git",
12 | "url": "https://github.com/intermezzOS/intermezzOS.github.io.git"
13 | },
14 | "keywords": [],
15 | "author": "ag_dubs",
16 | "license": "ISC",
17 | "bugs": {
18 | "url": "https://github.com/intermezzOS/intermezzOS.github.io/issues"
19 | },
20 | "homepage": "https://github.com/intermezzOS/intermezzOS.github.io",
21 | "devDependencies": {
22 | "live-server": "^0.9.0",
23 | "wintersmith": "^2.3.1"
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/blog/templates/index.jade:
--------------------------------------------------------------------------------
1 |
2 | extends layout
3 |
4 | block content
5 | include author
6 | each article in articles
7 | article.article.intro
8 | header
9 | p.date
10 | span= moment.utc(article.date).format('DD MM YYYY')
11 | h2
12 | a(href=article.url)= article.title
13 | section.content
14 | if article.intro.length > 0
15 | != typogr(article.intro).typogrify()
16 | if article.hasMore
17 | p.more
18 | a(href=article.url) more
19 |
20 | block prepend footer
21 | div.nav
22 | if prevPage
23 | a(href=prevPage.url) « Newer
24 | else
25 | a(href='/blog/archive.html') « Archives
26 | if nextPage
27 | a(href=nextPage.url) Next page »
28 |
--------------------------------------------------------------------------------
/blog/templates/feed.jade:
--------------------------------------------------------------------------------
1 | doctype xml
2 | rss(version='2.0',
3 | xmlns:content='http://purl.org/rss/1.0/modules/content/',
4 | xmlns:wfw='http://wellformedweb.org/CommentAPI/',
5 | xmlns:dc='http://purl.org/dc/elements/1.1/'
6 | xmlns:atom='http://www.w3.org/2005/Atom')
7 | channel
8 | - var articles = env.helpers.getArticles(contents);
9 | title= locals.name
10 | atom:link(href=locals.url + '/feed.xml', rel='self', type='application/rss+xml')
11 | link= locals.url
12 | description= locals.description
13 | pubDate= articles[0].rfc822date
14 | generator Wintersmith - https://github.com/jnordberg/wintersmith
15 | language en
16 | each article in articles
17 | - var permalink = locals.url + article.url;
18 | item
19 | title= article.title
20 | link= permalink
21 | pubDate= article.rfc822date
22 | guid(isPermaLink='true')= permalink
23 | author= article.author
24 | //- passing locals.url resolves all relative urls to absolute
25 | description= article.getHtml(locals.url)
26 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # intermezzos.github.io
2 | > The website for intermezzOS | https://intermezzos.github.io
3 |
4 | `intermezzos.github.io` is a static site, using [Skeleton CSS],
5 | served by [GitHub Pages]. It uses [Wintersmith], a [`Node.js`] templating
6 | framework, for the blog.
7 |
8 | ## Development
9 |
10 | `intermezzos.github.io` is a static site, so you can use whatever
11 | development environment you prefer to edit the static html files.
12 |
13 | A `package.json` has been included for collaborators that would like
14 | to use [`Node.JS`] and [`npm`] for development.
15 |
16 | To install development dependencies, run:
17 |
18 | ```
19 | $ npm install
20 | ```
21 |
22 | To start a server with auto-reload and file-watching (using [`live-server`]), run:
23 |
24 | ```
25 | $ npm start
26 | ```
27 |
28 | ## Blog
29 |
30 | To contribute to the blog, you must have a [`Node.JS`] environment as
31 | [Wintersmith] depends on it.
32 |
33 | To build the blog:
34 | ```
35 | $ npm run build:blog
36 | ```
37 |
38 | [Code of Conduct]
39 |
40 |
41 | [Hexo]: https://hexo.io/
42 | [Skeleton CSS]: http://getskeleton.com/
43 | [GitHub Pages]: https://pages.github.com/
44 | [`Node.js`]: https://nodejs.org/en/
45 | [`npm`]: https://www.npmjs.com/
46 | [`live-server`]: https://github.com/tapio/live-server
47 | [Code of Conduct]: http://intermezzos.github.io/code-of-conduct.html
48 | [Wintersmith]: http://wintersmith.io/
49 |
--------------------------------------------------------------------------------
/public/styles/custom.css:
--------------------------------------------------------------------------------
1 | @import url(https://fonts.googleapis.com/css?family=Open+Sans:400,800,700,300,300italic,600,400italic,600italic,700italic,800italic);
2 |
3 | html, body {
4 | font-family: "Open Sans", sans-serif;
5 | color: #333;
6 | }
7 |
8 | header {
9 | text-align: center;
10 | }
11 |
12 | header h1 {
13 | margin: 0;
14 | }
15 |
16 | header {
17 | margin-top: 40px;
18 | margin-bottom: 40px;
19 | }
20 |
21 | nav {
22 | margin-top: 20px;
23 | margin-bottom: 20px;
24 | }
25 |
26 | nav img {
27 | width: 48px;
28 | }
29 |
30 | nav h4 {
31 | display: inline;
32 | position: relative;
33 | bottom: 12px;
34 | padding-left: 10px;
35 | }
36 |
37 | nav .button:last-child {
38 | margin-right: 20px;
39 | }
40 |
41 | img {
42 | max-width: 497px;
43 | width: 100%;
44 | }
45 |
46 | a {
47 | color: #400AA7;
48 | }
49 |
50 | a:hover {
51 | color: #0c0221;
52 | text-decoration: underline;
53 | }
54 |
55 | a {
56 | text-decoration: none;
57 | }
58 |
59 | section {
60 | margin-top: 20px;
61 | }
62 |
63 | .subtitle {
64 | color: #949494;
65 | }
66 |
67 | .center {
68 | text-align: center;
69 | }
70 |
71 | .button.button-primary {
72 | background: #400AA7;
73 | border: #400AA7;
74 | }
75 |
76 | .button.button-primary:hover {
77 | background: #260664;
78 | border: #260664;
79 | }
80 |
81 | .footer {
82 | padding: 20px 0;
83 | }
84 |
85 | .footer .subtitle {
86 | color: #767676;
87 | }
88 |
--------------------------------------------------------------------------------
/resources.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
12 |
13 | Chat on Discord
14 | Blog
15 |
16 |
17 |
18 | intermezzOS , (a little OS)
19 |
20 |
21 |
intermezzOS is a teaching operating system, specifically focused on introducing systems programming concepts to experienced developers from other areas of programming.
22 |
23 |
27 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/blog/templates/layout.jade:
--------------------------------------------------------------------------------
1 | doctype html
2 | block vars
3 | - var bodyclass = null;
4 | html(lang='en')
5 | head
6 | block head
7 | meta(charset='utf-8')
8 | meta(http-equiv='X-UA-Compatible', content='IE=edge,chrome=1')
9 | meta(name='viewport', content='width=device-width')
10 | title
11 | block title
12 | = locals.name
13 | link(rel='alternate', href=locals.url+'/feed.xml', type='application/rss+xml', title=locals.description)
14 | link(rel="stylesheet", href="/../../public/vendor/Skeleton-2.0.4/css/normalize.css")
15 | link(rel="stylesheet", href="/../../public/vendor/Skeleton-2.0.4/css/skeleton.css")
16 | link(rel='stylesheet', href=contents.css['main.css'].url)
17 | link(rel='stylesheet', href="/../../public/styles/custom.css")
18 | body(class=bodyclass)
19 | div.container
20 | nav.u-cf.u-full-width
21 | div.u-pull-left
22 | a(href="/")
23 | img(src="/public/images/logo.png", alt="logo")
24 | h4(class="title") intermezz
25 | strong OS
26 | span(class="subtitle") (a little OS)
27 | a.u-pull-right.button(href="https://discord.gg/BkKMQh7") Chat on Discord
28 | header.header
29 | div.content-wrap
30 | block header
31 | div.logo
32 | h1
33 | a(href=locals.url)= locals.name
34 | p.description= locals.description
35 | div#content
36 | div.content-wrap
37 | block content
38 | h2 Welcome to zombocom!
39 | footer
40 | div.content-wrap
41 | block footer
42 | section.about
43 | !=contents['about.md'].html
44 | section.copy
45 | p © #{ new Date().getFullYear() } #{ locals.owner } — powered by
46 | a(href='https://github.com/jnordberg/wintersmith') Wintersmith
47 | //- please leave the "powered by" if you use the design
48 |
--------------------------------------------------------------------------------
/blog/contents/articles/twii1/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: This week in intermezzOS 1
3 | author: steve
4 | date: 2016-04-30
5 | template: article.jade
6 | ---
7 |
8 | Hello and welcome to the first issue of This Week in intermezzOS! intermezzOS
9 | is a learning operating system with a companion book, written in Rust for the
10 | `x86_64` platform. This is a weekly(ish) summary of its progress and community.
11 | For other news about the project, you can [follow us on Twitter:
12 | @intermezzOSrs](https://twitter.com/intermezzosrs).
13 |
14 | This week’s edition was edited by: steveklabnik.
15 |
16 | ## Updates to the book
17 |
18 | Repository for the book: [https://github.com/intermezzOS/book](https://github.com/intermezzOS/book)
19 |
20 | Today, the latest chapter of the book was merged: the start of [Chapter 4]:
21 | Transitioning to Long Mode. We’re almost done with assembly code and almost on
22 | to Rust, finally!
23 |
24 | [Chapter 4]: http://intermezzos.github.io/book/transitioning-to-long-mode.html
25 |
26 | ## Updates to the kernel
27 |
28 | Repository for the kernel: [https://github.com/intermezzOS/kernel](https://github.com/intermezzOS/kernel)
29 |
30 | The kernel hasn’t seen a ton of work as of late, since it’s farther ahead than
31 | the book, but there’s been a few small things:
32 |
33 | * [Users no longer need to build their own
34 | libcore.](https://github.com/intermezzOS/kernel/commit/b294480f404b1fccbf745ea53affca9b48b9e482)
35 | This is a pretty big usability improvement to the build system
36 | * [A new make target,
37 | distclean.](https://github.com/intermezzOS/kernel/pull/27). Building on top
38 | of the new libcore work, we don’t want to have to re-build it every single
39 | time. So where previously, `clean` cleaned everything, now `clean` will only
40 | clean the kernel code, and `distclean` will clean everything as though you
41 | freshly downloaded the source.
42 | * [`kmain()` was marked as divergent](https://github.com/intermezzOS/kernel/pull/28).
43 | I had shared an anecdote about a bug; the bug happened because `kmain()` could
44 | return. It shouldn’t be able to, though, so this is more correct.
45 |
46 | ## RFCs
47 |
48 | Repository for RFCs: [https://github.com/intermezzOS/rfcs](https://github.com/intermezzOS/rfcs)
49 |
50 | We haven’t had any new RFCs lately.
51 |
52 | ## Other news
53 |
54 | UPenn is using Rust for a class of theirs: CIS 198. Steve dropped by and did a
55 | guest lecture on intermezzOS, which you can [watch on
56 | YouTube](https://www.youtube.com/watch?v=iTSx-8qK4Hw&feature=youtu.be).
57 |
--------------------------------------------------------------------------------
/blog/contents/articles/twii3/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: These weeks in intermezzOS 3
3 | author: steve
4 | date: 2016-09-25
5 | template: article.jade
6 | ---
7 |
8 | It's been... quite a long time since TWII2. A lot of stuff has happened! There
9 | were also some long periods of stuff not happening as well. We'll try to be a
10 | bit more frequent in the future! Read on for more!
11 |
12 | For other news about the project, you can [follow us on Twitter:
13 | @intermezzOSrs](https://twitter.com/intermezzosrs).
14 |
15 | This week’s edition was edited by: steve.
16 |
17 | ## Updates to the book
18 |
19 | Repository for the book: [https://github.com/intermezzOS/book](https://github.com/intermezzOS/book)
20 |
21 | - Many typo and clarification fixes by `@chrisccerami`, `@thommay`, `@kraai`,
22 | `@Ketsuban`, `@Seeker14491`, `@the-all`, and `@roneesh`.
23 | - [Better instructions for Arch Linux](https://github.com/intermezzOS/book/pull/139)
24 | - [Instructions for Fedora](https://github.com/intermezzOS/book/pull/142)
25 | - [Big improvements to the OSX install scripts for cross-compiling tools](https://github.com/intermezzOS/book/pull/127)
26 | - [Some reminder text for those on OSX, who have cross-compiled](https://github.com/intermezzOS/book/pull/144)
27 | - [We now use xargo instead of a manually cross-compiled libcore](https://github.com/intermezzOS/book/pull/146)
28 |
29 | The book hasn't had new text lately because we've been working on improving the
30 | code for the next sections. The VGA chapter should happen soon!
31 |
32 | ## Updates to the kernel
33 |
34 | Repository for the kernel: [https://github.com/intermezzOS/kernel](https://github.com/intermezzOS/kernel)
35 |
36 | - [Some experimental refactorings, and a PIC crate](https://github.com/intermezzOS/kernel/pull/40)
37 | - [Improvements to text mode!](https://github.com/intermezzOS/kernel/pull/39)
38 | - [A keymap for keys, including shift](https://github.com/intermezzOS/kernel/pull/47)
39 | - [A complete re-write of the way interrupts are handled](https://github.com/intermezzOS/kernel/pull/31)
40 | - [Improvements on that, using `naked fn`](https://github.com/intermezzOS/kernel/pull/49)
41 | - [The VGA driver has been completely re-written in a TDD style](https://github.com/intermezzOS/kernel/pull/60)
42 | - [xargo is now used instead of a manually cross-compiled libcore](https://github.com/intermezzOS/kernel/pull/62)
43 |
44 |
45 | ## RFCs
46 |
47 | Repository for RFCs: [https://github.com/intermezzOS/rfcs](https://github.com/intermezzOS/rfcs)
48 |
49 | We haven’t had any new RFCs lately. As we get more into the design of the
50 | kernel, this will be a big deal!
51 |
52 | ## Other news
53 |
54 | `@ashleygwilliams` gave a talk about intermezzOS at
55 | [RustFest](http://www.rustfest.eu/)! Slides are
56 | [here](https://github.com/intermezzOS/rustfest2016)
57 |
58 | In preparation for the workshop at [Rust Belt
59 | Rust](http://www.rust-belt-rust.com/), `@steveklabnik` and `@ashleygwilliams`
60 | have re-done the VGA code, with tests. It's linked above in the kernel section.
61 | However, this will become a big exercise during the workshop, and so it has
62 | [its own repository](https://github.com/intermezzOS/vga) as well.
63 |
64 | Now that we don't need our own fork of libcore,
65 | [https://github.com/intermezzos/libcore](https://github.com/intermezzos/libcore)
66 | is no longer needed, and will be deleted soon.
67 |
--------------------------------------------------------------------------------
/blog/plugins/paginator.coffee:
--------------------------------------------------------------------------------
1 |
2 | module.exports = (env, callback) ->
3 | ### Paginator plugin. Defaults can be overridden in config.json
4 | e.g. "paginator": {"perPage": 10} ###
5 |
6 | defaults =
7 | template: 'index.jade' # template that renders pages
8 | articles: 'articles' # directory containing contents to paginate
9 | first: 'index.html' # filename/url for first page
10 | filename: 'page/%d/index.html' # filename for rest of pages
11 | perPage: 2 # number of articles per page
12 |
13 | # assign defaults any option not set in the config file
14 | options = env.config.paginator or {}
15 | for key, value of defaults
16 | options[key] ?= defaults[key]
17 |
18 | getArticles = (contents) ->
19 | # helper that returns a list of articles found in *contents*
20 | # note that each article is assumed to have its own directory in the articles directory
21 | articles = contents[options.articles]._.directories.map (item) -> item.index
22 | # skip articles that does not have a template associated
23 | articles = articles.filter (item) -> item.template isnt 'none'
24 | # sort article by date
25 | articles.sort (a, b) -> b.date - a.date
26 | return articles
27 |
28 | class PaginatorPage extends env.plugins.Page
29 | ### A page has a number and a list of articles ###
30 |
31 | constructor: (@pageNum, @articles) ->
32 |
33 | getFilename: ->
34 | if @pageNum is 1
35 | options.first
36 | else
37 | options.filename.replace '%d', @pageNum
38 |
39 | getView: -> (env, locals, contents, templates, callback) ->
40 | # simple view to pass articles and pagenum to the paginator template
41 | # note that this function returns a funciton
42 |
43 | # get the pagination template
44 | template = templates[options.template]
45 | if not template?
46 | return callback new Error "unknown paginator template '#{ options.template }'"
47 |
48 | # setup the template context
49 | ctx = {@articles, @pageNum, @prevPage, @nextPage}
50 |
51 | # extend the template context with the enviroment locals
52 | env.utils.extend ctx, locals
53 |
54 | # finally render the template
55 | template.render ctx, callback
56 |
57 | # register a generator, 'paginator' here is the content group generated content will belong to
58 | # i.e. contents._.paginator
59 | env.registerGenerator 'paginator', (contents, callback) ->
60 |
61 | # find all articles
62 | articles = getArticles contents
63 |
64 | # populate pages
65 | numPages = Math.ceil articles.length / options.perPage
66 | pages = []
67 | for i in [0...numPages]
68 | pageArticles = articles.slice i * options.perPage, (i + 1) * options.perPage
69 | pages.push new PaginatorPage i + 1, pageArticles
70 |
71 | # add references to prev/next to each page
72 | for page, i in pages
73 | page.prevPage = pages[i - 1]
74 | page.nextPage = pages[i + 1]
75 |
76 | # create the object that will be merged with the content tree (contents)
77 | # do _not_ modify the tree directly inside a generator, consider it read-only
78 | rv = {pages:{}}
79 | for page in pages
80 | rv.pages["#{ page.pageNum }.page"] = page # file extension is arbitrary
81 | rv['index.page'] = pages[0] # alias for first page
82 | rv['last.page'] = pages[(numPages-1)] # alias for last page
83 |
84 | # callback with the generated contents
85 | callback null, rv
86 |
87 | # add the article helper to the environment so we can use it later
88 | env.helpers.getArticles = getArticles
89 |
90 | # tell the plugin manager we are done
91 | callback()
92 |
--------------------------------------------------------------------------------
/code-of-conduct.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
intermezzOS: a little OS
9 |
10 |
11 |
12 |
13 |
19 | Chat on Discord
20 | Blog
21 |
22 |
23 | Contributor Code of Conduct
24 |
25 |
As contributors and maintainers of this project, and in the interest of fostering an open and welcoming community, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities.
26 |
We are committed to making participation in this project a harassment-free experience for everyone, regardless of level of experience, gender, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, ethnicity, age, religion, or nationality.
27 |
Examples of unacceptable behavior by participants include:
28 |
29 | The use of sexualized language or imagery
30 | Personal attacks
31 | Trolling or insulting/derogatory comments
32 | Public or private harassment
33 | Publishing other's private information, such as physical or electronic addresses, without explicit permission
34 | Other unethical or unprofessional conduct
35 |
36 |
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
37 |
By adopting this Code of Conduct, project maintainers commit themselves to fairly and consistently applying these principles to every aspect of managing this project. Project maintainers who do not follow or enforce the Code of Conduct may be permanently removed from the project team.
38 |
This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community.
39 |
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting a project maintainer at steve@steveklabnik.com . All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. Maintainers are obligated to maintain confidentiality with regard to the reporter of an incident.
40 |
This Code of Conduct is adapted from the Contributor Covenant , version 1.3.0, available at http://contributor-covenant.org/version/1/3/0/
41 |
42 |
53 |
54 |
55 |
--------------------------------------------------------------------------------
/blog/contents/articles/twii2/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: This week in intermezzOS 2
3 | author: ashley
4 | date: 2016-05-31
5 | template: article.jade
6 | ---
7 |
8 | It's been a whole month since our last weekly(-ISH) update- and we've
9 | had a lot of great contributions and new contributors. Highlights include
10 | a new chapter, "Jumping into Long Mode", native support on Windows
11 | machines thanks to Bash on Ubuntu on Windows, and an awesome fix to a
12 | bug in the scrolling implementation. Read on for more!
13 |
14 | For other news about the project, you can [follow us on Twitter:
15 | @intermezzOSrs](https://twitter.com/intermezzosrs).
16 |
17 | This week’s edition was edited by: [ashleygwilliams].
18 |
19 | ## Updates to the book
20 |
21 | Repository for the book: [https://github.com/intermezzOS/book](https://github.com/intermezzOS/book)
22 |
23 | - Added a new section, "Paging", to a new chapter, "Jumping into Long Mode".
24 | Thanks to everyone for the great comments during the review of this large PR!
25 | ([#91], [steveklabnik])
26 | - Added a `git clone` step to the `README`. ([#92], [dleve123])
27 | - Improved the table formatting in the Paging section, and added a comment
28 | to a code sample. ([#93], [steveklabnik])
29 | - Added a section to `windows.md` that provided specific instructions to
30 | Windows 10 Insider Preview users who want to use Bash on Ubuntu on Windows.
31 | This allows them to natively run intermezzOS- no VM requried! ([#96],
32 | [DJSundog])
33 | - Updated Rust installation instructions to use `rustup`. ([#95], [DJSundog])
34 | - Fixed a typo in the Paging section. ([#97], [smaximov])
35 | - Corrected a mistake in the explanation of left-shift. ([#98], [dhardy])
36 | - Added a new section, "Setting Up a GDT", to the "Jumping into Long Mode"
37 | chapter. ([#94], [steveklabnik])
38 | - Fixed another typo in the Paging section. ([#102], [Razican])
39 | - Elaborated on and improved the introduction of the Paging section thanks to
40 | [LaylConway]'s feedback. ([#101], [rylev])
41 | - Fix a lingering mention of `multi-rust` to mention `rust up`. ([#107],
42 | fixes [#106], [moosingin3space])
43 | - Clarify that `mul` takes just one argument in the Paging section. ([#109],
44 | [Digipom])
45 | - Fix a typo in the "Running in QEMU" section. ([#111], [jdanford])
46 | - Fix a type in the "Hello World" section. ([#112], [jdanford])
47 |
48 | ## Updates to the kernel
49 |
50 | - Fixed a bug in the implementation of scrolling that incorrectly calculated
51 | the position index if it was the same size as the buffer. Also reduced the
52 | size of the buffer. ([#30], fixes [#3], [WilsonGiese])
53 |
54 | - UPCOMING: Large refactor of the interrupt table. ([`interrupt_refactor`] branch,
55 | [steveklabnik])
56 |
57 | ## RFCs
58 |
59 | Repository for RFCs: [https://github.com/intermezzOS/rfcs](https://github.com/intermezzOS/rfcs)
60 |
61 | We haven’t had any new RFCs lately.
62 |
63 | ## Other news
64 |
65 | - [steveklabnik] gave a talk about intermezzOS at [Boston Rust] last Wednesday, 25 May 2016
66 |
67 | [#91]: https://github.com/intermezzOS/book/pull/91
68 | [steveklabnik]: https://github.com/steveklabnik
69 | [#92]: https://github.com/intermezzOS/book/pull/92
70 | [dleve123]: https://github.com/dleve123
71 | [#93]: https://github.com/intermezzOS/book/pull/93
72 | [#96]: https://github.com/intermezzOS/book/pull/96
73 | [DJSundog]: https://github.com/DJSundog
74 | [#95]: https://github.com/intermezzOS/book/pull/95
75 | [#97]: https://github.com/intermezzOS/book/pull/97
76 | [smaximov]: https://github.com/smaximov
77 | [#98]: https://github.com/intermezzOS/book/pull/98
78 | [dhardy]: https://github.com/dhardy
79 | [#94]: https://github.com/intermezzOS/book/pull/94
80 | [#102]: https://github.com/intermezzOS/book/pull/102
81 | [Razican]: https://github.com/Razican
82 | [#101]: https://github.com/intermezzOS/book/pull/101
83 | [rylev]: https://github.com/rylev
84 | [#107]: https://github.com/intermezzOS/book/pull/107
85 | [moosingin3space]: https://github.com/moosingin3space
86 | [#106]: https://github.com/intermezzOS/book/issues/106
87 | [#109]: https://github.com/intermezzOS/book/pull/109
88 | [Digipom]: https://github.com/Digipom
89 | [#111]: https://github.com/intermezzOS/book/pull/111
90 | [jdanford]: https://github.com/jdanford
91 | [#112]: https://github.com/intermezzOS/book/pull/112
92 | [LaylConway]: https://github.com/LaylConway
93 | [#30]: https://github.com/intermezzOS/kernel/pull/30
94 | [WilsonGiese]: https://github.com/WilsonGiese
95 | [#3]: https://github.com/intermezzOS/kernel/issues/3
96 | [`interrupt_refactor`]: https://github.com/intermezzOS/kernel/tree/interrupt_refactor
97 | [ashleygwilliams]: https://github.com/ashleygwilliams
98 | [Boston Rust]: http://www.meetup.com/BostonRust/events/230419544/
99 |
--------------------------------------------------------------------------------
/blog/css/main.css:
--------------------------------------------------------------------------------
1 |
2 | h1, h2, h3, h4, h5, h6, p, body, a, img, ul, ol, blockquote, pre {
3 | margin: 0; padding: 0; border: 0;
4 | }
5 |
6 | body {
7 | font-size: 21px;
8 | line-height: 1.52;
9 | text-rendering: optimizeLegibility;
10 | }
11 |
12 | .content-wrap {
13 | width: 34em;
14 | margin: 0 auto;
15 | }
16 |
17 | a:hover {
18 | text-decoration: underline;
19 | }
20 |
21 | p {
22 | margin-bottom: 1.52em;
23 | }
24 |
25 | pre {
26 | font-size: 0.9em;
27 | overflow: auto;
28 | background: #fff;
29 | border: 1px dashed #d2d2d2;
30 | border-radius: 0.25em;
31 | margin-bottom: 1.8em;
32 | padding: 1em;
33 | }
34 |
35 | h1 {
36 | font-size: 2em;
37 | margin-bottom: 1em;
38 | }
39 |
40 | h2 {
41 | font-size: 1.2em;
42 | font-weight: 400;
43 | line-height: 1.43;
44 | margin-bottom: 1.35em;
45 | }
46 |
47 | h3 {
48 | font-style: italic;
49 | text-align: center;
50 | font-weight: 400;
51 | font-size: 1.4em;
52 | margin-top: 1.8em;
53 | margin-bottom: 0.8em;
54 | }
55 |
56 | ol, ul {
57 | margin: 0 1.4em 1.4em 4em;
58 | }
59 |
60 | li {
61 | margin-bottom: 0.5em;
62 | }
63 |
64 | blockquote {
65 | margin: 1.2em 3em;
66 | padding-left: 1em;
67 | font-style: italic;
68 | }
69 |
70 | hr {
71 | border: 0;
72 | border-top: 1px dashed #d2d2d2;
73 | height: 0;
74 | margin: 1.6em 0;
75 | }
76 |
77 | /* page header */
78 |
79 | .header {
80 | margin: 3em 0 5em;
81 | }
82 |
83 | .header h1 {
84 | font-size: 2.6em;
85 | text-align: center;
86 | font-weight: 700;
87 | margin: 0;
88 | }
89 |
90 | .header a, .header a:hover {
91 | text-decoration: none;
92 | }
93 |
94 | .header .author {
95 | font-family: 'Open Sans', sans-serif;
96 | font-variant: small-caps;
97 | text-transform: lowercase;
98 | text-rendering: auto;
99 | text-align: center;
100 | font-weight: 400;
101 | letter-spacing: 1px;
102 | }
103 |
104 | .header .description {
105 | font-size: 1.2em;
106 | font-style: italic;
107 | text-align: center;
108 | margin-top: -0.3em;
109 | }
110 |
111 | body.article-detail > header h1 {
112 | font-size: 2.5em;
113 | font-style: italic;
114 | font-weight: 400;
115 | margin-bottom: -0.2em;
116 | }
117 |
118 | body.article-detail > header {
119 | margin-bottom: 3em;
120 | }
121 |
122 | /* page footer */
123 |
124 | footer {
125 | margin: 3em 0;
126 | }
127 |
128 | footer .nav {
129 | text-align: center;
130 | margin-top: 5em;
131 | margin-bottom: 3.5em;
132 | }
133 |
134 | footer .nav a {
135 | padding: 0 0.5em;
136 | font-size: 1.2em;
137 | text-decoration: none;
138 | }
139 |
140 | footer .about {
141 | border-top: 1px dashed #d2d2d2;
142 | padding: 2.2em 3em;
143 | font-size: 0.7em;
144 | }
145 |
146 | footer .copy {
147 | text-align: center;
148 | font-size: 0.7em;
149 | font-style: italic;
150 | margin-top: 1em;
151 | }
152 |
153 | footer .copy, footer .copy a {
154 | color: #8e8e8e;
155 | }
156 |
157 | /* article */
158 |
159 | .article {
160 | margin: 3em 0 4em;
161 | }
162 |
163 | .article header {
164 | border-top: 1px dashed #d2d2d2;
165 | }
166 |
167 | .article header h2 {
168 | font-style: italic;
169 | text-align: center;
170 | font-weight: 400;
171 | margin: 0.8em 0;
172 | font-size: 1.4em;
173 | }
174 |
175 | .article header h2 a {
176 | text-decoration: none;
177 | }
178 |
179 | .article header .date {
180 | text-align: center;
181 | font-size: 0.8em;
182 | margin-top: -0.7em;
183 | }
184 |
185 | .article header .date span {
186 | background-color: #f8f8f8;
187 | padding: 0 0.7em;
188 | }
189 |
190 | .article.intro .content p {
191 | display: inline;
192 | }
193 |
194 | .article.intro .content .more {
195 | text-decoration: underline;
196 | font-weight: 700;
197 | padding-left: 0.3em;
198 | }
199 |
200 | .article .content img {
201 | display: block;
202 | width: 100%;
203 | }
204 |
205 | .more, .date {
206 | font-family: 'Open Sans', sans-serif;
207 | font-variant: small-caps;
208 | text-transform: lowercase;
209 | font-weight: 400;
210 | text-rendering: auto;
211 | letter-spacing: 1px;
212 | }
213 |
214 | /* archive */
215 |
216 | .archive {
217 | width: 32em;
218 | margin: 5em auto 6em;
219 | padding-left: 2em;
220 | }
221 |
222 | .archive h2 {
223 | font-size: 2em;
224 | margin: 0;
225 | margin-left: 6.1em;
226 | margin-bottom: 0.5em;
227 | font-style: italic;
228 | }
229 |
230 | .archive a, .archive span{
231 | display: block;
232 | float: left;
233 | margin-bottom: -1px;
234 | text-decoration: none;
235 | }
236 | .archive li:not(:last-child) {
237 | border-bottom: 1px solid #d2d2d2;
238 | margin-bottom: -1px;
239 | }
240 |
241 | .archive a.last, .archive span.last {
242 | border: 0;
243 | margin-bottom: 0;
244 | }
245 |
246 | .archive a {
247 | width: 21em;
248 | text-indent: 1em;
249 | white-space: nowrap;
250 | }
251 |
252 | .archive .year-label,
253 | .archive .month-label{
254 | width: 4em;
255 | font-family: 'Merriweather', serif;
256 | font-variant: small-caps;
257 | text-transform: lowercase;
258 | font-weight: 400;
259 | text-rendering: auto;
260 | letter-spacing: 1px;
261 | text-align: center;
262 | }
263 |
264 | .archive .month-label {
265 | width: 7em;
266 | }
267 |
268 | .archive ul {
269 | list-style: none;
270 | margin: 0;
271 | }
272 |
273 | .archive ul li {
274 | margin: 0;
275 | }
276 |
277 | /* code styling */
278 |
279 | code {
280 | font-family: 'Anonymous Pro', monospace;
281 | font-size: 0.85em;
282 | color: #000;
283 | }
284 |
285 | pre code {
286 | display: block;
287 | line-height: 1.1;
288 | }
289 |
290 | p code {
291 | padding: 0.1em 0.3em 0.2em;
292 | border-radius: 0.3em;
293 | position: relative;
294 | background: #fffff3;
295 |
296 | white-space: nowrap;
297 | }
298 |
299 | /* syntax hl stuff */
300 |
301 | code.lang-markdown {
302 | color: #424242;
303 | }
304 |
305 | code.lang-markdown .header,
306 | code.lang-markdown .strong {
307 | font-weight: bold;
308 | }
309 |
310 | code.lang-markdown .emphasis {
311 | font-style: italic;
312 | }
313 |
314 | code.lang-markdown .horizontal_rule,
315 | code.lang-markdown .link_label,
316 | code.lang-markdown .code,
317 | code.lang-markdown .header,
318 | code.lang-markdown .link_url {
319 | color: #555;
320 | }
321 |
322 | code.lang-markdown .blockquote,
323 | code.lang-markdown .bullet {
324 | color: #bbb;
325 | }
326 |
327 | /* Tomorrow Theme */
328 | /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */
329 | /* Original theme - https://github.com/chriskempson/tomorrow-theme */
330 | /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */
331 | .tomorrow-comment, pre .comment, pre .title {
332 | color: #8e908c;
333 | }
334 |
335 | .tomorrow-red, pre .variable, pre .attribute, pre .tag, pre .regexp, pre .ruby .constant, pre .xml .tag .title, pre .xml .pi, pre .xml .doctype, pre .html .doctype, pre .css .id, pre .css .class, pre .css .pseudo {
336 | color: #c82829;
337 | }
338 |
339 | .tomorrow-orange, pre .number, pre .preprocessor, pre .built_in, pre .literal, pre .params, pre .constant {
340 | color: #f5871f;
341 | }
342 |
343 | .tomorrow-yellow, pre .class, pre .ruby .class .title, pre .css .rules .attribute {
344 | color: #eab700;
345 | }
346 |
347 | .tomorrow-green, pre .string, pre .value, pre .inheritance, pre .header, pre .ruby .symbol, pre .xml .cdata {
348 | color: #718c00;
349 | }
350 |
351 | .tomorrow-aqua, pre .css .hexcolor {
352 | color: #3e999f;
353 | }
354 |
355 | .tomorrow-blue, pre .function, pre .python .decorator, pre .python .title, pre .ruby .function .title, pre .ruby .title .keyword, pre .perl .sub, pre .javascript .title, pre .coffeescript .title {
356 | color: #4271ae;
357 | }
358 |
359 | .tomorrow-purple, pre .keyword, pre .javascript .function {
360 | color: #8959a8;
361 | }
362 |
363 | /* media queries */
364 |
365 | @media (min-width: 1600px) {
366 | body { font-size: 26px; }
367 | }
368 |
369 | @media (max-width: 900px) {
370 | body { font-size: 18px; }
371 | }
372 |
373 | @media (max-width: 690px) {
374 | .content-wrap {
375 | width: auto;
376 | padding: 0 1em;
377 | }
378 | .header {
379 | margin: 1em 0;
380 | }
381 | .header h1 {
382 | font-size: 1.4em;
383 | margin-bottom: 0.6em;
384 | }
385 | .header .description {
386 | font-size: 1em;
387 | }
388 | .article {
389 | margin: 1em 0 2.5em;
390 | }
391 | .archive {
392 | width: 80%;
393 | margin: 0 auto;
394 | }
395 | .archive * {
396 | float: none !important;
397 | line-height: 1.6 !important;
398 | width: auto !important;
399 | height: auto !important;
400 | text-align: left !important;
401 | border: 0 !important;
402 | margin: 0 !important;
403 | }
404 | footer .nav {
405 | margin: 1em 0;
406 | }
407 | footer .about {
408 | padding: 0;
409 | font-size: 0.9em;
410 | padding-top: 1.6em;
411 | -webkit-column-count: 1;
412 | -moz-column-count: 1;
413 | -ms-column-count: 1;
414 | column-count: 1;
415 | }
416 | footer .about p {
417 | margin-bottom: 1em;
418 | }
419 | }
420 |
--------------------------------------------------------------------------------
/blog/contents/css/main.css:
--------------------------------------------------------------------------------
1 |
2 | h1, h2, h3, h4, h5, h6, p, body, a, img, ul, ol, blockquote, pre {
3 | margin: 0; padding: 0; border: 0;
4 | }
5 |
6 | body {
7 | font-size: 21px;
8 | line-height: 1.52;
9 | text-rendering: optimizeLegibility;
10 | }
11 |
12 | .content-wrap {
13 | width: 34em;
14 | margin: 0 auto;
15 | }
16 |
17 | a:hover {
18 | text-decoration: underline;
19 | }
20 |
21 | p {
22 | margin-bottom: 1.52em;
23 | }
24 |
25 | pre {
26 | font-size: 0.9em;
27 | overflow: auto;
28 | background: #fff;
29 | border: 1px dashed #d2d2d2;
30 | border-radius: 0.25em;
31 | margin-bottom: 1.8em;
32 | padding: 1em;
33 | }
34 |
35 | h1 {
36 | font-size: 2em;
37 | margin-bottom: 1em;
38 | }
39 |
40 | h2 {
41 | font-size: 1.2em;
42 | font-weight: 400;
43 | line-height: 1.43;
44 | margin-bottom: 1.35em;
45 | }
46 |
47 | h3 {
48 | font-style: italic;
49 | text-align: center;
50 | font-weight: 400;
51 | font-size: 1.4em;
52 | margin-top: 1.8em;
53 | margin-bottom: 0.8em;
54 | }
55 |
56 | ol, ul {
57 | margin: 0 1.4em 1.4em 4em;
58 | }
59 |
60 | li {
61 | margin-bottom: 0.5em;
62 | }
63 |
64 | blockquote {
65 | margin: 1.2em 3em;
66 | padding-left: 1em;
67 | font-style: italic;
68 | }
69 |
70 | hr {
71 | border: 0;
72 | border-top: 1px dashed #d2d2d2;
73 | height: 0;
74 | margin: 1.6em 0;
75 | }
76 |
77 | /* page header */
78 |
79 | .header {
80 | margin: 3em 0 5em;
81 | }
82 |
83 | .header h1 {
84 | font-size: 2.6em;
85 | text-align: center;
86 | font-weight: 700;
87 | margin: 0;
88 | }
89 |
90 | .header a, .header a:hover {
91 | text-decoration: none;
92 | }
93 |
94 | .header .author {
95 | font-family: 'Open Sans', sans-serif;
96 | font-variant: small-caps;
97 | text-transform: lowercase;
98 | text-rendering: auto;
99 | text-align: center;
100 | font-weight: 400;
101 | letter-spacing: 1px;
102 | }
103 |
104 | .header .description {
105 | font-size: 1.2em;
106 | font-style: italic;
107 | text-align: center;
108 | margin-top: -0.3em;
109 | }
110 |
111 | body.article-detail > header h1 {
112 | font-size: 2.5em;
113 | font-style: italic;
114 | font-weight: 400;
115 | margin-bottom: -0.2em;
116 | }
117 |
118 | body.article-detail > header {
119 | margin-bottom: 3em;
120 | }
121 |
122 | /* page footer */
123 |
124 | footer {
125 | margin: 3em 0;
126 | }
127 |
128 | footer .nav {
129 | text-align: center;
130 | margin-top: 5em;
131 | margin-bottom: 3.5em;
132 | }
133 |
134 | footer .nav a {
135 | padding: 0 0.5em;
136 | font-size: 1.2em;
137 | text-decoration: none;
138 | }
139 |
140 | footer .about {
141 | border-top: 1px dashed #d2d2d2;
142 | padding: 2.2em 3em;
143 | font-size: 0.7em;
144 | }
145 |
146 | footer .copy {
147 | text-align: center;
148 | font-size: 0.7em;
149 | font-style: italic;
150 | margin-top: 1em;
151 | }
152 |
153 | footer .copy, footer .copy a {
154 | color: #8e8e8e;
155 | }
156 |
157 | /* article */
158 |
159 | .article {
160 | margin: 3em 0 4em;
161 | }
162 |
163 | .article header {
164 | border-top: 1px dashed #d2d2d2;
165 | }
166 |
167 | .article header h2 {
168 | font-style: italic;
169 | text-align: center;
170 | font-weight: 400;
171 | margin: 0.8em 0;
172 | font-size: 1.4em;
173 | }
174 |
175 | .article header h2 a {
176 | text-decoration: none;
177 | }
178 |
179 | .article header .date {
180 | text-align: center;
181 | font-size: 0.8em;
182 | margin-top: -0.7em;
183 | }
184 |
185 | .article header .date span {
186 | background-color: #f8f8f8;
187 | padding: 0 0.7em;
188 | }
189 |
190 | .article.intro .content p {
191 | display: inline;
192 | }
193 |
194 | .article.intro .content .more {
195 | text-decoration: underline;
196 | font-weight: 700;
197 | padding-left: 0.3em;
198 | }
199 |
200 | .article .content img {
201 | display: block;
202 | width: 100%;
203 | }
204 |
205 | .more, .date {
206 | font-family: 'Open Sans', sans-serif;
207 | font-variant: small-caps;
208 | text-transform: lowercase;
209 | font-weight: 400;
210 | text-rendering: auto;
211 | letter-spacing: 1px;
212 | }
213 |
214 | /* archive */
215 |
216 | .archive {
217 | width: 32em;
218 | margin: 5em auto 6em;
219 | padding-left: 2em;
220 | }
221 |
222 | .archive h2 {
223 | font-size: 2em;
224 | margin: 0;
225 | margin-left: 6.1em;
226 | margin-bottom: 0.5em;
227 | font-style: italic;
228 | }
229 |
230 | .archive a, .archive span{
231 | display: block;
232 | float: left;
233 | margin-bottom: -1px;
234 | text-decoration: none;
235 | }
236 | .archive li:not(:last-child) {
237 | border-bottom: 1px solid #d2d2d2;
238 | margin-bottom: -1px;
239 | }
240 |
241 | .archive a.last, .archive span.last {
242 | border: 0;
243 | margin-bottom: 0;
244 | }
245 |
246 | .archive a {
247 | width: 21em;
248 | text-indent: 1em;
249 | white-space: nowrap;
250 | }
251 |
252 | .archive .year-label,
253 | .archive .month-label{
254 | width: 4em;
255 | font-family: 'Merriweather', serif;
256 | font-variant: small-caps;
257 | text-transform: lowercase;
258 | font-weight: 400;
259 | text-rendering: auto;
260 | letter-spacing: 1px;
261 | text-align: center;
262 | }
263 |
264 | .archive .month-label {
265 | width: 7em;
266 | }
267 |
268 | .archive ul {
269 | list-style: none;
270 | margin: 0;
271 | }
272 |
273 | .archive ul li {
274 | margin: 0;
275 | }
276 |
277 | /* code styling */
278 |
279 | code {
280 | font-family: 'Anonymous Pro', monospace;
281 | font-size: 0.85em;
282 | color: #000;
283 | }
284 |
285 | pre code {
286 | display: block;
287 | line-height: 1.1;
288 | }
289 |
290 | p code {
291 | padding: 0.1em 0.3em 0.2em;
292 | border-radius: 0.3em;
293 | position: relative;
294 | background: #fffff3;
295 |
296 | white-space: nowrap;
297 | }
298 |
299 | /* syntax hl stuff */
300 |
301 | code.lang-markdown {
302 | color: #424242;
303 | }
304 |
305 | code.lang-markdown .header,
306 | code.lang-markdown .strong {
307 | font-weight: bold;
308 | }
309 |
310 | code.lang-markdown .emphasis {
311 | font-style: italic;
312 | }
313 |
314 | code.lang-markdown .horizontal_rule,
315 | code.lang-markdown .link_label,
316 | code.lang-markdown .code,
317 | code.lang-markdown .header,
318 | code.lang-markdown .link_url {
319 | color: #555;
320 | }
321 |
322 | code.lang-markdown .blockquote,
323 | code.lang-markdown .bullet {
324 | color: #bbb;
325 | }
326 |
327 | /* Tomorrow Theme */
328 | /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */
329 | /* Original theme - https://github.com/chriskempson/tomorrow-theme */
330 | /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */
331 | .tomorrow-comment, pre .comment, pre .title {
332 | color: #8e908c;
333 | }
334 |
335 | .tomorrow-red, pre .variable, pre .attribute, pre .tag, pre .regexp, pre .ruby .constant, pre .xml .tag .title, pre .xml .pi, pre .xml .doctype, pre .html .doctype, pre .css .id, pre .css .class, pre .css .pseudo {
336 | color: #c82829;
337 | }
338 |
339 | .tomorrow-orange, pre .number, pre .preprocessor, pre .built_in, pre .literal, pre .params, pre .constant {
340 | color: #f5871f;
341 | }
342 |
343 | .tomorrow-yellow, pre .class, pre .ruby .class .title, pre .css .rules .attribute {
344 | color: #eab700;
345 | }
346 |
347 | .tomorrow-green, pre .string, pre .value, pre .inheritance, pre .header, pre .ruby .symbol, pre .xml .cdata {
348 | color: #718c00;
349 | }
350 |
351 | .tomorrow-aqua, pre .css .hexcolor {
352 | color: #3e999f;
353 | }
354 |
355 | .tomorrow-blue, pre .function, pre .python .decorator, pre .python .title, pre .ruby .function .title, pre .ruby .title .keyword, pre .perl .sub, pre .javascript .title, pre .coffeescript .title {
356 | color: #4271ae;
357 | }
358 |
359 | .tomorrow-purple, pre .keyword, pre .javascript .function {
360 | color: #8959a8;
361 | }
362 |
363 | /* media queries */
364 |
365 | @media (min-width: 1600px) {
366 | body { font-size: 26px; }
367 | }
368 |
369 | @media (max-width: 900px) {
370 | body { font-size: 18px; }
371 | }
372 |
373 | @media (max-width: 690px) {
374 | .content-wrap {
375 | width: auto;
376 | padding: 0 1em;
377 | }
378 | .header {
379 | margin: 1em 0;
380 | }
381 | .header h1 {
382 | font-size: 1.4em;
383 | margin-bottom: 0.6em;
384 | }
385 | .header .description {
386 | font-size: 1em;
387 | }
388 | .article {
389 | margin: 1em 0 2.5em;
390 | }
391 | .archive {
392 | width: 80%;
393 | margin: 0 auto;
394 | }
395 | .archive * {
396 | float: none !important;
397 | line-height: 1.6 !important;
398 | width: auto !important;
399 | height: auto !important;
400 | text-align: left !important;
401 | border: 0 !important;
402 | margin: 0 !important;
403 | }
404 | footer .nav {
405 | margin: 1em 0;
406 | }
407 | footer .about {
408 | padding: 0;
409 | font-size: 0.9em;
410 | padding-top: 1.6em;
411 | -webkit-column-count: 1;
412 | -moz-column-count: 1;
413 | -ms-column-count: 1;
414 | column-count: 1;
415 | }
416 | footer .about p {
417 | margin-bottom: 1em;
418 | }
419 | }
420 |
--------------------------------------------------------------------------------
/public/vendor/Skeleton-2.0.4/css/normalize.css:
--------------------------------------------------------------------------------
1 | /*! normalize.css v3.0.2 | MIT License | git.io/normalize */
2 |
3 | /**
4 | * 1. Set default font family to sans-serif.
5 | * 2. Prevent iOS text size adjust after orientation change, without disabling
6 | * user zoom.
7 | */
8 |
9 | html {
10 | font-family: sans-serif; /* 1 */
11 | -ms-text-size-adjust: 100%; /* 2 */
12 | -webkit-text-size-adjust: 100%; /* 2 */
13 | }
14 |
15 | /**
16 | * Remove default margin.
17 | */
18 |
19 | body {
20 | margin: 0;
21 | }
22 |
23 | /* HTML5 display definitions
24 | ========================================================================== */
25 |
26 | /**
27 | * Correct `block` display not defined for any HTML5 element in IE 8/9.
28 | * Correct `block` display not defined for `details` or `summary` in IE 10/11
29 | * and Firefox.
30 | * Correct `block` display not defined for `main` in IE 11.
31 | */
32 |
33 | article,
34 | aside,
35 | details,
36 | figcaption,
37 | figure,
38 | footer,
39 | header,
40 | hgroup,
41 | main,
42 | menu,
43 | nav,
44 | section,
45 | summary {
46 | display: block;
47 | }
48 |
49 | /**
50 | * 1. Correct `inline-block` display not defined in IE 8/9.
51 | * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
52 | */
53 |
54 | audio,
55 | canvas,
56 | progress,
57 | video {
58 | display: inline-block; /* 1 */
59 | vertical-align: baseline; /* 2 */
60 | }
61 |
62 | /**
63 | * Prevent modern browsers from displaying `audio` without controls.
64 | * Remove excess height in iOS 5 devices.
65 | */
66 |
67 | audio:not([controls]) {
68 | display: none;
69 | height: 0;
70 | }
71 |
72 | /**
73 | * Address `[hidden]` styling not present in IE 8/9/10.
74 | * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22.
75 | */
76 |
77 | [hidden],
78 | template {
79 | display: none;
80 | }
81 |
82 | /* Links
83 | ========================================================================== */
84 |
85 | /**
86 | * Remove the gray background color from active links in IE 10.
87 | */
88 |
89 | a {
90 | background-color: transparent;
91 | }
92 |
93 | /**
94 | * Improve readability when focused and also mouse hovered in all browsers.
95 | */
96 |
97 | a:active,
98 | a:hover {
99 | outline: 0;
100 | }
101 |
102 | /* Text-level semantics
103 | ========================================================================== */
104 |
105 | /**
106 | * Address styling not present in IE 8/9/10/11, Safari, and Chrome.
107 | */
108 |
109 | abbr[title] {
110 | border-bottom: 1px dotted;
111 | }
112 |
113 | /**
114 | * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
115 | */
116 |
117 | b,
118 | strong {
119 | font-weight: bold;
120 | }
121 |
122 | /**
123 | * Address styling not present in Safari and Chrome.
124 | */
125 |
126 | dfn {
127 | font-style: italic;
128 | }
129 |
130 | /**
131 | * Address variable `h1` font-size and margin within `section` and `article`
132 | * contexts in Firefox 4+, Safari, and Chrome.
133 | */
134 |
135 | h1 {
136 | font-size: 2em;
137 | margin: 0.67em 0;
138 | }
139 |
140 | /**
141 | * Address styling not present in IE 8/9.
142 | */
143 |
144 | mark {
145 | background: #ff0;
146 | color: #000;
147 | }
148 |
149 | /**
150 | * Address inconsistent and variable font size in all browsers.
151 | */
152 |
153 | small {
154 | font-size: 80%;
155 | }
156 |
157 | /**
158 | * Prevent `sub` and `sup` affecting `line-height` in all browsers.
159 | */
160 |
161 | sub,
162 | sup {
163 | font-size: 75%;
164 | line-height: 0;
165 | position: relative;
166 | vertical-align: baseline;
167 | }
168 |
169 | sup {
170 | top: -0.5em;
171 | }
172 |
173 | sub {
174 | bottom: -0.25em;
175 | }
176 |
177 | /* Embedded content
178 | ========================================================================== */
179 |
180 | /**
181 | * Remove border when inside `a` element in IE 8/9/10.
182 | */
183 |
184 | img {
185 | border: 0;
186 | }
187 |
188 | /**
189 | * Correct overflow not hidden in IE 9/10/11.
190 | */
191 |
192 | svg:not(:root) {
193 | overflow: hidden;
194 | }
195 |
196 | /* Grouping content
197 | ========================================================================== */
198 |
199 | /**
200 | * Address margin not present in IE 8/9 and Safari.
201 | */
202 |
203 | figure {
204 | margin: 1em 40px;
205 | }
206 |
207 | /**
208 | * Address differences between Firefox and other browsers.
209 | */
210 |
211 | hr {
212 | -moz-box-sizing: content-box;
213 | box-sizing: content-box;
214 | height: 0;
215 | }
216 |
217 | /**
218 | * Contain overflow in all browsers.
219 | */
220 |
221 | pre {
222 | overflow: auto;
223 | }
224 |
225 | /**
226 | * Address odd `em`-unit font size rendering in all browsers.
227 | */
228 |
229 | code,
230 | kbd,
231 | pre,
232 | samp {
233 | font-family: monospace, monospace;
234 | font-size: 1em;
235 | }
236 |
237 | /* Forms
238 | ========================================================================== */
239 |
240 | /**
241 | * Known limitation: by default, Chrome and Safari on OS X allow very limited
242 | * styling of `select`, unless a `border` property is set.
243 | */
244 |
245 | /**
246 | * 1. Correct color not being inherited.
247 | * Known issue: affects color of disabled elements.
248 | * 2. Correct font properties not being inherited.
249 | * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
250 | */
251 |
252 | button,
253 | input,
254 | optgroup,
255 | select,
256 | textarea {
257 | color: inherit; /* 1 */
258 | font: inherit; /* 2 */
259 | margin: 0; /* 3 */
260 | }
261 |
262 | /**
263 | * Address `overflow` set to `hidden` in IE 8/9/10/11.
264 | */
265 |
266 | button {
267 | overflow: visible;
268 | }
269 |
270 | /**
271 | * Address inconsistent `text-transform` inheritance for `button` and `select`.
272 | * All other form control elements do not inherit `text-transform` values.
273 | * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
274 | * Correct `select` style inheritance in Firefox.
275 | */
276 |
277 | button,
278 | select {
279 | text-transform: none;
280 | }
281 |
282 | /**
283 | * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
284 | * and `video` controls.
285 | * 2. Correct inability to style clickable `input` types in iOS.
286 | * 3. Improve usability and consistency of cursor style between image-type
287 | * `input` and others.
288 | */
289 |
290 | button,
291 | html input[type="button"], /* 1 */
292 | input[type="reset"],
293 | input[type="submit"] {
294 | -webkit-appearance: button; /* 2 */
295 | cursor: pointer; /* 3 */
296 | }
297 |
298 | /**
299 | * Re-set default cursor for disabled elements.
300 | */
301 |
302 | button[disabled],
303 | html input[disabled] {
304 | cursor: default;
305 | }
306 |
307 | /**
308 | * Remove inner padding and border in Firefox 4+.
309 | */
310 |
311 | button::-moz-focus-inner,
312 | input::-moz-focus-inner {
313 | border: 0;
314 | padding: 0;
315 | }
316 |
317 | /**
318 | * Address Firefox 4+ setting `line-height` on `input` using `!important` in
319 | * the UA stylesheet.
320 | */
321 |
322 | input {
323 | line-height: normal;
324 | }
325 |
326 | /**
327 | * It's recommended that you don't attempt to style these elements.
328 | * Firefox's implementation doesn't respect box-sizing, padding, or width.
329 | *
330 | * 1. Address box sizing set to `content-box` in IE 8/9/10.
331 | * 2. Remove excess padding in IE 8/9/10.
332 | */
333 |
334 | input[type="checkbox"],
335 | input[type="radio"] {
336 | box-sizing: border-box; /* 1 */
337 | padding: 0; /* 2 */
338 | }
339 |
340 | /**
341 | * Fix the cursor style for Chrome's increment/decrement buttons. For certain
342 | * `font-size` values of the `input`, it causes the cursor style of the
343 | * decrement button to change from `default` to `text`.
344 | */
345 |
346 | input[type="number"]::-webkit-inner-spin-button,
347 | input[type="number"]::-webkit-outer-spin-button {
348 | height: auto;
349 | }
350 |
351 | /**
352 | * 1. Address `appearance` set to `searchfield` in Safari and Chrome.
353 | * 2. Address `box-sizing` set to `border-box` in Safari and Chrome
354 | * (include `-moz` to future-proof).
355 | */
356 |
357 | input[type="search"] {
358 | -webkit-appearance: textfield; /* 1 */
359 | -moz-box-sizing: content-box;
360 | -webkit-box-sizing: content-box; /* 2 */
361 | box-sizing: content-box;
362 | }
363 |
364 | /**
365 | * Remove inner padding and search cancel button in Safari and Chrome on OS X.
366 | * Safari (but not Chrome) clips the cancel button when the search input has
367 | * padding (and `textfield` appearance).
368 | */
369 |
370 | input[type="search"]::-webkit-search-cancel-button,
371 | input[type="search"]::-webkit-search-decoration {
372 | -webkit-appearance: none;
373 | }
374 |
375 | /**
376 | * Define consistent border, margin, and padding.
377 | */
378 |
379 | fieldset {
380 | border: 1px solid #c0c0c0;
381 | margin: 0 2px;
382 | padding: 0.35em 0.625em 0.75em;
383 | }
384 |
385 | /**
386 | * 1. Correct `color` not being inherited in IE 8/9/10/11.
387 | * 2. Remove padding so people aren't caught out if they zero out fieldsets.
388 | */
389 |
390 | legend {
391 | border: 0; /* 1 */
392 | padding: 0; /* 2 */
393 | }
394 |
395 | /**
396 | * Remove default vertical scrollbar in IE 8/9/10/11.
397 | */
398 |
399 | textarea {
400 | overflow: auto;
401 | }
402 |
403 | /**
404 | * Don't inherit the `font-weight` (applied by a rule above).
405 | * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
406 | */
407 |
408 | optgroup {
409 | font-weight: bold;
410 | }
411 |
412 | /* Tables
413 | ========================================================================== */
414 |
415 | /**
416 | * Remove most spacing between table cells.
417 | */
418 |
419 | table {
420 | border-collapse: collapse;
421 | border-spacing: 0;
422 | }
423 |
424 | td,
425 | th {
426 | padding: 0;
427 | }
--------------------------------------------------------------------------------
/public/vendor/Skeleton-2.0.4/css/skeleton.css:
--------------------------------------------------------------------------------
1 | /*
2 | * Skeleton V2.0.4
3 | * Copyright 2014, Dave Gamache
4 | * www.getskeleton.com
5 | * Free to use under the MIT license.
6 | * http://www.opensource.org/licenses/mit-license.php
7 | * 12/29/2014
8 | */
9 |
10 |
11 | /* Table of contents
12 | ––––––––––––––––––––––––––––––––––––––––––––––––––
13 | - Grid
14 | - Base Styles
15 | - Typography
16 | - Links
17 | - Buttons
18 | - Forms
19 | - Lists
20 | - Code
21 | - Tables
22 | - Spacing
23 | - Utilities
24 | - Clearing
25 | - Media Queries
26 | */
27 |
28 |
29 | /* Grid
30 | –––––––––––––––––––––––––––––––––––––––––––––––––– */
31 | .container {
32 | position: relative;
33 | width: 100%;
34 | max-width: 960px;
35 | margin: 0 auto;
36 | padding: 0 20px;
37 | box-sizing: border-box; }
38 | .column,
39 | .columns {
40 | width: 100%;
41 | float: left;
42 | box-sizing: border-box; }
43 |
44 | /* For devices larger than 400px */
45 | @media (min-width: 400px) {
46 | .container {
47 | width: 85%;
48 | padding: 0; }
49 | }
50 |
51 | /* For devices larger than 550px */
52 | @media (min-width: 550px) {
53 | .container {
54 | width: 80%; }
55 | .column,
56 | .columns {
57 | margin-left: 4%; }
58 | .column:first-child,
59 | .columns:first-child {
60 | margin-left: 0; }
61 |
62 | .one.column,
63 | .one.columns { width: 4.66666666667%; }
64 | .two.columns { width: 13.3333333333%; }
65 | .three.columns { width: 22%; }
66 | .four.columns { width: 30.6666666667%; }
67 | .five.columns { width: 39.3333333333%; }
68 | .six.columns { width: 48%; }
69 | .seven.columns { width: 56.6666666667%; }
70 | .eight.columns { width: 65.3333333333%; }
71 | .nine.columns { width: 74.0%; }
72 | .ten.columns { width: 82.6666666667%; }
73 | .eleven.columns { width: 91.3333333333%; }
74 | .twelve.columns { width: 100%; margin-left: 0; }
75 |
76 | .one-third.column { width: 30.6666666667%; }
77 | .two-thirds.column { width: 65.3333333333%; }
78 |
79 | .one-half.column { width: 48%; }
80 |
81 | /* Offsets */
82 | .offset-by-one.column,
83 | .offset-by-one.columns { margin-left: 8.66666666667%; }
84 | .offset-by-two.column,
85 | .offset-by-two.columns { margin-left: 17.3333333333%; }
86 | .offset-by-three.column,
87 | .offset-by-three.columns { margin-left: 26%; }
88 | .offset-by-four.column,
89 | .offset-by-four.columns { margin-left: 34.6666666667%; }
90 | .offset-by-five.column,
91 | .offset-by-five.columns { margin-left: 43.3333333333%; }
92 | .offset-by-six.column,
93 | .offset-by-six.columns { margin-left: 52%; }
94 | .offset-by-seven.column,
95 | .offset-by-seven.columns { margin-left: 60.6666666667%; }
96 | .offset-by-eight.column,
97 | .offset-by-eight.columns { margin-left: 69.3333333333%; }
98 | .offset-by-nine.column,
99 | .offset-by-nine.columns { margin-left: 78.0%; }
100 | .offset-by-ten.column,
101 | .offset-by-ten.columns { margin-left: 86.6666666667%; }
102 | .offset-by-eleven.column,
103 | .offset-by-eleven.columns { margin-left: 95.3333333333%; }
104 |
105 | .offset-by-one-third.column,
106 | .offset-by-one-third.columns { margin-left: 34.6666666667%; }
107 | .offset-by-two-thirds.column,
108 | .offset-by-two-thirds.columns { margin-left: 69.3333333333%; }
109 |
110 | .offset-by-one-half.column,
111 | .offset-by-one-half.columns { margin-left: 52%; }
112 |
113 | }
114 |
115 |
116 | /* Base Styles
117 | –––––––––––––––––––––––––––––––––––––––––––––––––– */
118 | /* NOTE
119 | html is set to 62.5% so that all the REM measurements throughout Skeleton
120 | are based on 10px sizing. So basically 1.5rem = 15px :) */
121 | html {
122 | font-size: 62.5%; }
123 | body {
124 | font-size: 1.5em; /* currently ems cause chrome bug misinterpreting rems on body element */
125 | line-height: 1.6;
126 | font-weight: 400;
127 | font-family: "Raleway", "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, sans-serif;
128 | color: #222; }
129 |
130 |
131 | /* Typography
132 | –––––––––––––––––––––––––––––––––––––––––––––––––– */
133 | h1, h2, h3, h4, h5, h6 {
134 | margin-top: 0;
135 | margin-bottom: 2rem;
136 | font-weight: 300; }
137 | h1 { font-size: 4.0rem; line-height: 1.2; letter-spacing: -.1rem;}
138 | h2 { font-size: 3.6rem; line-height: 1.25; letter-spacing: -.1rem; }
139 | h3 { font-size: 3.0rem; line-height: 1.3; letter-spacing: -.1rem; }
140 | h4 { font-size: 2.4rem; line-height: 1.35; letter-spacing: -.08rem; }
141 | h5 { font-size: 1.8rem; line-height: 1.5; letter-spacing: -.05rem; }
142 | h6 { font-size: 1.5rem; line-height: 1.6; letter-spacing: 0; }
143 |
144 | /* Larger than phablet */
145 | @media (min-width: 550px) {
146 | h1 { font-size: 5.0rem; }
147 | h2 { font-size: 4.2rem; }
148 | h3 { font-size: 3.6rem; }
149 | h4 { font-size: 3.0rem; }
150 | h5 { font-size: 2.4rem; }
151 | h6 { font-size: 1.5rem; }
152 | }
153 |
154 | p {
155 | margin-top: 0; }
156 |
157 |
158 | /* Links
159 | –––––––––––––––––––––––––––––––––––––––––––––––––– */
160 | a {
161 | color: #1EAEDB; }
162 | a:hover {
163 | color: #0FA0CE; }
164 |
165 |
166 | /* Buttons
167 | –––––––––––––––––––––––––––––––––––––––––––––––––– */
168 | .button,
169 | button,
170 | input[type="submit"],
171 | input[type="reset"],
172 | input[type="button"] {
173 | display: inline-block;
174 | height: 38px;
175 | padding: 0 30px;
176 | color: #555;
177 | text-align: center;
178 | font-size: 11px;
179 | font-weight: 600;
180 | line-height: 38px;
181 | letter-spacing: .1rem;
182 | text-transform: uppercase;
183 | text-decoration: none;
184 | white-space: nowrap;
185 | background-color: transparent;
186 | border-radius: 4px;
187 | border: 1px solid #bbb;
188 | cursor: pointer;
189 | box-sizing: border-box; }
190 | .button:hover,
191 | button:hover,
192 | input[type="submit"]:hover,
193 | input[type="reset"]:hover,
194 | input[type="button"]:hover,
195 | .button:focus,
196 | button:focus,
197 | input[type="submit"]:focus,
198 | input[type="reset"]:focus,
199 | input[type="button"]:focus {
200 | color: #333;
201 | border-color: #888;
202 | outline: 0; }
203 | .button.button-primary,
204 | button.button-primary,
205 | input[type="submit"].button-primary,
206 | input[type="reset"].button-primary,
207 | input[type="button"].button-primary {
208 | color: #FFF;
209 | background-color: #33C3F0;
210 | border-color: #33C3F0; }
211 | .button.button-primary:hover,
212 | button.button-primary:hover,
213 | input[type="submit"].button-primary:hover,
214 | input[type="reset"].button-primary:hover,
215 | input[type="button"].button-primary:hover,
216 | .button.button-primary:focus,
217 | button.button-primary:focus,
218 | input[type="submit"].button-primary:focus,
219 | input[type="reset"].button-primary:focus,
220 | input[type="button"].button-primary:focus {
221 | color: #FFF;
222 | background-color: #1EAEDB;
223 | border-color: #1EAEDB; }
224 |
225 |
226 | /* Forms
227 | –––––––––––––––––––––––––––––––––––––––––––––––––– */
228 | input[type="email"],
229 | input[type="number"],
230 | input[type="search"],
231 | input[type="text"],
232 | input[type="tel"],
233 | input[type="url"],
234 | input[type="password"],
235 | textarea,
236 | select {
237 | height: 38px;
238 | padding: 6px 10px; /* The 6px vertically centers text on FF, ignored by Webkit */
239 | background-color: #fff;
240 | border: 1px solid #D1D1D1;
241 | border-radius: 4px;
242 | box-shadow: none;
243 | box-sizing: border-box; }
244 | /* Removes awkward default styles on some inputs for iOS */
245 | input[type="email"],
246 | input[type="number"],
247 | input[type="search"],
248 | input[type="text"],
249 | input[type="tel"],
250 | input[type="url"],
251 | input[type="password"],
252 | textarea {
253 | -webkit-appearance: none;
254 | -moz-appearance: none;
255 | appearance: none; }
256 | textarea {
257 | min-height: 65px;
258 | padding-top: 6px;
259 | padding-bottom: 6px; }
260 | input[type="email"]:focus,
261 | input[type="number"]:focus,
262 | input[type="search"]:focus,
263 | input[type="text"]:focus,
264 | input[type="tel"]:focus,
265 | input[type="url"]:focus,
266 | input[type="password"]:focus,
267 | textarea:focus,
268 | select:focus {
269 | border: 1px solid #33C3F0;
270 | outline: 0; }
271 | label,
272 | legend {
273 | display: block;
274 | margin-bottom: .5rem;
275 | font-weight: 600; }
276 | fieldset {
277 | padding: 0;
278 | border-width: 0; }
279 | input[type="checkbox"],
280 | input[type="radio"] {
281 | display: inline; }
282 | label > .label-body {
283 | display: inline-block;
284 | margin-left: .5rem;
285 | font-weight: normal; }
286 |
287 |
288 | /* Lists
289 | –––––––––––––––––––––––––––––––––––––––––––––––––– */
290 | ul {
291 | list-style: circle inside; }
292 | ol {
293 | list-style: decimal inside; }
294 | ol, ul {
295 | padding-left: 0;
296 | margin-top: 0; }
297 | ul ul,
298 | ul ol,
299 | ol ol,
300 | ol ul {
301 | margin: 1.5rem 0 1.5rem 3rem;
302 | font-size: 90%; }
303 | li {
304 | margin-bottom: 1rem; }
305 |
306 |
307 | /* Code
308 | –––––––––––––––––––––––––––––––––––––––––––––––––– */
309 | code {
310 | padding: .2rem .5rem;
311 | margin: 0 .2rem;
312 | font-size: 90%;
313 | white-space: nowrap;
314 | background: #F1F1F1;
315 | border: 1px solid #E1E1E1;
316 | border-radius: 4px; }
317 | pre > code {
318 | display: block;
319 | padding: 1rem 1.5rem;
320 | white-space: pre; }
321 |
322 |
323 | /* Tables
324 | –––––––––––––––––––––––––––––––––––––––––––––––––– */
325 | th,
326 | td {
327 | padding: 12px 15px;
328 | text-align: left;
329 | border-bottom: 1px solid #E1E1E1; }
330 | th:first-child,
331 | td:first-child {
332 | padding-left: 0; }
333 | th:last-child,
334 | td:last-child {
335 | padding-right: 0; }
336 |
337 |
338 | /* Spacing
339 | –––––––––––––––––––––––––––––––––––––––––––––––––– */
340 | button,
341 | .button {
342 | margin-bottom: 1rem; }
343 | input,
344 | textarea,
345 | select,
346 | fieldset {
347 | margin-bottom: 1.5rem; }
348 | pre,
349 | blockquote,
350 | dl,
351 | figure,
352 | table,
353 | p,
354 | ul,
355 | ol,
356 | form {
357 | margin-bottom: 2.5rem; }
358 |
359 |
360 | /* Utilities
361 | –––––––––––––––––––––––––––––––––––––––––––––––––– */
362 | .u-full-width {
363 | width: 100%;
364 | box-sizing: border-box; }
365 | .u-max-full-width {
366 | max-width: 100%;
367 | box-sizing: border-box; }
368 | .u-pull-right {
369 | float: right; }
370 | .u-pull-left {
371 | float: left; }
372 |
373 |
374 | /* Misc
375 | –––––––––––––––––––––––––––––––––––––––––––––––––– */
376 | hr {
377 | margin-top: 3rem;
378 | margin-bottom: 3.5rem;
379 | border-width: 0;
380 | border-top: 1px solid #E1E1E1; }
381 |
382 |
383 | /* Clearing
384 | –––––––––––––––––––––––––––––––––––––––––––––––––– */
385 |
386 | /* Self Clearing Goodness */
387 | .container:after,
388 | .row:after,
389 | .u-cf {
390 | content: "";
391 | display: table;
392 | clear: both; }
393 |
394 |
395 | /* Media Queries
396 | –––––––––––––––––––––––––––––––––––––––––––––––––– */
397 | /*
398 | Note: The best way to structure the use of media queries is to create the queries
399 | near the relevant code. For example, if you wanted to change the styles for buttons
400 | on small devices, paste the mobile query code up in the buttons section and style it
401 | there.
402 | */
403 |
404 |
405 | /* Larger than mobile */
406 | @media (min-width: 400px) {}
407 |
408 | /* Larger than phablet (also point when grid becomes active) */
409 | @media (min-width: 550px) {}
410 |
411 | /* Larger than tablet */
412 | @media (min-width: 750px) {}
413 |
414 | /* Larger than desktop */
415 | @media (min-width: 1000px) {}
416 |
417 | /* Larger than Desktop HD */
418 | @media (min-width: 1200px) {}
419 |
--------------------------------------------------------------------------------