From b0bdfe2fe9d1dcba700f71f30847265b46a61879 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 21 Dec 2014 12:17:37 -0800 Subject: [PATCH] Update to site --- .themes/oscailte | 1 + Rakefile | 6 +- _config.yml | 22 +- sass/_base.scss | 5 + sass/_partials.scss | 8 + sass/base/_layout.scss | 192 +++++ sass/base/_solarized.scss | 46 ++ sass/base/_theme.scss | 85 ++ sass/base/_typography.scss | 164 ++++ sass/base/_utilities.scss | 28 + sass/custom/_colors.scss | 49 ++ sass/custom/_fonts.scss | 10 + sass/custom/_layout.scss | 21 + sass/custom/_paulus.scss | 48 ++ sass/custom/_styles.scss | 142 ++++ sass/fontawesome/_core.scss | 129 +++ sass/fontawesome/_extras.scss | 93 +++ sass/fontawesome/_font-awesome.scss | 32 + sass/fontawesome/_icons.scss | 381 +++++++++ sass/fontawesome/_mixins.scss | 48 ++ sass/fontawesome/_path.scss | 14 + sass/fontawesome/_variables.scss | 734 ++++++++++++++++++ sass/inuitcss/CHANGELOG.md | 26 + sass/inuitcss/CONTRIBUTING.md | 42 + sass/inuitcss/LICENSE | 13 + sass/inuitcss/README.md | 368 +++++++++ sass/inuitcss/_defaults.scss | 226 ++++++ sass/inuitcss/_inuit.scss | 214 +++++ sass/inuitcss/base/_code.scss | 64 ++ sass/inuitcss/base/_forms.scss | 175 +++++ sass/inuitcss/base/_headings.scss | 61 ++ sass/inuitcss/base/_images.scss | 74 ++ sass/inuitcss/base/_lists.scss | 20 + sass/inuitcss/base/_main.scss | 9 + sass/inuitcss/base/_paragraphs.scss | 12 + sass/inuitcss/base/_quotes.scss | 97 +++ sass/inuitcss/base/_smallprint.scss | 14 + sass/inuitcss/base/_tables.scss | 164 ++++ sass/inuitcss/component.json | 5 + sass/inuitcss/generic/_brand.scss | 19 + sass/inuitcss/generic/_clearfix.scss | 16 + sass/inuitcss/generic/_debug.scss | 169 ++++ sass/inuitcss/generic/_helper.scss | 185 +++++ sass/inuitcss/generic/_mixins.scss | 329 ++++++++ sass/inuitcss/generic/_normalize.scss | 397 ++++++++++ sass/inuitcss/generic/_pull.scss | 148 ++++ sass/inuitcss/generic/_push.scss | 148 ++++ sass/inuitcss/generic/_reset.scss | 81 ++ sass/inuitcss/generic/_shared.scss | 62 ++ sass/inuitcss/generic/_widths.scss | 159 ++++ sass/inuitcss/objects/_arrows.scss | 148 ++++ sass/inuitcss/objects/_beautons.scss | 227 ++++++ sass/inuitcss/objects/_block-list.scss | 45 ++ sass/inuitcss/objects/_breadcrumb.scss | 64 ++ sass/inuitcss/objects/_columns.scss | 23 + sass/inuitcss/objects/_flexbox.scss | 56 ++ sass/inuitcss/objects/_flyout.scss | 64 ++ sass/inuitcss/objects/_greybox.scss | 59 ++ sass/inuitcss/objects/_grids.scss | 69 ++ sass/inuitcss/objects/_icon-text.scss | 40 + sass/inuitcss/objects/_island.scss | 38 + sass/inuitcss/objects/_link-complex.scss | 32 + sass/inuitcss/objects/_lozenges.scss | 47 ++ sass/inuitcss/objects/_marginalia.scss | 53 ++ sass/inuitcss/objects/_matrix.scss | 89 +++ sass/inuitcss/objects/_media.scss | 60 ++ sass/inuitcss/objects/_nav.scss | 155 ++++ sass/inuitcss/objects/_options.scss | 46 ++ sass/inuitcss/objects/_pagination.scss | 50 ++ sass/inuitcss/objects/_rules.scss | 66 ++ sass/inuitcss/objects/_split.scss | 40 + sass/inuitcss/objects/_sprite.scss | 99 +++ sass/inuitcss/objects/_stats.scss | 53 ++ sass/inuitcss/objects/_this-or-this.scss | 38 + sass/oscailte/_mixins.scss | 57 ++ sass/oscailte/_oscailte.scss | 28 + sass/oscailte/_variables.scss | 64 ++ sass/oscailte/aside/_github.scss | 8 + sass/oscailte/aside/_pinboard.scss | 16 + sass/oscailte/aside/_recent_posts.scss | 0 sass/oscailte/aside/_social.scss | 76 ++ sass/oscailte/base/_archive_list.scss | 7 + sass/oscailte/base/_footer.scss | 21 + sass/oscailte/base/_global.scss | 57 ++ sass/oscailte/base/_grid.scss | 12 + sass/oscailte/base/_header.scss | 12 + sass/oscailte/base/_navigation.scss | 106 +++ sass/oscailte/base/_post.scss | 111 +++ sass/oscailte/base/_sidebar.scss | 46 ++ sass/oscailte/base/_solarized.scss | 333 ++++++++ sass/oscailte/custom/_README.scss | 6 + sass/oscailte/helpers/_classes.scss | 60 ++ sass/oscailte/helpers/_grid-fix.scss | 76 ++ sass/oscailte/homepage/_hero_unit.scss | 76 ++ sass/oscailte/homepage/_home.scss | 44 ++ sass/partials/_archive.scss | 72 ++ sass/partials/_blog.scss | 141 ++++ sass/partials/_footer.scss | 19 + sass/partials/_header.scss | 18 + sass/partials/_navigation.scss | 137 ++++ sass/partials/_sharing.scss | 8 + sass/partials/_sidebar.scss | 4 + sass/partials/_syntax.scss | 261 +++++++ sass/partials/sidebar/_base.scss | 106 +++ sass/partials/sidebar/_delicious.scss | 4 + sass/partials/sidebar/_googleplus.scss | 26 + sass/partials/sidebar/_pinboard.scss | 12 + sass/plugins/_plugins.scss | 6 + sass/screen.scss | 2 + source/CNAME | 1 + source/_includes/after_footer.html | 5 + source/_includes/archive_post.html | 8 + source/_includes/article.html | 29 + source/_includes/aside.html | 15 + source/_includes/asides/delicious.html | 17 + source/_includes/asides/github.html | 19 + source/_includes/asides/googleplus.html | 3 + source/_includes/asides/pinboard.html | 17 + source/_includes/asides/recent_posts.html | 10 + source/_includes/asides/social.html | 19 + source/_includes/asides/twitter.html | 17 + source/_includes/blog/archive_post.html | 20 + source/_includes/blog/post/article.html | 32 + source/_includes/blog/post/date.html | 15 + source/_includes/blog/post/disqus_thread.html | 1 + source/_includes/blog/post/tags.html | 17 + source/_includes/custom/after_footer.html | 24 + source/_includes/custom/asides/about.html | 4 + source/_includes/custom/category_feed.xml | 26 + source/_includes/custom/footer.html | 4 + source/_includes/custom/grid_item_left.html | 14 + source/_includes/custom/grid_item_middle.html | 6 + source/_includes/custom/grid_item_right.html | 10 + source/_includes/custom/header.html | 11 + source/_includes/custom/navigation.html | 7 + source/_includes/custom/unused_head.html | 5 + source/_includes/custom/welcome.html | 9 + source/_includes/disqus.html | 21 + source/_includes/facebook_like.html | 10 + source/_includes/footer.html | 1 + source/_includes/google_analytics.html | 13 + source/_includes/google_plus_one.html | 9 + source/_includes/header.html | 1 + source/_includes/javascripts/delicious.html | 16 + source/_includes/javascripts/disqus.html | 20 + source/_includes/javascripts/github.html | 21 + .../javascripts/google_analytics.html | 8 + source/_includes/javascripts/scripts.html | 12 + source/_includes/navigation.html | 19 + source/_includes/post/author.html | 8 + source/_includes/post/categories.html | 10 + source/_includes/post/date.html | 15 + source/_includes/post/disqus_thread.html | 1 + source/_includes/post/sharing.html | 11 + source/_includes/site/footer.html | 7 + source/_includes/site/head.html | 33 + source/_includes/site/header.html | 7 + source/_includes/site/hero_unit.html | 14 + source/_includes/site/navigation.html | 3 + source/_includes/site/sidebar.html | 7 + source/_includes/twitter_sharing.html | 11 + source/_includes/unused_head.html | 29 + source/_layouts/category_index.html | 17 + source/_layouts/default.html | 46 ++ source/_layouts/page.html | 18 + source/_layouts/post.html | 15 + .../2014-12-18-website-launched.markdown | 10 + source/architecture/index.markdown | 39 + .../jwplayer/glow/controlbar/background.png | Bin 0 -> 141 bytes .../jwplayer/glow/controlbar/blankButton.png | Bin 0 -> 82 bytes .../jwplayer/glow/controlbar/divider.png | Bin 0 -> 118 bytes .../glow/controlbar/fullscreenButton.png | Bin 0 -> 203 bytes .../glow/controlbar/fullscreenButtonOver.png | Bin 0 -> 636 bytes .../jwplayer/glow/controlbar/muteButton.png | Bin 0 -> 343 bytes .../glow/controlbar/muteButtonOver.png | Bin 0 -> 835 bytes .../glow/controlbar/normalscreenButton.png | Bin 0 -> 210 bytes .../controlbar/normalscreenButtonOver.png | Bin 0 -> 664 bytes .../jwplayer/glow/controlbar/pauseButton.png | Bin 0 -> 170 bytes .../glow/controlbar/pauseButtonOver.png | Bin 0 -> 442 bytes .../jwplayer/glow/controlbar/playButton.png | Bin 0 -> 251 bytes .../glow/controlbar/playButtonOver.png | Bin 0 -> 553 bytes .../glow/controlbar/timeSliderBuffer.png | Bin 0 -> 112 bytes .../glow/controlbar/timeSliderCapLeft.png | Bin 0 -> 94 bytes .../glow/controlbar/timeSliderCapRight.png | Bin 0 -> 103 bytes .../glow/controlbar/timeSliderProgress.png | Bin 0 -> 114 bytes .../glow/controlbar/timeSliderRail.png | Bin 0 -> 116 bytes .../jwplayer/glow/controlbar/unmuteButton.png | Bin 0 -> 264 bytes .../glow/controlbar/unmuteButtonOver.png | Bin 0 -> 649 bytes .../jwplayer/glow/display/background.png | Bin 0 -> 686 bytes .../jwplayer/glow/display/bufferIcon.png | Bin 0 -> 816 bytes .../assets/jwplayer/glow/display/muteIcon.png | Bin 0 -> 334 bytes .../assets/jwplayer/glow/display/playIcon.png | Bin 0 -> 465 bytes source/assets/jwplayer/glow/dock/button.png | Bin 0 -> 686 bytes source/assets/jwplayer/glow/glow.xml | 115 +++ source/assets/jwplayer/glow/playlist/item.png | Bin 0 -> 172 bytes .../jwplayer/glow/playlist/itemOver.png | Bin 0 -> 171 bytes .../glow/playlist/sliderCapBottom.png | Bin 0 -> 108 bytes .../jwplayer/glow/playlist/sliderCapTop.png | Bin 0 -> 105 bytes .../jwplayer/glow/playlist/sliderRail.png | Bin 0 -> 100 bytes .../jwplayer/glow/playlist/sliderThumb.png | Bin 0 -> 97 bytes .../jwplayer/glow/sharing/embedIcon.png | Bin 0 -> 749 bytes .../jwplayer/glow/sharing/embedScreen.png | Bin 0 -> 2579 bytes .../jwplayer/glow/sharing/shareIcon.png | Bin 0 -> 589 bytes .../jwplayer/glow/sharing/shareScreen.png | Bin 0 -> 4576 bytes source/assets/jwplayer/player.swf | Bin 0 -> 91375 bytes source/atom.xml | 26 + source/blog/archives/index.html | 17 + source/blog/index.html | 21 + source/contributing/index.markdown | 66 ++ source/favicon.png | Bin 0 -> 400 bytes source/font/FontAwesome.otf | Bin 0 -> 61896 bytes source/font/fontawesome-webfont.eot | Bin 0 -> 37405 bytes source/font/fontawesome-webfont.svg | 399 ++++++++++ source/font/fontawesome-webfont.ttf | Bin 0 -> 79076 bytes source/font/fontawesome-webfont.woff | Bin 0 -> 43572 bytes source/getting-started/index.markdown | 83 ++ source/images/bird_32_gray.png | Bin 0 -> 1376 bytes source/images/bird_32_gray_fail.png | Bin 0 -> 615 bytes source/images/cliffs_of_moher.jpg | Bin 0 -> 321598 bytes source/images/code_bg.png | Bin 0 -> 239 bytes source/images/dotted-border.png | Bin 0 -> 99 bytes source/images/email.png | Bin 0 -> 301 bytes source/images/favicon-192x192.png | Bin 0 -> 7853 bytes source/images/favicon.ico | Bin 0 -> 15086 bytes source/images/gravatar.jpg | Bin 0 -> 8447 bytes source/images/ha_architecture.png | Bin 0 -> 32012 bytes source/images/hero_screenshot.png | Bin 0 -> 30110 bytes source/images/line-tile.png | Bin 0 -> 636 bytes source/images/matrix.png | Bin 0 -> 142 bytes source/images/noise.png | Bin 0 -> 17742 bytes source/images/rss.png | Bin 0 -> 490 bytes .../images/screenshots/screenshot-devices.png | Bin 0 -> 139670 bytes source/images/search.png | Bin 0 -> 333 bytes source/index.html | 56 ++ source/javascripts/github.js | 32 + source/javascripts/libs/jXHR.js | 85 ++ source/javascripts/libs/jquery.min.js | 5 + source/javascripts/libs/md5.js | 201 +++++ source/javascripts/libs/swfobject-dynamic.js | 298 +++++++ source/javascripts/modernizr-2.0.js | 5 + source/javascripts/octopress.js | 16 + source/javascripts/pinboard.js | 56 ++ source/javascripts/twitter.js | 78 ++ source/robots.txt | 6 + 244 files changed, 11618 insertions(+), 12 deletions(-) create mode 160000 .themes/oscailte create mode 100644 sass/_base.scss create mode 100644 sass/_partials.scss create mode 100644 sass/base/_layout.scss create mode 100644 sass/base/_solarized.scss create mode 100644 sass/base/_theme.scss create mode 100644 sass/base/_typography.scss create mode 100644 sass/base/_utilities.scss create mode 100644 sass/custom/_colors.scss create mode 100644 sass/custom/_fonts.scss create mode 100644 sass/custom/_layout.scss create mode 100644 sass/custom/_paulus.scss create mode 100644 sass/custom/_styles.scss create mode 100644 sass/fontawesome/_core.scss create mode 100644 sass/fontawesome/_extras.scss create mode 100644 sass/fontawesome/_font-awesome.scss create mode 100644 sass/fontawesome/_icons.scss create mode 100644 sass/fontawesome/_mixins.scss create mode 100644 sass/fontawesome/_path.scss create mode 100644 sass/fontawesome/_variables.scss create mode 100644 sass/inuitcss/CHANGELOG.md create mode 100644 sass/inuitcss/CONTRIBUTING.md create mode 100644 sass/inuitcss/LICENSE create mode 100644 sass/inuitcss/README.md create mode 100644 sass/inuitcss/_defaults.scss create mode 100644 sass/inuitcss/_inuit.scss create mode 100644 sass/inuitcss/base/_code.scss create mode 100644 sass/inuitcss/base/_forms.scss create mode 100644 sass/inuitcss/base/_headings.scss create mode 100644 sass/inuitcss/base/_images.scss create mode 100644 sass/inuitcss/base/_lists.scss create mode 100644 sass/inuitcss/base/_main.scss create mode 100644 sass/inuitcss/base/_paragraphs.scss create mode 100644 sass/inuitcss/base/_quotes.scss create mode 100644 sass/inuitcss/base/_smallprint.scss create mode 100644 sass/inuitcss/base/_tables.scss create mode 100644 sass/inuitcss/component.json create mode 100644 sass/inuitcss/generic/_brand.scss create mode 100644 sass/inuitcss/generic/_clearfix.scss create mode 100644 sass/inuitcss/generic/_debug.scss create mode 100644 sass/inuitcss/generic/_helper.scss create mode 100644 sass/inuitcss/generic/_mixins.scss create mode 100644 sass/inuitcss/generic/_normalize.scss create mode 100644 sass/inuitcss/generic/_pull.scss create mode 100644 sass/inuitcss/generic/_push.scss create mode 100644 sass/inuitcss/generic/_reset.scss create mode 100644 sass/inuitcss/generic/_shared.scss create mode 100644 sass/inuitcss/generic/_widths.scss create mode 100644 sass/inuitcss/objects/_arrows.scss create mode 100644 sass/inuitcss/objects/_beautons.scss create mode 100644 sass/inuitcss/objects/_block-list.scss create mode 100644 sass/inuitcss/objects/_breadcrumb.scss create mode 100644 sass/inuitcss/objects/_columns.scss create mode 100644 sass/inuitcss/objects/_flexbox.scss create mode 100644 sass/inuitcss/objects/_flyout.scss create mode 100644 sass/inuitcss/objects/_greybox.scss create mode 100644 sass/inuitcss/objects/_grids.scss create mode 100644 sass/inuitcss/objects/_icon-text.scss create mode 100644 sass/inuitcss/objects/_island.scss create mode 100644 sass/inuitcss/objects/_link-complex.scss create mode 100644 sass/inuitcss/objects/_lozenges.scss create mode 100644 sass/inuitcss/objects/_marginalia.scss create mode 100644 sass/inuitcss/objects/_matrix.scss create mode 100644 sass/inuitcss/objects/_media.scss create mode 100644 sass/inuitcss/objects/_nav.scss create mode 100644 sass/inuitcss/objects/_options.scss create mode 100644 sass/inuitcss/objects/_pagination.scss create mode 100644 sass/inuitcss/objects/_rules.scss create mode 100644 sass/inuitcss/objects/_split.scss create mode 100644 sass/inuitcss/objects/_sprite.scss create mode 100644 sass/inuitcss/objects/_stats.scss create mode 100644 sass/inuitcss/objects/_this-or-this.scss create mode 100644 sass/oscailte/_mixins.scss create mode 100644 sass/oscailte/_oscailte.scss create mode 100644 sass/oscailte/_variables.scss create mode 100644 sass/oscailte/aside/_github.scss create mode 100644 sass/oscailte/aside/_pinboard.scss create mode 100644 sass/oscailte/aside/_recent_posts.scss create mode 100644 sass/oscailte/aside/_social.scss create mode 100644 sass/oscailte/base/_archive_list.scss create mode 100644 sass/oscailte/base/_footer.scss create mode 100644 sass/oscailte/base/_global.scss create mode 100644 sass/oscailte/base/_grid.scss create mode 100644 sass/oscailte/base/_header.scss create mode 100644 sass/oscailte/base/_navigation.scss create mode 100644 sass/oscailte/base/_post.scss create mode 100644 sass/oscailte/base/_sidebar.scss create mode 100644 sass/oscailte/base/_solarized.scss create mode 100644 sass/oscailte/custom/_README.scss create mode 100644 sass/oscailte/helpers/_classes.scss create mode 100644 sass/oscailte/helpers/_grid-fix.scss create mode 100644 sass/oscailte/homepage/_hero_unit.scss create mode 100644 sass/oscailte/homepage/_home.scss create mode 100644 sass/partials/_archive.scss create mode 100644 sass/partials/_blog.scss create mode 100644 sass/partials/_footer.scss create mode 100644 sass/partials/_header.scss create mode 100644 sass/partials/_navigation.scss create mode 100644 sass/partials/_sharing.scss create mode 100644 sass/partials/_sidebar.scss create mode 100644 sass/partials/_syntax.scss create mode 100644 sass/partials/sidebar/_base.scss create mode 100644 sass/partials/sidebar/_delicious.scss create mode 100644 sass/partials/sidebar/_googleplus.scss create mode 100644 sass/partials/sidebar/_pinboard.scss create mode 100644 sass/plugins/_plugins.scss create mode 100644 sass/screen.scss create mode 100644 source/CNAME create mode 100644 source/_includes/after_footer.html create mode 100644 source/_includes/archive_post.html create mode 100644 source/_includes/article.html create mode 100644 source/_includes/aside.html create mode 100644 source/_includes/asides/delicious.html create mode 100644 source/_includes/asides/github.html create mode 100644 source/_includes/asides/googleplus.html create mode 100644 source/_includes/asides/pinboard.html create mode 100644 source/_includes/asides/recent_posts.html create mode 100644 source/_includes/asides/social.html create mode 100644 source/_includes/asides/twitter.html create mode 100644 source/_includes/blog/archive_post.html create mode 100644 source/_includes/blog/post/article.html create mode 100644 source/_includes/blog/post/date.html create mode 100644 source/_includes/blog/post/disqus_thread.html create mode 100644 source/_includes/blog/post/tags.html create mode 100644 source/_includes/custom/after_footer.html create mode 100644 source/_includes/custom/asides/about.html create mode 100644 source/_includes/custom/category_feed.xml create mode 100644 source/_includes/custom/footer.html create mode 100644 source/_includes/custom/grid_item_left.html create mode 100644 source/_includes/custom/grid_item_middle.html create mode 100644 source/_includes/custom/grid_item_right.html create mode 100644 source/_includes/custom/header.html create mode 100644 source/_includes/custom/navigation.html create mode 100644 source/_includes/custom/unused_head.html create mode 100644 source/_includes/custom/welcome.html create mode 100644 source/_includes/disqus.html create mode 100644 source/_includes/facebook_like.html create mode 100644 source/_includes/footer.html create mode 100644 source/_includes/google_analytics.html create mode 100644 source/_includes/google_plus_one.html create mode 100644 source/_includes/header.html create mode 100644 source/_includes/javascripts/delicious.html create mode 100644 source/_includes/javascripts/disqus.html create mode 100644 source/_includes/javascripts/github.html create mode 100644 source/_includes/javascripts/google_analytics.html create mode 100644 source/_includes/javascripts/scripts.html create mode 100644 source/_includes/navigation.html create mode 100644 source/_includes/post/author.html create mode 100644 source/_includes/post/categories.html create mode 100644 source/_includes/post/date.html create mode 100644 source/_includes/post/disqus_thread.html create mode 100644 source/_includes/post/sharing.html create mode 100644 source/_includes/site/footer.html create mode 100644 source/_includes/site/head.html create mode 100644 source/_includes/site/header.html create mode 100644 source/_includes/site/hero_unit.html create mode 100644 source/_includes/site/navigation.html create mode 100644 source/_includes/site/sidebar.html create mode 100644 source/_includes/twitter_sharing.html create mode 100644 source/_includes/unused_head.html create mode 100644 source/_layouts/category_index.html create mode 100644 source/_layouts/default.html create mode 100644 source/_layouts/page.html create mode 100644 source/_layouts/post.html create mode 100644 source/_posts/2014-12-18-website-launched.markdown create mode 100644 source/architecture/index.markdown create mode 100644 source/assets/jwplayer/glow/controlbar/background.png create mode 100644 source/assets/jwplayer/glow/controlbar/blankButton.png create mode 100644 source/assets/jwplayer/glow/controlbar/divider.png create mode 100644 source/assets/jwplayer/glow/controlbar/fullscreenButton.png create mode 100644 source/assets/jwplayer/glow/controlbar/fullscreenButtonOver.png create mode 100644 source/assets/jwplayer/glow/controlbar/muteButton.png create mode 100644 source/assets/jwplayer/glow/controlbar/muteButtonOver.png create mode 100644 source/assets/jwplayer/glow/controlbar/normalscreenButton.png create mode 100644 source/assets/jwplayer/glow/controlbar/normalscreenButtonOver.png create mode 100644 source/assets/jwplayer/glow/controlbar/pauseButton.png create mode 100644 source/assets/jwplayer/glow/controlbar/pauseButtonOver.png create mode 100644 source/assets/jwplayer/glow/controlbar/playButton.png create mode 100644 source/assets/jwplayer/glow/controlbar/playButtonOver.png create mode 100644 source/assets/jwplayer/glow/controlbar/timeSliderBuffer.png create mode 100644 source/assets/jwplayer/glow/controlbar/timeSliderCapLeft.png create mode 100644 source/assets/jwplayer/glow/controlbar/timeSliderCapRight.png create mode 100644 source/assets/jwplayer/glow/controlbar/timeSliderProgress.png create mode 100644 source/assets/jwplayer/glow/controlbar/timeSliderRail.png create mode 100644 source/assets/jwplayer/glow/controlbar/unmuteButton.png create mode 100644 source/assets/jwplayer/glow/controlbar/unmuteButtonOver.png create mode 100644 source/assets/jwplayer/glow/display/background.png create mode 100644 source/assets/jwplayer/glow/display/bufferIcon.png create mode 100644 source/assets/jwplayer/glow/display/muteIcon.png create mode 100644 source/assets/jwplayer/glow/display/playIcon.png create mode 100644 source/assets/jwplayer/glow/dock/button.png create mode 100644 source/assets/jwplayer/glow/glow.xml create mode 100644 source/assets/jwplayer/glow/playlist/item.png create mode 100644 source/assets/jwplayer/glow/playlist/itemOver.png create mode 100644 source/assets/jwplayer/glow/playlist/sliderCapBottom.png create mode 100644 source/assets/jwplayer/glow/playlist/sliderCapTop.png create mode 100644 source/assets/jwplayer/glow/playlist/sliderRail.png create mode 100644 source/assets/jwplayer/glow/playlist/sliderThumb.png create mode 100644 source/assets/jwplayer/glow/sharing/embedIcon.png create mode 100644 source/assets/jwplayer/glow/sharing/embedScreen.png create mode 100644 source/assets/jwplayer/glow/sharing/shareIcon.png create mode 100644 source/assets/jwplayer/glow/sharing/shareScreen.png create mode 100644 source/assets/jwplayer/player.swf create mode 100644 source/atom.xml create mode 100644 source/blog/archives/index.html create mode 100644 source/blog/index.html create mode 100644 source/contributing/index.markdown create mode 100644 source/favicon.png create mode 100644 source/font/FontAwesome.otf create mode 100755 source/font/fontawesome-webfont.eot create mode 100755 source/font/fontawesome-webfont.svg create mode 100755 source/font/fontawesome-webfont.ttf create mode 100755 source/font/fontawesome-webfont.woff create mode 100644 source/getting-started/index.markdown create mode 100644 source/images/bird_32_gray.png create mode 100644 source/images/bird_32_gray_fail.png create mode 100644 source/images/cliffs_of_moher.jpg create mode 100644 source/images/code_bg.png create mode 100644 source/images/dotted-border.png create mode 100644 source/images/email.png create mode 100644 source/images/favicon-192x192.png create mode 100644 source/images/favicon.ico create mode 100644 source/images/gravatar.jpg create mode 100644 source/images/ha_architecture.png create mode 100644 source/images/hero_screenshot.png create mode 100644 source/images/line-tile.png create mode 100644 source/images/matrix.png create mode 100644 source/images/noise.png create mode 100644 source/images/rss.png create mode 100644 source/images/screenshots/screenshot-devices.png create mode 100644 source/images/search.png create mode 100644 source/index.html create mode 100644 source/javascripts/github.js create mode 100644 source/javascripts/libs/jXHR.js create mode 100644 source/javascripts/libs/jquery.min.js create mode 100644 source/javascripts/libs/md5.js create mode 100644 source/javascripts/libs/swfobject-dynamic.js create mode 100644 source/javascripts/modernizr-2.0.js create mode 100644 source/javascripts/octopress.js create mode 100644 source/javascripts/pinboard.js create mode 100644 source/javascripts/twitter.js create mode 100644 source/robots.txt diff --git a/.themes/oscailte b/.themes/oscailte new file mode 160000 index 00000000000..0844f3dd9e1 --- /dev/null +++ b/.themes/oscailte @@ -0,0 +1 @@ +Subproject commit 0844f3dd9e1747f1bd6b7b803c04dc3733c36d78 diff --git a/Rakefile b/Rakefile index c7ad5049fc8..947b2a4bf15 100644 --- a/Rakefile +++ b/Rakefile @@ -9,16 +9,16 @@ ssh_port = "22" document_root = "~/website.com/" rsync_delete = false rsync_args = "" # Any extra arguments to pass to rsync -deploy_default = "rsync" +deploy_default = "push" # This will be configured for you when you run config_deploy deploy_branch = "gh-pages" ## -- Misc Configs -- ## -public_dir = "public" # compiled site directory +public_dir = "public/" # compiled site directory source_dir = "source" # source file directory -blog_index_dir = 'source' # directory for your blog's index page (if you put your index in source/blog/index.html, set this to 'source/blog') +blog_index_dir = 'source/blog' # directory for your blog's index page (if you put your index in source/blog/index.html, set this to 'source/blog') deploy_dir = "_deploy" # deploy directory (for Github pages deployment) stash_dir = "_stash" # directory to stash posts for speedy generation posts_dir = "_posts" # directory for blog files diff --git a/_config.yml b/_config.yml index c1d56f4fa07..19c6db446e4 100644 --- a/_config.yml +++ b/_config.yml @@ -1,13 +1,14 @@ +# See options at https://github.com/coogie/oscailte # ----------------------- # # Main Configs # # ----------------------- # -url: http://yoursite.com -title: My Octopress Blog -subtitle: A blogging framework for hackers. -author: Your Name +url: https://home-assistant.io +title: Home Assistant +subtitle: Open-source home automation platform running on Python 3 +author: Paulus Schoutsen simple_search: https://www.google.com/search -description: +description: Home Assistant is an open-source home automation platform running on Python 3. # Default date format is "ordinal" (resulting in "July 22nd 2007") # You can customize the format as defined in @@ -29,7 +30,7 @@ email: root: / permalink: /blog/:year/:month/:day/:title/ source: source -destination: public +destination: public/ plugins: plugins code_dir: downloads/code category_dir: blog/categories @@ -70,7 +71,7 @@ github_show_profile_link: true github_skip_forks: true # Twitter -twitter_user: +twitter_user: balloob twitter_tweet_button: true # Google +1 @@ -79,8 +80,8 @@ google_plus_one_size: medium # Google Plus Profile # Hidden: No visible button, just add author information to search results -googleplus_user: -googleplus_hidden: false +googleplus_user: +PaulusSchoutsen +googleplus_hidden: true # Pinboard pinboard_user: @@ -99,3 +100,6 @@ google_analytics_tracking_id: # Facebook Like facebook_like: false + +social: + visible: false diff --git a/sass/_base.scss b/sass/_base.scss new file mode 100644 index 00000000000..05fdd005cbe --- /dev/null +++ b/sass/_base.scss @@ -0,0 +1,5 @@ +@import "base/utilities"; +@import "base/solarized"; +@import "base/theme"; +@import "base/typography"; +@import "base/layout"; diff --git a/sass/_partials.scss b/sass/_partials.scss new file mode 100644 index 00000000000..99c28b6378c --- /dev/null +++ b/sass/_partials.scss @@ -0,0 +1,8 @@ +@import "partials/header"; +@import "partials/navigation"; +@import "partials/blog"; +@import "partials/sharing"; +@import "partials/syntax"; +@import "partials/archive"; +@import "partials/sidebar"; +@import "partials/footer"; diff --git a/sass/base/_layout.scss b/sass/base/_layout.scss new file mode 100644 index 00000000000..81903428f5c --- /dev/null +++ b/sass/base/_layout.scss @@ -0,0 +1,192 @@ +$max-width: 1200px !default; + +// Padding used for layout margins +$pad-min: 18px !default; +$pad-narrow: 25px !default; +$pad-medium: 35px !default; +$pad-wide: 55px !default; + +// Sidebar widths used in media queries +$sidebar-width-medium: 240px !default; +$sidebar-pad-medium: 15px !default; +$sidebar-pad-wide: 20px !default; +$sidebar-width-wide: 300px !default; + +$indented-lists: false !default; + +$header-font-size: 1em !default; +$header-padding-top: 1.5em !default; +$header-padding-bottom: 1.5em !default; + +.group { @include pie-clearfix; } + +@mixin collapse-sidebar { + float: none; + width: auto; + clear: left; + margin: 0; + padding: 0 $pad-medium 1px; + background-color: lighten($sidebar-bg, 2); + border-top: 1px solid lighten($sidebar-border, 4); + section { + &.odd, &.even { float: left; width: 48%; } + &.odd { margin-left: 0; } + &.even { margin-left: 4%; } + } + &.thirds section { + width: 30%; + margin-left: 5%; + &.first { + margin-left: 0; + clear: both; + } + } +} + +body { + -webkit-text-size-adjust: none; + max-width: $max-width; + position: relative; + margin: 0 auto; + > header, > nav, > footer, #content > article, #content > div > article, #content > div > section { + @extend .group; + padding-left: $pad-min; + padding-right: $pad-min; + @media only screen and (min-width: 480px) { + padding-left: $pad-narrow; + padding-right: $pad-narrow; + } + @media only screen and (min-width: 768px) { + padding-left: $pad-medium; + padding-right: $pad-medium; + } + @media only screen and (min-width: 992px) { + padding-left: $pad-wide; + padding-right: $pad-wide; + } + } + div.pagination { + @extend .group; + margin-left: $pad-min; + margin-right: $pad-min; + @media only screen and (min-width: 480px) { + margin-left: $pad-narrow; + margin-right: $pad-narrow; + } + @media only screen and (min-width: 768px) { + margin-left: $pad-medium; + margin-right: $pad-medium; + } + @media only screen and (min-width: 992px) { + margin-left: $pad-wide; + margin-right: $pad-wide; + } + } + > header { + font-size: $header-font-size; + padding-top: $header-padding-top; + padding-bottom: $header-padding-bottom; + } +} + +#content { + overflow: hidden; + > div, > article { width: 100%; } +} + +aside.sidebar { + float: none; + padding: 0 $pad-min 1px; + background-color: lighten($sidebar-bg, 2); + border-top: 1px solid $sidebar-border; + @extend .group; +} + +.flex-content { max-width: 100%; height: auto; } + +.basic-alignment { + &.left { float: left; margin-right: 1.5em; } + &.right { float: right; margin-left: 1.5em; } + &.center { display:block; margin: 0 auto 1.5em; } + &.left, &.right { margin-bottom: .8em; } +} + +.toggle-sidebar { &, .no-sidebar & { display: none; }} + +body.sidebar-footer { + @media only screen and (min-width: 750px) { + aside.sidebar{ @include collapse-sidebar; } + } + #content { margin-right: 0px; } + .toggle-sidebar { display: none; } +} + +@media only screen and (min-width: 550px) { + body > header { font-size: $header-font-size; } +} +@media only screen and (min-width: 750px) { + aside.sidebar { @include collapse-sidebar; } +} +#main, #content, .sidebar { + @extend .group; +} +@media only screen and (min-width: 768px) { + body { -webkit-text-size-adjust: auto; } + body > header { font-size: $header-font-size * 1.2; } + #main { + padding: 0; + margin: 0 auto; + } + #content { + overflow: visible; + margin-right: $sidebar-width-medium; + position: relative; + .no-sidebar & { margin-right: 0; border-right: 0; } + .collapse-sidebar & { margin-right: 20px; } + > div, > article { + padding-top: $pad-medium/2; + padding-bottom: $pad-medium/2; + float: left; + } + } + aside.sidebar { + width: $sidebar-width-medium - $sidebar-pad-medium*2; + padding: 0 $sidebar-pad-medium $sidebar-pad-medium; + background: none; + clear: none; + float: left; + margin: 0 -100% 0 0; + section { + width: auto; margin-left: 0; + &.odd, &.even { float: none; width: auto; margin-left: 0; } + } + .collapse-sidebar & { + @include collapse-sidebar; + } + } +} + +@media only screen and (min-width: 992px) { + body > header { font-size: $header-font-size * 1.3; } + #content { margin-right: $sidebar-width-wide; } + #content { + > div, > article { + padding-top: $pad-wide/2; + padding-bottom: $pad-wide/2; + } + } + aside.sidebar { + width: $sidebar-width-wide - $sidebar-pad-wide*2; + padding: 1.2em $sidebar-pad-wide $sidebar-pad-wide; + .collapse-sidebar & { + padding: { left: $pad-wide; right: $pad-wide; } + } + } +} + +@if $indented-lists == false { + @media only screen and (min-width: 768px) { + ul, ol { margin-left: 0; } + } +} + diff --git a/sass/base/_solarized.scss b/sass/base/_solarized.scss new file mode 100644 index 00000000000..45d8fc5eff3 --- /dev/null +++ b/sass/base/_solarized.scss @@ -0,0 +1,46 @@ +$base03: #002b36 !default; //darkest blue +$base02: #073642 !default; //dark blue +$base01: #586e75 !default; //darkest gray +$base00: #657b83 !default; //dark gray +$base0: #839496 !default; //medium gray +$base1: #93a1a1 !default; //medium light gray +$base2: #eee8d5 !default; //cream +$base3: #fdf6e3 !default; //white +$solar-yellow: #b58900 !default; +$solar-orange: #cb4b16 !default; +$solar-red: #dc322f !default; +$solar-magenta: #d33682 !default; +$solar-violet: #6c71c4 !default; +$solar-blue: #268bd2 !default; +$solar-cyan: #2aa198 !default; +$solar-green: #859900 !default; + +$solarized: dark !default; + +@if $solarized == light { + + $_base03: $base03; + $_base02: $base02; + $_base01: $base01; + $_base00: $base00; + $_base0: $base0; + $_base1: $base1; + $_base2: $base2; + $_base3: $base3; + + $base03: $_base3; + $base02: $_base2; + $base01: $_base1; + $base00: $_base0; + $base0: $_base00; + $base1: $_base01; + $base2: $_base02; + $base3: $_base03; +} + +/* non highlighted code colors */ +$pre-bg: $base03 !default; +$pre-border: darken($base02, 5) !default; +$pre-color: $base1 !default; + + diff --git a/sass/base/_theme.scss b/sass/base/_theme.scss new file mode 100644 index 00000000000..c35136d5ac9 --- /dev/null +++ b/sass/base/_theme.scss @@ -0,0 +1,85 @@ +$noise-bg: image-url('noise.png') top left !default; +$img-border: inline-image('dotted-border.png') !default; + +// Main Link Colors +$link-color: lighten(#165b94, 3) !default; +$link-color-hover: adjust-color($link-color, $lightness: 10, $saturation: 25) !default; +$link-color-visited: adjust-color($link-color, $hue: 80, $lightness: -4) !default; +$link-color-active: adjust-color($link-color-hover, $lightness: -15) !default; + +// Main Section Colors +$main-bg: #f8f8f8 !default; +$page-bg: #252525 !default; +$article-border: #eeeeee !default; + +$header-bg: #333 !default; +$header-border: lighten($header-bg, 15) !default; +$title-color: #f2f2f2 !default; +$subtitle-color: #aaa !default; + +$text-color: #222 !default; +$text-color-light: #aaa !default; +$type-border: #ddd !default; + +/* Navigation */ +$nav-bg: #ccc !default; +$nav-bg-front: image-url('noise.png') !default; +$nav-bg-back: linear-gradient(lighten($nav-bg, 8), $nav-bg, darken($nav-bg, 11)) !default; +$nav-color: darken($nav-bg, 38) !default; +$nav-color-hover: darken($nav-color, 25) !default; +$nav-placeholder: desaturate(darken($nav-bg, 10), 15) !default; +$nav-border: darken($nav-bg, 10) !default; +$nav-border-top: lighten($nav-bg, 15) !default; +$nav-border-bottom: darken($nav-bg, 25) !default; +$nav-border-left: darken($nav-bg, 11) !default; +$nav-border-right: lighten($nav-bg, 7) !default; + +/* Sidebar colors */ +$sidebar-bg: #f2f2f2 !default; +$sidebar-link-color: $text-color !default; +$sidebar-link-color-hover: $link-color-hover !default; +$sidebar-link-color-active: $link-color-active !default; +$sidebar-color: change-color(mix($text-color, $sidebar-bg, 80), $hue: hue($sidebar-bg), $saturation: saturation($sidebar-bg)/2) !default; +$sidebar-border: desaturate(darken($sidebar-bg, 7), 10) !default; +$sidebar-border-hover: darken($sidebar-bg, 7) !default; +$sidebar-link-color-subdued: lighten($sidebar-color, 20) !default; +$sidebar-link-color-subdued-hover: $sidebar-link-color-hover !default; + +$footer-color: #888 !default; +$footer-bg: #ccc !default; +$footer-bg-front: image-url('noise.png') !default; +$footer-bg-back: linear-gradient(lighten($footer-bg, 8), $footer-bg, darken($footer-bg, 11)) !default; +$footer-color: darken($footer-bg, 38) !default; +$footer-color-hover: darken($footer-color, 10) !default; +$footer-border-top: lighten($footer-bg, 15) !default; +$footer-border-bottom: darken($footer-bg, 15) !default; +$footer-link-color: darken($footer-bg, 38) !default; +$footer-link-color-hover: darken($footer-color, 25) !default; +$page-border-bottom: darken($footer-bg, 5) !default; + + +/* Core theme application */ + +a { + @include link-colors($link-color, $hover: $link-color-hover, $focus: $link-color-hover, $visited: $link-color-visited, $active: $link-color-active); +} +aside.sidebar a { + @include link-colors($sidebar-link-color, $hover: $sidebar-link-color-hover, $focus: $sidebar-link-color-hover, $active: $sidebar-link-color-active); +} +a { + @include transition(color .3s); +} + +html { + background: $page-bg image-url('line-tile.png') top left; +} +body { + > div { + background: $sidebar-bg $noise-bg; + border-bottom: 1px solid $page-border-bottom; + > div { + background: $main-bg $noise-bg; + border-right: 1px solid $sidebar-border; + } + } +} diff --git a/sass/base/_typography.scss b/sass/base/_typography.scss new file mode 100644 index 00000000000..9a6bbacd2a2 --- /dev/null +++ b/sass/base/_typography.scss @@ -0,0 +1,164 @@ +$blockquote: $type-border !default; +$sans: "PT Sans", "Helvetica Neue", Arial, sans-serif !default; +$serif: "PT Serif", Georgia, Times, "Times New Roman", serif !default; +$mono: Menlo, Monaco, "Andale Mono", "lucida console", "Courier New", monospace !default; +$heading-font-family: "PT Serif", "Georgia", "Helvetica Neue", Arial, sans-serif !default; +$header-title-font-family: $heading-font-family !default; +$header-subtitle-font-family: $heading-font-family !default; + +// Fonts +.heading { + font-family: $heading-font-family; +} +.sans { font-family: $sans; } +.serif { font-family: $serif; } +.mono { font-family: $mono; } + +body > header h1 { + font-size: 2.2em; + @extend .heading; + font-family: $header-title-font-family; + font-weight: normal; + line-height: 1.2em; + margin-bottom: 0.6667em; +} +body > header h2 { + font-family: $header-subtitle-font-family; +} + +body { + line-height: 1.5em; + color: $text-color; + @extend .serif; +} +h1 { + font-size: 2.2em; + line-height: 1.2em; +} + +@media only screen and (min-width: 992px) { + body { font-size: 1.15em; } + h1 { font-size: 2.6em; line-height: 1.2em; } +} + +#{headings()}{ + @extend .heading; + text-rendering: optimizelegibility; + margin-bottom: 1em; + font-weight: bold; +} +h2, section h1 { + font-size: 1.5em; +} +h3, section h2, section section h1 { + font-size: 1.3em; +} +h4, section h3, section section h2, section section section h1 { + font-size: 1em; +} +h5, section h4, section section h3 { + font-size: .9em; +} +h6, section h5, section section h4, section section section h3 { + font-size: .8em; +} + +p, article blockquote, ul, ol { margin-bottom: 1.5em; } + +ul { list-style-type: disc; + ul { list-style-type: circle; margin-bottom: 0px; + ul { list-style-type: square; margin-bottom: 0px; }}} + +ol { list-style-type: decimal; + ol { list-style-type: lower-alpha; margin-bottom: 0px; + ol { list-style-type: lower-roman; margin-bottom: 0px; }}} + +ul, ol { &, ul, ol { margin-left: 1.3em; }} +ul, ol { ul, ol { margin-bottom: 0em; }} + +strong { font-weight: bold; } + +em { font-style: italic; } + +sup, sub { font-size: 0.75em; position: relative; display: inline-block; padding: 0 .2em; line-height: .8em;} +sup { top: -.5em; } +sub { bottom: -.5em; } + +a[rev='footnote']{ font-size: .75em; padding: 0 .3em; line-height: 1; } + +q { font-style: italic; + &:before { content: "\201C"; } + &:after { content: "\201D"; } +} + +em, dfn { font-style: italic; } + +strong, dfn { font-weight: bold; } + +del, s { text-decoration: line-through; } + +abbr, acronym { border-bottom: 1px dotted; cursor: help; } + +pre, code, tt { @extend .mono; } + +hr { margin-bottom: 0.2em; } + +small { font-size: .8em; } + +big { font-size: 1.2em; } + +article blockquote { + $bq-margin: 1.2em; + font-style: italic; + position: relative; + font-size: 1.2em; + line-height: 1.5em; + padding-left: 1em; + border-left: 4px solid rgba($text-color-light, .5); + cite { + font-style: italic; + a { color: $text-color-light !important; word-wrap: break-word; } + &:before { content: '\2014'; padding:{right: .3em; left: .3em;} color: $text-color-light; } + } + @media only screen and (min-width: 992px) { + padding-left: 1.5em; + border-left-width: 4px; + } +} + +.pullquote-right:before, +.pullquote-left:before { + /* Reset metrics. */ + padding: 0; + border: none; + + /* Content */ + content: attr(data-pullquote); + + /* Pull out to the right, modular scale based margins. */ + float: right; + width: 45%; + margin: .5em 0 1em 1.5em; + + /* Baseline correction */ + position: relative; + top: 7px; + font-size: 1.4em; + line-height: 1.45em; +} + +.pullquote-left:before { + /* Make left pullquotes align properly. */ + float: left; + margin: .5em 1.5em 1em 0; +} + +/* @extend this to force long lines of continuous text to wrap */ +.force-wrap { + white-space: -moz-pre-wrap; + white-space: -pre-wrap; + white-space: -o-pre-wrap; + white-space: pre-wrap; + word-wrap: break-word; +} + diff --git a/sass/base/_utilities.scss b/sass/base/_utilities.scss new file mode 100644 index 00000000000..2d49e659e74 --- /dev/null +++ b/sass/base/_utilities.scss @@ -0,0 +1,28 @@ +@mixin mask-image($img, $repeat: no-repeat){ + @include experimental(mask-image, image-url($img), -webkit, -moz, -o, -ms); + @include experimental(mask-repeat, $repeat, -webkit, -moz, -o, -ms); + width: image-width($img); + height: image-height($img); +} + +@mixin shadow-box($border: #fff .5em solid, $shadow: rgba(#000, .15) 0 1px 4px, $border-radius: .3em) { + @include border-radius($border-radius); + @include box-shadow($shadow); + @include box-sizing(border-box); + border: $border; +} + +@mixin selection($bg, $color: inherit, $text-shadow: none){ + * { + &::-moz-selection { background: $bg; color: $color; text-shadow: $text-shadow; } + &::-webkit-selection { background: $bg; color: $color; text-shadow: $text-shadow; } + &::selection { background: $bg; color: $color; text-shadow: $text-shadow; } + } +} + +@function text-color($color, $dark: dark, $light: light){ + $text-color: ( (red($color)*299) + (green($color)*587) + (blue($color)*114) ) / 1000; + $text-color: if($text-color >= 150, $dark, $light); + @return $text-color; +} + diff --git a/sass/custom/_colors.scss b/sass/custom/_colors.scss new file mode 100644 index 00000000000..23af5e739d0 --- /dev/null +++ b/sass/custom/_colors.scss @@ -0,0 +1,49 @@ +// Here you can easily change your sites's color scheme. +// To give it a try, uncomment some of the lines below rebuild your blog, and see how it works. +// If you need a handy color picker try http://hslpicker.com + +$header-bg: #fff; +//$subtitle-color: lighten($header-bg, 58); +$nav-bg: #fff; +$nav-bg-front: none; +$nav-bg-back: #fff; +//$sidebar-bg: desaturate(#eceff5, 8); +//$sidebar-link-color: saturate(#526f9a, 10); +//$sidebar-link-color-hover: darken(#7ab662, 9); +$footer-bg: #fff; +$footer-bg-front: #fff; +$footer-bg-back: #fff; + +/* To use the light Solarized highlighting theme uncomment the following line */ +//$solarized: light; + +/* If you want to tweak the Solarized colors you can do that here */ +//$base03: #002b36; //darkest blue +//$base02: #073642; //dark blue +//$base01: #586e75; //darkest gray +//$base00: #657b83; //dark gray +//$base0: #839496; //medium gray +//$base1: #93a1a1; //medium light gray +//$base2: #eee8d5; //cream +//$base3: #fdf6e3; //white +//$solar-yellow: #b58900; +//$solar-orange: #cb4b16; +//$solar-red: #dc322f; +//$solar-magenta: #d33682; +//$solar-violet: #6c71c4; +//$solar-blue: #268bd2; +//$solar-cyan: #2aa198; +//$solar-green: #859900; + + +/* Non highlighted code colors */ +//$pre-bg: $base03; +//$pre-border: darken($base02, 5); +//$pre-color: $base1; + +$main-bg: #fff; +$page-bg: #fff; +$link-color: #268bd2; +$nav-color: $link-color; +$link-color-visited:darken($nav-color, 25); +$title-color: $link-color; diff --git a/sass/custom/_fonts.scss b/sass/custom/_fonts.scss new file mode 100644 index 00000000000..0d51f6843a5 --- /dev/null +++ b/sass/custom/_fonts.scss @@ -0,0 +1,10 @@ +// Here you can easily change font faces which are used in your site. +// To give it a try, uncomment some of the lines below rebuild your blog, and see how it works. your sites's. +// If you love to use Web Fonts, you also need to add some lines to source/_includes/custom/head.html + +$sans: "Open Sans", sans-serif; +$serif: "Noto Serif", serif; +//$mono: "Courier", monospace; +$heading-font-family: $sans; +//$header-title-font-family: "Futura", sans-serif; +//$header-subtitle-font-family: "Futura", sans-serif; diff --git a/sass/custom/_layout.scss b/sass/custom/_layout.scss new file mode 100644 index 00000000000..74c7de9d429 --- /dev/null +++ b/sass/custom/_layout.scss @@ -0,0 +1,21 @@ +// Here you can easily change your sites's layout. +// To give it a try, uncomment some of the lines below, make changes, rebuild your blog, and see how it works. + +//$header-font-size: 1em; +//$header-padding-top: 1.5em; +//$header-padding-bottom: 1.5em; + +//$max-width: 1350px; +//$indented-lists: true; + +// Padding used for layout margins +//$pad-min: 18px; +//$pad-narrow: 25px; +//$pad-medium: 35px; +//$pad-wide: 55px; + +// Sidebar widths used in media queries +//$sidebar-width-medium: 240px; +//$sidebar-pad-medium: 15px; +//$sidebar-pad-wide: 20px; +//$sidebar-width-wide: 300px; diff --git a/sass/custom/_paulus.scss b/sass/custom/_paulus.scss new file mode 100644 index 00000000000..3d8b1655975 --- /dev/null +++ b/sass/custom/_paulus.scss @@ -0,0 +1,48 @@ +@charset "UTF-8"; + +// https://fortawesome.github.io/Font-Awesome/3.2.1/icons/ + +.ha-title { + white-space: nowrap; + + img { + width: 40px; + vertical-align: middle; + } +} + +.usp ul { + text-align: left; + margin-left: 27px; + margin-top: -18px; +} + +.note { + background: #e7f2fa; + padding: 12px; + margin-bottom: 1em; + box-shadow: rgba(0,0,0,0.06) 0 0 10px; + + .title::before { + font-family: "FontAwesome"; + content: "\f05a"; + margin-right: 5px; + } + + .title { + border-top-left-radius: 0.4em; + border-top-right-radius: 0.4em; + font-weight: bold; + display: block; + color: #fff; + background: #6ab0de; + margin: -12px; + padding: 6px 12px; + margin-bottom: 12px; + box-sizing: border-box; + } + + .content { + margin-bottom: 0; + } +} \ No newline at end of file diff --git a/sass/custom/_styles.scss b/sass/custom/_styles.scss new file mode 100644 index 00000000000..d35472805bf --- /dev/null +++ b/sass/custom/_styles.scss @@ -0,0 +1,142 @@ +// This File is imported last, and will override other styles in the cascade +// Add styles here to make changes without digging in too much +html { + background:$page-bg; +} +body { + line-height: 1.8em; + font-size:1.1em; + max-width:1320px; + > div { + background: #fff !important; + border-bottom:2px solid #f2f2f2; + > div { + border-right:2px solid #f2f2f2; + background: #fff !important; + } + } + > nav { + border-bottom:2px solid #f2f2f2; + li+li { + border-left:2px solid #f2f2f2; + } + a { + font-family: $serif; + } + } + >header { + h1 a { + font-weight: bold; + } + } + + #content .blog-index article { + table { + font-size: 90%; + margin-bottom: 1.5em; + thead tr { + border-bottom: 1px solid $sidebar-border; + } + th { + font-weight: bold; + padding-right: 20px; + } + td { + padding: 0 20px 10px 0; + vertical-align: top; + } + } + + header { + h1 { + margin: 0; + a { text-decoration: none; + &:hover { + text-decoration: none; + color:$link-color; + } + } + } + } + } + #blog-archives { + h1 { + a { text-decoration: none; + &:hover { text-decoration:none; } } + } + } + aside.sidebar { + background:#fff; + border-left:2px solid #f2f2f2; + height:100%; + form .search { + padding: .3em .5em 0; + font-size: .85em; + font-family: $serif; + line-height: 1.1em; + width: 95%; + background-color: #fff; + border: 2px solid #f2f2f2; + color: #000; + } + input[type=text]:focus, textarea:focus { + box-shadow: 0 0 0 rgba(255,255,255,1); + } + } + + .toggle-sidebar { + display:none; + } +} +@media only screen and (max-width: 749px) { + aside.sidebar { + padding-top:15px; + padding-bottom:15px; + } +} +@media only screen and (min-width: 750px) { + aside.sidebar { + border-top:0px solid black; + } +} +@media only screen and (min-width:992px) { + body { + font-size: 1.3em; + } + .collapse-sidebar aside.sidebar { + background: #fff; + } +} +.meta { + font-family: $serif; +} +.sticky { + position: fixed; + width:100%; + left: 0; + top: 0; + z-index: 100; +} +::-webkit-input-placeholder { + color: $link-color; +} +:-moz-placeholder { /* Firefox 18- */ + color: $link-color; +} +::-moz-placeholder { /* Firefox 19+ */ + color: $link-color; +} +:-ms-input-placeholder { + color: $link-color; +} + +.highlight, html .gist .gist-file .gist-syntax .gist-highlight { + table { + margin: 0; + td { + padding: 0; + &.code { width: 100%; } + } + } + border: 1px solid $pre-border !important; +} diff --git a/sass/fontawesome/_core.scss b/sass/fontawesome/_core.scss new file mode 100644 index 00000000000..0189c73dfb6 --- /dev/null +++ b/sass/fontawesome/_core.scss @@ -0,0 +1,129 @@ +/* FONT AWESOME CORE + * -------------------------- */ + +[class^="icon-"], +[class*=" icon-"] { + @include icon-FontAwesome(); +} + +[class^="icon-"]:before, +[class*=" icon-"]:before { + text-decoration: inherit; + display: inline-block; + speak: none; +} + +/* makes the font 33% larger relative to the icon container */ +.icon-large:before { + vertical-align: -10%; + font-size: (4em/3); +} + +/* makes sure icons active on rollover in links */ +a { + [class^="icon-"], + [class*=" icon-"] { + display: inline; + } +} + +/* increased font size for icon-large */ +[class^="icon-"], +[class*=" icon-"] { + &.icon-fixed-width { + display: inline-block; + width: (16em/14); + text-align: right; + padding-right: (4em/14); + &.icon-large { + width: (20em/14); + } + } +} + +.icons-ul { + margin-left: $icons-li-width; + list-style-type: none; + + > li { position: relative; } + + .icon-li { + position: absolute; + left: -$icons-li-width; + width: $icons-li-width; + text-align: center; + line-height: inherit; + } +} + +// allows usage of the hide class directly on font awesome icons +[class^="icon-"], +[class*=" icon-"] { + &.hide { + display: none; + } +} + +.icon-muted { color: $iconMuted; } +.icon-light { color: $iconLight; } +.icon-dark { color: $iconDark; } + +// Icon Borders +// ------------------------- + +.icon-border { + border: solid 1px $borderColor; + padding: .2em .25em .15em; + @include border-radius(3px); +} + +// Icon Sizes +// ------------------------- + +.icon-2x { + font-size: 2em; + &.icon-border { + border-width: 2px; + @include border-radius(4px); + } +} +.icon-3x { + font-size: 3em; + &.icon-border { + border-width: 3px; + @include border-radius(5px); + } +} +.icon-4x { + font-size: 4em; + &.icon-border { + border-width: 4px; + @include border-radius(6px); + } +} + +.icon-5x { + font-size: 5em; + &.icon-border { + border-width: 5px; + @include border-radius(7px); + } +} + + +// Floats & Margins +// ------------------------- + +// Quick floats +.pull-right { float: right; } +.pull-left { float: left; } + +[class^="icon-"], +[class*=" icon-"] { + &.pull-left { + margin-right: .3em; + } + &.pull-right { + margin-left: .3em; + } +} diff --git a/sass/fontawesome/_extras.scss b/sass/fontawesome/_extras.scss new file mode 100644 index 00000000000..9a25845d8de --- /dev/null +++ b/sass/fontawesome/_extras.scss @@ -0,0 +1,93 @@ +/* EXTRAS + * -------------------------- */ + +/* Stacked and layered icon */ +@include icon-stack(); + +/* Animated rotating icon */ +.icon-spin { + display: inline-block; + -moz-animation: spin 2s infinite linear; + -o-animation: spin 2s infinite linear; + -webkit-animation: spin 2s infinite linear; + animation: spin 2s infinite linear; +} + +/* Prevent stack and spinners from being taken inline when inside a link */ +a .icon-stack, +a .icon-spin { + display: inline-block; + text-decoration: none; +} + +@-moz-keyframes spin { + 0% { -moz-transform: rotate(0deg); } + 100% { -moz-transform: rotate(359deg); } +} +@-webkit-keyframes spin { + 0% { -webkit-transform: rotate(0deg); } + 100% { -webkit-transform: rotate(359deg); } +} +@-o-keyframes spin { + 0% { -o-transform: rotate(0deg); } + 100% { -o-transform: rotate(359deg); } +} +@-ms-keyframes spin { + 0% { -ms-transform: rotate(0deg); } + 100% { -ms-transform: rotate(359deg); } +} +@keyframes spin { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(359deg); } +} + +/* Icon rotations and mirroring */ +.icon-rotate-90:before { + -webkit-transform: rotate(90deg); + -moz-transform: rotate(90deg); + -ms-transform: rotate(90deg); + -o-transform: rotate(90deg); + transform: rotate(90deg); + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); +} + +.icon-rotate-180:before { + -webkit-transform: rotate(180deg); + -moz-transform: rotate(180deg); + -ms-transform: rotate(180deg); + -o-transform: rotate(180deg); + transform: rotate(180deg); + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); +} + +.icon-rotate-270:before { + -webkit-transform: rotate(270deg); + -moz-transform: rotate(270deg); + -ms-transform: rotate(270deg); + -o-transform: rotate(270deg); + transform: rotate(270deg); + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); +} + +.icon-flip-horizontal:before { + -webkit-transform: scale(-1, 1); + -moz-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + -o-transform: scale(-1, 1); + transform: scale(-1, 1); +} + +.icon-flip-vertical:before { + -webkit-transform: scale(1, -1); + -moz-transform: scale(1, -1); + -ms-transform: scale(1, -1); + -o-transform: scale(1, -1); + transform: scale(1, -1); +} + +/* ensure rotation occurs inside anchor tags */ +a { + .icon-rotate-90, .icon-rotate-180, .icon-rotate-270, .icon-flip-horizontal, .icon-flip-vertical { + &:before { display: inline-block; } + } +} diff --git a/sass/fontawesome/_font-awesome.scss b/sass/fontawesome/_font-awesome.scss new file mode 100644 index 00000000000..379dfd00f06 --- /dev/null +++ b/sass/fontawesome/_font-awesome.scss @@ -0,0 +1,32 @@ +/*! + * Font Awesome 3.2.1 + * the iconic font designed for Bootstrap + * ------------------------------------------------------------------------------ + * The full suite of pictographic icons, examples, and documentation can be + * found at http://fontawesome.io. Stay up to date on Twitter at + * http://twitter.com/fontawesome. + * + * License + * ------------------------------------------------------------------------------ + * - The Font Awesome font is licensed under SIL OFL 1.1 - + * http://scripts.sil.org/OFL + * - Font Awesome CSS, LESS, and SASS files are licensed under MIT License - + * http://opensource.org/licenses/mit-license.html + * - Font Awesome documentation licensed under CC BY 3.0 - + * http://creativecommons.org/licenses/by/3.0/ + * - Attribution is no longer required in Font Awesome 3.0, but much appreciated: + * "Font Awesome by Dave Gandy - http://fontawesome.io" + * + * Author - Dave Gandy + * ------------------------------------------------------------------------------ + * Email: dave@fontawesome.io + * Twitter: http://twitter.com/davegandy + * Work: Lead Product Designer @ Kyruus - http://kyruus.com + */ + +@import "variables"; +@import "mixins"; +@import "path"; +@import "core"; +@import "extras"; +@import "icons"; diff --git a/sass/fontawesome/_icons.scss b/sass/fontawesome/_icons.scss new file mode 100644 index 00000000000..eefda0c9efe --- /dev/null +++ b/sass/fontawesome/_icons.scss @@ -0,0 +1,381 @@ +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + * readers do not read off random characters that represent icons */ + +.icon-glass:before { content: $glass; } +.icon-music:before { content: $music; } +.icon-search:before { content: $search; } +.icon-envelope-alt:before { content: $envelope-alt; } +.icon-heart:before { content: $heart; } +.icon-star:before { content: $star; } +.icon-star-empty:before { content: $star-empty; } +.icon-user:before { content: $user; } +.icon-film:before { content: $film; } +.icon-th-large:before { content: $th-large; } +.icon-th:before { content: $th; } +.icon-th-list:before { content: $th-list; } +.icon-ok:before { content: $ok; } +.icon-remove:before { content: $remove; } +.icon-zoom-in:before { content: $zoom-in; } +.icon-zoom-out:before { content: $zoom-out; } +.icon-power-off:before, +.icon-off:before { content: $off; } +.icon-signal:before { content: $signal; } +.icon-gear:before, +.icon-cog:before { content: $cog; } +.icon-trash:before { content: $trash; } +.icon-home:before { content: $home; } +.icon-file-alt:before { content: $file-alt; } +.icon-time:before { content: $time; } +.icon-road:before { content: $road; } +.icon-download-alt:before { content: $download-alt; } +.icon-download:before { content: $download; } +.icon-upload:before { content: $upload; } +.icon-inbox:before { content: $inbox; } +.icon-play-circle:before { content: $play-circle; } +.icon-rotate-right:before, +.icon-repeat:before { content: $repeat; } +.icon-refresh:before { content: $refresh; } +.icon-list-alt:before { content: $list-alt; } +.icon-lock:before { content: $lock; } +.icon-flag:before { content: $flag; } +.icon-headphones:before { content: $headphones; } +.icon-volume-off:before { content: $volume-off; } +.icon-volume-down:before { content: $volume-down; } +.icon-volume-up:before { content: $volume-up; } +.icon-qrcode:before { content: $qrcode; } +.icon-barcode:before { content: $barcode; } +.icon-tag:before { content: $tag; } +.icon-tags:before { content: $tags; } +.icon-book:before { content: $book; } +.icon-bookmark:before { content: $bookmark; } +.icon-print:before { content: $print; } +.icon-camera:before { content: $camera; } +.icon-font:before { content: $font; } +.icon-bold:before { content: $bold; } +.icon-italic:before { content: $italic; } +.icon-text-height:before { content: $text-height; } +.icon-text-width:before { content: $text-width; } +.icon-align-left:before { content: $align-left; } +.icon-align-center:before { content: $align-center; } +.icon-align-right:before { content: $align-right; } +.icon-align-justify:before { content: $align-justify; } +.icon-list:before { content: $list; } +.icon-indent-left:before { content: $indent-left; } +.icon-indent-right:before { content: $indent-right; } +.icon-facetime-video:before { content: $facetime-video; } +.icon-picture:before { content: $picture; } +.icon-pencil:before { content: $pencil; } +.icon-map-marker:before { content: $map-marker; } +.icon-adjust:before { content: $adjust; } +.icon-tint:before { content: $tint; } +.icon-edit:before { content: $edit; } +.icon-share:before { content: $share; } +.icon-check:before { content: $check; } +.icon-move:before { content: $move; } +.icon-step-backward:before { content: $step-backward; } +.icon-fast-backward:before { content: $fast-backward; } +.icon-backward:before { content: $backward; } +.icon-play:before { content: $play; } +.icon-pause:before { content: $pause; } +.icon-stop:before { content: $stop; } +.icon-forward:before { content: $forward; } +.icon-fast-forward:before { content: $fast-forward; } +.icon-step-forward:before { content: $step-forward; } +.icon-eject:before { content: $eject; } +.icon-chevron-left:before { content: $chevron-left; } +.icon-chevron-right:before { content: $chevron-right; } +.icon-plus-sign:before { content: $plus-sign; } +.icon-minus-sign:before { content: $minus-sign; } +.icon-remove-sign:before { content: $remove-sign; } +.icon-ok-sign:before { content: $ok-sign; } +.icon-question-sign:before { content: $question-sign; } +.icon-info-sign:before { content: $info-sign; } +.icon-screenshot:before { content: $screenshot; } +.icon-remove-circle:before { content: $remove-circle; } +.icon-ok-circle:before { content: $ok-circle; } +.icon-ban-circle:before { content: $ban-circle; } +.icon-arrow-left:before { content: $arrow-left; } +.icon-arrow-right:before { content: $arrow-right; } +.icon-arrow-up:before { content: $arrow-up; } +.icon-arrow-down:before { content: $arrow-down; } +.icon-mail-forward:before, +.icon-share-alt:before { content: $share-alt; } +.icon-resize-full:before { content: $resize-full; } +.icon-resize-small:before { content: $resize-small; } +.icon-plus:before { content: $plus; } +.icon-minus:before { content: $minus; } +.icon-asterisk:before { content: $asterisk; } +.icon-exclamation-sign:before { content: $exclamation-sign; } +.icon-gift:before { content: $gift; } +.icon-leaf:before { content: $leaf; } +.icon-fire:before { content: $fire; } +.icon-eye-open:before { content: $eye-open; } +.icon-eye-close:before { content: $eye-close; } +.icon-warning-sign:before { content: $warning-sign; } +.icon-plane:before { content: $plane; } +.icon-calendar:before { content: $calendar; } +.icon-random:before { content: $random; } +.icon-comment:before { content: $comment; } +.icon-magnet:before { content: $magnet; } +.icon-chevron-up:before { content: $chevron-up; } +.icon-chevron-down:before { content: $chevron-down; } +.icon-retweet:before { content: $retweet; } +.icon-shopping-cart:before { content: $shopping-cart; } +.icon-folder-close:before { content: $folder-close; } +.icon-folder-open:before { content: $folder-open; } +.icon-resize-vertical:before { content: $resize-vertical; } +.icon-resize-horizontal:before { content: $resize-horizontal; } +.icon-bar-chart:before { content: $bar-chart; } +.icon-twitter-sign:before { content: $twitter-sign; } +.icon-facebook-sign:before { content: $facebook-sign; } +.icon-camera-retro:before { content: $camera-retro; } +.icon-key:before { content: $key; } +.icon-gears:before, +.icon-cogs:before { content: $cogs; } +.icon-comments:before { content: $comments; } +.icon-thumbs-up-alt:before { content: $thumbs-up-alt; } +.icon-thumbs-down-alt:before { content: $thumbs-down-alt; } +.icon-star-half:before { content: $star-half; } +.icon-heart-empty:before { content: $heart-empty; } +.icon-signout:before { content: $signout; } +.icon-linkedin-sign:before { content: $linkedin-sign; } +.icon-pushpin:before { content: $pushpin; } +.icon-external-link:before { content: $external-link; } +.icon-signin:before { content: $signin; } +.icon-trophy:before { content: $trophy; } +.icon-github-sign:before { content: $github-sign; } +.icon-upload-alt:before { content: $upload-alt; } +.icon-lemon:before { content: $lemon; } +.icon-phone:before { content: $phone; } +.icon-unchecked:before, +.icon-check-empty:before { content: $check-empty; } +.icon-bookmark-empty:before { content: $bookmark-empty; } +.icon-phone-sign:before { content: $phone-sign; } +.icon-twitter:before { content: $twitter; } +.icon-facebook:before { content: $facebook; } +.icon-github:before { content: $github; } +.icon-unlock:before { content: $unlock; } +.icon-credit-card:before { content: $credit-card; } +.icon-rss:before { content: $rss; } +.icon-hdd:before { content: $hdd; } +.icon-bullhorn:before { content: $bullhorn; } +.icon-bell:before { content: $bell; } +.icon-certificate:before { content: $certificate; } +.icon-hand-right:before { content: $hand-right; } +.icon-hand-left:before { content: $hand-left; } +.icon-hand-up:before { content: $hand-up; } +.icon-hand-down:before { content: $hand-down; } +.icon-circle-arrow-left:before { content: $circle-arrow-left; } +.icon-circle-arrow-right:before { content: $circle-arrow-right; } +.icon-circle-arrow-up:before { content: $circle-arrow-up; } +.icon-circle-arrow-down:before { content: $circle-arrow-down; } +.icon-globe:before { content: $globe; } +.icon-wrench:before { content: $wrench; } +.icon-tasks:before { content: $tasks; } +.icon-filter:before { content: $filter; } +.icon-briefcase:before { content: $briefcase; } +.icon-fullscreen:before { content: $fullscreen; } +.icon-group:before { content: $group; } +.icon-link:before { content: $link; } +.icon-cloud:before { content: $cloud; } +.icon-beaker:before { content: $beaker; } +.icon-cut:before { content: $cut; } +.icon-copy:before { content: $copy; } +.icon-paperclip:before, +.icon-paper-clip:before { content: $paper-clip; } +.icon-save:before { content: $save; } +.icon-sign-blank:before { content: $sign-blank; } +.icon-reorder:before { content: $reorder; } +.icon-list-ul:before { content: $list-ul; } +.icon-list-ol:before { content: $list-ol; } +.icon-strikethrough:before { content: $strikethrough; } +.icon-underline:before { content: $underline; } +.icon-table:before { content: $table; } +.icon-magic:before { content: $magic; } +.icon-truck:before { content: $truck; } +.icon-pinterest:before { content: $pinterest; } +.icon-pinterest-sign:before { content: $pinterest-sign; } +.icon-google-plus-sign:before { content: $google-plus-sign; } +.icon-google-plus:before { content: $google-plus; } +.icon-money:before { content: $money; } +.icon-caret-down:before { content: $caret-down; } +.icon-caret-up:before { content: $caret-up; } +.icon-caret-left:before { content: $caret-left; } +.icon-caret-right:before { content: $caret-right; } +.icon-columns:before { content: $columns; } +.icon-sort:before { content: $sort; } +.icon-sort-down:before { content: $sort-down; } +.icon-sort-up:before { content: $sort-up; } +.icon-envelope:before { content: $envelope; } +.icon-linkedin:before { content: $linkedin; } +.icon-rotate-left:before, +.icon-undo:before { content: $undo; } +.icon-legal:before { content: $legal; } +.icon-dashboard:before { content: $dashboard; } +.icon-comment-alt:before { content: $comment-alt; } +.icon-comments-alt:before { content: $comments-alt; } +.icon-bolt:before { content: $bolt; } +.icon-sitemap:before { content: $sitemap; } +.icon-umbrella:before { content: $umbrella; } +.icon-paste:before { content: $paste; } +.icon-lightbulb:before { content: $lightbulb; } +.icon-exchange:before { content: $exchange; } +.icon-cloud-download:before { content: $cloud-download; } +.icon-cloud-upload:before { content: $cloud-upload; } +.icon-user-md:before { content: $user-md; } +.icon-stethoscope:before { content: $stethoscope; } +.icon-suitcase:before { content: $suitcase; } +.icon-bell-alt:before { content: $bell-alt; } +.icon-coffee:before { content: $coffee; } +.icon-food:before { content: $food; } +.icon-file-text-alt:before { content: $file-text-alt; } +.icon-building:before { content: $building; } +.icon-hospital:before { content: $hospital; } +.icon-ambulance:before { content: $ambulance; } +.icon-medkit:before { content: $medkit; } +.icon-fighter-jet:before { content: $fighter-jet; } +.icon-beer:before { content: $beer; } +.icon-h-sign:before { content: $h-sign; } +.icon-plus-sign-alt:before { content: $plus-sign-alt; } +.icon-double-angle-left:before { content: $double-angle-left; } +.icon-double-angle-right:before { content: $double-angle-right; } +.icon-double-angle-up:before { content: $double-angle-up; } +.icon-double-angle-down:before { content: $double-angle-down; } +.icon-angle-left:before { content: $angle-left; } +.icon-angle-right:before { content: $angle-right; } +.icon-angle-up:before { content: $angle-up; } +.icon-angle-down:before { content: $angle-down; } +.icon-desktop:before { content: $desktop; } +.icon-laptop:before { content: $laptop; } +.icon-tablet:before { content: $tablet; } +.icon-mobile-phone:before { content: $mobile-phone; } +.icon-circle-blank:before { content: $circle-blank; } +.icon-quote-left:before { content: $quote-left; } +.icon-quote-right:before { content: $quote-right; } +.icon-spinner:before { content: $spinner; } +.icon-circle:before { content: $circle; } +.icon-mail-reply:before, +.icon-reply:before { content: $reply; } +.icon-github-alt:before { content: $github-alt; } +.icon-folder-close-alt:before { content: $folder-close-alt; } +.icon-folder-open-alt:before { content: $folder-open-alt; } +.icon-expand-alt:before { content: $expand-alt; } +.icon-collapse-alt:before { content: $collapse-alt; } +.icon-smile:before { content: $smile; } +.icon-frown:before { content: $frown; } +.icon-meh:before { content: $meh; } +.icon-gamepad:before { content: $gamepad; } +.icon-keyboard:before { content: $keyboard; } +.icon-flag-alt:before { content: $flag-alt; } +.icon-flag-checkered:before { content: $flag-checkered; } +.icon-terminal:before { content: $terminal; } +.icon-code:before { content: $code; } +.icon-reply-all:before { content: $reply-all; } +.icon-mail-reply-all:before { content: $mail-reply-all; } +.icon-star-half-full:before, +.icon-star-half-empty:before { content: $star-half-empty; } +.icon-location-arrow:before { content: $location-arrow; } +.icon-crop:before { content: $crop; } +.icon-code-fork:before { content: $code-fork; } +.icon-unlink:before { content: $unlink; } +.icon-question:before { content: $question; } +.icon-info:before { content: $info; } +.icon-exclamation:before { content: $exclamation; } +.icon-superscript:before { content: $superscript; } +.icon-subscript:before { content: $subscript; } +.icon-eraser:before { content: $eraser; } +.icon-puzzle-piece:before { content: $puzzle-piece; } +.icon-microphone:before { content: $microphone; } +.icon-microphone-off:before { content: $microphone-off; } +.icon-shield:before { content: $shield; } +.icon-calendar-empty:before { content: $calendar-empty; } +.icon-fire-extinguisher:before { content: $fire-extinguisher; } +.icon-rocket:before { content: $rocket; } +.icon-maxcdn:before { content: $maxcdn; } +.icon-chevron-sign-left:before { content: $chevron-sign-left; } +.icon-chevron-sign-right:before { content: $chevron-sign-right; } +.icon-chevron-sign-up:before { content: $chevron-sign-up; } +.icon-chevron-sign-down:before { content: $chevron-sign-down; } +.icon-html5:before { content: $html5; } +.icon-css3:before { content: $css3; } +.icon-anchor:before { content: $anchor; } +.icon-unlock-alt:before { content: $unlock-alt; } +.icon-bullseye:before { content: $bullseye; } +.icon-ellipsis-horizontal:before { content: $ellipsis-horizontal; } +.icon-ellipsis-vertical:before { content: $ellipsis-vertical; } +.icon-rss-sign:before { content: $rss-sign; } +.icon-play-sign:before { content: $play-sign; } +.icon-ticket:before { content: $ticket; } +.icon-minus-sign-alt:before { content: $minus-sign-alt; } +.icon-check-minus:before { content: $check-minus; } +.icon-level-up:before { content: $level-up; } +.icon-level-down:before { content: $level-down; } +.icon-check-sign:before { content: $check-sign; } +.icon-edit-sign:before { content: $edit-sign; } +.icon-external-link-sign:before { content: $external-link-sign; } +.icon-share-sign:before { content: $share-sign; } +.icon-compass:before { content: $compass; } +.icon-collapse:before { content: $collapse; } +.icon-collapse-top:before { content: $collapse-top; } +.icon-expand:before { content: $expand; } +.icon-euro:before, +.icon-eur:before { content: $eur; } +.icon-gbp:before { content: $gbp; } +.icon-dollar:before, +.icon-usd:before { content: $usd; } +.icon-rupee:before, +.icon-inr:before { content: $inr; } +.icon-yen:before, +.icon-jpy:before { content: $jpy; } +.icon-renminbi:before, +.icon-cny:before { content: $cny; } +.icon-won:before, +.icon-krw:before { content: $krw; } +.icon-bitcoin:before, +.icon-btc:before { content: $btc; } +.icon-file:before { content: $file; } +.icon-file-text:before { content: $file-text; } +.icon-sort-by-alphabet:before { content: $sort-by-alphabet; } +.icon-sort-by-alphabet-alt:before { content: $sort-by-alphabet-alt; } +.icon-sort-by-attributes:before { content: $sort-by-attributes; } +.icon-sort-by-attributes-alt:before { content: $sort-by-attributes-alt; } +.icon-sort-by-order:before { content: $sort-by-order; } +.icon-sort-by-order-alt:before { content: $sort-by-order-alt; } +.icon-thumbs-up:before { content: $thumbs-up; } +.icon-thumbs-down:before { content: $thumbs-down; } +.icon-youtube-sign:before { content: $youtube-sign; } +.icon-youtube:before { content: $youtube; } +.icon-xing:before { content: $xing; } +.icon-xing-sign:before { content: $xing-sign; } +.icon-youtube-play:before { content: $youtube-play; } +.icon-dropbox:before { content: $dropbox; } +.icon-stackexchange:before { content: $stackexchange; } +.icon-instagram:before { content: $instagram; } +.icon-flickr:before { content: $flickr; } +.icon-adn:before { content: $adn; } +.icon-bitbucket:before { content: $bitbucket; } +.icon-bitbucket-sign:before { content: $bitbucket-sign; } +.icon-tumblr:before { content: $tumblr; } +.icon-tumblr-sign:before { content: $tumblr-sign; } +.icon-long-arrow-down:before { content: $long-arrow-down; } +.icon-long-arrow-up:before { content: $long-arrow-up; } +.icon-long-arrow-left:before { content: $long-arrow-left; } +.icon-long-arrow-right:before { content: $long-arrow-right; } +.icon-apple:before { content: $apple; } +.icon-windows:before { content: $windows; } +.icon-android:before { content: $android; } +.icon-linux:before { content: $linux; } +.icon-dribbble:before { content: $dribbble; } +.icon-skype:before { content: $skype; } +.icon-foursquare:before { content: $foursquare; } +.icon-trello:before { content: $trello; } +.icon-female:before { content: $female; } +.icon-male:before { content: $male; } +.icon-gittip:before { content: $gittip; } +.icon-sun:before { content: $sun; } +.icon-moon:before { content: $moon; } +.icon-archive:before { content: $archive; } +.icon-bug:before { content: $bug; } +.icon-vk:before { content: $vk; } +.icon-weibo:before { content: $weibo; } +.icon-renren:before { content: $renren; } diff --git a/sass/fontawesome/_mixins.scss b/sass/fontawesome/_mixins.scss new file mode 100644 index 00000000000..ca9c5931b3e --- /dev/null +++ b/sass/fontawesome/_mixins.scss @@ -0,0 +1,48 @@ +// Mixins +// -------------------------- + +@mixin icon($icon) { + @include icon-FontAwesome(); + content: $icon; +} + +@mixin icon-FontAwesome() { + font-family: FontAwesome; + font-weight: normal; + font-style: normal; + text-decoration: inherit; + -webkit-font-smoothing: antialiased; + *margin-right: .3em; // fixes ie7 issues +} + +@mixin border-radius($radius) { + -webkit-border-radius: $radius; + -moz-border-radius: $radius; + border-radius: $radius; +} + +@mixin icon-stack($width: 2em, $height: 2em, $top-font-size: 1em, $base-font-size: 2em) { + .icon-stack { + position: relative; + display: inline-block; + width: $width; + height: $height; + line-height: $width; + vertical-align: -35%; + [class^="icon-"], + [class*=" icon-"] { + display: block; + text-align: center; + position: absolute; + width: 100%; + height: 100%; + font-size: $top-font-size; + line-height: inherit; + *line-height: $height; + } + .icon-stack-base { + font-size: $base-font-size; + *line-height: #{$height / $base-font-size}em; + } + } +} diff --git a/sass/fontawesome/_path.scss b/sass/fontawesome/_path.scss new file mode 100644 index 00000000000..bb3f36b70b6 --- /dev/null +++ b/sass/fontawesome/_path.scss @@ -0,0 +1,14 @@ +/* FONT PATH + * -------------------------- */ + +@font-face { + font-family: 'FontAwesome'; + src: url('#{$FontAwesomePath}/fontawesome-webfont.eot?v=#{$FontAwesomeVersion}'); + src: url('#{$FontAwesomePath}/fontawesome-webfont.eot?#iefix&v=#{$FontAwesomeVersion}') format('embedded-opentype'), + url('#{$FontAwesomePath}/fontawesome-webfont.woff?v=#{$FontAwesomeVersion}') format('woff'), + url('#{$FontAwesomePath}/fontawesome-webfont.ttf?v=#{$FontAwesomeVersion}') format('truetype'), + url('#{$FontAwesomePath}/fontawesome-webfont.svg#fontawesomeregular?v=#{$FontAwesomeVersion}') format('svg'); +// src: url('#{$FontAwesomePath}/FontAwesome.otf') format('opentype'); // used when developing fonts + font-weight: normal; + font-style: normal; +} diff --git a/sass/fontawesome/_variables.scss b/sass/fontawesome/_variables.scss new file mode 100644 index 00000000000..7d6bbc5b1d6 --- /dev/null +++ b/sass/fontawesome/_variables.scss @@ -0,0 +1,734 @@ +// Variables +// -------------------------- + +$FontAwesomePath: "../font" !default; +$FontAwesomeVersion: "3.2.1" !default; +$borderColor: #eeeeee !default; +$iconMuted: #eeeeee !default; +$iconLight: white !default; +$iconDark: #333333 !default; +$icons-li-width: (30em/14); + + +$glass: "\f000"; + +$music: "\f001"; + +$search: "\f002"; + +$envelope-alt: "\f003"; + +$heart: "\f004"; + +$star: "\f005"; + +$star-empty: "\f006"; + +$user: "\f007"; + +$film: "\f008"; + +$th-large: "\f009"; + +$th: "\f00a"; + +$th-list: "\f00b"; + +$ok: "\f00c"; + +$remove: "\f00d"; + +$zoom-in: "\f00e"; + +$zoom-out: "\f010"; + +$off: "\f011"; + +$signal: "\f012"; + +$cog: "\f013"; + +$trash: "\f014"; + +$home: "\f015"; + +$file-alt: "\f016"; + +$time: "\f017"; + +$road: "\f018"; + +$download-alt: "\f019"; + +$download: "\f01a"; + +$upload: "\f01b"; + +$inbox: "\f01c"; + +$play-circle: "\f01d"; + +$repeat: "\f01e"; + +$refresh: "\f021"; + +$list-alt: "\f022"; + +$lock: "\f023"; + +$flag: "\f024"; + +$headphones: "\f025"; + +$volume-off: "\f026"; + +$volume-down: "\f027"; + +$volume-up: "\f028"; + +$qrcode: "\f029"; + +$barcode: "\f02a"; + +$tag: "\f02b"; + +$tags: "\f02c"; + +$book: "\f02d"; + +$bookmark: "\f02e"; + +$print: "\f02f"; + +$camera: "\f030"; + +$font: "\f031"; + +$bold: "\f032"; + +$italic: "\f033"; + +$text-height: "\f034"; + +$text-width: "\f035"; + +$align-left: "\f036"; + +$align-center: "\f037"; + +$align-right: "\f038"; + +$align-justify: "\f039"; + +$list: "\f03a"; + +$indent-left: "\f03b"; + +$indent-right: "\f03c"; + +$facetime-video: "\f03d"; + +$picture: "\f03e"; + +$pencil: "\f040"; + +$map-marker: "\f041"; + +$adjust: "\f042"; + +$tint: "\f043"; + +$edit: "\f044"; + +$share: "\f045"; + +$check: "\f046"; + +$move: "\f047"; + +$step-backward: "\f048"; + +$fast-backward: "\f049"; + +$backward: "\f04a"; + +$play: "\f04b"; + +$pause: "\f04c"; + +$stop: "\f04d"; + +$forward: "\f04e"; + +$fast-forward: "\f050"; + +$step-forward: "\f051"; + +$eject: "\f052"; + +$chevron-left: "\f053"; + +$chevron-right: "\f054"; + +$plus-sign: "\f055"; + +$minus-sign: "\f056"; + +$remove-sign: "\f057"; + +$ok-sign: "\f058"; + +$question-sign: "\f059"; + +$info-sign: "\f05a"; + +$screenshot: "\f05b"; + +$remove-circle: "\f05c"; + +$ok-circle: "\f05d"; + +$ban-circle: "\f05e"; + +$arrow-left: "\f060"; + +$arrow-right: "\f061"; + +$arrow-up: "\f062"; + +$arrow-down: "\f063"; + +$share-alt: "\f064"; + +$resize-full: "\f065"; + +$resize-small: "\f066"; + +$plus: "\f067"; + +$minus: "\f068"; + +$asterisk: "\f069"; + +$exclamation-sign: "\f06a"; + +$gift: "\f06b"; + +$leaf: "\f06c"; + +$fire: "\f06d"; + +$eye-open: "\f06e"; + +$eye-close: "\f070"; + +$warning-sign: "\f071"; + +$plane: "\f072"; + +$calendar: "\f073"; + +$random: "\f074"; + +$comment: "\f075"; + +$magnet: "\f076"; + +$chevron-up: "\f077"; + +$chevron-down: "\f078"; + +$retweet: "\f079"; + +$shopping-cart: "\f07a"; + +$folder-close: "\f07b"; + +$folder-open: "\f07c"; + +$resize-vertical: "\f07d"; + +$resize-horizontal: "\f07e"; + +$bar-chart: "\f080"; + +$twitter-sign: "\f081"; + +$facebook-sign: "\f082"; + +$camera-retro: "\f083"; + +$key: "\f084"; + +$cogs: "\f085"; + +$comments: "\f086"; + +$thumbs-up-alt: "\f087"; + +$thumbs-down-alt: "\f088"; + +$star-half: "\f089"; + +$heart-empty: "\f08a"; + +$signout: "\f08b"; + +$linkedin-sign: "\f08c"; + +$pushpin: "\f08d"; + +$external-link: "\f08e"; + +$signin: "\f090"; + +$trophy: "\f091"; + +$github-sign: "\f092"; + +$upload-alt: "\f093"; + +$lemon: "\f094"; + +$phone: "\f095"; + +$check-empty: "\f096"; + +$bookmark-empty: "\f097"; + +$phone-sign: "\f098"; + +$twitter: "\f099"; + +$facebook: "\f09a"; + +$github: "\f09b"; + +$unlock: "\f09c"; + +$credit-card: "\f09d"; + +$rss: "\f09e"; + +$hdd: "\f0a0"; + +$bullhorn: "\f0a1"; + +$bell: "\f0a2"; + +$certificate: "\f0a3"; + +$hand-right: "\f0a4"; + +$hand-left: "\f0a5"; + +$hand-up: "\f0a6"; + +$hand-down: "\f0a7"; + +$circle-arrow-left: "\f0a8"; + +$circle-arrow-right: "\f0a9"; + +$circle-arrow-up: "\f0aa"; + +$circle-arrow-down: "\f0ab"; + +$globe: "\f0ac"; + +$wrench: "\f0ad"; + +$tasks: "\f0ae"; + +$filter: "\f0b0"; + +$briefcase: "\f0b1"; + +$fullscreen: "\f0b2"; + +$group: "\f0c0"; + +$link: "\f0c1"; + +$cloud: "\f0c2"; + +$beaker: "\f0c3"; + +$cut: "\f0c4"; + +$copy: "\f0c5"; + +$paper-clip: "\f0c6"; + +$save: "\f0c7"; + +$sign-blank: "\f0c8"; + +$reorder: "\f0c9"; + +$list-ul: "\f0ca"; + +$list-ol: "\f0cb"; + +$strikethrough: "\f0cc"; + +$underline: "\f0cd"; + +$table: "\f0ce"; + +$magic: "\f0d0"; + +$truck: "\f0d1"; + +$pinterest: "\f0d2"; + +$pinterest-sign: "\f0d3"; + +$google-plus-sign: "\f0d4"; + +$google-plus: "\f0d5"; + +$money: "\f0d6"; + +$caret-down: "\f0d7"; + +$caret-up: "\f0d8"; + +$caret-left: "\f0d9"; + +$caret-right: "\f0da"; + +$columns: "\f0db"; + +$sort: "\f0dc"; + +$sort-down: "\f0dd"; + +$sort-up: "\f0de"; + +$envelope: "\f0e0"; + +$linkedin: "\f0e1"; + +$undo: "\f0e2"; + +$legal: "\f0e3"; + +$dashboard: "\f0e4"; + +$comment-alt: "\f0e5"; + +$comments-alt: "\f0e6"; + +$bolt: "\f0e7"; + +$sitemap: "\f0e8"; + +$umbrella: "\f0e9"; + +$paste: "\f0ea"; + +$lightbulb: "\f0eb"; + +$exchange: "\f0ec"; + +$cloud-download: "\f0ed"; + +$cloud-upload: "\f0ee"; + +$user-md: "\f0f0"; + +$stethoscope: "\f0f1"; + +$suitcase: "\f0f2"; + +$bell-alt: "\f0f3"; + +$coffee: "\f0f4"; + +$food: "\f0f5"; + +$file-text-alt: "\f0f6"; + +$building: "\f0f7"; + +$hospital: "\f0f8"; + +$ambulance: "\f0f9"; + +$medkit: "\f0fa"; + +$fighter-jet: "\f0fb"; + +$beer: "\f0fc"; + +$h-sign: "\f0fd"; + +$plus-sign-alt: "\f0fe"; + +$double-angle-left: "\f100"; + +$double-angle-right: "\f101"; + +$double-angle-up: "\f102"; + +$double-angle-down: "\f103"; + +$angle-left: "\f104"; + +$angle-right: "\f105"; + +$angle-up: "\f106"; + +$angle-down: "\f107"; + +$desktop: "\f108"; + +$laptop: "\f109"; + +$tablet: "\f10a"; + +$mobile-phone: "\f10b"; + +$circle-blank: "\f10c"; + +$quote-left: "\f10d"; + +$quote-right: "\f10e"; + +$spinner: "\f110"; + +$circle: "\f111"; + +$reply: "\f112"; + +$github-alt: "\f113"; + +$folder-close-alt: "\f114"; + +$folder-open-alt: "\f115"; + +$expand-alt: "\f116"; + +$collapse-alt: "\f117"; + +$smile: "\f118"; + +$frown: "\f119"; + +$meh: "\f11a"; + +$gamepad: "\f11b"; + +$keyboard: "\f11c"; + +$flag-alt: "\f11d"; + +$flag-checkered: "\f11e"; + +$terminal: "\f120"; + +$code: "\f121"; + +$reply-all: "\f122"; + +$mail-reply-all: "\f122"; + +$star-half-empty: "\f123"; + +$location-arrow: "\f124"; + +$crop: "\f125"; + +$code-fork: "\f126"; + +$unlink: "\f127"; + +$question: "\f128"; + +$info: "\f129"; + +$exclamation: "\f12a"; + +$superscript: "\f12b"; + +$subscript: "\f12c"; + +$eraser: "\f12d"; + +$puzzle-piece: "\f12e"; + +$microphone: "\f130"; + +$microphone-off: "\f131"; + +$shield: "\f132"; + +$calendar-empty: "\f133"; + +$fire-extinguisher: "\f134"; + +$rocket: "\f135"; + +$maxcdn: "\f136"; + +$chevron-sign-left: "\f137"; + +$chevron-sign-right: "\f138"; + +$chevron-sign-up: "\f139"; + +$chevron-sign-down: "\f13a"; + +$html5: "\f13b"; + +$css3: "\f13c"; + +$anchor: "\f13d"; + +$unlock-alt: "\f13e"; + +$bullseye: "\f140"; + +$ellipsis-horizontal: "\f141"; + +$ellipsis-vertical: "\f142"; + +$rss-sign: "\f143"; + +$play-sign: "\f144"; + +$ticket: "\f145"; + +$minus-sign-alt: "\f146"; + +$check-minus: "\f147"; + +$level-up: "\f148"; + +$level-down: "\f149"; + +$check-sign: "\f14a"; + +$edit-sign: "\f14b"; + +$external-link-sign: "\f14c"; + +$share-sign: "\f14d"; + +$compass: "\f14e"; + +$collapse: "\f150"; + +$collapse-top: "\f151"; + +$expand: "\f152"; + +$eur: "\f153"; + +$gbp: "\f154"; + +$usd: "\f155"; + +$inr: "\f156"; + +$jpy: "\f157"; + +$cny: "\f158"; + +$krw: "\f159"; + +$btc: "\f15a"; + +$file: "\f15b"; + +$file-text: "\f15c"; + +$sort-by-alphabet: "\f15d"; + +$sort-by-alphabet-alt: "\f15e"; + +$sort-by-attributes: "\f160"; + +$sort-by-attributes-alt: "\f161"; + +$sort-by-order: "\f162"; + +$sort-by-order-alt: "\f163"; + +$thumbs-up: "\f164"; + +$thumbs-down: "\f165"; + +$youtube-sign: "\f166"; + +$youtube: "\f167"; + +$xing: "\f168"; + +$xing-sign: "\f169"; + +$youtube-play: "\f16a"; + +$dropbox: "\f16b"; + +$stackexchange: "\f16c"; + +$instagram: "\f16d"; + +$flickr: "\f16e"; + +$adn: "\f170"; + +$bitbucket: "\f171"; + +$bitbucket-sign: "\f172"; + +$tumblr: "\f173"; + +$tumblr-sign: "\f174"; + +$long-arrow-down: "\f175"; + +$long-arrow-up: "\f176"; + +$long-arrow-left: "\f177"; + +$long-arrow-right: "\f178"; + +$apple: "\f179"; + +$windows: "\f17a"; + +$android: "\f17b"; + +$linux: "\f17c"; + +$dribbble: "\f17d"; + +$skype: "\f17e"; + +$foursquare: "\f180"; + +$trello: "\f181"; + +$female: "\f182"; + +$male: "\f183"; + +$gittip: "\f184"; + +$sun: "\f185"; + +$moon: "\f186"; + +$archive: "\f187"; + +$bug: "\f188"; + +$vk: "\f189"; + +$weibo: "\f18a"; + +$renren: "\f18b"; + diff --git a/sass/inuitcss/CHANGELOG.md b/sass/inuitcss/CHANGELOG.md new file mode 100644 index 00000000000..53949c7eff5 --- /dev/null +++ b/sass/inuitcss/CHANGELOG.md @@ -0,0 +1,26 @@ +# Changelog + +This changelog only exists as of v5.0 onward, for previous inuit.css versions’ +history please browse the commit logs. + +## v5.0.0 + +This major version bump saw the introduction of the +[inuit.css web template](https://github.com/csswizardry/inuit.css-web-template), +a means of including inuit.css as a submodule through which you can easily pull +updates from GitHub whilst avoiding having to touch any library code. + +* Use [beautons](https://github.com/csswizardry/beautons) for button styling +* Use [csswizardry-grids](https://github.com/csswizardry/csswizardry-grids) for + inuit.css’ built-in grid system. +* Removed [Batch](http://adamwhitcroft.com/batch/) +* Moved over to [HTML5 Boilerplate](http://html5boilerplate.com/) style helper + classes. +* Added a few more helper classes and mixins. +* Introduced switches to turn objects and abstractions on/off. + +## v5.1.1 + +* Convert special character to unicode. +* Fix/change the `headings` mixin. +* Fix some typos pertaining to the renaming of the spriting object. diff --git a/sass/inuitcss/CONTRIBUTING.md b/sass/inuitcss/CONTRIBUTING.md new file mode 100644 index 00000000000..e98e6a27404 --- /dev/null +++ b/sass/inuitcss/CONTRIBUTING.md @@ -0,0 +1,42 @@ +# Contributing to inuit.css + +So, you want to contribute to inuit.css? That’s awesome! + +However, I do ask that you follow a few small rules… + +## Bugs and issues + +If you believe you have a bug or issue that needs investigating: + +* Search existing issues to avoid opening a duplicate. +* Please open an issue and be as descriptive as possible. +* If you can, accompany the report with a reduced test case via + [jsFiddle](http://jsfiddle.net/) or similar. + +## Pull requests + +If submitting a pull request: + +* Follow the predefined code style used in the framework (I’m afraid that means + no spaces before opening braces and after colons (I’m weird like that)). +* Read my [Git workflow for inuit.css](http://csswizardry.com/2012/12/my-git-workflow-for-inuit-css/) + and try and keep as close to that as possible. +* Carry out all your work in a topic branch with a suitable name, e.g. + `fix/grids`, `feature/new-object` etc. +* Commit sensibly and, if needs be, rebase your branch to tidy your commits up. +* Ensure inuit.css still compiles without error through both the standalone + library and the web template. +* Submit all pull requests against the `incoming` branch. Any pull requests + submitted against `master` **will** be declined. +* Advise on versioning if possible; if the changes require a version bump or + merely a patch bump, please let me know. + +## Feature requests + +I am open to requests for adding new features, but please bear in mind: + +* Make sure it fits in the with ideals and scope of the project; inuit.css has a + very specific purpose and all features need tp tie in with this. +* Have a go at adding the new functionality yourself and opening a pull request. +* **Discuss any features before attempting to develop them yourself;** I would + hate for anyone to spend a tonne of time on something that I end up rejecting. diff --git a/sass/inuitcss/LICENSE b/sass/inuitcss/LICENSE new file mode 100644 index 00000000000..00c3fc50230 --- /dev/null +++ b/sass/inuitcss/LICENSE @@ -0,0 +1,13 @@ +Copyright 2012 Harry Roberts + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/sass/inuitcss/README.md b/sass/inuitcss/README.md new file mode 100644 index 00000000000..3a9ba747017 --- /dev/null +++ b/sass/inuitcss/README.md @@ -0,0 +1,368 @@ +![inuit.css](http://inuitcss.com/img/content/logo.png) + +# inuit.css – v5.0 + +inuit.css is a powerful little framework designed for _serious_ developers. + +It is a Sass based, Object Oriented framework that is full of objects and +abstractions. inuit.css provides little-to-no design which means no undoing +things, no deleting CSS and no adhering to other peoples’ design decisions. + +inuit.css is built on a [BEM](http://bem.info/)-style naming convention and +honed based on [work done by Nicolas Gallagher](https://gist.github.com/1309546). + +inuit.css is ideally suited to designers who want to focus on the creative and +not code, and developers who understand the need for abstraction and an OO +approach. + +inuit.css gives you design patterns, not design decisions. It features nestable, +fluid grids; a double-stranded heading hierarchy; sprites; buttons and a lot, +_lot_ more. + + +**Use inuit.css if:** + +* You need a powerful library of objects and abstractions. +* You understand/appreciate the value of OO code and the need for scalability + and reuse. +* You are a confident/competent developer comfortable with OOCSS and Sass, as + well as familiarity with OO principles in general. + +**Do not use inuit.css if:** + +* You need a framework that supplies design (I’d recommend + [Bootstrap](http://twitter.github.com/bootstrap/) for that). + +## Browser support + +inuit.css is a modern framework for modern browsers. It takes advantage of +[normalize.css](http://necolas.github.com/normalize.css/) and global +`box-sizing:border-box;` (optional). As such, inuit.css is intended for **IE8** +and above only. The last release to support IE7 was +[v4.1.5](https://github.com/csswizardry/inuit.css/archive/v4.1.5.zip). + +## The developer + +There are a million-and-one different CSS frameworks out there so this rather +cringeworthy section is an attempt to validate inuit.css and give it some +credibility… + +I am [Harry Roberts](http://hry.rbrts.me), I am a 22 year old developer and +front-end architect from the UK. I work as a Senior UI Developer for +[BSkyB](http://en.wikipedia.org/wiki/BSkyB) where it is my job to build scalable +front-ends, write internally used CSS frameworks and libraries, and to architect +CSS and front-end builds. + +I [write](http://csswizardry.com), [tweet](http://twitter.com/csswizardry) and +[speak](http://speakerdeck.com/u/csswizardry/) about OOCSS, scalable CSS, +maintainability, working in large teams, CSS performance, CSS architecture and a +whole lot more. + +inuit.css is the result of years of my specialism in CSS (as CSS is all I do). +It is a collection of design patterns, objects, and abstractions that have been +refined and bulletproofed over hours of development across an array of projects +of varying sizes. inuit.css is the result of hundreds of hours of work all +condensed into one powerful little framework. + +## Installation + +**Requires Sass 3.2** + +inuit.css v5.0+ is designed to be even more advanced than previous versions of +your favourite CSS framework! inuit.css’ core library is now intended to be used +as a submodule which means you can always get inuit.css’ latest updates without +ever having to touch a line of library code. + +This works by having this, the inuit.css core library, and the +[inuit.css-web-template](https://github.com/csswizardry/inuit.css-web-template). +The web template is very un-opinionated and simply houses your site, however +you wish to build it. It has a `css/` directory which contains your +project-specific variables and any stylesheets that extend inuit.css, as well as +housing inuit.css as an updatable submodule. Any of inuit.css’ default settings +can be simply overridden from the web template which means you no longer have to +edit a single line of the framework (which in turn means that incorporating +inuit.css updates is as simple as a `$ git pull`). + +### Install via command line (recommended) + +The command line install of inuit.css is _incredibly_ simple: + + $ git clone --recursive git@github.com:csswizardry/inuit.css-web-template.git your-project-folder + $ cd your-project-folder + $ ./go + +What we are doing here is cloning an instance of the inuit.css-web-template and +its submodules (that’s what the `--recursive` does) into a directory which you +specify. Next we `cd` into that directory and run [our `go` script](https://github.com/csswizardry/inuit.css-web-template/blob/master/go). +This script (courtesy of [Nick Payne](http://twitter.com/makeusabrew)) simply +removes the web template’s Git instance and replaces it with a fresh one for +your project, whilst also maintaining your inuit.css submodule. + +### Install via zip + +Though not tested, using inuit.css from its GitHub zip _should_ be fairly +simple. Using inuit.css from zipped source does mean that you can’t update +inuit.css as a submodule, but you may well be able to drop fresh zip files into +the `css/inuit.css/` directory provided you don’t edit any library code. + +Firstly you need to download [the web template](https://github.com/csswizardry/inuit.css-web-template) +zip and unpack it to a location of your choosing. Next you need to download the +inuit.css core zip and unpack that into `css/inuit.css/` in your new project. + +## Getting started + +Once you have your project set up, you should be looking at a directory +structure a little like this: + + your-project-folder/ + css/ + inuit.css/ + _vars.scss + style.scss + watch + index.html + +Your CSS directory holds everything you need to get building: + +* Everything in `css/inuit.css/` is library code which **should not** be edited. + If you `cd` into here you should see that this submodule will initially be on + `(no branch)`, this is because the submodule points at a specific commit and + not a branch. You can treat this directory like any other Git project which + means you can `$ git checkout master` to get your submodule on the most + up-to-date stable version of inuit.css. To grab any new changes simply run + `$ git pull` on the `master` branch. +* `_vars.scss` contains any project variables you need, as well as any overrides + you wish to make to the inuit.css library. It also houses feature switches to + turn inuit.css’ objects and abstractions on and off as you need them. +* `style.scss` is your master Sass stylesheet which will concatenate any other + stylesheets from inuit.css and your extensions when it is compiled. +* `watch` is a handy little script which makes it easier for you to watch your + Sass from the command line; instead of the `$ sass --watch ...` command, you + now need only type `$ ./watch` and the script will do the rest. Running this + will compile your project into `style[.min].css`. + +## How inuit.css works + +inuit.css works in ‘layers’, not dissimilar to [SMACSS](http://smacss.com/). The +principle of inuit.css’ architecture is levels of extension; each layer of code +extends the layer below. + +We start in `inuit.css/generic/`, with our most generic, low-level styling, +things like a clearfix, [normalize.css](http://necolas.github.com/normalize.css/), +our reset and any shared styling like margins (for vertical rythmn). + +On top of that we lay our base styles, found in `inuit.css/base/`; these are +things like unclassed headings, what our basic forms look like, how simple +tables appear. These are all design-free HTML elements that you can extend with +your own styles later on. + +Next up, in `inuit.css/objects/`, we have our objects and abstractions; these +are all scaffolding type constructs that hold no styling, but do heavy lifting. +In here we have things like +[the media object](http://www.stubbornella.org/content/2010/06/25/the-media-object-saves-hundreds-of-lines-of-code/), +[the nav abstraction](http://csswizardry.com/2011/09/the-nav-abstraction/) and +other unstyled objects that you can use to construct design patterns _without_ +design (that bit is left up to you). + +Finally we have our helper classes (though these live back in the `inuit.css/generic/` +directory); these are things like margin helper classes, width classes and other +‘style trumps’ which need to take precedence over any things that have gone +before them. These classes are used to modify your objects and abstractions on a +case-by-case basis. + +## Overriding inuit.css’ defaults + +inuit.css has a file called `_defaults.scss` which contains all the Sass +variables required for the library to compile without failing. These variables +are preset because Sass will error without them, however they are **not** set in +stone, and you are encouranged to override and experiment with them. + +It is tempting to modify their vaules in the inuit.css submodule but this is +**not** the correct method for modifying inuit.css, and in doing so you will +prevent yourself from being able to update inuit.css’ core library. The correct +proceedure is to redefine that variable in `_vars.scss` found in the inuit.css +web template. Let’s take an example… + +In inuit.css’ `_defaults.scss` we find the following: + + $h1-size: 36px!default; // .alpha + $h2-size: 30px!default; // .beta + $h3-size: 24px!default; // .gamma + $h4-size: 20px!default; // .delta + $h5-size: 16px!default; // .epsilon + $h6-size: 14px!default; // .zeta + +Let’s say we want our `h1`s to be `48px` and not `36px`; instead of modifying +the value of `$h1-size` here, pop open your `_vars.scss` file and add this in +the overrides section: + + /*------------------------------------*\ + $OVERRIDES + \*------------------------------------*/ + /** + * Place any variables that should override inuit.css’ defaults here. + */ + $h1-size:48px; + +Now when you compile your CSS, inuit.css will know to ignore its preset value +(that is what `!default` is for) in favour of your own. By doing things this way +you can change the values that inuit.css uses without having to modify inuit.css +itself, thus leaving it free to be updated. + +In this file you will also see your feature switches needed to turn objects and +abstractions on and off. Feature switches are only preset for objects and +abstractions; you will **not** initially find switches for things like +`$debug-mode` in here, but they can be turned on and off by adding an override +as outlined above, e.g.: + + /*------------------------------------*\ + $OVERRIDES + \*------------------------------------*/ + /** + * Place any variables that should override inuit.css’ defaults here. + */ + $h1-size:48px; + $push:true; + $palm-push:true; + +This file can also house any custom variables that you wish to use in extending +inuit.css, as covered in the next section. + +## Extending inuit.css + +inuit.css is, by design, a very design-free framework. This means that the +style and design of your site is left entirely up to you (as it should be). +Because inuit.css gives you lots of customisable foundations, you need to add +the final layer: UI. + +How you go about this step is largely left up to you, but it is common practice +to create another directory in `css/` called `ui/`, leaving you with: + + your-project-folder/ + css/ + inuit.css/ + ui/ + _vars.scss + style.scss + watch + index.html + +In here you can place your own Sass files which hold your UI’s CSS, for example: + + ui/ + _contact-form.scss + _footer.scss + _pricing-table.scss + +You then include these from `style.scss`, like so: + + /** + * She’s all yours, cap’n... Begin importing your stuff here. + */ + //@import "ui/example"; + @import "ui/footer"; + @import "ui/contact-form"; + @import "ui/pricing-table"; + +Now, when you run `$ ./watch`, `style.scss` will be calling: + +1. Your variables +2. The inuit.css core library (as outlined above) +3. Your custom/UI CSS + +…and building a concatenated stylesheet out of it all. Neat, huh?! + +## Footprint + +Out of the box, inuit.css is very small, however it is **imperative** that you +only ever deploy a minified version of your compiled stylesheet to your live +environment. inuit.css compiles stright to minified output by default, but you +can change this in `watch` if you have a build process in place. + +It is also **highly** recommended that you enable gzip compression on any text +assets being served from your site; doing so will further reduce the footprint +of inuit.css and greatly help your site’s performance. + +## Documentation + +There are no official docs for inuit.css because the code _is_ the +documentation. Everything is heavily commented with example HTML. If you +struggle with anything please tweet at [@inuitcss](http://twitter.com/inuitcss) +and/or [open an issue](https://github.com/csswizardry/inuit.css/issues) and I’ll +try help out and use your feedback to improve the documentation. + +It is strongly encouraged that you thoroughly read the source of inuit.css’ +files, particularly `_inuit.scss`. + +### Demos + +Although there are no docs as such, there is [a dedicated inuit.css jsFiddle +account](http://jsfiddle.net/user/inuitcss/fiddles/) which houses plenty of +demos of various aspects of the framework. + +### Development + +You can keep up-to-date with upcoming features, suggestions and fixes by looking +at the [inuit.css Trello board](https://trello.com/board/inuit-css/50a16487543dea585502f3d2). + +## Looking for a little LESS? + +[Peter Wilson](http://twitter.com/pwcc) and +[Nicolas Carlo](https://twitter.com/nicoespeon) are maintaining a LESS port of +inuit.css: check [the GitHub repo](https://github.com/peterwilsoncc/inuit.css). + +## Using Compass? + +[Stephen Way](http://github.com/stephenway) is maintaining a Compass port of +inuit.css: check [the GitHub repo](https://github.com/stephenway/compass-inuit). + +## Test-drive + +If you would like to try inuit.css out before you download anything there is a +compiled version [on jsFiddle](http://jsfiddle.net/inuitcss/a6yS3/) that you +are encouraged to fork and play with. Refer back to +[the source here on GitHub](https://github.com/csswizardry/inuit.css/blob/master/inuit.css/_inuit.scss) +for documentation. + +## As used by + +* [BSkyB](http://en.wikipedia.org/wiki/BSkyB) +* [pr.ofile.me](http://pr.ofile.me) +* [Lukas Bestle](http://lu-x.me) +* [Matthew Tyas](http://matthewtyas.com/) + +### Using inuit.css? + +If you use inuit.css on a live project then [tweet at me](http://twitter.com/inuitcss) +and I’ll send you some inuit.css stickers! + +## Support inuit.css + +If you use and/or like inuit.css, perhaps you might consider [supporting it +through Gumroad](http://gum.co/nOoht). + +## Credits + +inuit.css, although produced and maintained by one developer, could not have +been possible without inspiration and work from an array of other people. + +* **[Nicole Sullivan](https://twitter.com/stubbornella)** for her work on OOCSS +* **[Jonathan Snook](https://twitter.com/snookca)** for his work on SMACSS +* **[Nicolas Gallagher](https://twitter.com/necolas)** for his work on numerous + CSS things +* **[Bryan James](https://twitter.com/WengersToyBus)** for the inuit.css logo +* **[Nick Payne](https://twitter.com/makeusabrew)** for helping with v5.0’s + submodule architecture. + +And probably more… + +## License + +Copyright 2013 Harry Roberts + +Licensed under the Apache License, Version 2.0. + +--- + +**inuit.css is the most powerful little framework out there, and it’s ready to +go!** diff --git a/sass/inuitcss/_defaults.scss b/sass/inuitcss/_defaults.scss new file mode 100644 index 00000000000..37b47eca3d4 --- /dev/null +++ b/sass/inuitcss/_defaults.scss @@ -0,0 +1,226 @@ +@charset "UTF-8"; +/*------------------------------------*\ + $DEFAULTS +\*------------------------------------*/ +/** + * inuit.css’ default variables. Redefine these in your `_vars.scss` file (found + * in the inuit.css-web-template) to override them. + */ + + + + + +/*------------------------------------*\ + $DEBUG +\*------------------------------------*/ +/** + * Debug mode will visually highlight any potential markup/accessibility quirks + * in the browser. Set to `true` or `false`. + */ +$debug-mode: false!default; + + + + + +/*------------------------------------*\ + $BORDER-BOX +\*------------------------------------*/ +/** + * Do you want all elements to adopt `box-sizing:border-box;` as per + * paulirish.com/2012/box-sizing-border-box-ftw ? + */ +$global-border-box: true!default; + + + + + +/*------------------------------------*\ + $BASE +\*------------------------------------*/ +/** + * Base stuff + */ +$base-font-size: 16px!default; +$base-line-height: 24px!default; + +/** + * Base font-family. + */ +$base-font-family: sans-serif!default; + +/** + * Default colour for objects’ borders etc. + */ +$base-ui-color: #ccc!default; + + + + + +/*------------------------------------*\ + $RESPONSIVE +\*------------------------------------*/ +/** + * Responsiveness? + */ +$responsive: true!default; + +/** + * Responsiveness for widescreen/high resolution desktop monitors and beyond? + * Note: `$responsive` variable above must be set to true before enabling this. + */ +$responsive-extra: false!default; + +/** + * Responsive push and pull produce a LOT of code, only turn them on if you + * definitely need them. + */ +$push: false!default; +/** + * Note: `$push` variable above must be set to true before enabling these. + */ +$palm-push: false!default; +$lap-push: false!default; +$lap-and-up-push: false!default; +$portable-push: false!default; +$desk-push: false!default; + +$pull: false!default; +/** + * Note: `$pull` variable above must be set to true before enabling these. + */ +$palm-pull: false!default; +$lap-pull: false!default; +$lap-and-up-pull: false!default; +$portable-pull: false!default; +$desk-pull: false!default; + +/** + * Tell inuit.css when breakpoints start. + */ +$lap-start: 481px!default; +$desk-start: 1024px!default; +$desk-wide-start: 1200px!default; + + + + + +/*------------------------------------*\ + $FONT-SIZES +\*------------------------------------*/ +/** + * Font-sizes (in pixels). Refer to relevant sections for their implementations. + */ +$giga-size: 96px!default; +$mega-size: 72px!default; +$kilo-size: 48px!default; + +$h1-size: 36px!default; // .alpha +$h2-size: 30px!default; // .beta +$h3-size: 24px!default; // .gamma +$h4-size: 20px!default; // .delta +$h5-size: 16px!default; // .epsilon +$h6-size: 14px!default; // .zeta + +$milli-size: 12px!default; +$micro-size: 10px!default; + + + + + +/*------------------------------------*\ + $QUOTES +\*------------------------------------*/ +/** + * English quote marks? + */ +$english-quotes: true!default; + +/** + * If you want English quotes then please do not edit these; they’re only here + * because Sass needs them. + */ +$open-quote: null; +$close-quote: null; + +/** + * If you need non-English quotes, please alter the following values accordingly: + */ +@if $english-quotes != true{ + $open-quote: \00AB; + $close-quote: \00BB; +} + + + + + +/*------------------------------------*\ + $BRAND +\*------------------------------------*/ +/** + * Brand stuff + */ +$brand-color: #4a8ec2!default; +$brand-face: "Helvetica Neue", sans-serif!default; + +/** + * How big would you like round corners to be by default? + */ +$brand-round: 4px!default; + + + + + +/*------------------------------------*\ + $OBJECTS AND ABSTRACTIONS +\*------------------------------------*/ +/** + * Which objects and abstractions would you like to use? + */ +$use-grids: false!default; +$use-flexbox: false!default; +$use-columns: false!default; +$use-nav: false!default; +$use-options: false!default; +$use-pagination: false!default; +$use-breadcrumb: false!default; +$use-media: false!default; +$use-marginalia: false!default; +$use-island: false!default; +$use-block-list: false!default; +$use-matrix: false!default; +$use-split: false!default; +$use-this-or-this: false!default; +$use-link-complex: false!default; +$use-flyout: false!default; +$use-arrows: false!default; +$use-sprite: false!default; +$use-icon-text: false!default; +$use-beautons: false!default; +$use-lozenges: false!default; +$use-rules: false!default; +$use-stats: false!default; +$use-greybox: false!default; + + + + + +/*------------------------------------*\ + $FRAMEWORK +\*------------------------------------*/ +/** + * inuit.css will work these next ones out for use within the framework. + * + * Assign our `$base-line-height` to a new spacing var for more transparency. + */ +$base-spacing-unit: $base-line-height!default; +$half-spacing-unit: $base-spacing-unit / 2!default; +$line-height-ratio: $base-line-height / $base-font-size; diff --git a/sass/inuitcss/_inuit.scss b/sass/inuitcss/_inuit.scss new file mode 100644 index 00000000000..ee0160f0509 --- /dev/null +++ b/sass/inuitcss/_inuit.scss @@ -0,0 +1,214 @@ +@charset "UTF-8"; +/*------------------------------------*\ + INUIT.CSS +\*------------------------------------*/ +/*!* + * + * inuitcss.com -- @inuitcss -- @csswizardry + * + */ +/** + * inuit.css acts as a base stylesheet which you should extend with your own + * theme stylesheet. + * + * inuit.css aims to do the heavy lifting; sorting objects and abstractions, + * design patterns and fiddly bits of CSS, whilst leaving as much design as + * possible to you. inuit.css is the scaffolding to your decorator. + * + * This stylesheet is heavily documented and contains lots of comments, please + * take care to read and refer to them as you build. For further support please + * tweet at @inuitcss. + * + * Owing to the amount of comments please only ever use minified CSS in + * production. This file is purely a dev document. + * + * The table of contents below maps to section titles of the same name, to jump + * to any section simply run a find for $[SECTION-TITLE]. + * + * Most objects and abstractions come with a chunk of markup that you should be + * able to paste into any view to quickly see how the CSS works in conjunction + * with the correct HTML. + * + * inuit.css is written to this standard: github.com/csswizardry/CSS-Guidelines + * + * LICENSE + * + * Copyright 2013 Harry Roberts + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Thank you for choosing inuit.css. May your web fonts render perfectly. + */ + + + + + +/*------------------------------------*\ + $CONTENTS +\*------------------------------------*/ +/** + * CONTENTS............You’re reading it! + * WARNING.............Here be dragons! + * IMPORTS.............Begin importing the sections below + * + * MIXINS..............Super-simple Sass stuff + * NORMALIZE...........normalize.css + * RESET...............Set some defaults + * CLEARFIX............ + * SHARED..............Shared declarations + * + * MAIN................High-level elements like `html`, `body`, etc. + * HEADINGS............Double-stranded heading hierarchy + * PARAGRAPHS.......... + * SMALLPRINT..........Smaller text elements like `small` + * QUOTES.............. + * CODE................ + * LISTS............... + * IMAGES.............. + * TABLES.............. + * FORMS............... + * + * GRIDS...............Fluid, proportional and nestable grids + * FLEXBOX.............Crudely emulate flexbox + * COLUMNS.............CSS3 columns + * NAV.................A simple abstraction to put a list in horizontal nav mode + * OPTIONS.............Grouped nav items + * PAGINATION..........Very stripped back, basic paginator + * BREADCRUMB..........Simple breadcrumb trail object + * MEDIA...............Media object + * MARGINALIA..........Simple marginalia content + * ISLAND..............Boxed off content + * BLOCK-LIST..........Blocky lists of content + * MATRIX..............Gridded lists + * SPLIT...............A simple split-in-two object + * THIS-OR-THIS........Options object + * LINK-COMPLEX........ + * FLYOUT..............Flyout-on-hover object + * ARROWS..............CSS arrows + * SPRITE..............Generic spriting element + * ICON-TEXT...........Icon and text couplings + * BEAUTONS............Use the beautons micro library + * LOZENGES............Basic lozenge styles + * RULES...............Horizontal rules + * STATS...............Simple stats object + * GREYBOX.............Wireframing styles + * + * WIDTHS..............Width classes for use alongside the grid system etc. + * PUSH................Push classes for manipulating grids + * PULL................Pull classes for manipulating grids + * BRAND...............Helper class to apply brand treatment to elements + * HELPER..............A series of helper classes to use arbitrarily + * DEBUG...............Enable to add visual flags for debugging purposes + */ + + + + + +/*------------------------------------*\ + $WARNING +\*------------------------------------*/ +/* + * inuit.css, being an OO framework, works in keeping with the open/closed + * principle. The variables you set previously are now being used throughout + * inuit.css to style everything we need for a base. Any custom styles SHOULD + * NOT be added or modified in inuit.css directly, but added via your theme + * stylesheet as per the open/closed principle: + * + * csswizardry.com/2012/06/the-open-closed-principle-applied-to-css + * + * Try not to edit any CSS beyond this point; if you find you need to do so + * it is a failing of the framework so please tweet at @inuitcss. + */ + + + + + +/*------------------------------------*\ + $IMPORTS +\*------------------------------------*/ +/** + * Generic utility styles etc. + */ +@import "defaults"; +@import "generic/mixins"; +@import "generic/normalize"; +@import "generic/reset"; +@import "generic/clearfix"; +@import "generic/shared"; + + + + + +/** + * Base styles; unclassed HTML elements etc. + */ +@import "base/main"; +@import "base/headings"; +@import "base/paragraphs"; +@import "base/smallprint"; +@import "base/quotes"; +@import "base/code"; +@import "base/images"; +@import "base/lists"; +@import "base/tables"; +@import "base/forms"; + + + + + +/** + * Objects and abstractions + */ +@import "objects/grids"; +@import "objects/flexbox"; +@import "objects/columns"; +@import "objects/nav"; +@import "objects/options"; +@import "objects/pagination"; +@import "objects/breadcrumb"; +@import "objects/media"; +@import "objects/marginalia"; +@import "objects/island"; +@import "objects/block-list"; +@import "objects/matrix"; +@import "objects/split"; +@import "objects/this-or-this"; +@import "objects/link-complex"; +@import "objects/flyout"; +@import "objects/arrows"; +@import "objects/sprite"; +@import "objects/icon-text"; +@import "objects/beautons"; +@import "objects/lozenges"; +@import "objects/rules"; +@import "objects/stats"; +@import "objects/greybox"; + + + + + +/** + * Style trumps; helper and brand classes + */ +@import "generic/widths"; +@import "generic/push"; +@import "generic/pull"; +@import "generic/brand"; +@import "generic/helper"; +@import "generic/debug"; diff --git a/sass/inuitcss/base/_code.scss b/sass/inuitcss/base/_code.scss new file mode 100644 index 00000000000..017d57dd645 --- /dev/null +++ b/sass/inuitcss/base/_code.scss @@ -0,0 +1,64 @@ +@charset "UTF-8"; +/*------------------------------------*\ + $CODE +\*------------------------------------*/ +/** + * Use an explicit font stack to ensure browsers render correct `line-height`. + */ +pre{ + overflow:auto; +} + pre mark{ + background:none; + border-bottom:1px solid; + color:inherit; + } + + +/** + * Add comments to your code examples, e.g.: + * + </div><!-- /wrapper --> + * + */ +.code-comment{ + /** + * Override this setting in your theme stylesheet + */ + opacity:0.75; + filter:alpha(opacity=75); +} + + +/** + * You can add line numbers to your code examples but be warned, it requires + * some pretty funky looking markup, e.g.: + * +
    +
  1. .nav{
  2. +
  3. list-style:none;
  4. +
  5. margin-left:0;
  6. +
  7. }
  8. +
  9. .nav > li,
  10. +
  11. .nav > li > a{
  12. +
  13. display:inline-block;
  14. +
  15. *display:inline-block;
  16. +
  17. zoom:1;
  18. +
  19. }
  20. +
+ * + * 1. Make the list look like code. + * 2. Give the list flush numbers with a leading zero. + * 3. Make sure lines of code don’t wrap. + * 4. Give the code form by forcing the `code` to honour white-space. + */ +.line-numbers{ + font-family:monospace, serif; /* [1] */ + list-style:decimal-leading-zero inside; /* [2] */ + white-space:nowrap; /* [3] */ + overflow:auto; /* [3] */ + margin-left:0; +} + .line-numbers code{ + white-space:pre; /* [4] */ + } diff --git a/sass/inuitcss/base/_forms.scss b/sass/inuitcss/base/_forms.scss new file mode 100644 index 00000000000..6ac305dc71b --- /dev/null +++ b/sass/inuitcss/base/_forms.scss @@ -0,0 +1,175 @@ +@charset "UTF-8"; +/*------------------------------------*\ + $FORMS +\*------------------------------------*/ +/** + * + * Demo: jsfiddle.net/inuitcss/MhHHU + * + */ +fieldset{ + padding:$base-spacing-unit; +} + + +/** + * Text inputs + * + * Instead of a `[type]` selector for each kind of form input, we just use a + * class to target any/every one, e.g.: + + + + * + */ +.text-input, +textarea{ + /** + * Style these via your theme stylesheet. + */ +} + + +/** + * Group sets of form fields in a list, e.g.: + * + + * + */ +.form-fields{ + list-style:none; + margin:0; +} + .form-fields > li{ + @extend %sass-margin-bottom; + } + .form-fields > li:last-child{ + margin-bottom:0; + } + + +/** + * Labels + * + * Define a `.label` class as well as a `label` element. This means we can apply + * label-like styling to meta-labels for groups of options where a `label` + * element is not suitable, e.g.: + * +
  • + Select an option below: + +
  • + * + */ +label, +.label{ + display:block; +} + /** + * Extra help text in `label`s, e.g.: + * + + * + */ + .additional{ + display:block; + font-weight:normal; + } + + +/* + * Groups of checkboxes and radios, e.g.: + * +
  • + +
  • + * + */ +.check-list{ + list-style:none; + margin:0; +} + /* + * Labels in check-lists + */ + .check-label, + .check-list label, + .check-list .label{ + display:inline-block; + } + + +/** + * Spoken forms are for forms that read like spoken word, e.g.: + * +
  • + Hello, my is + . My home + is + +
  • + * + */ +.spoken-form label{ + display:inline-block; + font:inherit; +} + + +/** + * Extra help text displayed after a field when that field is in focus, e.g.: + * + + + .edu emails only + * + * We leave the help text in the document flow and merely set it to + * `visibility:hidden;`. This means that it won’t interfere with anything once + * it reappears. + * + */ +/*small*/.extra-help{ + display:inline-block; + visibility:hidden; +} +.text-input:active + .extra-help, +.text-input:focus + .extra-help{ + visibility:visible; +} diff --git a/sass/inuitcss/base/_headings.scss b/sass/inuitcss/base/_headings.scss new file mode 100644 index 00000000000..d834871f8fe --- /dev/null +++ b/sass/inuitcss/base/_headings.scss @@ -0,0 +1,61 @@ +@charset "UTF-8"; +/*------------------------------------*\ + $HEADINGS +\*------------------------------------*/ +/** + * As per: csswizardry.com/2012/02/pragmatic-practical-font-sizing-in-css + * + * When we define a heading we also define a corresponding class to go with it. + * This allows us to apply, say, `class=alpha` to a `h3`; a double-stranded + * heading hierarchy. + */ +h1,.alpha{ + @include font-size($h1-size); +} +h2,.beta{ + @include font-size($h2-size); +} +h3,.gamma{ + @include font-size($h3-size); +} +h4,.delta{ + @include font-size($h4-size); +} +h5,.epsilon{ + @include font-size($h5-size); +} +h6,.zeta{ + @include font-size($h6-size); +} + + +/** + * Heading groups and generic any-heading class. + * To target any heading of any level simply apply a class of `.hN`, e.g.: + * +
    +

    inuit.css

    +

    Best. Framework. Ever!

    +
    + * + */ +.hN{ +} +hgroup .hN{ + margin-bottom:0; +} + + +/** + * A series of classes for setting massive type; for use in heroes, mastheads, + * promos, etc. + */ +.giga{ + @include font-size($giga-size); +} +.mega{ + @include font-size($mega-size); +} +.kilo{ + @include font-size($kilo-size); +} diff --git a/sass/inuitcss/base/_images.scss b/sass/inuitcss/base/_images.scss new file mode 100644 index 00000000000..59efcbb986b --- /dev/null +++ b/sass/inuitcss/base/_images.scss @@ -0,0 +1,74 @@ +@charset "UTF-8"; +/*------------------------------------*\ + $IMAGES +\*------------------------------------*/ +/** + * Demo: jsfiddle.net/inuitcss/yMtur + */ +/** + * Fluid images. + */ +img{ + max-width:100%; +} + + +/** + * Non-fluid images if you specify `width` and/or `height` attributes. + */ +img[width], +img[height]{ + max-width:none; +} + + +/** + * Rounded images. + */ +.img--round { border-radius:$brand-round; } + + +/** + * Image placement variations. + */ +.img--right{ + float:right; + margin-bottom:$base-spacing-unit; + margin-left:$base-spacing-unit; +} +.img--left{ + float:left; + margin-right:$base-spacing-unit; + margin-bottom:$base-spacing-unit; +} +.img--center{ + display:block; + margin-right:auto; + margin-bottom:$base-spacing-unit; + margin-left:auto; +} + + +/** + * Keep your images on your baseline. + * + * Please note, these will not work too nicely with fluid images and will + * distort when resized below a certain width. Use with caution. + */ +.img--short{ + height:5 * $base-spacing-unit; +} +.img--medium{ + height:10 * $base-spacing-unit; +} +.img--tall{ + height:15 * $base-spacing-unit; +} + + +/** + * Images in `figure` elements. + */ +figure > img{ + display:block; +} diff --git a/sass/inuitcss/base/_lists.scss b/sass/inuitcss/base/_lists.scss new file mode 100644 index 00000000000..29ffc4cc57c --- /dev/null +++ b/sass/inuitcss/base/_lists.scss @@ -0,0 +1,20 @@ +@charset "UTF-8"; +/*------------------------------------*\ + $LISTS +\*------------------------------------*/ +/** + * Remove vertical spacing from nested lists. + */ +li{ + > ul, + > ol{ + margin-bottom:0; + } +} + +/** + * Have a numbered `ul` without the semantics implied by using an `ol`. + */ +/*ul*/.numbered-list{ + list-style-type:decimal; +} diff --git a/sass/inuitcss/base/_main.scss b/sass/inuitcss/base/_main.scss new file mode 100644 index 00000000000..12c7f111c68 --- /dev/null +++ b/sass/inuitcss/base/_main.scss @@ -0,0 +1,9 @@ +@charset "UTF-8"; +/*------------------------------------*\ + $MAIN +\*------------------------------------*/ +html{ + font:#{($base-font-size/16px)*1em}/#{$line-height-ratio} $base-font-family; + overflow-y:scroll; + min-height:100%; +} diff --git a/sass/inuitcss/base/_paragraphs.scss b/sass/inuitcss/base/_paragraphs.scss new file mode 100644 index 00000000000..5dcdfe79deb --- /dev/null +++ b/sass/inuitcss/base/_paragraphs.scss @@ -0,0 +1,12 @@ +@charset "UTF-8"; +/*------------------------------------*\ + $PARAGRAPHS +\*------------------------------------*/ +/** + * The `.lede` class is used to make the introductory text (usually a paragraph) + * of a document slightly larger. + */ +.lede, +.lead{ + @include font-size($base-font-size * 1.125); +} diff --git a/sass/inuitcss/base/_quotes.scss b/sass/inuitcss/base/_quotes.scss new file mode 100644 index 00000000000..490948ec44e --- /dev/null +++ b/sass/inuitcss/base/_quotes.scss @@ -0,0 +1,97 @@ +@charset "UTF-8"; +/*------------------------------------*\ + $QUOTES +\*------------------------------------*/ +/** + * If English quotes are set in `_vars.scss`, define them here. + */ +@if $english-quotes == true{ + $open-quote: \201C; + $close-quote: \201D; +} + + +/** + * Big up @boblet: html5doctor.com/blockquote-q-cite + */ + +/** + * Inline quotes. + */ +q{ + quotes:"\2018" "\2019" "#{$open-quote}" "#{$close-quote}"; + + &:before{ + content:"\2018"; + content:open-quote; + } + &:after{ + content:"\2019"; + content:close-quote; + } + + q:before{ + content:"\201C"; + content:open-quote; + } + q:after{ + content:"\201D"; + content:close-quote; + } +} + +blockquote{ + quotes:"#{$open-quote}" "#{$close-quote}"; + + p:before{ + content:"#{$open-quote}"; + content:open-quote; + } + p:after{ + content:""; + content:no-close-quote; + } + p:last-of-type:after{ + content:"#{$close-quote}"; + content:close-quote; + } + + q:before{ + content:"\2018"; + content:open-quote; + } + q:after{ + content:"\2019"; + content:close-quote; + } +} + + +/** + * +
    +

    Insanity: doing the same thing over and over again and expecting + different results.

    + Albert Einstein +
    + * + */ +blockquote{ + /** + * .4em is roughly equal to the width of the opening “ that we wish to hang. + */ + text-indent:-0.41em; + + p:last-of-type{ + margin-bottom:0; + } +} + +.source{ + display:block; + text-indent:0; + + &:before{ + content:"\2014"; + } +} diff --git a/sass/inuitcss/base/_smallprint.scss b/sass/inuitcss/base/_smallprint.scss new file mode 100644 index 00000000000..dc57e798e25 --- /dev/null +++ b/sass/inuitcss/base/_smallprint.scss @@ -0,0 +1,14 @@ +@charset "UTF-8"; +/*------------------------------------*\ + $SMALLPRINT +\*------------------------------------*/ +/** + * A series of classes for setting tiny type; for use in smallprint etc. + */ +.smallprint, +.milli{ + @include font-size($milli-size); +} +.micro{ + @include font-size($micro-size); +} diff --git a/sass/inuitcss/base/_tables.scss b/sass/inuitcss/base/_tables.scss new file mode 100644 index 00000000000..bd223ba833a --- /dev/null +++ b/sass/inuitcss/base/_tables.scss @@ -0,0 +1,164 @@ +@charset "UTF-8"; +/*------------------------------------*\ + $TABLES +\*------------------------------------*/ +/** + * We have a lot at our disposal for making very complex table constructs, e.g.: + * + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FooBar
    LoremIpsumDolorSit
    SitDolor03.788Lorem
    Dolor32.210Lorem
    Dolor47.797Lorem
    SitDolor09.640Lorem
    Dolor12.117Lorem
    + * + */ +table{ + width:100%; +} +th, +td{ + padding:$base-spacing-unit / 4; + @media screen and (min-width:480px){ + padding:$half-spacing-unit; + } + text-align:left; +} + + +/** + * Cell alignments + */ +[colspan]{ + text-align:center; +} +[colspan="1"]{ + text-align:left; +} +[rowspan]{ + vertical-align:middle; +} +[rowspan="1"]{ + vertical-align:top; +} +.numerical{ + text-align:right; +} + +/** + * In the HTML above we see several `col` elements with classes whose numbers + * represent a percentage width for that column. We leave one column free of a + * class so that column can soak up the effects of any accidental breakage in + * the table. + */ +.t5 { width: 5% } +.t10 { width:10% } +.t12 { width:12.5% } /* 1/8 */ +.t15 { width:15% } +.t20 { width:20% } +.t25 { width:25% } /* 1/4 */ +.t30 { width:30% } +.t33 { width:33.333% } /* 1/3 */ +.t35 { width:35% } +.t37 { width:37.5% } /* 3/8 */ +.t40 { width:40% } +.t45 { width:45% } +.t50 { width:50% } /* 1/2 */ +.t55 { width:55% } +.t60 { width:60% } +.t62 { width:62.5% } /* 5/8 */ +.t65 { width:65% } +.t66 { width:66.666% } /* 2/3 */ +.t70 { width:70% } +.t75 { width:75% } /* 3/4*/ +.t80 { width:80% } +.t85 { width:85% } +.t87 { width:87.5% } /* 7/8 */ +.t90 { width:90% } +.t95 { width:95% } + + +/** + * Bordered tables + */ +.table--bordered{ + + th, + td{ + border:1px solid $base-ui-color; + + &:empty{ + border:none; + } + } + + thead tr:last-child th{ + border-bottom-width:2px; + } + + tbody tr th:last-of-type{ + border-right-width:2px; + } +} + + +/** + * Striped tables + */ +.table--striped{ + + tbody tr:nth-of-type(odd){ + background-color:#ffc; /* Override this color in your theme stylesheet */ + } +} + + +/** + * Data table + */ +.table--data{ + font:12px/1.5 sans-serif; +} diff --git a/sass/inuitcss/component.json b/sass/inuitcss/component.json new file mode 100644 index 00000000000..d746826dcf5 --- /dev/null +++ b/sass/inuitcss/component.json @@ -0,0 +1,5 @@ +{ + "name": "inuit.css", + "version": "5.0.1", + "dependencies": {} +} diff --git a/sass/inuitcss/generic/_brand.scss b/sass/inuitcss/generic/_brand.scss new file mode 100644 index 00000000000..2da6001e776 --- /dev/null +++ b/sass/inuitcss/generic/_brand.scss @@ -0,0 +1,19 @@ +@charset "UTF-8"; +/*------------------------------------*\ + $BRAND +\*------------------------------------*/ +/** + * `.brand` is a quick and simple way to apply your brand face and/or color to + * any element using a handy helper class. + */ +.brand{ + font-family:$brand-face +!important; + color:$brand-color +!important; +} +.brand-face{ + font-family:$brand-face +!important; +} +.brand-color, +.brand-colour{ + color:$brand-color +!important; +} \ No newline at end of file diff --git a/sass/inuitcss/generic/_clearfix.scss b/sass/inuitcss/generic/_clearfix.scss new file mode 100644 index 00000000000..e02390ba2b5 --- /dev/null +++ b/sass/inuitcss/generic/_clearfix.scss @@ -0,0 +1,16 @@ +@charset "UTF-8"; +/*------------------------------------*\ + $CLEARFIX +\*------------------------------------*/ +/** + * Micro clearfix, as per: css-101.org/articles/clearfix/latest-new-clearfix-so-far.php + * Extend the clearfix class with Sass to avoid the `.cf` class appearing over + * and over in your markup. + */ +.cf{ + &:after{ + content:""; + display:table; + clear:both; + } +} diff --git a/sass/inuitcss/generic/_debug.scss b/sass/inuitcss/generic/_debug.scss new file mode 100644 index 00000000000..0f1d83f858b --- /dev/null +++ b/sass/inuitcss/generic/_debug.scss @@ -0,0 +1,169 @@ +@charset "UTF-8"; +@if $debug-mode == true{ +/*------------------------------------*\ + $DEBUG +\*------------------------------------*/ +/** + * Enable this stylesheet to visually detect any improperly nested or + * potentially invalid markup, or any potentially inaccessible code. + * + * Red == definite error + * Yellow == double-check + * None == should be fine + * + * Please note that this method of checking markup quality should not be relied + * upon entirely. Validate your markup! + */ + + +/** + * Are there any empty elements in your page? + */ +:empty{ + outline:5px solid yellow; +} + + +/** + * Images require `alt` attributes, empty `alt`s are fine but should be + * double-checked, no `alt` is bad and is flagged red. + */ +img{ + outline:5px solid red; +} +img[alt]{ + outline:none; +} +img[alt=""]{ + outline:5px solid yellow; +} + + +/** + * Links sometimes, though not always, benefit from `title` attributes. Links + * without are never invalid but it’s a good idea to check. + */ +a{ + outline:5px solid yellow; +} +a[title]{ + outline:none; +} + + +/** + * Double-check any links whose `href` is something questionable. + */ +a[href="#"], +a[href*="javascript"]{ + outline:5px solid yellow; +} + + +/** + * The `target` attribute ain’t too nice... + */ +a[target]{ + outline:5px solid yellow; +} + + +/** + * Ensure any lists only contain `li`s as children. + */ +ul, +ol{ + > *:not(li){ + outline:5px solid red; + } +} + + +/** + * It’s always nice to give `th`s `scope` attributes. + */ +th{ + outline:5px solid yellow; +} +th[scope]{ + outline:none; +} + + +/** + * `tr`s as children of `table`s ain’t great, did you need a `thead`/`tbody`? + */ +table > tr{ + outline:5px solid yellow; +} + + +/** + * `tfoot` needs to come *before* `tbody`. + */ +tbody + tfoot{ + outline:5px solid yellow; +} + + +/** + * Forms require `action` attributes + */ +form{ + outline:5px solid red; +} +form[action]{ + outline:none; +} + + +/** + * Various form-field types have required attributes. `input`s need `type` + * attributes, `textarea`s need `rows` and `cols` attributes and submit buttons + * need a `value` attribute. + */ +textarea, +input{ + outline:5px solid red; +} +input[type]{ + outline:none; +} +textarea[rows][cols]{ + outline:none; +} +input[type=submit]{ + outline:5px solid red; +} +input[type=submit][value]{ + outline:none; +} + + +/** + * Avoid inline styles where possible. + */ +[style]{ + outline:5px solid yellow; +} + + +/** + * You should avoid using IDs for CSS, is this doing any styling? + */ +[id]{ + outline:5px solid yellow; +} + + +/** + * Are you using the grid system correctly? + */ +.gw > :not(.g), +.grid-wrapper > :not(.grid), +.gw--rev > :not(.g), +.grid-wrapper--rev > :not(.grid){ + outline:5px solid red; +} + +}/* endif */ diff --git a/sass/inuitcss/generic/_helper.scss b/sass/inuitcss/generic/_helper.scss new file mode 100644 index 00000000000..3a488142bae --- /dev/null +++ b/sass/inuitcss/generic/_helper.scss @@ -0,0 +1,185 @@ +@charset "UTF-8"; +/*------------------------------------*\ + $HELPER +\*------------------------------------*/ +/** + * A series of helper classes to use arbitrarily. Only use a helper class if an + * element/component doesn’t already have a class to which you could apply this + * styling, e.g. if you need to float `.main-nav` left then add `float:left;` to + * that ruleset as opposed to adding the `.float--left` class to the markup. + * + * A lot of these classes carry `!important` as you will always want them to win + * out over other selectors. + */ + + +/** + * Add/remove floats + */ +.float--right { float:right!important; } +.float--left { float:left !important; } +.float--none { float:none !important; } + + +/** + * Text alignment + */ +.text--left { text-align:left !important; } +.text--center { text-align:center!important; } +.text--right { text-align:right !important; } + + +/** + * Font weights + */ +.weight--light { font-weight:300!important; } +.weight--normal { font-weight:400!important; } +.weight--semibold { font-weight:600!important; } + + +/** + * Add/remove margins + */ +.push { margin: $base-spacing-unit!important; } +.push--top { margin-top: $base-spacing-unit!important; } +.push--right { margin-right: $base-spacing-unit!important; } +.push--bottom { margin-bottom:$base-spacing-unit!important; } +.push--left { margin-left: $base-spacing-unit!important; } +.push--ends { margin-top: $base-spacing-unit!important; margin-bottom:$base-spacing-unit!important; } +.push--sides { margin-right: $base-spacing-unit!important; margin-left: $base-spacing-unit!important; } + +.push-half { margin: $half-spacing-unit!important; } +.push-half--top { margin-top: $half-spacing-unit!important; } +.push-half--right { margin-right: $half-spacing-unit!important; } +.push-half--bottom { margin-bottom:$half-spacing-unit!important; } +.push-half--left { margin-left: $half-spacing-unit!important; } +.push-half--ends { margin-top: $half-spacing-unit!important; margin-bottom:$half-spacing-unit!important; } +.push-half--sides { margin-right: $half-spacing-unit!important; margin-left: $half-spacing-unit!important; } + +.flush { margin: 0!important; } +.flush--top { margin-top: 0!important; } +.flush--right { margin-right: 0!important; } +.flush--bottom { margin-bottom:0!important; } +.flush--left { margin-left: 0!important; } +.flush--ends { margin-top: 0!important; margin-bottom:0!important; } +.flush--sides { margin-right: 0!important; margin-left: 0!important; } + + +/** + * Add/remove paddings + */ +.soft { padding: $base-spacing-unit!important; } +.soft--top { padding-top: $base-spacing-unit!important; } +.soft--right { padding-right: $base-spacing-unit!important; } +.soft--bottom { padding-bottom:$base-spacing-unit!important; } +.soft--left { padding-left: $base-spacing-unit!important; } +.soft--ends { padding-top: $base-spacing-unit!important; padding-bottom:$base-spacing-unit!important; } +.soft--sides { padding-right: $base-spacing-unit!important; padding-left: $base-spacing-unit!important; } + +.soft-half { padding: $half-spacing-unit!important; } +.soft-half--top { padding-top: $half-spacing-unit!important; } +.soft-half--right { padding-right: $half-spacing-unit!important; } +.soft-half--bottom { padding-bottom:$half-spacing-unit!important; } +.soft-half--left { padding-left: $half-spacing-unit!important; } +.soft-half--ends { padding-top: $half-spacing-unit!important; padding-bottom:$half-spacing-unit!important; } +.soft-half--sides { padding-right: $half-spacing-unit!important; padding-left: $half-spacing-unit!important; } + +.hard { padding: 0!important; } +.hard--top { padding-top: 0!important; } +.hard--right { padding-right: 0!important; } +.hard--bottom { padding-bottom:0!important; } +.hard--left { padding-left: 0!important; } +.hard--ends { padding-top: 0!important; padding-bottom:0!important; } +.hard--sides { padding-right: 0!important; padding-left: 0!important; } + + +/** + * Pull items full width of `.island` parents. + */ +.full-bleed{ + margin-right:-$base-spacing-unit!important; + margin-left: -$base-spacing-unit!important; + + .islet &{ + margin-right:-($half-spacing-unit)!important; + margin-left: -($half-spacing-unit)!important; + } +} + + +/** + * Add a help cursor to any element that gives the user extra information on + * `:hover`. + */ +.informative{ + cursor:help!important; +} + + +/** + * Mute an object by reducing its opacity. + */ +.muted{ + opacity:0.5!important; + filter:alpha(opacity = 50)!important; +} + + +/** + * Align items to the right where they imply progression/movement forward, e.g.: + * +

    Read more...

    + * + */ +.proceed{ + text-align:right!important; +} + + +/** + * Add a right-angled quote to links that imply movement, e.g.: + * + Read more + * + */ +.go:after{ + content:"\00A0" "\00BB"!important; +} + + +/** + * Apply capital case to an element (usually a `strong`). + */ +.caps{ + text-transform:uppercase!important; +} + + +/** + * Hide content off-screen without resorting to `display:none;`, also provide + * breakpoint specific hidden elements. + */ +@mixin accessibility{ + border:0!important; + clip:rect(0 0 0 0)!important; + height:1px!important; + margin:-1px!important; + overflow:hidden!important; + padding:0!important; + position: absolute!important; + width:1px!important; +} +.accessibility, +.visuallyhidden{ + @include accessibility; +} +@if $responsive{ + @each $state in palm, lap, lap-and-up, portable, desk, desk-wide{ + @include media-query(#{$state}){ + .accessibility--#{$state}, + .visuallyhidden--#{$state}{ + @include accessibility; + } + } + } +} diff --git a/sass/inuitcss/generic/_mixins.scss b/sass/inuitcss/generic/_mixins.scss new file mode 100644 index 00000000000..6815c2f4698 --- /dev/null +++ b/sass/inuitcss/generic/_mixins.scss @@ -0,0 +1,329 @@ +@charset "UTF-8"; +/*------------------------------------*\ + $MIXINS +\*------------------------------------*/ +/** + * Create a fully formed type style (sizing and vertical rhythm) by passing in a + * single value, e.g.: + * + `@include font-size(10px);` + * + * Thanks to @redclov3r for the `line-height` Sass: + * twitter.com/redclov3r/status/250301539321798657 + */ +@mixin font-size($font-size, $line-height:true){ + font-size:$font-size; + font-size:($font-size / $base-font-size)*1rem; + @if $line-height == true{ + line-height:ceil($font-size / $base-line-height) * ($base-line-height / $font-size); + } +} + + +/** + * Style any number of headings in one fell swoop, e.g.: + * + .foo{ + @include headings(1, 3){ + color:#BADA55; + } + } + * + * With thanks to @lar_zzz, @paranoida, @rowanmanning and ultimately + * @thierrylemoulec for refining and improving my initial mixin. + */ +@mixin headings($from: 1, $to: 6){ + %base-heading { + @content + } + + @if $from >= 1 and $to <= 6{ + @for $i from $from through $to{ + h#{$i}{ + @extend %base-heading; + } + } + } +} + + +/** + * Create vendor-prefixed CSS in one go, e.g. + * + `@include vendor(border-radius, 4px);` + * + */ +@mixin vendor($property, $value...){ + -webkit-#{$property}:$value; + -moz-#{$property}:$value; + -ms-#{$property}:$value; + -o-#{$property}:$value; + #{$property}:$value; +} + + +/** + * Create CSS keyframe animations for all vendors in one go, e.g.: + * + .foo{ + @include vendor(animation, shrink 3s); + } + + @include keyframe(shrink){ + from{ + font-size:5em; + } + } + * + * Courtesy of @integralist: twitter.com/integralist/status/260484115315437569 + */ +@mixin keyframe ($animation-name){ + @-webkit-keyframes $animation-name{ + @content; + } + + @-moz-keyframes $animation-name{ + @content; + } + + @-ms-keyframes $animation-name{ + @content; + } + + @-o-keyframes $animation-name{ + @content; + } + + @keyframes $animation-name{ + @content; + } +} + + +/** + * Force overly long spans of text to truncate, e.g.: + * + `@include truncate(100%);` + * + * Where `$truncation-boundary` is a united measurement. + */ +@mixin truncate($truncation-boundary){ + max-width:$truncation-boundary; + white-space:nowrap; + overflow:hidden; + text-overflow:ellipsis; +} + + +/** + * CSS arrows!!! But... before you read on, you might want to grab a coffee... + * + * This mixin creates a CSS arrow on a given element. We can have the arrow + * appear in one of 12 locations, thus: + * + * 01 02 03 + * +------------------+ + * 12 | | 04 + * | | + * 11 | | 05 + * | | + * 10 | | 06 + * +------------------+ + * 09 08 07 + * + * You pass this position in along with a desired arrow color and optional + * border color, for example: + * + * `@include arrow(top, left, red)` + * + * for just a single, red arrow, or: + * + * `@include arrow(bottom, center, red, black)` + * + * which will create a red triangle with a black border which sits at the bottom + * center of the element. Call the mixin thus: + * + .foo{ + background-color:#BADA55; + border:1px solid #ACE; + @include arrow(top, left, #BADA55, #ACE); + } + * + */ +@mixin arrow($arrow-edge, $arrow-location, $arrow-color, $border-color: $arrow-color){ + + @if $arrow-edge == top{ + + @extend %arrow--top; + + &:before{ + border-bottom-color:$border-color!important; + } + + &:after{ + border-bottom-color:$arrow-color!important; + } + + @if $arrow-location == left{ + @extend %arrow--left; + } + + @if $arrow-location == center{ + @extend %arrow--center; + } + + @if $arrow-location == right{ + @extend %arrow--right; + } + + } + + @if $arrow-edge == right{ + + @extend %arrow--far; + + &:before{ + border-left-color:$border-color!important; + } + + &:after{ + border-left-color:$arrow-color!important; + } + + @if $arrow-location == top{ + @extend %arrow--upper; + } + + @if $arrow-location == center{ + @extend %arrow--middle; + } + + @if $arrow-location == bottom{ + @extend %arrow--lower; + } + + } + + @if $arrow-edge == bottom{ + + @extend %arrow--bottom; + + &:before{ + border-top-color:$border-color!important; + } + + &:after{ + border-top-color:$arrow-color!important; + } + + @if $arrow-location == left{ + @extend %arrow--left; + } + + @if $arrow-location == center{ + @extend %arrow--center; + } + + @if $arrow-location == right{ + @extend %arrow--right; + } + + } + + @if $arrow-edge == left{ + + @extend %arrow--near; + + &:before{ + border-right-color:$border-color!important; + } + + &:after{ + border-right-color:$arrow-color!important; + } + + @if $arrow-location == top{ + @extend %arrow--upper; + } + + @if $arrow-location == center{ + @extend %arrow--middle; + } + + @if $arrow-location == bottom{ + @extend %arrow--lower; + } + + } + +} + + +/** + * Media query mixin. + * + * It’s not great practice to define solid breakpoints up-front, preferring to + * modify your design when it needs it, rather than assuming you’ll want a + * change at ‘mobile’. However, as inuit.css is required to take a hands off + * approach to design decisions, this is the closest we can get to baked-in + * responsiveness. It’s flexible enough to allow you to set your own breakpoints + * but solid enough to be frameworkified. + * + * We define some broad breakpoints in our vars file that are picked up here + * for use in a simple media query mixin. Our options are: + * + * palm + * lap + * lap-and-up + * portable + * desk + * desk-wide + * + * Not using a media query will, naturally, serve styles to all devices. + * + * `@include media-query(palm){ [styles here] }` + * + * We work out your end points for you: + */ +$palm-end: $lap-start - 1px; +$lap-end: $desk-start - 1px; + +@mixin media-query($media-query){ + + @if $media-query == palm{ + + @media only screen and (max-width:$palm-end) { @content; } + + } + + @if $media-query == lap{ + + @media only screen and (min-width:$lap-start) and (max-width:$lap-end) { @content; } + + } + + @if $media-query == lap-and-up{ + + @media only screen and (min-width:$lap-start) { @content; } + + } + + @if $media-query == portable{ + + @media only screen and (max-width:$lap-end) { @content; } + + } + + @if $media-query == desk{ + + @media only screen and (min-width:$desk-start) { @content; } + + } + + @if $media-query == desk-wide{ + + @media only screen and (min-width: $desk-wide-start) { @content; } + + } + +} diff --git a/sass/inuitcss/generic/_normalize.scss b/sass/inuitcss/generic/_normalize.scss new file mode 100644 index 00000000000..f32dd188767 --- /dev/null +++ b/sass/inuitcss/generic/_normalize.scss @@ -0,0 +1,397 @@ +@charset "UTF-8"; +/*! normalize.css v2.1.0 | MIT License | git.io/normalize */ + +/* ========================================================================== + HTML5 display definitions + ========================================================================== */ + +/* + * Correct `block` display not defined in IE 8/9. + */ + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +nav, +section, +summary { + display: block; +} + +/* + * Correct `inline-block` display not defined in IE 8/9. + */ + +audio, +canvas, +video { + display: inline-block; +} + +/* + * Prevent modern browsers from displaying `audio` without controls. + * Remove excess height in iOS 5 devices. + */ + +audio:not([controls]) { + display: none; + height: 0; +} + +/* + * Address styling not present in IE 8/9. + */ + +[hidden] { + display: none; +} + +/* ========================================================================== + Base + ========================================================================== */ + +/* + * 1. Set default font family to sans-serif. + * 2. Prevent iOS text size adjust after orientation change, without disabling + * user zoom. + */ + +html { + font-family: sans-serif; /* 1 */ + -webkit-text-size-adjust: 100%; /* 2 */ + -ms-text-size-adjust: 100%; /* 2 */ +} + +/* + * Remove default margin. + */ + +body { + margin: 0; +} + +/* ========================================================================== + Links + ========================================================================== */ + +/* + * Address `outline` inconsistency between Chrome and other browsers. + */ + +a:focus { + outline: thin dotted; +} + +/* + * Improve readability when focused and also mouse hovered in all browsers. + */ + +a:active, +a:hover { + outline: 0; +} + +/* ========================================================================== + Typography + ========================================================================== */ + +/* + * Address variable `h1` font-size and margin within `section` and `article` + * contexts in Firefox 4+, Safari 5, and Chrome. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/* + * Address styling not present in IE 8/9, Safari 5, and Chrome. + */ + +abbr[title] { + border-bottom: 1px dotted; +} + +/* + * Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome. + */ + +b, +strong { + font-weight: bold; +} + +/* + * Address styling not present in Safari 5 and Chrome. + */ + +dfn { + font-style: italic; +} + +/* + * Address differences between Firefox and other browsers. + */ + +hr { + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 0; +} + +/* + * Address styling not present in IE 8/9. + */ + +mark { + background: #ff0; + color: #000; +} + +/* + * Correct font family set oddly in Safari 5 and Chrome. + */ + +code, +kbd, +pre, +samp { + font-family: monospace, serif; + font-size: 1em; +} + +/* + * Improve readability of pre-formatted text in all browsers. + */ + +pre { + white-space: pre-wrap; +} + +/* + * Set consistent quote types. + */ + +q { + quotes: "\201C" "\201D" "\2018" "\2019"; +} + +/* + * Address inconsistent and variable font size in all browsers. + */ + +small { + font-size: 80%; +} + +/* + * Prevent `sub` and `sup` affecting `line-height` in all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +/* ========================================================================== + Embedded content + ========================================================================== */ + +/* + * Remove border when inside `a` element in IE 8/9. + */ + +img { + border: 0; +} + +/* + * Correct overflow displayed oddly in IE 9. + */ + +svg:not(:root) { + overflow: hidden; +} + +/* ========================================================================== + Figures + ========================================================================== */ + +/* + * Address margin not present in IE 8/9 and Safari 5. + */ + +figure { + margin: 0; +} + +/* ========================================================================== + Forms + ========================================================================== */ + +/* + * Define consistent border, margin, and padding. + */ + +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} + +/* + * 1. Correct `color` not being inherited in IE 8/9. + * 2. Remove padding so people aren't caught out if they zero out fieldsets. + */ + +legend { + border: 0; /* 1 */ + padding: 0; /* 2 */ +} + +/* + * 1. Correct font family not being inherited in all browsers. + * 2. Correct font size not being inherited in all browsers. + * 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome. + */ + +button, +input, +select, +textarea { + font-family: inherit; /* 1 */ + font-size: 100%; /* 2 */ + margin: 0; /* 3 */ +} + +/* + * Address Firefox 4+ setting `line-height` on `input` using `!important` in + * the UA stylesheet. + */ + +button, +input { + line-height: normal; +} + +/* + * Address inconsistent `text-transform` inheritance for `button` and `select`. + * All other form control elements do not inherit `text-transform` values. + * Correct `button` style inheritance in Chrome, Safari 5+, and IE 8+. + * Correct `select` style inheritance in Firefox 4+ and Opera. + */ + +button, +select { + text-transform: none; +} + +/* + * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` + * and `video` controls. + * 2. Correct inability to style clickable `input` types in iOS. + * 3. Improve usability and consistency of cursor style between image-type + * `input` and others. + */ + +button, +html input[type="button"], /* 1 */ +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; /* 2 */ + cursor: pointer; /* 3 */ +} + +/* + * Re-set default cursor for disabled elements. + */ + +button[disabled], +html input[disabled] { + cursor: default; +} + +/* + * 1. Address box sizing set to `content-box` in IE 8/9. + * 2. Remove excess padding in IE 8/9. + */ + +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/* + * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome. + * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome + * (include `-moz` to future-proof). + */ + +input[type="search"] { + -webkit-appearance: textfield; /* 1 */ + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; /* 2 */ + box-sizing: content-box; +} + +/* + * Remove inner padding and search cancel button in Safari 5 and Chrome + * on OS X. + */ + +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/* + * Remove inner padding and border in Firefox 4+. + */ + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +/* + * 1. Remove default vertical scrollbar in IE 8/9. + * 2. Improve readability and alignment in all browsers. + */ + +textarea { + overflow: auto; /* 1 */ + vertical-align: top; /* 2 */ +} + +/* ========================================================================== + Tables + ========================================================================== */ + +/* + * Remove most spacing between table cells. + */ + +table { + border-collapse: collapse; + border-spacing: 0; +} diff --git a/sass/inuitcss/generic/_pull.scss b/sass/inuitcss/generic/_pull.scss new file mode 100644 index 00000000000..2a273524427 --- /dev/null +++ b/sass/inuitcss/generic/_pull.scss @@ -0,0 +1,148 @@ +@charset "UTF-8"; +/*------------------------------------*\ + $PULL +\*------------------------------------*/ +/** + * Pull classes, to move grid items over to the right by certain amounts. + */ + +@mixin pull-setup($namespace: "") { + + /** + * Whole + */ + .pull--#{$namespace}one-whole { right:100%; } + + + /** + * Halves + */ + .pull--#{$namespace}one-half { right:50%; } + + + /** + * Thirds + */ + .pull--#{$namespace}one-third { right:33.333%; } + .pull--#{$namespace}two-thirds { right:66.666%; } + + + /** + * Quarters + */ + .pull--#{$namespace}one-quarter { right:25%; } + .pull--#{$namespace}two-quarters { @extend .pull--#{$namespace}one-half; } + .pull--#{$namespace}three-quarters { right:75%; } + + + /** + * Fifths + */ + .pull--#{$namespace}one-fifth { right:20%; } + .pull--#{$namespace}two-fifths { right:40%; } + .pull--#{$namespace}three-fifths { right:60%; } + .pull--#{$namespace}four-fifths { right:80%; } + + + /** + * Sixths + */ + .pull--#{$namespace}one-sixth { right:16.666%; } + .pull--#{$namespace}two-sixths { @extend .pull--#{$namespace}one-third; } + .pull--#{$namespace}three-sixths { @extend .pull--#{$namespace}one-half; } + .pull--#{$namespace}four-sixths { @extend .pull--#{$namespace}two-thirds; } + .pull--#{$namespace}five-sixths { right:83.333%; } + + + /** + * Eighths + */ + .pull--#{$namespace}one-eighth { right:12.5%; } + .pull--#{$namespace}two-eighths { @extend .pull--#{$namespace}one-quarter; } + .pull--#{$namespace}three-eighths { right:37.5%; } + .pull--#{$namespace}four-eighths { @extend .pull--#{$namespace}one-half; } + .pull--#{$namespace}five-eighths { right:62.5%; } + .pull--#{$namespace}six-eighths { @extend .pull--#{$namespace}three-quarters; } + .pull--#{$namespace}seven-eighths { right:87.5%; } + + + /** + * Tenths + */ + .pull--#{$namespace}one-tenth { right:10%; } + .pull--#{$namespace}two-tenths { @extend .pull--#{$namespace}one-fifth; } + .pull--#{$namespace}three-tenths { right:30%; } + .pull--#{$namespace}four-tenths { @extend .pull--#{$namespace}two-fifths; } + .pull--#{$namespace}five-tenths { @extend .pull--#{$namespace}one-half; } + .pull--#{$namespace}six-tenths { @extend .pull--#{$namespace}three-fifths; } + .pull--#{$namespace}seven-tenths { right:70%; } + .pull--#{$namespace}eight-tenths { @extend .pull--#{$namespace}four-fifths; } + .pull--#{$namespace}nine-tenths { right:90%; } + + + /** + * Twelfths + */ + .pull--#{$namespace}one-twelfth { right:8.333%; } + .pull--#{$namespace}two-twelfths { @extend .pull--#{$namespace}one-sixth; } + .pull--#{$namespace}three-twelfths { @extend .pull--#{$namespace}one-quarter; } + .pull--#{$namespace}four-twelfths { @extend .pull--#{$namespace}one-third; } + .pull--#{$namespace}five-twelfths { right:41.666% } + .pull--#{$namespace}six-twelfths { @extend .pull--#{$namespace}one-half; } + .pull--#{$namespace}seven-twelfths { right:58.333%; } + .pull--#{$namespace}eight-twelfths { @extend .pull--#{$namespace}two-thirds; } + .pull--#{$namespace}nine-twelfths { @extend .pull--#{$namespace}three-quarters; } + .pull--#{$namespace}ten-twelfths { @extend .pull--#{$namespace}five-sixths; } + .pull--#{$namespace}eleven-twelfths { right:91.666%; } +} + +@if $pull == true{ + +/** + * Not a particularly great selector, but the DRYest way to do things. + */ +[class*="pull--"]{ position:relative; } + +@include pull-setup(); + +@if $palm-pull == true{ + + @include media-query(palm){ + @include pull-setup("palm-"); + } + +} + +@if $lap-pull == true{ + + @include media-query(lap){ + @include pull-setup("lap-"); + } + +} + +@if $lap-and-up-pull == true{ + + @include media-query(lap-and-up){ + @include pull-setup("lap-and-up-"); + } + +} + +@if $portable-pull == true{ + + @include media-query(portable){ + @include pull-setup("portable-"); + } + +} + +@if $desk-pull == true{ + + @include media-query(desk){ + @include pull-setup("desk-"); + } + +} + +}//endif diff --git a/sass/inuitcss/generic/_push.scss b/sass/inuitcss/generic/_push.scss new file mode 100644 index 00000000000..2921d65e749 --- /dev/null +++ b/sass/inuitcss/generic/_push.scss @@ -0,0 +1,148 @@ +@charset "UTF-8"; +/*------------------------------------*\ + $PUSH +\*------------------------------------*/ +/** + * Push classes, to move grid items over to the right by certain amounts. + */ + +@mixin push-setup($namespace: "") { + + /** + * Whole + */ + .push--#{$namespace}one-whole { left:100%; } + + + /** + * Halves + */ + .push--#{$namespace}one-half { left:50%; } + + + /** + * Thirds + */ + .push--#{$namespace}one-third { left:33.333%; } + .push--#{$namespace}two-thirds { left:66.666%; } + + + /** + * Quarters + */ + .push--#{$namespace}one-quarter { left:25%; } + .push--#{$namespace}two-quarters { @extend .push--#{$namespace}one-half; } + .push--#{$namespace}three-quarters { left:75%; } + + + /** + * Fifths + */ + .push--#{$namespace}one-fifth { left:20%; } + .push--#{$namespace}two-fifths { left:40%; } + .push--#{$namespace}three-fifths { left:60%; } + .push--#{$namespace}four-fifths { left:80%; } + + + /** + * Sixths + */ + .push--#{$namespace}one-sixth { left:16.666%; } + .push--#{$namespace}two-sixths { @extend .push--#{$namespace}one-third; } + .push--#{$namespace}three-sixths { @extend .push--#{$namespace}one-half; } + .push--#{$namespace}four-sixths { @extend .push--#{$namespace}two-thirds; } + .push--#{$namespace}five-sixths { left:83.333%; } + + + /** + * Eighths + */ + .push--#{$namespace}one-eighth { left:12.5%; } + .push--#{$namespace}two-eighths { @extend .push--#{$namespace}one-quarter; } + .push--#{$namespace}three-eighths { left:37.5%; } + .push--#{$namespace}four-eighths { @extend .push--#{$namespace}one-half; } + .push--#{$namespace}five-eighths { left:62.5%; } + .push--#{$namespace}six-eighths { @extend .push--#{$namespace}three-quarters; } + .push--#{$namespace}seven-eighths { left:87.5%; } + + + /** + * Tenths + */ + .push--#{$namespace}one-tenth { left:10%; } + .push--#{$namespace}two-tenths { @extend .push--#{$namespace}one-fifth; } + .push--#{$namespace}three-tenths { left:30%; } + .push--#{$namespace}four-tenths { @extend .push--#{$namespace}two-fifths; } + .push--#{$namespace}five-tenths { @extend .push--#{$namespace}one-half; } + .push--#{$namespace}six-tenths { @extend .push--#{$namespace}three-fifths; } + .push--#{$namespace}seven-tenths { left:70%; } + .push--#{$namespace}eight-tenths { @extend .push--#{$namespace}four-fifths; } + .push--#{$namespace}nine-tenths { left:90%; } + + + /** + * Twelfths + */ + .push--#{$namespace}one-twelfth { left:8.333%; } + .push--#{$namespace}two-twelfths { @extend .push--#{$namespace}one-sixth; } + .push--#{$namespace}three-twelfths { @extend .push--#{$namespace}one-quarter; } + .push--#{$namespace}four-twelfths { @extend .push--#{$namespace}one-third; } + .push--#{$namespace}five-twelfths { left:41.666% } + .push--#{$namespace}six-twelfths { @extend .push--#{$namespace}one-half; } + .push--#{$namespace}seven-twelfths { left:58.333%; } + .push--#{$namespace}eight-twelfths { @extend .push--#{$namespace}two-thirds; } + .push--#{$namespace}nine-twelfths { @extend .push--#{$namespace}three-quarters; } + .push--#{$namespace}ten-twelfths { @extend .push--#{$namespace}five-sixths; } + .push--#{$namespace}eleven-twelfths { left:91.666%; } +} + +@if $push == true{ + +@include push-setup(); + +/** + * Not a particularly great selector, but the DRYest way to do things. + */ +[class*="push--"]{ position:relative; } + +@if $palm-push == true{ + + @include media-query(palm){ + @include push-setup("palm-"); + } + +} + +@if $lap-push == true{ + + @include media-query(lap){ + @include push-setup("lap-"); + } + +} + +@if $lap-and-up-push == true{ + + @include media-query(lap-and-up){ + @include push-setup("lap-and-up-"); + } + +} + +@if $portable-push == true{ + + @include media-query(portable){ + @include push-setup("portable-"); + } + +} + +@if $desk-push == true{ + + @include media-query(desk){ + @include push-setup("desk-"); + } + +} + +}//endif diff --git a/sass/inuitcss/generic/_reset.scss b/sass/inuitcss/generic/_reset.scss new file mode 100644 index 00000000000..660a1def97e --- /dev/null +++ b/sass/inuitcss/generic/_reset.scss @@ -0,0 +1,81 @@ +@charset "UTF-8"; +/*------------------------------------*\ + $RESET +\*------------------------------------*/ +/** + * A more considered reset; more of a restart... + * As per: csswizardry.com/2011/10/reset-restarted + */ + +@if $global-border-box == true{ + /** + * Let’s make the box model all nice, shall we...? + */ + *{ + &, + &:before, + &:after{ + @include vendor(box-sizing, border-box); + } + } +} + +/** + * The usual... + */ +h1,h2,h3,h4,h5,h6, +p,blockquote,pre, +dl,dd,ol,ul, +form,fieldset,legend, +table,th,td,caption, +hr{ + margin:0; + padding:0; +} + +/** + * Give a help cursor to elements that give extra info on `:hover`. + */ +abbr[title],dfn[title]{ + cursor:help; +} + +/** + * Remove underlines from potentially troublesome elements. + */ +u,ins{ + text-decoration:none; +} + +/** + * Apply faux underline via `border-bottom`. + */ +ins{ + border-bottom:1px solid; +} + +/** + * So that `alt` text is visually offset if images don’t load. + */ +img{ + font-style:italic; +} + +/** + * Give form elements some cursor interactions... + */ +label, +input, +textarea, +button, +select, +option{ + cursor:pointer; +} + .text-input:active, + .text-input:focus, + textarea:active, + textarea:focus{ + cursor:text; + outline:none; + } diff --git a/sass/inuitcss/generic/_shared.scss b/sass/inuitcss/generic/_shared.scss new file mode 100644 index 00000000000..450238578aa --- /dev/null +++ b/sass/inuitcss/generic/_shared.scss @@ -0,0 +1,62 @@ +@charset "UTF-8"; +/*------------------------------------*\ + $SHARED +\*------------------------------------*/ +/** + * Where `margin-bottom` is concerned, this value will be the same as the + * base line-height. This allows us to keep a consistent vertical rhythm. + * As per: csswizardry.com/2012/06/single-direction-margin-declarations + */ +/** + * Base elements + */ +h1,h2,h3,h4,h5,h6,hgroup, +ul,ol,dl, +blockquote,p,address, +table, +fieldset,figure, +pre, +/** + * Objects and abstractions + */ +%sass-margin-bottom, +.media, +.island, +.islet{ + margin-bottom:$base-spacing-unit; + margin-bottom:($base-spacing-unit / $base-font-size)*1rem; + + .islet &{ + margin-bottom:$base-spacing-unit / 2; + margin-bottom:(($base-spacing-unit / $base-font-size) / 2)*1rem; + } +} + + +/** + * Doubled up `margin-bottom` helper class. + */ +.landmark{ + margin-bottom:2 * $base-spacing-unit; + margin-bottom:(2 * $base-spacing-unit / $base-font-size)*1rem; +} + + +/** + * `hr` elements only take up a few pixels, so we need to give them special + * treatment regarding vertical rhythm. + */ +hr{ + margin-bottom:$base-spacing-unit - 2px; + margin-bottom:(($base-spacing-unit - 2px) / $base-font-size)*1rem; +} + + +/** + * Where `margin-left` is concerned we want to try and indent certain elements + * by a consistent amount. Define that amount once, here. + */ +ul,ol,dd{ + margin-left:2 * $base-spacing-unit; + margin-left:(2 * $base-spacing-unit / $base-font-size)*1rem; +} diff --git a/sass/inuitcss/generic/_widths.scss b/sass/inuitcss/generic/_widths.scss new file mode 100644 index 00000000000..66d76f1a610 --- /dev/null +++ b/sass/inuitcss/generic/_widths.scss @@ -0,0 +1,159 @@ +@charset "UTF-8"; +/*------------------------------------*\ + $WIDTHS +\*------------------------------------*/ +/** + * Sizes in human readable format. These are used in conjunction with other + * objects and abstractions found in inuit.css, most commonly the grid system + * and faux flexbox. + * + * We have a mixin to generate our widths and their breakpoint-specific + * variations. + */ + +@mixin grid-setup($namespace: "") { + /** + * Whole + */ + .#{$namespace}one-whole { width:100%; } + + + /** + * Halves + */ + .#{$namespace}one-half { width:50%; } + + + /** + * Thirds + */ + .#{$namespace}one-third { width:33.333%; } + .#{$namespace}two-thirds { width:66.666%; } + + + /** + * Quarters + */ + .#{$namespace}one-quarter { width:25%; } + .#{$namespace}two-quarters { @extend .#{$namespace}one-half; } + .#{$namespace}three-quarters { width:75%; } + + + /** + * Fifths + */ + .#{$namespace}one-fifth { width:20%; } + .#{$namespace}two-fifths { width:40%; } + .#{$namespace}three-fifths { width:60%; } + .#{$namespace}four-fifths { width:80%; } + + + /** + * Sixths + */ + .#{$namespace}one-sixth { width:16.666%; } + .#{$namespace}two-sixths { @extend .#{$namespace}one-third; } + .#{$namespace}three-sixths { @extend .#{$namespace}one-half; } + .#{$namespace}four-sixths { @extend .#{$namespace}two-thirds; } + .#{$namespace}five-sixths { width:83.333%; } + + + /** + * Eighths + */ + .#{$namespace}one-eighth { width:12.5%; } + .#{$namespace}two-eighths { @extend .#{$namespace}one-quarter; } + .#{$namespace}three-eighths { width:37.5%; } + .#{$namespace}four-eighths { @extend .#{$namespace}one-half; } + .#{$namespace}five-eighths { width:62.5%; } + .#{$namespace}six-eighths { @extend .#{$namespace}three-quarters; } + .#{$namespace}seven-eighths { width:87.5%; } + + + /** + * Tenths + */ + .#{$namespace}one-tenth { width:10%; } + .#{$namespace}two-tenths { @extend .#{$namespace}one-fifth; } + .#{$namespace}three-tenths { width:30%; } + .#{$namespace}four-tenths { @extend .#{$namespace}two-fifths; } + .#{$namespace}five-tenths { @extend .#{$namespace}one-half; } + .#{$namespace}six-tenths { @extend .#{$namespace}three-fifths; } + .#{$namespace}seven-tenths { width:70%; } + .#{$namespace}eight-tenths { @extend .#{$namespace}four-fifths; } + .#{$namespace}nine-tenths { width:90%; } + + + /** + * Twelfths + */ + .#{$namespace}one-twelfth { width:8.333%; } + .#{$namespace}two-twelfths { @extend .#{$namespace}one-sixth; } + .#{$namespace}three-twelfths { @extend .#{$namespace}one-quarter; } + .#{$namespace}four-twelfths { @extend .#{$namespace}one-third; } + .#{$namespace}five-twelfths { width:41.666% } + .#{$namespace}six-twelfths { @extend .#{$namespace}one-half; } + .#{$namespace}seven-twelfths { width:58.333%; } + .#{$namespace}eight-twelfths { @extend .#{$namespace}two-thirds; } + .#{$namespace}nine-twelfths { @extend .#{$namespace}three-quarters; } + .#{$namespace}ten-twelfths { @extend .#{$namespace}five-sixths; } + .#{$namespace}eleven-twelfths { width:91.666%; } +} + +@include grid-setup(); + + + +/** + * If you have set `$responsive` to ‘true’ in `_vars.scss` then you now have + * access to these classes. You can define at which breakpoint you’d like an + * element to be a certain size, e.g.: + * + * `
    ...
    ` + * + * This would create a `div` that, at ‘desktop’ sizes, takes up a quarter of the + * horizontal space, a half of that space at ‘tablet’ sizes, and goes full width + * at ‘mobile’ sizes. + * + * Demo: jsfiddle.net/inuitcss/WS4Ge + * + */ + +@if $responsive == true{ + +@include media-query(palm){ + @include grid-setup("palm-"); +} + +@include media-query(lap){ + @include grid-setup("lap-"); +} + +@include media-query(lap-and-up){ + @include grid-setup("lap-and-up-"); +} + +@include media-query(portable){ + @include grid-setup("portable-"); +} + +@include media-query(desk){ + @include grid-setup("desk-"); +} + + +/** + * If you have set the additional `$responsive-extra` variable to ‘true’ in + * `_vars.scss` then you now have access to the following class available to + * accomodate much larger screen resolutions. + */ + +@if $responsive-extra == true{ + +@include media-query(desk-wide){ + @include grid-setup("desk-wide-"); +} + +} + +} /* endif */ diff --git a/sass/inuitcss/objects/_arrows.scss b/sass/inuitcss/objects/_arrows.scss new file mode 100644 index 00000000000..ff813975236 --- /dev/null +++ b/sass/inuitcss/objects/_arrows.scss @@ -0,0 +1,148 @@ +@charset "UTF-8"; +@if $use-arrows == true{ + +/*------------------------------------*\ + $ARROWS +\*------------------------------------*/ +/** + * It is a common design treatment to give an element a triangular points-out + * arrow, we typically build these with CSS. These following classes allow us to + * generate these arbitrarily with a mixin, `@arrow()`. + */ + +$arrow-size: $half-spacing-unit!default; +$arrow-border: 1!default; +$border: $arrow-size; +$arrow: $arrow-size - $arrow-border; + +/** + * Forms the basis for any/all CSS arrows. + */ +%arrow{ + position:relative; + + &:before, + &:after{ + content:""; + position:absolute; + border-collapse:separate; + } + &:before{ + border:$border solid transparent; + } + &:after{ + border:$arrow solid transparent; + } +} + + +/** + * Define individual edges so we can combine what we need, when we need. + */ +%arrow--top{ + @extend %arrow; + + &:before, + &:after{ + bottom:100%; + } +} + +%arrow--upper{ + @extend %arrow; + + &:before{ + top:$arrow; + } + &:after{ + top:$border; + } +} + +%arrow--middle{ + @extend %arrow; + + &:before, + &:after{ + top:50%; + margin-top:-$border; + } + &:after{ + margin-top:-$arrow; + } +} + +%arrow--lower{ + @extend %arrow; + + &:before{ + bottom:$arrow; + } + &:after{ + bottom:$border; + } +} + +%arrow--bottom{ + @extend %arrow; + + &:before, + &:after{ + top:100%; + } +} + +%arrow--near{ + @extend %arrow; + + &:before, + &:after{ + right:100%; + } +} + +%arrow--left{ + @extend %arrow; + + &:before{ + left:$arrow; + } + &:after{ + left:$border; + } +} + +%arrow--center{ + @extend %arrow; + + &:before, + &:after{ + left:50%; + margin-left:-$border; + } + &:after{ + margin-left:-$arrow; + } +} + +%arrow--right{ + @extend %arrow; + + &:before{ + right:$arrow; + } + &:after{ + right:$border; + } +} + +%arrow--far{ + @extend %arrow; + + &:before, + &:after{ + left:100%; + } +} + +}//endif diff --git a/sass/inuitcss/objects/_beautons.scss b/sass/inuitcss/objects/_beautons.scss new file mode 100644 index 00000000000..cdb9a3becf2 --- /dev/null +++ b/sass/inuitcss/objects/_beautons.scss @@ -0,0 +1,227 @@ +@charset "UTF-8"; +@if $use-beautons == true{ + +/*------------------------------------*\ + $BEAUTONS.CSS +\*------------------------------------*/ +/** + * beautons is a beautifully simple button toolkit. + * + * LICENSE + * + * Copyright 2013 Harry Roberts + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + + +/*!* + * + * @csswizardry -- csswizardry.com/beautons + * + */ + + + + + +/*------------------------------------*\ + $BASE +\*------------------------------------*/ +/** + * Base button styles. + * + * 1. Allow us to better style box model properties. + * 2. Line different sized buttons up a little nicer. + * 3. Stop buttons wrapping and looking broken. + * 4. Make buttons inherit font styles. + * 5. Force all elements using beautons to appear clickable. + * 6. Normalise box model styles. + * 7. If the button’s text is 1em, and the button is (3 * font-size) tall, then + * there is 1em of space above and below that text. We therefore apply 1em + * of space to the left and right, as padding, to keep consistent spacing. + * 8. Basic cosmetics for default buttons. Change or override at will. + * 9. Don’t allow buttons to have underlines; it kinda ruins the illusion. + */ +.btn{ + display:inline-block; /* [1] */ + vertical-align:middle; /* [2] */ + white-space:nowrap; /* [3] */ + font-family:inherit; /* [4] */ + font-size:100%; /* [4] */ + cursor:pointer; /* [5] */ + border:none; /* [6] */ + margin:0; /* [6] */ + padding-top: 0; /* [6] */ + padding-bottom:0; /* [6] */ + line-height:3; /* [7] */ + padding-right:1em; /* [7] */ + padding-left: 1em; /* [7] */ + border-radius:$brand-round; /* [8] */ +} + +.btn{ + + &, + &:hover{ + text-decoration:none; /* [9] */ + } + + &:active, + &:focus{ + outline:none; + } +} + + + + + +/*------------------------------------*\ + $SIZES +\*------------------------------------*/ +/** + * Button size modifiers. + * + * These all follow the same sizing rules as above; text is 1em, space around it + * remains uniform. + */ +.btn--small{ + padding-right:0.5em; + padding-left: 0.5em; + line-height:2; +} + +.btn--large{ + padding-right:1.5em; + padding-left: 1.5em; + line-height:4; +} + +.btn--huge{ + padding-right:2em; + padding-left: 2em; + line-height:5; +} + +/** + * These buttons will fill the entirety of their container. + * + * 1. Remove padding so that widths and paddings don’t conflict. + */ +.btn--full{ + width:100%; + padding-right:0; /* [1] */ + padding-left: 0; /* [1] */ + text-align:center; +} + + + + + +/*------------------------------------*\ + $FONT-SIZES +\*------------------------------------*/ +/** + * Button font-size modifiers. + */ +.btn--alpha{ + font-size:3rem; +} + +.btn--beta{ + font-size:2rem; +} + +.btn--gamma{ + font-size:1rem; +} + +/** + * Make the button inherit sizing from its parent. + */ +.btn--natural{ + vertical-align:baseline; + font-size:inherit; + line-height:inherit; + padding-right:0.5em; + padding-left: 0.5em; +} + + + + + +/*------------------------------------*\ + $FUNCTIONS +\*------------------------------------*/ +/** + * Button function modifiers. + */ +.btn--primary{} +.btn--secondary{} +.btn--tertiary{} + +/** + * Positive actions; e.g. sign in, purchase, submit, etc. + */ +.btn--positive{ + background-color:#4A993E; + color:#fff; +} + +/** + * Negative actions; e.g. close account, delete photo, remove friend, etc. + */ +.btn--negative{ + background-color:#b33630; + color:#fff; +} + +/** + * Inactive, disabled buttons. + * + * 1. Make the button look like normal text when hovered. + */ +.btn--inactive, + .btn--inactive:hover, + .btn--inactive:active, + .btn--inactive:focus{ + background-color:#ddd; + color:#777; + cursor:text; /* [1] */ + } + + + + + +/*------------------------------------*\ + $STYLES +\*------------------------------------*/ +/** + * Button style modifiers. + * + * 1. Use an overly-large number to ensure completely rounded, pill-like ends. + */ +.btn--soft{ + border-radius:200px; /* [1] */ +} + +.btn--hard{ + border-radius:0; +} + +}//endif diff --git a/sass/inuitcss/objects/_block-list.scss b/sass/inuitcss/objects/_block-list.scss new file mode 100644 index 00000000000..d1a414b5d8f --- /dev/null +++ b/sass/inuitcss/objects/_block-list.scss @@ -0,0 +1,45 @@ +@charset "UTF-8"; +@if $use-block-list == true or $use-matrix == true{ + +/*------------------------------------*\ + $BLOCK-LIST +\*------------------------------------*/ +/** + * Create big blocky lists of content, e.g.: + * + + * + * Extend this object in your theme stylesheet. + * + * Demo: jsfiddle.net/inuitcss/hR57q + * + */ +.block-list{ + + &, + > li{ + border:0 solid $base-ui-color; + } +} +.block-list{ + list-style:none; + margin-left:0; + border-top-width:1px; + + > li{ + border-bottom-width:1px; + padding:$half-spacing-unit; + } +} + .block-list__link{ + display:block; + padding:$half-spacing-unit; + margin:-$half-spacing-unit; + } + +}//endif diff --git a/sass/inuitcss/objects/_breadcrumb.scss b/sass/inuitcss/objects/_breadcrumb.scss new file mode 100644 index 00000000000..1741b952ea7 --- /dev/null +++ b/sass/inuitcss/objects/_breadcrumb.scss @@ -0,0 +1,64 @@ +@charset "UTF-8"; +@if $use-breadcrumb == true{ + +/*------------------------------------*\ + $BREADCRUMB +\*------------------------------------*/ +/** + * Simple breadcrumb styling to apply to (ordered) lists. Extends `.nav`, e.g.: + * + + * + * Demo: jsfiddle.net/inuitcss/rkAY9 + * + */ +.breadcrumb > li + li:before{ + content:"\00BB" "\00A0"; +} + + +/** + * For denoting a path-like structure, GitHub style, e.g.: + * + + * + */ +.breadcrumb--path > li + li:before{ + content:"\002F" "\00A0"; +} + + +/** + * Assign a delimiter on the fly through a data attribute, e.g.: + * + + * + */ +.breadcrumb > li + li[data-breadcrumb]:before{ + content:attr(data-breadcrumb) "\00A0"; +} + + +/** + * Denote the root of the tree. + */ +.breadcrumb__root{ + font-weight:bold; +} + +}//endif diff --git a/sass/inuitcss/objects/_columns.scss b/sass/inuitcss/objects/_columns.scss new file mode 100644 index 00000000000..07ff09ab909 --- /dev/null +++ b/sass/inuitcss/objects/_columns.scss @@ -0,0 +1,23 @@ +@charset "UTF-8"; +@if $use-columns == true{ + +/*------------------------------------*\ + $COLUMNS +\*------------------------------------*/ +/** + * Here we can set elements in columns of text using CSS3, e.g.: + * +

    + * + * Demo: jsfiddle.net/inuitcss/E26Yd + * + */ +%text-cols{ + @include vendor(column-gap, $base-spacing-unit); +} +.text-cols--2 { @extend %text-cols; @include vendor(column-count, 2); } +.text-cols--3 { @extend %text-cols; @include vendor(column-count, 3); } +.text-cols--4 { @extend %text-cols; @include vendor(column-count, 4); } +.text-cols--5 { @extend %text-cols; @include vendor(column-count, 5); } + +}//endif diff --git a/sass/inuitcss/objects/_flexbox.scss b/sass/inuitcss/objects/_flexbox.scss new file mode 100644 index 00000000000..7675a5a1950 --- /dev/null +++ b/sass/inuitcss/objects/_flexbox.scss @@ -0,0 +1,56 @@ +@charset "UTF-8"; +@if $use-flexbox == true{ + +/*------------------------------------*\ + $FLEXBOX +\*------------------------------------*/ +/** + * Until we can utilise flexbox natively we can kinda, sorta, attempt to emulate + * it, in a way... e.g.: + * +

    + +
    + Welcome to +
    + +
    + inuit.css +
    + +
    + * + * We can also combine our grid system classes with `.flexbox__item` classes, + * e.g.: + * +
    +
    +
    +
    +
    +
    + * + * It’s pretty poorly named I’m afraid, but it works... + * + * Demo: jsfiddle.net/inuitcss/ufUh2 + * + */ +.flexbox{ + display:table; + width:100%; +} + +/** + * Nasty hack to circumvent Modernizr conflicts. + */ +html.flexbox{ + display:block; + width:auto; +} + + .flexbox__item{ + display:table-cell; + vertical-align:middle; + } + +}//endif diff --git a/sass/inuitcss/objects/_flyout.scss b/sass/inuitcss/objects/_flyout.scss new file mode 100644 index 00000000000..ed53c7eef69 --- /dev/null +++ b/sass/inuitcss/objects/_flyout.scss @@ -0,0 +1,64 @@ +@charset "UTF-8"; +@if $use-flyout == true{ + +/*------------------------------------*\ + $FLYOUT +\*------------------------------------*/ +/** + * Flyouts are pieces of content that fly out of a parent when said parent is + * hovered. They typically appear bottom-left of the parent. + * +
    + Foo +
    +

    Lorem

    +

    Ipsum

    +
    +
    + * + * Extend these objects in your theme stylesheet. + * + * Demo: jsfiddle.net/inuitcss/B52HG + * + */ +.flyout, +.flyout--alt{ + position:relative; + overflow:hidden; +} + .flyout__content{ + /** + * Position the flyouts off-screen. This is typically better than + * `display:none;`. + */ + position:absolute; + top:100%; + left:-99999px; + } + + /** + * Bring the flyouts into view when you hover their parents. + * Two different types of flyout; ‘regular’ (`.flyout`) and ‘alternative’ + * (`.flyout--alt`). + */ + .flyout:hover, + .flyout--alt:hover{ + overflow:visible; + } + + /** + * Regular flyouts sit all the way from the top, flush left. + */ + .flyout:hover > .flyout__content{ + left:0; + } + + /** + * Alternative flyouts sit all the way from the left, flush top. + */ + .flyout--alt:hover > .flyout__content{ + top:0; + left:100%; + } + +}//endif diff --git a/sass/inuitcss/objects/_greybox.scss b/sass/inuitcss/objects/_greybox.scss new file mode 100644 index 00000000000..b824a5db639 --- /dev/null +++ b/sass/inuitcss/objects/_greybox.scss @@ -0,0 +1,59 @@ +@charset "UTF-8"; +@if $use-greybox == true{ + +/*------------------------------------*\ + $GREYBOX +\*------------------------------------*/ +/** + * Quickly throw together greybox wireframes. Use in conjunction with other + * inuit.css objects to create simple greybox prototypes, e.g.: + * +
    Header
    + + + * + * The beauty of combining the greyboxing with inuit.css objects is that any + * prototyping can quickly be converted into/used as production code. + * + * For a more complete prototyping framework, consider Adam Whitcroft’s Proto: + * adamwhitcroft.com/proto + * + * Demo: jsfiddle.net/inuitcss/qCXfh/ + * + */ +.greybox, +.graybox{ + @include font-size(12px); + font-family:sans-serif; + text-align:center; + background-color:rgba(0,0,0,0.2); + color:#fff; +} + .greybox a, + .graybox a{ + color:#fff; + text-decoration:underline; + } + + +/** + * All greyboxes will occupy 100% of their parent’s width, but to alter their + * heights we apply incrementally larger line-heights: + */ +.greybox--small, +.graybox--small { line-height: 2 * $base-line-height; } +.greybox--medium, +.graybox--medium { line-height: 4 * $base-line-height; } +.greybox--large, +.graybox--large { line-height: 8 * $base-line-height; } +.greybox--huge, +.graybox--huge { line-height:16 * $base-line-height; } +.greybox--gigantic, +.graybox--gigantic { line-height:32 * $base-line-height; } + +}//endif diff --git a/sass/inuitcss/objects/_grids.scss b/sass/inuitcss/objects/_grids.scss new file mode 100644 index 00000000000..9499e5ed612 --- /dev/null +++ b/sass/inuitcss/objects/_grids.scss @@ -0,0 +1,69 @@ +@if $use-grids == true{ + +/*------------------------------------*\ + $GRIDS +\*------------------------------------*/ +/** + * Fluid and nestable grid system, e.g.: + * +
    + +
    +

    Two thirds grid

    +
    +

    One half grid

    +
    +

    One quarter grid

    +
    +

    One quarter grid

    +
    + +
    + * + * Demo: jsfiddle.net/inuitcss/CLYUC + * + */ + + +/** + * Grid wrapper + */ +.grid{ + margin-left:-$base-spacing-unit; + list-style:none; + margin-bottom:0; +} + + + /** + * Very infrequently occuring grid wrappers as children of grid wrappers. + */ + .grid > .grid{ + margin-left:0; + } + + + /** + * Grid + */ + .grid__item{ + display:inline-block; + width:100%; + padding-left:$base-spacing-unit; + vertical-align:top; + @if $global-border-box == false{ + @include vendor(box-sizing, border-box); + } + } + +}//endif diff --git a/sass/inuitcss/objects/_icon-text.scss b/sass/inuitcss/objects/_icon-text.scss new file mode 100644 index 00000000000..0f8250ff3b8 --- /dev/null +++ b/sass/inuitcss/objects/_icon-text.scss @@ -0,0 +1,40 @@ +@if $use-icon-text == true{ + +/*------------------------------------*\ + $ICON-TEXT +\*------------------------------------*/ +/** + * For text-links etc that have an icon with them. Sometimes whitespace would + * suffice in creating a gap between the icon and text, for example: + * + + Help & support + + * + * However we will sometimes want a larger, explicity set gap: + + Help & support + + * + * Demo: jsfiddle.net/inuitcss/Q6Lbf + * + */ +.icon-text > .icon-text__icon{ + margin-right:$half-spacing-unit / 2; +} + + +/** + * We can also reverse the direction of the margin for icons that appear to the + * right of the text content, thus: + * + + Help & support + + * + */ +.icon-text--rev > .icon-text__icon{ + margin-left:$half-spacing-unit / 2; +} + +}//endif diff --git a/sass/inuitcss/objects/_island.scss b/sass/inuitcss/objects/_island.scss new file mode 100644 index 00000000000..0b2c3ec1cf4 --- /dev/null +++ b/sass/inuitcss/objects/_island.scss @@ -0,0 +1,38 @@ +@if $use-island == true{ + +/*------------------------------------*\ + $ISLAND +\*------------------------------------*/ +/** + * Simple, boxed off content, as per: csswizardry.com/2011/10/the-island-object + * E.g.: + * +
    + I am boxed off. +
    + * + * Demo: jsfiddle.net/inuitcss/u8pV3 + * + */ +.island, +.islet{ + display:block; + @extend .cf; +} +.island{ + padding:$base-spacing-unit; +} + .island > :last-child, + .islet > :last-child{ + margin-bottom:0; + } + + +/** + * Just like `.island`, only smaller. + */ +.islet{ + padding:$half-spacing-unit; +} + +}//endif diff --git a/sass/inuitcss/objects/_link-complex.scss b/sass/inuitcss/objects/_link-complex.scss new file mode 100644 index 00000000000..d2ef9c03d72 --- /dev/null +++ b/sass/inuitcss/objects/_link-complex.scss @@ -0,0 +1,32 @@ +@if $use-link-complex == true{ + +/*------------------------------------*\ + $LINK-COMPLEX +\*------------------------------------*/ +/** + * As inspired by @necolas: + * github.com/necolas/suit-utils/blob/master/link.css#L18 + * + * Add hover behaviour to only selected items within links, e.g.: + * + + + Log in + + * + * Demo: jsfiddle.net/inuitcss/rt9M3 + * + */ +.link-complex, +.link-complex:hover, +.link-complex:active, +.link-complex:focus{ + text-decoration:none; +} + .link-complex:hover .link-complex__target, + .link-complex:active .link-complex__target, + .link-complex:focus .link-complex__target{ + text-decoration:underline; + } + +}//endif diff --git a/sass/inuitcss/objects/_lozenges.scss b/sass/inuitcss/objects/_lozenges.scss new file mode 100644 index 00000000000..ecfdf11db89 --- /dev/null +++ b/sass/inuitcss/objects/_lozenges.scss @@ -0,0 +1,47 @@ +@charset "UTF-8"; +@if $use-lozenges == true{ + +/*------------------------------------*\ + $LOZENGES +\*------------------------------------*/ +/** + * Create pill- and lozenge-like runs of text, e.g.: + * +

    This here is a pill!

    + * +

    This here is also a lozenge!

    + * + * Pills have fully rounded ends, lozenges have only their corners rounded. + * + * Demo: jsfiddle.net/inuitcss/N3pGm + * + */ +.pill{ + display:inline-block; + /** + * These numbers set in ems mean that, at its narrowest, a lozenge will be + * the same width as the `line-height` set on the `html` element. + * This allows us to use the `.loz` in almost any `font-size` we wish. + */ + min-width: ($line-height-ratio * 0.666667) * 1em; + padding-right:($line-height-ratio * 0.166667) * 1em; + padding-left: ($line-height-ratio * 0.166667) * 1em; + /* =1.50em */ + text-align:center; + background-color:$base-ui-color; + color:#fff; /* Override this color in your theme stylesheet */ + + /** + * Normally we’d use border-radius:100%; but instead here we just use an + * overly large number; `border-radius:100%;` would create an oval on + * non-square elements whereas we just want to round the ends of an element. + */ + border-radius:100px; +} + +.loz{ + @extend .pill; + border-radius:$brand-round; +} + +}//endif diff --git a/sass/inuitcss/objects/_marginalia.scss b/sass/inuitcss/objects/_marginalia.scss new file mode 100644 index 00000000000..b61bce31c42 --- /dev/null +++ b/sass/inuitcss/objects/_marginalia.scss @@ -0,0 +1,53 @@ +@charset "UTF-8"; +@if $use-marginalia == true{ + +/*------------------------------------*\ + $MARGINALIA +\*------------------------------------*/ +/** + * Marginalia are, per definition, notes in the margin of a document. The + * `marginalia__body` class can be applied to all kinds of content, like text or + * images, and is joined by a width class: + * +
    +
    +
    + * + * Demo: jsfiddle.net/inuitcss/AemkH + * + */ +.marginalia{ + @include font-size($milli-size); +} + +/** + * Wait for a certain breakpoint to trigger ‘proper' marginalia. Up to this point, + * marginalia are inline with the other text. + */ +@media (min-width: $desk-start){ + .marginalia{ + position:relative; + } + + .marginalia__body, + .marginalia__body--right{ + position:absolute; + } + + .marginalia__body{ + right:100%; + padding-right:$base-spacing-unit; + text-align:right; + } + + /** + * Align marginalia to the right of the text. + */ + .marginalia__body--right{ + left:100%; + padding-left:$base-spacing-unit; + text-align:left; + } +} + +}//endif diff --git a/sass/inuitcss/objects/_matrix.scss b/sass/inuitcss/objects/_matrix.scss new file mode 100644 index 00000000000..cbf5cad8322 --- /dev/null +++ b/sass/inuitcss/objects/_matrix.scss @@ -0,0 +1,89 @@ +@if $use-matrix == true{ + +/*------------------------------------*\ + $MATRIX +\*------------------------------------*/ +/** + * Create a grid of items out of a single list, e.g.: + * + + * + * Extend this object in your theme stylesheet. + * + * Demo: jsfiddle.net/inuitcss/Y2zrU + * + */ +.matrix{ + @extend .block-list; + border-left-width:1px; + @extend .cf; + + > li{ + float:left; + border-right-width:1px; + @if $global-border-box == false{ + @include vendor(box-sizing, border-box); + } + } +} + .matrix__link{ + @extend .block-list__link; + } + + +/** + * The `.multi-list` object is a lot like the `.matrix` object only without the + * blocky borders and padding. + * + + * + * Demo: jsfiddle.net/inuitcss/Y2zrU + * + */ +.multi-list{ + list-style:none; + margin-left:0; + @extend .cf; +} + .multi-list > li{ + float:left; + } + + + /** + * Apply these classes alongside the `.matrix` or `.multi-list` classes on + * lists to determine how wide their columns are. + */ + .two-cols > li{ + width:50%; + } + .three-cols > li{ + width:33.333%; + } + .four-cols > li{ + width:25%; + } + .five-cols > li{ + width:20%; + } + /** + * Unfortunately we have to qualify this selector in order to bring its + * specificity above the `.[number]-cols > li` selectors above. + */ + .matrix > .all-cols, + .multi-list > .all-cols{ + width:100%; + } + +}//endif diff --git a/sass/inuitcss/objects/_media.scss b/sass/inuitcss/objects/_media.scss new file mode 100644 index 00000000000..a88cd0bad85 --- /dev/null +++ b/sass/inuitcss/objects/_media.scss @@ -0,0 +1,60 @@ +@if $use-media == true{ + +/*------------------------------------*\ + $MEDIA +\*------------------------------------*/ +/** + * Place any image- and text-like content side-by-side, as per: + * stubbornella.org/content/2010/06/25/the-media-object-saves-hundreds-of-lines-of-code + * E.g.: + * +
    + +

    Lorem ipsum dolor sit amet, consectetur adipisicing elit, + sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

    +
    + * + * Demo: jsfiddle.net/inuitcss/cf4Qs + * + */ +.media{ + display:block; + @extend .cf; +} + .media__img{ + float:left; + margin-right:$base-spacing-unit; + } + /** + * Reversed image location (right instead of left). + */ + .media__img--rev{ + float:right; + margin-left:$base-spacing-unit; + } + + .media__img img, + .media__img--rev img{ + display:block; + } + + .media__body{ + overflow:hidden; + } + .media__body, + .media__body > :last-child{ + margin-bottom:0; + } + + + /** + * `.img`s in `.islet`s need an appropriately sized margin. + */ + .islet .media__img{ + margin-right:$half-spacing-unit; + } + .islet .media__img--rev{ + margin-left:$half-spacing-unit; + } + +}//endif diff --git a/sass/inuitcss/objects/_nav.scss b/sass/inuitcss/objects/_nav.scss new file mode 100644 index 00000000000..67d4835c399 --- /dev/null +++ b/sass/inuitcss/objects/_nav.scss @@ -0,0 +1,155 @@ +@if $use-nav == true or $use-options == true or $use-pagination == true or $use-breadcrumb == true{ + +/*------------------------------------*\ + $NAV +\*------------------------------------*/ +/** + * Nav abstraction as per: csswizardry.com/2011/09/the-nav-abstraction + * When used on an `ol` or `ul`, this class throws the list into horizontal mode + * e.g.: + * + + * + * Demo: jsfiddle.net/inuitcss/Vnph4 + * + */ +.nav{ + list-style:none; + margin-left:0; + @extend .cf; + + > li{ + + &, + > a{ + display:inline-block; + *display:inline; + zoom:1; + } + } +} + + +/** + * `.nav--stacked` extends `.nav` and throws the list into vertical mode, e.g.: + * + + * + */ +.nav--stacked{ + + > li{ + display:list-item; + + > a{ + display:block; + } + } +} + + +/** + * `.nav--banner` extends `.nav` and centres the list, e.g.: + * + + * + */ +.nav--banner{ + text-align:center; +} + + +/** + * Give nav links a big, blocky hit area. Extends `.nav`, e.g.: + * + + * + */ +.nav--block{ + line-height:1; + /** + * Remove whitespace caused by `inline-block`. + */ + letter-spacing:-0.31em; + word-spacing:-0.43em; + white-space:nowrap; + + > li{ + letter-spacing:normal; + word-spacing:normal; + + > a{ + padding:$half-spacing-unit; + } + } +} + + +/** + * Force a nav to occupy 100% of the available width of its parent. Extends + * `.nav`, e.g.: + * + + * + * Thanks to @pimpl for this idea! + */ +.nav--fit{ + display:table; + width:100%; + + > li{ + display:table-cell; + + > a{ + display:block; + } + } +} + + +/** + * Make a list of keywords. Extends `.nav`, e.g.: + * + ` + * + * Demo: jsfiddle.net/inuitcss/vwfaf + * + */ +.options{ + @extend .nav--block; + + > li{ + + > a{ + border:0 solid $base-ui-color; + border-width:1px; + border-left-width:0; + } + + &:first-child > a{ + border-left-width:1px; + border-top-left-radius:$brand-round; + border-bottom-left-radius:$brand-round; + } + + &:last-child > a{ + border-top-right-radius:$brand-round; + border-bottom-right-radius:$brand-round; + } + } +} + +}//endif diff --git a/sass/inuitcss/objects/_pagination.scss b/sass/inuitcss/objects/_pagination.scss new file mode 100644 index 00000000000..999f94f6e27 --- /dev/null +++ b/sass/inuitcss/objects/_pagination.scss @@ -0,0 +1,50 @@ +@if $use-pagination == true{ + +/*------------------------------------*\ + $PAGINATION +\*------------------------------------*/ +/** + * Basic pagination object, extends `.nav`. + * Requires some funky commenting to collapse any white-space caused by the + * `display:inline-block;` rules. + * + + * + * Demo: jsfiddle.net/inuitcss/9Y6PU + * + */ +.pagination{ + text-align:center; + /** + * Remove whitespace caused by `inline-block`. + */ + letter-spacing:-0.31em; + word-spacing:-0.43em; +} + .pagination > li{ + padding:$base-spacing-unit / 2; + letter-spacing:normal; + word-spacing:normal; + } + .pagination > li > a{ + padding:$base-spacing-unit / 2; + margin:-$base-spacing-unit / 2; + } + .pagination__first a:before{ + content:"\00AB" "\00A0"; + } + .pagination__last a:after{ + content:"\00A0" "\00BB"; + } + +}//endif diff --git a/sass/inuitcss/objects/_rules.scss b/sass/inuitcss/objects/_rules.scss new file mode 100644 index 00000000000..12844f7bdad --- /dev/null +++ b/sass/inuitcss/objects/_rules.scss @@ -0,0 +1,66 @@ +@charset "UTF-8"; +@if $use-rules == true{ + +/*------------------------------------*\ + $RULES +\*------------------------------------*/ +/** + * Horizontal rules, extend `hr`. + * + * Demo: jsfiddle.net/inuitcss/L6GuZ + * + */ +.rule{ + color:$base-ui-color; + border:none; + border-bottom-width:1px; + border-bottom-style:solid; + margin-bottom:$base-spacing-unit - 1px; + margin-bottom:(($base-spacing-unit - 1px) / $base-font-size)*1rem; +} + + +/** + * Dotted rules + */ +.rule--dotted{ + border-bottom-style:dotted; +} + + +/** + * Dashed rules + */ +.rule--dashed{ + border-bottom-style:dashed; +} + + +/** + * Ornamental rules. Places a § over the rule. + */ +.rule--ornament{ + position:relative; + + &:after{ + content:"\00A7"; + position:absolute; + top: 0; + right: 0; + left: 0; + line-height:0; + text-align:center; + } + + /** + * Pass in an arbitrary ornament though a data attribute, e.g.: + * +
    + * + */ + &[data-ornament]:after{ + content:attr(data-ornament); + } +} + +}//endif diff --git a/sass/inuitcss/objects/_split.scss b/sass/inuitcss/objects/_split.scss new file mode 100644 index 00000000000..6023bafb39e --- /dev/null +++ b/sass/inuitcss/objects/_split.scss @@ -0,0 +1,40 @@ +@charset "UTF-8"; +@if $use-split == true{ + +/*------------------------------------*\ + $SPLIT +\*------------------------------------*/ +/** + * Simple split item for creating two elements floated away from one another, + * e.g.: + * +
    +
    Burger and fries
    +
    £5.99
    +
    Fillet steak
    +
    £19.99
    +
    Ice cream
    +
    £2.99
    +
    + * +
      +
    1. 1st place Bob
    2. +
    3. 2nd place Lilly
    4. +
    5. 3rd place Ted
    6. +
    ​ + * + * Demo: jsfiddle.net/inuitcss/9gZW7 + * + */ +.split{ + text-align:right; + list-style:none; + margin-left:0; +} + .split__title{ + text-align:left; + float:left; + clear:left; + } + +}//endif diff --git a/sass/inuitcss/objects/_sprite.scss b/sass/inuitcss/objects/_sprite.scss new file mode 100644 index 00000000000..898646bc7cf --- /dev/null +++ b/sass/inuitcss/objects/_sprite.scss @@ -0,0 +1,99 @@ +@charset "UTF-8"; +@if $use-sprite == true{ + +/*------------------------------------*\ + $SPRITE +\*------------------------------------*/ +/** + * Giving an element a class of `.sprite` will throw it into ‘sprite’ mode and apply + * a background image e.g.: + * + More info… + * + * or + * + Help and FAQ + * + * Giving an element a class of `.icon` will throw it into ‘icon’ mode and will + * not add a background, but should be used for icon fonts and is populated + * through a `data-icon` attribute and the `:after` pseudo-element, e.g.: + * + View your favourites + * + * Where ‘’ might map to a star in your particular icon font. + * + * These all require extension in your theme stylesheet, e.g. in your own CSS: + * + .sprite{ + background-image:url(path/to/your/sprite.png); + } + .sprite--link{ background-position:0 0 ; } + .sprite--star{ background-position:0 -16px; } + * + * Demo: jsfiddle.net/inuitcss/6TKuS + * + */ +.sprite, +.icon{ + display:inline-block; + line-height:1; + position:relative; + vertical-align:middle; + zoom:1; + /** + * So using `.icon` on certain elements doesn’t make a visual difference. + */ + font-style:normal; + font-weight:normal; + /** + * So icons added using `.icon` sit in the centre of the element. + */ + text-align:center; +} +.sprite{ + /** + * The typical size of most icons. Override in your theme stylesheet. + */ + width: 16px; + height:16px; + top:-1px; + + /* + * H5BP method image replacement: + * github.com/h5bp/html5-boilerplate/commit/adecc5da035d6d76b77e3fa95c6abde841073da2 + */ + overflow:hidden; + *text-indent:-9999px; + + &:before{ + content:""; + display:block; + width:0; + height:100%; + } +} + +/** + * Set up icon font + */ +.icon{ + font-size:16px; + /** + * Place the icon in a box the exact same dimensions as the icon itself. + */ + width:1em; + height:1em; + + &:before{ + content:attr(data-icon); + } +} + +/** + * Icon size modifiers. + */ +.icon--large { font-size:32px; } +.icon--huge { font-size:64px; } +.icon--natural { font-size:inherit; } + +}//endif diff --git a/sass/inuitcss/objects/_stats.scss b/sass/inuitcss/objects/_stats.scss new file mode 100644 index 00000000000..9445ca8129a --- /dev/null +++ b/sass/inuitcss/objects/_stats.scss @@ -0,0 +1,53 @@ +@charset "UTF-8"; +@if $use-stats == true{ + + /*------------------------------------*\ + $STATS + \*------------------------------------*/ + /** + * Simple object to display key–value statistic-like information, e.g.: + * +
    +
    +
    Tweets
    +
    27,740
    +
    + +
    +
    Following
    +
    11,529
    +
    + +
    +
    Followers
    +
    12,105
    +
    +
    + * + * Demo: jsfiddle.net/inuitcss/Bpwu6 + * + */ + .stat-group{ + @extend .cf; + margin-left:-$base-spacing-unit; +} + .stat{ + float:left; + margin-left:$base-spacing-unit; + display:-ms-flexbox; + display:-webkit-flex; + display: -moz-flex; + display: flex; + @include vendor(flex-direction, column); + } + .stat__title{ + @include vendor(order, 2); + -ms-flex-order:2; + } + .stat__value{ + margin-left:0; + @include vendor(order, 1); + -ms-flex-order:1; + } + +}//endif diff --git a/sass/inuitcss/objects/_this-or-this.scss b/sass/inuitcss/objects/_this-or-this.scss new file mode 100644 index 00000000000..62a2413b647 --- /dev/null +++ b/sass/inuitcss/objects/_this-or-this.scss @@ -0,0 +1,38 @@ +@if $use-this-or-this == true{ + +/*------------------------------------*\ + $THIS-OR-THIS +\*------------------------------------*/ +/** + * Simple options object to provide multiple choices, e.g.: + * +

    + + Free + + + or + + + Pro + +

    + * + * The `.this-or-this__this` and `.this-or-this__or` objects can be sized using + * the grid-system classes. + * + * Demo: jsfiddle.net/inuitcss/R3sks + * + */ +.this-or-this{ + display:table; + width:100%; + text-align:center; +} + .this-or-this__this, + .this-or-this__or{ + display:table-cell; + vertical-align:middle; + } + +}//endif diff --git a/sass/oscailte/_mixins.scss b/sass/oscailte/_mixins.scss new file mode 100644 index 00000000000..01885fe6b54 --- /dev/null +++ b/sass/oscailte/_mixins.scss @@ -0,0 +1,57 @@ +@mixin content-columns($columnCount, $columnGap: $gridGutterWidth) { + -webkit-column-count: $columnCount; + -moz-column-count: $columnCount; + column-count: $columnCount; + -webkit-column-gap: $columnGap; + -moz-column-gap: $columnGap; + column-gap: $columnGap; +} + +@mixin transition($transition...) { + -webkit-transition: $transition; + -moz-transition: $transition; + -o-transition: $transition; + transition: $transition; +} + +@mixin box-sizing($boxmodel) { + -webkit-box-sizing: $boxmodel; + -moz-box-sizing: $boxmodel; + box-sizing: $boxmodel; +} + +@mixin border-radius($radius) { + -webkit-border-radius: $radius; + -moz-border-radius: $radius; + border-radius: $radius; +} + +@mixin box-shadow($shadow...) { + -webkit-box-shadow: $shadow; + -moz-box-shadow: $shadow; + -ms-box-shadow: $shadow; + -o-box-shadow: $shadow; + box-shadow: $shadow; +} + +@mixin gradient-horizontal($startColor: $button-color, $endColor: darken($button-color, 5%)) { + background-color: $endColor; + background-image: -moz-linear-gradient(left, $startColor, $endColor); // FF 3.6+ + background-image: -webkit-gradient(linear, 0 0, 100% 0, from($startColor), to($endColor)); // Safari 4+, Chrome 2+ + background-image: -webkit-linear-gradient(left, $startColor, $endColor); // Safari 5.1+, Chrome 10+ + background-image: -o-linear-gradient(left, $startColor, $endColor); // Opera 11.10 + background-image: linear-gradient(to right, $startColor, $endColor); // Standard, IE10 + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($startColor)}', endColorstr='#{ie-hex-str($endColor)}', GradientType=1); // IE9 and down +} + +@mixin gradient-vertical($startColor: $button-color, $endColor: darken($button-color, 5%)) { + background-color: mix($startColor, $endColor, 60%); + background-image: -moz-linear-gradient(top, $startColor, $endColor); // FF 3.6+ + background-image: -webkit-gradient(linear, 0 0, 0 100%, from($startColor), to($endColor)); // Safari 4+, Chrome 2+ + background-image: -webkit-linear-gradient(top, $startColor, $endColor); // Safari 5.1+, Chrome 10+ + background-image: -o-linear-gradient(top, $startColor, $endColor); // Opera 11.10 + background-image: linear-gradient(to bottom, $startColor, $endColor); // Standard, IE10 + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($startColor)}', endColorstr='#{ie-hex-str($endColor)}', GradientType=0); // IE9 and down +} \ No newline at end of file diff --git a/sass/oscailte/_oscailte.scss b/sass/oscailte/_oscailte.scss new file mode 100644 index 00000000000..972226c6fad --- /dev/null +++ b/sass/oscailte/_oscailte.scss @@ -0,0 +1,28 @@ +@import "variables"; +@import "mixins"; + +@import "../inuitcss/_inuit"; +@import "../fontawesome/font-awesome"; + +@import "base/global"; +@import "base/grid"; +@import "base/header"; +@import "base/navigation"; +@import "base/footer"; +@import "base/post"; +@import "base/archive_list"; +@import "base/solarized"; + +@import "base/sidebar"; +@import "aside/recent_posts"; +@import "aside/github"; +@import "aside/pinboard"; +@import "aside/social"; + +@import "homepage/home"; +@import "homepage/hero_unit"; + +@import "helpers/classes"; +@import "helpers/grid-fix"; + +@import "custom/**/*" diff --git a/sass/oscailte/_variables.scss b/sass/oscailte/_variables.scss new file mode 100644 index 00000000000..3d629649b74 --- /dev/null +++ b/sass/oscailte/_variables.scss @@ -0,0 +1,64 @@ +$use-grids: true; +$site-width: 1100px; +$responsive: true; +$use-gridfix: true; + +// Fonts & Font Families +$serif: Georgia, 'Times New Roman', Times, serif !default; +$sans-serif: "Helvetica Neue", Helvetica, Arial, sans-serif !default; + +// Grays +// ------------------------- +$black: #000 !default; +$grayDarker: #222 !default; +$grayDark: #333 !default; +$gray: #555 !default; +$grayLight: #999 !default; +$grayLighter: #eee !default; +$white: #fff !default; + +// Accent colors +// ------------------------- +$blue: #049cdb !default; +$blueDark: #0064cd !default; +$green: #46a546 !default; +$red: #9d261d !default; +$yellow: #ffc40d !default; +$orange: #f89406 !default; +$pink: #c3325f !default; +$purple: #7a43b6 !default; + +// Social network colors +// Organised in a key-value pair list for dynamic SASS +// Can be infinitely extended by adding more as required +// ------------------------- +$sites: + adn #4A484C, + dribbble #EA4C89, + facebook #3B5998, + github #333333, + gplus #db4a39, + linkedin #4875b4, + pinterest #CC2127, + stackoverflow #FE7A15, + twitter #00a0d1, + youtube #CC181E; + +// Site footer +// ------------------------- +$footer-height: 100px; + +// Site colors +// ------------------------- +$primary-color: $blue; +$secondary-color: $green; +// ------------------------- +$site-background: #F5F5F5; +$header-background: $white; +$footer-background: $header-background; +$text-color: $grayDarker; +$title-color: $primary-color; +$link-color: $primary-color; +$button-color: $primary-color; +$button-text: $white; +$navigation-color: $link-color; diff --git a/sass/oscailte/aside/_github.scss b/sass/oscailte/aside/_github.scss new file mode 100644 index 00000000000..1bc1a29b332 --- /dev/null +++ b/sass/oscailte/aside/_github.scss @@ -0,0 +1,8 @@ +#github-repos { + li { + p { + font-size: 0.6em; + margin-bottom: 0; + } + } +} \ No newline at end of file diff --git a/sass/oscailte/aside/_pinboard.scss b/sass/oscailte/aside/_pinboard.scss new file mode 100644 index 00000000000..16936079c49 --- /dev/null +++ b/sass/oscailte/aside/_pinboard.scss @@ -0,0 +1,16 @@ +#pinboard { + .pin-item > p { + margin-bottom: 0; + a { + &:hover { + text-decoration: underline; + } + &::after { + content: ","; + } + &:last-child::after { + content: ""; + } + } + } +} \ No newline at end of file diff --git a/sass/oscailte/aside/_recent_posts.scss b/sass/oscailte/aside/_recent_posts.scss new file mode 100644 index 00000000000..e69de29bb2d diff --git a/sass/oscailte/aside/_social.scss b/sass/oscailte/aside/_social.scss new file mode 100644 index 00000000000..c8b8d682398 --- /dev/null +++ b/sass/oscailte/aside/_social.scss @@ -0,0 +1,76 @@ +.social { + ul { + @media only screen and (min-width: $lap-start){ + @include content-columns(2, 10px); + } + } + + a { + @include box-sizing(border-box); + background-color: darken($site-background, 5%); + border: 1px solid darken($site-background, 10%); + border-radius: 4px; + color: #222; + display: inline-block; + font-size: 0.8em; + margin-bottom: 7px; + padding: 1em; + padding-right: 0.5em; + position: relative; + text-decoration: none; + width: 100%; + z-index: 5; + @include transition( + box-shadow 200ms, + color 400ms, + transform 400ms + ); + + &:hover { + color: $white !important; + text-decoration: none; + text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.25); + z-index: 7; + &::before { + border: 1px solid #000; + height: 100%; + top: 0; + width: 100%; + } + } + + &::before { + background-color: #222; + border-radius: 4px; + content: ""; + height: 1px; + position: absolute; + top: 50%; left: 0%; + width: 0; + z-index: -1; + @include transition( + border 200ms, + height 200ms 200ms, + top 200ms 200ms, + width 200ms + ); + } + + i { + font-size: 2em; + line-height: 0.8em; + margin-right: 0.35em; + } + + @each $kvp in $sites { + &.#{nth($kvp, 1)} { + color: nth($kvp, 2); + &::before { + background-color: nth($kvp, 2); + border-color: darken(nth($kvp, 2), 5%); + } + } + } + + } +} \ No newline at end of file diff --git a/sass/oscailte/base/_archive_list.scss b/sass/oscailte/base/_archive_list.scss new file mode 100644 index 00000000000..8523372ff02 --- /dev/null +++ b/sass/oscailte/base/_archive_list.scss @@ -0,0 +1,7 @@ +#archive-list { + article { + h1 { + margin-bottom: 0; + } + } +} \ No newline at end of file diff --git a/sass/oscailte/base/_footer.scss b/sass/oscailte/base/_footer.scss new file mode 100644 index 00000000000..3fa34d72ea5 --- /dev/null +++ b/sass/oscailte/base/_footer.scss @@ -0,0 +1,21 @@ +#page-wrap { + min-height: 100%; + margin-bottom: -$footer-height; + &::after { + content: ""; + display: block; + height: $footer-height; + } +} + +body > footer { + @include box-shadow(0 0 3px rgba(0, 0, 0, 0.25)); + background-color: $footer-background; + height: $footer-height; + margin-top: 3em; +} + +.copyright { + margin: 0; + padding: 20px 0; +} \ No newline at end of file diff --git a/sass/oscailte/base/_global.scss b/sass/oscailte/base/_global.scss new file mode 100644 index 00000000000..e29efaafbb8 --- /dev/null +++ b/sass/oscailte/base/_global.scss @@ -0,0 +1,57 @@ +body, html { + background-color: $site-background; + color: $text-color; + font-family: $sans-serif; + height: 100%; +} + +a { + color: $link-color; + text-decoration: none; + &:visited { + color: darken($link-color, 10%); + } + .menu & { + color: $link-color; + } +} + +.gist { + font-size: 0.75em; +} + +.title.indent { + @media only screen and (max-width: $palm-end){ + &::before { + display: none; + } + } + &::before { + content: "// "; + color: $primary-color; + } +} + +.divider { + border: none; + border-bottom: 2px solid $primary-color; + clear: both; + margin: 2em 0; +} + +article.post, +article.page { + img { + border: 5px solid #fff; + border-radius: 3px; + box-shadow: 0 0 3px rgba(0, 0, 0, 0.25); + &.right { + float: right; + margin: 0 0 10px 20px; + } + &.left { + float: left; + margin: 0 20px 10px 0; + } + } +} diff --git a/sass/oscailte/base/_grid.scss b/sass/oscailte/base/_grid.scss new file mode 100644 index 00000000000..17a08c7c78a --- /dev/null +++ b/sass/oscailte/base/_grid.scss @@ -0,0 +1,12 @@ +.grid-wrapper { + margin: auto; + max-width: $site-width; + padding: 0 25px; +} + +.grid-center { + text-align: center; + > .grid__item { + text-align: left; + } +} \ No newline at end of file diff --git a/sass/oscailte/base/_header.scss b/sass/oscailte/base/_header.scss new file mode 100644 index 00000000000..08043bdac6a --- /dev/null +++ b/sass/oscailte/base/_header.scss @@ -0,0 +1,12 @@ +body > header { + @include box-shadow(0 0 3px rgba(0, 0, 0, 0.25)); + background-color: $header-background; + margin-bottom: 2em; + + .site-title { + color: $grayDarker; + font-size: 1.7em; + font-weight: bold; + line-height: 2.5em; + } +} \ No newline at end of file diff --git a/sass/oscailte/base/_navigation.scss b/sass/oscailte/base/_navigation.scss new file mode 100644 index 00000000000..b8ef3430eeb --- /dev/null +++ b/sass/oscailte/base/_navigation.scss @@ -0,0 +1,106 @@ +/* + * Navigataur: A pure CSS responsive navigation menu + * Author: Mike King (@micjamking) + */ + +/*-------------------------------- + Functional Styles (Required) +---------------------------------*/ +/* Tim Pietrusky advanced checkbox hack (Android <= 4.1.2) */ +body{ -webkit-animation: bugfix infinite 1s; } +@-webkit-keyframes bugfix { from {padding:0;} to {padding:0;} } + +.header { position: relative; } +#toggle, .toggle { display: none; } +.menu > li { list-style: none; float:left; } + +@media only screen and (max-width: $lap-end){ + .menu { display: none; opacity: 0; width: 100%; position: absolute; right: 0; } + .menu > li { display: block; width: 100%; margin: 0; } + .menu > li > a { display: block; width: 100%; text-decoration: none; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } + .toggle { display: block; position: relative; cursor: pointer; -webkit-touch-callout: none; -webkit-user-select: none; user-select: none; } + #toggle:checked ~ .menu { display: block; opacity: 1; z-index: 999; } +} + + +/*-------------------------------- + Presentation Styles (Editable) +---------------------------------*/ +.menu { + margin: 0; +} + +.menu > li > a{ + @include box-sizing(border-box); + @include transition(all 0.25s linear); + display: block; + padding: 32px 20px; + text-decoration: none; + font-weight: normal; + font-size: 16px; + line-height: 1; +} + +.menu > li > a:hover, .menu > li > a:focus{ + background: $site-background; + box-shadow: inset 0px 5px $navigation-color; + color: $navigation-color; + padding: 40px 20px 24px; +} + +.toggle{ + z-index: 20; +} + +@media only screen and (max-width: $lap-end){ + .menu{ + background: $white; + border-top: 1px solid $navigation-color; + border-bottom: 4px solid $navigation-color; + } + + .menu, .menu > li, .menu > li > a{ + height: auto; + } + + .menu > li > a{ + padding: 15px 15px; + } + + .menu > li > a:hover, .menu > li > a:focus{ + background: $grayLighter; + box-shadow: inset 5px 0px $navigation-color; + padding: 15px 15px 15px 25px; + } + + .toggle::after { + @include border-radius(2px); + @include box-sizing(border-box); + @include transition(all 0.5s linear); + content: attr(data-open); + display: block; + width: 100%; + margin: 20px 0; + padding: 10px 50px; + background: $navigation-color; + text-align: center; + font-size: 12px; + color: $white; + } + + .toggle:hover::after{ + background: darken($navigation-color, 7%); + } + + #toggle:checked + .toggle::after{ + content: attr(data-close); + } +} + +@media only screen and (max-width: 479px){ + .toggle::after { + margin: 0 0 20px; + text-align: center; + width: 100%; + } +} \ No newline at end of file diff --git a/sass/oscailte/base/_post.scss b/sass/oscailte/base/_post.scss new file mode 100644 index 00000000000..2b577fbe4d6 --- /dev/null +++ b/sass/oscailte/base/_post.scss @@ -0,0 +1,111 @@ +$meta-color: lighten($text-color, 20%); + +article { + + blockquote { + @extend .clearfix; + border-left: 2px solid $primary-color; + color: lighten($text-color, 15%); + font-family: $serif; + font-size: 1.25em; + font-style: italic; + padding-left: 15px; + + footer { + float: right; + font-family: $sans-serif; + font-size: 0.8em; + strong::after { + content: " \2014 "; + } + a { + text-decoration: underline; + } + } + } + + .pullquote-left::before, .pullquote-right::before { + @media only screen and (max-width: $palm-end){ + border-top: 1px dotted $primary-color; + border-bottom: 1px dotted $primary-color; + padding: 0 10px; + width: 100%; + } + border: medium none; + color: $primary-color; + content: "\201C" attr(data-pullquote) "\201D"; + float: right; + font-family: $serif; + font-size: 1.4em; + font-style: italic; + line-height: 1.45em; + margin: 0.3em 0 1em 1.5em; + padding: 0; + position: relative; + top: 7px; + width: 45%; + } + + .tags { + @extend .inline; + display: inline; + li { + margin-right: 2px; + &::after { + content: ","; + } + &:last-child::after { + content: ""; + } + a { + color: $meta-color; + text-decoration: none; + &:hover {text-decoration: underline;} + } + } + } + + .meta { + $meta-color: $site-background; + font-size: 12px; + padding: 0 0 5px; + > time { + margin-right: 20px; + } + } + + // Blog listings, index page + &.listing { + margin-bottom: 20px; + h1 { + margin-bottom: 0; + a { + color: $title-color; + text-decoration: none; + } + } + .entry-content { + margin: 10px 0; + } + + hr { + border: none; + border-bottom: 1px solid $primary-color; + } + } + + &.post { + @media only screen and (max-width: $palm-end){ + .tags { + clear: both; + margin-top: 7px; + } + } + h1 { + margin-bottom: 0; + } + .meta { + border-bottom: 1px solid $primary-color; + margin-bottom: 20px; + } + } +} diff --git a/sass/oscailte/base/_sidebar.scss b/sass/oscailte/base/_sidebar.scss new file mode 100644 index 00000000000..ea35944aef5 --- /dev/null +++ b/sass/oscailte/base/_sidebar.scss @@ -0,0 +1,46 @@ +// #sidebar { +// .title { +// border-bottom: 1px solid $blue; +// color: $grayDark; +// margin: 1em 0 0.5em; +// padding-bottom: 5px; +// } +// .social { +// ul { +// @include content-columns(2, 10px); +// } +// } + +// @media only screen and (min-width: $desk-start){ +// section:first-child { +// h3 {margin-top: 0;} +// } +// } +// } + +.aside-module { + @media only screen and (min-width: $desk-start){ + &:first-child { + .title {margin-top: 0;} + } + } + .title { + border-bottom: 1px solid $blue; + color: $grayDark; + margin: 1em 0 0.5em; + padding-bottom: 5px; + + .btn { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + padding: 5px 10px; + text-decoration: none; + } + } + + .loading { + display: block; + font-size: 2em; + text-align: center; + } +} \ No newline at end of file diff --git a/sass/oscailte/base/_solarized.scss b/sass/oscailte/base/_solarized.scss new file mode 100644 index 00000000000..255880157ce --- /dev/null +++ b/sass/oscailte/base/_solarized.scss @@ -0,0 +1,333 @@ +// This file is just a butchered version fo the one included in the default Octopress theme. +// It could most definitely do with some cleaning up in the future. + +@mixin selection($bg, $color: inherit, $text-shadow: none){ + * { + &::-moz-selection { background: $bg; color: $color; text-shadow: $text-shadow; } + &::-webkit-selection { background: $bg; color: $color; text-shadow: $text-shadow; } + &::selection { background: $bg; color: $color; text-shadow: $text-shadow; } + } +} + +$base03: #002b36 !default; //darkest blue +$base02: #073642 !default; //dark blue +$base01: #586e75 !default; //darkest gray +$base00: #657b83 !default; //dark gray +$base0: #839496 !default; //medium gray +$base1: #93a1a1 !default; //medium light gray +$base2: #eee8d5 !default; //cream +$base3: #fdf6e3 !default; //white +$solar-yellow: #b58900 !default; +$solar-orange: #cb4b16 !default; +$solar-red: #dc322f !default; +$solar-magenta: #d33682 !default; +$solar-violet: #6c71c4 !default; +$solar-blue: #268bd2 !default; +$solar-cyan: #2aa198 !default; +$solar-green: #859900 !default; + +$solarized: dark !default; + +@if $solarized == light { + + $_base03: $base03; + $_base02: $base02; + $_base01: $base01; + $_base00: $base00; + $_base0: $base0; + $_base1: $base1; + $_base2: $base2; + $_base3: $base3; + + $base03: $_base3; + $base02: $_base2; + $base01: $_base1; + $base00: $_base0; + $base0: $_base00; + $base1: $_base01; + $base2: $_base02; + $base3: $_base03; +} + +/* non highlighted code colors */ +$pre-bg: $base03 !default; +$pre-border: darken($base02, 5) !default; +$pre-color: $base1 !default; + +$noise-bg: image-url('noise.png') top left !default; +$sans: "Helvetica Neue", Arial, sans-serif !default; +$mono: Menlo, Monaco, "Andale Mono", "lucida console", "Courier New", monospace !default; +.sans { font-family: $sans; } +.mono { font-family: $mono; } + +.highlight { + table {margin-bottom: 0;} + .gutter, .code { + padding: 0; + } + .gutter { + .line-number { + display: block; + } + } +} + +.highlight, html .gist .gist-file .gist-syntax .gist-highlight { + table td.code { width: 100%; } + border: 1px solid $pre-border !important; +} +.highlight .line-numbers, html .gist .gist-file .gist-syntax .highlight .line_numbers { + text-align: right; + font-size: 13px; + line-height: 1.45em; + @if $solarized == light { + background: lighten($base03, 1) $noise-bg !important; + border-right: 1px solid darken($base02, 2) !important; + @include box-shadow(lighten($base03, 2) -1px 0 inset); + text-shadow: lighten($base02, 2) 0 -1px; + } @else { + background: $base02 $noise-bg !important; + border-right: 1px solid darken($base03, 2) !important; + @include box-shadow(lighten($base02, 2) -1px 0 inset); + text-shadow: darken($base02, 10) 0 -1px; + } + span { color: $base01 !important; } + padding: .8em !important; + @include border-radius(0); +} + +figure.code, .gist-file, pre { + @include box-shadow(rgba(#000, .06) 0 0 10px); + .highlight pre { @include box-shadow(none); } +} + +.gist .highlight, figure.code .highlight { + @include selection(adjust-color($base03, $lightness: 23%, $saturation: -65%), $text-shadow: $base03 0 1px); +} +html .gist .gist-file { + margin-bottom: 1.8em; + position: relative; + border: none; + padding-top: image-height("code_bg.png") !important; + .highlight { + margin-bottom: 0; + } + .gist-syntax { + border-bottom: 0 !important; + background: none !important; + .gist-highlight { + background: $base03 !important; + } + .highlight pre { + @extend .pre-code; + padding: 0; + } + } + .gist-meta { + padding: .6em 0.8em; + border: 1px solid lighten($base02, 2) !important; + color: $base01; + font-size: .7em !important; + @if $solarized == light { + background: lighten($base03, 2) $noise-bg; + border: 1px solid $pre-border !important; + border-top: 1px solid lighten($base03, 2) !important; + } @else { + background: $base02 $noise-bg; + } + @extend .sans; + line-height: 1.5em; + a { + color: mix($base1, $base01) !important; + &:hover { color: $base1 !important; } + } + a[href*='#file'] { + position: absolute; top: 0; left:0; right:-10px; + color: #474747 !important; + @extend .code-title; + &:hover { color: $link-color !important; } + } + a[href*=raw]{ + @extend .download-source; + top: .4em; + } + } +} +pre { + background: $pre-bg $noise-bg; + @include border-radius(.4em); + @extend .mono; + border: 1px solid $pre-border; + line-height: 1.45em; + font-size: 13px; + margin-bottom: 2.1em; + padding: .8em 1em; + color: $pre-color; + overflow: auto; +} +h3.filename { + @extend .code-title; + + pre { @include border-radius(0px); } +} + +p, li { + code { + @extend .mono; + display: inline-block; + white-space: no-wrap; + background: #fff; + font-size: .8em; + line-height: 1.5em; + color: #555; + border: 1px solid #ddd; + @include border-radius(.4em); + padding: 0 .3em; + margin: -1px 0; + } + pre code { font-size: 1em !important; background: none; border: none; } +} + +.pre-code { + font-family: $mono !important; + overflow: scroll; + overflow-y: hidden; + display: block; + padding: .8em; + overflow-x: auto; + line-height: 1.45em; + background: $base03 $noise-bg !important; + color: $base1 !important; + span { color: $base1 !important; } + span { font-style: normal !important; font-weight: normal !important; } + + .c { color: $base01 !important; font-style: italic !important; } /* Comment */ + .cm { color: $base01 !important; font-style: italic !important; } /* Comment.Multiline */ + .cp { color: $base01 !important; font-style: italic !important; } /* Comment.Preproc */ + .c1 { color: $base01 !important; font-style: italic !important; } /* Comment.Single */ + .cs { color: $base01 !important; font-weight: bold !important; font-style: italic !important; } /* Comment.Special */ + .err { color: $solar-red !important; background: none !important; } /* Error */ + .k { color: $solar-orange !important; } /* Keyword */ + .o { color: $base1 !important; font-weight: bold !important; } /* Operator */ + .p { color: $base1 !important; } /* Operator */ + .ow { color: $solar-cyan !important; font-weight: bold !important; } /* Operator.Word */ + .gd { color: $base1 !important; background-color: mix($solar-red, $base03, 25%) !important; display: inline-block; } /* Generic.Deleted */ + .gd .x { color: $base1 !important; background-color: mix($solar-red, $base03, 35%) !important; display: inline-block; } /* Generic.Deleted.Specific */ + .ge { color: $base1 !important; font-style: italic !important; } /* Generic.Emph */ + //.gr { color: #aa0000 } /* Generic.Error */ + .gh { color: $base01 !important; } /* Generic.Heading */ + .gi { color: $base1 !important; background-color: mix($solar-green, $base03, 20%) !important; display: inline-block; } /* Generic.Inserted */ + .gi .x { color: $base1 !important; background-color: mix($solar-green, $base03, 40%) !important; display: inline-block; } /* Generic.Inserted.Specific */ + //.go { color: #888888 } /* Generic.Output */ + //.gp { color: #555555 } /* Generic.Prompt */ + .gs { color: $base1 !important; font-weight: bold !important; } /* Generic.Strong */ + .gu { color: $solar-violet !important; } /* Generic.Subheading */ + //.gt { color: #aa0000 } /* Generic.Traceback */ + .kc { color: $solar-green !important; font-weight: bold !important; } /* Keyword.Constant */ + .kd { color: $solar-blue !important; } /* Keyword.Declaration */ + .kp { color: $solar-orange !important; font-weight: bold !important; } /* Keyword.Pseudo */ + .kr { color: $solar-magenta !important; font-weight: bold !important; } /* Keyword.Reserved */ + .kt { color: $solar-cyan !important; } /* Keyword.Type */ + .n { color: $solar-blue !important; } + .na { color: $solar-blue !important; } /* Name.Attribute */ + .nb { color: $solar-green !important; } /* Name.Builtin */ + .nc { color: $solar-magenta !important;} /* Name.Class */ + .no { color: $solar-yellow !important; } /* Name.Constant */ + //.ni { color: #800080 } /* Name.Entity */ + .nl { color: $solar-green !important; } + .ne { color: $solar-blue !important; font-weight: bold !important; } /* Name.Exception */ + .nf { color: $solar-blue !important; font-weight: bold !important; } /* Name.Function */ + .nn { color: $solar-yellow !important; } /* Name.Namespace */ + .nt { color: $solar-blue !important; font-weight: bold !important; } /* Name.Tag */ + .nx { color: $solar-yellow !Important; } + //.bp { color: #999999 } /* Name.Builtin.Pseudo */ + //.vc { color: #008080 } /* Name.Variable.Class */ + .vg { color: $solar-blue !important; } /* Name.Variable.Global */ + .vi { color: $solar-blue !important; } /* Name.Variable.Instance */ + .nv { color: $solar-blue !important; } /* Name.Variable */ + //.w { color: #bbbbbb } /* Text.Whitespace */ + .mf { color: $solar-cyan !important; } /* Literal.Number.Float */ + .m { color: $solar-cyan !important; } /* Literal.Number */ + .mh { color: $solar-cyan !important; } /* Literal.Number.Hex */ + .mi { color: $solar-cyan !important; } /* Literal.Number.Integer */ + //.mo { color: #009999 } /* Literal.Number.Oct */ + .s { color: $solar-cyan !important; } /* Literal.String */ + //.sb { color: #d14 } /* Literal.String.Backtick */ + //.sc { color: #d14 } /* Literal.String.Char */ + .sd { color: $solar-cyan !important; } /* Literal.String.Doc */ + .s2 { color: $solar-cyan !important; } /* Literal.String.Double */ + .se { color: $solar-red !important; } /* Literal.String.Escape */ + //.sh { color: #d14 } /* Literal.String.Heredoc */ + .si { color: $solar-blue !important; } /* Literal.String.Interpol */ + //.sx { color: #d14 } /* Literal.String.Other */ + .sr { color: $solar-cyan !important; } /* Literal.String.Regex */ + .s1 { color: $solar-cyan !important; } /* Literal.String.Single */ + //.ss { color: #990073 } /* Literal.String.Symbol */ + //.il { color: #009999 } /* Literal.Number.Integer.Long */ + div { .gd, .gd .x, .gi, .gi .x { display: inline-block; width: 100%; }} +} + +.highlight, .gist-highlight { + pre { background: none; @include border-radius(0px); border: none; padding: 0; margin-bottom: 0; } + margin-bottom: 1.8em; + background: $base03; + overflow-y: hidden; + overflow-x: auto; +} + +$solar-scroll-bg: rgba(#fff, .15); +$solar-scroll-thumb: rgba(#fff, .2); +@if $solarized == light { + $solar-scroll-bg: rgba(#000, .15); + $solar-scroll-thumb: rgba(#000, .15); +} + +pre, .highlight, .gist-highlight { + &::-webkit-scrollbar { height: .5em; background: $solar-scroll-bg; } + &::-webkit-scrollbar-thumb:horizontal { background: $solar-scroll-thumb; -webkit-border-radius: 4px; border-radius: 4px } +} + +.highlight code { + @extend .pre-code; background: #000; +} +figure.code { + background: none; + padding: 0; + border: 0; + margin-bottom: 1.5em; + pre { margin-bottom: 0; } + figcaption { + position: relative; + @extend .code-title; + a { @extend .download-source; } + } + .highlight { + margin-bottom: 0; + } +} + +.code-title { + text-align: center; + font-size: 13px; + line-height: 2em; + text-shadow: #cbcccc 0 1px 0; + color: #474747; + font-weight: normal; + margin-bottom: 0; + @include border-radius(5px 5px 0 0); + font-family: "Helvetica Neue", Arial, "Lucida Grande", "Lucida Sans Unicode", Lucida, sans-serif; + background: #aaaaaa image-url("code_bg.png") top repeat-x; + border: 1px solid #565656; + border-top-color: #cbcbcb; + border-left-color: #a5a5a5; + border-right-color: #a5a5a5; + border-bottom: 0; +} + +.download-source { + position: absolute; right: .8em; + color: #666 !important; + z-index: 1; + font-size: 13px; + text-shadow: #cbcccc 0 1px 0; + padding-left: 3em; +} diff --git a/sass/oscailte/custom/_README.scss b/sass/oscailte/custom/_README.scss new file mode 100644 index 00000000000..8f1caadd6c0 --- /dev/null +++ b/sass/oscailte/custom/_README.scss @@ -0,0 +1,6 @@ +// You can freely create SCSS files within this Custom directory +// and they will be imported into the end of the theme's output CSS. +// The directory is loaded to increase abstraction and reduce the amount of +// changes to be made to the Oscailte theme itself. + +// THESE FILES AREA LOADED ALPHABETICALLY \ No newline at end of file diff --git a/sass/oscailte/helpers/_classes.scss b/sass/oscailte/helpers/_classes.scss new file mode 100644 index 00000000000..8f71f33ed30 --- /dev/null +++ b/sass/oscailte/helpers/_classes.scss @@ -0,0 +1,60 @@ +.pull-left {float: left;} +.pull-right {float: right;} + +.clearfix { + *zoom: 1; + &::before, + &::after { + display: table; + content: ""; + line-height: 0; + } + &::after { + clear: both; + } +} + +ul, ol { + &.unstyled { + list-style-type: none; + margin: 0; + } + + &.inline { + @extend .unstyled; + list-style-type: none; + > li {display: inline;} + } + + &.divided { + @extend .unstyled; + > li { + border-top: 1px solid lighten($site-background, 5%); + border-bottom: 1px solid darken($site-background, 5%); + padding: 0.5em 0; + + &:first-child { + border-top: none; + padding-top: 0; + } + &:last-child {border-bottom: none;} + } + } +} + +.btn { + @include gradient-vertical; + @include box-shadow(0 0 3px rgba(0, 0, 0, 0.25)); + border-radius: 3px; + color: $button-text; + display: inline-block; + padding: 7px 15px; + text-decoration: none; + text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.25); + &:hover { + text-decoration: underline; + } + &:visited { + color: $button-text; + } +} \ No newline at end of file diff --git a/sass/oscailte/helpers/_grid-fix.scss b/sass/oscailte/helpers/_grid-fix.scss new file mode 100644 index 00000000000..8b98103e5bf --- /dev/null +++ b/sass/oscailte/helpers/_grid-fix.scss @@ -0,0 +1,76 @@ +/* + * A modified version of @kevva solution https://github.com/csswizardry/inuit.css/issues/170#issuecomment-14859371 + * Letter spacing hack to remove the necessity of using empty HTML comments between columns. + * + */ + +@if $use-gridfix == true { + .grid { + letter-spacing: -1rem; + } + + /* Opera hack */ + .opera:-o-prefocus, + .grid { + word-spacing: -1rem; + } + + .grid__item { + letter-spacing: normal; + word-spacing: normal; + } +} + +/* + * An implementation of flexbox which can be applied to the grid items + * + */ + +@media only screen and (min-width: $lap-start){ + .flex { + display: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; + -webkit-box-direction: normal; + -moz-box-direction: normal; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -moz-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-box-align: start; + -moz-box-align: start; + -webkit-align-items: flex-start; + -ms-flex-align: start; + align-items: flex-start; + } + + .flex__item { + -webkit-box-ordinal-group: 1; + -moz-box-ordinal-group: 1; + -webkit-order: 0; + -ms-flex-order: 0; + order: 0; + -webkit-box-flex: 0; + -moz-box-flex: 0; + -webkit-flex: 0 1 auto; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + -webkit-align-self: center; + -ms-flex-item-align: center; + align-self: center; + } +} \ No newline at end of file diff --git a/sass/oscailte/homepage/_hero_unit.scss b/sass/oscailte/homepage/_hero_unit.scss new file mode 100644 index 00000000000..469c057a3d9 --- /dev/null +++ b/sass/oscailte/homepage/_hero_unit.scss @@ -0,0 +1,76 @@ +.hero { + background-color: $grayDarker; + background-position: 0 50%; + -webkit-background-size: cover; + -moz-background-size: cover; + -o-background-size: cover; + background-size: cover; + border-bottom: 1px solid $white; + color: $white; + font-weight: bold; + margin-top: -2em; + margin-bottom: 1.5em; + padding: 50px 0; + position: relative; + + &::before { + background: url("../images/matrix.png") 0 0 rgba(0, 0, 0, 0.35); + box-shadow: inset 0 0 5px $black; + content: ""; + display: block; + position: absolute; + top: 0; right: 0; bottom: 0; left: 0; + z-index: 5; + } + + > .grid-wrapper { + position: relative; + z-index: 7; + } + + .credit { + font-size: 0.75em; + font-style: italic; + position: absolute; + bottom: 0; right: 10px; + z-index: 7; + a { + border-bottom: 1px solid; + color: $white; + text-decoration: none; + } + .licence { + border: none; + } + } + + .avatar { + @media only screen and (max-width: $lap-end){ + margin-bottom: 30px; + } + text-align: center; + img { + @include border-radius(100%); + border: 10px solid $primary-color; + } + } + + h1 { + font-size: 3.5em; + line-height: 1em; + text-shadow: 2px 2px 0 rgba(0, 0, 0, 0.75); + } + + hr { + @extend .divider; + box-shadow: 1px 1px 0 rgba(0, 0, 0, 0.75); + } + + p { + text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.75); + small { + color: $grayLighter; + font-size: .65em; + } + } +} \ No newline at end of file diff --git a/sass/oscailte/homepage/_home.scss b/sass/oscailte/homepage/_home.scss new file mode 100644 index 00000000000..2b8228fd74e --- /dev/null +++ b/sass/oscailte/homepage/_home.scss @@ -0,0 +1,44 @@ +.usp { + text-align: center; + + @media only screen and (min-width: $lap-start) and (max-width: $lap-end){ + margin-bottom: 25px; + } + + .icon { + i { + @include border-radius(50%); + border: 10px solid $blue; + color: $grayDarker; + display: inline-block; + font-size: 6em; + height: 1.85em; + line-height: normal; + padding: 0.3em; + width: 1.85em; + } + } + + .title { + color: $grayDarker; + font-size: 1.1em; + line-height: 3em; + margin: 0; + text-align: center; + text-transform: capitalize; + + + hr { + margin: 0; + margin-bottom: 1em; + } + } + + hr { + @extend .divider; + margin-bottom: 1em; + } + + p { + text-align: left; + } +} \ No newline at end of file diff --git a/sass/partials/_archive.scss b/sass/partials/_archive.scss new file mode 100644 index 00000000000..9ef1e824492 --- /dev/null +++ b/sass/partials/_archive.scss @@ -0,0 +1,72 @@ +#archive { + #content > div { &, > article { padding-top: 0; } } +} +#blog-archives { + article { + padding: 1em 0 1em; + position: relative; + background: $img-border bottom left repeat-x; + &:last-child { + background: none; + } + footer { padding: 0; margin: 0;} + } + h1 { color: $text-color; margin-bottom: .3em; } + h2 { display: none; } + h1 { + font-size: 1.5em; + a { + @include hover-link; + color: inherit; + &:hover { color: $link-color-hover; } + font-weight: normal; + display: inline-block; + } + } + a.category, time { + @extend .sans; + color: $text-color-light; + } + color: $text-color-light; + .entry-content { display: none; } + time { + font-size: .9em; + line-height: 1.2em; + .month, .day { display: inline-block; } + .month { text-transform: uppercase; } + } + p { margin-bottom: 1em; } + &, .entry-content { a { @include link-colors(inherit, $link-color-hover); }} + a:hover { color: $link-color-hover; } + @media only screen and (min-width: 550px) { + article { margin-left: 5em; } + h2 { + margin-bottom: .3em; + font-weight: normal; + display: inline-block; + position: relative; top: -1px; + float: left; + &:first-child { padding-top: .75em; } + } + time { + position: absolute; + text-align: right; + left: 0em; + top: 1.8em; + } + .year { display: none; } + article { + padding:{left: 4.5em; bottom: .7em;} + } + a.category { + line-height: 1.1em; + } + } +} +#content > .category { + article { + margin-left: 0; + padding-left: 6.8em; + } + .year { display: inline; } +} diff --git a/sass/partials/_blog.scss b/sass/partials/_blog.scss new file mode 100644 index 00000000000..57fe7a8aec1 --- /dev/null +++ b/sass/partials/_blog.scss @@ -0,0 +1,141 @@ +article { + padding-top: 1em; + a { @extend .force-wrap; } + header { + position: relative; + padding-top: 2em; + padding-bottom: 1em; + margin-bottom: 1em; + background: $img-border bottom left repeat-x; + h1 { + margin: 0; + a { text-decoration: none; + &:hover { text-decoration: underline; } } + } + p { + font-size: .9em; + color: $text-color-light; + margin: 0; + &.meta { + @extend .sans; + text-transform: uppercase; + position: absolute; top: 0; + } + } + @media only screen and (min-width: 768px) { + margin-bottom: 1.5em; + padding-bottom: 1em; + background: $img-border bottom left repeat-x; + } + } + h2 { + padding-top: 0.8em; + background: $img-border top left repeat-x; + } + .entry-content & h2:first-child, header + h2 { padding-top: 0; } + h2:first-child, header + h2 { background: none; } + .feature { + padding-top: .5em; + margin-bottom: 1em; + padding-bottom: 1em; + background: $img-border bottom left repeat-x; + font-size: 2.0em; font-style: italic; + line-height: 1.3em; + } + img, video, .flash-video { + @extend .flex-content; + @extend .basic-alignment; + @include shadow-box; + } + video, .flash-video { margin: 0 auto 1.5em; } + video { display: block; width: 100%; } + .flash-video { + > div { + position: relative; + display: block; + padding-bottom: 56.25%; + padding-top: 1px; + height: 0; + overflow: hidden; + iframe, object, embed { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + } + } + } + > footer { + padding-bottom: 2.5em; + margin-top: 2em; + @extend .sans; + p.meta { + margin-bottom: .8em; + font-size: .85em; + clear: both; + overflow: hidden; + } + .byline + time:before, time +time:before, .comments:before, .byline ~ .categories:before { + @extend .separator; + } + } + +} +article + article { + .blog-index & { + background: $img-border top left repeat-x; + } +} +#content .blog-index { + padding: { top: 0; bottom: 0; } + article { padding-top: 2em; } + article header { background: none; padding-bottom: 0; } + article h1 { + font-size: 2.2em; + a { color: inherit; &:hover { color: $link-color-hover; } } + } + a[rel=full-article] { + background: darken($main-bg, 5); + display: inline-block; + padding: .4em .8em; + margin-right: .5em; + text-decoration: none; + color: mix($text-color, $text-color-light); + @extend .serif; + @include transition(background-color .5s); + &:hover { + background: $link-color-hover; + text-shadow: none; + color: $main-bg; + } + } + footer { + @extend .sans; + margin-top: 1em; + } +} + +.separator { + content: "\2022 "; + padding: 0 .4em 0 .2em; + display: inline-block; +} + +#content div.pagination { + text-align: center; + font-size: .95em; + position: relative; + background: $img-border top left repeat-x; + padding: {top: 1.5em; bottom: 1.5em;} + a { + text-decoration: none; + color: $text-color-light; + &.prev { position: absolute; left: 0; } + &.next { position: absolute; right: 0; } + &:hover { color: $link-color-hover; } + &[href*=archive] { + &:before, &:after { content: '\2014'; padding: 0 .3em; } + } + } +} diff --git a/sass/partials/_footer.scss b/sass/partials/_footer.scss new file mode 100644 index 00000000000..37411225120 --- /dev/null +++ b/sass/partials/_footer.scss @@ -0,0 +1,19 @@ +body > footer { + @extend .sans; + font-size: .8em; + color: $footer-color; + text-shadow: lighten($footer-bg, 5) 0 1px; + background-color: $footer-bg; + @include background($footer-bg-front, $footer-bg-back); + border-top: 1px solid $footer-border-top; + position: relative; + padding-top: 1em; + padding-bottom: 1em; + margin-bottom: 3em; + @include border-bottom-radius(.4em); + z-index: 1; + a { + @include link-colors($footer-link-color, $footer-link-color-hover, $visited: $footer-link-color); + } + p:last-child { margin-bottom: 0; } +} diff --git a/sass/partials/_header.scss b/sass/partials/_header.scss new file mode 100644 index 00000000000..e3c6c020c2c --- /dev/null +++ b/sass/partials/_header.scss @@ -0,0 +1,18 @@ +body > header { + background: $header-bg; + h1 { + display: inline-block; + margin: 0; + a, a:visited, a:hover { + color: $title_color; + text-decoration: none; + } + } + h2 { + margin: .2em 0 0; + @extend .sans; + font-size: 1em; + color: $subtitle-color; + font-weight: normal; + } +} diff --git a/sass/partials/_navigation.scss b/sass/partials/_navigation.scss new file mode 100644 index 00000000000..30fa011d18c --- /dev/null +++ b/sass/partials/_navigation.scss @@ -0,0 +1,137 @@ +body > nav { + position: relative; + background-color: $nav-bg; + @include background($nav-bg-front, $nav-bg-back); + border: { + top: 1px solid $nav-border-top; + bottom: 1px solid $nav-border-bottom; } + padding-top: .35em; + padding-bottom: .35em; + form { + @include background-clip(padding-box); + margin: 0; padding: 0; + .search { + padding: .3em .5em 0; + font-size: .85em; + font-family: $sans; + line-height: 1.1em; + width: 95%; + @include border-radius(.5em); + @include background-clip(padding-box); + @include box-shadow(lighten($nav-bg, 2) 0 1px); + background-color: lighten($nav-bg, 15); + border: 1px solid $nav-border; + color: #888; + &:focus { + color: #444; + border-color: #80b1df; + @include box-shadow(#80b1df 0 0 4px, #80b1df 0 0 3px inset); + background-color: #fff; + outline: none; + } + } + } + fieldset[role=search]{ float: right; width: 48%; } + fieldset.mobile-nav{ float: left; width: 48%; + select{ width: 100%; font-size: .8em; border: 1px solid #888;} + } + ul { display: none; } + @media only screen and (min-width: 550px) { + font-size: .9em; + ul { + @include horizontal-list(0); + float: left; + display: block; + padding-top: .15em; + } + ul.subscription { + margin-left: .8em; + float: right; + li:last-child a { padding-right: 0; } + } + ul li { + margin: 0; + } + a { + @include link-colors($nav-color, $nav-color-hover, $visited: $nav-color); + font-family: $sans; + text-shadow: lighten($nav-bg, 12) 0 1px; + float: left; + text-decoration: none; + font-size: 1.1em; + padding: .1em 0; + line-height: 1.5em; + } + li + li { + border-left: 1px solid $nav-border-left; + margin-left: .8em; + a { + padding-left: .8em; + border-left: 1px solid $nav-border-right; + } + } + form { + float: right; + text-align: left; + padding-left: .8em; + width: $sidebar-width-medium - $pad-medium*2 - $sidebar-pad-medium + 20px; + .search { + width: 93%; + font-size: .95em; + line-height: 1.2em; + } + } + ul[data-subscription$=email] + form { + width: $sidebar-width-medium - $pad-medium*2 - $sidebar-pad-medium - 58px; + .search { width: 91%; } + } + fieldset.mobile-nav { display: none; } + fieldset[role=search]{ width: 99%; } + } + @media only screen and (min-width: 992px) { + form { + width: $sidebar-width-wide - $pad-wide - $sidebar-pad-wide*2 + 10px; + } + ul[data-subscription$=email] + form { + width: $sidebar-width-wide - $pad-wide - $sidebar-pad-wide*2 - 58px; + } + } +} +.no-placeholder { + body > nav .search { + background: lighten($nav-bg, 15) image-url('search.png') .3em .25em no-repeat; + text-indent: 1.3em; + } +} +@mixin mask-subscription-nav($feed: 'rss.png'){ + position: relative; top: 0px; + text-indent: -999999em; + background-color: $nav-border-right; + border: 0; + padding: 0; + &,&:after { @include mask-image($feed); } + &:after { + content: ""; + position: absolute; top: -1px; left: 0; + background-color: lighten($nav-color, 25); + } + &:hover:after { background-color: lighten($nav-color, 20); } +} +.maskImage { + body > nav { + @media only screen and (min-width: 550px) { + ul[data-subscription$=email] + form { + width: $sidebar-width-medium - $pad-medium*2 - $sidebar-pad-medium - 32px; + } + } + @media only screen and (min-width: 992px) { + ul[data-subscription$=email] + form { + width: $sidebar-width-wide - $pad-wide - $sidebar-pad-wide*2 - 32px; + } + } + } + ul.subscription { position: relative; top: .2em; li, a { border: 0; padding: 0; }} + a[rel=subscribe-rss]{ @include mask-subscription-nav('rss.png'); } + a[rel=subscribe-email]{ @include mask-subscription-nav('email.png'); } +} + diff --git a/sass/partials/_sharing.scss b/sass/partials/_sharing.scss new file mode 100644 index 00000000000..3eecb488e82 --- /dev/null +++ b/sass/partials/_sharing.scss @@ -0,0 +1,8 @@ +.sharing { + p.meta + & { + padding: { top: 1em; left: 0; } + background: $img-border top left repeat-x; + } +} + +#fb-root { display: none; } diff --git a/sass/partials/_sidebar.scss b/sass/partials/_sidebar.scss new file mode 100644 index 00000000000..cd8c1ca2632 --- /dev/null +++ b/sass/partials/_sidebar.scss @@ -0,0 +1,4 @@ +@import "sidebar/base"; +@import "sidebar/googleplus"; +@import "sidebar/pinboard"; +@import "sidebar/delicious"; diff --git a/sass/partials/_syntax.scss b/sass/partials/_syntax.scss new file mode 100644 index 00000000000..416de7fb678 --- /dev/null +++ b/sass/partials/_syntax.scss @@ -0,0 +1,261 @@ +.highlight, html .gist .gist-file .gist-syntax .gist-highlight { + table td.code { width: 100%; } + border: 1px solid $pre-border !important; +} +.highlight .line-numbers, html .gist .gist-file .gist-syntax .highlight .line_numbers { + text-align: right; + font-size: 13px; + line-height: 1.45em; + @if $solarized == light { + background: lighten($base03, 1) $noise-bg !important; + border-right: 1px solid darken($base02, 2) !important; + @include box-shadow(lighten($base03, 2) -1px 0 inset); + text-shadow: lighten($base02, 2) 0 -1px; + } @else { + background: $base02 $noise-bg !important; + border-right: 1px solid darken($base03, 2) !important; + @include box-shadow(lighten($base02, 2) -1px 0 inset); + text-shadow: darken($base02, 10) 0 -1px; + } + span { color: $base01 !important; } + padding: .8em !important; + @include border-radius(0); +} + +figure.code, .gist-file, pre { + @include box-shadow(rgba(#000, .06) 0 0 10px); + .highlight pre { @include box-shadow(none); } +} + +.gist .highlight, figure.code .highlight { + @include selection(adjust-color($base03, $lightness: 23%, $saturation: -65%), $text-shadow: $base03 0 1px); +} +html .gist .gist-file { + margin-bottom: 1.8em; + position: relative; + border: none; + padding-top: image-height("code_bg.png") !important; + .highlight { + margin-bottom: 0; + } + .gist-syntax { + border-bottom: 0 !important; + background: none !important; + .gist-highlight { + background: $base03 !important; + } + .highlight pre { + @extend .pre-code; + padding: 0; + } + } + .gist-meta { + padding: .6em 0.8em; + border: 1px solid lighten($base02, 2) !important; + color: $base01; + font-size: .7em !important; + @if $solarized == light { + background: lighten($base03, 2) $noise-bg; + border: 1px solid $pre-border !important; + border-top: 1px solid lighten($base03, 2) !important; + } @else { + background: $base02 $noise-bg; + } + @extend .sans; + line-height: 1.5em; + a { + color: mix($base1, $base01) !important; + @include hover-link; + &:hover { color: $base1 !important; } + } + a[href*='#file'] { + position: absolute; top: 0; left:0; right:-10px; + color: #474747 !important; + @extend .code-title; + &:hover { color: $link-color !important; } + } + a[href*=raw]{ + @extend .download-source; + top: .4em; + } + } +} +pre { + background: $pre-bg $noise-bg; + @include border-radius(.4em); + @extend .mono; + border: 1px solid $pre-border; + line-height: 1.45em; + font-size: 13px; + margin-bottom: 2.1em; + padding: .8em 1em; + color: $pre-color; + overflow: auto; +} +h3.filename { + @extend .code-title; + + pre { @include border-top-radius(0px); } +} + +p, li { + code { + @extend .mono; + display: inline-block; + white-space: no-wrap; + background: #fff; + font-size: .8em; + line-height: 1.5em; + color: #555; + border: 1px solid #ddd; + @include border-radius(.4em); + padding: 0 .3em; + margin: -1px 0; + } + pre code { font-size: 1em !important; background: none; border: none; } +} + +.pre-code { + font-family: $mono !important; + overflow: scroll; + overflow-y: hidden; + display: block; + padding: .8em; + overflow-x: auto; + line-height: 1.45em; + background: $base03 $noise-bg !important; + color: $base1 !important; + span { color: $base1 !important; } + span { font-style: normal !important; font-weight: normal !important; } + + .c { color: $base01 !important; font-style: italic !important; } /* Comment */ + .cm { color: $base01 !important; font-style: italic !important; } /* Comment.Multiline */ + .cp { color: $base01 !important; font-style: italic !important; } /* Comment.Preproc */ + .c1 { color: $base01 !important; font-style: italic !important; } /* Comment.Single */ + .cs { color: $base01 !important; font-weight: bold !important; font-style: italic !important; } /* Comment.Special */ + .err { color: $solar-red !important; background: none !important; } /* Error */ + .k { color: $solar-orange !important; } /* Keyword */ + .o { color: $base1 !important; font-weight: bold !important; } /* Operator */ + .p { color: $base1 !important; } /* Operator */ + .ow { color: $solar-cyan !important; font-weight: bold !important; } /* Operator.Word */ + .gd { color: $base1 !important; background-color: mix($solar-red, $base03, 25%) !important; display: inline-block; } /* Generic.Deleted */ + .gd .x { color: $base1 !important; background-color: mix($solar-red, $base03, 35%) !important; display: inline-block; } /* Generic.Deleted.Specific */ + .ge { color: $base1 !important; font-style: italic !important; } /* Generic.Emph */ + //.gr { color: #aa0000 } /* Generic.Error */ + .gh { color: $base01 !important; } /* Generic.Heading */ + .gi { color: $base1 !important; background-color: mix($solar-green, $base03, 20%) !important; display: inline-block; } /* Generic.Inserted */ + .gi .x { color: $base1 !important; background-color: mix($solar-green, $base03, 40%) !important; display: inline-block; } /* Generic.Inserted.Specific */ + //.go { color: #888888 } /* Generic.Output */ + //.gp { color: #555555 } /* Generic.Prompt */ + .gs { color: $base1 !important; font-weight: bold !important; } /* Generic.Strong */ + .gu { color: $solar-violet !important; } /* Generic.Subheading */ + //.gt { color: #aa0000 } /* Generic.Traceback */ + .kc { color: $solar-green !important; font-weight: bold !important; } /* Keyword.Constant */ + .kd { color: $solar-blue !important; } /* Keyword.Declaration */ + .kp { color: $solar-orange !important; font-weight: bold !important; } /* Keyword.Pseudo */ + .kr { color: $solar-magenta !important; font-weight: bold !important; } /* Keyword.Reserved */ + .kt { color: $solar-cyan !important; } /* Keyword.Type */ + .n { color: $solar-blue !important; } + .na { color: $solar-blue !important; } /* Name.Attribute */ + .nb { color: $solar-green !important; } /* Name.Builtin */ + .nc { color: $solar-magenta !important;} /* Name.Class */ + .no { color: $solar-yellow !important; } /* Name.Constant */ + //.ni { color: #800080 } /* Name.Entity */ + .nl { color: $solar-green !important; } + .ne { color: $solar-blue !important; font-weight: bold !important; } /* Name.Exception */ + .nf { color: $solar-blue !important; font-weight: bold !important; } /* Name.Function */ + .nn { color: $solar-yellow !important; } /* Name.Namespace */ + .nt { color: $solar-blue !important; font-weight: bold !important; } /* Name.Tag */ + .nx { color: $solar-yellow !Important; } + //.bp { color: #999999 } /* Name.Builtin.Pseudo */ + //.vc { color: #008080 } /* Name.Variable.Class */ + .vg { color: $solar-blue !important; } /* Name.Variable.Global */ + .vi { color: $solar-blue !important; } /* Name.Variable.Instance */ + .nv { color: $solar-blue !important; } /* Name.Variable */ + //.w { color: #bbbbbb } /* Text.Whitespace */ + .mf { color: $solar-cyan !important; } /* Literal.Number.Float */ + .m { color: $solar-cyan !important; } /* Literal.Number */ + .mh { color: $solar-cyan !important; } /* Literal.Number.Hex */ + .mi { color: $solar-cyan !important; } /* Literal.Number.Integer */ + //.mo { color: #009999 } /* Literal.Number.Oct */ + .s { color: $solar-cyan !important; } /* Literal.String */ + //.sb { color: #d14 } /* Literal.String.Backtick */ + //.sc { color: #d14 } /* Literal.String.Char */ + .sd { color: $solar-cyan !important; } /* Literal.String.Doc */ + .s2 { color: $solar-cyan !important; } /* Literal.String.Double */ + .se { color: $solar-red !important; } /* Literal.String.Escape */ + //.sh { color: #d14 } /* Literal.String.Heredoc */ + .si { color: $solar-blue !important; } /* Literal.String.Interpol */ + //.sx { color: #d14 } /* Literal.String.Other */ + .sr { color: $solar-cyan !important; } /* Literal.String.Regex */ + .s1 { color: $solar-cyan !important; } /* Literal.String.Single */ + //.ss { color: #990073 } /* Literal.String.Symbol */ + //.il { color: #009999 } /* Literal.Number.Integer.Long */ + div { .gd, .gd .x, .gi, .gi .x { display: inline-block; width: 100%; }} +} + +.highlight, .gist-highlight { + pre { background: none; @include border-radius(0px); border: none; padding: 0; margin-bottom: 0; } + margin-bottom: 1.8em; + background: $base03; + overflow-y: hidden; + overflow-x: auto; +} + +$solar-scroll-bg: rgba(#fff, .15); +$solar-scroll-thumb: rgba(#fff, .2); +@if $solarized == light { + $solar-scroll-bg: rgba(#000, .15); + $solar-scroll-thumb: rgba(#000, .15); +} + +pre, .highlight, .gist-highlight { + &::-webkit-scrollbar { height: .5em; background: $solar-scroll-bg; } + &::-webkit-scrollbar-thumb:horizontal { background: $solar-scroll-thumb; -webkit-border-radius: 4px; border-radius: 4px } +} + +.highlight code { + @extend .pre-code; background: #000; +} +figure.code { + background: none; + padding: 0; + border: 0; + margin-bottom: 1.5em; + pre { margin-bottom: 0; } + figcaption { + position: relative; + @extend .code-title; + a { @extend .download-source; } + } + .highlight { + margin-bottom: 0; + } +} + +.code-title { + text-align: center; + font-size: 13px; + line-height: 2em; + text-shadow: #cbcccc 0 1px 0; + color: #474747; + font-weight: normal; + margin-bottom: 0; + @include border-top-radius(5px); + font-family: "Helvetica Neue", Arial, "Lucida Grande", "Lucida Sans Unicode", Lucida, sans-serif; + background: #aaaaaa image-url("code_bg.png") top repeat-x; + border: 1px solid #565656; + border-top-color: #cbcbcb; + border-left-color: #a5a5a5; + border-right-color: #a5a5a5; + border-bottom: 0; +} + +.download-source { + position: absolute; right: .8em; + @include hover-link; + color: #666 !important; + z-index: 1; + font-size: 13px; + text-shadow: #cbcccc 0 1px 0; + padding-left: 3em; +} diff --git a/sass/partials/sidebar/_base.scss b/sass/partials/sidebar/_base.scss new file mode 100644 index 00000000000..5441304e279 --- /dev/null +++ b/sass/partials/sidebar/_base.scss @@ -0,0 +1,106 @@ +.side-shadow-border { + @include box-shadow(lighten($sidebar-bg, 5) 0 1px); +} +aside.sidebar { + overflow: hidden; + color: $sidebar-color; + text-shadow: lighten($sidebar-bg, 8) 0 1px; + a { @extend .force-wrap; } + section { + @extend .sans; + font-size: .8em; + line-height: 1.4em; + margin-bottom: 1.5em; + h1 { + margin: 1.5em 0 0; + padding-bottom: .2em; + border-bottom: 1px solid $sidebar-border; + @extend .side-shadow-border; + + p { + padding-top: .4em; + } + } + } + img { + @extend .flex-content; + @extend .basic-alignment; + @include shadow-box($border: #fff .3em solid); + } + ul { + margin-bottom: 0.5em; + margin-left: 0; + } + li { + list-style: none; + padding: .5em 0; + margin: 0; + border-bottom: 1px solid $sidebar-border; + @extend .side-shadow-border; + p:last-child { + margin-bottom: 0; + } + } + a { + color: inherit; + @include transition(color .5s); + } + &:hover a { + color: $sidebar-link-color; + &:hover { color: $sidebar-link-color-hover; } + } +} +.aside-alt-link { + color: $sidebar-link-color-subdued; + &:hover { + color: $sidebar-link-color-subdued-hover; + } +} + +@media only screen and (min-width: 768px) { + .toggle-sidebar { + outline: none; + position: absolute; right: -10px; top: 0; bottom: 0; + display: inline-block; + text-decoration: none; + color: mix($text-color-light, $sidebar-bg); + width: 9px; + cursor: pointer; + &:hover { + background: mix($sidebar-border, $sidebar-bg); + @include background(linear-gradient(left, rgba($sidebar-border, .5), rgba($sidebar-border, 0))); + } + &:after { + position: absolute; right: -11px; top: 0; + width: 20px; + font-size: 1.2em; + line-height: 1.1em; + padding-bottom: .15em; + @include border-bottom-right-radius(.3em); + text-align: center; + background: $main-bg $noise-bg; + border-bottom: 1px solid $sidebar-border; + border-right: 1px solid $sidebar-border; + content: "\00BB"; + text-indent: -1px; + } + .collapse-sidebar & { + text-indent: 0px; + right: -20px; + width: 19px; + &:hover { + background: mix($sidebar-border, $sidebar-bg); + } + &:after { + border-left: 1px solid $sidebar-border; + text-shadow: #fff 0 1px; + content: "\00AB"; + left: 0px; right: 0; + text-align: center; + text-indent: 0; + border: 0; + border-right-width: 0; + background: none; + } + } + } +} diff --git a/sass/partials/sidebar/_delicious.scss b/sass/partials/sidebar/_delicious.scss new file mode 100644 index 00000000000..e962702e5fa --- /dev/null +++ b/sass/partials/sidebar/_delicious.scss @@ -0,0 +1,4 @@ +.delicious-posts { + a.delicious-link { margin-bottom: .5em; display: block; } + p { font-size: 1em; } +} diff --git a/sass/partials/sidebar/_googleplus.scss b/sass/partials/sidebar/_googleplus.scss new file mode 100644 index 00000000000..c2a693ee7f2 --- /dev/null +++ b/sass/partials/sidebar/_googleplus.scss @@ -0,0 +1,26 @@ +.googleplus { + h1 { + -moz-box-shadow: none !important; + -webkit-box-shadow: none !important; + -o-box-shadow: none !important; + box-shadow: none !important; + border-bottom: 0px none !important; + } + a { + text-decoration: none; + white-space: normal !important; + line-height: 32px; + + img { + float: left; + margin-right: 0.5em; + border: 0 none; + } + } +} + +.googleplus-hidden { + position: absolute; + top: -1000em; + left: -1000em; +} diff --git a/sass/partials/sidebar/_pinboard.scss b/sass/partials/sidebar/_pinboard.scss new file mode 100644 index 00000000000..9f9ab46114d --- /dev/null +++ b/sass/partials/sidebar/_pinboard.scss @@ -0,0 +1,12 @@ +#pinboard_linkroll { + .pin-title, .pin-description { + display: block; + margin-bottom: .5em; + } + .pin-tag { + @include hover-link; + @extend .aside-alt-link; + &:after { content: ','; } + &:last-child:after { content: ''; } + } +} diff --git a/sass/plugins/_plugins.scss b/sass/plugins/_plugins.scss new file mode 100644 index 00000000000..3b4ba0b8a80 --- /dev/null +++ b/sass/plugins/_plugins.scss @@ -0,0 +1,6 @@ +/* + Add plugin stylesheets to this directory and they will be automatically + Imported. Load order is alphabetical and styles can be overriden in + custom/_style.scss which is loaded after all plugin stylesheets. +*/ + diff --git a/sass/screen.scss b/sass/screen.scss new file mode 100644 index 00000000000..9390e0e72de --- /dev/null +++ b/sass/screen.scss @@ -0,0 +1,2 @@ +@import 'oscailte/oscailte'; +@import 'custom/paulus'; diff --git a/source/CNAME b/source/CNAME new file mode 100644 index 00000000000..e237f86884b --- /dev/null +++ b/source/CNAME @@ -0,0 +1 @@ +home-assistant.io diff --git a/source/_includes/after_footer.html b/source/_includes/after_footer.html new file mode 100644 index 00000000000..08b8e3400a8 --- /dev/null +++ b/source/_includes/after_footer.html @@ -0,0 +1,5 @@ +{% include disqus.html %} +{% include facebook_like.html %} +{% include google_plus_one.html %} +{% include twitter_sharing.html %} +{% include custom/after_footer.html %} diff --git a/source/_includes/archive_post.html b/source/_includes/archive_post.html new file mode 100644 index 00000000000..210dbbbe734 --- /dev/null +++ b/source/_includes/archive_post.html @@ -0,0 +1,8 @@ +{% capture category %}{{ post.categories | size }}{% endcapture %} +

    {% if site.titlecase %}{{ post.title | titlecase }}{% else %}{{ post.title }}{% endif %}

    + +{% if category != '0' %} + +{% endif %} diff --git a/source/_includes/article.html b/source/_includes/article.html new file mode 100644 index 00000000000..842799773e8 --- /dev/null +++ b/source/_includes/article.html @@ -0,0 +1,29 @@ +{% unless page.no_header %} +
    + {% if index %} +

    {% if site.titlecase %}{{ post.title | titlecase }}{% else %}{{ post.title }}{% endif %}

    + {% else %} +

    {% if site.titlecase %}{{ page.title | titlecase }}{% else %}{{ page.title }}{% endif %}

    + {% endif %} + {% unless page.meta == false %} +

    + {% include post/date.html %}{{ time }} + {% if site.disqus_short_name and page.comments != false and post.comments != false and site.disqus_show_comment_count == true %} + | Comments + {% endif %} +

    + {% endunless %} +
    +{% endunless %} +{% if index %} +
    {{ content | excerpt }}
    + {% capture excerpted %}{{ content | has_excerpt }}{% endcapture %} + {% if excerpted == 'true' %} + + {% endif %} +{% else %} +
    {{ content }}
    +{% endif %} diff --git a/source/_includes/aside.html b/source/_includes/aside.html new file mode 100644 index 00000000000..94244aa052c --- /dev/null +++ b/source/_includes/aside.html @@ -0,0 +1,15 @@ + diff --git a/source/_includes/asides/delicious.html b/source/_includes/asides/delicious.html new file mode 100644 index 00000000000..b76f2623dd0 --- /dev/null +++ b/source/_includes/asides/delicious.html @@ -0,0 +1,17 @@ +{% if site.delicious_user %} +
    +

    + Delicious + + + + + +

    +
    + + + +
    +
    +{% endif %} \ No newline at end of file diff --git a/source/_includes/asides/github.html b/source/_includes/asides/github.html new file mode 100644 index 00000000000..c5041b25e05 --- /dev/null +++ b/source/_includes/asides/github.html @@ -0,0 +1,19 @@ +{% if site.social.github.user %} +
    +

    + GitHub Repos + {% if site.social.github.show_profile_link or site.github_show_profile_link %} + + + + + + {% endif %} +

    + +
    +{% endif %} diff --git a/source/_includes/asides/googleplus.html b/source/_includes/asides/googleplus.html new file mode 100644 index 00000000000..d24547941fb --- /dev/null +++ b/source/_includes/asides/googleplus.html @@ -0,0 +1,3 @@ +{% comment %} + This section intentionally blank. +{% endcomment %} \ No newline at end of file diff --git a/source/_includes/asides/pinboard.html b/source/_includes/asides/pinboard.html new file mode 100644 index 00000000000..9c789debf02 --- /dev/null +++ b/source/_includes/asides/pinboard.html @@ -0,0 +1,17 @@ +{% if site.pinboard_user %} +
    +

    + My Pinboard + + + + + +

    + +
    +{% endif %} diff --git a/source/_includes/asides/recent_posts.html b/source/_includes/asides/recent_posts.html new file mode 100644 index 00000000000..71aa825d0af --- /dev/null +++ b/source/_includes/asides/recent_posts.html @@ -0,0 +1,10 @@ +
    +

    Recent Posts

    + +
    diff --git a/source/_includes/asides/social.html b/source/_includes/asides/social.html new file mode 100644 index 00000000000..b2834a7af81 --- /dev/null +++ b/source/_includes/asides/social.html @@ -0,0 +1,19 @@ +{% unless site.social.visible == false %} +
    +

    + {% if site.social.title %}{{ site.social.title }}{% else %}Follow me!{% endif %} +

    + +
    +{% endunless %} diff --git a/source/_includes/asides/twitter.html b/source/_includes/asides/twitter.html new file mode 100644 index 00000000000..c4f34ae8c4f --- /dev/null +++ b/source/_includes/asides/twitter.html @@ -0,0 +1,17 @@ +{% if site.social.twitter.user and site.social.twitter.widget.is_shown %} +
    +

    + Latest Tweets + {% if site.social.twitter.widget.show_profile_link %} + + + + + + {% endif %} +

    + + + +
    +{% endif %} diff --git a/source/_includes/blog/archive_post.html b/source/_includes/blog/archive_post.html new file mode 100644 index 00000000000..8846fb5f759 --- /dev/null +++ b/source/_includes/blog/archive_post.html @@ -0,0 +1,20 @@ +{% capture category %}{{ post.categories | size }}{% endcapture %} + +
    + +
    + +
    +
    +

    {{post.title}}

    + {% if category != '0' %} +
    + {% include blog/post/tags.html %} +
    + {% endif %} +
    +
    + +
    \ No newline at end of file diff --git a/source/_includes/blog/post/article.html b/source/_includes/blog/post/article.html new file mode 100644 index 00000000000..4aa799ec947 --- /dev/null +++ b/source/_includes/blog/post/article.html @@ -0,0 +1,32 @@ +
    + {% if index %} +

    + {{ post.title }} +

    + {% else %} +

    {{ page.title }}

    + {% endif %} + + {% unless post.meta == false %} +
    + {% include blog/post/date.html %}{{ time }} + {% include blog/post/tags.html %} + {% if site.disqus_short_name and page.comments != false and post.comments != false and site.disqus_show_comment_count == true %} + + Comments + + {% endif %} +
    + {% endunless %} +
    + +{% capture excerpted %}{{ content | has_excerpt }}{% endcapture %} + +{% if excerpted == 'true' and index %} +
    + {{ content | excerpt }} + {{ site.excerpt_link }} +
    +{% else %} + {{ content }} +{% endif %} \ No newline at end of file diff --git a/source/_includes/blog/post/date.html b/source/_includes/blog/post/date.html new file mode 100644 index 00000000000..cf91e6bad51 --- /dev/null +++ b/source/_includes/blog/post/date.html @@ -0,0 +1,15 @@ +{% capture date %}{{ page.date }}{{ post.date }}{% endcapture %} +{% capture date_formatted %}{{ page.date_formatted }}{{ post.date_formatted }}{% endcapture %} +{% capture has_date %}{{ date | size }}{% endcapture %} + +{% capture updated %}{{ page.updated }}{{ post.updated }}{% endcapture %} +{% capture updated_formatted %}{{ page.updated_formatted }}{{ post.updated_formatted }}{% endcapture %} +{% capture was_updated %}{{ updated | size }}{% endcapture %} + +{% if has_date != '0' %} + {% capture time %}{% endcapture %} +{% endif %} + +{% if was_updated != '0' %} + {% capture updated %}{% endcapture %} +{% else %}{% assign updated = false %}{% endif %} \ No newline at end of file diff --git a/source/_includes/blog/post/disqus_thread.html b/source/_includes/blog/post/disqus_thread.html new file mode 100644 index 00000000000..b1acd8cca8d --- /dev/null +++ b/source/_includes/blog/post/disqus_thread.html @@ -0,0 +1 @@ + diff --git a/source/_includes/blog/post/tags.html b/source/_includes/blog/post/tags.html new file mode 100644 index 00000000000..d1a69de9a71 --- /dev/null +++ b/source/_includes/blog/post/tags.html @@ -0,0 +1,17 @@ +{% capture category %}{% if post %}{{ post.categories | category_links | size }}{% else %}{{ page.categories | category_links | size }}{% endif %}{% endcapture %} +{% unless category == '0' %} +
    + + +
    +{% endunless %} \ No newline at end of file diff --git a/source/_includes/custom/after_footer.html b/source/_includes/custom/after_footer.html new file mode 100644 index 00000000000..5714d201d92 --- /dev/null +++ b/source/_includes/custom/after_footer.html @@ -0,0 +1,24 @@ +{% comment %} + Add content to be output at the bottom of each page. (You might use this for analytics scripts, for example) +{% endcomment %} + diff --git a/source/_includes/custom/asides/about.html b/source/_includes/custom/asides/about.html new file mode 100644 index 00000000000..59d309e4d8b --- /dev/null +++ b/source/_includes/custom/asides/about.html @@ -0,0 +1,4 @@ +
    +

    About Me

    +

    A little something about me.

    +
    diff --git a/source/_includes/custom/category_feed.xml b/source/_includes/custom/category_feed.xml new file mode 100644 index 00000000000..6d7b9f61b37 --- /dev/null +++ b/source/_includes/custom/category_feed.xml @@ -0,0 +1,26 @@ +--- +--- + + + + <![CDATA[{{ page.title }} | {{ site.title }}]]> + + + {{ site.time | date_to_xmlschema }} + {{ site.url }}/ + + + {% if site.email %}{% endif %} + + Octopress + + {% for post in site.categories[page.category] limit: 5 %} + + <![CDATA[{{ post.title | cdata_escape }}]]> + + {{ post.date | date_to_xmlschema }} + {{ site.url }}{{ post.id }} + + + {% endfor %} + diff --git a/source/_includes/custom/footer.html b/source/_includes/custom/footer.html new file mode 100644 index 00000000000..526d2f4c514 --- /dev/null +++ b/source/_includes/custom/footer.html @@ -0,0 +1,4 @@ + \ No newline at end of file diff --git a/source/_includes/custom/grid_item_left.html b/source/_includes/custom/grid_item_left.html new file mode 100644 index 00000000000..166e389a084 --- /dev/null +++ b/source/_includes/custom/grid_item_left.html @@ -0,0 +1,14 @@ +

    Observe

    +
    +

    +Home Assistant will track the state of all the devices in your home, so you don't have to. +

    +

    The following devices are supported:

    + diff --git a/source/_includes/custom/grid_item_middle.html b/source/_includes/custom/grid_item_middle.html new file mode 100644 index 00000000000..4f599cca1a8 --- /dev/null +++ b/source/_includes/custom/grid_item_middle.html @@ -0,0 +1,6 @@ +

    Control

    +
    +

    Control all your devices from a single, mobile-friendly, interface.

    +

    + Home Assistant allows you to control all your devices without storing any of your data in the cloud. We like to keep your privacy private. +

    \ No newline at end of file diff --git a/source/_includes/custom/grid_item_right.html b/source/_includes/custom/grid_item_right.html new file mode 100644 index 00000000000..a765ee97b54 --- /dev/null +++ b/source/_includes/custom/grid_item_right.html @@ -0,0 +1,10 @@ +

    Automate

    +
    +

    Setup advanced rules to control devices and bring your home alive.

    +

    Do you want to have…

    + +

    We've got you covered.

    diff --git a/source/_includes/custom/header.html b/source/_includes/custom/header.html new file mode 100644 index 00000000000..c95bd73bec2 --- /dev/null +++ b/source/_includes/custom/header.html @@ -0,0 +1,11 @@ +
    + + {{ site.title }} + +
    + +
    + +
    diff --git a/source/_includes/custom/navigation.html b/source/_includes/custom/navigation.html new file mode 100644 index 00000000000..08654378117 --- /dev/null +++ b/source/_includes/custom/navigation.html @@ -0,0 +1,7 @@ + \ No newline at end of file diff --git a/source/_includes/custom/unused_head.html b/source/_includes/custom/unused_head.html new file mode 100644 index 00000000000..b861f922304 --- /dev/null +++ b/source/_includes/custom/unused_head.html @@ -0,0 +1,5 @@ + + + + + diff --git a/source/_includes/custom/welcome.html b/source/_includes/custom/welcome.html new file mode 100644 index 00000000000..1e5b7d70008 --- /dev/null +++ b/source/_includes/custom/welcome.html @@ -0,0 +1,9 @@ +

    Awaken your home

    +
    +

    +Home Assistant is an open-source home automation platform running on Python 3. Track and control all devices at home and automate control. Installation in less then a minute. +

    +

    + Get started + Browse code on GitHub +

    \ No newline at end of file diff --git a/source/_includes/disqus.html b/source/_includes/disqus.html new file mode 100644 index 00000000000..49c6a29cdb7 --- /dev/null +++ b/source/_includes/disqus.html @@ -0,0 +1,21 @@ +{% comment %} Load script if disquss comments are enabled and `page.comments` is either empty (index) or set to true {% endcomment %} +{% if site.disqus_short_name and page.comments != false %} + +{% endif %} diff --git a/source/_includes/facebook_like.html b/source/_includes/facebook_like.html new file mode 100644 index 00000000000..d263e6d2942 --- /dev/null +++ b/source/_includes/facebook_like.html @@ -0,0 +1,10 @@ +{% if site.facebook_like %} +
    + +{% endif %} diff --git a/source/_includes/footer.html b/source/_includes/footer.html new file mode 100644 index 00000000000..3a8c7687474 --- /dev/null +++ b/source/_includes/footer.html @@ -0,0 +1 @@ +{% include custom/footer.html %} diff --git a/source/_includes/google_analytics.html b/source/_includes/google_analytics.html new file mode 100644 index 00000000000..4d4d5969060 --- /dev/null +++ b/source/_includes/google_analytics.html @@ -0,0 +1,13 @@ +{% if site.google_analytics_tracking_id %} + +{% endif %} diff --git a/source/_includes/google_plus_one.html b/source/_includes/google_plus_one.html new file mode 100644 index 00000000000..b69ddaeb49b --- /dev/null +++ b/source/_includes/google_plus_one.html @@ -0,0 +1,9 @@ +{% if site.google_plus_one %} + +{% endif %} diff --git a/source/_includes/header.html b/source/_includes/header.html new file mode 100644 index 00000000000..524de6514b0 --- /dev/null +++ b/source/_includes/header.html @@ -0,0 +1 @@ +{% include custom/header.html %} diff --git a/source/_includes/javascripts/delicious.html b/source/_includes/javascripts/delicious.html new file mode 100644 index 00000000000..34a4d5fec92 --- /dev/null +++ b/source/_includes/javascripts/delicious.html @@ -0,0 +1,16 @@ +{% if site.delicious_user %} + +{% endif %} +{% if site.pinboard_user %} + +{% endif %} \ No newline at end of file diff --git a/source/_includes/javascripts/disqus.html b/source/_includes/javascripts/disqus.html new file mode 100644 index 00000000000..9dc9e55e587 --- /dev/null +++ b/source/_includes/javascripts/disqus.html @@ -0,0 +1,20 @@ +{% if site.disqus_short_name and page.comments != false %} + +{% endif %} \ No newline at end of file diff --git a/source/_includes/javascripts/github.html b/source/_includes/javascripts/github.html new file mode 100644 index 00000000000..63d529d42f9 --- /dev/null +++ b/source/_includes/javascripts/github.html @@ -0,0 +1,21 @@ +{% if site.github_user %} + + +{% endif %} diff --git a/source/_includes/javascripts/google_analytics.html b/source/_includes/javascripts/google_analytics.html new file mode 100644 index 00000000000..f7a420ab26b --- /dev/null +++ b/source/_includes/javascripts/google_analytics.html @@ -0,0 +1,8 @@ +{% if site.google_analytics_tracking_id %} + +{% endif %} diff --git a/source/_includes/javascripts/scripts.html b/source/_includes/javascripts/scripts.html new file mode 100644 index 00000000000..3c82a307581 --- /dev/null +++ b/source/_includes/javascripts/scripts.html @@ -0,0 +1,12 @@ +{% comment %} + + +{% endcomment %} + +{% include javascripts/google_analytics.html %} +{% include javascripts/disqus.html %} + +{% if page.sidebar != false %} +{% include javascripts/github.html %} +{% include javascripts/delicious.html %} +{% endif %} \ No newline at end of file diff --git a/source/_includes/navigation.html b/source/_includes/navigation.html new file mode 100644 index 00000000000..051dd7211ae --- /dev/null +++ b/source/_includes/navigation.html @@ -0,0 +1,19 @@ + +{% comment %} + {% if site.simple_search %} +
    +
    + + +
    +
    + {% endif %} +{% endcomment %} +{% include custom/navigation.html %} diff --git a/source/_includes/post/author.html b/source/_includes/post/author.html new file mode 100644 index 00000000000..83dd6a89a71 --- /dev/null +++ b/source/_includes/post/author.html @@ -0,0 +1,8 @@ +{% if post.author %} + {% assign author = post.author %} +{% elsif page.author %} + {% assign author = page.author %} +{% else %} + {% assign author = site.author %} +{% endif %} +{% if author %}Posted by {{ author }}{% endif %} diff --git a/source/_includes/post/categories.html b/source/_includes/post/categories.html new file mode 100644 index 00000000000..4a98b29d5de --- /dev/null +++ b/source/_includes/post/categories.html @@ -0,0 +1,10 @@ +{% capture category %}{% if post %}{{ post.categories | category_links | size }}{% else %}{{ page.categories | category_links | size }}{% endif %}{% endcapture %} +{% unless category == '0' %} + + {% if post %} + {{ post.categories | category_links }} + {% else %} + {{ page.categories | category_links }} + {% endif %} + +{% endunless %} diff --git a/source/_includes/post/date.html b/source/_includes/post/date.html new file mode 100644 index 00000000000..ecf1ad71cf0 --- /dev/null +++ b/source/_includes/post/date.html @@ -0,0 +1,15 @@ +{% capture date %}{{ page.date }}{{ post.date }}{% endcapture %} +{% capture date_formatted %}{{ page.date_formatted }}{{ post.date_formatted }}{% endcapture %} +{% capture has_date %}{{ date | size }}{% endcapture %} + +{% capture updated %}{{ page.updated }}{{ post.updated }}{% endcapture %} +{% capture updated_formatted %}{{ page.updated_formatted }}{{ post.updated_formatted }}{% endcapture %} +{% capture was_updated %}{{ updated | size }}{% endcapture %} + +{% if has_date != '0' %} + {% capture time %}{% endcapture %} +{% endif %} + +{% if was_updated != '0' %} + {% capture updated %}{% endcapture %} +{% else %}{% assign updated = false %}{% endif %} \ No newline at end of file diff --git a/source/_includes/post/disqus_thread.html b/source/_includes/post/disqus_thread.html new file mode 100644 index 00000000000..b1acd8cca8d --- /dev/null +++ b/source/_includes/post/disqus_thread.html @@ -0,0 +1 @@ + diff --git a/source/_includes/post/sharing.html b/source/_includes/post/sharing.html new file mode 100644 index 00000000000..d639faa1f2f --- /dev/null +++ b/source/_includes/post/sharing.html @@ -0,0 +1,11 @@ +
    + {% if site.twitter_tweet_button %} + + {% endif %} + {% if site.google_plus_one %} +
    + {% endif %} + {% if site.facebook_like %} +
    + {% endif %} +
    diff --git a/source/_includes/site/footer.html b/source/_includes/site/footer.html new file mode 100644 index 00000000000..bb8a410e896 --- /dev/null +++ b/source/_includes/site/footer.html @@ -0,0 +1,7 @@ +
    +
    +
    + {% include custom/footer.html %} +
    +
    +
    diff --git a/source/_includes/site/head.html b/source/_includes/site/head.html new file mode 100644 index 00000000000..4cb6cb6eee9 --- /dev/null +++ b/source/_includes/site/head.html @@ -0,0 +1,33 @@ + + + + + + + {% capture canonical %}{{ site.url }}{% if site.permalink contains '.html' %}{{ page.url }}{% else %}{{ page.url | remove:'index.html' | strip_slash }}{% endif %}{% endcapture %} + {% if page.description %} {% capture fb_description %}{{ page.description }}{% endcapture %} {% else %} {% capture fb_description %}{{ content | raw_content }}{% endcapture %} {% endif %} + + + + {% if page.title %}{{ page.title }} - {% endif %}{{ site.title }} + + {% capture description %}{% if page.description %}{{ page.description }}{% elsif site.description %}{{ site.description }}{% else %}{{ content | raw_content }}{% endif %}{% endcapture %} + + {% if page.keywords %}{% endif %} + + + {% if site.social.facebook.app_id %} + + + + + + + {% if site.social.facebook.user %}{% endif %} + {% if page.facebook.image %}{% endif %} + {% endif %} + + + + + diff --git a/source/_includes/site/header.html b/source/_includes/site/header.html new file mode 100644 index 00000000000..b3aace5b8ca --- /dev/null +++ b/source/_includes/site/header.html @@ -0,0 +1,7 @@ +
    +
    + + {% include custom/header.html %} + +
    +
    \ No newline at end of file diff --git a/source/_includes/site/hero_unit.html b/source/_includes/site/hero_unit.html new file mode 100644 index 00000000000..f51eb9f9bdc --- /dev/null +++ b/source/_includes/site/hero_unit.html @@ -0,0 +1,14 @@ +
    +
    +
    +
    + + Home Assistant screenshot + +
    +
    + {% include custom/welcome.html %} +
    +
    +
    +
    diff --git a/source/_includes/site/navigation.html b/source/_includes/site/navigation.html new file mode 100644 index 00000000000..eeb27f6a96a --- /dev/null +++ b/source/_includes/site/navigation.html @@ -0,0 +1,3 @@ + + +{% include custom/navigation.html %} \ No newline at end of file diff --git a/source/_includes/site/sidebar.html b/source/_includes/site/sidebar.html new file mode 100644 index 00000000000..477c03ab757 --- /dev/null +++ b/source/_includes/site/sidebar.html @@ -0,0 +1,7 @@ +
    + + {% include asides/social.html %} + + {% include_array default_asides %} + +
    diff --git a/source/_includes/twitter_sharing.html b/source/_includes/twitter_sharing.html new file mode 100644 index 00000000000..7cd5fbc2888 --- /dev/null +++ b/source/_includes/twitter_sharing.html @@ -0,0 +1,11 @@ +{% if site.twitter_follow_button or site.twitter_tweet_button %} + +{% endif %} diff --git a/source/_includes/unused_head.html b/source/_includes/unused_head.html new file mode 100644 index 00000000000..98a5897b9e6 --- /dev/null +++ b/source/_includes/unused_head.html @@ -0,0 +1,29 @@ + + + + + + + {% if page.title %}{% if site.titlecase %}{{ page.title | titlecase }}{% else %}{{ page.title }}{% endif %} - {% endif %}{{ site.title }} + + + {% capture description %}{% if page.description %}{{ page.description }}{% else %}{{ content | raw_content }}{% endif %}{% endcapture %} + + {% if page.keywords %}{% endif %} + + + + + + + {% capture canonical %}{{ site.url }}{% if site.permalink contains '.html' %}{{ page.url }}{% else %}{{ page.url | remove:'index.html' | strip_slash }}{% endif %}{% endcapture %} + + + + + + + + {% include custom/head.html %} + {% include google_analytics.html %} + diff --git a/source/_layouts/category_index.html b/source/_layouts/category_index.html new file mode 100644 index 00000000000..770900ba361 --- /dev/null +++ b/source/_layouts/category_index.html @@ -0,0 +1,17 @@ +--- +layout: page +title: "Blog index" +--- + +
    + {% for post in site.categories[page.category] %} + {% capture this_year %}{{ post.date | date: "%Y" }}{% endcapture %} + {% unless year == this_year %} + {% assign year = this_year %} +

    {{ year }}

    + {% endunless %} +
    + {% include blog/archive_post.html %} +
    + {% endfor %} +
    diff --git a/source/_layouts/default.html b/source/_layouts/default.html new file mode 100644 index 00000000000..5869ebe920b --- /dev/null +++ b/source/_layouts/default.html @@ -0,0 +1,46 @@ +{% capture root_url %}{{ site.root | strip_slash }}{% endcapture %}{% include site/head.html %} + + + +
    + {% include site/header.html %} +
    + + {% if page.hero_unit %} + {% include site/hero_unit.html %} + {% endif %} + +
    +
    + {% if page.is_post and page.sidebar == false %} +
    + {% elsif page.is_homepage %} +
    + {% else %} +
    + {% endif %} + + {{ content | expand_urls: root_url }} + +
    + + {% unless page.sidebar == false %} + + {% endunless %} +
    +
    + +
    + {% include site/footer.html %} +
    + + + + {% include javascripts/scripts.html %} + + + \ No newline at end of file diff --git a/source/_layouts/page.html b/source/_layouts/page.html new file mode 100644 index 00000000000..d05fea2feee --- /dev/null +++ b/source/_layouts/page.html @@ -0,0 +1,18 @@ +--- +layout: default +--- + +
    + + {% if page.title and page.show_title != false %} +
    +

    + {% if site.titlecase %}{{ page.title | titlecase }}{% else %}{{ page.title }}{% endif %} +

    +
    +
    + {% endif %} + + {{ content }} + +
    diff --git a/source/_layouts/post.html b/source/_layouts/post.html new file mode 100644 index 00000000000..788953843a5 --- /dev/null +++ b/source/_layouts/post.html @@ -0,0 +1,15 @@ +--- +layout: default +is_post: true +--- + +
    + {% include blog/post/article.html %} +
    + +{% if site.disqus_short_name and page.comments == true %} +
    +

    Comments

    +
    {% include blog/post/disqus_thread.html %}
    +
    +{% endif %} \ No newline at end of file diff --git a/source/_posts/2014-12-18-website-launched.markdown b/source/_posts/2014-12-18-website-launched.markdown new file mode 100644 index 00000000000..2baf1bd20c7 --- /dev/null +++ b/source/_posts/2014-12-18-website-launched.markdown @@ -0,0 +1,10 @@ +--- +layout: post +title: "Website launched!" +date: 2014-12-18 23:24:45 -0800 +comments: true +categories: website +author: Paulus +--- + +I finally took the time to setup a simple website to help people getting started with Home Assistant. This will make sure that the README on GitHub can be purely focussed on developers. \ No newline at end of file diff --git a/source/architecture/index.markdown b/source/architecture/index.markdown new file mode 100644 index 00000000000..45a06cebc86 --- /dev/null +++ b/source/architecture/index.markdown @@ -0,0 +1,39 @@ +--- +layout: page +title: "architecture" +date: 2014-12-18 21:49 +sidebar: false +comments: true +sharing: true +footer: true +--- + + + +The core of Home Assistant exists of the following parts. + +The Event Bus facilitates the firing and listening of events. This is the beating heart of Home Assistant. + +The State Machine keeps track of the states of things. Fires a state_changed event when a state has been changed. + +The Service Registry listens on the event bus for call_service events and allows other code to register services. + +The Timer will send every 10 seconds a time_changed event on the event bus. + +Take for example the device_tracker component. This component is responsible for keeping track which devices are home. It checks which devices are home every time a time_changed event is fired on the event bus. It will then update the state machine with the information for each device. + +This setup allows us to create simple yet powerful logic for controlling your home: + + In the event that the state of device 'Paulus Nexus 5' changes to the 'Home' state: + If the sun has set and the lights are not on: + Turn on the lights + + In the event that the combined state of all tracked devices changes to 'Not Home': + If the lights are on: + Turn off the lights + + In the event of the sun setting: + If the lights are off and the combined state of all tracked device equals 'Home': + Turn on the lights + +By using the Bus as a central communication hub between components it is easy to replace components or add functionality. If you would want to change the way devices are detected you only have to write a component that updates the device states in the State Machine. diff --git a/source/assets/jwplayer/glow/controlbar/background.png b/source/assets/jwplayer/glow/controlbar/background.png new file mode 100644 index 0000000000000000000000000000000000000000..c2824cc432cdd71f8fdb98238c1ae77a1104628e GIT binary patch literal 141 zcmeAS@N?(olHy`uVBq!ia0vp^Ahs+A8<3p*@b5ezC0XJcQ4*Y=R#Ki=l*-_klAn~S z;F+74o*I;zm{M7IGSvpCNZ-@NF~s6@a$-V)#bF1QgqfDbYRsjg|9*eZ4|%xaP~w^o m|NsAAe6Tq>F)K?ekc&|;E}+;`V{ZgdD}$%2pUXO@geCwoOD@L% literal 0 HcmV?d00001 diff --git a/source/assets/jwplayer/glow/controlbar/blankButton.png b/source/assets/jwplayer/glow/controlbar/blankButton.png new file mode 100644 index 0000000000000000000000000000000000000000..010159f3eb743d6e22d5c54b91c09ca40d8aaa39 GIT binary patch literal 82 zcmeAS@N?(olHy`uVBq!ia0vp^Qa~)r!3HF^_}7#HDM?Qk$B>F!Zx1r^0(plNelM@% eXXjyH_#wpol!0;1`W@*&VFpiEKbLh*2~7a7)DzqQ literal 0 HcmV?d00001 diff --git a/source/assets/jwplayer/glow/controlbar/divider.png b/source/assets/jwplayer/glow/controlbar/divider.png new file mode 100644 index 0000000000000000000000000000000000000000..77cd829a4b5ef36bbc68a9182d397e04db6e4792 GIT binary patch literal 118 zcmeAS@N?(olHy`uVBq!ia0vp^j6f{Q!2%=?a-4evq$EpRBT9nv(@M${i&7aJQ}UBi z6+Ckj(^G>|6H_V+Po~-c6-juyIEHY@CMQ}PHk!=X@^516zvRnPPcblT{wuv)<<&_x Ppc)2GS3j3^P66?0001zNkl6?0006*Nkl264`4BoI2aRR!sNov zz`(}8!N9=6z`(#jfB_N)^7V;%VlFpua^R$I@<~adee!{2)Pd9 z>^C6D5DiY?6}*O*puxSQYw|CTrLY<|AuA45!{CxaFtE;Td%V}Y29@=falq4R_gWox5;Gk zz1QnWp-_-aCL>q|Tls{6HyOw_a%T?LQ3Q5aeG4PQ8@NK8l5fZGA@Q$w!`S}R=oOZ=9@p0y1Ht`O}WDJMHukChQ z?2^f(U_IanRp41U-@Vrv7~n|m!71bhgTaqht0h*v#`ZZ0|D2$?y9>b%cXb9In$4zI z8HOROeRSTAoX$;U_2Zy78V#{aBoe~+H{IQySbdH##yTITQYkS_^Vd#vT^CK$gcotp z-3`}1LY9MVJb*ojTkaIfDxOz9UMCT@Ys>Ob47v+(Zlk*NW8S%q?!UM!|5fatTt5L! Wu9z}q${(fg`vovQBD>vg^sSfI>s5DMm$hv>`<1w^YhuvS<#I8A)ijO7&aSE| zey>c^BxbkUy- z=n$|-1|iTXG?k=HNSdbP@8$0NzVf^98m^@kaq5FF@7>*dpWp9(@BMy{vFrA~n{<`Q zrfEtxYt7*cNiwel7l4wDEVx0vDH@P236%vogfVYAX+TB{%YbwNRD@Y_LJH)foLieh#$%9&W{GkB@H^i^UtVEHfBJ&L%3BN29#;dU@*9r$z)hIn>_>XcDwB0 z;NU(sk~N!64X1>K!(mn^6!@GLWvg!08Ab4#f8Z19*re|qfIcuaHRT2HCC|8{qazjw z1b*c6`9!r^os7j|JOSDE_BQi+y;*Y3sxia*V8MAR*SYmnDwUx`8i!Y9z}}Y2Wqw+A zv7ui8d!r}{2bbV^U}qnng zE}GPKt6%o`K|?o>N{_|0_Z4686?0007CNkl(kA%!W?Vx-)PQ9>AMkulK#xYKbZs3<}E2 z8D8Mb?0mm*QjmeGvUA{f;RSqdHk+afg+hXQ1&`qtJK%t2HEh!Hw!wL>_DQ{7mr;>O zL{K4k2hYF*mtj*qAmf76Icade-EM!0#bT05r6iqBOD2<%TCMhr;j?V{Dpr$J;%q#pK`g}Q9hqf7K_Cn)oN8#(P&hBKA)hjvK!Wuw$IFdJ7AY{@N#A!E0v0< z!r`!Fv)QlwU~hBICNNBU6*=Jw9Kh>xxh$hlFX0|f;fg+|@j(pZ!&V;oEw;v6DwQN2 zk4rL{l;LX~YF`O5GiZE`d|fOtY=?K=VIU9?%%CY@3JV z4m^azL?ZFt?RJZ%X~GNHI(|lz=Vsv{+2HOp*yG*kn9%pJb)&(=@Upndd3z`JDt0000Z>Q|#Vo=~<6R!C$9;PA1)G71p_B*xT0r{JN zM*B^in^wMlaaicdO+0re&Wx-n>s+%*ev^rF8_&(3{6c)?^VUzdW_%#X`}vKdWcU(R QVW7DTp00i_>zopr0QFBdL;wH) literal 0 HcmV?d00001 diff --git a/source/assets/jwplayer/glow/controlbar/pauseButtonOver.png b/source/assets/jwplayer/glow/controlbar/pauseButtonOver.png new file mode 100644 index 0000000000000000000000000000000000000000..409d89d29a33e6bb6d80355102cc8cbf30980bde GIT binary patch literal 442 zcmV;r0Y(0aP)At56op&03B^|Ephbj&EoA9dQnDm-_ADXfSL82b&X9lR;^LAei;Ihki*S2{^TMOi zq6sP#4}84G&AlAGxp~RmP5)maa=(vr78Euw~?u4WPm;xfR_Ud zm}4lzCPpTB1|#qW-oXdgYR_vU=9(uN@*X_!*S-P^*uVuISAA~-i@AN)c8>a2G&9+v zDR8#ittg;y$FGY*sM=%7Rz~5{(qDYcNphS=PzAwxjvbKAyS&!`)gD()Q z*K1LvX(~{v$ATab=8jq0JJoCgzCpBFtwfP!nLwEyi=s%FJ85F}#6kze%jHrOd7cZD z>#;bFg}D>fHa9EFQb=W{#cF1)+E^5YkgAPZtW6v11F~2wgj55f#o7!=ee~z^xsYn~ zwOE_cuRqkY*-R8+7zz~XF~@Oa-$UK_xN==rJkOKes*bDO-nMPAEK6#~)g=$&E4^Z_ k|MG1AS#bUjo|`VEAFXAB6%Vs^kpKVy07*qoM6N<$f}~T*6aWAK literal 0 HcmV?d00001 diff --git a/source/assets/jwplayer/glow/controlbar/playButton.png b/source/assets/jwplayer/glow/controlbar/playButton.png new file mode 100644 index 0000000000000000000000000000000000000000..f8d9a0079af73379b28623ec23b89a45760675c7 GIT binary patch literal 251 zcmVW5*tlL}qe;Y)GbwpWs=X&M|= z*R{`?BtunIILh-p5RuQFA1sOjp9;eemSt^2V(h#;&#^B_61c7_Mq=(lvSe8XQ4j<$ z3}YMVxf{urrYWK*f^FO4&4V*ZA#f$7>j7*~O3eRsh#VB4 z0yR_docu>ZB|&N!f)N;JBRr=8rL@vsgN9)m7GRYv!7NOGp087g&`!e!LCH6ofpyph zGaSGk7-5w|M?nY5j#?|(3~CsIW!P;r8U*jnW;1}_b~u53*n~xx6jh4APFkpiDcFF+ zYPCv2tyX(M=r!gq;23sbjk_@1b|8l-V2E3^1*he5nWQR}$|r)K@ZS~KxV7uNzIy4# zX*X;ROmJ2x6sVO_sq~6UZ@8@{Zt0k)uH7&_hwZ|7KA)%W6pO`&dcA(g?KFV4>#$rd zN8bqsgXC~H?xWGDk&lE1HI# zI@F0of?}~4`FuXI+wJ6XxgOK$^bsHG1u$?oRAQ}qdR&>!X0li;Z-GGIvc=;{D?M9% rco6sh71R66v+th;y?^lhkA99XpkgF1bCqS*00000NkvXXu0mjf9wPgo literal 0 HcmV?d00001 diff --git a/source/assets/jwplayer/glow/controlbar/timeSliderBuffer.png b/source/assets/jwplayer/glow/controlbar/timeSliderBuffer.png new file mode 100644 index 0000000000000000000000000000000000000000..73b371abbcac1512d073d3c540884b39853a5170 GIT binary patch literal 112 zcmeAS@N?(olHy`uVBq!ia0vp^Ahs+A8<3p*@b5ezW$x+X7-DfcIYENeS;oN1+WNkl zn_~BzId{w#iF9>z{895#l$Mqb%u7j3PfuU4t}|qNl?YE514EV*%Sy#VQ;dN|FnGH9 KxvX*mdyE3=gzFY}%KuYcKYM-B#61JM-V{-K`g{VK?Jd}k#Rrjz(R@$YqR9RV?I-Sl5s2+ z%RjL1JH1l8Z5zQ)gui25SGwf#WmyC!=O@hbOd3&)DUhdWQV=;!Q)yg236v-( O0000I*v2b^k*2QCaQ`4kWEBH1!V+-L=Z#ZMi6EpSc_TACKnNi5VexPhKHFF zx^W?G1a}Wtt_3%4Tx1&;u0&8l6gho&I5%GMZVXe4pgHj4J}&Qm-+AZUd*94a{AWQ# zv(x-dQ4Jh3p&i;pE@UA)aDaK>wJOa6 zNg|O5A$G>&@oS7>uss@$USRaH!77)?W)^pFjW2`8olb|Wh{xju;XUy@7z~R2e*dd@ zu2!pW_zTv!2X>&%@FzIgbpvd*+ikKUl}Zs}52A*gGYsQfFc_p#spKc33$irR;%;uB zztw7y6`4$CU%cDx8gee1&C(|XH`^qx$h_HXk`;+WLNrzv&*gIYdoGvTpDz>&39GWG zYW`l=b;{@S)Mzw*5{*U)v0Ja#KZL_!N~hDGA^g$n^-?mK+?;Btdbbpd#dnoTMTgNB zh>;)^3K7B&o+9(0+=@cjYAdStxrYzWGY~-I-qvb0^7(v(xCb`miB%sW^$B%>br!h` z?#E)WmmZJsq>J4AmERwK_1&_-3tgPqc^=(7zj%O)OMNTyLMQiP*_5F}b>$xBCt+t4 j8UE?-Z92oF_-Eq>i1mB;XZF-300000NkvXXu0mjfvtTD6 literal 0 HcmV?d00001 diff --git a/source/assets/jwplayer/glow/display/background.png b/source/assets/jwplayer/glow/display/background.png new file mode 100644 index 0000000000000000000000000000000000000000..391152f5e2f24e413f03ecef69ed2e88030a1f42 GIT binary patch literal 686 zcmV;f0#W^mP)40?p67Wi=Xpjj(7-?hr8gmN!O+;qM2uX(UB}(Pp+ST~a5L?f2=*_{4co78 z!5dk@d1^Q&_5XNr{JeL%r`|dkVEN0DxcA|3IDXCN^V?>#xgHJ&{T;*FVSoiD*j`~j zQ>oNtyWQUQ`~7*nUf*W3*>yA;>F*TQjJ3l63rw*6iT=P3yWQ@Jt23EQ^nSmu-Z>ax zfeAJkAMY$~J+1~$7!HS*UazMZf(0hnV1yOm6P|ZG0^{*m$B9hA1RIR70<3TqR;$&m z+wCgGV1p4>fE9MO>2!MSbUKPL*kF8skH_O>Fc|3Vc3Uw98;lR|>2$)CIJa6Y#TaZb zK7pIfCUpYbXf&9U;Cj8zoCMcuHRdF^TCFlC!IesdISDS8%gjk|sZ?U_8?1`OB6AX4 zC={5J;Cw#MoCN1`Ip!o-(=_HJIGfEfC&8IahB*mNr_;CQPJ*3ICvy_)a5$KgV7uMUoCMo!Hs)Tw!)L42 zsu+U}#-~pY?_0NSu~-yiu)+BBajB+hSF_oy7=sN)SRbDcFPF=k$z)QD!3HC&j}OFm zyWKey3h8WEm|%ku)~6AG^?H51?`RjJ(Wn@Ll?YB8EI( zjq%_SSS%J8fx#WeV}Aa}hqAC6U$9oJ8Ec0@jPZPBPz&2R{=?p(uMBGaccXZ}0X2s+ UFwXxpS^xk507*qoM6N<$f{ThjaR2}S literal 0 HcmV?d00001 diff --git a/source/assets/jwplayer/glow/display/bufferIcon.png b/source/assets/jwplayer/glow/display/bufferIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..a3819c1ef199e6a2d583e777e3d2cc9d7411c7dd GIT binary patch literal 816 zcmV-01JC@4P)?y;sBd%rVy^WSc}4ZkOKv9mlWvp*~b#1RTk?~R2kGj12jp4zB2o` zN{Xgn6F3x7p}_ax7@U%0`kL&M;}}yl!3O80&$rhCpFtap0vgZTY-_Qv&#{I|Z#Ttc zlw-(#ps-oiW}h0z*u2M31=8_ifIf?C1Mh!qEqR^H{G_N1xC!!LkL2mgh$@Ik7Y{KE zf$&|mSf2tbpbnmqI=D|UyA*AaWy{03P*aTO(YzAjk?JQyv5&z4I07f+BX|Rza6R4O zgQk}K1K^TrB}+>iWI>73q{d^3ep}pk)w`!X ziaDXkDaPaRceK9(Wrm_9E117^8{F%3I)A|5;c)meyr$n>8^H+cbF{x!Q?PtU|K^6G z$?(gl71Hua>l@nMfk)sDa3nHnQb|jGS;D-%!0{6^bRCq$zF79bWR|5QHy+QyQ}BS< zc{jc!@jeT`I>>E2lHXe1Vp}@)aMJ|`ua^@}=v%|$fr9wJu`xD@^qnt+ZEIN`8u7Op zi3*PyHb=7brG;oEzXr~k_XV&Is$`!&UjfllncbtXhoA)xNsGQhbg5DOV_F(y`8Hql zdc7arZZ`-C&qE*Evg|vR#8mwPQ3Z!WtRVEoD=RHnhqO*w$=bDDmV{{8jfeVzf#lXw ueUm62Hp-^ULv7l$Y15`nn>KA5V*dc!CLt7N=?h^10000^XU=;OqaSX}0_x6TwSF-_w!^4yr zd!@r4MX?C3H?fVZQe6Kq&e7%1?39Z}!E5x=g0er^apZDtsdc#&p$Ies2og@3_@0`5 zBT?dtMPGN_tGbf=-@W>e^876-wA%LCYU%MJ>Gd4{Y_zuJMw_1he0{b3_X!V{W%6~J zF6lL2`?~7uC7vdScW0u1`-O!^tiQKeQ&`LV+4)M(_pE|7-x6xGeqG*Et{oG4_0=*l z*NG)Y75SHo^(^|5Ghbi%dT#c#FS;}4t2W(NweXyD*4Ldq{_9~ybAI`0`99a$JT8A( z#4jIS%<$9loZKGG)0?^@Gm9(lw_QHyHt+fVMRWPhx)$wluU@L-ts3)R_+K^9yMbkPQfSuE1Jt1w|22L~um#h3JU*Kzy9s zDK0pWs4+vBdvkv9ZwF2>A2UxxL_|bHL_|b%4*;g<{of2epU<#6olZ5;oA!f`$0IH~ z91ca%tG0vp`#ruXD|*px@NT!mwYJ->A$rzk@Mg2Yt=8+cB{H-ayjrdBgG`ay7k#;0 z;(=zOXS^) zJ{%6=X028Wi9`b8(cTm{{A@c5f-0Su5 zXt`Vtkw`=i&5FE#sk_}Sep;zix*S>*sq+!i>2z>!g+c+bSWFHz40?p67Wi=Xpjj(7-?hr8gmN!O+;qM2uX(UB}(Pp+ST~a5L?f2=*_{4co78 z!5dk@d1^Q&_5XNr{JeL%r`|dkVEN0DxcA|3IDXCN^V?>#xgHJ&{T;*FVSoiD*j`~j zQ>oNtyWQUQ`~7*nUf*W3*>yA;>F*TQjJ3l63rw*6iT=P3yWQ@Jt23EQ^nSmu-Z>ax zfeAJkAMY$~J+1~$7!HS*UazMZf(0hnV1yOm6P|ZG0^{*m$B9hA1RIR70<3TqR;$&m z+wCgGV1p4>fE9MO>2!MSbUKPL*kF8skH_O>Fc|3Vc3Uw98;lR|>2$)CIJa6Y#TaZb zK7pIfCUpYbXf&9U;Cj8zoCMcuHRdF^TCFlC!IesdISDS8%gjk|sZ?U_8?1`OB6AX4 zC={5J;Cw#MoCN1`Ip!o-(=_HJIGfEfC&8IahB*mNr_;CQPJ*3ICvy_)a5$KgV7uMUoCMo!Hs)Tw!)L42 zsu+U}#-~pY?_0NSu~-yiu)+BBajB+hSF_oy7=sN)SRbDcFPF=k$z)QD!3HC&j}OFm zyWKey3h8WEm|%ku)~6AG^?H51?`RjJ(Wn@Ll?YB8EI( zjq%_SSS%J8fx#WeV}Aa}hqAC6U$9oJ8Ec0@jPZPBPz&2R{=?p(uMBGaccXZ}0X2s+ UFwXxpS^xk507*qoM6N<$f{ThjaR2}S literal 0 HcmV?d00001 diff --git a/source/assets/jwplayer/glow/glow.xml b/source/assets/jwplayer/glow/glow.xml new file mode 100644 index 00000000000..71bdced0100 --- /dev/null +++ b/source/assets/jwplayer/glow/glow.xml @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + + +
    diff --git a/source/javascripts/github.js b/source/javascripts/github.js new file mode 100644 index 00000000000..fc2bb12cf44 --- /dev/null +++ b/source/javascripts/github.js @@ -0,0 +1,32 @@ +var github = (function(){ + function escapeHtml(str) { + return $('
    ').text(str).html(); + } + function render(target, repos){ + var i = 0, fragment = '', t = $(target)[0]; + + for(i = 0; i < repos.length; i++) { + fragment += '
  • '+repos[i].name+'

    '+escapeHtml(repos[i].description||'')+'

  • '; + } + t.innerHTML = fragment; + } + return { + showRepos: function(options){ + $.ajax({ + url: "https://api.github.com/users/"+options.user+"/repos?sort=pushed&callback=?" + , dataType: 'jsonp' + , error: function (err) { $(options.target + ' li.loading').addClass('error').text("Error loading feed"); } + , success: function(data) { + var repos = []; + if (!data || !data.data) { return; } + for (var i = 0; i < data.data.length; i++) { + if (options.skip_forks && data.data[i].fork) { continue; } + repos.push(data.data[i]); + } + if (options.count) { repos.splice(options.count); } + render(options.target, repos); + } + }); + } + }; +})(); diff --git a/source/javascripts/libs/jXHR.js b/source/javascripts/libs/jXHR.js new file mode 100644 index 00000000000..6775655cdf9 --- /dev/null +++ b/source/javascripts/libs/jXHR.js @@ -0,0 +1,85 @@ +// jXHR.js (JSON-P XHR) +// v0.1 (c) Kyle Simpson +// MIT License + +(function(global){ + var SETTIMEOUT = global.setTimeout, // for better compression + doc = global.document, + callback_counter = 0; + + global.jXHR = function() { + var script_url, + script_loaded, + jsonp_callback, + scriptElem, + publicAPI = null; + + function removeScript() { try { scriptElem.parentNode.removeChild(scriptElem); } catch (err) { } } + + function reset() { + script_loaded = false; + script_url = ""; + removeScript(); + scriptElem = null; + fireReadyStateChange(0); + } + + function ThrowError(msg) { + try { publicAPI.onerror.call(publicAPI,msg,script_url); } catch (err) { throw new Error(msg); } + } + + function handleScriptLoad() { + if ((this.readyState && this.readyState!=="complete" && this.readyState!=="loaded") || script_loaded) { return; } + this.onload = this.onreadystatechange = null; // prevent memory leak + script_loaded = true; + if (publicAPI.readyState !== 4) ThrowError("Script failed to load ["+script_url+"]."); + removeScript(); + } + + function fireReadyStateChange(rs,args) { + args = args || []; + publicAPI.readyState = rs; + if (typeof publicAPI.onreadystatechange === "function") publicAPI.onreadystatechange.apply(publicAPI,args); + } + + publicAPI = { + onerror:null, + onreadystatechange:null, + readyState:0, + open:function(method,url){ + reset(); + internal_callback = "cb"+(callback_counter++); + (function(icb){ + global.jXHR[icb] = function() { + try { fireReadyStateChange.call(publicAPI,4,arguments); } + catch(err) { + publicAPI.readyState = -1; + ThrowError("Script failed to run ["+script_url+"]."); + } + global.jXHR[icb] = null; + }; + })(internal_callback); + script_url = url.replace(/=\?/,"=jXHR."+internal_callback); + fireReadyStateChange(1); + }, + send:function(){ + SETTIMEOUT(function(){ + scriptElem = doc.createElement("script"); + scriptElem.setAttribute("type","text/javascript"); + scriptElem.onload = scriptElem.onreadystatechange = function(){handleScriptLoad.call(scriptElem);}; + scriptElem.setAttribute("src",script_url); + doc.getElementsByTagName("head")[0].appendChild(scriptElem); + },0); + fireReadyStateChange(2); + }, + setRequestHeader:function(){}, // noop + getResponseHeader:function(){return "";}, // basically noop + getAllResponseHeaders:function(){return [];} // ditto + }; + + reset(); + + return publicAPI; + }; +})(window); + diff --git a/source/javascripts/libs/jquery.min.js b/source/javascripts/libs/jquery.min.js new file mode 100644 index 00000000000..32d50cb0ee9 --- /dev/null +++ b/source/javascripts/libs/jquery.min.js @@ -0,0 +1,5 @@ +/*! jQuery v1.9.1 | (c) 2005, 2012 jQuery Foundation, Inc. | jquery.org/license +//@ sourceMappingURL=jquery.min.map +*/(function(e,t){var n,r,i=typeof t,o=e.document,a=e.location,s=e.jQuery,u=e.$,l={},c=[],p="1.9.1",f=c.concat,d=c.push,h=c.slice,g=c.indexOf,m=l.toString,y=l.hasOwnProperty,v=p.trim,b=function(e,t){return new b.fn.init(e,t,r)},x=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,w=/\S+/g,T=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,k=/^[\],:{}\s]*$/,E=/(?:^|:|,)(?:\s*\[)+/g,S=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,A=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,j=/^-ms-/,D=/-([\da-z])/gi,L=function(e,t){return t.toUpperCase()},H=function(e){(o.addEventListener||"load"===e.type||"complete"===o.readyState)&&(q(),b.ready())},q=function(){o.addEventListener?(o.removeEventListener("DOMContentLoaded",H,!1),e.removeEventListener("load",H,!1)):(o.detachEvent("onreadystatechange",H),e.detachEvent("onload",H))};b.fn=b.prototype={jquery:p,constructor:b,init:function(e,n,r){var i,a;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof b?n[0]:n,b.merge(this,b.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:o,!0)),C.test(i[1])&&b.isPlainObject(n))for(i in n)b.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(a=o.getElementById(i[2]),a&&a.parentNode){if(a.id!==i[2])return r.find(e);this.length=1,this[0]=a}return this.context=o,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):b.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),b.makeArray(e,this))},selector:"",length:0,size:function(){return this.length},toArray:function(){return h.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=b.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return b.each(this,e,t)},ready:function(e){return b.ready.promise().done(e),this},slice:function(){return this.pushStack(h.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(b.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:d,sort:[].sort,splice:[].splice},b.fn.init.prototype=b.fn,b.extend=b.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},u=1,l=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},u=2),"object"==typeof s||b.isFunction(s)||(s={}),l===u&&(s=this,--u);l>u;u++)if(null!=(o=arguments[u]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(b.isPlainObject(r)||(n=b.isArray(r)))?(n?(n=!1,a=e&&b.isArray(e)?e:[]):a=e&&b.isPlainObject(e)?e:{},s[i]=b.extend(c,a,r)):r!==t&&(s[i]=r));return s},b.extend({noConflict:function(t){return e.$===b&&(e.$=u),t&&e.jQuery===b&&(e.jQuery=s),b},isReady:!1,readyWait:1,holdReady:function(e){e?b.readyWait++:b.ready(!0)},ready:function(e){if(e===!0?!--b.readyWait:!b.isReady){if(!o.body)return setTimeout(b.ready);b.isReady=!0,e!==!0&&--b.readyWait>0||(n.resolveWith(o,[b]),b.fn.trigger&&b(o).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===b.type(e)},isArray:Array.isArray||function(e){return"array"===b.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[m.call(e)]||"object":typeof e},isPlainObject:function(e){if(!e||"object"!==b.type(e)||e.nodeType||b.isWindow(e))return!1;try{if(e.constructor&&!y.call(e,"constructor")&&!y.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}var r;for(r in e);return r===t||y.call(e,r)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||o;var r=C.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=b.buildFragment([e],t,i),i&&b(i).remove(),b.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=b.trim(n),n&&k.test(n.replace(S,"@").replace(A,"]").replace(E,"")))?Function("return "+n)():(b.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||b.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&b.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(j,"ms-").replace(D,L)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:v&&!v.call("\ufeff\u00a0")?function(e){return null==e?"":v.call(e)}:function(e){return null==e?"":(e+"").replace(T,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?b.merge(n,"string"==typeof e?[e]:e):d.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(g)return g.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return f.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),b.isFunction(e)?(r=h.call(arguments,2),i=function(){return e.apply(n||this,r.concat(h.call(arguments)))},i.guid=e.guid=e.guid||b.guid++,i):t},access:function(e,n,r,i,o,a,s){var u=0,l=e.length,c=null==r;if("object"===b.type(r)){o=!0;for(u in r)b.access(e,n,u,r[u],!0,a,s)}else if(i!==t&&(o=!0,b.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(b(e),n)})),n))for(;l>u;u++)n(e[u],r,s?i:i.call(e[u],u,n(e[u],r)));return o?e:c?n.call(e):l?n(e[0],r):a},now:function(){return(new Date).getTime()}}),b.ready.promise=function(t){if(!n)if(n=b.Deferred(),"complete"===o.readyState)setTimeout(b.ready);else if(o.addEventListener)o.addEventListener("DOMContentLoaded",H,!1),e.addEventListener("load",H,!1);else{o.attachEvent("onreadystatechange",H),e.attachEvent("onload",H);var r=!1;try{r=null==e.frameElement&&o.documentElement}catch(i){}r&&r.doScroll&&function a(){if(!b.isReady){try{r.doScroll("left")}catch(e){return setTimeout(a,50)}q(),b.ready()}}()}return n.promise(t)},b.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){l["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=b.type(e);return b.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=b(o);var _={};function F(e){var t=_[e]={};return b.each(e.match(w)||[],function(e,n){t[n]=!0}),t}b.Callbacks=function(e){e="string"==typeof e?_[e]||F(e):b.extend({},e);var n,r,i,o,a,s,u=[],l=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=u.length,n=!0;u&&o>a;a++)if(u[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,u&&(l?l.length&&c(l.shift()):r?u=[]:p.disable())},p={add:function(){if(u){var t=u.length;(function i(t){b.each(t,function(t,n){var r=b.type(n);"function"===r?e.unique&&p.has(n)||u.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=u.length:r&&(s=t,c(r))}return this},remove:function(){return u&&b.each(arguments,function(e,t){var r;while((r=b.inArray(t,u,r))>-1)u.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?b.inArray(e,u)>-1:!(!u||!u.length)},empty:function(){return u=[],this},disable:function(){return u=l=r=t,this},disabled:function(){return!u},lock:function(){return l=t,r||p.disable(),this},locked:function(){return!l},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],!u||i&&!l||(n?l.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},b.extend({Deferred:function(e){var t=[["resolve","done",b.Callbacks("once memory"),"resolved"],["reject","fail",b.Callbacks("once memory"),"rejected"],["notify","progress",b.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return b.Deferred(function(n){b.each(t,function(t,o){var a=o[0],s=b.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&b.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?b.extend(e,r):r}},i={};return r.pipe=r.then,b.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=h.call(arguments),r=n.length,i=1!==r||e&&b.isFunction(e.promise)?r:0,o=1===i?e:b.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?h.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,u,l;if(r>1)for(s=Array(r),u=Array(r),l=Array(r);r>t;t++)n[t]&&b.isFunction(n[t].promise)?n[t].promise().done(a(t,l,n)).fail(o.reject).progress(a(t,u,s)):--i;return i||o.resolveWith(l,n),o.promise()}}),b.support=function(){var t,n,r,a,s,u,l,c,p,f,d=o.createElement("div");if(d.setAttribute("className","t"),d.innerHTML="
    a",n=d.getElementsByTagName("*"),r=d.getElementsByTagName("a")[0],!n||!r||!n.length)return{};s=o.createElement("select"),l=s.appendChild(o.createElement("option")),a=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t={getSetAttribute:"t"!==d.className,leadingWhitespace:3===d.firstChild.nodeType,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/top/.test(r.getAttribute("style")),hrefNormalized:"/a"===r.getAttribute("href"),opacity:/^0.5/.test(r.style.opacity),cssFloat:!!r.style.cssFloat,checkOn:!!a.value,optSelected:l.selected,enctype:!!o.createElement("form").enctype,html5Clone:"<:nav>"!==o.createElement("nav").cloneNode(!0).outerHTML,boxModel:"CSS1Compat"===o.compatMode,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},a.checked=!0,t.noCloneChecked=a.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!l.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}a=o.createElement("input"),a.setAttribute("value",""),t.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),t.radioValue="t"===a.value,a.setAttribute("checked","t"),a.setAttribute("name","t"),u=o.createDocumentFragment(),u.appendChild(a),t.appendChecked=a.checked,t.checkClone=u.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;return d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip,b(function(){var n,r,a,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",u=o.getElementsByTagName("body")[0];u&&(n=o.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",u.appendChild(n).appendChild(d),d.innerHTML="
    t
    ",a=d.getElementsByTagName("td"),a[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===a[0].offsetHeight,a[0].style.display="",a[1].style.display="none",t.reliableHiddenOffsets=p&&0===a[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",t.boxSizing=4===d.offsetWidth,t.doesNotIncludeMarginInBodyOffset=1!==u.offsetTop,e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(o.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="
    ",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(u.style.zoom=1)),u.removeChild(n),n=d=a=r=null)}),n=s=u=l=r=a=null,t}();var O=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,B=/([A-Z])/g;function P(e,n,r,i){if(b.acceptData(e)){var o,a,s=b.expando,u="string"==typeof n,l=e.nodeType,p=l?b.cache:e,f=l?e[s]:e[s]&&s;if(f&&p[f]&&(i||p[f].data)||!u||r!==t)return f||(l?e[s]=f=c.pop()||b.guid++:f=s),p[f]||(p[f]={},l||(p[f].toJSON=b.noop)),("object"==typeof n||"function"==typeof n)&&(i?p[f]=b.extend(p[f],n):p[f].data=b.extend(p[f].data,n)),o=p[f],i||(o.data||(o.data={}),o=o.data),r!==t&&(o[b.camelCase(n)]=r),u?(a=o[n],null==a&&(a=o[b.camelCase(n)])):a=o,a}}function R(e,t,n){if(b.acceptData(e)){var r,i,o,a=e.nodeType,s=a?b.cache:e,u=a?e[b.expando]:b.expando;if(s[u]){if(t&&(o=n?s[u]:s[u].data)){b.isArray(t)?t=t.concat(b.map(t,b.camelCase)):t in o?t=[t]:(t=b.camelCase(t),t=t in o?[t]:t.split(" "));for(r=0,i=t.length;i>r;r++)delete o[t[r]];if(!(n?$:b.isEmptyObject)(o))return}(n||(delete s[u].data,$(s[u])))&&(a?b.cleanData([e],!0):b.support.deleteExpando||s!=s.window?delete s[u]:s[u]=null)}}}b.extend({cache:{},expando:"jQuery"+(p+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(e){return e=e.nodeType?b.cache[e[b.expando]]:e[b.expando],!!e&&!$(e)},data:function(e,t,n){return P(e,t,n)},removeData:function(e,t){return R(e,t)},_data:function(e,t,n){return P(e,t,n,!0)},_removeData:function(e,t){return R(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&b.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),b.fn.extend({data:function(e,n){var r,i,o=this[0],a=0,s=null;if(e===t){if(this.length&&(s=b.data(o),1===o.nodeType&&!b._data(o,"parsedAttrs"))){for(r=o.attributes;r.length>a;a++)i=r[a].name,i.indexOf("data-")||(i=b.camelCase(i.slice(5)),W(o,i,s[i]));b._data(o,"parsedAttrs",!0)}return s}return"object"==typeof e?this.each(function(){b.data(this,e)}):b.access(this,function(n){return n===t?o?W(o,e,b.data(o,e)):null:(this.each(function(){b.data(this,e,n)}),t)},null,n,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){b.removeData(this,e)})}});function W(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(B,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:O.test(r)?b.parseJSON(r):r}catch(o){}b.data(e,n,r)}else r=t}return r}function $(e){var t;for(t in e)if(("data"!==t||!b.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}b.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=b._data(e,n),r&&(!i||b.isArray(r)?i=b._data(e,n,b.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=b.queue(e,t),r=n.length,i=n.shift(),o=b._queueHooks(e,t),a=function(){b.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),o.cur=i,i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return b._data(e,n)||b._data(e,n,{empty:b.Callbacks("once memory").add(function(){b._removeData(e,t+"queue"),b._removeData(e,n)})})}}),b.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?b.queue(this[0],e):n===t?this:this.each(function(){var t=b.queue(this,e,n);b._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&b.dequeue(this,e)})},dequeue:function(e){return this.each(function(){b.dequeue(this,e)})},delay:function(e,t){return e=b.fx?b.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=b.Deferred(),a=this,s=this.length,u=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=b._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(u));return u(),o.promise(n)}});var I,z,X=/[\t\r\n]/g,U=/\r/g,V=/^(?:input|select|textarea|button|object)$/i,Y=/^(?:a|area)$/i,J=/^(?:checked|selected|autofocus|autoplay|async|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped)$/i,G=/^(?:checked|selected)$/i,Q=b.support.getSetAttribute,K=b.support.input;b.fn.extend({attr:function(e,t){return b.access(this,b.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){b.removeAttr(this,e)})},prop:function(e,t){return b.access(this,b.prop,e,t,arguments.length>1)},removeProp:function(e){return e=b.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,u="string"==typeof e&&e;if(b.isFunction(e))return this.each(function(t){b(this).addClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(X," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=b.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,u=0===arguments.length||"string"==typeof e&&e;if(b.isFunction(e))return this.each(function(t){b(this).removeClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(X," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?b.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e,r="boolean"==typeof t;return b.isFunction(e)?this.each(function(n){b(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var o,a=0,s=b(this),u=t,l=e.match(w)||[];while(o=l[a++])u=r?u:!s.hasClass(o),s[u?"addClass":"removeClass"](o)}else(n===i||"boolean"===n)&&(this.className&&b._data(this,"__className__",this.className),this.className=this.className||e===!1?"":b._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(X," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=b.isFunction(e),this.each(function(n){var o,a=b(this);1===this.nodeType&&(o=i?e.call(this,n,a.val()):e,null==o?o="":"number"==typeof o?o+="":b.isArray(o)&&(o=b.map(o,function(e){return null==e?"":e+""})),r=b.valHooks[this.type]||b.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=b.valHooks[o.type]||b.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(U,""):null==n?"":n)}}}),b.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,u=0>i?s:o?i:0;for(;s>u;u++)if(n=r[u],!(!n.selected&&u!==i||(b.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&b.nodeName(n.parentNode,"optgroup"))){if(t=b(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n=b.makeArray(t);return b(e).find("option").each(function(){this.selected=b.inArray(b(this).val(),n)>=0}),n.length||(e.selectedIndex=-1),n}}},attr:function(e,n,r){var o,a,s,u=e.nodeType;if(e&&3!==u&&8!==u&&2!==u)return typeof e.getAttribute===i?b.prop(e,n,r):(a=1!==u||!b.isXMLDoc(e),a&&(n=n.toLowerCase(),o=b.attrHooks[n]||(J.test(n)?z:I)),r===t?o&&a&&"get"in o&&null!==(s=o.get(e,n))?s:(typeof e.getAttribute!==i&&(s=e.getAttribute(n)),null==s?t:s):null!==r?o&&a&&"set"in o&&(s=o.set(e,r,n))!==t?s:(e.setAttribute(n,r+""),r):(b.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(w);if(o&&1===e.nodeType)while(n=o[i++])r=b.propFix[n]||n,J.test(n)?!Q&&G.test(n)?e[b.camelCase("default-"+n)]=e[r]=!1:e[r]=!1:b.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!b.support.radioValue&&"radio"===t&&b.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!b.isXMLDoc(e),a&&(n=b.propFix[n]||n,o=b.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var n=e.getAttributeNode("tabindex");return n&&n.specified?parseInt(n.value,10):V.test(e.nodeName)||Y.test(e.nodeName)&&e.href?0:t}}}}),z={get:function(e,n){var r=b.prop(e,n),i="boolean"==typeof r&&e.getAttribute(n),o="boolean"==typeof r?K&&Q?null!=i:G.test(n)?e[b.camelCase("default-"+n)]:!!i:e.getAttributeNode(n);return o&&o.value!==!1?n.toLowerCase():t},set:function(e,t,n){return t===!1?b.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&b.propFix[n]||n,n):e[b.camelCase("default-"+n)]=e[n]=!0,n}},K&&Q||(b.attrHooks.value={get:function(e,n){var r=e.getAttributeNode(n);return b.nodeName(e,"input")?e.defaultValue:r&&r.specified?r.value:t},set:function(e,n,r){return b.nodeName(e,"input")?(e.defaultValue=n,t):I&&I.set(e,n,r)}}),Q||(I=b.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&("id"===n||"name"===n||"coords"===n?""!==r.value:r.specified)?r.value:t},set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},b.attrHooks.contenteditable={get:I.get,set:function(e,t,n){I.set(e,""===t?!1:t,n)}},b.each(["width","height"],function(e,n){b.attrHooks[n]=b.extend(b.attrHooks[n],{set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}})})),b.support.hrefNormalized||(b.each(["href","src","width","height"],function(e,n){b.attrHooks[n]=b.extend(b.attrHooks[n],{get:function(e){var r=e.getAttribute(n,2);return null==r?t:r}})}),b.each(["href","src"],function(e,t){b.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}})),b.support.style||(b.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),b.support.optSelected||(b.propHooks.selected=b.extend(b.propHooks.selected,{get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}})),b.support.enctype||(b.propFix.enctype="encoding"),b.support.checkOn||b.each(["radio","checkbox"],function(){b.valHooks[this]={get:function(e){return null===e.getAttribute("value")?"on":e.value}}}),b.each(["radio","checkbox"],function(){b.valHooks[this]=b.extend(b.valHooks[this],{set:function(e,n){return b.isArray(n)?e.checked=b.inArray(b(e).val(),n)>=0:t}})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}b.event={global:{},add:function(e,n,r,o,a){var s,u,l,c,p,f,d,h,g,m,y,v=b._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=b.guid++),(u=v.events)||(u=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof b===i||e&&b.event.triggered===e.type?t:b.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(w)||[""],l=n.length;while(l--)s=rt.exec(n[l])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),p=b.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=b.event.special[g]||{},d=b.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&b.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=u[g])||(h=u[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),b.event.global[g]=!0;e=null}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,p,f,d,h,g,m=b.hasData(e)&&b._data(e);if(m&&(c=m.events)){t=(t||"").match(w)||[""],l=t.length;while(l--)if(s=rt.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=b.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),u=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));u&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||b.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)b.event.remove(e,d+t[l],n,r,!0);b.isEmptyObject(c)&&(delete m.handle,b._removeData(e,"events"))}},trigger:function(n,r,i,a){var s,u,l,c,p,f,d,h=[i||o],g=y.call(n,"type")?n.type:n,m=y.call(n,"namespace")?n.namespace.split("."):[];if(l=f=i=i||o,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+b.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),u=0>g.indexOf(":")&&"on"+g,n=n[b.expando]?n:new b.Event(g,"object"==typeof n&&n),n.isTrigger=!0,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:b.makeArray(r,[n]),p=b.event.special[g]||{},a||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!a&&!p.noBubble&&!b.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(l=l.parentNode);l;l=l.parentNode)h.push(l),f=l;f===(i.ownerDocument||o)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((l=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(b._data(l,"events")||{})[n.type]&&b._data(l,"handle"),s&&s.apply(l,r),s=u&&l[u],s&&b.acceptData(l)&&s.apply&&s.apply(l,r)===!1&&n.preventDefault();if(n.type=g,!(a||n.isDefaultPrevented()||p._default&&p._default.apply(i.ownerDocument,r)!==!1||"click"===g&&b.nodeName(i,"a")||!b.acceptData(i)||!u||!i[g]||b.isWindow(i))){f=i[u],f&&(i[u]=null),b.event.triggered=g;try{i[g]()}catch(v){}b.event.triggered=t,f&&(i[u]=f)}return n.result}},dispatch:function(e){e=b.event.fix(e);var n,r,i,o,a,s=[],u=h.call(arguments),l=(b._data(this,"events")||{})[e.type]||[],c=b.event.special[e.type]||{};if(u[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=b.event.handlers.call(this,e,l),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((b.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,u),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],u=n.delegateCount,l=e.target;if(u&&l.nodeType&&(!e.button||"click"!==e.type))for(;l!=this;l=l.parentNode||this)if(1===l.nodeType&&(l.disabled!==!0||"click"!==e.type)){for(o=[],a=0;u>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?b(r,this).index(l)>=0:b.find(r,this,null,[l]).length),o[r]&&o.push(i);o.length&&s.push({elem:l,handlers:o})}return n.length>u&&s.push({elem:this,handlers:n.slice(u)}),s},fix:function(e){if(e[b.expando])return e;var t,n,r,i=e.type,a=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new b.Event(a),t=r.length;while(t--)n=r[t],e[n]=a[n];return e.target||(e.target=a.srcElement||o),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,a):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,a,s=n.button,u=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||o,a=i.documentElement,r=i.body,e.pageX=n.clientX+(a&&a.scrollLeft||r&&r.scrollLeft||0)-(a&&a.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(a&&a.scrollTop||r&&r.scrollTop||0)-(a&&a.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&u&&(e.relatedTarget=u===e.target?n.toElement:u),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},click:{trigger:function(){return b.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t}},focus:{trigger:function(){if(this!==o.activeElement&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===o.activeElement&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=b.extend(new b.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?b.event.trigger(i,null,t):b.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},b.removeEvent=o.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},b.Event=function(e,n){return this instanceof b.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&b.extend(this,n),this.timeStamp=e&&e.timeStamp||b.now(),this[b.expando]=!0,t):new b.Event(e,n)},b.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},b.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){b.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj; +return(!i||i!==r&&!b.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),b.support.submitBubbles||(b.event.special.submit={setup:function(){return b.nodeName(this,"form")?!1:(b.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=b.nodeName(n,"input")||b.nodeName(n,"button")?n.form:t;r&&!b._data(r,"submitBubbles")&&(b.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),b._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&b.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return b.nodeName(this,"form")?!1:(b.event.remove(this,"._submit"),t)}}),b.support.changeBubbles||(b.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(b.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),b.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),b.event.simulate("change",this,e,!0)})),!1):(b.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!b._data(t,"changeBubbles")&&(b.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||b.event.simulate("change",this.parentNode,e,!0)}),b._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return b.event.remove(this,"._change"),!Z.test(this.nodeName)}}),b.support.focusinBubbles||b.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){b.event.simulate(t,e.target,b.event.fix(e),!0)};b.event.special[t]={setup:function(){0===n++&&o.addEventListener(e,r,!0)},teardown:function(){0===--n&&o.removeEventListener(e,r,!0)}}}),b.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return b().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=b.guid++)),this.each(function(){b.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,b(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){b.event.remove(this,e,r,n)})},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},trigger:function(e,t){return this.each(function(){b.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?b.event.trigger(e,n,r,!0):t}}),function(e,t){var n,r,i,o,a,s,u,l,c,p,f,d,h,g,m,y,v,x="sizzle"+-new Date,w=e.document,T={},N=0,C=0,k=it(),E=it(),S=it(),A=typeof t,j=1<<31,D=[],L=D.pop,H=D.push,q=D.slice,M=D.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},_="[\\x20\\t\\r\\n\\f]",F="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=F.replace("w","w#"),B="([*^$|!~]?=)",P="\\["+_+"*("+F+")"+_+"*(?:"+B+_+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+O+")|)|)"+_+"*\\]",R=":("+F+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+P.replace(3,8)+")*)|.*)\\)|)",W=RegExp("^"+_+"+|((?:^|[^\\\\])(?:\\\\.)*)"+_+"+$","g"),$=RegExp("^"+_+"*,"+_+"*"),I=RegExp("^"+_+"*([\\x20\\t\\r\\n\\f>+~])"+_+"*"),z=RegExp(R),X=RegExp("^"+O+"$"),U={ID:RegExp("^#("+F+")"),CLASS:RegExp("^\\.("+F+")"),NAME:RegExp("^\\[name=['\"]?("+F+")['\"]?\\]"),TAG:RegExp("^("+F.replace("w","w*")+")"),ATTR:RegExp("^"+P),PSEUDO:RegExp("^"+R),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+_+"*(even|odd|(([+-]|)(\\d*)n|)"+_+"*(?:([+-]|)"+_+"*(\\d+)|))"+_+"*\\)|)","i"),needsContext:RegExp("^"+_+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+_+"*((?:-\\d)?\\d*)"+_+"*\\)|)(?=[^-]|$)","i")},V=/[\x20\t\r\n\f]*[+~]/,Y=/^[^{]+\{\s*\[native code/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,G=/^(?:input|select|textarea|button)$/i,Q=/^h\d$/i,K=/'|\\/g,Z=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,et=/\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g,tt=function(e,t){var n="0x"+t-65536;return n!==n?t:0>n?String.fromCharCode(n+65536):String.fromCharCode(55296|n>>10,56320|1023&n)};try{q.call(w.documentElement.childNodes,0)[0].nodeType}catch(nt){q=function(e){var t,n=[];while(t=this[e++])n.push(t);return n}}function rt(e){return Y.test(e+"")}function it(){var e,t=[];return e=function(n,r){return t.push(n+=" ")>i.cacheLength&&delete e[t.shift()],e[n]=r}}function ot(e){return e[x]=!0,e}function at(e){var t=p.createElement("div");try{return e(t)}catch(n){return!1}finally{t=null}}function st(e,t,n,r){var i,o,a,s,u,l,f,g,m,v;if((t?t.ownerDocument||t:w)!==p&&c(t),t=t||p,n=n||[],!e||"string"!=typeof e)return n;if(1!==(s=t.nodeType)&&9!==s)return[];if(!d&&!r){if(i=J.exec(e))if(a=i[1]){if(9===s){if(o=t.getElementById(a),!o||!o.parentNode)return n;if(o.id===a)return n.push(o),n}else if(t.ownerDocument&&(o=t.ownerDocument.getElementById(a))&&y(t,o)&&o.id===a)return n.push(o),n}else{if(i[2])return H.apply(n,q.call(t.getElementsByTagName(e),0)),n;if((a=i[3])&&T.getByClassName&&t.getElementsByClassName)return H.apply(n,q.call(t.getElementsByClassName(a),0)),n}if(T.qsa&&!h.test(e)){if(f=!0,g=x,m=t,v=9===s&&e,1===s&&"object"!==t.nodeName.toLowerCase()){l=ft(e),(f=t.getAttribute("id"))?g=f.replace(K,"\\$&"):t.setAttribute("id",g),g="[id='"+g+"'] ",u=l.length;while(u--)l[u]=g+dt(l[u]);m=V.test(e)&&t.parentNode||t,v=l.join(",")}if(v)try{return H.apply(n,q.call(m.querySelectorAll(v),0)),n}catch(b){}finally{f||t.removeAttribute("id")}}}return wt(e.replace(W,"$1"),t,n,r)}a=st.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},c=st.setDocument=function(e){var n=e?e.ownerDocument||e:w;return n!==p&&9===n.nodeType&&n.documentElement?(p=n,f=n.documentElement,d=a(n),T.tagNameNoComments=at(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),T.attributes=at(function(e){e.innerHTML="";var t=typeof e.lastChild.getAttribute("multiple");return"boolean"!==t&&"string"!==t}),T.getByClassName=at(function(e){return e.innerHTML="",e.getElementsByClassName&&e.getElementsByClassName("e").length?(e.lastChild.className="e",2===e.getElementsByClassName("e").length):!1}),T.getByName=at(function(e){e.id=x+0,e.innerHTML="
    ",f.insertBefore(e,f.firstChild);var t=n.getElementsByName&&n.getElementsByName(x).length===2+n.getElementsByName(x+0).length;return T.getIdNotName=!n.getElementById(x),f.removeChild(e),t}),i.attrHandle=at(function(e){return e.innerHTML="",e.firstChild&&typeof e.firstChild.getAttribute!==A&&"#"===e.firstChild.getAttribute("href")})?{}:{href:function(e){return e.getAttribute("href",2)},type:function(e){return e.getAttribute("type")}},T.getIdNotName?(i.find.ID=function(e,t){if(typeof t.getElementById!==A&&!d){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},i.filter.ID=function(e){var t=e.replace(et,tt);return function(e){return e.getAttribute("id")===t}}):(i.find.ID=function(e,n){if(typeof n.getElementById!==A&&!d){var r=n.getElementById(e);return r?r.id===e||typeof r.getAttributeNode!==A&&r.getAttributeNode("id").value===e?[r]:t:[]}},i.filter.ID=function(e){var t=e.replace(et,tt);return function(e){var n=typeof e.getAttributeNode!==A&&e.getAttributeNode("id");return n&&n.value===t}}),i.find.TAG=T.tagNameNoComments?function(e,n){return typeof n.getElementsByTagName!==A?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},i.find.NAME=T.getByName&&function(e,n){return typeof n.getElementsByName!==A?n.getElementsByName(name):t},i.find.CLASS=T.getByClassName&&function(e,n){return typeof n.getElementsByClassName===A||d?t:n.getElementsByClassName(e)},g=[],h=[":focus"],(T.qsa=rt(n.querySelectorAll))&&(at(function(e){e.innerHTML="",e.querySelectorAll("[selected]").length||h.push("\\["+_+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),e.querySelectorAll(":checked").length||h.push(":checked")}),at(function(e){e.innerHTML="",e.querySelectorAll("[i^='']").length&&h.push("[*^$]="+_+"*(?:\"\"|'')"),e.querySelectorAll(":enabled").length||h.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),h.push(",.*:")})),(T.matchesSelector=rt(m=f.matchesSelector||f.mozMatchesSelector||f.webkitMatchesSelector||f.oMatchesSelector||f.msMatchesSelector))&&at(function(e){T.disconnectedMatch=m.call(e,"div"),m.call(e,"[s!='']:x"),g.push("!=",R)}),h=RegExp(h.join("|")),g=RegExp(g.join("|")),y=rt(f.contains)||f.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},v=f.compareDocumentPosition?function(e,t){var r;return e===t?(u=!0,0):(r=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t))?1&r||e.parentNode&&11===e.parentNode.nodeType?e===n||y(w,e)?-1:t===n||y(w,t)?1:0:4&r?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return u=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:0;if(o===a)return ut(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?ut(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},u=!1,[0,0].sort(v),T.detectDuplicates=u,p):p},st.matches=function(e,t){return st(e,null,null,t)},st.matchesSelector=function(e,t){if((e.ownerDocument||e)!==p&&c(e),t=t.replace(Z,"='$1']"),!(!T.matchesSelector||d||g&&g.test(t)||h.test(t)))try{var n=m.call(e,t);if(n||T.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(r){}return st(t,p,null,[e]).length>0},st.contains=function(e,t){return(e.ownerDocument||e)!==p&&c(e),y(e,t)},st.attr=function(e,t){var n;return(e.ownerDocument||e)!==p&&c(e),d||(t=t.toLowerCase()),(n=i.attrHandle[t])?n(e):d||T.attributes?e.getAttribute(t):((n=e.getAttributeNode(t))||e.getAttribute(t))&&e[t]===!0?t:n&&n.specified?n.value:null},st.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},st.uniqueSort=function(e){var t,n=[],r=1,i=0;if(u=!T.detectDuplicates,e.sort(v),u){for(;t=e[r];r++)t===e[r-1]&&(i=n.push(r));while(i--)e.splice(n[i],1)}return e};function ut(e,t){var n=t&&e,r=n&&(~t.sourceIndex||j)-(~e.sourceIndex||j);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function lt(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function ct(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function pt(e){return ot(function(t){return t=+t,ot(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}o=st.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=o(t);return n},i=st.selectors={cacheLength:50,createPseudo:ot,match:U,find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(et,tt),e[3]=(e[4]||e[5]||"").replace(et,tt),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||st.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&st.error(e[0]),e},PSEUDO:function(e){var t,n=!e[5]&&e[2];return U.CHILD.test(e[0])?null:(e[4]?e[2]=e[4]:n&&z.test(n)&&(t=ft(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){return"*"===e?function(){return!0}:(e=e.replace(et,tt).toLowerCase(),function(t){return t.nodeName&&t.nodeName.toLowerCase()===e})},CLASS:function(e){var t=k[e+" "];return t||(t=RegExp("(^|"+_+")"+e+"("+_+"|$)"))&&k(e,function(e){return t.test(e.className||typeof e.getAttribute!==A&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=st.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!u&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[x]||(m[x]={}),l=c[e]||[],d=l[0]===N&&l[1],f=l[0]===N&&l[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[N,d,f];break}}else if(v&&(l=(t[x]||(t[x]={}))[e])&&l[0]===N)f=l[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[x]||(p[x]={}))[e]=[N,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||st.error("unsupported pseudo: "+e);return r[x]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?ot(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=M.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:ot(function(e){var t=[],n=[],r=s(e.replace(W,"$1"));return r[x]?ot(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:ot(function(e){return function(t){return st(e,t).length>0}}),contains:ot(function(e){return function(t){return(t.textContent||t.innerText||o(t)).indexOf(e)>-1}}),lang:ot(function(e){return X.test(e||"")||st.error("unsupported lang: "+e),e=e.replace(et,tt).toLowerCase(),function(t){var n;do if(n=d?t.getAttribute("xml:lang")||t.getAttribute("lang"):t.lang)return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===f},focus:function(e){return e===p.activeElement&&(!p.hasFocus||p.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!i.pseudos.empty(e)},header:function(e){return Q.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:pt(function(){return[0]}),last:pt(function(e,t){return[t-1]}),eq:pt(function(e,t,n){return[0>n?n+t:n]}),even:pt(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:pt(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:pt(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:pt(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}};for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})i.pseudos[n]=lt(n);for(n in{submit:!0,reset:!0})i.pseudos[n]=ct(n);function ft(e,t){var n,r,o,a,s,u,l,c=E[e+" "];if(c)return t?0:c.slice(0);s=e,u=[],l=i.preFilter;while(s){(!n||(r=$.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),u.push(o=[])),n=!1,(r=I.exec(s))&&(n=r.shift(),o.push({value:n,type:r[0].replace(W," ")}),s=s.slice(n.length));for(a in i.filter)!(r=U[a].exec(s))||l[a]&&!(r=l[a](r))||(n=r.shift(),o.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?st.error(e):E(e,u).slice(0)}function dt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function ht(e,t,n){var i=t.dir,o=n&&"parentNode"===i,a=C++;return t.first?function(t,n,r){while(t=t[i])if(1===t.nodeType||o)return e(t,n,r)}:function(t,n,s){var u,l,c,p=N+" "+a;if(s){while(t=t[i])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[i])if(1===t.nodeType||o)if(c=t[x]||(t[x]={}),(l=c[i])&&l[0]===p){if((u=l[1])===!0||u===r)return u===!0}else if(l=c[i]=[p],l[1]=e(t,n,s)||r,l[1]===!0)return!0}}function gt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function mt(e,t,n,r,i){var o,a=[],s=0,u=e.length,l=null!=t;for(;u>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),l&&t.push(s));return a}function yt(e,t,n,r,i,o){return r&&!r[x]&&(r=yt(r)),i&&!i[x]&&(i=yt(i,o)),ot(function(o,a,s,u){var l,c,p,f=[],d=[],h=a.length,g=o||xt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:mt(g,f,e,s,u),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,u),r){l=mt(y,d),r(l,[],s,u),c=l.length;while(c--)(p=l[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){l=[],c=y.length;while(c--)(p=y[c])&&l.push(m[c]=p);i(null,y=[],l,u)}c=y.length;while(c--)(p=y[c])&&(l=i?M.call(o,p):f[c])>-1&&(o[l]=!(a[l]=p))}}else y=mt(y===a?y.splice(h,y.length):y),i?i(null,a,y,u):H.apply(a,y)})}function vt(e){var t,n,r,o=e.length,a=i.relative[e[0].type],s=a||i.relative[" "],u=a?1:0,c=ht(function(e){return e===t},s,!0),p=ht(function(e){return M.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;o>u;u++)if(n=i.relative[e[u].type])f=[ht(gt(f),n)];else{if(n=i.filter[e[u].type].apply(null,e[u].matches),n[x]){for(r=++u;o>r;r++)if(i.relative[e[r].type])break;return yt(u>1&>(f),u>1&&dt(e.slice(0,u-1)).replace(W,"$1"),n,r>u&&vt(e.slice(u,r)),o>r&&vt(e=e.slice(r)),o>r&&dt(e))}f.push(n)}return gt(f)}function bt(e,t){var n=0,o=t.length>0,a=e.length>0,s=function(s,u,c,f,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,T=l,C=s||a&&i.find.TAG("*",d&&u.parentNode||u),k=N+=null==T?1:Math.random()||.1;for(w&&(l=u!==p&&u,r=n);null!=(h=C[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,u,c)){f.push(h);break}w&&(N=k,r=++n)}o&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,o&&b!==v){g=0;while(m=t[g++])m(x,y,u,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=L.call(f));y=mt(y)}H.apply(f,y),w&&!s&&y.length>0&&v+t.length>1&&st.uniqueSort(f)}return w&&(N=k,l=T),x};return o?ot(s):s}s=st.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=ft(e)),n=t.length;while(n--)o=vt(t[n]),o[x]?r.push(o):i.push(o);o=S(e,bt(i,r))}return o};function xt(e,t,n){var r=0,i=t.length;for(;i>r;r++)st(e,t[r],n);return n}function wt(e,t,n,r){var o,a,u,l,c,p=ft(e);if(!r&&1===p.length){if(a=p[0]=p[0].slice(0),a.length>2&&"ID"===(u=a[0]).type&&9===t.nodeType&&!d&&i.relative[a[1].type]){if(t=i.find.ID(u.matches[0].replace(et,tt),t)[0],!t)return n;e=e.slice(a.shift().value.length)}o=U.needsContext.test(e)?0:a.length;while(o--){if(u=a[o],i.relative[l=u.type])break;if((c=i.find[l])&&(r=c(u.matches[0].replace(et,tt),V.test(a[0].type)&&t.parentNode||t))){if(a.splice(o,1),e=r.length&&dt(a),!e)return H.apply(n,q.call(r,0)),n;break}}}return s(e,p)(r,t,d,n,V.test(e)),n}i.pseudos.nth=i.pseudos.eq;function Tt(){}i.filters=Tt.prototype=i.pseudos,i.setFilters=new Tt,c(),st.attr=b.attr,b.find=st,b.expr=st.selectors,b.expr[":"]=b.expr.pseudos,b.unique=st.uniqueSort,b.text=st.getText,b.isXMLDoc=st.isXML,b.contains=st.contains}(e);var at=/Until$/,st=/^(?:parents|prev(?:Until|All))/,ut=/^.[^:#\[\.,]*$/,lt=b.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};b.fn.extend({find:function(e){var t,n,r,i=this.length;if("string"!=typeof e)return r=this,this.pushStack(b(e).filter(function(){for(t=0;i>t;t++)if(b.contains(r[t],this))return!0}));for(n=[],t=0;i>t;t++)b.find(e,this[t],n);return n=this.pushStack(i>1?b.unique(n):n),n.selector=(this.selector?this.selector+" ":"")+e,n},has:function(e){var t,n=b(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(b.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e,!1))},filter:function(e){return this.pushStack(ft(this,e,!0))},is:function(e){return!!e&&("string"==typeof e?lt.test(e)?b(e,this.context).index(this[0])>=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(e,t){var n,r=0,i=this.length,o=[],a=lt.test(e)||"string"!=typeof e?b(e,t||this.context):0;for(;i>r;r++){n=this[r];while(n&&n.ownerDocument&&n!==t&&11!==n.nodeType){if(a?a.index(n)>-1:b.find.matchesSelector(n,e)){o.push(n);break}n=n.parentNode}}return this.pushStack(o.length>1?b.unique(o):o)},index:function(e){return e?"string"==typeof e?b.inArray(this[0],b(e)):b.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?b(e,t):b.makeArray(e&&e.nodeType?[e]:e),r=b.merge(this.get(),n);return this.pushStack(b.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),b.fn.andSelf=b.fn.addBack;function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}b.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(e,t,n){return b.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(e,t,n){return b.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return b.dir(e,"previousSibling",n)},siblings:function(e){return b.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.merge([],e.childNodes)}},function(e,t){b.fn[e]=function(n,r){var i=b.map(this,t,n);return at.test(e)||(r=n),r&&"string"==typeof r&&(i=b.filter(r,i)),i=this.length>1&&!ct[e]?b.unique(i):i,this.length>1&&st.test(e)&&(i=i.reverse()),this.pushStack(i)}}),b.extend({filter:function(e,t,n){return n&&(e=":not("+e+")"),1===t.length?b.find.matchesSelector(t[0],e)?[t[0]]:[]:b.find.matches(e,t)},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!b(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(t=t||0,b.isFunction(t))return b.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return b.grep(e,function(e){return e===t===n});if("string"==typeof t){var r=b.grep(e,function(e){return 1===e.nodeType});if(ut.test(t))return b.filter(t,r,!n);t=b.filter(t,r)}return b.grep(e,function(e){return b.inArray(e,t)>=0===n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/\s*$/g,At={option:[1,""],legend:[1,"
    ","
    "],area:[1,"",""],param:[1,"",""],thead:[1,"","
    "],tr:[2,"","
    "],col:[2,"","
    "],td:[3,"","
    "],_default:b.support.htmlSerialize?[0,"",""]:[1,"X
    ","
    "]},jt=dt(o),Dt=jt.appendChild(o.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,b.fn.extend({text:function(e){return b.access(this,function(e){return e===t?b.text(this):this.empty().append((this[0]&&this[0].ownerDocument||o).createTextNode(e))},null,e,arguments.length)},wrapAll:function(e){if(b.isFunction(e))return this.each(function(t){b(this).wrapAll(e.call(this,t))});if(this[0]){var t=b(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return b.isFunction(e)?this.each(function(t){b(this).wrapInner(e.call(this,t))}):this.each(function(){var t=b(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=b.isFunction(e);return this.each(function(n){b(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){b.nodeName(this,"body")||b(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.appendChild(e)})},prepend:function(){return this.domManip(arguments,!0,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.insertBefore(e,this.firstChild)})},before:function(){return this.domManip(arguments,!1,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,!1,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=0;for(;null!=(n=this[r]);r++)(!e||b.filter(e,[n]).length>0)&&(t||1!==n.nodeType||b.cleanData(Ot(n)),n.parentNode&&(t&&b.contains(n.ownerDocument,n)&&Mt(Ot(n,"script")),n.parentNode.removeChild(n)));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&b.cleanData(Ot(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&b.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return b.clone(this,e,t)})},html:function(e){return b.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!b.support.htmlSerialize&&mt.test(e)||!b.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(b.cleanData(Ot(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(e){var t=b.isFunction(e);return t||"string"==typeof e||(e=b(e).not(this).detach()),this.domManip([e],!0,function(e){var t=this.nextSibling,n=this.parentNode;n&&(b(this).remove(),n.insertBefore(e,t))})},detach:function(e){return this.remove(e,!0)},domManip:function(e,n,r){e=f.apply([],e);var i,o,a,s,u,l,c=0,p=this.length,d=this,h=p-1,g=e[0],m=b.isFunction(g);if(m||!(1>=p||"string"!=typeof g||b.support.checkClone)&&Ct.test(g))return this.each(function(i){var o=d.eq(i);m&&(e[0]=g.call(this,i,n?o.html():t)),o.domManip(e,n,r)});if(p&&(l=b.buildFragment(e,this[0].ownerDocument,!1,this),i=l.firstChild,1===l.childNodes.length&&(l=i),i)){for(n=n&&b.nodeName(i,"tr"),s=b.map(Ot(l,"script"),Ht),a=s.length;p>c;c++)o=l,c!==h&&(o=b.clone(o,!0,!0),a&&b.merge(s,Ot(o,"script"))),r.call(n&&b.nodeName(this[c],"table")?Lt(this[c],"tbody"):this[c],o,c);if(a)for(u=s[s.length-1].ownerDocument,b.map(s,qt),c=0;a>c;c++)o=s[c],kt.test(o.type||"")&&!b._data(o,"globalEval")&&b.contains(u,o)&&(o.src?b.ajax({url:o.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):b.globalEval((o.text||o.textContent||o.innerHTML||"").replace(St,"")));l=i=null}return this}});function Lt(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function Ht(e){var t=e.getAttributeNode("type");return e.type=(t&&t.specified)+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function Mt(e,t){var n,r=0;for(;null!=(n=e[r]);r++)b._data(n,"globalEval",!t||b._data(t[r],"globalEval"))}function _t(e,t){if(1===t.nodeType&&b.hasData(e)){var n,r,i,o=b._data(e),a=b._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)b.event.add(t,n,s[n][r])}a.data&&(a.data=b.extend({},a.data))}}function Ft(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!b.support.noCloneEvent&&t[b.expando]){i=b._data(t);for(r in i.events)b.removeEvent(t,r,i.handle);t.removeAttribute(b.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),b.support.html5Clone&&e.innerHTML&&!b.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Nt.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}b.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){b.fn[e]=function(e){var n,r=0,i=[],o=b(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),b(o[r])[t](n),d.apply(i,n.get());return this.pushStack(i)}});function Ot(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||b.nodeName(o,n)?s.push(o):b.merge(s,Ot(o,n));return n===t||n&&b.nodeName(e,n)?b.merge([e],s):s}function Bt(e){Nt.test(e.type)&&(e.defaultChecked=e.checked)}b.extend({clone:function(e,t,n){var r,i,o,a,s,u=b.contains(e.ownerDocument,e);if(b.support.html5Clone||b.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(b.support.noCloneEvent&&b.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||b.isXMLDoc(e)))for(r=Ot(o),s=Ot(e),a=0;null!=(i=s[a]);++a)r[a]&&Ft(i,r[a]);if(t)if(n)for(s=s||Ot(e),r=r||Ot(o),a=0;null!=(i=s[a]);a++)_t(i,r[a]);else _t(e,o);return r=Ot(o,"script"),r.length>0&&Mt(r,!u&&Ot(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,u,l,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===b.type(o))b.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),u=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[u]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!b.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!b.support.tbody){o="table"!==u||xt.test(o)?""!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)b.nodeName(l=o.childNodes[i],"tbody")&&!l.childNodes.length&&o.removeChild(l) +}b.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),b.support.appendChecked||b.grep(Ot(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===b.inArray(o,r))&&(a=b.contains(o.ownerDocument,o),s=Ot(f.appendChild(o),"script"),a&&Mt(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,u=b.expando,l=b.cache,p=b.support.deleteExpando,f=b.event.special;for(;null!=(n=e[s]);s++)if((t||b.acceptData(n))&&(o=n[u],a=o&&l[o])){if(a.events)for(r in a.events)f[r]?b.event.remove(n,r):b.removeEvent(n,r,a.handle);l[o]&&(delete l[o],p?delete n[u]:typeof n.removeAttribute!==i?n.removeAttribute(u):n[u]=null,c.push(o))}}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+x+")(.*)$","i"),Yt=RegExp("^("+x+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+x+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===b.css(e,"display")||!b.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=b._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=b._data(r,"olddisplay",un(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&b._data(r,"olddisplay",i?n:b.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}b.fn.extend({css:function(e,n){return b.access(this,function(e,n,r){var i,o,a={},s=0;if(b.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=b.css(e,n[s],!1,o);return a}return r!==t?b.style(e,n,r):b.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){var t="boolean"==typeof e;return this.each(function(){(t?e:nn(this))?b(this).show():b(this).hide()})}}),b.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":b.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,u=b.camelCase(n),l=e.style;if(n=b.cssProps[u]||(b.cssProps[u]=tn(l,u)),s=b.cssHooks[n]||b.cssHooks[u],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:l[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(b.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||b.cssNumber[u]||(r+="px"),b.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(l[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{l[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,u=b.camelCase(n);return n=b.cssProps[u]||(b.cssProps[u]=tn(e.style,u)),s=b.cssHooks[n]||b.cssHooks[u],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||b.isNumeric(o)?o||0:a):a},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),u=s?s.getPropertyValue(n)||s[n]:t,l=e.style;return s&&(""!==u||b.contains(e.ownerDocument,e)||(u=b.style(e,n)),Yt.test(u)&&Ut.test(n)&&(i=l.width,o=l.minWidth,a=l.maxWidth,l.minWidth=l.maxWidth=l.width=u,u=s.width,l.width=i,l.minWidth=o,l.maxWidth=a)),u}):o.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),u=s?s[n]:t,l=e.style;return null==u&&l&&l[n]&&(u=l[n]),Yt.test(u)&&!zt.test(n)&&(i=l.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),l.left="fontSize"===n?"1em":u,u=l.pixelLeft+"px",l.left=i,a&&(o.left=a)),""===u?"auto":u});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=b.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=b.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=b.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=b.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=b.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=b.support.boxSizing&&"border-box"===b.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(b.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function un(e){var t=o,n=Gt[e];return n||(n=ln(e,t),"none"!==n&&n||(Pt=(Pt||b("